""" Healing Tools Database for Lemontropia Suite Medical tools, Restoration Chips, and FAPs with decay data. """ from decimal import Decimal from dataclasses import dataclass from typing import Optional, Dict, List @dataclass class HealingTool: """Represents a healing tool in Entropia Universe.""" name: str item_id: str heal_amount: Decimal # HP healed per use decay_pec: Decimal # Decay in PEC per heal professional_level: int = 0 # Required profession level (0 = no requirement) is_chip: bool = False # True if it's a restoration chip @property def economy(self) -> Decimal: """Calculate economy in hp/pec (higher is better).""" if self.decay_pec > 0: return self.heal_amount / self.decay_pec return Decimal('0') @property def cost_per_heal_ped(self) -> Decimal: """Calculate cost per heal in PED.""" return self.decay_pec / Decimal('100') # Healing Tools Database # Data from EntropiaWiki and community research # Format: name, item_id, heal_amount, decay_pec, prof_level, is_chip HEALING_TOOLS: List[HealingTool] = [ # === VIVO SERIES (Entry Level) === HealingTool("Vivo T10", "vivo_t10", Decimal("10"), Decimal("0.815"), 0, False), HealingTool("Vivo T15", "vivo_t15", Decimal("15"), Decimal("1.19"), 0, False), HealingTool("Vivo S10", "vivo_s10", Decimal("21"), Decimal("1.705"), 0, False), HealingTool("Vivo S15", "vivo_s15", Decimal("27"), Decimal("2.155"), 0, False), # === HE DOC SERIES (Mid Level) === HealingTool("Hedoc MM10", "hedoc_mm10", Decimal("44"), Decimal("2.09"), 0, False), HealingTool("Hedoc MM20", "hedoc_mm20", Decimal("52"), Decimal("2.48"), 0, False), HealingTool("Hedoc MM30", "hedoc_mm30", Decimal("64"), Decimal("3.04"), 0, False), HealingTool("Hedoc MK50", "hedoc_mk50", Decimal("75"), Decimal("3.55"), 0, False), HealingTool("Hedoc SK80", "hedoc_sk80", Decimal("120"), Decimal("5.65"), 0, False), # === EMT KIT SERIES === HealingTool("EMT Kit Ek-2350", "emt_2350", Decimal("35"), Decimal("8.75"), 0, False), # Low eco HealingTool("EMT Kit Ek-2600", "emt_2600", Decimal("52"), Decimal("2.60"), 0, False), # 20 hp/pec HealingTool("EMT Kit Ek-2600 Improved", "emt_2600_imp", Decimal("52"), Decimal("2.60"), 0, False), HealingTool("EMT Kit Ek-2350 Adjusted", "emt_2350_adj", Decimal("52"), Decimal("5.20"), 0, False), # === RESTORATION CHIPS (Mindforce) === # Requires Biotropic profession level HealingTool("Restoration Chip I", "resto_1", Decimal("15"), Decimal("1.2"), 1, True), HealingTool("Restoration Chip II", "resto_2", Decimal("25"), Decimal("1.9"), 2, True), HealingTool("Restoration Chip III", "resto_3", Decimal("35"), Decimal("2.6"), 3, True), HealingTool("Restoration Chip IV", "resto_4", Decimal("45"), Decimal("3.3"), 4, True), HealingTool("Restoration Chip IV (L)", "resto_4_l", Decimal("45"), Decimal("2.8"), 4, True), # Limited version HealingTool("Restoration Chip V", "resto_5", Decimal("55"), Decimal("4.0"), 5, True), HealingTool("Restoration Chip VI", "resto_6", Decimal("65"), Decimal("4.7"), 6, True), HealingTool("Restoration Chip VII", "resto_7", Decimal("75"), Decimal("5.4"), 7, True), HealingTool("Restoration Chip VIII", "resto_8", Decimal("85"), Decimal("6.1"), 8, True), HealingTool("Restoration Chip IX", "resto_9", Decimal("95"), Decimal("6.8"), 9, True), HealingTool("Restoration Chip X", "resto_10", Decimal("110"), Decimal("7.8"), 10, True), # Adjusted Restoration Chip (Popular mid-level) HealingTool("Adjusted Restoration Chip", "resto_adj", Decimal("60"), Decimal("2.88"), 5, True), # ~20.8 hp/pec # === SPECIAL/UNIQUE TOOLS === HealingTool("Refurbished H.E.A.R.T. Rank VI", "heart_vi", Decimal("108"), Decimal("6.0"), 0, False), # 18 hp/pec HealingTool("Herb Box", "herb_box", Decimal("19"), Decimal("1.89"), 0, False), # ~10 hp/pec HealingTool("Omegaton Fast Aid Pack", "fap_omega", Decimal("24"), Decimal("1.20"), 0, False), ] def get_healing_tool(name: str) -> Optional[HealingTool]: """Get a healing tool by name.""" for tool in HEALING_TOOLS: if tool.name.lower() == name.lower(): return tool return None def get_tools_by_economy(min_economy: Decimal = Decimal("0")) -> List[HealingTool]: """Get healing tools sorted by economy (best first).""" tools = [t for t in HEALING_TOOLS if t.economy >= min_economy] return sorted(tools, key=lambda x: x.economy, reverse=True) def get_tools_by_heal_amount(min_heal: Decimal = Decimal("0")) -> List[HealingTool]: """Get healing tools sorted by heal amount (highest first).""" tools = [t for t in HEALING_TOOLS if t.heal_amount >= min_heal] return sorted(tools, key=lambda x: x.heal_amount, reverse=True) def compare_healing_tools(tool_names: List[str]) -> List[tuple]: """Compare multiple healing tools. Returns list of tuples: (name, heal_amount, decay_pec, economy, cost_ped) """ results = [] for name in tool_names: tool = get_healing_tool(name) if tool: results.append(( tool.name, tool.heal_amount, tool.decay_pec, tool.economy, tool.cost_per_heal_ped )) # Sort by economy (best first) results.sort(key=lambda x: x[3], reverse=True) return results # Popular tool recommendations by level RECOMMENDED_TOOLS: Dict[str, str] = { "starter": "Vivo S10", # Everyone can use, decent economy "mid_level": "Adjusted Restoration Chip", # Popular mid-level choice "high_level": "Hedoc SK80", # High heal amount "best_economy": "EMT Kit Ek-2600", # 20 hp/pec like armor } if __name__ == "__main__": # Print comparison of popular tools print("Healing Tools Comparison:") print("-" * 80) print(f"{'Tool':<35} {'Heal':<8} {'Decay':<8} {'Eco':<8} {'Cost/PED':<12}") print("-" * 80) tools_to_compare = [ "Vivo S10", "Hedoc MM10", "Adjusted Restoration Chip", "EMT Kit Ek-2600", "Refurbished H.E.A.R.T. Rank VI" ] for name, heal, decay, eco, cost in compare_healing_tools(tools_to_compare): print(f"{name:<35} {heal:<8} {decay:<8.2f} {eco:<8.2f} {cost:<12.4f}") print("\n\nRecommended by Level:") for level, tool_name in RECOMMENDED_TOOLS.items(): tool = get_healing_tool(tool_name) if tool: print(f"{level:<15} → {tool_name} ({tool.economy:.2f} hp/pec)")