From f8ce20970f59fff37d9e6c835f29aeda58f9daee Mon Sep 17 00:00:00 2001 From: Guangcong Luo Date: Thu, 15 Nov 2018 19:00:15 -0600 Subject: [PATCH] Fix other infinite loop in Transform This hasn't come up yet, but we might as well handle it before it comes up. Also slightly refactor `rememberMove`. --- src/battle.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/battle.ts b/src/battle.ts index bac1db7ec..0df42e599 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -319,9 +319,8 @@ class Pokemon { this.clearMovestatuses(); this.side.battle.scene.clearEffects(this); } - rememberMove(moveName: string, pp?: number, recursionSource?: string) { + rememberMove(moveName: string, pp = 1, recursionSource?: string) { if (recursionSource === this.ident) return; - if (pp === undefined) pp = 1; moveName = Tools.getMove(moveName).name; if (moveName.charAt(0) === '*') return; if (moveName === 'Struggle') return; @@ -331,10 +330,10 @@ class Pokemon { this.volatiles.transform[1].rememberMove(moveName, 0, recursionSource); moveName = '*' + moveName; } - for (let i = 0; i < this.moveTrack.length; i++) { - if (moveName === this.moveTrack[i][0]) { - this.moveTrack[i][1] += pp; - if (this.moveTrack[i][1] < 0) this.moveTrack[i][1] = 0; + for (const entry of this.moveTrack) { + if (moveName === entry[0]) { + entry[1] += pp; + if (entry[1] < 0) entry[1] = 0; return; } } @@ -2020,6 +2019,7 @@ class Battle { let poke = this.getPokemon(args[1])!; let tpoke = this.getPokemon(args[2])!; let effect = Tools.getEffect(kwArgs.from); + if (poke === tpoke) throw new Error("Transforming into self"); if (!kwArgs.silent) { this.activateAbility(poke, effect);