Fix interaction with Virtuals.

pull/761/head
f-raZ0R 2024-05-13 20:33:38 -04:00
parent e11c8ffe1a
commit ef0ff6a705
1 changed files with 18 additions and 9 deletions

View File

@ -523,18 +523,27 @@ export class TormentedTag extends BattlerTag {
pokemon.scene.queueMessage(getPokemonMessage(pokemon, 'is no longer\ntormented!'));
}
//At the end of each turn, if this pokemon executed a move this turn, set its unselectableMove to that move, unless it is struggle, in which case unset it.
//At the end of each turn, set this pokemon's unselectableMove to the last move it executed. If this move is struggle, instead unset unselectableMove. If no valid move is found, do nothing.
lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean {
const ret = lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType);
if (ret) {
const lastMove = pokemon.getLastXMoves(1)[0];
if (!lastMove || (lastMove.move === Moves.NONE))
return ret;
if (lastMove.move === Moves.STRUGGLE) {
pokemon.summonData.unselectableMove = Moves.NONE;
}
else {
pokemon.summonData.unselectableMove = lastMove.move;
const moveQueue = pokemon.getLastXMoves();
let turnMove: TurnMove;
while (moveQueue.length) {
turnMove = moveQueue.shift();
if (turnMove.virtual && turnMove.move !== Moves.STRUGGLE)
continue;
if (turnMove.move === Moves.STRUGGLE) {
pokemon.summonData.unselectableMove = Moves.NONE;
return ret;
}
const moveIndex = pokemon.getMoveset().findIndex(m => m.moveId === turnMove.move);
if (moveIndex === -1)
return ret;
else {
pokemon.summonData.unselectableMove = turnMove.move;
return ret;
}
}
return ret;
}