'use strict'; exports.BattleScripts = { getEffect: function (name) { if (name && typeof name !== 'string') { return name; } let id = toId(name); if (id.startsWith('ability')) return Object.assign(Object.create(this.getAbility(id.slice(7))), {id}); return Object.getPrototypeOf(this).getEffect.call(this, name); }, suppressingWeather() { for (const side of this.sides) { for (const pokemon of side.active) { if (pokemon && !pokemon.ignoringAbility() && pokemon.hasAbility('Cloud Nine')) { return true; } } } return false; }, pokemon: { hasAbility: function (ability) { if (this.ignoringAbility()) return false; if (Array.isArray(ability)) return ability.some(ability => this.hasAbility(ability)); ability = toId(ability); return this.ability === ability || !!this.volatiles['ability' + ability]; }, }, };