Spaces:
Sleeping
Sleeping
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'] | |
) | |
); | |
}, | |
}, | |
}; | |