diff --git a/AOW4/Data/MagicMaterial.cs b/AOW4/Data/MagicMaterial.cs new file mode 100644 index 0000000..08397be --- /dev/null +++ b/AOW4/Data/MagicMaterial.cs @@ -0,0 +1,41 @@ +namespace AOW4.Data; + +public enum MagicMaterialCategory +{ + Ore, + SunlessOre, + Liquid, + Plant, + VoidStone +} + +public class MagicMaterial +{ + public MagicMaterialCategory Category { get; set; } + public string Name { get; set; } = string.Empty; + public string? Description { get; set; } + public string? GlobalBonus { get; set; } + public string? InfusionEffects1 { get; set; } + public string? InfusionEffects2 { get; set; } + public string? InfusionEffects3 { get; set; } + public int? IncreaseProduction { get; set; } + public int? IncreaseGold{ get; set; } + public int? IncreaseMana { get; set; } + public int? IncreaseDraft { get; set; } + public int? IncreaseKnowledge { get; set; } + public int? IncreaseFood { get; set; } + public int? IncreaseStability { get; set; } + public int? IncreaseImperium { get; set; } + public int? IncreaseAllegianceFromWhisperingStones { get; set; } + public int? IncreaseRelationWithFreeCitiesAndRulers { get; set; } + public int? IncreaseCombatCastingPoints { get; set; } + public int? IncreaseWorldCastingPoints { get; set; } + public int? IncreaseHPRegen { get; set; } + public int? IncreaseHitPoints { get; set; } + public int? IncreaseExperiencePercent { get; set; } + public int? IncreaseAllegianceFromUmbralDwellings { get; set; } + public int? DecreaseDraftCostPercent { get; set; } + public int? DecreaseRecruitmentCostPercent { get; set; } + public int? DecreaseKnowledgeResearchCostPercent { get; set; } + public int? DecreaseTurnsTakenToFoundAbsorbMigrateCities { get; set; } +} diff --git a/AOW4/Data/MagicMaterialsData.cs b/AOW4/Data/MagicMaterialsData.cs new file mode 100644 index 0000000..6ae1a03 --- /dev/null +++ b/AOW4/Data/MagicMaterialsData.cs @@ -0,0 +1,142 @@ +using System.Collections.Generic; + +namespace AOW4.Data; + +public static class MagicMaterialsData +{ + public static readonly IReadOnlyList RawData = new List + { + new MagicMaterial + { + Category = MagicMaterialCategory.Ore, + Name = "Arcanum Ore", + 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" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.Ore, + Name = "Focus Crystals", + 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%" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.Ore, + Name = "Fireforge Stone", + 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" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.SunlessOre, + Name = "Blood Glass", + Description = "Sunless Terrain only. Counts as Ore.", + IncreaseDraft = 20, + IncreaseHPRegen = 5, + GlobalBonus = "+5 HP regeneration (on the world map)", + InfusionEffects1 = "Greater Inflict Bleed\nLifedrinker\nBlood Sigil" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.Liquid, + Name = "Archon Blood", + Description = "Arctic, Highlands and Arctic Underground only. Collection effect: Cosmoflux Elixir.", + 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" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.Liquid, + Name = "Astral Dew", + Description = "Arctic, Highlands and Arctic Underground only. Collection effect: Cosmoflux Elixir.", + IncreaseMana = 10, + 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" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.Liquid, + Name = "Tranquility Pool", + Description = "Arctic, Highlands and Arctic Underground only. Collection effect: Cosmoflux Elixir.", + 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" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.Plant, + Name = "Haste Berries", + Description = "Desert, Temperate and Tropical only. Collection effect: Imperial Essence.", + 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" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.Plant, + Name = "Silvertongue Fruit", + Description = "Desert, Temperate and Tropical only. Collection effect: Imperial Essence.", + IncreaseFood = 10, + 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" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.Plant, + Name = "Rainbow Clover", + Description = "Desert, Temperate and Tropical only. Collection effect: Imperial Essence.", + IncreaseFood = 10, + 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" + }, + new MagicMaterial + { + Category = MagicMaterialCategory.VoidStone, + Name = "Void Stones", + Description = "Umbral Abyss only. Collection effect: Void Ink.", + 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" + } + }; +} diff --git a/docs/.obsidian/workspace.json b/docs/.obsidian/workspace.json index c4b859b..f98ec3e 100644 --- a/docs/.obsidian/workspace.json +++ b/docs/.obsidian/workspace.json @@ -10,7 +10,7 @@ { "id": "330f0f204ec3f22e", "type": "tabs", - "dimension": 57.17054263565892, + "dimension": 79.55426356589147, "children": [ { "id": "7a5b3ed118d43e9a", @@ -32,14 +32,17 @@ "id": "a152291798e86a03", "type": "leaf", "state": { - "type": "markdown", + "type": "canvas", "state": { - "file": "Magic Material Data.md", - "mode": "source", - "source": false + "file": "_Plan.canvas", + "viewState": { + "x": -2348.621950408076, + "y": 7.869358821353444, + "zoom": -1.2248009278071696 + } }, - "icon": "lucide-file", - "title": "Magic Material Data" + "icon": "lucide-layout-dashboard", + "title": "_Plan" } }, { @@ -71,12 +74,12 @@ } } ], - "currentTab": 1 + "currentTab": 2 }, { "id": "0d0bf6ef8ed6d192", "type": "tabs", - "dimension": 42.82945736434108, + "dimension": 20.44573643410853, "children": [ { "id": "f194521fa12ddca8", @@ -282,16 +285,21 @@ "bases:Create new base": false } }, - "active": "a152291798e86a03", + "active": "303f63f445fc3254", "lastOpenFiles": [ - "Basic Province Improvement Data.md", + "_Plan.canvas", + "Mobile App.md", + "Desktop App.md", + "Server App.md", + "Client App.md", + "agent.md.md", "Magic Material Data.md", + "Basic Province Improvement Data.md", "Collect Data.md", "Resource Node Data.md", "Load Game Data Into Build Calculator.md", "_Tasks Kanban.base", "Province.md", - "_Plan.canvas", "Overview.md", "Forge.md", "Find the Gold Cost Rush Formula.md", @@ -305,11 +313,6 @@ "Home Page.md", "Plan Basic Pages.md", "Reference Pages.md", - "Resources.md", - "Rush Gold Cost.md", - "Setup Test Database.md", - "Spell Data Tables.md", - "Tome Calculator.md", - "Victory Condition Information.md" + "Resources.md" ] } \ No newline at end of file diff --git a/docs/Client App.md b/docs/Client App.md new file mode 100644 index 0000000..72c0a17 --- /dev/null +++ b/docs/Client App.md @@ -0,0 +1,8 @@ +--- +type: Infrastructure +--- + + +Free hosting of a static web page. + +Easy distribution via a url \ No newline at end of file diff --git a/docs/Desktop App.md b/docs/Desktop App.md new file mode 100644 index 0000000..2c68200 --- /dev/null +++ b/docs/Desktop App.md @@ -0,0 +1,6 @@ +--- +type: Infrastructure +--- + + +Desktop version for easy PC viewing, and local file saving \ No newline at end of file diff --git a/docs/Mobile App.md b/docs/Mobile App.md new file mode 100644 index 0000000..aa6224b --- /dev/null +++ b/docs/Mobile App.md @@ -0,0 +1,6 @@ +--- +type: Infrastructure +--- + + +Mobile version for easy android viewing, and local file saving \ No newline at end of file diff --git a/docs/Server App.md b/docs/Server App.md new file mode 100644 index 0000000..d8138dc --- /dev/null +++ b/docs/Server App.md @@ -0,0 +1,7 @@ +--- +type: Infrastructure +--- + + +If for some reason I even want to support cloud storage + diff --git a/docs/_Plan.canvas b/docs/_Plan.canvas index 24958ef..aea9f17 100644 --- a/docs/_Plan.canvas +++ b/docs/_Plan.canvas @@ -12,7 +12,11 @@ {"id":"13e1923067cfcf9b","type":"file","file":"Reference Pages.md","x":-780,"y":-660,"width":400,"height":400}, {"id":"bbbf447fc1602d59","type":"file","file":"Learning Pages.md","x":240,"y":-700,"width":400,"height":400}, {"id":"6d7d63854782ff9e","type":"file","file":"Victory Condition Information.md","x":240,"y":-200,"width":400,"height":400}, - {"id":"bf2a479683623e4e","type":"file","file":"Building Calculator.md","x":-2720,"y":-200,"width":400,"height":400,"color":"4"} + {"id":"bf2a479683623e4e","type":"file","file":"Building Calculator.md","x":-2720,"y":-200,"width":400,"height":400,"color":"4"}, + {"id":"2a3c90c3a40f782f","x":-3560,"y":-700,"width":400,"height":400,"color":"4","type":"file","file":"Client App.md"}, + {"id":"8aa95aadae7e59c7","x":-4000,"y":-700,"width":400,"height":400,"type":"file","file":"Server App.md"}, + {"id":"630df17b0233eeb4","x":-4000,"y":-260,"width":400,"height":400,"color":"4","type":"file","file":"Desktop App.md"}, + {"id":"b4a971cd46f77eda","x":-3560,"y":-260,"width":400,"height":400,"type":"file","file":"Mobile App.md"} ], "edges":[ {"id":"f54d8c93d7012115","fromNode":"a10ea2bfe08eaab6","fromSide":"bottom","toNode":"be06aa9b621f72a5","toSide":"top"},