Spaces:
Running
Running
export const Conditions: import('../../../sim/dex-conditions').ModdedConditionDataTable = { | |
choicelock: { | |
inherit: true, | |
onBeforeMove(pokemon, target, move) { | |
const choiceItem = pokemon.getItem().isChoice || | |
Object.keys(pokemon.volatiles).some(v => ( | |
v.startsWith('item:') && this.dex.items.get(v.split(':')[1]).isChoice | |
)); | |
if (!choiceItem) { | |
pokemon.removeVolatile('choicelock'); | |
return; | |
} | |
if ( | |
!pokemon.ignoringItem() && !pokemon.volatiles['dynamax'] && | |
move.id !== this.effectState.move && move.id !== 'struggle' | |
) { | |
// Fails unless the Choice item is being ignored, and no PP is lost | |
this.addMove('move', pokemon, move.name); | |
this.attrLastMove('[still]'); | |
this.debug("Disabled by Choice item lock"); | |
this.add('-fail', pokemon); | |
return false; | |
} | |
}, | |
onDisableMove(pokemon) { | |
const choiceItem = pokemon.getItem().isChoice || | |
Object.keys(pokemon.volatiles).some(v => ( | |
v.startsWith('item:') && this.dex.items.get(v.split(':')[1]).isChoice | |
)); | |
if (!choiceItem || !pokemon.hasMove(this.effectState.move)) { | |
pokemon.removeVolatile('choicelock'); | |
return; | |
} | |
if (pokemon.ignoringItem() || pokemon.volatiles['dynamax']) { | |
return; | |
} | |
for (const moveSlot of pokemon.moveSlots) { | |
if (moveSlot.id !== this.effectState.move) { | |
pokemon.disableMove(moveSlot.id, false, this.effectState.sourceEffect); | |
} | |
} | |
}, | |
}, | |
}; | |