MosswartOverlord/inventory-service/spell_effects.json
Erik c4856dc701 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>
2026-04-09 12:31:39 +02:00

63 lines
4.8 KiB
JSON

{
"_comment": "Spell effect mappings extracted from MosswartMassacre/Shared/Constants/Dictionaries.cs. Used to reverse-engineer base item values from buffed values.",
"int_effects": {
"_key_names": {"218103842": "MaxDamage", "28": "ArmorLevel"},
"1616": {"key": 218103842, "change": 20, "bonus": 0, "name": "Blood Drinker VI"},
"2096": {"key": 218103842, "change": 22, "bonus": 0, "name": "Infected Caress"},
"5183": {"key": 218103842, "change": 24, "bonus": 0, "name": "Incantation of Blood Drinker"},
"4395": {"key": 218103842, "change": 24, "bonus": 0, "name": "Incantation of Blood Drinker"},
"2598": {"key": 218103842, "change": 2, "bonus": 2, "name": "Minor Blood Thirst"},
"2586": {"key": 218103842, "change": 4, "bonus": 4, "name": "Major Blood Thirst"},
"4661": {"key": 218103842, "change": 7, "bonus": 7, "name": "Epic Blood Thirst"},
"6089": {"key": 218103842, "change": 10, "bonus": 10, "name": "Legendary Blood Thirst"},
"3688": {"key": 218103842, "change": 300, "bonus": 0, "name": "Prodigal Blood Drinker"},
"1486": {"key": 28, "change": 200, "bonus": 0, "name": "Impenetrability VI"},
"2108": {"key": 28, "change": 220, "bonus": 0, "name": "Brogard's Defiance"},
"4407": {"key": 28, "change": 240, "bonus": 0, "name": "Incantation of Impenetrability"},
"2604": {"key": 28, "change": 20, "bonus": 20, "name": "Minor Impenetrability"},
"2592": {"key": 28, "change": 40, "bonus": 40, "name": "Major Impenetrability"},
"4667": {"key": 28, "change": 60, "bonus": 60, "name": "Epic Impenetrability"},
"6095": {"key": 28, "change": 80, "bonus": 80, "name": "Legendary Impenetrability"}
},
"double_effects": {
"_key_names": {"152": "ElementalDamageVsMonsters", "167772172": "AttackBonus", "29": "MeleeDefenseBonus", "144": "ManaCBonus"},
"3258": {"key": 152, "change": 0.06, "bonus": 0, "name": "Spirit Drinker VI"},
"3259": {"key": 152, "change": 0.07, "bonus": 0, "name": "Infected Spirit Caress"},
"5182": {"key": 152, "change": 0.08, "bonus": 0, "name": "Incantation of Spirit Drinker"},
"4414": {"key": 152, "change": 0.08, "bonus": 0, "name": "Incantation of Spirit Drinker"},
"3251": {"key": 152, "change": 0.01, "bonus": 0.01, "name": "Minor Spirit Thirst"},
"3250": {"key": 152, "change": 0.03, "bonus": 0.03, "name": "Major Spirit Thirst"},
"4670": {"key": 152, "change": 0.05, "bonus": 0.05, "name": "Epic Spirit Thirst"},
"6098": {"key": 152, "change": 0.07, "bonus": 0.07, "name": "Legendary Spirit Thirst"},
"3735": {"key": 152, "change": 0.15, "bonus": 0, "name": "Prodigal Spirit Drinker"},
"1592": {"key": 167772172, "change": 0.15, "bonus": 0, "name": "Heart Seeker VI"},
"2106": {"key": 167772172, "change": 0.17, "bonus": 0, "name": "Elysa's Sight"},
"4405": {"key": 167772172, "change": 0.20, "bonus": 0, "name": "Incantation of Heart Seeker"},
"2603": {"key": 167772172, "change": 0.03, "bonus": 0.03, "name": "Minor Heart Thirst"},
"2591": {"key": 167772172, "change": 0.05, "bonus": 0.05, "name": "Major Heart Thirst"},
"4666": {"key": 167772172, "change": 0.07, "bonus": 0.07, "name": "Epic Heart Thirst"},
"6094": {"key": 167772172, "change": 0.09, "bonus": 0.09, "name": "Legendary Heart Thirst"},
"1605": {"key": 29, "change": 0.15, "bonus": 0, "name": "Defender VI"},
"2101": {"key": 29, "change": 0.17, "bonus": 0, "name": "Cragstone's Will"},
"4400": {"key": 29, "change": 0.20, "bonus": 0, "name": "Incantation of Defender"},
"2600": {"key": 29, "change": 0.03, "bonus": 0.03, "name": "Minor Defender"},
"3985": {"key": 29, "change": 0.04, "bonus": 0.04, "name": "Mukkir Sense"},
"2588": {"key": 29, "change": 0.05, "bonus": 0.05, "name": "Major Defender"},
"4663": {"key": 29, "change": 0.07, "bonus": 0.07, "name": "Epic Defender"},
"6091": {"key": 29, "change": 0.09, "bonus": 0.09, "name": "Legendary Defender"},
"3699": {"key": 29, "change": 0.25, "bonus": 0, "name": "Prodigal Defender"},
"1480": {"key": 144, "change": 1.60, "bonus": 0, "name": "Hermetic Link VI"},
"2117": {"key": 144, "change": 1.70, "bonus": 0, "name": "Mystic's Blessing"},
"4418": {"key": 144, "change": 1.80, "bonus": 0, "name": "Incantation of Hermetic Link"},
"3201": {"key": 144, "change": 1.05, "bonus": 1.05, "name": "Feeble Hermetic Link"},
"3199": {"key": 144, "change": 1.10, "bonus": 1.10, "name": "Minor Hermetic Link"},
"3202": {"key": 144, "change": 1.15, "bonus": 1.15, "name": "Moderate Hermetic Link"},
"3200": {"key": 144, "change": 1.20, "bonus": 1.20, "name": "Major Hermetic Link"},
"6086": {"key": 144, "change": 1.25, "bonus": 1.25, "name": "Epic Hermetic Link"},
"6087": {"key": 144, "change": 1.30, "bonus": 1.30, "name": "Legendary Hermetic Link"}
}
}