mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-09 00:49:27 +02:00
HeldItemManager's .hasItem() now also works on categories
This commit is contained in:
parent
f2e9ea0e93
commit
849550808a
@ -800,13 +800,13 @@ export class CanFormChangeWithItemRequirement extends EncounterPokemonRequiremen
|
||||
}
|
||||
|
||||
export class HeldItemRequirement extends EncounterPokemonRequirement {
|
||||
requiredHeldItems: HeldItemId[] | HeldItemCategoryId[];
|
||||
requiredHeldItems: (HeldItemId | HeldItemCategoryId)[];
|
||||
minNumberOfPokemon: number;
|
||||
invertQuery: boolean;
|
||||
requireTransferable: boolean;
|
||||
|
||||
constructor(
|
||||
heldItem: HeldItemId | HeldItemId[] | HeldItemCategoryId | HeldItemCategoryId[],
|
||||
heldItem: HeldItemId | HeldItemCategoryId | (HeldItemId | HeldItemCategoryId)[],
|
||||
minNumberOfPokemon = 1,
|
||||
invertQuery = false,
|
||||
requireTransferable = true,
|
||||
@ -830,8 +830,10 @@ export class HeldItemRequirement extends EncounterPokemonRequirement {
|
||||
if (!this.invertQuery) {
|
||||
return partyPokemon.filter(pokemon =>
|
||||
this.requiredHeldItems.some(heldItem => {
|
||||
(pokemon.heldItemManager.hasItem(heldItem) || pokemon.heldItemManager.hasItemCategory(heldItem)) &&
|
||||
(!this.requireTransferable || allHeldItems[heldItem].isTransferable);
|
||||
return (
|
||||
pokemon.heldItemManager.hasItem(heldItem) &&
|
||||
(!this.requireTransferable || allHeldItems[heldItem].isTransferable)
|
||||
);
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
@ -128,8 +128,8 @@ export function getHeldItemCategory(itemId: HeldItemId): HeldItemCategoryId {
|
||||
return (itemId & ITEM_CATEGORY_MASK) as HeldItemCategoryId;
|
||||
}
|
||||
|
||||
export function isCategoryId(categoryId: HeldItemCategoryId): boolean {
|
||||
return (categoryId & ITEM_CATEGORY_MASK) === categoryId;
|
||||
export function isCategoryId(id: number): boolean {
|
||||
return (id & ITEM_CATEGORY_MASK) === id && id in HeldItemCategoryId;
|
||||
}
|
||||
|
||||
export function isItemInCategory(itemId: HeldItemId, category: HeldItemCategoryId): boolean {
|
||||
|
@ -1,5 +1,11 @@
|
||||
import { allHeldItems } from "#app/data/data-lists";
|
||||
import { isItemInCategory, isItemInRequested, type HeldItemCategoryId, type HeldItemId } from "#app/enums/held-item-id";
|
||||
import {
|
||||
isCategoryId,
|
||||
isItemInCategory,
|
||||
isItemInRequested,
|
||||
type HeldItemCategoryId,
|
||||
type HeldItemId,
|
||||
} from "#app/enums/held-item-id";
|
||||
import type { FormChangeItem } from "#enums/form-change-item";
|
||||
import {
|
||||
type HeldItemConfiguration,
|
||||
@ -89,14 +95,13 @@ export class PokemonItemManager {
|
||||
.map(k => k);
|
||||
}
|
||||
|
||||
hasItem(itemType: HeldItemId): boolean {
|
||||
hasItem(itemType: HeldItemId | HeldItemCategoryId): boolean {
|
||||
if (isCategoryId(itemType)) {
|
||||
return getTypedKeys(this.heldItems).some(id => isItemInCategory(id, itemType as HeldItemCategoryId));
|
||||
}
|
||||
return itemType in this.heldItems;
|
||||
}
|
||||
|
||||
hasItemCategory(categoryId: HeldItemCategoryId): boolean {
|
||||
return getTypedKeys(this.heldItems).some(id => isItemInCategory(id, categoryId));
|
||||
}
|
||||
|
||||
getStack(itemType: HeldItemId): number {
|
||||
const item = this.heldItems[itemType];
|
||||
return item ? item.stack : 0;
|
||||
|
Loading…
Reference in New Issue
Block a user