diff --git a/src/data/ability.ts b/src/data/ability.ts index 07aecbdcc..68c117f68 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -2965,8 +2965,7 @@ export function initAbilities() { new Ability(Abilities.NO_GUARD, 4) .attr(AlwaysHitAbAttr) .attr(DoubleBattleChanceAbAttr), - new Ability(Abilities.STALL, 4) - .unimplemented(), + new Ability(Abilities.STALL, 4), new Ability(Abilities.TECHNICIAN, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.power <= 60, 1.5), new Ability(Abilities.LEAF_GUARD, 4) diff --git a/src/phases.ts b/src/phases.ts index fc6af354a..5a417073a 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -590,6 +590,13 @@ export abstract class FieldPhase extends BattlePhase { if (speedReversed.value) orderedTargets = orderedTargets.reverse(); + orderedTargets.sort((a: Pokemon, b: Pokemon) => { + const aStall = a.hasAbility(Abilities.STALL); + const bStall = b.hasAbility(Abilities.STALL); + + return aStall === bStall ? 0 : aStall ? 1 : -1; + }); + return orderedTargets.map(t => t.getFieldIndex() + (!t.isPlayer() ? BattlerIndex.ENEMY : 0)); }