Spaces:
Running
Running
File size: 1,906 Bytes
5c2ed06 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = {
slp: {
inherit: true,
onBeforeMove(pokemon, target, move) {
if (this.effectState.timerDecreased !== this.turn) {
this.effectState.timerDecreased = this.turn;
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) return;
return false;
},
},
frz: {
inherit: true,
onBeforeMove(pokemon, target, move) {
if (move.flags['defrost']) return;
if (this.effectState.durationRolled !== this.turn && this.randomChance(1, 5)) {
pokemon.cureStatus();
return;
}
if (this.effectState.durationRolled !== this.turn) {
// Display the `frozen` message only once per turn.
this.effectState.durationRolled = this.turn;
this.add('cant', pokemon, 'frz');
}
return false;
},
},
confusion: {
inherit: true,
onBeforeMove(pokemon) {
if (this.effectState.timerDecreased !== this.turn) {
this.effectState.timerDecreased = this.turn;
pokemon.volatiles.confusion.time--;
if (!pokemon.volatiles.confusion.time) {
pokemon.removeVolatile('confusion');
return;
}
}
this.add('-activate', pokemon, 'confusion');
if (!this.randomChance(1, 3)) {
return;
}
this.activeTarget = pokemon;
const damage = this.actions.getDamage(pokemon, pokemon, 40);
if (typeof damage !== 'number') throw new Error("Confusion damage not dealt");
this.damage(damage, pokemon, pokemon, {
id: 'confused' as ID,
effectType: 'Move',
type: '???',
} as unknown as ActiveMove);
return false;
},
},
gem: {
inherit: true,
onBeforeMove(pokemon) {
if (pokemon.moveThisTurn) pokemon.removeVolatile('gem');
},
},
};
|