Spaces:
Running
Running
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 supression) | |
pokemon.removeVolatile('protosynthesis'); | |
} | |
}, | |
condition: { | |
noCopy: true, | |
onStart(pokemon, source, effect) { | |
if (effect?.name === 'Booster Energy') { | |
this.effectState.fromBooster = true; | |
this.add('-activate', pokemon, 'ability: Protosynthesis', '[fromitem]'); | |
} else { | |
this.add('-activate', pokemon, 'ability: Protosynthesis'); | |
} | |
this.effectState.bestStat = pokemon.getBestStat(false, true); | |
this.add('-start', pokemon, 'protosynthesis' + this.effectState.bestStat); | |
}, | |
onModifyAtkPriority: 5, | |
onModifyAtk(atk, pokemon) { | |
if (this.effectState.bestStat !== 'atk') return; | |
this.debug('Protosynthesis atk boost'); | |
return this.chainModify([5325, 4096]); | |
}, | |
onModifyDefPriority: 6, | |
onModifyDef(def, pokemon) { | |
if (this.effectState.bestStat !== 'def') return; | |
this.debug('Protosynthesis def boost'); | |
return this.chainModify([5325, 4096]); | |
}, | |
onModifySpAPriority: 5, | |
onModifySpA(spa, pokemon) { | |
if (this.effectState.bestStat !== 'spa') return; | |
this.debug('Protosynthesis spa boost'); | |
return this.chainModify([5325, 4096]); | |
}, | |
onModifySpDPriority: 6, | |
onModifySpD(spd, pokemon) { | |
if (this.effectState.bestStat !== 'spd') return; | |
this.debug('Protosynthesis spd boost'); | |
return this.chainModify([5325, 4096]); | |
}, | |
onModifySpe(spe, pokemon) { | |
if (this.effectState.bestStat !== 'spe') return; | |
this.debug('Protosynthesis spe boost'); | |
return this.chainModify(1.5); | |
}, | |
onEnd(pokemon) { | |
this.add('-end', pokemon, 'Protosynthesis'); | |
}, | |
}, | |
flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, notransform: 1, cantsuppress: 1 }, | |
}, | |
quarkdrive: { | |
inherit: true, | |
condition: { | |
noCopy: true, | |
onStart(pokemon, source, effect) { | |
if (effect?.name === 'Booster Energy') { | |
this.effectState.fromBooster = true; | |
this.add('-activate', pokemon, 'ability: Quark Drive', '[fromitem]'); | |
} else { | |
this.add('-activate', pokemon, 'ability: Quark Drive'); | |
} | |
this.effectState.bestStat = pokemon.getBestStat(false, true); | |
this.add('-start', pokemon, 'quarkdrive' + this.effectState.bestStat); | |
}, | |
onModifyAtkPriority: 5, | |
onModifyAtk(atk, pokemon) { | |
if (this.effectState.bestStat !== 'atk') return; | |
this.debug('Quark Drive atk boost'); | |
return this.chainModify([5325, 4096]); | |
}, | |
onModifyDefPriority: 6, | |
onModifyDef(def, pokemon) { | |
if (this.effectState.bestStat !== 'def') return; | |
this.debug('Quark Drive def boost'); | |
return this.chainModify([5325, 4096]); | |
}, | |
onModifySpAPriority: 5, | |
onModifySpA(spa, pokemon) { | |
if (this.effectState.bestStat !== 'spa') return; | |
this.debug('Quark Drive spa boost'); | |
return this.chainModify([5325, 4096]); | |
}, | |
onModifySpDPriority: 6, | |
onModifySpD(spd, pokemon) { | |
if (this.effectState.bestStat !== 'spd') return; | |
this.debug('Quark Drive spd boost'); | |
return this.chainModify([5325, 4096]); | |
}, | |
onModifySpe(spe, pokemon) { | |
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 }, | |
}, | |
}; | |