Don't use failure text as a condition for move success
A move defining potential failure text doesn't mean it failed
This commit is contained in:
parent
8e82dfae45
commit
ea39ca8706
|
@ -244,15 +244,16 @@ export class MovePhase extends BattlePhase {
|
|||
|
||||
const move = this.move.getMove();
|
||||
|
||||
// Move conditions assume the move has a single target
|
||||
// TODO: is this sustainable?
|
||||
/**
|
||||
* Move conditions assume the move has a single target
|
||||
* TODO: is this sustainable?
|
||||
*/
|
||||
const passesConditions = move.applyConditions(this.pokemon, targets[0], move);
|
||||
const failureMessage = move.getFailedText(this.pokemon, targets[0], move, new Utils.BooleanHolder(false));
|
||||
|
||||
const failedWithMessage = failureMessage !== null && failureMessage !== undefined;
|
||||
let failedDueToWeather: boolean, failedDueToTerrain: boolean;
|
||||
let failedDueToWeather: boolean = false;
|
||||
let failedDueToTerrain: boolean = false;
|
||||
|
||||
if (!failedWithMessage) {
|
||||
if (!passesConditions) {
|
||||
failedDueToWeather = this.scene.arena.isMoveWeatherCancelled(this.pokemon, move);
|
||||
|
||||
if (!failedDueToWeather) {
|
||||
|
@ -260,8 +261,7 @@ export class MovePhase extends BattlePhase {
|
|||
}
|
||||
}
|
||||
|
||||
// @ts-expect-error
|
||||
const success = passesConditions && !failedWithMessage && !failedDueToWeather && !failedDueToTerrain;
|
||||
const success = passesConditions && !failedDueToWeather && !failedDueToTerrain;
|
||||
|
||||
/**
|
||||
* If the move has not failed, trigger ability-based user type changes and then execute it.
|
||||
|
@ -283,10 +283,10 @@ export class MovePhase extends BattlePhase {
|
|||
this.pokemon.pushMoveHistory({ move: this.move.moveId, targets: this.targets, result: MoveResult.FAIL, virtual: this.move.virtual });
|
||||
|
||||
let failedText: string | undefined;
|
||||
const failureMessage = move.getFailedText(this.pokemon, targets[0], move, new Utils.BooleanHolder(false));
|
||||
|
||||
if (failedWithMessage) {
|
||||
if (failureMessage) {
|
||||
failedText = failureMessage;
|
||||
// @ts-expect-error
|
||||
} else if (failedDueToTerrain) {
|
||||
failedText = getTerrainBlockMessage(this.pokemon, this.scene.arena.getTerrainType());
|
||||
}
|
||||
|
@ -405,6 +405,8 @@ export class MovePhase extends BattlePhase {
|
|||
* to lapse on move failure/cancellation.
|
||||
*
|
||||
* TODO: ...this seems weird.
|
||||
* - Lapses `AFTER_MOVE` tags:
|
||||
* - This handles the effects of {@linkcode Moves.SUBSTITUTE}
|
||||
* - Removes the second turn of charge moves
|
||||
*
|
||||
* TODO: handle charge moves more gracefully
|
||||
|
@ -424,6 +426,7 @@ export class MovePhase extends BattlePhase {
|
|||
this.pokemon.pushMoveHistory({ move: Moves.NONE, result: MoveResult.FAIL });
|
||||
|
||||
this.pokemon.lapseTags(BattlerTagLapseType.MOVE_EFFECT);
|
||||
this.pokemon.lapseTags(BattlerTagLapseType.AFTER_MOVE);
|
||||
|
||||
this.pokemon.getMoveQueue().shift();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue