Special casing full fresh start

This commit is contained in:
Wlowscha 2025-08-17 00:40:59 +02:00
parent 98df023c11
commit 32891e3acf
No known key found for this signature in database
GPG Key ID: 3C8F1AD330565D04
2 changed files with 25 additions and 2 deletions

View File

@ -90,6 +90,19 @@ export class GameMode implements GameModeConfig {
return this.hasChallenge(Challenges.FRESH_START); return this.hasChallenge(Challenges.FRESH_START);
} }
/**
* Helper function to see if the game mode is using fresh start
* @returns true if a fresh start challenge is being applied
*/
isFullFreshStartChallenge(): boolean {
for (const challenge of this.challenges) {
if (challenge.id === Challenges.FRESH_START && challenge.value === 1) {
return true;
}
}
return false;
}
/** /**
* Helper function to get starting level for game mode. * Helper function to get starting level for game mode.
* @returns either: * @returns either:

View File

@ -389,6 +389,7 @@ export class CommandPhase extends FieldPhase {
const isClassicFinalBoss = globalScene.gameMode.isBattleClassicFinalBoss(globalScene.currentBattle.waveIndex); const isClassicFinalBoss = globalScene.gameMode.isBattleClassicFinalBoss(globalScene.currentBattle.waveIndex);
const isEndlessMinorBoss = globalScene.gameMode.isEndlessMinorBoss(globalScene.currentBattle.waveIndex); const isEndlessMinorBoss = globalScene.gameMode.isEndlessMinorBoss(globalScene.currentBattle.waveIndex);
const isFullFreshStart = globalScene.gameMode.isFullFreshStartChallenge();
const someUncaughtSpeciesOnField = globalScene const someUncaughtSpeciesOnField = globalScene
.getEnemyField() .getEnemyField()
@ -396,10 +397,19 @@ export class CommandPhase extends FieldPhase {
const missingMultipleStarters = const missingMultipleStarters =
gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarterCosts).length - 1; gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarterCosts).length - 1;
if (biomeType === BiomeId.END) { if (biomeType === BiomeId.END) {
if ((isClassic && !isClassicFinalBoss && someUncaughtSpeciesOnField) || (isEndless && !isEndlessMinorBoss)) { if (
(isClassic && !isClassicFinalBoss && someUncaughtSpeciesOnField) ||
(isFullFreshStart && !isClassicFinalBoss) ||
(isEndless && !isEndlessMinorBoss)
) {
// Uncatchable paradox mons in classic and endless // Uncatchable paradox mons in classic and endless
this.queueShowText("battle:noPokeballForce"); this.queueShowText("battle:noPokeballForce");
} else if ((isClassic && missingMultipleStarters) || (isEndless && isEndlessMinorBoss) || isDaily) { } else if (
(isClassic && isClassicFinalBoss && missingMultipleStarters) ||
(isFullFreshStart && isClassicFinalBoss) ||
(isEndless && isEndlessMinorBoss) ||
isDaily
) {
// Uncatchable final boss in classic and endless // Uncatchable final boss in classic and endless
this.queueShowText("battle:noPokeballForceFinalBoss"); this.queueShowText("battle:noPokeballForceFinalBoss");
} else { } else {