export const Conditions: {[k: string]: ModdedConditionData} = { 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-4 turns this.effectState.time = this.random(2, 6); // Turns spent using Sleep Talk/Snore immediately before switching out while asleep this.effectState.skippedTime = 0; }, onSwitchIn(target) { this.effectState.time += this.effectState.skippedTime; this.effectState.skippedTime = 0; }, onBeforeMovePriority: 10, onBeforeMove(pokemon, target, move) { if (pokemon.hasAbility('earlybird')) { pokemon.statusState.time--; } pokemon.statusState.time--; if (pokemon.statusState.time <= 0) { pokemon.cureStatus(); return; } this.add('cant', pokemon, 'slp'); if (move.sleepUsable) { this.effectState.skippedTime++; return; } this.effectState.skippedTime = 0; return false; }, }, frz: { inherit: true, onDamagingHit(damage, target, source, move) { // don't count Hidden Power or Weather Ball as Fire-type if (this.dex.moves.get(move.id).type === 'Fire' && move.category !== 'Status') { target.cureStatus(); } }, }, sandstorm: { inherit: true, onModifySpD() {}, }, };