feat: compute base item values by reversing active spell buffs

Extract spell effect mappings from Dictionaries.cs into spell_effects.json.
During item ingestion, compute_base_values() reverses active enchantment
effects to get true base stats:
- base_armor_level: armor without Impenetrability buffs
- base_max_damage: damage without Blood Drinker buffs
- base_attack_bonus: attack without Heart Seeker buffs
- base_melee_defense_bonus: defense without Defender buffs
- base_elemental_damage_vs_monsters: elemental without Spirit Drinker
- base_mana_conversion_bonus: mana conv without Hermetic Link

New columns in ItemCombatStats, exposed in search CTEs.
Frontend: Base Armor and Base Dmg columns (hidden by default, toggle on).
Requires ALTER TABLE migration before deploy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-04-09 12:31:39 +02:00
parent 77e5a544d1
commit c4856dc701
4 changed files with 141 additions and 0 deletions

View file

@ -125,6 +125,14 @@ class ItemCombatStats(Base):
gear_pk_damage_rating = Column(Integer)
gear_pk_damage_resist_rating = Column(Integer)
# Base values (with active spell buffs reversed)
base_armor_level = Column(Integer)
base_max_damage = Column(Integer)
base_attack_bonus = Column(Float)
base_melee_defense_bonus = Column(Float)
base_elemental_damage_vs_monsters = Column(Float)
base_mana_conversion_bonus = Column(Float)
class ItemRequirements(Base):
"""Wield requirements and skill prerequisites."""
__tablename__ = 'item_requirements'