import { Effect, EffectTier, StatModifier } from '../Effects/types'; import { Stance } from '../Combat/types'; import { CombatResources } from '../Cards/types'; export type ItemCategory = 'equipment' | 'consumable' | 'material' | 'quest-item'; export interface BaseItem { id: string; name: string; description: string; category: ItemCategory; } export type EquipmentSlot = 'weapon' | 'armor' | 'accessory' | 'head' | 'body' | 'hands' | 'feet'; export type ItemRarity = 'common' | 'uncommon' | 'rare' | 'unique'; export interface RolledModifier { modId: string; value: number; } export interface EquipmentProcTrigger { effectId: string; target: 'self' | 'opponent'; baseChance: number; tier: EffectTier; intensityOverride?: number; durationOverride?: number; fumbleEffectId?: string; } export interface ResourceGenerationBonus { trigger: 'hit' | 'miss' | 'defend' | 'any'; resourceType: keyof CombatResources; bonus: number; } export interface ResourceInteraction { combatStartTokens?: Partial; generationBonus?: ResourceGenerationBonus[]; } export interface Equipment extends BaseItem { category: 'equipment'; slot: EquipmentSlot; rarity: ItemRarity; requiredLevel: number; rolledMods?: RolledModifier[]; statModifiers?: StatModifier[]; passiveEffects?: string[]; onHitEffects?: EquipmentProcTrigger[]; onDefendEffects?: EquipmentProcTrigger[]; critStyle?: 'double' | 'pierce'; resourceInteraction?: ResourceInteraction; prefixId?: string; suffixId?: string; prefixName?: string; suffixName?: string; } export interface EquipmentTemplate { id: string; name: string; description: string; slot: EquipmentSlot; requiredLevel: number; baseStatModifiers?: StatModifier[]; addedIn?: string; tags?: string[]; prefixId?: string; suffixId?: string; } export interface UniqueItemTemplate extends EquipmentTemplate { fixedModIds: [string, string, string]; setMembership?: string; } export interface Consumable extends BaseItem { category: 'consumable'; quantity: number; effectId?: string; inlineEffect?: Effect; healAmount?: number; resourceGrant?: Partial; intensityOverride?: number; durationOverride?: number; addedIn?: string; tags?: string[]; } export interface Material extends BaseItem { category: 'material'; quantity: number; } export interface QuestItem extends BaseItem { category: 'quest-item'; questId: string; } export type Item = Equipment | Consumable | Material | QuestItem; export type { Stance }; export declare function isEquipment(item: Item): item is Equipment; export declare function isConsumable(item: Item): item is Consumable; export declare function isMaterial(item: Item): item is Material; export declare function isQuestItem(item: Item): item is QuestItem; //# sourceMappingURL=types.d.ts.map