Spaces:
Running
Running
File size: 1,608 Bytes
5c2ed06 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
export const Scripts: ModdedBattleScriptsData = {
gen: 9,
field: {
suppressingWeather() {
for (const pokemon of this.battle.getAllActive()) {
const pokemove = pokemon.m.pokemove;
if (pokemon && !pokemon.ignoringAbility() &&
(pokemon.getAbility().suppressWeather ||
(pokemove && pokemon.volatiles['ability:' + this.battle.toID(pokemove.abilities['0'])] &&
this.battle.dex.abilities.get(pokemove.abilities['0']).suppressWeather))) {
return true;
}
}
return false;
},
},
pokemon: {
hasAbility(ability) {
if (this.ignoringAbility()) return false;
if (Array.isArray(ability)) return ability.some(abil => this.hasAbility(abil));
const abilityid = this.battle.toID(ability);
return this.ability === abilityid || !!this.volatiles['ability:' + abilityid];
},
ignoringAbility() {
// Check if any active pokemon have the ability Neutralizing Gas
let neutralizinggas = false;
for (const pokemon of this.battle.getAllActive()) {
// can't use hasAbility because it would lead to infinite recursion
if (
(pokemon.ability === ('neutralizinggas' as ID) || pokemon.volatiles['ability:neutralizinggas']) &&
!pokemon.volatiles['gastroacid'] && !pokemon.abilityState.ending
) {
neutralizinggas = true;
break;
}
}
return !!(
(this.battle.gen >= 5 && !this.isActive) ||
((this.volatiles['gastroacid'] ||
(neutralizinggas && (this.ability !== ('neutralizinggas' as ID) ||
this.volatiles['ability:neutralizinggas'])
)) && !this.getAbility().flags['cantsuppress']
)
);
},
},
};
|