import { Stats } from './stats.types';
import { StatusEffect } from './combat.types';

export type ItemRarity = 'common' | 'uncommon' | 'rare' | 'epic' | 'legendary';
export type EquipmentSlot = 'weapon' | 'ring' | 'necklace';
export type ItemType = 'weapon' | 'armor' | 'consumable' | 'material' | 'key';

export interface ItemEffect {
    trigger: 'onUse' | 'onEquip' | 'onHit' | 'onKill';
    effect: StatusEffect;
    chance?: number; // Pourcentage de déclenchement
}

export interface Item {
    id: string;
    name: string;
    description: string;
    type: ItemType;
    rarity: ItemRarity;
    level: number;
    stats?: Partial<Stats>;
    effects?: ItemEffect[];
    price: number;
    stackable: boolean;
    maxStack?: number;
}

export interface Equipment extends Item {
    slot: EquipmentSlot;
    durability?: number;
    requirements?: {
        level?: number;
        stats?: Partial<Stats>;
    };
}

export interface LootTable {
    id: string;
    entries: LootEntry[];
    guaranteedDrops?: LootEntry[];
    bonusRolls?: {
        condition: string;
        rolls: number;
    }[];
}

export interface LootEntry {
    item: string; // ID de l'item
    weight: number; // Probabilité relative
    quantity: {
        min: number;
        max: number;
    };
    conditions?: {
        playerLevel?: number;
        dungeonLevel?: number;
        chance?: number;
    };
} 