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 {
|
export class HeldItemRequirement extends EncounterPokemonRequirement {
|
||||||
requiredHeldItems: HeldItemId[] | HeldItemCategoryId[];
|
requiredHeldItems: (HeldItemId | HeldItemCategoryId)[];
|
||||||
minNumberOfPokemon: number;
|
minNumberOfPokemon: number;
|
||||||
invertQuery: boolean;
|
invertQuery: boolean;
|
||||||
requireTransferable: boolean;
|
requireTransferable: boolean;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
heldItem: HeldItemId | HeldItemId[] | HeldItemCategoryId | HeldItemCategoryId[],
|
heldItem: HeldItemId | HeldItemCategoryId | (HeldItemId | HeldItemCategoryId)[],
|
||||||
minNumberOfPokemon = 1,
|
minNumberOfPokemon = 1,
|
||||||
invertQuery = false,
|
invertQuery = false,
|
||||||
requireTransferable = true,
|
requireTransferable = true,
|
||||||
@ -830,8 +830,10 @@ export class HeldItemRequirement extends EncounterPokemonRequirement {
|
|||||||
if (!this.invertQuery) {
|
if (!this.invertQuery) {
|
||||||
return partyPokemon.filter(pokemon =>
|
return partyPokemon.filter(pokemon =>
|
||||||
this.requiredHeldItems.some(heldItem => {
|
this.requiredHeldItems.some(heldItem => {
|
||||||
(pokemon.heldItemManager.hasItem(heldItem) || pokemon.heldItemManager.hasItemCategory(heldItem)) &&
|
return (
|
||||||
(!this.requireTransferable || allHeldItems[heldItem].isTransferable);
|
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;
|
return (itemId & ITEM_CATEGORY_MASK) as HeldItemCategoryId;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isCategoryId(categoryId: HeldItemCategoryId): boolean {
|
export function isCategoryId(id: number): boolean {
|
||||||
return (categoryId & ITEM_CATEGORY_MASK) === categoryId;
|
return (id & ITEM_CATEGORY_MASK) === id && id in HeldItemCategoryId;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isItemInCategory(itemId: HeldItemId, category: HeldItemCategoryId): boolean {
|
export function isItemInCategory(itemId: HeldItemId, category: HeldItemCategoryId): boolean {
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
import { allHeldItems } from "#app/data/data-lists";
|
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 { FormChangeItem } from "#enums/form-change-item";
|
||||||
import {
|
import {
|
||||||
type HeldItemConfiguration,
|
type HeldItemConfiguration,
|
||||||
@ -89,12 +95,11 @@ export class PokemonItemManager {
|
|||||||
.map(k => k);
|
.map(k => k);
|
||||||
}
|
}
|
||||||
|
|
||||||
hasItem(itemType: HeldItemId): boolean {
|
hasItem(itemType: HeldItemId | HeldItemCategoryId): boolean {
|
||||||
return itemType in this.heldItems;
|
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 {
|
getStack(itemType: HeldItemId): number {
|
||||||
|
Loading…
Reference in New Issue
Block a user