Jofthomas's picture
Jofthomas HF staff
Upload 4781 files
5c2ed06 verified
export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = {
tox: {
inherit: true,
onResidual(pokemon) {
if (this.effectState.stage < 15) {
this.effectState.stage++;
}
const calc = calculate(this, this.effectState.source, pokemon);
this.damage(calc * this.clampIntRange(pokemon.baseMaxhp / 16, 1) * this.effectState.stage);
},
},
brn: {
inherit: true,
onResidual(pokemon) {
const calc = calculate(this, this.effectState.source, pokemon);
this.damage(calc * pokemon.baseMaxhp / 16);
},
},
psn: {
inherit: true,
onResidual(pokemon) {
const calc = calculate(this, this.effectState.source, pokemon);
this.damage(calc * pokemon.baseMaxhp / 8);
},
},
partiallytrapped: {
inherit: true,
onResidual(pokemon) {
const source = this.effectState.source;
// G-Max Centiferno and G-Max Sandblast continue even after the user leaves the field
const gmaxEffect = ['gmaxcentiferno', 'gmaxsandblast'].includes(this.effectState.sourceEffect.id);
if (source && (!source.isActive || source.hp <= 0 || !source.activeTurns) && !gmaxEffect) {
delete pokemon.volatiles['partiallytrapped'];
this.add('-end', pokemon, this.effectState.sourceEffect, '[partiallytrapped]', '[silent]');
return;
}
const calc = calculate(this, source, pokemon);
this.damage(calc * pokemon.baseMaxhp / this.effectState.boundDivisor);
},
},
sandstorm: {
inherit: true,
onWeather(target) {
const calc = calculate(this, this.effectState.source, target);
this.damage(calc * target.baseMaxhp / 16);
},
},
};
function calculate(battle: Battle, source: Pokemon, pokemon: Pokemon) {
const move = battle.dex.getActiveMove('tackle');
move.type = source.getTypes()[0];
const typeMod = 2 ** battle.clampIntRange(pokemon.runEffectiveness(move), -6, 6);
if (!pokemon.runImmunity(move.type)) return 0;
return typeMod;
}