mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-12-19 00:05:28 +01:00
73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
import type Pokemon from "#app/field/pokemon";
|
|
import type { HeldItemCategoryId, HeldItemId } from "#enums/held-item-id";
|
|
import type { RewardTier } from "#enums/reward-tier";
|
|
import type { Stat } from "#enums/stat";
|
|
|
|
export interface BASE_STAT_TOTAL_DATA {
|
|
statModifier: number;
|
|
}
|
|
|
|
export interface BASE_STAT_FLAT_DATA {
|
|
statModifier: number;
|
|
stats: Stat[];
|
|
}
|
|
|
|
export type HeldItemExtraData = BASE_STAT_TOTAL_DATA | BASE_STAT_FLAT_DATA;
|
|
|
|
export type HeldItemData = {
|
|
stack: number;
|
|
disabled?: boolean;
|
|
unstealable?: boolean;
|
|
cooldown?: number;
|
|
data?: HeldItemExtraData;
|
|
};
|
|
|
|
export type HeldItemDataMap = {
|
|
[key in HeldItemId]?: HeldItemData;
|
|
};
|
|
|
|
export type HeldItemSpecs = HeldItemData & {
|
|
id: HeldItemId;
|
|
};
|
|
|
|
export function isHeldItemSpecs(entry: any): entry is HeldItemSpecs {
|
|
return typeof entry.id === "number" && "stack" in entry;
|
|
}
|
|
|
|
export type HeldItemWeights = {
|
|
[key in HeldItemId]?: number;
|
|
};
|
|
|
|
export type HeldItemWeightFunc = (party: Pokemon[]) => number;
|
|
|
|
export type HeldItemCategoryEntry = HeldItemData & {
|
|
id: HeldItemCategoryId;
|
|
customWeights?: HeldItemWeights;
|
|
};
|
|
|
|
export function isHeldItemCategoryEntry(entry: any): entry is HeldItemCategoryEntry {
|
|
return isHeldItemCategoryEntry(entry.id) && "customWeights" in entry;
|
|
}
|
|
|
|
type HeldItemPoolEntry = {
|
|
entry: HeldItemId | HeldItemCategoryEntry | HeldItemSpecs;
|
|
weight: number | HeldItemWeightFunc;
|
|
};
|
|
|
|
export type HeldItemPool = HeldItemPoolEntry[];
|
|
|
|
export function isHeldItemPool(value: any): value is HeldItemPool {
|
|
return Array.isArray(value) && value.every(entry => "entry" in entry && "weight" in entry);
|
|
}
|
|
|
|
export type HeldItemTieredPool = {
|
|
[key in RewardTier]?: HeldItemPool;
|
|
};
|
|
|
|
type HeldItemConfigurationEntry = {
|
|
entry: HeldItemId | HeldItemCategoryEntry | HeldItemSpecs | HeldItemPool;
|
|
count?: number | (() => number);
|
|
};
|
|
|
|
export type HeldItemConfiguration = HeldItemConfigurationEntry[];
|