Skip to content

Commit 96b1c56

Browse files
committed
chore: balancing defense
1 parent fc33998 commit 96b1c56

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/commands/battle.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ async function simulateBattleStep(
282282
attacker.speed += 1;
283283
defender.speed = Math.max(1, defender.speed - 1);
284284
damage = Math.floor(attacker.attack * 1.3);
285-
narration = `👻 **${attacker.name}** strikes directly at **${defender.name}**'s soul, stealing their energy! (+1 SPD, -1 SPD to enemy)`;
285+
narration = `👻 **${attacker.name}** strikes directly at **${defender.name}**'s soul, stealing their energy while breaking through defenses! (+1 SPD, -1 SPD to enemy)`;
286286
break;
287287
case "Phoenix Rising":
288288
if (attacker.hp < attacker.maxHp * 0.3) {
@@ -296,7 +296,7 @@ async function simulateBattleStep(
296296
break;
297297
case "Relic of Exo":
298298
damage = Math.floor(attacker.attack * 1.4);
299-
narration = `🏺 **${attacker.name}** unleashes the power of the Relic of Exo, bypassing all defenses!`;
299+
narration = `🏺 **${attacker.name}** unleashes the power of the Relic of Exo, partially bypassing defenses!`;
300300
break;
301301
case "Ego's Blessing":
302302
attacker.attack += 2;
@@ -363,7 +363,7 @@ async function simulateBattleStep(
363363

364364
const defenseRoll = Math.random();
365365
const canBlock =
366-
abilityUsed !== "Airstrike" && abilityUsed !== "Relic of Exo";
366+
abilityUsed !== "Airstrike" && abilityUsed !== "Great Will";
367367

368368
if (defenseRoll < 0.15) {
369369
damage = 0;
@@ -373,7 +373,7 @@ async function simulateBattleStep(
373373
]
374374
.replace("{defender}", "")
375375
.replace("{attacker}", `**${attacker.name}**`)}`;
376-
} else if (defenseRoll < 0.25 && canBlock) {
376+
} else if (defenseRoll < 0.3 && canBlock) {
377377
damage = Math.max(1, damage - defender.defense);
378378
action = "block";
379379
narration = `🛡️ **${defender.name}** ${battleNarrations.block[
@@ -403,6 +403,15 @@ async function simulateBattleStep(
403403
}
404404

405405
if (damage > 0) {
406+
if (useAbility) {
407+
if (abilityUsed === "Relic of Exo" || abilityUsed === "Soul Strike") {
408+
const effectiveDefense = Math.floor(defender.defense * 0.7);
409+
damage = Math.max(1, damage - effectiveDefense);
410+
} else {
411+
damage = Math.max(1, damage - Math.floor(defender.defense / 2));
412+
}
413+
}
414+
406415
defender.hp = Math.max(0, defender.hp - damage);
407416
if (!narration.includes("HP")) {
408417
narration += ` **(${damage} dmg)**`;
@@ -733,7 +742,7 @@ export async function execute(
733742

734743
await new Promise((resolve) => setTimeout(resolve, 3000));
735744

736-
while (fighter1.hp > 0 && fighter2.hp > 0 && turn < 25) {
745+
while (fighter1.hp > 0 && fighter2.hp > 0 && turn < 50) {
737746
const stepResult = await simulateBattleStep(
738747
fighter1,
739748
fighter2,
@@ -815,6 +824,7 @@ export async function execute(
815824
.setTitle(`🏆 THE ${isRanked ? "RANKED " : ""}DEATHBATTLE HAS CONCLUDED`)
816825
.setDescription(
817826
`**${winner.name}** emerges victorious after ${turn} turns!\n\n` +
827+
(turn >= 50 ? "**The heavens are satisfied. The battle has been forcefully stopped!**\n\n" : "") +
818828
`**Final Results:**\n` +
819829
`🏆 **Victor:** ${winner.name} (${winner.hp}/${winner.maxHp} HP)\n` +
820830
`💀 **Defeated:** ${loser.name} (0/${loser.maxHp} HP)\n\n` +

0 commit comments

Comments
 (0)