From c645c4279534b2037e8f47be9839cd3076aa297b Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Tue, 29 Apr 2025 10:52:56 -0400 Subject: [PATCH] Simplify Gimmighoul evolution --- src/data/balance/pokemon-evolutions.ts | 22 ++++++++-------------- src/modifier/modifier-type.ts | 2 +- src/modifier/modifier.ts | 18 ++++++------------ 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index 1e73cbdfa1e..f8fb5a06f44 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -10,7 +10,7 @@ import { Biome } from "#enums/biome"; import { Moves } from "#enums/moves"; import { Species } from "#enums/species"; import { TimeOfDay } from "#enums/time-of-day"; -import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifier, TempExtraModifierModifier } from "#app/modifier/modifier"; +import { DamageMoneyRewardModifier, EvoTrackerModifier, ExtraModifierModifier, MoneyMultiplierModifier, TempExtraModifierModifier } from "#app/modifier/modifier"; import { SpeciesFormKey } from "#enums/species-form-key"; import { speciesStarterCosts } from "./starters"; import i18next from "i18next"; @@ -95,7 +95,7 @@ export enum EvoCondKey { BIOME, TYROGUE, SHEDINJA, - EVO_COUNTER, + EVO_TREASURE_TRACKER, RANDOM_FORM, SPECIES_CAUGHT, GENDER, @@ -137,7 +137,7 @@ export class SpeciesEvolutionCondition { (cond === EvoCondKey.MOVE_TYPE && isNullOrUndefined(this.data.moveType)) || (cond === EvoCondKey.PARTY_TYPE && isNullOrUndefined(this.data.partyType)) || (cond === EvoCondKey.GENDER && isNullOrUndefined(this.data.gender)) || - (cond === EvoCondKey.EVO_COUNTER && isNullOrUndefined(this.data.evoCount)) || + (cond === EvoCondKey.EVO_TREASURE_TRACKER && isNullOrUndefined(this.data.evoCount)) || (cond === EvoCondKey.RANDOM_FORM && isNullOrUndefined(this.data.randomFormChance)) || (cond === EvoCondKey.GENDER && isNullOrUndefined(this.data.gender)) || (cond === EvoCondKey.SPECIES_CAUGHT && isNullOrUndefined(this.data.speciesCaught)) @@ -183,7 +183,7 @@ export class SpeciesEvolutionCondition { case EvoCondKey.SHEDINJA: str.push(i18next.t("pokemonEvolutions:shedinja")); break; - case EvoCondKey.EVO_COUNTER: + case EvoCondKey.EVO_TREASURE_TRACKER: str.push(i18next.t("pokemonEvolutions:treasure")); break; case EvoCondKey.SPECIES_CAUGHT: @@ -209,14 +209,8 @@ export class SpeciesEvolutionCondition { return pokemon.moveset.some(m => m.getMove().type === this.data.moveType); case EvoCondKey.PARTY_TYPE: return !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(this.data.partyType!) > -1) - case EvoCondKey.EVO_COUNTER: - return pokemon.evoCounter - + pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length - + globalScene.findModifiers(m => - m instanceof MoneyMultiplierModifier - || m instanceof ExtraModifierModifier - || m instanceof TempExtraModifierModifier - ).length >= this.data.evoCount!; + case EvoCondKey.EVO_TREASURE_TRACKER: + return pokemon.getHeldItems().some(m => m instanceof EvoTrackerModifier && m.getStackCount() >= this.data.evoCount!); case EvoCondKey.GENDER: return pokemon.gender === this.data.gender; case EvoCondKey.SHEDINJA: // Shedinja cannot be evolved into directly @@ -1865,8 +1859,8 @@ export const pokemonEvolutions: PokemonEvolutions = { new SpeciesEvolution(Species.FROSMOTH, 1, null, {key: [EvoCondKey.FRIENDSHIP, EvoCondKey.TIME], friendship: 90, time: [TimeOfDay.DUSK, TimeOfDay.NIGHT]}, SpeciesWildEvolutionDelay.MEDIUM) ], [Species.GIMMIGHOUL]: [ - new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, {key: EvoCondKey.EVO_COUNTER, evoCount: 10}, SpeciesWildEvolutionDelay.VERY_LONG), - new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, {key: EvoCondKey.EVO_COUNTER, evoCount: 10}, SpeciesWildEvolutionDelay.VERY_LONG) + new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 1, null, {key: EvoCondKey.EVO_TREASURE_TRACKER, evoCount: 10}, SpeciesWildEvolutionDelay.VERY_LONG), + new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, {key: EvoCondKey.EVO_TREASURE_TRACKER, evoCount: 10}, SpeciesWildEvolutionDelay.VERY_LONG) ] }; diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index be34bf1f0b2..44371f94027 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1896,7 +1896,7 @@ export const modifierTypes = { new PokemonHeldItemModifierType( "modifierType:ModifierType.EVOLUTION_TRACKER_GIMMIGHOUL", "relic_gold", - (type, args) => new EvoTrackerModifier(type, (args[0] as Pokemon).id, Species.GIMMIGHOUL, 10), + (type, args) => new EvoTrackerModifier(type, (args[0] as Pokemon).id, Species.GIMMIGHOUL, 10, (args[1] as number ?? 1)), ), MEGA_BRACELET: () => diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index ec324192ed8..a5254e93c89 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -895,24 +895,19 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier { } getIconStackText(virtual?: boolean): Phaser.GameObjects.BitmapText | null { - if (this.getMaxStackCount() === 1 || (virtual && !this.virtualStackCount)) { - return null; - } - const pokemon = globalScene.getPokemonById(this.pokemonId); - this.stackCount = pokemon - ? pokemon.evoCounter + - pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length + + this.virtualStackCount = pokemon + ? pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length + globalScene.findModifiers( m => m instanceof MoneyMultiplierModifier || m instanceof ExtraModifierModifier || m instanceof TempExtraModifierModifier, ).length - : this.stackCount; + : 0; - const text = globalScene.add.bitmapText(10, 15, "item-count", this.stackCount.toString(), 11); + const text = globalScene.add.bitmapText(10, 15, "item-count", this.getStackCount().toString(), 11); text.letterSpacing = -0.5; if (this.getStackCount() >= this.required) { text.setTint(0xf89890); @@ -2905,11 +2900,10 @@ export class MoneyRewardModifier extends ConsumableModifier { globalScene.getPlayerParty().map(p => { if (p.species?.speciesId === Species.GIMMIGHOUL || p.fusionSpecies?.speciesId === Species.GIMMIGHOUL) { - p.evoCounter - ? (p.evoCounter += Math.min(Math.floor(this.moneyMultiplier), 3)) - : (p.evoCounter = Math.min(Math.floor(this.moneyMultiplier), 3)); + const factor = Math.min(Math.floor(this.moneyMultiplier), 3); const modifier = getModifierType(modifierTypes.EVOLUTION_TRACKER_GIMMIGHOUL).newModifier( p, + factor ) as EvoTrackerModifier; globalScene.addModifier(modifier); }