items_db.py
"""Items database with 120 items."""
from data_types import *
def build_item_database() -> Dict[int, Item]:
items = {}
def add(id, name, itype, desc, val, target=SkillTarget.SINGLE_ALLY,
elem=None, cures=None, buff=None, bdur=0):
items[id] = Item(id, name, itype, desc, val, target, elem, cures, buff, bdur)
SE = SkillTarget.SINGLE_ENEMY; SA = SkillTarget.SINGLE_ALLY
AA = SkillTarget.ALL_ALLIES; SF = SkillTarget.SELF
AE = SkillTarget.ALL_ENEMIES
# ── RECOVERY (1-30) ──────────────────────────────────────────────────
add(1, "Potion", ItemType.RECOVERY, "Restore 150 HP.", 150, SA)
add(2, "Hi-Potion", ItemType.RECOVERY, "Restore 500 HP.", 500, SA)
add(3, "Mega Potion", ItemType.RECOVERY, "Restore 1500 HP.", 1500, SA)
add(4, "X-Potion", ItemType.RECOVERY, "Restore 3000 HP.", 3000, SA)
add(5, "Elixir", ItemType.RECOVERY, "Restore 50% HP and MP.", -50, SA) # -50 = 50%
add(6, "Ether", ItemType.RECOVERY, "Restore 50 MP.", 50, SA)
add(7, "Hi-Ether", ItemType.RECOVERY, "Restore 150 MP.", 150, SA)
add(8, "Mega Ether", ItemType.RECOVERY, "Restore 300 MP.", 300, SA)
add(9, "Max Ether", ItemType.RECOVERY, "Fully restore MP.", 999, SA)
add(10, "Mega Elixir", ItemType.RECOVERY, "Restore full HP and MP.", -100, SA) # -100 = full
add(11, "Ultra Potion", ItemType.RECOVERY, "Restore 5000 HP.", 5000, SA)
add(12, "God Ether", ItemType.RECOVERY, "Fully restore all allies' MP.", 999, AA)
add(13, "Party Potion", ItemType.RECOVERY, "Restore 300 HP to all allies.", 300, AA)
add(14, "Party Hi-Potion",ItemType.RECOVERY,"Restore 800 HP to all allies.", 800, AA)
add(15, "Life Water", ItemType.RECOVERY, "Restore 200 HP.", 200, SA)
add(16, "Mana Water", ItemType.RECOVERY, "Restore 80 MP.", 80, SA)
add(17, "Tonic", ItemType.RECOVERY, "Restore 75 HP.", 75, SA)
add(18, "Herb", ItemType.RECOVERY, "Restore 50 HP.", 50, SA)
add(19, "Potion II", ItemType.RECOVERY, "Restore 250 HP.", 250, SA)
add(20, "Ether II", ItemType.RECOVERY, "Restore 100 MP.", 100, SA)
add(21, "Spring Water", ItemType.RECOVERY, "Restore 120 HP and 30 MP.", -21, SA) # special combined
add(22, "Phoenix Tears", ItemType.RECOVERY, "Restore 200 HP.", 200, SA)
add(23, "Soul Potion", ItemType.RECOVERY, "Restore 25% HP.", -25, SA)
add(24, "Omega Potion", ItemType.RECOVERY, "Restore 8000 HP.", 8000, SA)
add(25, "Blessed Water", ItemType.RECOVERY, "Restore 400 HP (Light element).", 400, SA, Element.LIGHT)
add(26, "Devil's Blood", ItemType.RECOVERY, "Restore 400 HP (Dark).", 400, SA, Element.DARK)
add(27, "Fire Extract", ItemType.RECOVERY, "Restore 200 HP, grant fire boost.", 200, SA, Element.FIRE)
add(28, "Ice Extract", ItemType.RECOVERY, "Restore 200 HP, grant ice boost.", 200, SA, Element.ICE)
add(29, "Thunder Extract",ItemType.RECOVERY,"Restore 200 HP, grant lightning.", 200, SA, Element.LIGHTNING)
add(30, "Wind Extract", ItemType.RECOVERY, "Restore 200 HP, grant wind boost.", 200, SA, Element.WIND)
# ── REVIVAL (31-40) ──────────────────────────────────────────────────
add(31, "Phoenix Feather",ItemType.REVIVAL, "Revive ally with 25% HP.", 25, SA)
add(32, "Revival Stone", ItemType.REVIVAL, "Revive ally with 50% HP.", 50, SA)
add(33, "Life Gem", ItemType.REVIVAL, "Revive ally with 75% HP.", 75, SA)
add(34, "Soul Crystal", ItemType.REVIVAL, "Revive ally with full HP.", 100, SA)
add(35, "Phoenix Down", ItemType.REVIVAL, "Revive ally with 10% HP.", 10, SA)
add(36, "Angel Wing", ItemType.REVIVAL, "Revive all fallen allies (25% HP).", 25, AA)
add(37, "Goddess Tear", ItemType.REVIVAL, "Revive all allies (50% HP).", 50, AA)
add(38, "Miracle Dust", ItemType.REVIVAL, "Revive ally with 30% HP.", 30, SA)
add(39, "Star Fragment", ItemType.REVIVAL, "Revive ally with 60% HP.", 60, SA)
add(40, "Last Hope", ItemType.REVIVAL, "Revive all allies (10% HP).", 10, AA)
# ── STATUS CURE (41-65) ──────────────────────────────────────────────
add(41, "Antidote", ItemType.STATUS_CURE, "Cure Poison.", 0, SA,
cures=[StatusEffectType.POISON, StatusEffectType.VENOM])
add(42, "Burn Cure", ItemType.STATUS_CURE, "Cure Burn.", 0, SA,
cures=[StatusEffectType.BURN])
add(43, "Paralyze Cure", ItemType.STATUS_CURE, "Cure Paralyze.", 0, SA,
cures=[StatusEffectType.PARALYZE])
add(44, "Sleep Cure", ItemType.STATUS_CURE, "Cure Sleep.", 0, SA,
cures=[StatusEffectType.SLEEP])
add(45, "Blind Cure", ItemType.STATUS_CURE, "Cure Blind.", 0, SA,
cures=[StatusEffectType.BLIND])
add(46, "Freeze Cure", ItemType.STATUS_CURE, "Cure Freeze.", 0, SA,
cures=[StatusEffectType.FREEZE])
add(47, "Stun Cure", ItemType.STATUS_CURE, "Cure Stun.", 0, SA,
cures=[StatusEffectType.STUN])
add(48, "Bleed Cure", ItemType.STATUS_CURE, "Cure Bleed.", 0, SA,
cures=[StatusEffectType.BLEED])
add(49, "Fear Cure", ItemType.STATUS_CURE, "Cure Fear.", 0, SA,
cures=[StatusEffectType.FEAR])
add(50, "Silence Cure", ItemType.STATUS_CURE, "Cure Silence.", 0, SA,
cures=[StatusEffectType.SILENCE])
add(51, "Confusion Cure",ItemType.STATUS_CURE, "Cure Confusion.", 0, SA,
cures=[StatusEffectType.CONFUSION])
add(52, "Charm Cure", ItemType.STATUS_CURE, "Cure Charm.", 0, SA,
cures=[StatusEffectType.CHARM])
add(53, "Petrify Cure", ItemType.STATUS_CURE, "Cure Petrify.", 0, SA,
cures=[StatusEffectType.PETRIFY])
add(54, "Curse Cure", ItemType.STATUS_CURE, "Cure Curse.", 0, SA,
cures=[StatusEffectType.CURSE, StatusEffectType.CURSE_MARK])
add(55, "Doom Stopper", ItemType.STATUS_CURE, "Remove Doom.", 0, SA,
cures=[StatusEffectType.DOOM])
add(56, "Panacea", ItemType.STATUS_CURE, "Cure all status ailments.", 0, SA,
cures=list(StatusEffectType))
add(57, "Party Panacea", ItemType.STATUS_CURE, "Cure all ailments for all.", 0, AA,
cures=list(StatusEffectType))
add(58, "Holy Water", ItemType.STATUS_CURE, "Cure Dark ailments.", 0, SA,
cures=[StatusEffectType.CURSE, StatusEffectType.CURSE_MARK, StatusEffectType.DOOM,
StatusEffectType.SOUL_DRAIN, StatusEffectType.BLOOD_LINK])
add(59, "Remedy", ItemType.STATUS_CURE, "Cure Poison/Burn/Bleed/Venom.", 0, SA,
cures=[StatusEffectType.POISON, StatusEffectType.BURN,
StatusEffectType.BLEED, StatusEffectType.VENOM])
add(60, "Seal Breaker", ItemType.STATUS_CURE, "Cure Seal effects.", 0, SA,
cures=[StatusEffectType.SKILL_SEAL, StatusEffectType.ITEM_SEAL,
StatusEffectType.SILENCE, StatusEffectType.HEAL_BLOCK])
add(61, "Speed Up", ItemType.STATUS_CURE, "Cure Speed Down.", 0, SA,
cures=[StatusEffectType.SPEED_DOWN])
add(62, "Clarity Potion",ItemType.STATUS_CURE, "Cure Sleep/Confusion/Charm.", 0, SA,
cures=[StatusEffectType.SLEEP, StatusEffectType.CONFUSION, StatusEffectType.CHARM])
add(63, "Iron Tonic", ItemType.STATUS_CURE, "Cure Defense Down.", 0, SA,
cures=[StatusEffectType.DEFENSE_DOWN, StatusEffectType.ATTACK_DOWN])
add(64, "Mana Restore", ItemType.STATUS_CURE, "Cure Mana Burn.", 0, SA,
cures=[StatusEffectType.MANA_BURN])
add(65, "Full Remedy", ItemType.STATUS_CURE, "Cure all stat debuffs.", 0, SA,
cures=[StatusEffectType.ATTACK_DOWN, StatusEffectType.DEFENSE_DOWN,
StatusEffectType.MAGIC_DOWN, StatusEffectType.SPEED_DOWN,
StatusEffectType.ACCURACY_DOWN, StatusEffectType.WEAKNESS_MARK])
# ── BUFF ITEMS (66-85) ───────────────────────────────────────────────
add(66, "Power Tonic", ItemType.BUFF, "Raise PATK by 50% for 3 turns.", 0, SA,
buff={"patk": 1.5}, bdur=3)
add(67, "Defense Tonic", ItemType.BUFF, "Raise PDEF by 50% for 3 turns.", 0, SA,
buff={"pdef": 1.5}, bdur=3)
add(68, "Magic Tonic", ItemType.BUFF, "Raise MATK by 50% for 3 turns.", 0, SA,
buff={"matk": 1.5}, bdur=3)
add(69, "Speed Tonic", ItemType.BUFF, "Raise SPD by 50% for 3 turns.", 0, SA,
buff={"spd": 1.5}, bdur=3)
add(70, "Guard Tonic", ItemType.BUFF, "Raise MDEF by 50% for 3 turns.", 0, SA,
buff={"mdef": 1.5}, bdur=3)
add(71, "Evasion Tonic", ItemType.BUFF, "Raise EVA by 30% for 3 turns.", 0, SA,
buff={"eva": 0.3}, bdur=3)
add(72, "Crit Tonic", ItemType.BUFF, "Raise CRIT by 30% for 3 turns.", 0, SA,
buff={"crit": 0.3}, bdur=3)
add(73, "Power Stone", ItemType.BUFF, "Raise PATK by 80% for 2 turns.", 0, SA,
buff={"patk": 1.8}, bdur=2)
add(74, "Magic Stone", ItemType.BUFF, "Raise MATK by 80% for 2 turns.", 0, SA,
buff={"matk": 1.8}, bdur=2)
add(75, "Shield Stone", ItemType.BUFF, "Raise PDEF/MDEF by 80% for 2 turns.", 0, SA,
buff={"pdef": 1.8, "mdef": 1.8}, bdur=2)
add(76, "Haste Potion", ItemType.BUFF, "Gain Haste for 3 turns.", 0, SA,
buff={"spd": 2.0}, bdur=3)
add(77, "Berserk Potion", ItemType.BUFF, "Raise PATK by 100%, lower PDEF.", 0, SA,
buff={"patk": 2.0, "pdef": 0.5}, bdur=3)
add(78, "Focus Stone", ItemType.BUFF, "Raise ACC and CRIT for 3 turns.", 0, SA,
buff={"acc": 1.5, "crit": 1.5}, bdur=3)
add(79, "Party Power", ItemType.BUFF, "Raise all allies' PATK by 30%.", 0, AA,
buff={"patk": 1.3}, bdur=3)
add(80, "Party Shield", ItemType.BUFF, "Raise all allies' DEF by 30%.", 0, AA,
buff={"pdef": 1.3, "mdef": 1.3}, bdur=3)
add(81, "War Banner", ItemType.BUFF, "Raise all allies' stats by 20%.", 0, AA,
buff={"patk":1.2,"matk":1.2,"pdef":1.2,"mdef":1.2,"spd":1.2}, bdur=3)
add(82, "Regen Potion", ItemType.BUFF, "Grant HP Regen for 5 turns.", 50, SA)
add(83, "Mana Potion", ItemType.BUFF, "Grant Mana Regen for 5 turns.", 20, SA)
add(84, "Luck Up", ItemType.BUFF, "Raise EVA, ACC, CRIT for 3 turns.", 0, SA,
buff={"eva":0.2,"acc":1.3,"crit":1.3}, bdur=3)
add(85, "Legend Stone", ItemType.BUFF, "Massively boost all stats for 2 turns.", 0, SA,
buff={"patk":2.0,"matk":2.0,"pdef":1.5,"mdef":1.5,"spd":1.5}, bdur=2)
# ── OFFENSIVE ITEMS (86-105) ─────────────────────────────────────────
add(86, "Fire Bomb", ItemType.OFFENSIVE, "Fire damage to one enemy.", 300, SE, Element.FIRE)
add(87, "Ice Bomb", ItemType.OFFENSIVE, "Ice damage to one enemy.", 300, SE, Element.ICE)
add(88, "Thunder Bomb", ItemType.OFFENSIVE, "Lightning damage to one enemy.", 300, SE, Element.LIGHTNING)
add(89, "Wind Bomb", ItemType.OFFENSIVE, "Wind damage to one enemy.", 300, SE, Element.WIND)
add(90, "Earth Bomb", ItemType.OFFENSIVE, "Earth damage to one enemy.", 300, SE, Element.EARTH)
add(91, "Dark Bomb", ItemType.OFFENSIVE, "Dark damage to one enemy.", 300, SE, Element.DARK)
add(92, "Holy Bomb", ItemType.OFFENSIVE, "Light damage to one enemy.", 300, SE, Element.LIGHT)
add(93, "Mega Fire Bomb", ItemType.OFFENSIVE, "Heavy fire damage to all.", 500, AE, Element.FIRE)
add(94, "Mega Ice Bomb", ItemType.OFFENSIVE, "Heavy ice damage to all.", 500, AE, Element.ICE)
add(95, "Mega Thunder Bomb",ItemType.OFFENSIVE,"Heavy lightning to all.", 500, AE, Element.LIGHTNING)
add(96, "Mega Wind Bomb", ItemType.OFFENSIVE, "Heavy wind damage to all.", 500, AE, Element.WIND)
add(97, "Mega Earth Bomb",ItemType.OFFENSIVE, "Heavy earth damage to all.", 500, AE, Element.EARTH)
add(98, "Chaos Bomb", ItemType.OFFENSIVE, "Massive damage to all enemies.", 800, AE)
add(99, "Poison Vial", ItemType.OFFENSIVE, "Inflict Poison on an enemy.", 0, SE,
cures=[]) # reuse cures field as apply-poison signal
add(100,"Sleep Powder", ItemType.OFFENSIVE, "Put an enemy to Sleep.", 0, SE)
add(101,"Stone Grenade", ItemType.OFFENSIVE, "Inflict Petrify (30%).", 0, SE)
add(102,"Silence Orb", ItemType.OFFENSIVE, "Inflict Silence on enemy.", 0, SE)
add(103,"Paralysis Dart", ItemType.OFFENSIVE, "Inflict Paralyze on enemy.", 0, SE)
add(104,"Doom Clock", ItemType.OFFENSIVE, "Inflict Doom (5 turns).", 0, SE)
add(105,"Ultimate Bomb", ItemType.OFFENSIVE, "Colossal damage to one enemy.", 2000, SE)
# ── ADVANCED / SPECIAL (106-120) ─────────────────────────────────────
add(106,"Ultimate Potion",ItemType.ADVANCED, "Restore 9999 HP.", 9999, SA)
add(107,"Ultima Elixir", ItemType.ADVANCED, "Fully restore HP/MP all allies.", -100, AA)
add(108,"Omega Elixir", ItemType.ADVANCED, "Restore all HP/MP + cure all.", -100, SA)
add(109,"God's Breath", ItemType.ADVANCED, "Raise all stats 100% for 3 turns.", 0, SA,
buff={"patk":2.0,"matk":2.0,"pdef":2.0,"mdef":2.0,"spd":2.0}, bdur=3)
add(110,"World Crystal", ItemType.ADVANCED, "Full restore + buff all allies.", -100, AA)
add(111,"Aether", ItemType.ADVANCED, "Restore 9999 MP to one ally.", 9999, SA)
add(112,"Time Crystal", ItemType.ADVANCED, "Grant Time Stop effect.", 0, SF)
add(113,"Philosopher's Stone",ItemType.ADVANCED,"Double all stats for 5 turns.", 0, SF,
buff={"patk":2.0,"matk":2.0,"pdef":2.0,"mdef":2.0,"spd":2.0,"eva":0.5}, bdur=5)
add(114,"War God's Pill", ItemType.ADVANCED, "PATK x3, DEF/2 for 2 turns.", 0, SF,
buff={"patk":3.0,"pdef":0.5,"mdef":0.5}, bdur=2)
add(115,"Sage's Tincture",ItemType.ADVANCED, "MATK x3 for 2 turns.", 0, SF,
buff={"matk":3.0}, bdur=2)
add(116,"Hero's Elixir", ItemType.ADVANCED, "Restore HP/MP + raise all stats.", 3000, SA,
buff={"patk":1.5,"matk":1.5,"pdef":1.5,"mdef":1.5,"spd":1.5}, bdur=3)
add(117,"Crystal Vial", ItemType.ADVANCED, "Cure all + 5000 HP.", 5000, SA)
add(118,"Dragon's Blood", ItemType.ADVANCED, "Restore 50% HP + grant Regen.", -50, SA,
buff={"pdef":1.5,"mdef":1.5}, bdur=3)
add(119,"Chaos Shard", ItemType.ADVANCED, "9999 damage to all enemies.", 9999, AE)
add(120,"Omnipotent Stone",ItemType.ADVANCED,"Restore full HP/MP + max all buffs.", -100, SA,
buff={"patk":3.0,"matk":3.0,"pdef":3.0,"mdef":3.0,"spd":3.0}, bdur=5)
return items
ITEM_DB: Dict[int, Item] = build_item_database()