mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-10-21 20:45:52 +02:00
* refactor: apply Modifiers type inference (pattern) Mirror from #1747 Co-authored-by: Dmitriy <kagno.dmitriy@gmail.com> * fix: PokemonBaseStatTotalModifier.apply having a `[1]` left * fix: HeldItemTransferModifier.apply missing `...args: unknown[]` * Replace relative imports with absolute imports in `modifier.ts` * chore: fix TS1016* error [*] A required parameter cannot follow an optional parameter. * chore: fix namings, types and docs suggested by @torranx * replace: `IntegerHolder` with `NumberHolder` & `integer` with `number` * chore: apply review suggestions by @torranx * chore: address review feedback from @torranx * update: imports in `modifier-types` * update `lapse` calls in modifier.ts * fix lapse call in `battle-end-phase` * minor adjustments in `modifier.ts` * fix `EnemyEndureChanceModifier.apply` types * fix `EnemyAttackStatusEffectChanceModifier.apply` types * fix `EnemyTurnHealModifier.apply` types * fix `EnemyStatusEffectHealChanceModifier.apply` types --------- Co-authored-by: Dmitriy <kagno.dmitriy@gmail.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
68 lines
2.3 KiB
TypeScript
68 lines
2.3 KiB
TypeScript
import { applyPostBattleAbAttrs, PostBattleAbAttr } from "#app/data/ability";
|
|
import { LapsingPersistentModifier, LapsingPokemonHeldItemModifier } from "#app/modifier/modifier";
|
|
import { BattlePhase } from "./battle-phase";
|
|
import { GameOverPhase } from "./game-over-phase";
|
|
import BattleScene from "#app/battle-scene";
|
|
|
|
export class BattleEndPhase extends BattlePhase {
|
|
/** If true, will increment battles won */
|
|
isVictory: boolean;
|
|
|
|
constructor(scene: BattleScene, isVictory: boolean = true) {
|
|
super(scene);
|
|
|
|
this.isVictory = isVictory;
|
|
}
|
|
|
|
start() {
|
|
super.start();
|
|
|
|
if (this.isVictory) {
|
|
this.scene.currentBattle.addBattleScore(this.scene);
|
|
|
|
this.scene.gameData.gameStats.battles++;
|
|
if (this.scene.currentBattle.trainer) {
|
|
this.scene.gameData.gameStats.trainersDefeated++;
|
|
}
|
|
if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex + 1 > this.scene.gameData.gameStats.highestEndlessWave) {
|
|
this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1;
|
|
}
|
|
}
|
|
|
|
// Endless graceful end
|
|
if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex >= 5850) {
|
|
this.scene.clearPhaseQueue();
|
|
this.scene.unshiftPhase(new GameOverPhase(this.scene, true));
|
|
}
|
|
|
|
for (const pokemon of this.scene.getField()) {
|
|
if (pokemon && pokemon.battleSummonData) {
|
|
pokemon.battleSummonData.waveTurnCount = 1;
|
|
}
|
|
}
|
|
|
|
for (const pokemon of this.scene.getParty().filter(p => p.isAllowedInBattle())) {
|
|
applyPostBattleAbAttrs(PostBattleAbAttr, pokemon);
|
|
}
|
|
|
|
if (this.scene.currentBattle.moneyScattered) {
|
|
this.scene.currentBattle.pickUpScatteredMoney(this.scene);
|
|
}
|
|
|
|
this.scene.clearEnemyHeldItemModifiers();
|
|
|
|
const lapsingModifiers = this.scene.findModifiers(m => m instanceof LapsingPersistentModifier || m instanceof LapsingPokemonHeldItemModifier) as (LapsingPersistentModifier | LapsingPokemonHeldItemModifier)[];
|
|
for (const m of lapsingModifiers) {
|
|
const args: any[] = [];
|
|
if (m instanceof LapsingPokemonHeldItemModifier) {
|
|
args.push(this.scene.getPokemonById(m.pokemonId));
|
|
}
|
|
if (!m.lapse(...args)) {
|
|
this.scene.removeModifier(m);
|
|
}
|
|
}
|
|
|
|
this.scene.updateModifiers().then(() => this.end());
|
|
}
|
|
}
|