export const Conditions: {[k: string]: ModdedConditionData} = { brn: { name: 'brn', effectType: 'Status', onStart(target) { this.add('-status', target, 'brn'); }, onAfterMoveSelfPriority: 2, onAfterMoveSelf(pokemon) { this.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1)); }, onAfterSwitchInSelf(pokemon) { this.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1)); }, }, par: { name: 'par', effectType: 'Status', onStart(target) { this.add('-status', target, 'par'); }, onBeforeMovePriority: 2, onBeforeMove(pokemon) { if (this.randomChance(63, 256)) { this.add('cant', pokemon, 'par'); pokemon.removeVolatile('bide'); pokemon.removeVolatile('lockedmovee'); pokemon.removeVolatile('twoturnmove'); pokemon.removeVolatile('fly'); pokemon.removeVolatile('dig'); pokemon.removeVolatile('solarbeam'); pokemon.removeVolatile('skullbash'); pokemon.removeVolatile('partialtrappinglock'); return false; } }, }, slp: { name: 'slp', effectType: 'Status', onStart(target, source, sourceEffect) { if (sourceEffect && sourceEffect.effectType === 'Move') { this.add('-status', target, 'slp', '[from] move: ' + sourceEffect.name); } else { this.add('-status', target, 'slp'); } // 1-3 turns this.effectState.startTime = this.random(1, 4); this.effectState.time = this.effectState.startTime; }, onBeforeMovePriority: 2, onBeforeMove(pokemon, target, move) { pokemon.statusState.time--; this.add('cant', pokemon, 'slp'); pokemon.lastMove = null; return false; }, onAfterMoveSelf(pokemon) { if (pokemon.statusState.time <= 0) pokemon.cureStatus(); }, }, frz: { name: 'frz', effectType: 'Status', onStart(target) { this.add('-status', target, 'frz'); }, onBeforeMovePriority: 2, onBeforeMove(pokemon, target, move) { this.add('cant', pokemon, 'frz'); pokemon.lastMove = null; return false; }, onHit(target, source, move) { if (move.type === 'Fire' && move.category !== 'Status') { target.cureStatus(); } }, }, psn: { name: 'psn', effectType: 'Status', onStart(target) { this.add('-status', target, 'psn'); }, onAfterMoveSelfPriority: 2, onAfterMoveSelf(pokemon) { this.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1)); }, onAfterSwitchInSelf(pokemon) { this.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1)); }, }, tox: { name: 'tox', effectType: 'Status', onStart(target) { this.add('-status', target, 'tox'); }, onAfterMoveSelfPriority: 2, onAfterMoveSelf(pokemon) { this.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1)); }, onAfterSwitchInSelf(pokemon) { // Regular poison status and damage after a switchout -> switchin. pokemon.setStatus('psn'); pokemon.addVolatile('residualdmg'); pokemon.volatiles['residualdmg'].counter = 1; this.damage(this.clampIntRange(Math.floor(pokemon.maxhp / 16), 1)); }, }, partiallytrapped: { name: 'partiallytrapped', duration: 2, onBeforeMovePriority: 1, onStart(target, source, effect) { this.add('-activate', target, 'move: ' + effect, '[of] ' + source); }, onBeforeMove(pokemon) { if (this.effectState.source && (!this.effectState.source.isActive || this.effectState.source.hp <= 0)) { pokemon.removeVolatile('partiallytrapped'); return; } this.add('cant', pokemon, 'partiallytrapped'); return false; }, onEnd(pokemon) { this.add('-end', pokemon, this.effectState.sourceEffect, '[partiallytrapped]'); }, }, };