mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-04-29 21:13:55 +01:00
[Bug][Hotfix] Fix various ability flyouts not disappearing (#5614)
* Add hide phases for rogue ability showing * Hide ability bar on game over * Hide ability bar in TurnEndPhase
This commit is contained in:
parent
951d8b633d
commit
2773354193
@ -167,7 +167,7 @@ import { ExpGainsSpeed } from "#enums/exp-gains-speed";
|
|||||||
import { BattlerTagType } from "#enums/battler-tag-type";
|
import { BattlerTagType } from "#enums/battler-tag-type";
|
||||||
import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters";
|
import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters";
|
||||||
import { StatusEffect } from "#enums/status-effect";
|
import { StatusEffect } from "#enums/status-effect";
|
||||||
import { globalScene, initGlobalScene } from "#app/global-scene";
|
import { initGlobalScene } from "#app/global-scene";
|
||||||
import { ShowAbilityPhase } from "#app/phases/show-ability-phase";
|
import { ShowAbilityPhase } from "#app/phases/show-ability-phase";
|
||||||
import { HideAbilityPhase } from "#app/phases/hide-ability-phase";
|
import { HideAbilityPhase } from "#app/phases/hide-ability-phase";
|
||||||
import { timedEventManager } from "./global-event-manager";
|
import { timedEventManager } from "./global-event-manager";
|
||||||
@ -2665,7 +2665,7 @@ export default class BattleScene extends SceneBase {
|
|||||||
case "mystery_encounter_delibirdy": // Firel Delibirdy
|
case "mystery_encounter_delibirdy": // Firel Delibirdy
|
||||||
return 82.28;
|
return 82.28;
|
||||||
case "title_afd": // Andr06 - PokéRogue Title Remix (AFD)
|
case "title_afd": // Andr06 - PokéRogue Title Remix (AFD)
|
||||||
return 47.660;
|
return 47.66;
|
||||||
case "battle_rival_3_afd": // Andr06 - Final N Battle Remix (AFD)
|
case "battle_rival_3_afd": // Andr06 - Final N Battle Remix (AFD)
|
||||||
return 49.147;
|
return 49.147;
|
||||||
}
|
}
|
||||||
@ -2937,14 +2937,19 @@ export default class BattleScene extends SceneBase {
|
|||||||
* @param show Whether to show or hide the bar
|
* @param show Whether to show or hide the bar
|
||||||
*/
|
*/
|
||||||
public queueAbilityDisplay(pokemon: Pokemon, passive: boolean, show: boolean): void {
|
public queueAbilityDisplay(pokemon: Pokemon, passive: boolean, show: boolean): void {
|
||||||
this.unshiftPhase(
|
this.unshiftPhase(show ? new ShowAbilityPhase(pokemon.getBattlerIndex(), passive) : new HideAbilityPhase());
|
||||||
show
|
|
||||||
? new ShowAbilityPhase(pokemon.getBattlerIndex(), passive)
|
|
||||||
: new HideAbilityPhase(pokemon.getBattlerIndex(), passive),
|
|
||||||
);
|
|
||||||
this.clearPhaseQueueSplice();
|
this.clearPhaseQueueSplice();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hides the ability bar if it is currently visible
|
||||||
|
*/
|
||||||
|
public hideAbilityBar(): void {
|
||||||
|
if (this.abilityBar.isVisible()) {
|
||||||
|
this.unshiftPhase(new HideAbilityPhase());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Moves everything from nextCommandPhaseQueue to phaseQueue (keeping order)
|
* Moves everything from nextCommandPhaseQueue to phaseQueue (keeping order)
|
||||||
*/
|
*/
|
||||||
|
@ -28,7 +28,6 @@ import { BattlerTagType } from "#enums/battler-tag-type";
|
|||||||
import { Moves } from "#enums/moves";
|
import { Moves } from "#enums/moves";
|
||||||
import { MoveEffectPhase } from "#app/phases/move-effect-phase";
|
import { MoveEffectPhase } from "#app/phases/move-effect-phase";
|
||||||
import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
|
import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
|
||||||
import { ShowAbilityPhase } from "#app/phases/show-ability-phase";
|
|
||||||
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
|
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
|
||||||
import { CommonAnimPhase } from "#app/phases/common-anim-phase";
|
import { CommonAnimPhase } from "#app/phases/common-anim-phase";
|
||||||
|
|
||||||
@ -1160,9 +1159,11 @@ class TailwindTag extends ArenaTag {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Raise attack by one stage if party member has WIND_RIDER ability
|
// Raise attack by one stage if party member has WIND_RIDER ability
|
||||||
|
// TODO: Ability displays should be handled by the ability
|
||||||
if (pokemon.hasAbility(Abilities.WIND_RIDER)) {
|
if (pokemon.hasAbility(Abilities.WIND_RIDER)) {
|
||||||
globalScene.unshiftPhase(new ShowAbilityPhase(pokemon.getBattlerIndex()));
|
globalScene.queueAbilityDisplay(pokemon, false, true);
|
||||||
globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.ATK], 1, true));
|
globalScene.unshiftPhase(new StatStageChangePhase(pokemon.getBattlerIndex(), true, [Stat.ATK], 1, true));
|
||||||
|
globalScene.queueAbilityDisplay(pokemon, false, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,6 @@ import { CommonAnimPhase } from "#app/phases/common-anim-phase";
|
|||||||
import { MoveEffectPhase } from "#app/phases/move-effect-phase";
|
import { MoveEffectPhase } from "#app/phases/move-effect-phase";
|
||||||
import { MovePhase } from "#app/phases/move-phase";
|
import { MovePhase } from "#app/phases/move-phase";
|
||||||
import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
|
import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
|
||||||
import { ShowAbilityPhase } from "#app/phases/show-ability-phase";
|
|
||||||
import type { StatStageChangeCallback } from "#app/phases/stat-stage-change-phase";
|
import type { StatStageChangeCallback } from "#app/phases/stat-stage-change-phase";
|
||||||
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
|
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
|
||||||
import i18next from "#app/plugins/i18n";
|
import i18next from "#app/plugins/i18n";
|
||||||
@ -1901,12 +1900,14 @@ export class TruantTag extends AbilityBattlerTag {
|
|||||||
|
|
||||||
if (lastMove && lastMove.move !== Moves.NONE) {
|
if (lastMove && lastMove.move !== Moves.NONE) {
|
||||||
(globalScene.getCurrentPhase() as MovePhase).cancel();
|
(globalScene.getCurrentPhase() as MovePhase).cancel();
|
||||||
globalScene.unshiftPhase(new ShowAbilityPhase(pokemon.id, passive));
|
// TODO: Ability displays should be handled by the ability
|
||||||
|
globalScene.queueAbilityDisplay(pokemon, passive, true);
|
||||||
globalScene.queueMessage(
|
globalScene.queueMessage(
|
||||||
i18next.t("battlerTags:truantLapse", {
|
i18next.t("battlerTags:truantLapse", {
|
||||||
pokemonNameWithAffix: getPokemonNameWithAffix(pokemon),
|
pokemonNameWithAffix: getPokemonNameWithAffix(pokemon),
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
globalScene.queueAbilityDisplay(pokemon, passive, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -106,7 +106,6 @@ import { PokemonHealPhase } from "#app/phases/pokemon-heal-phase";
|
|||||||
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
|
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
|
||||||
import { SwitchPhase } from "#app/phases/switch-phase";
|
import { SwitchPhase } from "#app/phases/switch-phase";
|
||||||
import { SwitchSummonPhase } from "#app/phases/switch-summon-phase";
|
import { SwitchSummonPhase } from "#app/phases/switch-summon-phase";
|
||||||
import { ShowAbilityPhase } from "#app/phases/show-ability-phase";
|
|
||||||
import { SpeciesFormChangeRevertWeatherFormTrigger } from "../pokemon-forms";
|
import { SpeciesFormChangeRevertWeatherFormTrigger } from "../pokemon-forms";
|
||||||
import type { GameMode } from "#app/game-mode";
|
import type { GameMode } from "#app/game-mode";
|
||||||
import { applyChallenges, ChallengeType } from "../challenge";
|
import { applyChallenges, ChallengeType } from "../challenge";
|
||||||
@ -1924,7 +1923,9 @@ export class PartyStatusCureAttr extends MoveEffectAttr {
|
|||||||
pokemon.resetStatus();
|
pokemon.resetStatus();
|
||||||
pokemon.updateInfo();
|
pokemon.updateInfo();
|
||||||
} else {
|
} else {
|
||||||
globalScene.unshiftPhase(new ShowAbilityPhase(pokemon.id, pokemon.getPassiveAbility()?.id === this.abilityCondition));
|
// TODO: Ability displays should be handled by the ability
|
||||||
|
globalScene.queueAbilityDisplay(pokemon, pokemon.getPassiveAbility()?.id === this.abilityCondition, true);
|
||||||
|
globalScene.queueAbilityDisplay(pokemon, pokemon.getPassiveAbility()?.id === this.abilityCondition, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,6 @@ import { TrainerType } from "#enums/trainer-type";
|
|||||||
import { Abilities } from "#enums/abilities";
|
import { Abilities } from "#enums/abilities";
|
||||||
import { SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "#app/data/pokemon-forms";
|
import { SpeciesFormChangeRevertWeatherFormTrigger, SpeciesFormChangeWeatherTrigger } from "#app/data/pokemon-forms";
|
||||||
import { CommonAnimPhase } from "#app/phases/common-anim-phase";
|
import { CommonAnimPhase } from "#app/phases/common-anim-phase";
|
||||||
import { ShowAbilityPhase } from "#app/phases/show-ability-phase";
|
|
||||||
import { WeatherType } from "#enums/weather-type";
|
import { WeatherType } from "#enums/weather-type";
|
||||||
import { FieldEffectModifier } from "#app/modifier/modifier";
|
import { FieldEffectModifier } from "#app/modifier/modifier";
|
||||||
|
|
||||||
@ -378,7 +377,6 @@ export class Arena {
|
|||||||
const isCherrimWithFlowerGift = p.hasAbility(Abilities.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM;
|
const isCherrimWithFlowerGift = p.hasAbility(Abilities.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM;
|
||||||
|
|
||||||
if (isCastformWithForecast || isCherrimWithFlowerGift) {
|
if (isCastformWithForecast || isCherrimWithFlowerGift) {
|
||||||
new ShowAbilityPhase(p.getBattlerIndex());
|
|
||||||
globalScene.triggerPokemonFormChange(p, SpeciesFormChangeWeatherTrigger);
|
globalScene.triggerPokemonFormChange(p, SpeciesFormChangeWeatherTrigger);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -395,7 +393,6 @@ export class Arena {
|
|||||||
p.hasAbility(Abilities.FLOWER_GIFT, false, true) && p.species.speciesId === Species.CHERRIM;
|
p.hasAbility(Abilities.FLOWER_GIFT, false, true) && p.species.speciesId === Species.CHERRIM;
|
||||||
|
|
||||||
if (isCastformWithForecast || isCherrimWithFlowerGift) {
|
if (isCastformWithForecast || isCherrimWithFlowerGift) {
|
||||||
new ShowAbilityPhase(p.getBattlerIndex());
|
|
||||||
return globalScene.triggerPokemonFormChange(p, SpeciesFormChangeRevertWeatherFormTrigger);
|
return globalScene.triggerPokemonFormChange(p, SpeciesFormChangeRevertWeatherFormTrigger);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -45,6 +45,8 @@ export class GameOverPhase extends BattlePhase {
|
|||||||
start() {
|
start() {
|
||||||
super.start();
|
super.start();
|
||||||
|
|
||||||
|
globalScene.hideAbilityBar();
|
||||||
|
|
||||||
// Failsafe if players somehow skip floor 200 in classic mode
|
// Failsafe if players somehow skip floor 200 in classic mode
|
||||||
if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex > 200) {
|
if (globalScene.gameMode.isClassic && globalScene.currentBattle.waveIndex > 200) {
|
||||||
this.isVictory = true;
|
this.isVictory = true;
|
||||||
|
@ -1,27 +1,12 @@
|
|||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import type { BattlerIndex } from "#app/battle";
|
import { Phase } from "#app/phase";
|
||||||
import { PokemonPhase } from "./pokemon-phase";
|
|
||||||
|
|
||||||
export class HideAbilityPhase extends PokemonPhase {
|
|
||||||
private passive: boolean;
|
|
||||||
|
|
||||||
constructor(battlerIndex: BattlerIndex, passive = false) {
|
|
||||||
super(battlerIndex);
|
|
||||||
|
|
||||||
this.passive = passive;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
export class HideAbilityPhase extends Phase {
|
||||||
start() {
|
start() {
|
||||||
super.start();
|
super.start();
|
||||||
|
|
||||||
const pokemon = this.getPokemon();
|
globalScene.abilityBar.hide().then(() => {
|
||||||
|
|
||||||
if (pokemon) {
|
|
||||||
globalScene.abilityBar.hide().then(() => {
|
|
||||||
this.end();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
this.end();
|
this.end();
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,7 @@ import type { Phase } from "#app/phase";
|
|||||||
import { ShowAbilityPhase } from "./show-ability-phase";
|
import { ShowAbilityPhase } from "./show-ability-phase";
|
||||||
import { MovePhase } from "./move-phase";
|
import { MovePhase } from "./move-phase";
|
||||||
import { MoveEndPhase } from "./move-end-phase";
|
import { MoveEndPhase } from "./move-end-phase";
|
||||||
|
import { HideAbilityPhase } from "#app/phases/hide-ability-phase";
|
||||||
|
|
||||||
export class MoveEffectPhase extends PokemonPhase {
|
export class MoveEffectPhase extends PokemonPhase {
|
||||||
public move: PokemonMove;
|
public move: PokemonMove;
|
||||||
@ -326,12 +327,14 @@ export class MoveEffectPhase extends PokemonPhase {
|
|||||||
? getMoveTargets(target, move.id).targets
|
? getMoveTargets(target, move.id).targets
|
||||||
: [user.getBattlerIndex()];
|
: [user.getBattlerIndex()];
|
||||||
if (!isReflecting) {
|
if (!isReflecting) {
|
||||||
|
// TODO: Ability displays should be handled by the ability
|
||||||
queuedPhases.push(
|
queuedPhases.push(
|
||||||
new ShowAbilityPhase(
|
new ShowAbilityPhase(
|
||||||
target.getBattlerIndex(),
|
target.getBattlerIndex(),
|
||||||
target.getPassiveAbility().hasAttr(ReflectStatusMoveAbAttr),
|
target.getPassiveAbility().hasAttr(ReflectStatusMoveAbAttr),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
queuedPhases.push(new HideAbilityPhase());
|
||||||
}
|
}
|
||||||
|
|
||||||
queuedPhases.push(
|
queuedPhases.push(
|
||||||
|
@ -42,7 +42,6 @@ import { CommonAnimPhase } from "#app/phases/common-anim-phase";
|
|||||||
import { MoveChargePhase } from "#app/phases/move-charge-phase";
|
import { MoveChargePhase } from "#app/phases/move-charge-phase";
|
||||||
import { MoveEffectPhase } from "#app/phases/move-effect-phase";
|
import { MoveEffectPhase } from "#app/phases/move-effect-phase";
|
||||||
import { MoveEndPhase } from "#app/phases/move-end-phase";
|
import { MoveEndPhase } from "#app/phases/move-end-phase";
|
||||||
import { ShowAbilityPhase } from "#app/phases/show-ability-phase";
|
|
||||||
import { NumberHolder } from "#app/utils";
|
import { NumberHolder } from "#app/utils";
|
||||||
import { Abilities } from "#enums/abilities";
|
import { Abilities } from "#enums/abilities";
|
||||||
import { ArenaTagType } from "#enums/arena-tag-type";
|
import { ArenaTagType } from "#enums/arena-tag-type";
|
||||||
@ -535,11 +534,16 @@ export class MovePhase extends BattlePhase {
|
|||||||
|
|
||||||
if (this.pokemon.hasAbilityWithAttr(BlockRedirectAbAttr)) {
|
if (this.pokemon.hasAbilityWithAttr(BlockRedirectAbAttr)) {
|
||||||
redirectTarget.value = currentTarget;
|
redirectTarget.value = currentTarget;
|
||||||
globalScene.unshiftPhase(
|
// TODO: Ability displays should be handled by the ability
|
||||||
new ShowAbilityPhase(
|
globalScene.queueAbilityDisplay(
|
||||||
this.pokemon.getBattlerIndex(),
|
this.pokemon,
|
||||||
this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr),
|
this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr),
|
||||||
),
|
true,
|
||||||
|
);
|
||||||
|
globalScene.queueAbilityDisplay(
|
||||||
|
this.pokemon,
|
||||||
|
this.pokemon.getPassiveAbility().hasAttr(BlockRedirectAbAttr),
|
||||||
|
false,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ export class ShowAbilityPhase extends PokemonPhase {
|
|||||||
|
|
||||||
// If the bar is already out, hide it before showing the new one
|
// If the bar is already out, hide it before showing the new one
|
||||||
if (globalScene.abilityBar.isVisible()) {
|
if (globalScene.abilityBar.isVisible()) {
|
||||||
globalScene.unshiftPhase(new HideAbilityPhase(this.battlerIndex, this.passive));
|
globalScene.unshiftPhase(new HideAbilityPhase());
|
||||||
globalScene.unshiftPhase(new ShowAbilityPhase(this.battlerIndex, this.passive));
|
globalScene.unshiftPhase(new ShowAbilityPhase(this.battlerIndex, this.passive));
|
||||||
return this.end();
|
return this.end();
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,8 @@ export class TurnEndPhase extends FieldPhase {
|
|||||||
globalScene.currentBattle.incrementTurn();
|
globalScene.currentBattle.incrementTurn();
|
||||||
globalScene.eventTarget.dispatchEvent(new TurnEndEvent(globalScene.currentBattle.turn));
|
globalScene.eventTarget.dispatchEvent(new TurnEndEvent(globalScene.currentBattle.turn));
|
||||||
|
|
||||||
|
globalScene.hideAbilityBar();
|
||||||
|
|
||||||
const handlePokemon = (pokemon: Pokemon) => {
|
const handlePokemon = (pokemon: Pokemon) => {
|
||||||
if (!pokemon.switchOutStatus) {
|
if (!pokemon.switchOutStatus) {
|
||||||
pokemon.lapseTags(BattlerTagLapseType.TURN_END);
|
pokemon.lapseTags(BattlerTagLapseType.TURN_END);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user