diff --git a/src/data/ability.ts b/src/data/ability.ts index 708053ccba7..34d9dc2719c 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -562,19 +562,28 @@ export class PostDefendStatChangeAbAttr extends PostDefendAbAttr { private stat: BattleStat; private levels: integer; private selfTarget: boolean; + private allOthers: boolean; - constructor(condition: PokemonDefendCondition, stat: BattleStat, levels: integer, selfTarget: boolean = true) { + constructor(condition: PokemonDefendCondition, stat: BattleStat, levels: integer, selfTarget: boolean = true, allOthers: boolean = false) { super(true); this.condition = condition; this.stat = stat; this.levels = levels; this.selfTarget = selfTarget; + this.allOthers = allOthers; } applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { if (this.condition(pokemon, attacker, move.getMove())) { - pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, (this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, [ this.stat ], this.levels)); + if (this.allOthers) { + let otherPokemon = pokemon.getAlly() ? pokemon.getOpponents().concat([ pokemon.getAlly() ]) : pokemon.getOpponents(); + for (let other of otherPokemon) { + other.scene.unshiftPhase(new StatChangePhase(other.scene, (other).getBattlerIndex(), false, [ this.stat ], this.levels)); + } + return true; + } + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, (this.selfTarget ? pokemon : attacker).getBattlerIndex(), this.selfTarget, [ this.stat ], this.levels)); return true; } @@ -3407,7 +3416,8 @@ export function initAbilities() { new Ability(Abilities.BALL_FETCH, 8) .unimplemented(), new Ability(Abilities.COTTON_DOWN, 8) - .unimplemented(), + .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, BattleStat.SPD, -1, false, true) + .bypassFaint(), new Ability(Abilities.PROPELLER_TAIL, 8) .attr(BlockRedirectAbAttr), new Ability(Abilities.MIRROR_ARMOR, 8) diff --git a/src/utils.ts b/src/utils.ts index ef277630dc4..191b8f55bc0 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -220,7 +220,7 @@ export function executeIf(condition: boolean, promiseFunc: () => Promise): } export const sessionIdKey = 'pokerogue_sessionId'; -export const isLocal = window.location.hostname === 'localhost'; +export const isLocal = window.location.hostname === 'localhost' || window.location.hostname === ''; export const serverUrl = isLocal ? 'http://localhost:8001' : ''; export const apiUrl = isLocal ? serverUrl : 'https://api.pokerogue.net'; export const fallbackApiUrl = isLocal ? serverUrl : 'api';