From 5fb160c5d6b2ecd40e9e94db74e2e24d02ac255c Mon Sep 17 00:00:00 2001 From: ImperialSympathizer Date: Thu, 17 Oct 2024 14:56:57 -0400 Subject: [PATCH] clean up tsdocs and fix pokemon hasAbility check --- src/battle-scene.ts | 4 ++-- .../mystery-encounter-requirements.ts | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index a6352bf0e25..8806c9f7a08 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -2363,8 +2363,8 @@ export default class BattleScene extends SceneBase { } /** - * Will search for a specific phase via filter, and remove the first result if a match is found. - * @param phaseFilter + * Will search for a specific phase in {@linkcode phaseQueuePrepend} via filter, and remove the first result if a match is found. + * @param phaseFilter filter function */ tryRemoveUnshiftedPhase(phaseFilter: (phase: Phase) => boolean): boolean { const phaseIndex = this.phaseQueuePrepend.findIndex(phaseFilter); diff --git a/src/data/mystery-encounters/mystery-encounter-requirements.ts b/src/data/mystery-encounters/mystery-encounter-requirements.ts index 418cc3cd95e..3ae07d9cd8c 100644 --- a/src/data/mystery-encounters/mystery-encounter-requirements.ts +++ b/src/data/mystery-encounters/mystery-encounter-requirements.ts @@ -15,6 +15,7 @@ import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { AttackTypeBoosterModifier } from "#app/modifier/modifier"; import { AttackTypeBoosterModifierType } from "#app/modifier/modifier-type"; import { SpeciesFormKey } from "#enums/species-form-key"; +import { Ability } from "#app/data/ability"; export interface EncounterRequirement { meetsRequirement(scene: BattleScene): boolean; // Boolean to see if a requirement is met @@ -587,18 +588,19 @@ export class AbilityRequirement extends EncounterPokemonRequirement { if (!this.invertQuery) { return partyPokemon.filter((pokemon) => (!this.excludeDisallowedPokemon || pokemon.isAllowedInBattle()) - && this.requiredAbilities.some((ability) => pokemon.getAbility().id === ability || pokemon.getPassiveAbility().id === ability)); + && this.requiredAbilities.some((ability) => pokemon.hasAbility(ability, false))); } else { // for an inverted query, we only want to get the pokemon that don't have ANY of the listed abilities return partyPokemon.filter((pokemon) => (!this.excludeDisallowedPokemon || pokemon.isAllowedInBattle()) - && this.requiredAbilities.filter((ability) => pokemon.getAbility().id === ability || pokemon.getPassiveAbility().id === ability).length === 0); + && this.requiredAbilities.filter((ability) => pokemon.hasAbility(ability, false)).length === 0); } } override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] { - if (pokemon?.getAbility().id && this.requiredAbilities.some(a => pokemon.getAbility().id === a)) { - return [ "ability", pokemon.getAbility().name ]; + const matchingAbility = this.requiredAbilities.find(a => pokemon?.hasAbility(a, false)); + if (!isNullOrUndefined(matchingAbility)) { + return [ "ability", new Ability(matchingAbility, 3).name ]; } return [ "ability", "" ]; }