move: handle some aspects of custom fail text a bit better

This commit is contained in:
Madi Simpson 2024-05-05 10:54:22 -07:00 committed by Samuel H
parent 4aad37a758
commit f7f235cdec
3 changed files with 11 additions and 8 deletions

View File

@ -2356,7 +2356,7 @@ export class IncreasePpAbAttr extends AbAttr { }
export class ForceSwitchOutImmunityAbAttr extends AbAttr { export class ForceSwitchOutImmunityAbAttr extends AbAttr {
apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean {
pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` can't be switched out!`)) cancelled.value = true;
return true; return true;
} }
} }

View File

@ -327,10 +327,12 @@ export default class Move implements Localizable {
} }
getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null { getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
let failedText = null; for (let attr of this.attrs) {
for (let attr of this.attrs) let failedText = attr.getFailedText(user, target, move, cancelled);
failedText = attr.getFailedText(user, target, move, cancelled); if (failedText !== null)
return failedText; return failedText;
}
return null;
} }
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer {
@ -3035,8 +3037,9 @@ export class ForceSwitchOutAttr extends MoveEffectAttr {
} }
getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null { getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null {
applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, cancelled); const blockedByAbility = new Utils.BooleanHolder(false);
return null; applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility);
return blockedByAbility.value ? getPokemonMessage(target, ` can't be switched out!`) : null;
} }
getSwitchOutCondition(): MoveConditionFunc { getSwitchOutCondition(): MoveConditionFunc {

View File

@ -2278,7 +2278,7 @@ export class MovePhase extends BattlePhase {
// Assume conditions affecting targets only apply to moves with a single target // Assume conditions affecting targets only apply to moves with a single target
let success = this.move.getMove().applyConditions(this.pokemon, targets[0], this.move.getMove()); let success = this.move.getMove().applyConditions(this.pokemon, targets[0], this.move.getMove());
let cancelled = new Utils.BooleanHolder(true); let cancelled = new Utils.BooleanHolder(false);
let failedText = this.move.getMove().getFailedText(this.pokemon, targets[0], this.move.getMove(), cancelled); let failedText = this.move.getMove().getFailedText(this.pokemon, targets[0], this.move.getMove(), cancelled);
if (success && this.scene.arena.isMoveWeatherCancelled(this.move.getMove())) if (success && this.scene.arena.isMoveWeatherCancelled(this.move.getMove()))
success = false; success = false;