From 51986f9b8a04bc26f3f6ca5d591cc9b2d79a3ad8 Mon Sep 17 00:00:00 2001 From: AJ Fontaine Date: Mon, 16 Jun 2025 15:09:44 -0400 Subject: [PATCH] Fix incorrect form key being checked for evo items --- src/data/balance/pokemon-evolutions.ts | 9 +++++++-- src/modifier/modifier-type.ts | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/data/balance/pokemon-evolutions.ts b/src/data/balance/pokemon-evolutions.ts index e97a51fed29..5dda1912e44 100644 --- a/src/data/balance/pokemon-evolutions.ts +++ b/src/data/balance/pokemon-evolutions.ts @@ -291,13 +291,18 @@ export class SpeciesFormEvolution { ); } + /** + * Checks if this evolution is item-based and any conditions for it are fulfilled + * @param pokemon {@linkcode Pokemon} who wants to evolve + * @param forFusion defaults to False. Whether this evolution is meant for the secondary fused mon. In that case, use their form key. + * @returns whether this evolution uses an item and can apply to the Pokemon + */ public isValidItemEvolution(pokemon: Pokemon, forFusion = false): boolean { return ( - // If an item is given, check if it's the right one !isNullOrUndefined(this.item) && pokemon.level >= this.level && // Check form key, using the fusion's form key if we're checking the fusion - (isNullOrUndefined(this.preFormKey) || (forFusion ? pokemon.getFormKey() : pokemon.getFusionFormKey()) === this.preFormKey) && + (isNullOrUndefined(this.preFormKey) || (forFusion ? pokemon.getFusionFormKey() : pokemon.getFormKey()) === this.preFormKey) && (isNullOrUndefined(this.condition) || this.condition.conditionsFulfilled(pokemon)) ); } diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index a22486210b0..988217559f4 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1603,12 +1603,12 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator { ) .flatMap(p => { const evolutions = pokemonEvolutions[p.fusionSpecies!.speciesId]; - return evolutions.filter(e => e.validate(p, true)); + return evolutions.filter(e => e.isValidItemEvolution(p, true)); }), ] .flat() .flatMap(e => e.evoItem) - .filter(i => (!!i && i > 50) === rare); + .filter(i => !!i && ((i > 50) === rare)); if (!evolutionItemPool.length) { return null;