Tech stack stub page and changing project to be just one Web Assembly project for now
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
namespace WebAssembly.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; }
|
||||
}
|
||||
@@ -0,0 +1,329 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public static class MagicMaterialsData
|
||||
{
|
||||
public static readonly IReadOnlyList<MagicMaterial> RawData = new List<MagicMaterial>
|
||||
{
|
||||
new()
|
||||
{
|
||||
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
|
||||
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()
|
||||
{
|
||||
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%
|
||||
+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()
|
||||
{
|
||||
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
|
||||
+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()
|
||||
{
|
||||
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
|
||||
Lifedrinker
|
||||
Blood Sigil
|
||||
"""
|
||||
},
|
||||
new()
|
||||
{
|
||||
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
|
||||
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()
|
||||
{
|
||||
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
|
||||
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()
|
||||
{
|
||||
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
|
||||
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()
|
||||
{
|
||||
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
|
||||
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()
|
||||
{
|
||||
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
|
||||
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()
|
||||
{
|
||||
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
|
||||
+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()
|
||||
{
|
||||
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
|
||||
Cleansing Fire
|
||||
Army: Umbral Malady Immunity
|
||||
""",
|
||||
InfusionEffects2 = """
|
||||
Splitterling Infection
|
||||
Summon Umbral Demon
|
||||
""",
|
||||
InfusionEffects3 = """
|
||||
True Damage
|
||||
"""
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a Province Improvement - a buildable enhancement that can be constructed in a province.
|
||||
/// Each Province Improvement decreases stability by -5.
|
||||
/// </summary>
|
||||
public class ProvinceImprovement
|
||||
{
|
||||
/// <summary>
|
||||
/// The name of the province improvement.
|
||||
/// </summary>
|
||||
public required string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The base category/type (Conduit, Farm, Forester, Mine, Quarry, Research Post, Teleporter, Monument, etc.).
|
||||
/// </summary>
|
||||
public required string Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A description of the effects this improvement provides (resource bonuses, adjacency bonuses, special mechanics,
|
||||
/// etc.).
|
||||
/// </summary>
|
||||
public required string Effects { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Any requirements to build this improvement (terrain, resource nodes, Town Hall tier, etc.).
|
||||
/// </summary>
|
||||
public required string Requirements { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The source/culture/tome that grants this improvement (General, Barbarian, Feudal, High, Mystic, etc.).
|
||||
/// </summary>
|
||||
public required string Source { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The production cost to build this improvement.
|
||||
/// </summary>
|
||||
public int CostProduction { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The gold cost to build this improvement.
|
||||
/// </summary>
|
||||
public int CostGold { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,365 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
/// <summary>
|
||||
/// Static raw data provider for Province Improvements.
|
||||
/// </summary>
|
||||
public static class ProvinceImprovementsData
|
||||
{
|
||||
public static List<ProvinceImprovement> RawData =>
|
||||
[
|
||||
new()
|
||||
{
|
||||
Name = "Conduit",
|
||||
Category = "Conduit",
|
||||
Effects = "+5 Mana",
|
||||
Requirements = "Mana node, pearl reef, or magic material",
|
||||
Source = "Base",
|
||||
CostProduction = 0,
|
||||
CostGold = 0
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Farm",
|
||||
Category = "Farm",
|
||||
Effects = "+5 Food",
|
||||
Requirements = "Grassland or coast terrain, fungus fields (underground)",
|
||||
Source = "Base",
|
||||
CostProduction = 0,
|
||||
CostGold = 0
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Forester",
|
||||
Category = "Forester",
|
||||
Effects = "+2 Food\n+3 Production",
|
||||
Requirements = "Forest or mangrove forest terrain, mushroom forest (underground)",
|
||||
Source = "Base",
|
||||
CostProduction = 0,
|
||||
CostGold = 0
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Hut",
|
||||
Category = "Hut",
|
||||
Effects = "+2 Food",
|
||||
Requirements = "Ashlands, sand or snow terrain",
|
||||
Source = "Base",
|
||||
CostProduction = 0,
|
||||
CostGold = 0
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Mine",
|
||||
Category = "Mine",
|
||||
Effects = "+5 Gold",
|
||||
Requirements = "Gold vein, iron deposit, or pearl reef resource node",
|
||||
Source = "Base",
|
||||
CostProduction = 0,
|
||||
CostGold = 0
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Quarry",
|
||||
Category = "Quarry",
|
||||
Effects = "+5 Production",
|
||||
Requirements = "Cliff, rocky, or sunken ruins terrain; or iron deposit resource node",
|
||||
Source = "Base",
|
||||
CostProduction = 0,
|
||||
CostGold = 0
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Research Post",
|
||||
Category = "Research Post",
|
||||
Effects = "+5 Knowledge",
|
||||
Requirements = "Mana node, magic material or sunken ruins terrain",
|
||||
Source = "Base",
|
||||
CostProduction = 0,
|
||||
CostGold = 0
|
||||
},
|
||||
|
||||
// General Province Improvements
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Spell Jammer",
|
||||
Category = "Conduit",
|
||||
Effects = """
|
||||
Enemies cannot target World Map Spells in this Domain.
|
||||
Enemy Spells cost +100% Combat Casting Points in Combat in Domain.
|
||||
-10 Mana.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall III",
|
||||
Source = "General",
|
||||
CostProduction = 250,
|
||||
CostGold = 100
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Teleporter",
|
||||
Category = "Teleporter",
|
||||
Effects = """
|
||||
A Province Improvement which enables an Army to teleport from one teleporter to another.
|
||||
-10 Mana.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province",
|
||||
Source = "General",
|
||||
CostProduction = 250,
|
||||
CostGold = 100
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Barbarian
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Forest of Stakes",
|
||||
Category = "Forester",
|
||||
Effects = """
|
||||
+7 Food income.
|
||||
+7 Production income.
|
||||
+7 Draft per adjacent Forester.
|
||||
Enemy Units in this Domain get Demoralized.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Communal Tent",
|
||||
Source = "Barbarian",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Dark Cult of Death
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Masoleum",
|
||||
Category = "Research Post",
|
||||
Effects = """
|
||||
+10 Knowledge income.
|
||||
+3 Knowledge Production per adjacent Conduit.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Dread Spire",
|
||||
Source = "Dark - Cult of Death",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Dark Cult of Tyranny
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Dark Forge",
|
||||
Category = "Mine",
|
||||
Effects = """
|
||||
+10 Gold income.
|
||||
+5 Production per adjacent Quarry, Mine, or Forester.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Dread Spire",
|
||||
Source = "Dark - Cult of Tyranny",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Feudal
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Farmstead",
|
||||
Category = "Farm",
|
||||
Effects = """
|
||||
+15 Food income.
|
||||
+5 Food per adjacent Farm.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Castle",
|
||||
Source = "Feudal",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - High
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Sunshrine",
|
||||
Category = "Research Post",
|
||||
Effects = """
|
||||
+10 Knowledge income.
|
||||
+3 Knowledge per adjacent Research Post.
|
||||
Friendly Units in this Domain are Encouraged.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Atrium of Light",
|
||||
Source = "High",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Industrious
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Builder's Quarters",
|
||||
Category = "Quarry",
|
||||
Effects = """
|
||||
+15 Production income.
|
||||
+5 Production per adjacent Quarry.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Bulwark",
|
||||
Source = "Industrious",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Mystic School of Attunement
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Mystic Abbey",
|
||||
Category = "Conduit",
|
||||
Effects = """
|
||||
+10 Mana income.
|
||||
+3 Knowledge per adjacent Conduit or Research Post.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Mage's Plaza",
|
||||
Source = "Mystic - School of Attunement",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Mystic School of Summoning
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Astral Manalith",
|
||||
Category = "Conduit",
|
||||
Effects = """
|
||||
+10 Mana income.
|
||||
+5 Mana per adjacent Conduit or Research Post.
|
||||
""",
|
||||
Requirements =
|
||||
"Must be built on an acquired Province.\nRequires City Tier 2.\nRequires Town Hall II: Mage's Plaza",
|
||||
Source = "Mystic - School of Summoning",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Nomad Conquerors
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Warcamp",
|
||||
Category = "Forester",
|
||||
Effects = """
|
||||
+15 Draft.
|
||||
Pillaging adjacent provinces takes -1 Turn.
|
||||
Friendly units in this and adjacent provinces gain +15 Hit Point regeneration per World Map Turn.
|
||||
""",
|
||||
Requirements = "Must be built on an annexed Province.\nRequires Town Hall II: Council Deck",
|
||||
Source = "Nomad - Conquerors",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Cultural Province Improvements - Nomad Scavengers
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Scavenging Camp",
|
||||
Category = "Mine",
|
||||
Effects = """
|
||||
+10 Gold.
|
||||
+10 Gold for this and each adjacent province containing a Resource Node.
|
||||
""",
|
||||
Requirements = "Must be built on an annexed Province.\nRequires Town Hall II: Council Deck",
|
||||
Source = "Nomad - Scavengers",
|
||||
CostProduction = 130,
|
||||
CostGold = 60
|
||||
},
|
||||
|
||||
// Primal Megalith improvements
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Ash Megalith",
|
||||
Category = "Conduit",
|
||||
Effects = "+6 Gold per adjacent Ashland Province",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Clan Lodge",
|
||||
Source = "Primal - Ash Sabertooth",
|
||||
CostProduction = 250,
|
||||
CostGold = 100
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Dune Megalith",
|
||||
Category = "Conduit",
|
||||
Effects = "+4 Gold per adjacent Sand Province",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Clan Lodge",
|
||||
Source = "Primal - Dune Serpent",
|
||||
CostProduction = 250,
|
||||
CostGold = 100
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "Glacial Megalith",
|
||||
Category = "Conduit",
|
||||
Effects = "+6 Production per adjacent Snow Province",
|
||||
Requirements = "Must be built on an acquired province.\nRequires Town Hall II: Clan Lodge",
|
||||
Source = "Primal - Glacial Mammoth",
|
||||
CostProduction = 250,
|
||||
CostGold = 100
|
||||
},
|
||||
|
||||
// Oathsworn Schools
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "School of Contemplation",
|
||||
Category = "Conduit",
|
||||
Effects = """
|
||||
+7 Mana.
|
||||
+7 Knowledge.
|
||||
+3 Knowledge per adjacent Conduit or Research Post.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired Province.\nRequires Town Hall II: Oath Square",
|
||||
Source = "Oathsworn - Oath of Harmony",
|
||||
CostProduction = 250,
|
||||
CostGold = 100
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "School of Discipline",
|
||||
Category = "Conduit",
|
||||
Effects = """
|
||||
+7 Mana.
|
||||
+7 Draft.
|
||||
+5 Draft per adjacent Quarry.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired Province.\nRequires Town Hall II: Oath Square",
|
||||
Source = "Oathsworn - Oath of Righteousness",
|
||||
CostProduction = 250,
|
||||
CostGold = 100
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
Name = "School of Mastery",
|
||||
Category = "Conduit",
|
||||
Effects = """
|
||||
+7 Mana.
|
||||
+7 Draft.
|
||||
Units produced in this city start with +1 Starting Rank.
|
||||
""",
|
||||
Requirements = "Must be built on an acquired Province.\nRequires Town Hall II: Oath Square",
|
||||
Source = "Oathsworn - Oath of Strife",
|
||||
CostProduction = 250,
|
||||
CostGold = 100
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public class ResourceNode
|
||||
{
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string? Description { get; set; }
|
||||
public int? IncreaseFood { get; set; }
|
||||
public int? IncreaseProduction { get; set; }
|
||||
public int? IncreaseGold { get; set; }
|
||||
public int? IncreaseMana { get; set; }
|
||||
public int? IncreaseKnowledge { get; set; }
|
||||
public bool ForceEnableFarm { get; set; }
|
||||
public bool ForceEnableMine { get; set; }
|
||||
public bool ForceEnableQuarry { get; set; }
|
||||
public bool ForceEnableConduit { get; set; }
|
||||
public bool ForceEnableResearchPost { get; set; }
|
||||
public bool ForceEnableForester { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public static class ResourceNodesData
|
||||
{
|
||||
public static readonly IReadOnlyList<ResourceNode> RawData = new List<ResourceNode>
|
||||
{
|
||||
new()
|
||||
{
|
||||
Name = "Pastures",
|
||||
Description = "Roaming herds on lush fields.",
|
||||
IncreaseFood = 10,
|
||||
ForceEnableFarm = true
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Oasis",
|
||||
Description = "A lush oasis full of nutritious food.",
|
||||
IncreaseFood = 10
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Iron Deposit",
|
||||
Description = "A rich vein full of ore.",
|
||||
IncreaseProduction = 10,
|
||||
ForceEnableMine = true,
|
||||
ForceEnableQuarry = true
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Gold Vein",
|
||||
Description = "A large vein of valuable gold.",
|
||||
IncreaseGold = 10,
|
||||
ForceEnableMine = true
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Mana Node",
|
||||
Description = "Magical currents converge at this location.",
|
||||
IncreaseMana = 10,
|
||||
ForceEnableConduit = true,
|
||||
ForceEnableResearchPost = true
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Fishing Ground",
|
||||
Description = "A plentiful source of fish.",
|
||||
IncreaseFood = 15
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Pearl Reef",
|
||||
Description = "A bloom of valuable pearls.",
|
||||
IncreaseGold = 7,
|
||||
IncreaseMana = 7,
|
||||
ForceEnableMine = true,
|
||||
ForceEnableConduit = true
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Chitinous Growths",
|
||||
Description = "These grotesque growths deposit valuable liquid and ore at unnatural speed.",
|
||||
IncreaseGold = 30
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Monoliths",
|
||||
Description = "There is writing in an unknown language on these obsidian giants.",
|
||||
IncreaseKnowledge = 30
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Blossom Orchard",
|
||||
Description = "Eternally blooming trees offering bounty of fruit and wood.",
|
||||
IncreaseFood = 5,
|
||||
IncreaseProduction = 5,
|
||||
ForceEnableForester = true
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public class SearchPointModel
|
||||
{
|
||||
public string Title { get; set; } = "";
|
||||
public string Summary { get; set; } = "";
|
||||
|
||||
public string Tags { get; set; } = "";
|
||||
public string PointType { get; set; } = "";
|
||||
public string Href { get; set; } = "";
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public class SectionLink
|
||||
{
|
||||
public string Title { get; set; } = string.Empty;
|
||||
public string Url { get; set; } = string.Empty;
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
|
||||
public class Section
|
||||
{
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string? Description { get; set; }
|
||||
public List<SectionLink> Links { get; set; } = new();
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public static class SectionsData
|
||||
{
|
||||
public static List<Section> GetAllSections()
|
||||
{
|
||||
return
|
||||
[
|
||||
new Section
|
||||
{
|
||||
Name = "About",
|
||||
Description = "Meta information on this website",
|
||||
Links =
|
||||
[
|
||||
new SectionLink
|
||||
{
|
||||
Title = "Tech Stack",
|
||||
Url = "/tech-stack",
|
||||
Description = "Information about the technology stack that will be used in this project."
|
||||
}
|
||||
]
|
||||
},
|
||||
new Section
|
||||
{
|
||||
Name = "Calculators",
|
||||
Description = "Useful calculator tools for various computations",
|
||||
Links =
|
||||
[
|
||||
new SectionLink
|
||||
{
|
||||
Title = "Building Plan Calculator",
|
||||
Url = "/building-calculator",
|
||||
Description = "Simulate build order timing and gold income over turns."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
new Section
|
||||
{
|
||||
Name = "References",
|
||||
Description = "Reference materials and documentation",
|
||||
Links =
|
||||
[
|
||||
new SectionLink
|
||||
{
|
||||
Title = "Magic Materials Reference",
|
||||
Url = "/references/magic-materials",
|
||||
Description = "View the magic material dataset and bonuses in a reference table."
|
||||
},
|
||||
|
||||
new SectionLink
|
||||
{
|
||||
Title = "Province Improvements Reference",
|
||||
Url = "/references/province-improvements",
|
||||
Description =
|
||||
"View the province improvements dataset including costs, effects, and requirements."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
new Section
|
||||
{
|
||||
Name = "Learning",
|
||||
Description = "Educational resources and learning materials",
|
||||
Links = []
|
||||
}
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public class SeverityType
|
||||
{
|
||||
public static string Warning = "Warning";
|
||||
public static string Information = "Information";
|
||||
public static string Error = "Error";
|
||||
public static string Success = "Success";
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public class TechStack
|
||||
{
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string? Description { get; set; }
|
||||
public string? ExtendedNotes { get; set; }
|
||||
|
||||
public bool InUse { get; set; } = false;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public static class TechStackData
|
||||
{
|
||||
public static List<TechStack> RawData =
|
||||
[
|
||||
new()
|
||||
{
|
||||
Name = "Blazor WebAssembly",
|
||||
Description = "Framework for web applications for easy distribution and no hosting costs with third parties",
|
||||
InUse = true,
|
||||
ExtendedNotes = """
|
||||
Simple and easy to distribute. I like C#, and it's C# web development, what's not to like.
|
||||
Obviously con is if I want the user to save state between usages, I am relying on something unreliable like local storage which can be cleared by the user or obviously not transferred between different browsers.
|
||||
So needs to be used in reference and informational only content. I suppose I could rely on the user to handle copying and pasting the data, but a tad cumbersome and unrealistic to expect that.
|
||||
"""
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "Blazor Server",
|
||||
Description = "Framework for web applications that allows for database interactions",
|
||||
InUse = false,
|
||||
ExtendedNotes = """
|
||||
Easy to distribute. I'll need to have to deal with authentication and all those security concerns.
|
||||
Needs a database to store data. Local hosting Postgresql is the plan.
|
||||
Unideal support implications. Need to make deleting all user data very easy for legal compliance.
|
||||
Less reliability. Server can go down, and I can have a long outage. Fallback to Blazor WebAssembly version hosted by a third party.
|
||||
"""
|
||||
},
|
||||
new() {
|
||||
Name = "MAUI",
|
||||
Description = "Framework for mobile and desktop applications",
|
||||
InUse = false,
|
||||
ExtendedNotes = """
|
||||
So I get around the whole unreliableness of web storage by saving files locally.
|
||||
I can easily distribute via an exe file or apk. Obviously con of that is the user needs to install a exe file or apk, so there is going be a clear 'this could be a virus' type of warning popup to discourage the user.
|
||||
Potentially can distribute via Google Play or Windows Store and be subject to the whims and veto power of a third party.
|
||||
"""
|
||||
},
|
||||
new()
|
||||
{
|
||||
Name = "PostgreSQL",
|
||||
Description = "Relational database management system",
|
||||
InUse = false,
|
||||
ExtendedNotes = """
|
||||
I am picking PostgreSQL because it appears free and simple. I have pgAdmin installed and it running.
|
||||
Need to just actually implement using it in the far future.
|
||||
"""
|
||||
},
|
||||
];
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WebAssembly.Data;
|
||||
|
||||
public class ToastModel
|
||||
{
|
||||
public string Title { get; set; } = "addTitle";
|
||||
public string Message { get; set; } = "addMessage";
|
||||
public string SeverityType { get; set; } = "addType";
|
||||
public float Age { get; set; } = 0;
|
||||
}
|
||||
Reference in New Issue
Block a user