"""Loot table system for mob drops.""" import random from dataclasses import dataclass from mudlib.thing import Thing @dataclass class LootEntry: """A single loot table entry.""" name: str chance: float # 0.0-1.0 min_count: int = 1 max_count: int = 1 description: str = "" def roll_loot(entries: list[LootEntry]) -> list[Thing]: """Roll a loot table and return the resulting Things.""" items: list[Thing] = [] for entry in entries: if random.random() < entry.chance: count = random.randint(entry.min_count, entry.max_count) for _ in range(count): items.append( Thing( name=entry.name, description=entry.description, portable=True, ) ) return items