mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-06-30 21:42:20 +02:00
* [Dev] Enable biome parsing of `pokemon.ts` * Apply unsafe fixes * Add + apply rule disallowing the use of the `integer` type alias * Fix typo in comment; remove unnecessary `!!` * Re-apply Biome after merge * Re-apply Biome "unsafe" fixes after merge * Fix import * Add comment to `getFusionIconAtlasKey` too
72 lines
2.7 KiB
TypeScript
72 lines
2.7 KiB
TypeScript
import { SwitchType } from "#enums/switch-type";
|
|
import { globalScene } from "#app/global-scene";
|
|
import type { PartyOption } from "#app/ui/party-ui-handler";
|
|
import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler";
|
|
import { UiMode } from "#enums/ui-mode";
|
|
import i18next from "i18next";
|
|
import { toDmgValue, isNullOrUndefined } from "#app/utils/common";
|
|
import { BattlePhase } from "#app/phases/battle-phase";
|
|
import { SwitchSummonPhase } from "#app/phases/switch-summon-phase";
|
|
import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase";
|
|
import type { PlayerPokemon } from "#app/field/pokemon";
|
|
|
|
/**
|
|
* Sets the Party UI and handles the effect of Revival Blessing
|
|
* when used by one of the player's Pokemon.
|
|
*/
|
|
export class RevivalBlessingPhase extends BattlePhase {
|
|
constructor(protected user: PlayerPokemon) {
|
|
super();
|
|
}
|
|
|
|
public override start(): void {
|
|
globalScene.ui.setMode(
|
|
UiMode.PARTY,
|
|
PartyUiMode.REVIVAL_BLESSING,
|
|
this.user.getFieldIndex(),
|
|
(slotIndex: number, _option: PartyOption) => {
|
|
if (slotIndex >= 0 && slotIndex < 6) {
|
|
const pokemon = globalScene.getPlayerParty()[slotIndex];
|
|
if (!pokemon || !pokemon.isFainted()) {
|
|
return this.end();
|
|
}
|
|
|
|
pokemon.resetTurnData();
|
|
pokemon.resetStatus(true, false, false, false);
|
|
pokemon.heal(Math.min(toDmgValue(0.5 * pokemon.getMaxHp()), pokemon.getMaxHp()));
|
|
globalScene.queueMessage(
|
|
i18next.t("moveTriggers:revivalBlessing", {
|
|
pokemonName: pokemon.name,
|
|
}),
|
|
0,
|
|
true,
|
|
);
|
|
|
|
const allyPokemon = this.user.getAlly();
|
|
if (
|
|
globalScene.currentBattle.double &&
|
|
globalScene.getPlayerParty().length > 1 &&
|
|
!isNullOrUndefined(allyPokemon)
|
|
) {
|
|
if (slotIndex <= 1) {
|
|
// Revived ally pokemon
|
|
globalScene.unshiftPhase(
|
|
new SwitchSummonPhase(SwitchType.SWITCH, pokemon.getFieldIndex(), slotIndex, false, true),
|
|
);
|
|
globalScene.unshiftPhase(new ToggleDoublePositionPhase(true));
|
|
} else if (allyPokemon.isFainted()) {
|
|
// Revived party pokemon, and ally pokemon is fainted
|
|
globalScene.unshiftPhase(
|
|
new SwitchSummonPhase(SwitchType.SWITCH, allyPokemon.getFieldIndex(), slotIndex, false, true),
|
|
);
|
|
globalScene.unshiftPhase(new ToggleDoublePositionPhase(true));
|
|
}
|
|
}
|
|
}
|
|
globalScene.ui.setMode(UiMode.MESSAGE).then(() => this.end());
|
|
},
|
|
PartyUiHandler.FilterFainted,
|
|
);
|
|
}
|
|
}
|