PVE Контент #1
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Реализовать механики сражения с ботами
нужно придумать механику пве сражений и исследования локаций, список изначальных врагов (EnemyList), уже существующие враги для пользователей (Battles) и локации (Locations) будут находиться в бд, у каждой локации и врага есть свой массив предметов, которые могут там найтись. Каждый час в локации генерируется рандомное количество врагов в диапазоне уровней локации и в зависимости от редкости врага (например обычные враги: 3 бандита, 2 вора, 1 собака. Реже: 1 амбал бандит). Пользователь нажимает кнопку и открывается меню локаций, при нажатии на локацию, открывается ее описание и кнопки выбора действий, исследовать и охота, при исследовании персонаж может найти предметы с определенным шансом (в зависимости от редкости), так же может попасться враг, после сражения с которым так же могут выпасть предметы. При выборе охоты, появляется список противников которые сейчас есть в этой локации, пользователь выбирает врага и запускается сражение, соответственно, так как механика сражения может использоваться в разных других механиках и командах, это должна быть отдельная функция, так например после сражения в миссии с ограблением магазина, должна продолжиться миссия ограбления, после сражения в исследовании, должно продолжиться исследование, если пользователь не проиграл. Итак, пользователь выбрал врага в охоте, началось сражение, если ктото другой нажмет на этого врага, ему напишет, что, ктото уже сражается, если игрок победит, враг пропадет, если проиграет, враг останется с теми же хп
const { DataTypes } = require('sequelize');
const sequelize = require('../db');
const Enemy = sequelize.define('enemy', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
description: {
type: DataTypes.TEXT,
allowNull: false,
},
level: {
type: DataTypes.INTEGER,
allowNull: false,
},
hp: {
type: DataTypes.INTEGER,
allowNull: true
},
damage: {
type: DataTypes.INTEGER,
allowNull: false,
},
loot: {
type: DataTypes.ARRAY(DataTypes.INTEGER),
allowNull: true, defaultValue: []
},
rarity: {
type: DataTypes.INTEGER,
allowNull: false,
},
});
module.exports = Enemy;
const { DataTypes } = require('sequelize');
const sequelize = require('../db');
const Location = sequelize.define('location', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
description: {
type: DataTypes.TEXT,
allowNull: false,
},
enemies: {
type: DataTypes.ARRAY(DataTypes.INTEGER),
allowNull: true,
defaultValue: []
},
level: {
type: DataTypes.INTEGER,
allowNull: false,
},
loot: {
type: DataTypes.ARRAY(DataTypes.INTEGER),
allowNull: true,
defaultValue: []
},
rarity: {
type: DataTypes.INTEGER,
allowNull: false,
},
});
module.exports = Location;
const { DataTypes } = require('sequelize');
const sequelize = require('../db');
const Battle = sequelize.define('battle', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
enemy: {
type: DataTypes.INTEGER,
allowNull: false,
},
location: {
type: DataTypes.INTEGER,
allowNull: false,
},
character: {
type: DataTypes.BIGINT,
allowNull: false,
},
enemy_hp: {
type: DataTypes.INTEGER,
allowNull: false,
},
status: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: "inactive"
},
});
module.exports = Location;