diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 34d26b3975c..98736b8020a 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -19,7 +19,12 @@ import { type Constructor, } from "#app/utils/common"; import { deepMergeSpriteData } from "#app/utils/data"; -import type { Modifier, ModifierPredicate, TurnHeldItemTransferModifier } from "./modifier/modifier"; +import type { + Modifier, + ModifierIdentityPredicate, + ModifierPredicate, + TurnHeldItemTransferModifier, +} from "./modifier/modifier"; import { ConsumableModifier, ConsumablePokemonModifier, @@ -3361,6 +3366,11 @@ export default class BattleScene extends SceneBase { return (isPlayer ? this.modifiers : this.enemyModifiers).filter(modifierFilter); } + findModifier( + modifierFilter: ModifierIdentityPredicate, + player?: boolean, + ): T | undefined; + findModifier(modifierFilter: ModifierPredicate, player?: boolean): PersistentModifier | undefined; /** * Find the first modifier that pass the `modifierFilter` function * @param modifierFilter The function used to filter a target's modifiers diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 2bebbcae90c..8c8cf777cb8 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -55,6 +55,7 @@ import { import { globalScene } from "#app/global-scene"; export type ModifierPredicate = (modifier: Modifier) => boolean; +export type ModifierIdentityPredicate = (modifier: Modifier) => modifier is T; const iconOverflowIndex = 24;