From 0cf75d5324af23496877657f190b8d232bde42d5 Mon Sep 17 00:00:00 2001 From: 6d486f49 Date: Mon, 25 May 2026 16:47:06 -0400 Subject: [PATCH] Refactor Magic Materials data for improved readability and maintainability --- AOW4/Data/MagicMaterialsData.cs | 281 ++++++++++++++++++++++++++------ 1 file changed, 234 insertions(+), 47 deletions(-) diff --git a/AOW4/Data/MagicMaterialsData.cs b/AOW4/Data/MagicMaterialsData.cs index 6ae1a03..3559ce8 100644 --- a/AOW4/Data/MagicMaterialsData.cs +++ b/AOW4/Data/MagicMaterialsData.cs @@ -1,47 +1,102 @@ -using System.Collections.Generic; - namespace AOW4.Data; public static class MagicMaterialsData { public static readonly IReadOnlyList RawData = new List { - new MagicMaterial + new() { Category = MagicMaterialCategory.Ore, Name = "Arcanum Ore", - Description = "Desolate, Cave Underground and Desolate Underground only. Collection effect: Rings of Binding.", + Description = + "Desolate, Cave Underground and Desolate Underground only. Collection effect: Rings of Binding.", IncreaseProduction = 10, IncreaseMana = 10, GlobalBonus = "-25% Hurry Recruitment Cost", - InfusionEffects1 = "Inflict Sundered Defense\nPower Cleave\nSupport - Bolstered Defense\nReinforced\n+2 Defense\nBolstering Defense\nJuggernaut\nDemolisher", - InfusionEffects2 = "Construct Slayer\nDragon Slayer\nInflict Immobilized\nPush Back\nDisplace and Replace\n+3 Defense\nSiege Master" + InfusionEffects1 = """ + Inflict Sundered Defense + Power Cleave + Support - Bolstered Defense + Reinforced + +2 Defense + Bolstering Defense + Juggernaut + Demolisher + """, + InfusionEffects2 = """ + Construct Slayer + Dragon Slayer + Inflict Immobilized + Push Back + Displace and Replace + +3 Defense + Siege Master + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.Ore, Name = "Focus Crystals", - Description = "Desolate, Cave Underground and Desolate Underground only. Collection effect: Rings of Binding.", + Description = + "Desolate, Cave Underground and Desolate Underground only. Collection effect: Rings of Binding.", IncreaseGold = 10, IncreaseKnowledge = 10, GlobalBonus = "+10% Unit Experience Gain", - InfusionEffects1 = "Retaliator +50%\n+1 Range\nInflict Marked\nDamage Reflection 30%\n+20% Accuracy\nLightning Strike", - InfusionEffects2 = "Retaliator +100%\nElemental Slayer\nInflict Stunned\nHyper-Awareness\n+30% Accuracy\nInversion", - InfusionEffects3 = "Area Damage - Line\nDamage Reflection 40%" + InfusionEffects1 = """ + Retaliator +50% + +1 Range + Inflict Marked + Damage Reflection 30% + +20% Accuracy + Lightning Strike + """, + InfusionEffects2 = """ + Retaliator +100% + Elemental Slayer + Inflict Stunned + Hyper-Awareness + +30% Accuracy + Inversion + """, + InfusionEffects3 = """ + Area Damage - Line + Damage Reflection 40% + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.Ore, Name = "Fireforge Stone", - Description = "Desolate, Cave Underground and Desolate Underground only. Collection effect: Rings of Binding.", + Description = + "Desolate, Cave Underground and Desolate Underground only. Collection effect: Rings of Binding.", IncreaseProduction = 20, DecreaseDraftCostPercent = 20, GlobalBonus = "-20% Unit Draft Cost", - InfusionEffects1 = "Fire Damage\n+20% Critical Damage\nInflict Burning\nSupport - Strengthened\nLesser Fire Shield\n+2 Fire Resistance\nBerserker's Rage", - InfusionEffects2 = "Arcfire Damage\n+40% Critical Damage\nPlant Slayer\nGreater Fire Shield\n+4 Fire Resistance\nIgnore 4 Status Resistance", - InfusionEffects3 = "Area Damage - Blast\nInflict Insanity\nConsume Chaos\n+6 Fire Resistance" + InfusionEffects1 = """ + Fire Damage + +20% Critical Damage + Inflict Burning + Support - Strengthened + Lesser Fire Shield + +2 Fire Resistance + Berserker's Rage + """, + InfusionEffects2 = """ + Arcfire Damage + +40% Critical Damage + Plant Slayer + Greater Fire Shield + +4 Fire Resistance + Ignore 4 Status Resistance + """, + InfusionEffects3 = """ + Area Damage - Blast + Inflict Insanity + Consume Chaos + +6 Fire Resistance + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.SunlessOre, Name = "Blood Glass", @@ -49,9 +104,13 @@ public static class MagicMaterialsData IncreaseDraft = 20, IncreaseHPRegen = 5, GlobalBonus = "+5 HP regeneration (on the world map)", - InfusionEffects1 = "Greater Inflict Bleed\nLifedrinker\nBlood Sigil" + InfusionEffects1 = """ + Greater Inflict Bleed + Lifedrinker + Blood Sigil + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.Liquid, Name = "Archon Blood", @@ -59,11 +118,34 @@ public static class MagicMaterialsData IncreaseMana = 20, IncreaseCombatCastingPoints = 15, GlobalBonus = "+15 Combat Casting Points", - InfusionEffects1 = "Frost Damage\nInfecting\nAssassinate\nLife Steal\nLesser Frost Shield\n+10 Hit Points\n+2 Frost Resistance\nVicious Killer\nFlanker\nRaise Undead", - InfusionEffects2 = "Death Damage\nInflict Diseased\n+15 Hit Points\n+4 Frost Resistance\nBolstering Regeneration\nUndying", - InfusionEffects3 = "Inflict Decaying\nGravecall\nGreater Frost Shield\n+6 Frost Resistance" + InfusionEffects1 = """ + Frost Damage + Infecting + Assassinate + Life Steal + Lesser Frost Shield + +10 Hit Points + +2 Frost Resistance + Vicious Killer + Flanker + Raise Undead + """, + InfusionEffects2 = """ + Death Damage + Inflict Diseased + +15 Hit Points + +4 Frost Resistance + Bolstering Regeneration + Undying + """, + InfusionEffects3 = """ + Inflict Decaying + Gravecall + Greater Frost Shield + +6 Frost Resistance + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.Liquid, Name = "Astral Dew", @@ -72,11 +154,31 @@ public static class MagicMaterialsData IncreaseKnowledge = 10, IncreaseWorldCastingPoints = 15, GlobalBonus = "+15 World Map Casting Points", - InfusionEffects1 = "Lightning Damage\nInflict Status Vulnerability\nInflict Sundered Resistance\nSupport - Bolstered Resistance\nLesser Lightning Shield\nWarded\n+2 Lightning Resistance\nSlip Away\nCasting Points +20", - InfusionEffects2 = "Magic Origin Slayer\nInflict Frozen\nGreater Lightning Shield\n+4 Lightning Resistance", - InfusionEffects3 = "Static Shield\n+6 Lightning Resistance\nPass Through\nAstral Membrane" + InfusionEffects1 = """ + Lightning Damage + Inflict Status Vulnerability + Inflict Sundered Resistance + Support - Bolstered Resistance + Lesser Lightning Shield + Warded + +2 Lightning Resistance + Slip Away + Casting Points +20 + """, + InfusionEffects2 = """ + Magic Origin Slayer + Inflict Frozen + Greater Lightning Shield + +4 Lightning Resistance + """, + InfusionEffects3 = """ + Static Shield + +6 Lightning Resistance + Pass Through + Astral Membrane + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.Liquid, Name = "Tranquility Pool", @@ -84,11 +186,33 @@ public static class MagicMaterialsData IncreaseKnowledge = 20, DecreaseKnowledgeResearchCostPercent = 10, GlobalBonus = "-10% Knowledge research cost for spells", - InfusionEffects1 = "Inflict Slowed\nInflict Weakened\nInflict Wet\nSupport - Status Protection\nLesser Spirit Shield\n+2 Resistance\n+2 Status Resistance\nAttunement: Star Blades\nBolstering Resistance\nSlippery\nHindering Blizzard", - InfusionEffects2 = "Celestial Slayer\nUndead Slayer\n+3 Resistance\n+3 Status Resistance\nAttunement: Fortune", - InfusionEffects3 = "Area Damage - Cascade\nStatus Effect Immunity\nResurrection" + InfusionEffects1 = """ + Inflict Slowed + Inflict Weakened + Inflict Wet + Support - Status Protection + Lesser Spirit Shield + +2 Resistance + +2 Status Resistance + Attunement: Star Blades + Bolstering Resistance + Slippery + Hindering Blizzard + """, + InfusionEffects2 = """ + Celestial Slayer + Undead Slayer + +3 Resistance + +3 Status Resistance + Attunement: Fortune + """, + InfusionEffects3 = """ + Area Damage - Cascade + Status Effect Immunity + Resurrection + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.Plant, Name = "Haste Berries", @@ -96,11 +220,29 @@ public static class MagicMaterialsData IncreaseDraft = 20, DecreaseTurnsTakenToFoundAbsorbMigrateCities = 2, GlobalBonus = "-2 turns to found, absorb or migrate cities", - InfusionEffects1 = "Frenzy\nInflict Distracted\nSwift\nWind Barrier\nConjure Animal", - InfusionEffects2 = "Extra Retaliation\nGiant Slayer\nInflict Blinded\nWhirlwind\nDefensive Masters\nVery Fast Movement\nKilling Momentum\nAnimate Flora", - InfusionEffects3 = "Area Damage - Chain\nPolymorph" + InfusionEffects1 = """ + Frenzy + Inflict Distracted + Swift + Wind Barrier + Conjure Animal + """, + InfusionEffects2 = """ + Extra Retaliation + Giant Slayer + Inflict Blinded + Whirlwind + Defensive Masters + Very Fast Movement + Killing Momentum + Animate Flora + """, + InfusionEffects3 = """ + Area Damage - Chain + Polymorph + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.Plant, Name = "Silvertongue Fruit", @@ -109,11 +251,33 @@ public static class MagicMaterialsData IncreaseDraft = 10, IncreaseAllegianceFromWhisperingStones = 1, GlobalBonus = "+1 Allegiance from Whispering Stones", - InfusionEffects1 = "Blight Damage\nInflict Condemned\nInflict Poisoned\nSupport - Regeneration\nLesser Blight Shield\n+2 Blight Resistance\nInspiring Killer\nUniversal Camouflage\nArmy Trainer\nSummon Spider", - InfusionEffects2 = "Hero Slayer\nInflict Despairing\nInflict Taunted\nGreater Blight Shield\n+4 Blight Resistance\nArmy Maintenance", - InfusionEffects3 = "+6 Blight Resistance\nDomination\nSummon Spider Monarch" + InfusionEffects1 = """ + Blight Damage + Inflict Condemned + Inflict Poisoned + Support - Regeneration + Lesser Blight Shield + +2 Blight Resistance + Inspiring Killer + Universal Camouflage + Army Trainer + Summon Spider + """, + InfusionEffects2 = """ + Hero Slayer + Inflict Despairing + Inflict Taunted + Greater Blight Shield + +4 Blight Resistance + Army Maintenance + """, + InfusionEffects3 = """ + +6 Blight Resistance + Domination + Summon Spider Monarch + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.Plant, Name = "Rainbow Clover", @@ -122,11 +286,25 @@ public static class MagicMaterialsData IncreaseStability = 10, IncreaseRelationWithFreeCitiesAndRulers = 100, GlobalBonus = "+100 Relations with Free Cities and Rulers", - InfusionEffects1 = "Spirit Damage\n+2 Spirit Resistance\nZeal\nArmy Recuperation", - InfusionEffects2 = "Radiant Damage\n+20% Critical Hit chance\nFiend Slayer\n+4 Spirit Resistance", - InfusionEffects3 = "+30% Critical Hit chance\n+6 Spirit Resistance\nMass Heal" + InfusionEffects1 = """ + Spirit Damage + +2 Spirit Resistance + Zeal + Army Recuperation + """, + InfusionEffects2 = """ + Radiant Damage + +20% Critical Hit chance + Fiend Slayer + +4 Spirit Resistance + """, + InfusionEffects3 = """ + +30% Critical Hit chance + +6 Spirit Resistance + Mass Heal + """ }, - new MagicMaterial + new() { Category = MagicMaterialCategory.VoidStone, Name = "Void Stones", @@ -134,9 +312,18 @@ public static class MagicMaterialsData IncreaseMana = 30, IncreaseAllegianceFromUmbralDwellings = 2, GlobalBonus = "+2 Allegiance per turn with discovered Umbral Dwellings", - InfusionEffects1 = "Boon Stealing\nCleansing Fire\nArmy: Umbral Malady Immunity", - InfusionEffects2 = "Splitterling Infection\nSummon Umbral Demon", - InfusionEffects3 = "True Damage" + InfusionEffects1 = """ + Boon Stealing + Cleansing Fire + Army: Umbral Malady Immunity + """, + InfusionEffects2 = """ + Splitterling Infection + Summon Umbral Demon + """, + InfusionEffects3 = """ + True Damage + """ } }; -} +} \ No newline at end of file