export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = { commander: { inherit: true, flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1 }, }, gulpmissile: { inherit: true, flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1, notransform: 1 }, }, protosynthesis: { inherit: true, onWeatherChange(pokemon) { // Protosynthesis is not affected by Utility Umbrella if (this.field.isWeather('sunnyday')) { pokemon.addVolatile('protosynthesis'); } else if (!pokemon.volatiles['protosynthesis']?.fromBooster && this.field.weather !== 'sunnyday') { // Protosynthesis will not deactivite if Sun is suppressed, hence the direct ID check (isWeather respects suppression) pokemon.removeVolatile('protosynthesis'); } }, condition: { inherit: true, onModifyAtk() { if (this.effectState.bestStat !== 'atk') return; this.debug('Protosynthesis atk boost'); return this.chainModify([5325, 4096]); }, onModifyDef() { if (this.effectState.bestStat !== 'def') return; this.debug('Protosynthesis def boost'); return this.chainModify([5325, 4096]); }, onModifySpA() { if (this.effectState.bestStat !== 'spa') return; this.debug('Protosynthesis spa boost'); return this.chainModify([5325, 4096]); }, onModifySpD() { if (this.effectState.bestStat !== 'spd') return; this.debug('Protosynthesis spd boost'); return this.chainModify([5325, 4096]); }, onModifySpe() { if (this.effectState.bestStat !== 'spe') return; this.debug('Protosynthesis spe boost'); return this.chainModify(1.5); }, }, flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1, cantsuppress: 1 }, }, quarkdrive: { inherit: true, condition: { inherit: true, onModifyAtk() { if (this.effectState.bestStat !== 'atk') return; this.debug('Quark Drive atk boost'); return this.chainModify([5325, 4096]); }, onModifyDef() { if (this.effectState.bestStat !== 'def') return; this.debug('Quark Drive def boost'); return this.chainModify([5325, 4096]); }, onModifySpA() { if (this.effectState.bestStat !== 'spa') return; this.debug('Quark Drive spa boost'); return this.chainModify([5325, 4096]); }, onModifySpD() { if (this.effectState.bestStat !== 'spd') return; this.debug('Quark Drive spd boost'); return this.chainModify([5325, 4096]); }, onModifySpe() { if (this.effectState.bestStat !== 'spe') return; this.debug('Quark Drive spe boost'); return this.chainModify(1.5); }, onEnd(pokemon) { this.add('-end', pokemon, 'Quark Drive'); }, }, flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1, cantsuppress: 1 }, }, };