Simplify Gimmighoul evolution

This commit is contained in:
AJ Fontaine 2025-04-29 10:52:56 -04:00
parent 446849636d
commit c645c42795
3 changed files with 15 additions and 27 deletions

View File

@ -10,7 +10,7 @@ import { Biome } from "#enums/biome";
import { Moves } from "#enums/moves"; import { Moves } from "#enums/moves";
import { Species } from "#enums/species"; import { Species } from "#enums/species";
import { TimeOfDay } from "#enums/time-of-day"; 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 { SpeciesFormKey } from "#enums/species-form-key";
import { speciesStarterCosts } from "./starters"; import { speciesStarterCosts } from "./starters";
import i18next from "i18next"; import i18next from "i18next";
@ -95,7 +95,7 @@ export enum EvoCondKey {
BIOME, BIOME,
TYROGUE, TYROGUE,
SHEDINJA, SHEDINJA,
EVO_COUNTER, EVO_TREASURE_TRACKER,
RANDOM_FORM, RANDOM_FORM,
SPECIES_CAUGHT, SPECIES_CAUGHT,
GENDER, GENDER,
@ -137,7 +137,7 @@ export class SpeciesEvolutionCondition {
(cond === EvoCondKey.MOVE_TYPE && isNullOrUndefined(this.data.moveType)) || (cond === EvoCondKey.MOVE_TYPE && isNullOrUndefined(this.data.moveType)) ||
(cond === EvoCondKey.PARTY_TYPE && isNullOrUndefined(this.data.partyType)) || (cond === EvoCondKey.PARTY_TYPE && isNullOrUndefined(this.data.partyType)) ||
(cond === EvoCondKey.GENDER && isNullOrUndefined(this.data.gender)) || (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.RANDOM_FORM && isNullOrUndefined(this.data.randomFormChance)) ||
(cond === EvoCondKey.GENDER && isNullOrUndefined(this.data.gender)) || (cond === EvoCondKey.GENDER && isNullOrUndefined(this.data.gender)) ||
(cond === EvoCondKey.SPECIES_CAUGHT && isNullOrUndefined(this.data.speciesCaught)) (cond === EvoCondKey.SPECIES_CAUGHT && isNullOrUndefined(this.data.speciesCaught))
@ -183,7 +183,7 @@ export class SpeciesEvolutionCondition {
case EvoCondKey.SHEDINJA: case EvoCondKey.SHEDINJA:
str.push(i18next.t("pokemonEvolutions:shedinja")); str.push(i18next.t("pokemonEvolutions:shedinja"));
break; break;
case EvoCondKey.EVO_COUNTER: case EvoCondKey.EVO_TREASURE_TRACKER:
str.push(i18next.t("pokemonEvolutions:treasure")); str.push(i18next.t("pokemonEvolutions:treasure"));
break; break;
case EvoCondKey.SPECIES_CAUGHT: case EvoCondKey.SPECIES_CAUGHT:
@ -209,14 +209,8 @@ export class SpeciesEvolutionCondition {
return pokemon.moveset.some(m => m.getMove().type === this.data.moveType); return pokemon.moveset.some(m => m.getMove().type === this.data.moveType);
case EvoCondKey.PARTY_TYPE: case EvoCondKey.PARTY_TYPE:
return !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(this.data.partyType!) > -1) return !!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(this.data.partyType!) > -1)
case EvoCondKey.EVO_COUNTER: case EvoCondKey.EVO_TREASURE_TRACKER:
return pokemon.evoCounter return pokemon.getHeldItems().some(m => m instanceof EvoTrackerModifier && m.getStackCount() >= this.data.evoCount!);
+ 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.GENDER: case EvoCondKey.GENDER:
return pokemon.gender === this.data.gender; return pokemon.gender === this.data.gender;
case EvoCondKey.SHEDINJA: // Shedinja cannot be evolved into directly 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) new SpeciesEvolution(Species.FROSMOTH, 1, null, {key: [EvoCondKey.FRIENDSHIP, EvoCondKey.TIME], friendship: 90, time: [TimeOfDay.DUSK, TimeOfDay.NIGHT]}, SpeciesWildEvolutionDelay.MEDIUM)
], ],
[Species.GIMMIGHOUL]: [ [Species.GIMMIGHOUL]: [
new SpeciesFormEvolution(Species.GHOLDENGO, "chest", "", 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_COUNTER, evoCount: 10}, SpeciesWildEvolutionDelay.VERY_LONG) new SpeciesFormEvolution(Species.GHOLDENGO, "roaming", "", 1, null, {key: EvoCondKey.EVO_TREASURE_TRACKER, evoCount: 10}, SpeciesWildEvolutionDelay.VERY_LONG)
] ]
}; };

View File

@ -1896,7 +1896,7 @@ export const modifierTypes = {
new PokemonHeldItemModifierType( new PokemonHeldItemModifierType(
"modifierType:ModifierType.EVOLUTION_TRACKER_GIMMIGHOUL", "modifierType:ModifierType.EVOLUTION_TRACKER_GIMMIGHOUL",
"relic_gold", "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: () => MEGA_BRACELET: () =>

View File

@ -895,24 +895,19 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier {
} }
getIconStackText(virtual?: boolean): Phaser.GameObjects.BitmapText | null { getIconStackText(virtual?: boolean): Phaser.GameObjects.BitmapText | null {
if (this.getMaxStackCount() === 1 || (virtual && !this.virtualStackCount)) {
return null;
}
const pokemon = globalScene.getPokemonById(this.pokemonId); const pokemon = globalScene.getPokemonById(this.pokemonId);
this.stackCount = pokemon this.virtualStackCount = pokemon
? pokemon.evoCounter + ? pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length +
pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length +
globalScene.findModifiers( globalScene.findModifiers(
m => m =>
m instanceof MoneyMultiplierModifier || m instanceof MoneyMultiplierModifier ||
m instanceof ExtraModifierModifier || m instanceof ExtraModifierModifier ||
m instanceof TempExtraModifierModifier, m instanceof TempExtraModifierModifier,
).length ).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; text.letterSpacing = -0.5;
if (this.getStackCount() >= this.required) { if (this.getStackCount() >= this.required) {
text.setTint(0xf89890); text.setTint(0xf89890);
@ -2905,11 +2900,10 @@ export class MoneyRewardModifier extends ConsumableModifier {
globalScene.getPlayerParty().map(p => { globalScene.getPlayerParty().map(p => {
if (p.species?.speciesId === Species.GIMMIGHOUL || p.fusionSpecies?.speciesId === Species.GIMMIGHOUL) { if (p.species?.speciesId === Species.GIMMIGHOUL || p.fusionSpecies?.speciesId === Species.GIMMIGHOUL) {
p.evoCounter const factor = Math.min(Math.floor(this.moneyMultiplier), 3);
? (p.evoCounter += Math.min(Math.floor(this.moneyMultiplier), 3))
: (p.evoCounter = Math.min(Math.floor(this.moneyMultiplier), 3));
const modifier = getModifierType(modifierTypes.EVOLUTION_TRACKER_GIMMIGHOUL).newModifier( const modifier = getModifierType(modifierTypes.EVOLUTION_TRACKER_GIMMIGHOUL).newModifier(
p, p,
factor
) as EvoTrackerModifier; ) as EvoTrackerModifier;
globalScene.addModifier(modifier); globalScene.addModifier(modifier);
} }