111 lines
2.8 KiB
TypeScript
111 lines
2.8 KiB
TypeScript
import type {AttributeVector, ItemAttributeResonance} from './attributes';
|
|
import type {TimedBuildBuff} from './build';
|
|
import {
|
|
type EquipmentSlotId,
|
|
type ItemRarity,
|
|
type ItemWorldAffinity,
|
|
WorldType,
|
|
} from './core';
|
|
import type {RuntimeItemMetadata} from './runtimeItem';
|
|
|
|
export interface InventoryItem {
|
|
id: string;
|
|
category: string;
|
|
name: string;
|
|
quantity: number;
|
|
rarity: ItemRarity;
|
|
tags: string[];
|
|
catalogId?: string;
|
|
iconSrc?: string;
|
|
description?: string;
|
|
worldAffinity?: ItemWorldAffinity;
|
|
equipmentSlotId?: EquipmentSlotId | null;
|
|
worldProfiles?: Partial<Record<WorldType, ItemWorldProfile>>;
|
|
statProfile?: ItemStatProfile | null;
|
|
useProfile?: ItemUseProfile | null;
|
|
buildProfile?: ItemBuildProfile | null;
|
|
value?: number;
|
|
attributeResonance?: ItemAttributeResonance | null;
|
|
runtimeMetadata?: RuntimeItemMetadata | null;
|
|
}
|
|
|
|
export interface MonsterLootEntry {
|
|
id: string;
|
|
item: InventoryItem;
|
|
dropRate: number;
|
|
}
|
|
|
|
export interface ItemCatalogEntry {
|
|
id: string;
|
|
sourcePath: string;
|
|
iconSrc: string;
|
|
name: string;
|
|
category: string;
|
|
rarity: ItemRarity;
|
|
tags: string[];
|
|
description: string;
|
|
worldAffinity: ItemWorldAffinity;
|
|
equipmentSlotId?: EquipmentSlotId | null;
|
|
worldProfiles?: Partial<Record<WorldType, ItemWorldProfile>>;
|
|
statProfile?: ItemStatProfile | null;
|
|
useProfile?: ItemUseProfile | null;
|
|
buildProfile?: ItemBuildProfile | null;
|
|
value?: number;
|
|
attributeResonance?: ItemAttributeResonance | null;
|
|
runtimeMetadata?: RuntimeItemMetadata | null;
|
|
}
|
|
|
|
export interface ItemCatalogOverride {
|
|
name?: string;
|
|
category?: string;
|
|
rarity?: ItemRarity;
|
|
tags?: string[];
|
|
description?: string;
|
|
worldAffinity?: ItemWorldAffinity;
|
|
equipmentSlotId?: EquipmentSlotId | null;
|
|
worldProfiles?: Partial<Record<WorldType, ItemWorldProfile>>;
|
|
statProfile?: ItemStatProfile | null;
|
|
useProfile?: ItemUseProfile | null;
|
|
buildProfile?: ItemBuildProfile | null;
|
|
value?: number;
|
|
attributeResonance?: ItemAttributeResonance | null;
|
|
runtimeMetadata?: RuntimeItemMetadata | null;
|
|
}
|
|
|
|
export interface ItemWorldProfile {
|
|
name: string;
|
|
description: string;
|
|
}
|
|
|
|
export interface ItemStatProfile {
|
|
maxHpBonus?: number;
|
|
maxManaBonus?: number;
|
|
outgoingDamageBonus?: number;
|
|
incomingDamageMultiplier?: number;
|
|
}
|
|
|
|
export interface ItemUseProfile {
|
|
hpRestore?: number;
|
|
manaRestore?: number;
|
|
cooldownReduction?: number;
|
|
buildBuffs?: TimedBuildBuff[];
|
|
}
|
|
|
|
export interface ItemBuildProfile {
|
|
role: string;
|
|
tags: string[];
|
|
setId?: string;
|
|
setName?: string;
|
|
pieceName?: string;
|
|
synergy?: string[];
|
|
craftTags?: string[];
|
|
forgeRank?: number;
|
|
resonanceVector?: AttributeVector;
|
|
}
|
|
|
|
export interface EquipmentLoadout {
|
|
weapon: InventoryItem | null;
|
|
armor: InventoryItem | null;
|
|
relic: InventoryItem | null;
|
|
}
|