From a7f5935b39e1601c128aac8e1405bc9cd5b187e3 Mon Sep 17 00:00:00 2001 From: Jonathan McCaffrey Date: Sat, 26 Sep 2026 16:17:55 +0000 Subject: [PATCH] AI: markdown-to-C# converter for StarSystem and SystemMastery --- .../ZeroSpace.Model/SystemMasteries.g.cs | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 ZeroSpace/ZeroSpace.Model/SystemMasteries.g.cs diff --git a/ZeroSpace/ZeroSpace.Model/SystemMasteries.g.cs b/ZeroSpace/ZeroSpace.Model/SystemMasteries.g.cs new file mode 100644 index 0000000..b58d58e --- /dev/null +++ b/ZeroSpace/ZeroSpace.Model/SystemMasteries.g.cs @@ -0,0 +1,138 @@ +// +namespace ZeroSpace.Model; + +public static class SystemMasteries +{ + public static readonly SystemMasteryData BuildingHealthAndShields = new( + Id: "BuildingHealthAndShields", + Name: "Building Health and Shields", + Levels: ["+2% building health and shields", "+2% building health and shields", "+2% building health and shields", "+2% building health and shields", "+5% building health and shields"], + AvailableSystems: ["Stronghold Orion", "Magenta Bloom", "Obsidian Palace", "Raider's Reef", "Nexus Prime", "Erebus Deep", "Celestial Forge Stronghold", "Aquila Rift"], + Stats: new Dictionary + { + ["buildingHealthAndShields"] = 0.13, + }, + Body: ""); + + public static readonly SystemMasteryData HeroDamage = new( + Id: "HeroDamage", + Name: "Hero Damage", + Levels: ["+3% hero damage", "+3% hero damage", "+3% hero damage", "+3% hero damage", "-5% cooldown on heroes abilities"], + AvailableSystems: ["Stronghold Atlas", "Hyperion Nebula", "Stronghold Leo", "Tartarus Expanse", "Shattered Light", "Lambda Gateway", "Devil's Trident"], + Stats: new Dictionary + { + ["heroDamage"] = 0.12, + ["heroCooldown"] = 0.05, + }, + Body: "I don't like micromanaging heroes, so I wouldn't put too much stock in this skill.\n\nThat said, it's hard to ignore the whole hero cooldown reduction, and stacking it.\n\n[[Vynthra]]'s cooldown on the AOE generates top bar energy, so the more you cast it the better. \n\n[[Galavax]] can convert enemies, so it's a instant kill that can give you a big unit.\n\nAnd [[Prefect Aster]] has his +40% attack speed buff to allies in his area. So all clear powerful abilities you want to cast often."); + + public static readonly SystemMasteryData HeroHealthAndShields = new( + Id: "HeroHealthAndShields", + Name: "Hero Health and Shields", + Levels: ["+3% hero health and shields", "+3% hero health and shields", "+3% hero health and shields", "+3% hero health and shields", "+4 to heroes health and shields regeneration rate"], + AvailableSystems: ["Yellow Dawn", "Gelid Storm", "Occam's Abode", "Scarlett Ire", "Negative Ion", "The Crucible", "Idal's Word", "Crimson Expanse"], + Stats: new Dictionary + { + ["heroHealthAndShields"] = 0.12, + ["heroHealthAndShieldRegen"] = 4, + }, + Body: "Seems pointless. Heroes currently are all ranged, so while they are good tanks in terms of durability, it's a bit micro intensive to actually get them to tank. Maybe when a melee hero gets released, this would be worth stacking as a easy health and shield tanking hero."); + + public static readonly SystemMasteryData MaxSupply = new( + Id: "MaxSupply", + Name: "Max Supply", + Levels: ["+2 max supply", "+2 max supply", "+2 max supply", "+2 max supply", "+5 starting and max supply"], + AvailableSystems: ["Aurora Vale", "Corundum Dream", "Draconis Reach", "Stellar Forge", "Magnetic Folly", "Mercury Forge", "Wild's End"], + Stats: new Dictionary + { + ["startingSupply"] = 5, + ["maxSupply"] = 13, + }, + Body: "Gives +13 max supply and +5 starting supply.\n\nNot an obvious punch up in power. \n\nMakes initial time to make a bigger army cheaper, given an extra five supply of units. \n\nAnd stacking these buffs is kind of an obvious end game bonus.\n\nBoth [[Prefect Aster]] and [[Galavax]] can hit max supply pretty easily given there powers create units that take up supply, so could be beneficial for armies that need large groups to split up to hold objectives.\n\nPerhaps an uneducated opinion, but I would skip this if focusing on [[Vynthra]] unless a good neutral power comes out that takes supply. Because your not reasonably hitting supply cap in harder difficulties in solo co-op."); + + public static readonly SystemMasteryData ProductionSpeedForBuildings = new( + Id: "ProductionSpeedForBuildings", + Name: "Production Speed for Buildings", + Levels: ["+1% Production speed for buildings", "+1% Production speed for buildings", "+1% Production speed for buildings", "+1% Production speed for buildings", "+5% Production speed for buildings"], + AvailableSystems: ["Endless Wastes", "Sullen Dwarf", "Starless Sky", "Steel Depths", "Glittering Hope", "Ebony Keep", "Stronghold Cronus", "Iotan Tears"], + Stats: new Dictionary + { + ["productionSpeedForBuildings"] = 0.09, + }, + Body: "9% production speed. Seems obvious for any tech up strategy.\n\nMight be beneficial towards getting a certain mercenary tier unlocked very quickly.\n\nI would be interested in using [[Vynthra]] and quickly teching up to [[Corsair Snipers]] and infusing them. Probably also better ideas in this regard."); + + public static readonly SystemMasteryData StartingTopbarEnergy = new( + Id: "StartingTopbarEnergy", + Name: "Starting Topbar Energy", + Levels: ["+1 Topbar starting energy", "+1 Topbar starting energy", "+1 Topbar starting energy", "+1 Topbar starting energy", "+2 Topbar starting energy and +5 Topbar maximum energy"], + AvailableSystems: ["Stronghold Nova Centauri", "Lights Bounty", "Astral Haven", "The High Council", "Uanachian Whirlpool", "Vulcan's Breath", "Xenon Abyss", "Calm Belt", "Nucleic Redux"], + Stats: new Dictionary + { + ["startingTopbarEnergy"] = 6, + ["maxTopbarEnergy"] = 5, + }, + Body: ""); + + public static readonly SystemMasteryData TurretDamage = new( + Id: "TurretDamage", + Name: "Turret Damage", + Levels: ["+5% turret damage.", "+5% turret damage.", "+5% turret damage.", "+5% turret damage.", "+10% turret attack speed."], + AvailableSystems: ["Solaris Reach", "Xenthic Fields", "Stronghold Vega", "Stronghold Tau", "Inferno's Edge Stronghold", "Titan's Fall", "Nebulon Drift"], + Stats: new Dictionary + { + ["turretDamage"] = 0.2, + ["turretAttackSpeed"] = 0.1, + }, + Body: "This just seems crazy good on [[Vynthra]].\n\nIf you want go go base defense crazy, I don't see how this is not prioritized."); + + public static readonly SystemMasteryData UnitEnergyAndRegenerationNotHeroes = new( + Id: "UnitEnergyAndRegenerationNotHeroes", + Name: "Unit Energy and Regeneration (not heroes)", + Levels: ["+5% unit max energy and regeneration", "-3% unit ability cooldown", "+5% unit max energy and regeneration", "-3% unit ability cooldown", "+10% unit max energy and regeneration, -5% unit ability cooldown"], + AvailableSystems: ["Eden's Heart", "Crystallic Genesis", "Pleiades Cluster", "Ivory Fields", "Heigen Stream", "Gamma Swarm", "Helios Crossing", "Epsilon Arc", "Orion's Gate"], + Stats: new Dictionary + { + }, + Body: "I don't feel like there are good enough abilities that I would want to use this. I am sure this will rapidly change as more units get added to the roster. Perhaps that caster unit with [[Galavax]] is good.\nSome of the hotkeys on mercs are kind of bad, which is understandable given the sheer amount of variety. Perhaps I am also downplaying some of them, and tweaking the hotkeys will make them more friendly.\n\nI would ignore this for now, unless there is a very powerful caster unit added to the game. Like anything with summons via energy spending and cooldowns."); + + public static readonly SystemMasteryData UnitHealthAndShields = new( + Id: "UnitHealthAndShields", + Name: "Unit Health and Shields", + Levels: ["+1% Unit health and shields", "+1% Unit health and shields", "+1% Unit health and shields", "+1% Unit health and shields", "+1 unit health and shields regeneration rate"], + AvailableSystems: ["Ashes of Revenge", "Andus Reach", "Forge of Souls", "Typhon's Call", "Neera's Gift", "Ivory Steel", "Void Star", "Burning Cairn"], + Stats: new Dictionary + { + ["unitHealthAndShields"] = 0.04, + ["unitHealthAndShieldRegen"] = 1, + }, + Body: ""); + + public static readonly SystemMasteryData UnitVisionAndAttackRange = new( + Id: "UnitVisionAndAttackRange", + Name: "Unit Vision and Attack Range", + Levels: ["+0.5 unit vision range", "+0.5 unit vision range", "+0.5 unit vision range", "+0.5 unit vision range", "+0.1 unit attack range"], + AvailableSystems: ["Quartzalian Berth", "Igneous Cascade", "Noxious Energy", "Artemis Grotto", "Leviathan's Wake", "Galactic Zenith", "Sigma Vortex", "Zeta Horizon"], + Stats: new Dictionary + { + ["unitVisionRange"] = 2, + ["unitAttackRange"] = 0.1, + }, + Body: ""); + + public static IReadOnlyList All { get; } = + [ + BuildingHealthAndShields, + HeroDamage, + HeroHealthAndShields, + MaxSupply, + ProductionSpeedForBuildings, + StartingTopbarEnergy, + TurretDamage, + UnitEnergyAndRegenerationNotHeroes, + UnitHealthAndShields, + UnitVisionAndAttackRange, + ]; + + public static IReadOnlyDictionary ByName { get; } = + All.ToDictionary(static mastery => mastery.Name, StringComparer.OrdinalIgnoreCase); +}