Spaces:
Paused
Paused
| export const Scripts: ModdedBattleScriptsData = { | |
| field: { | |
| suppressingWeather() { | |
| for (const pokemon of this.battle.getAllActive()) { | |
| const innates = Object.keys(pokemon.volatiles).filter(x => x.startsWith('ability:')); | |
| if (pokemon && !pokemon.ignoringAbility() && | |
| (pokemon.getAbility().suppressWeather || innates.some(x => ( | |
| this.battle.dex.abilities.get(x.replace('ability:', '')).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.m.abils?.includes('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.m.abils?.includes('ability:neutralizinggas')) | |
| )) && !this.getAbility().flags['cantsuppress'] | |
| ) | |
| ); | |
| }, | |
| }, | |
| }; | |