Battle Update Prepare
This commit is contained in:
Degradin 2025-01-21 17:20:26 +03:00
parent b13335f510
commit edc03ffd8d
2 changed files with 9 additions and 33 deletions

View File

@ -79,6 +79,10 @@ const Character = sequelize.define('character', {
}, },
activeEffects: { type: DataTypes.JSON, allowNull: true, defaultValue: [] }, activeEffects: { type: DataTypes.JSON, allowNull: true, defaultValue: [] },
equippedItems: { type: DataTypes.ARRAY(DataTypes.INTEGER), allowNull: true, defaultValue: [] }, equippedItems: { type: DataTypes.ARRAY(DataTypes.INTEGER), allowNull: true, defaultValue: [] },
enemiesKilled: {
type: DataTypes.INTEGER,
defaultValue: 0
},
}); });
module.exports = Character; module.exports = Character;

38
rpg.js
View File

@ -1298,6 +1298,7 @@ rpg.command('giveitem', async (ctx) => {
ctx.reply(`Вы успешно купили ${item.name} за ${item.price}₽!`); ctx.reply(`Вы успешно купили ${item.name} за ${item.price}₽!`);
} }
); );
//////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////
CharacterModel.prototype.addEquippedItem = async function (item) { CharacterModel.prototype.addEquippedItem = async function (item) {
@ -2175,6 +2176,8 @@ rpg.action(/hit_\d+/, async (ctx) => {
await battle.save(); await battle.save();
logs(ctx, "Победа персонажа", { enemy, battle }); logs(ctx, "Победа персонажа", { enemy, battle });
Exp(ctx, character, enemy.level * 10) Exp(ctx, character, enemy.level * 10)
character.enemiesKilled += 1;
await character.save();
let droppedItems = await dropItem(character, enemy.id); let droppedItems = await dropItem(character, enemy.id);
logs(ctx, "Предметы с врага", { droppedItems }); logs(ctx, "Предметы с врага", { droppedItems });
if (droppedItems) { if (droppedItems) {
@ -2433,6 +2436,8 @@ rpg.action(/critical_\d+/, async (ctx) => {
battle.status = "completed"; battle.status = "completed";
await battle.save(); await battle.save();
Exp(ctx, character, enemy.level * 11) Exp(ctx, character, enemy.level * 11)
character.enemiesKilled += 1;
await character.save();
let droppedItems = await dropItem(character, enemy.id); let droppedItems = await dropItem(character, enemy.id);
logs(ctx, "Предметы с врага", { droppedItems }); logs(ctx, "Предметы с врага", { droppedItems });
if (droppedItems) { if (droppedItems) {
@ -2525,37 +2530,4 @@ rpg.action(/miss_\d+/, async (ctx) => {
}); });
rpg.command("start_battle", async (ctx) => {
const character = await CharacterModel.findOne({ where: { telegram_id: ctx.from.id } });
if (!character) {
return ctx.reply("Ваш персонаж не найден. Создайте его, чтобы начать играть!");
}
// Поиск или создание новой битвы
const enemy = await Enemy.findByPk(1); // Случайный враг
const battle = await Battle.create({
character: character.telegram_id,
enemy: enemy.id,
enemy_hp: enemy.hp,
logs: [],
status: "active",
});
// Генерация ссылки на Miniapp
const miniappUrl = `https://web-bot.campfiregg.ru/battle?battleId=${battle.id}&playerId=${character.telegram_id}`;
await ctx.reply(
`⚔️ Битва началась!\nВаш противник: ${enemy.name}\n🛡️ Уровень: ${enemy.level}\n❤️ Здоровье: ${enemy.hp}\n\nПерейдите в мини-приложение, чтобы продолжить:`,
{
reply_markup: {
inline_keyboard: [
[{ text: "Открыть битву", web_app: { url: miniappUrl } }],
],
},
}
);
});
module.exports = rpg; module.exports = rpg;