From 39b2d9865a00b4e9e7ca4a10e7a75bed683cdd77 Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Fri, 22 Aug 2025 16:52:44 +0200 Subject: [PATCH] [Beta][Bug][UI/UX] Fix broken candy upgrades (#6322) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Candy upgrades change permanent starter data again * Updating cost icon and passive bg in starter select after buying pokédex upgrades --- src/ui/starter-select-ui-handler.ts | 38 +++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index d3c5367dd2d..a8f8d9efe73 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -1823,9 +1823,13 @@ export class StarterSelectUiHandler extends MessageUiHandler { } } else { let starterContainer: StarterContainer; + // The temporary, duplicated starter data to show info const starterData = this.getSpeciesData(this.lastSpecies.speciesId).starterDataEntry; - // prepare persistent starter data to store changes + // The persistent starter data to apply e.g. candy upgrades + const persistentStarterData = globalScene.gameData.starterData[this.lastSpecies.speciesId]; + // The sanitized starter preferences let starterAttributes = this.starterPreferences[this.lastSpecies.speciesId]; + // The original starter preferences const originalStarterAttributes = this.originalStarterPreferences[this.lastSpecies.speciesId]; // this gets the correct pokemon cursor depending on whether you're in the starter screen or the party icons @@ -2189,9 +2193,11 @@ export class StarterSelectUiHandler extends MessageUiHandler { label: `×${passiveCost} ${i18next.t("starterSelectUiHandler:unlockPassive")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= passiveCost) { - starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED; + persistentStarterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED; + starterData.passiveAttr = persistentStarterData.passiveAttr; if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { - starterData.candyCount -= passiveCost; + persistentStarterData.candyCount -= passiveCost; + starterData.candyCount = persistentStarterData.candyCount; } this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); globalScene.gameData.saveSystem().then(success => { @@ -2206,9 +2212,7 @@ export class StarterSelectUiHandler extends MessageUiHandler { // update the passive background and icon/animation for available upgrade if (starterContainer) { this.updateCandyUpgradeDisplay(starterContainer); - starterContainer.starterPassiveBgs.setVisible( - !!globalScene.gameData.starterData[this.lastSpecies.speciesId].passiveAttr, - ); + starterContainer.starterPassiveBgs.setVisible(!!starterData.passiveAttr); } return true; } @@ -2229,9 +2233,11 @@ export class StarterSelectUiHandler extends MessageUiHandler { label: `×${reductionCost} ${i18next.t("starterSelectUiHandler:reduceCost")}`, handler: () => { if (Overrides.FREE_CANDY_UPGRADE_OVERRIDE || candyCount >= reductionCost) { - starterData.valueReduction++; + persistentStarterData.valueReduction++; + starterData.valueReduction = persistentStarterData.valueReduction; if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { - starterData.candyCount -= reductionCost; + persistentStarterData.candyCount -= reductionCost; + starterData.candyCount = persistentStarterData.candyCount; } this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); globalScene.gameData.saveSystem().then(success => { @@ -2277,7 +2283,8 @@ export class StarterSelectUiHandler extends MessageUiHandler { return false; } if (!Overrides.FREE_CANDY_UPGRADE_OVERRIDE) { - starterData.candyCount -= sameSpeciesEggCost; + persistentStarterData.candyCount -= sameSpeciesEggCost; + starterData.candyCount = persistentStarterData.candyCount; } this.pokemonCandyCountText.setText(`×${starterData.candyCount}`); @@ -2329,7 +2336,18 @@ export class StarterSelectUiHandler extends MessageUiHandler { form: starterAttributes.form, female: starterAttributes.female, }; - ui.setOverlayMode(UiMode.POKEDEX_PAGE, this.lastSpecies, attributes); + ui.setOverlayMode(UiMode.POKEDEX_PAGE, this.lastSpecies, attributes, null, null, () => { + if (this.lastSpecies) { + starterContainer = this.filteredStarterContainers[this.cursor]; + const persistentStarterData = globalScene.gameData.starterData[this.lastSpecies.speciesId]; + this.updateCandyUpgradeDisplay(starterContainer); + this.updateStarterValueLabel(starterContainer); + starterContainer.starterPassiveBgs.setVisible( + !!persistentStarterData.passiveAttr && !globalScene.gameMode.hasChallenge(Challenges.FRESH_START), + ); + this.setSpecies(this.lastSpecies); + } + }); }); return true; },