From 6bc191c44eb0de13dfeb0656e04d808f1d7a3e1d Mon Sep 17 00:00:00 2001 From: NightKev <34855794+DayKev@users.noreply.github.com> Date: Thu, 11 Jul 2024 07:20:23 -0700 Subject: [PATCH] [Bug] Fix off-by-one error in damage calc (#2970) * Fix random damage roll to be 85-100% instead of 85-99% * Update battle.test.ts to reflect the fix --- src/field/pokemon.ts | 4 +++- src/test/battle/battle.test.ts | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index 52ec370ef53..086614f0190 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -1909,7 +1909,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyPreAttackAbAttrs(AddSecondStrikeAbAttr, source, this, move, numTargets, new Utils.IntegerHolder(0), twoStrikeMultiplier); if (!isTypeImmune) { - damage.value = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk.value / targetDef.value) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * arenaAttackTypeMultiplier.value * screenMultiplier.value * twoStrikeMultiplier.value * ((this.scene.randBattleSeedInt(15) + 85) / 100) * criticalMultiplier.value); + damage.value = Math.ceil( + ((((2 * source.level / 5 + 2) * power.value * sourceAtk.value / targetDef.value) / 50) + 2) + * stabMultiplier.value * typeMultiplier.value * arenaAttackTypeMultiplier.value * screenMultiplier.value * twoStrikeMultiplier.value * ((this.scene.randBattleSeedInt(16) + 85) / 100) * criticalMultiplier.value); if (isPhysical && source.status && source.status.effect === StatusEffect.BURN) { if (!move.hasAttr(BypassBurnDamageReductionAttr)) { const burnDamageReductionCancelled = new Utils.BooleanHolder(false); diff --git a/src/test/battle/battle.test.ts b/src/test/battle/battle.test.ts index 87949be70a8..61dcd5f671b 100644 --- a/src/test/battle/battle.test.ts +++ b/src/test/battle/battle.test.ts @@ -151,8 +151,8 @@ describe("Test Battle Phase", () => { it("test remove random battle seed int", async() => { for (let i=0; i<10; i++) { - const rand = game.scene.randBattleSeedInt(15); - expect(rand).toBe(14); + const rand = game.scene.randBattleSeedInt(16); + expect(rand).toBe(15); } });