export const Conditions: {[k: string]: ModdedConditionData} = { // Status conditions slightly tweaked to exclude Therapeutic brn: { name: 'brn', effectType: 'Status', onStart(target, source, sourceEffect) { if (sourceEffect && sourceEffect.id === 'flameorb') { this.add('-status', target, 'brn', '[from] item: Flame Orb'); target.m.orbItemStatus = true; } else if (sourceEffect && sourceEffect.effectType === 'Ability') { this.add('-status', target, 'brn', '[from] ability: ' + sourceEffect.name, '[of] ' + source); } else { this.add('-status', target, 'brn'); } }, // Damage reduction is handled directly in the sim/battle.js damage function onResidualOrder: 9, onResidual(pokemon) { if (!pokemon.hasAbility('therapeutic')) { this.damage(pokemon.baseMaxhp / 16); } }, }, par: { name: 'par', effectType: 'Status', onStart(target, source, sourceEffect) { if (sourceEffect && sourceEffect.effectType === 'Ability') { this.add('-status', target, 'par', '[from] ability: ' + sourceEffect.name, '[of] ' + source); } else { this.add('-status', target, 'par'); } }, onModifySpe(spe, pokemon) { if (!pokemon.hasAbility(['quickfeet', 'therapeutic'])) { return this.chainModify(0.5); } }, onBeforeMovePriority: 1, onBeforeMove(pokemon) { if (!pokemon.hasAbility('therapeutic')) { if (this.randomChance(1, 4)) { this.add('cant', pokemon, 'par'); return false; } } }, }, frz: { name: 'frz', effectType: 'Status', onStart(target, source, sourceEffect) { if (sourceEffect && sourceEffect.effectType === 'Ability') { this.add('-status', target, 'frz', '[from] ability: ' + sourceEffect.name, '[of] ' + source); } else { this.add('-status', target, 'frz'); } if (target.species.name === 'Shaymin-Sky' && target.baseSpecies.baseSpecies === 'Shaymin') { target.formeChange('Shaymin', this.effect, true); } }, onBeforeMovePriority: 10, onBeforeMove(pokemon, target, move) { if (move.flags['defrost']) return; if (this.randomChance(1, 5)) { pokemon.cureStatus(); return; } if (!pokemon.hasAbility('therapeutic')) { this.add('cant', pokemon, 'frz'); return false; } }, onModifyMove(move, pokemon) { if (move.flags['defrost']) { this.add('-curestatus', pokemon, 'frz', '[from] move: ' + move); pokemon.setStatus(''); } }, onHit(target, source, move) { if (move.thawsTarget || move.type === 'Fire' && move.category !== 'Status') { target.cureStatus(); } }, }, psn: { name: 'psn', effectType: 'Status', onStart(target, source, sourceEffect) { if (sourceEffect?.effectType === 'Ability') { this.add('-status', target, 'psn', '[from] ability: ' + sourceEffect.name, '[of] ' + source); this.effectState.sourceEffect = sourceEffect.id; } else { this.add('-status', target, 'psn'); } }, onResidualOrder: 9, onResidual(pokemon) { if (!pokemon.hasAbility('therapeutic')) { this.damage(pokemon.baseMaxhp / 8); } }, }, tox: { name: 'tox', effectType: 'Status', onStart(target, source, sourceEffect) { this.effectState.stage = 0; if (sourceEffect && sourceEffect.id === 'toxicorb') { this.add('-status', target, 'tox', '[from] item: Toxic Orb'); target.m.orbItemStatus = true; } else if (sourceEffect && sourceEffect.effectType === 'Ability') { this.add('-status', target, 'tox', '[from] ability: ' + sourceEffect.name, '[of] ' + source); } else { this.add('-status', target, 'tox'); } }, onSwitchIn() { this.effectState.stage = 0; }, onResidualOrder: 9, onResidual(pokemon) { if (this.effectState.stage < 15) { this.effectState.stage++; } if (!pokemon.hasAbility('therapeutic')) { this.damage(this.clampIntRange(pokemon.baseMaxhp / 16, 1) * this.effectState.stage); } }, }, };