Refactor Magic Materials data for improved readability and maintainability

This commit is contained in:
2026-05-25 16:47:06 -04:00
parent 8ba4d4ee9b
commit 0cf75d5324
+234 -47
View File
@@ -1,47 +1,102 @@
using System.Collections.Generic;
namespace AOW4.Data; namespace AOW4.Data;
public static class MagicMaterialsData public static class MagicMaterialsData
{ {
public static readonly IReadOnlyList<MagicMaterial> RawData = new List<MagicMaterial> public static readonly IReadOnlyList<MagicMaterial> RawData = new List<MagicMaterial>
{ {
new MagicMaterial new()
{ {
Category = MagicMaterialCategory.Ore, Category = MagicMaterialCategory.Ore,
Name = "Arcanum 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, IncreaseProduction = 10,
IncreaseMana = 10, IncreaseMana = 10,
GlobalBonus = "-25% Hurry Recruitment Cost", GlobalBonus = "-25% Hurry Recruitment Cost",
InfusionEffects1 = "Inflict Sundered Defense\nPower Cleave\nSupport - Bolstered Defense\nReinforced\n+2 Defense\nBolstering Defense\nJuggernaut\nDemolisher", InfusionEffects1 = """
InfusionEffects2 = "Construct Slayer\nDragon Slayer\nInflict Immobilized\nPush Back\nDisplace and Replace\n+3 Defense\nSiege Master" 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, Category = MagicMaterialCategory.Ore,
Name = "Focus Crystals", 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, IncreaseGold = 10,
IncreaseKnowledge = 10, IncreaseKnowledge = 10,
GlobalBonus = "+10% Unit Experience Gain", GlobalBonus = "+10% Unit Experience Gain",
InfusionEffects1 = "Retaliator +50%\n+1 Range\nInflict Marked\nDamage Reflection 30%\n+20% Accuracy\nLightning Strike", InfusionEffects1 = """
InfusionEffects2 = "Retaliator +100%\nElemental Slayer\nInflict Stunned\nHyper-Awareness\n+30% Accuracy\nInversion", Retaliator +50%
InfusionEffects3 = "Area Damage - Line\nDamage Reflection 40%" +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, Category = MagicMaterialCategory.Ore,
Name = "Fireforge Stone", 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, IncreaseProduction = 20,
DecreaseDraftCostPercent = 20, DecreaseDraftCostPercent = 20,
GlobalBonus = "-20% Unit Draft Cost", 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", InfusionEffects1 = """
InfusionEffects2 = "Arcfire Damage\n+40% Critical Damage\nPlant Slayer\nGreater Fire Shield\n+4 Fire Resistance\nIgnore 4 Status Resistance", Fire Damage
InfusionEffects3 = "Area Damage - Blast\nInflict Insanity\nConsume Chaos\n+6 Fire Resistance" +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, Category = MagicMaterialCategory.SunlessOre,
Name = "Blood Glass", Name = "Blood Glass",
@@ -49,9 +104,13 @@ public static class MagicMaterialsData
IncreaseDraft = 20, IncreaseDraft = 20,
IncreaseHPRegen = 5, IncreaseHPRegen = 5,
GlobalBonus = "+5 HP regeneration (on the world map)", 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, Category = MagicMaterialCategory.Liquid,
Name = "Archon Blood", Name = "Archon Blood",
@@ -59,11 +118,34 @@ public static class MagicMaterialsData
IncreaseMana = 20, IncreaseMana = 20,
IncreaseCombatCastingPoints = 15, IncreaseCombatCastingPoints = 15,
GlobalBonus = "+15 Combat Casting Points", 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", InfusionEffects1 = """
InfusionEffects2 = "Death Damage\nInflict Diseased\n+15 Hit Points\n+4 Frost Resistance\nBolstering Regeneration\nUndying", Frost Damage
InfusionEffects3 = "Inflict Decaying\nGravecall\nGreater Frost Shield\n+6 Frost Resistance" 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, Category = MagicMaterialCategory.Liquid,
Name = "Astral Dew", Name = "Astral Dew",
@@ -72,11 +154,31 @@ public static class MagicMaterialsData
IncreaseKnowledge = 10, IncreaseKnowledge = 10,
IncreaseWorldCastingPoints = 15, IncreaseWorldCastingPoints = 15,
GlobalBonus = "+15 World Map Casting Points", 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", InfusionEffects1 = """
InfusionEffects2 = "Magic Origin Slayer\nInflict Frozen\nGreater Lightning Shield\n+4 Lightning Resistance", Lightning Damage
InfusionEffects3 = "Static Shield\n+6 Lightning Resistance\nPass Through\nAstral Membrane" 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, Category = MagicMaterialCategory.Liquid,
Name = "Tranquility Pool", Name = "Tranquility Pool",
@@ -84,11 +186,33 @@ public static class MagicMaterialsData
IncreaseKnowledge = 20, IncreaseKnowledge = 20,
DecreaseKnowledgeResearchCostPercent = 10, DecreaseKnowledgeResearchCostPercent = 10,
GlobalBonus = "-10% Knowledge research cost for spells", 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", InfusionEffects1 = """
InfusionEffects2 = "Celestial Slayer\nUndead Slayer\n+3 Resistance\n+3 Status Resistance\nAttunement: Fortune", Inflict Slowed
InfusionEffects3 = "Area Damage - Cascade\nStatus Effect Immunity\nResurrection" 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, Category = MagicMaterialCategory.Plant,
Name = "Haste Berries", Name = "Haste Berries",
@@ -96,11 +220,29 @@ public static class MagicMaterialsData
IncreaseDraft = 20, IncreaseDraft = 20,
DecreaseTurnsTakenToFoundAbsorbMigrateCities = 2, DecreaseTurnsTakenToFoundAbsorbMigrateCities = 2,
GlobalBonus = "-2 turns to found, absorb or migrate cities", GlobalBonus = "-2 turns to found, absorb or migrate cities",
InfusionEffects1 = "Frenzy\nInflict Distracted\nSwift\nWind Barrier\nConjure Animal", InfusionEffects1 = """
InfusionEffects2 = "Extra Retaliation\nGiant Slayer\nInflict Blinded\nWhirlwind\nDefensive Masters\nVery Fast Movement\nKilling Momentum\nAnimate Flora", Frenzy
InfusionEffects3 = "Area Damage - Chain\nPolymorph" 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, Category = MagicMaterialCategory.Plant,
Name = "Silvertongue Fruit", Name = "Silvertongue Fruit",
@@ -109,11 +251,33 @@ public static class MagicMaterialsData
IncreaseDraft = 10, IncreaseDraft = 10,
IncreaseAllegianceFromWhisperingStones = 1, IncreaseAllegianceFromWhisperingStones = 1,
GlobalBonus = "+1 Allegiance from Whispering Stones", 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", InfusionEffects1 = """
InfusionEffects2 = "Hero Slayer\nInflict Despairing\nInflict Taunted\nGreater Blight Shield\n+4 Blight Resistance\nArmy Maintenance", Blight Damage
InfusionEffects3 = "+6 Blight Resistance\nDomination\nSummon Spider Monarch" 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, Category = MagicMaterialCategory.Plant,
Name = "Rainbow Clover", Name = "Rainbow Clover",
@@ -122,11 +286,25 @@ public static class MagicMaterialsData
IncreaseStability = 10, IncreaseStability = 10,
IncreaseRelationWithFreeCitiesAndRulers = 100, IncreaseRelationWithFreeCitiesAndRulers = 100,
GlobalBonus = "+100 Relations with Free Cities and Rulers", GlobalBonus = "+100 Relations with Free Cities and Rulers",
InfusionEffects1 = "Spirit Damage\n+2 Spirit Resistance\nZeal\nArmy Recuperation", InfusionEffects1 = """
InfusionEffects2 = "Radiant Damage\n+20% Critical Hit chance\nFiend Slayer\n+4 Spirit Resistance", Spirit Damage
InfusionEffects3 = "+30% Critical Hit chance\n+6 Spirit Resistance\nMass Heal" +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, Category = MagicMaterialCategory.VoidStone,
Name = "Void Stones", Name = "Void Stones",
@@ -134,9 +312,18 @@ public static class MagicMaterialsData
IncreaseMana = 30, IncreaseMana = 30,
IncreaseAllegianceFromUmbralDwellings = 2, IncreaseAllegianceFromUmbralDwellings = 2,
GlobalBonus = "+2 Allegiance per turn with discovered Umbral Dwellings", GlobalBonus = "+2 Allegiance per turn with discovered Umbral Dwellings",
InfusionEffects1 = "Boon Stealing\nCleansing Fire\nArmy: Umbral Malady Immunity", InfusionEffects1 = """
InfusionEffects2 = "Splitterling Infection\nSummon Umbral Demon", Boon Stealing
InfusionEffects3 = "True Damage" Cleansing Fire
Army: Umbral Malady Immunity
""",
InfusionEffects2 = """
Splitterling Infection
Summon Umbral Demon
""",
InfusionEffects3 = """
True Damage
"""
} }
}; };
} }