diff --git a/IGP/Pages/Database/DatabasePage.razor b/IGP/Pages/Database/DatabasePage.razor index 2a10057..ed7449f 100644 --- a/IGP/Pages/Database/DatabasePage.razor +++ b/IGP/Pages/Database/DatabasePage.razor @@ -10,13 +10,6 @@ Database - - Errors Present - - Database information was quickly updated to the June 2025 Playtest. Expect a lot of errors in the data. - - - diff --git a/IGP/Pages/Database/DatabaseSinglePage.razor b/IGP/Pages/Database/DatabaseSinglePage.razor index 45a0e7d..616cc59 100644 --- a/IGP/Pages/Database/DatabaseSinglePage.razor +++ b/IGP/Pages/Database/DatabaseSinglePage.razor @@ -11,14 +11,6 @@ - - Errors Present - - Database information was quickly updated to the June 2025 Playtest. Expect a lot of errors in the data. - - - - diff --git a/IGP/Pages/Database/Entity/Parts/EntityInfoComponent.razor b/IGP/Pages/Database/Entity/Parts/EntityInfoComponent.razor index 73a136d..2b90d6e 100644 --- a/IGP/Pages/Database/Entity/Parts/EntityInfoComponent.razor +++ b/IGP/Pages/Database/Entity/Parts/EntityInfoComponent.razor @@ -21,11 +21,6 @@ } -
- Test -
- -
@if (Entity.Faction() != null) diff --git a/Model/Entity/Data/DATA.cs b/Model/Entity/Data/DATA.cs index 8098271..57d8c16 100644 --- a/Model/Entity/Data/DATA.cs +++ b/Model/Entity/Data/DATA.cs @@ -250,10 +250,12 @@ public abstract class DATA Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, RequiresWorker = false, Slots = 1, TotalAmount = -1 }) - .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonCitadel }) + .AddPart(new EntityIdPassiveModel { Id = DataType.IPASSIVE_GreenThumb }) + .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonGroveGuardian }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_ProphetOfTheRoots }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_WallOfRoots }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonDeepWyrm }) + .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonRootBud }) .AddPart(new EntityIdVanguardModel { Id = DataType.VANGUARD_RootShepard_Atzlan }) .AddPart(new EntityIdVanguardModel { Id = DataType.VANGUARD_Resinant_Atzlan }) }, @@ -307,7 +309,7 @@ public abstract class DATA Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, RequiresWorker = false, Slots = 1, TotalAmount = -1 }) - .AddPart(new EntityIdPassiveModel { Id = DataType.IPASSIVE_AjarisGrace }) + .AddPart(new EntityIdPassiveModel { Id = DataType.IPASSIVE_MendingGrace }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonCitadel }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_HeavensAegis }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_DeliverFromEvil }) @@ -326,7 +328,7 @@ public abstract class DATA RequiresWorker = false, Slots = 1, TotalAmount = -1 }) .AddPart(new EntityIdPassiveModel { Id = DataType.IPASSIVE_OrdainedConquest }) - .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_ImperialFoundation }) + .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_RookOfIra }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonCitadel }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_EmpireUnbroken }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_PillarOfHeaven }) @@ -336,15 +338,13 @@ public abstract class DATA // Immortal Passives { - DataType.IPASSIVE_AjarisGrace, - new EntityModel(DataType.IPASSIVE_AjarisGrace, EntityType.Passive) + DataType.IPASSIVE_MendingGrace, + new EntityModel(DataType.IPASSIVE_MendingGrace, EntityType.Passive) .AddPart(new EntityInfoModel { - Name = "Ajari's Grace", + Name = "Mending Grace", Description = - "Ajari's presence slows heals friendly units within her Hallowed Ground. Units entering Hallowed Ground after a period of time receive a burst of healing.", - Notes = - "Units inside Hallowed Ground regenerate Life at 1/sec. While outside Hallowed Ground, Life that would have been regenerated is instead stored, up to 30 Life. Upon re-entering Hallowed Ground the unit regains all stored Life." + "Friendly units heal on Hallowed Ground. Units get an initial burst of healing after a delay, then heal over time.", }) }, { @@ -352,11 +352,10 @@ public abstract class DATA new EntityModel(DataType.IPASSIVE_OrdainedConquest, EntityType.Passive) .AddPart(new EntityInfoModel { - Name = "Ordained Conquest", Description = + Name = "Ordained Conquest", + Description = """ - Damaging an enemy Tower to 20% Life or lower will cause Orzum to appear and destroy the tower.
- Orzum's Citadels now generate pyre at a rate of 1 every 8 seconds.
- Citadel counter above resources to keep track of how big your pyre farm is getting. More tower more better
+ Citadels generate Pyre passively. Execute towers below 20% HP. """ }) }, @@ -367,7 +366,10 @@ public abstract class DATA { Name = "Mother's Hunger", Description = - "When a unit dies near one of Mala's Blood Wells, she gains pyre based on the dying unit's supply." + """ + Units that die near Blood Wells, Grove Guardians, Incubators, Dread Sisters, Mala's Specter, + and units that dies during Rain of Blood give Sacral Blood. + """ }) }, { @@ -376,7 +378,16 @@ public abstract class DATA .AddPart(new EntityInfoModel { Name = "Stalker's Sense", - Description = "Xol's troops are empowered with keen senses, increasing their vision range by 1." + Description = "Increases the vision range of your units by 1." + }) + }, + { + DataType.IPASSIVE_GreenThumb, + new EntityModel(DataType.IPASSIVE_GreenThumb, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Green Thumb", + Description = "Friendly units near Atzlan heal over time." }) }, @@ -487,7 +498,8 @@ public abstract class DATA """, FlavorText = """ - "Through our faith and duty bid us part, know that I will be here to protect you for the rest of yours days." + "Through our faith and duty bid us part, know that I will be here to protect you for the + rest of yours days."
—Zentari Lord Orz'Abin """ }) @@ -520,8 +532,13 @@ public abstract class DATA new EntityModel(DataType.VANGUARD_Sceptre_Orzum, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Sceptre", Descriptive = DescriptiveType.Frontliner, Description = "", - Notes = "Loses 16 energy per second when moving." + Name = "Sceptre", + Descriptive = DescriptiveType.Skirmisher, + Description = + """ + Air unit. Attacks ground targets. Anti-ground specialist.
+ Empowered attack does bonus damage and Burns adjacent enemies, dealing damage over time. + """ }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" }) @@ -555,9 +572,18 @@ public abstract class DATA new EntityModel(DataType.VANGUARD_Saoshin_Ajari, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Saoshin", Descriptive = DescriptiveType.Force_Multiplier, + Name = "Saoshin", + Descriptive = DescriptiveType.Support, Description = - "Support Caster (Ground Unit) - Has a decent melee attack and can buff units for a short duration. It can also heal." + """ + Ground Spell Caster. Casts a healing/utility spell. Protector. + """, + FlavorText = + """ + "You will hold fast the lost, dragging them to salvation. For only + your hearts can hold the boundless love of Q'rath"
+ —Ajari, Arash of Deliverance + """ }) .AddPart(new EntityTierModel { Tier = 1.5f }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" }) @@ -590,17 +616,21 @@ public abstract class DATA new EntityModel(DataType.VANGUARD_ArkMother_Ajari, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Ark Mother", Descriptive = DescriptiveType.Dislodger, + Name = "Ark Mother", + Descriptive = DescriptiveType.Support, Description = - "Dislodger - Support unit that creates a large area of damage reduction for friendly troops." + """ + Ground Spellcaster. Casts a utility spell. Protector.
+ Creates Hallowed Ground when still for a few seconds. + """ }) - .AddPart(new EntityTierModel { Tier = 2 }) + .AddPart(new EntityTierModel { Tier = 2.5f }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Hallower, ImmortalId = DataType.IMMORTAL_Ajari }) .AddPart(new EntityProductionModel - { Alloy = 150, Ether = 100, BuildTime = 32, ProducedBy = DataType.BUILDING_SoulFoundry }) + { Alloy = 125, Ether = 100, BuildTime = 32, ProducedBy = DataType.BUILDING_SoulFoundry }) .AddPart(new EntitySupplyModel { Takes = 5 }) .AddPart(new EntityVitalityModel { Energy = 100, Health = 150, DefenseLayer = 150, Armor = ArmorType.Medium, IsEtheric = true }) @@ -625,7 +655,20 @@ public abstract class DATA { DataType.VANGUARD_Incubator_Mala, new EntityModel(DataType.VANGUARD_Incubator_Mala, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Incubator", Descriptive = DescriptiveType.Support }) + .AddPart(new EntityInfoModel + { + Name = "Incubator", + Descriptive = DescriptiveType.Support, + Description = + """ + Ground unit. Can only attack ground. Mala Vanguard. Replaces Underspine. + """, + FlavorText = + """ + "We cannot understand their pain when they lose their motherhood, nor can we judge their measures to regain it."
+ —Atzlan, to Om'loch + """ + }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityRequirementModel { @@ -637,7 +680,7 @@ public abstract class DATA .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Underspine, ImmortalId = DataType.IMMORTAL_Mala }) .AddPart(new EntityProductionModel - { Alloy = 175, Ether = 50, BuildTime = 28, ProducedBy = DataType.BUILDING_AmberWomb }) + { Alloy = 75, Ether = 100, BuildTime = 28, ProducedBy = DataType.BUILDING_AmberWomb }) .AddPart(new EntitySupplyModel { Takes = 5 }) .AddPart(new EntityVitalityModel { Energy = 150, Health = 180, DefenseLayer = 40, Armor = ArmorType.Medium, IsEtheric = false }) @@ -646,7 +689,7 @@ public abstract class DATA { Damage = 16, Range = 700, SecondsBetweenAttacks = 1.65f, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_ProjectileGestation }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_FallenHarvest }) - .AddPart(new EntityIdAbilityModel() { Id = DataType.ABILITY_Hematoma }) + .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_Hematoma }) }, { DataType.VANGUARD_DreadSister_Mala, @@ -679,14 +722,14 @@ public abstract class DATA .AddPart(new EntityWeaponModel { Damage = 14, Range = 750, SecondsBetweenAttacks = 1.4f, Targets = TargetType.Ground }) .AddPart(new EntityWeaponModel - { - Damage = 120, - MediumDamage = 160, - HeavyDamage = 200, - Range = 1400, - SecondsBetweenAttacks = 4.0f, - Targets = TargetType.Ground - }) + { + Damage = 120, + MediumDamage = 160, + HeavyDamage = 200, + Range = 1400, + SecondsBetweenAttacks = 4.0f, + Targets = TargetType.Ground + }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_RootVice }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_BirthingStorm }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_DeployDreadSister }) @@ -697,7 +740,12 @@ public abstract class DATA { DataType.VANGUARD_RootShepard_Atzlan, new EntityModel(DataType.VANGUARD_RootShepard_Atzlan, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Root Shepard", Descriptive = DescriptiveType.Skirmisher }) + .AddPart(new EntityInfoModel + { + Name = "Root Shepard", + Descriptive = DescriptiveType.Skirmisher, + Description = "Can generate rootway." + }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityRequirementModel { @@ -726,7 +774,12 @@ public abstract class DATA { DataType.VANGUARD_Resinant_Atzlan, new EntityModel(DataType.VANGUARD_Resinant_Atzlan, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Resinant", Descriptive = DescriptiveType.ZoneControl }) + .AddPart(new EntityInfoModel + { + Name = "Resinant", + Descriptive = DescriptiveType.ZoneControl, + Description = "Ground unit. Can only attack ground." + }) .AddPart(new EntityTierModel { Tier = 2.5f }) .AddPart(new EntityRequirementModel { @@ -766,7 +819,18 @@ public abstract class DATA { DataType.VANGUARD_BoneStalker_Xol, new EntityModel(DataType.VANGUARD_BoneStalker_Xol, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Bone Stalker", Descriptive = DescriptiveType.Generalist }) + .AddPart(new EntityInfoModel + { + Name = "Bone Stalker", + Descriptive = DescriptiveType.Generalist, + Description = "Ground unit. Attacks ground/air targets. Stealthy.", + FlavorText = + """ + "They will come in deathy silence, awaiting the Great Hunt. In time, the 'Bone-Takers' shall + be without equal."
+ —Xol, Prophecies of the Icta'nuat + """ + }) .AddPart(new EntityTierModel { Tier = 1 }) .AddPart(new EntityRequirementModel { @@ -791,7 +855,12 @@ public abstract class DATA { DataType.VANGUARD_WhiteWoodReaper_Xol, new EntityModel(DataType.VANGUARD_WhiteWoodReaper_Xol, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "White Wood Reaper", Descriptive = DescriptiveType.Assassin }) + .AddPart(new EntityInfoModel + { + Name = "White Wood Reaper", + Descriptive = DescriptiveType.Skirmisher, + Description = "Ground unit. Attacks ground targets. Permanently Hidden." + }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityRequirementModel { @@ -844,7 +913,16 @@ public abstract class DATA { Name = "Sipari", Descriptive = DescriptiveType.Frontliner, Description = - @"Melee Warrior (Ground Unit) - Front-line warriors enhanced by Hallowed Ground." + """ + Ground unit. Attacks ground targets. Durable melee fighter.
+ Gets Shields in Hallowed Ground.
+ """, + FlavorText = + """ + "From the ranks of the faithful shall the true-hearted step forward. They shall + be My spear, My shield, pointed forever outward against Wicked and Beast!"
+ —Holy Aros, "Utterances 16.9" + """ }) .AddPart(new EntityTierModel { Tier = 1 }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" }) @@ -876,12 +954,11 @@ public abstract class DATA new EntityModel(DataType.UNIT_Magi, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Magi", Descriptive = DescriptiveType.Force_Multiplier, + Name = "Magi", Descriptive = DescriptiveType.Support, Description = """ Ground Spellcaster. Casts healing/utility spells. Protector.
-
- Deploy to get Sheilds and create Hallowed Ground. + Deploy to get Shields and create Hallowed Ground. """ }) .AddPart(new EntityTierModel { Tier = 1.5f }) @@ -919,15 +996,22 @@ public abstract class DATA new EntityModel(DataType.UNIT_Zephyr, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Zephyr", Descriptive = DescriptiveType.Generalist, + Name = "Zephyr", + Descriptive = DescriptiveType.Generalist, Description = - "Ranged Generalist (Ground Unit) - Can attack ground and air. Has a short-ranged teleport ability for advanced mobility." + """ + Ground unit. Attacks ground/air targets. Can teleport. + """, + FlavorText = + """ + Once named, the bound between zephyr and pilot cannot be broken. + """ }) .AddPart(new EntityTierModel { Tier = 1.5f }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel - { Alloy = 100, Ether = 40, BuildTime = 24, ProducedBy = DataType.BUILDING_SoulFoundry }) + { Alloy = 100, Ether = 40, BuildTime = 24, ProducedBy = DataType.BUILDING_LegionHall }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityRequirementModel { @@ -936,7 +1020,7 @@ public abstract class DATA }) .AddPart(new EntityRequirementModel { - Id = DataType.BUILDING_Reliquary, + Id = DataType.BUILDING_MonasteryOfIzur, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 255, DefenseLayer = 105, Armor = ArmorType.Heavy }) @@ -955,9 +1039,13 @@ public abstract class DATA new EntityModel(DataType.UNIT_Dervish, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Dervish", Descriptive = DescriptiveType.Harrier, + Name = "Dervish", + Descriptive = DescriptiveType.Skirmisher, Description = - "Skirmisher (Ground Unit) - Swift unit used to harass enemy outposts. Can only attack ground." + """ + Ground unit. Attacks ground targets. Fragile and agile.
+ Can use Radiant Ward to lay mines. Has damage reduction. + """ }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" }) @@ -987,10 +1075,16 @@ public abstract class DATA new EntityModel(DataType.UNIT_Absolver, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Absolver", Descriptive = DescriptiveType.ZoneControl, + Name = "Absolver", + Descriptive = DescriptiveType.ZoneControl, Description = - "Zone Control (Ground Unit) - Deploys to gain increased rate of fire to hold a position. Can only attack ground.", - Notes = "Deploy time is 2 seconds. Mobilize time is 1.5 seconds." + """ + Ground unit. Attacks ground targets. Deploys for area damage. + """, + Notes = + """ + Has a higher DPS against structures when unmobilized. + """ }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" }) @@ -1024,9 +1118,11 @@ public abstract class DATA new EntityModel(DataType.UNIT_Castigator, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Castigator", Descriptive = DescriptiveType.AirDenial, + Name = "Castigator", Descriptive = DescriptiveType.AirKiller, Description = - "Air Denial (Ground Unit) - A tough walker with a powerful, long-range anti-air attack." + """ + Ground unit. Can attack air and ground. + """ }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1043,8 +1139,13 @@ public abstract class DATA }) .AddPart(new EntityWeaponModel { - Damage = 20, MediumDamage = 30, HeavyDamage = 40, Range = 800, SecondsBetweenAttacks = 1.42f, - Targets = TargetType.Air + Damage = 20, + MediumDamage = 30, + HeavyDamage = 40, + Range = 800, + SecondsBetweenAttacks = 1.42f, + Targets = TargetType.Air, + HasSplash = true }) .AddPart(new EntityWeaponModel { Damage = 16, Range = 500, SecondsBetweenAttacks = 1.5f, Targets = TargetType.Ground }) @@ -1095,8 +1196,12 @@ public abstract class DATA new EntityModel(DataType.UNIT_Sentinel, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Sentinel", Descriptive = DescriptiveType.Air_Superiority, - Description = "Flying Anti-Air Angel" + Name = "Sentinel", + Descriptive = DescriptiveType.AirKiller, + Description = + """ + Air unit. Attacks air targets. Anti-air specialist. + """ }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1115,17 +1220,26 @@ public abstract class DATA { Damage = 28, Range = 500, AttacksPerSecond = 0.714f, Targets = TargetType.Air }) + //TODO: Connect Sentinel mobilize ability }, { DataType.UNIT_Throne, new EntityModel(DataType.UNIT_Throne, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Throne", Descriptive = DescriptiveType.Generalist, + Name = "Throne", + Descriptive = DescriptiveType.Generalist, Description = - "Crown Jewel (Flying Unit) - Massive flying bruiser that automatically attacks nearby units with its swords, even while moving." + """ + Air unit. Attacks ground/air targets. Ultimate unit. + """, + FlavorText = + """ + The Godhead Aros left silvers of itself in them, and no sight is more fearsome + to its enemies. + """ }) - .AddPart(new EntityTierModel { Tier = 3 }) + .AddPart(new EntityTierModel { Tier = 3.5f }) .AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel @@ -1158,9 +1272,12 @@ public abstract class DATA new EntityModel(DataType.UNIT_Warden, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Warden", Descriptive = DescriptiveType.Harrier, + Name = "Warden", + Descriptive = DescriptiveType.Skirmisher, Description = - @"Gunship (Flying Unit) - Air-to-ground specialist. Flight also it to ignore terrain." + """ + Air unit. Attacks ground targets. Anti-ground specialist. + """ }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1186,7 +1303,11 @@ public abstract class DATA { DataType.UNIT_SharU, new EntityModel(DataType.UNIT_SharU, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Shar'U", Descriptive = DescriptiveType.EliteCaster }) + .AddPart(new EntityInfoModel + { + Name = "Shar'U", + Descriptive = DescriptiveType.DamageCaster + }) .AddPart(new EntityTierModel { Tier = 3.5f }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -1237,9 +1358,12 @@ public abstract class DATA new EntityModel(DataType.UNIT_MaskedHunter, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Masked Hunter", Descriptive = DescriptiveType.Generalist, + Name = "Masked Hunter", + Descriptive = DescriptiveType.Generalist, Description = - "Ranged Generalist (Ground Unit) - Can attack ground and air, and sacrifice health for a temporary boost to its range and speed." + """ + Ground Unit. Can attack ground and air. + """ }) .AddPart(new EntityTierModel { Tier = 1 }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "Z" }) @@ -1268,7 +1392,15 @@ public abstract class DATA { DataType.UNIT_Xacal, new EntityModel(DataType.UNIT_Xacal, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Xacal", Descriptive = DescriptiveType.Frontliner }) + .AddPart(new EntityInfoModel + { + Name = "Xacal", + Descriptive = DescriptiveType.Skirmisher, + Description = + """ + Ground unit. Attacks ground targets. Anti-Armor specialist. + """ + }) .AddPart(new EntityTierModel { Tier = 1.5f }) .AddPart(new EntityRequirementModel { @@ -1283,7 +1415,7 @@ public abstract class DATA .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel - { Alloy = 75, Ether = 30, BuildTime = 20, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) + { Alloy = 80, Ether = 30, BuildTime = 20, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 3 }) .AddPart(new EntityVitalityModel { Health = 210, DefenseLayer = 110, Armor = ArmorType.Medium }) .AddPart(new EntityMovementModel { Speed = 516, Movement = MovementType.Ground }) @@ -1299,7 +1431,22 @@ public abstract class DATA { DataType.UNIT_Bloodbound, new EntityModel(DataType.UNIT_Bloodbound, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Bloodbound", Descriptive = DescriptiveType.Assassin }) + .AddPart(new EntityInfoModel + { + Name = "Bloodbound", + Descriptive = DescriptiveType.Frontliner, + Description = + """ + Ground unit. Attacks ground targets. Hard to kill. + """, + FlavorText = + """ + "With this act, I sever myself from families proud and pleasures fickle. My hands shall + clutch no babe nor trophy, for I am Laculathon's hungering blade." +
+ —Bloodbound initiation Rites + """ + }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Xol, ReplacedById = DataType.VANGUARD_WhiteWoodReaper_Xol }) @@ -1330,11 +1477,19 @@ public abstract class DATA .AddPart(new EntityIdPassiveModel { Id = DataType.ABILITY_BloodyRebound }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_CastingFromBlood }) }, - + { DataType.UNIT_BloodAnchor, new EntityModel(DataType.UNIT_BloodAnchor, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Blood Anchor", Descriptive = DescriptiveType.ZoneControl }) + .AddPart(new EntityInfoModel + { + Name = "Blood Anchor", + Descriptive = DescriptiveType.ZoneControl, + Description = + """ + Ground unit. Can't attack. Deploys to spawn Cystic Crawlers and Rootway. + """ + }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Atzlan, ReplacedById = DataType.VANGUARD_Resinant_Atzlan }) @@ -1359,11 +1514,19 @@ public abstract class DATA .AddPart(new EntityIdPassiveModel { Id = DataType.ABILITY_MobilizeAru }) .AddPart(new EntityIdPassiveModel { Id = DataType.ABILITY_DeployBloodAnchor }) }, - + { DataType.UNIT_RedSeer, new EntityModel(DataType.UNIT_RedSeer, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Red Seer", Descriptive = DescriptiveType.EliteCaster }) + .AddPart(new EntityInfoModel + { + Name = "Red Seer", + Descriptive = DescriptiveType.DamageCaster, + Description = + """ + Ground Spellcaster. Casts damage and utility spells. Ultimate Spellcaster. + """ + }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Mala, ReplacedById = DataType.VANGUARD_DreadSister_Mala }) @@ -1400,8 +1563,9 @@ public abstract class DATA new EntityModel(DataType.UNIT_Underspine, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Underspine", Descriptive = DescriptiveType.Force_Multiplier, - Notes = "" + Name = "Underspine", + Descriptive = DescriptiveType.Support, + Description = "Ground unit. Can attack ground and air." }) .AddPart(new EntityTierModel { Tier = 1.5f }) .AddPart(new EntityVanguardReplacedModel @@ -1429,24 +1593,40 @@ public abstract class DATA TargetType.All }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_OssifyingSwarm }) - .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_ObstructingSwarm}) - + .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_ObstructingSwarm }) }, { DataType.UNIT_Ichor, new EntityModel(DataType.UNIT_Ichor, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Ichor", Descriptive = DescriptiveType.Harrier }) - .AddPart(new EntityTierModel { Tier = 2 }) + .AddPart(new EntityInfoModel + { + Name = "Ichor", + Descriptive = DescriptiveType.Skirmisher, + Description = + """ + Ground unit. Attacks ground targets. Fragile and agile. + """, + FlavorText = + """ + "Kissed an ichor:" Aru phrase for "dying by one's own stupidity." + """ + }) + .AddPart(new EntityTierModel { Tier = 1.5f }) .AddPart(new EntityRequirementModel { - Id = DataType.BUILDING_AmberWomb, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel - { Alloy = 100, Ether = 0, BuildTime = 24, ProducedBy = DataType.BUILDING_AmberWomb }) - .AddPart(new EntitySupplyModel { Takes = 4 }) + { Alloy = 80, Ether = 0, BuildTime = 24, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) + .AddPart(new EntityRequirementModel + { + Id = DataType.BUILDING_MurderHollow, + Requirement = RequirementType.Research_Building + }) + .AddPart(new EntitySupplyModel { Takes = 3 }) .AddPart(new EntityVitalityModel { Health = 100, DefenseLayer = 40, Armor = ArmorType.Medium }) .AddPart(new EntityMovementModel { Speed = 424, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel @@ -1461,7 +1641,15 @@ public abstract class DATA { DataType.UNIT_Aarox, new EntityModel(DataType.UNIT_Aarox, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Aarox", Descriptive = DescriptiveType.Air_Superiority }) + .AddPart(new EntityInfoModel + { + Name = "Aarox", + Descriptive = DescriptiveType.AirKiller, + Description = + """ + Air unit. Attacks air targets. Self-destructs to do area damage. + """ + }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityRequirementModel { @@ -1476,7 +1664,7 @@ public abstract class DATA .AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel - { Alloy = 40, Ether = 40, BuildTime = 24, ProducedBy = DataType.BUILDING_BoneCanopy }) + { Alloy = 20, Ether = 20, BuildTime = 24, ProducedBy = DataType.BUILDING_BoneCanopy }) .AddPart(new EntitySupplyModel { Takes = 2 }) .AddPart(new EntityVitalityModel { Health = 55, DefenseLayer = 10, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 490, Movement = MovementType.Air }) @@ -1492,7 +1680,16 @@ public abstract class DATA { DataType.UNIT_Thrum, new EntityModel(DataType.UNIT_Thrum, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Thrum", Descriptive = DescriptiveType.Harrier }) + .AddPart(new EntityInfoModel + { + Name = "Thrum", + Descriptive = DescriptiveType.Skirmisher, + Description = + """ + Air unit. Attacks ground/air targets. Fragile and agile.
+ Thrums get attack speed when a Thrum kills an enemy. + """ + }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityRequirementModel { @@ -1502,7 +1699,7 @@ public abstract class DATA .AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel - { Alloy = 80, Ether = 75, BuildTime = 24, ProducedBy = DataType.BUILDING_BoneCanopy }) + { Alloy = 80, Ether = 65, BuildTime = 24, ProducedBy = DataType.BUILDING_BoneCanopy }) .AddPart(new EntitySupplyModel { Takes = 3 }) .AddPart(new EntityVitalityModel { Health = 150, DefenseLayer = 50, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 580, Movement = MovementType.Air }) @@ -1516,7 +1713,15 @@ public abstract class DATA { DataType.UNIT_WraithBow, new EntityModel(DataType.UNIT_WraithBow, EntityType.Army) - .AddPart(new EntityInfoModel { Name = "Wraith Bow", Descriptive = DescriptiveType.AirDenial }) + .AddPart(new EntityInfoModel + { + Name = "Wraith Bow", + Descriptive = DescriptiveType.AirKiller, + Description = + """ + Ground unit. Attacks ground/air targets. Anti-air specialist. + """ + }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityRequirementModel { @@ -1542,7 +1747,12 @@ public abstract class DATA new EntityModel(DataType.UNIT_Behemoth, EntityType.Army) .AddPart(new EntityInfoModel { - Name = "Behemoth", Descriptive = DescriptiveType.Skirmisher + Name = "Behemoth", + Descriptive = DescriptiveType.Skirmisher, + Description = + """ + Air unit. Attacks ground targets. Long-range attack. + """ }) .AddPart(new EntityTierModel { Tier = 3.5f }) .AddPart(new EntityRequirementModel @@ -1663,7 +1873,7 @@ public abstract class DATA .AddPart(new EntityInfoModel { Name = "Faith-Cast Blades", Descriptive = DescriptiveType.Upgrade, - Description = + Description = """ Zentari get more range attack when in Hallowed Ground. """ @@ -1917,10 +2127,10 @@ public abstract class DATA .AddPart(new EntityInfoModel { Name = "Pursuit Ligaments", - Description = - """ - Ichors get more movement speed. - """, + Description = + """ + Ichors get more movement speed. + """, Descriptive = DescriptiveType.Upgrade }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "X" }) @@ -2030,7 +2240,7 @@ public abstract class DATA .AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 100, ProducedBy = DataType.BUILDING_Neurocyte }) }, - + { DataType.UPGRADE_Hematoma, new EntityModel(DataType.UPGRADE_Hematoma, EntityType.Tech) @@ -2065,11 +2275,12 @@ public abstract class DATA .AddPart(new EntityProductionModel { Alloy = 200, Ether = 200, BuildTime = 46, ProducedBy = DataType.BUILDING_DeepNest }) }, - + { DataType.UPGRADE_HyperAdrenoceptors, new EntityModel(DataType.UPGRADE_HyperAdrenoceptors, EntityType.Tech) - .AddPart(new EntityInfoModel { Name = "Hyper Adrenoceptors", Descriptive = DescriptiveType.Upgrade }) + .AddPart(new EntityInfoModel + { Name = "Hyper Adrenoceptors", Descriptive = DescriptiveType.Upgrade }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "X", HoldSpace = true }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityRequirementModel @@ -2080,7 +2291,7 @@ public abstract class DATA .AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 60, ProducedBy = DataType.BUILDING_DeepNest }) }, - + { DataType.UPGRADE_EoxBowstring, new EntityModel(DataType.UPGRADE_EoxBowstring, EntityType.Tech) @@ -2451,7 +2662,7 @@ public abstract class DATA .AddPart(new EntityInfoModel { Name = "Zeal", Descriptive = DescriptiveType.Passive, - Description = @"30% increased attack speed to allied near Pillar of the Heavens" + Description = @"Increased attack speed to allied near Pillar of the Heavens" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) }, @@ -2664,7 +2875,7 @@ public abstract class DATA { Name = "Intervention", Descriptive = DescriptiveType.Ability, Description = - @"The Saoshin releases healing energy. Allied units nearby heal over several seconds. This automatically activates when the Saoshin drops below 70 HP." + "The Saoshin releases healing energy. Allied units nearby heal over several seconds. This automatically activates when the Saoshin drops below 70 HP." }) .AddPart(new EntityProductionModel { Pyre = 70, Cooldown = 5 }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3166,7 +3377,7 @@ public abstract class DATA .AddPart(new EntityInfoModel { Name = "Deploy Dread Sister", Descriptive = DescriptiveType.Dislodger, - Description = + Description = """ Deploy to get more damage and more range.

@@ -3240,11 +3451,15 @@ public abstract class DATA .AddPart(new EntityInfoModel { Name = "Summon Citadel", - Description = "Creates a powerful defensive structure on a Tower Foundation." + Description = + """ + Target a Phyric Foundation. Summon a Citadel.
+ Can attack ground and air. Heals friendly units. Does not require a worker. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "V" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) - .AddPart(new EntityProductionModel { Pyre = 75, BuildTime = 70 }) + .AddPart(new EntityProductionModel { Pyre = 50, BuildTime = 70 }) .AddPart(new EntityVitalityModel { Health = 1000, DefenseLayer = 500, Armor = ArmorType.Heavy, IsStructure = true }) .AddPart(new EntityWeaponModel @@ -3257,20 +3472,18 @@ public abstract class DATA }, // Orzum { - DataType.ISPELL_ImperialFoundation, - new EntityModel(DataType.ISPELL_ImperialFoundation, EntityType.Pyre_Spell) + DataType.ISPELL_RookOfIra, + new EntityModel(DataType.ISPELL_RookOfIra, EntityType.Pyre_Spell) .AddPart(new EntityInfoModel { - Name = "Imperial Foundation", + Name = "Rook of Ira", Description = - @"Create a new tower foundation to use to expand the empire.", - Notes = - " - After an 8 second delay, creates a destructible Tower Foundation.
- Destructible Tower Foundations are invulnerable while a tower is placed on them.
" + "Target a location to summon a Rook of Ira.", }) - .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "V" }) + .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "V" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Orzum }) - .AddPart(new EntityProductionModel { Pyre = 25, Cooldown = 30 }) + .AddPart(new EntityProductionModel { Pyre = 125, Cooldown = 90, BuildTime = 3}) }, { DataType.ISPELL_EmpireUnbroken, @@ -3280,13 +3493,12 @@ public abstract class DATA Name = "Empire Unbroken", Description = """ - Protects nearby buildings with 70% damage reduction for 10 seconds.
- Structures still alive after 10 seconds will heal for 50% of their Life and Shields.
- When cast on a Citadel it will transform it into a Rook of Ira, a more powerful Tower with an area attack.
- When cast on a Pillar, after a short delay Orzum will appear above the pillar and attack 4 times dealing 160 (!!) damage per hit.
+ Targe an area. Buildings get damage reduction then heal.
+ Temporary. Healing happens at the end of the spell.
+ Temporarily turns Citadels into Rooks of Ira. """ }) - .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "V" }) + .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "V" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Orzum }) .AddPart(new EntityProductionModel { Pyre = 50, Cooldown = 120 }) @@ -3298,16 +3510,15 @@ public abstract class DATA { Name = "Pillar of the Heavens", Description = - @"Summons a powerful monument that slams into the ground to deal damage to enemy ground units (and takes damage from everything it lands on). It then creates Hallowed Ground and nearby friendly units gain Attack Speed", - Notes = - "- After a 4 second telegraph a Pillar Of Reclamation will crash down dealing damage to nearby enemy units. (this and below are the same as before)
- Pillar has 300 Life & 200 shield
- Deals up to 300 damage to units and structures directly under the Pillar. This also damages the Pillar for the damage dealt.
- Deals 75 damage to nearby ground units and structures.
- Pillar creates Hallowed Ground.
- Pillar has Zeal aura: provides 30% increased attack speed" + """ + Target an area to deal massive area damage.
+ Creates temporary Hallowed Ground that improves friendly unit attack speed. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "V" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Orzum }) - .AddPart(new EntityProductionModel { Pyre = 200, Cooldown = 120 }) - .AddPart(new EntityVitalityModel - { Health = 300, DefenseLayer = 200, Armor = ArmorType.Heavy, IsStructure = true }) + .AddPart(new EntityProductionModel { Pyre = 150, Cooldown = 120 }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Zeal }) }, // Ajari @@ -3318,14 +3529,15 @@ public abstract class DATA { Name = "Heaven's Aegis", Description = - @"Provides a Barrier to a nearby allied unit once every 0.5 seconds. And barrier is reapplied every 5 seconds.", - Notes = - " - Summons Ajari (movable).
- Every 0.5s Ajari applies a Barrier (Blocks one instance of damage) that lasts 20s to the closest nearby unit without one." + """ + Target a friendly unit. It gets movement speed and Shields.
+ Periodically saves charges, up to a cap. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "V" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Ajari }) - .AddPart(new EntityProductionModel { Pyre = 75, Cooldown = 30 }) + .AddPart(new EntityProductionModel { Pyre = 25, Cooldown = 0.5f }) }, { DataType.ISPELL_DeliverFromEvil, @@ -3334,9 +3546,10 @@ public abstract class DATA { Name = "Deliver from Evil", Description = - @"Summons Ajari. Allied units near Ajari gain bonus shields. After a short delay, nearby allied units teleport to the nearest Acropolis.", - Notes = - " - Summons Ajari (cannot move).
- Applies bonus Max Shield to units that enter the area around her in a radius of 200.
- After 5 seconds all units in range are teleported to the closest Acropolis owned by the player. Fails if the Ajari player has no Acropolis." + """ + Target an area. Friendly units teleport to your nearest Acropolis.
+ Units get Shields for a few seconds before teleporting. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "V" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3350,14 +3563,16 @@ public abstract class DATA { Name = "Salvation", Description = - "Ajari manifests for 10 seconds to save nearby units from death. Instead of dying, allied units are teleported to Ajari with 25% life.", - Notes = - " - Summons Ajari (unmoveable).
- Units anywhere will be saved from death one time, instead being teleported to Ajari and healed a small amount." + """ + Target a location. Summon Ajari's Specter to prevent death.
+ Saved units are brought back to Ajari's location at the end of the duration. Destroying Ajari's + Urn ends the effect and prevents Saved units from coming back. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "V" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Ajari }) - .AddPart(new EntityProductionModel { Pyre = 200, Cooldown = 120 }) + .AddPart(new EntityProductionModel { Pyre = 175, Cooldown = 45 }) }, // Immortal Spells // Aru @@ -3421,8 +3636,7 @@ public abstract class DATA Name = "Wall of Roots", Description = """ - Spawn a Wall of Roots that blocks ground pathing - + Spawn a Wall of Roots that blocks ground pathing.
Click and drag to "draw" the wall. Wall takes damage over time when it's off rootway. """ }) @@ -3441,8 +3655,7 @@ public abstract class DATA Name = "Summon Deep Wyrm", Description = """ - The Deep Wyrm roams in the area and attacks any ground enemy unit entering the rootway. - + The Deep Wyrm roams in the area and attacks any ground enemy unit entering the rootway.
Spawns rootway on summon. The Deep Wyrm is invulnerable and uncontrollable. """ }) @@ -3461,8 +3674,7 @@ public abstract class DATA Name = "Summon Root Bud", Description = """ - Generates Rootway - + Generates Rootway
Must be placed on Rootway and in range of another Root Bud or Stronghold """ }) @@ -3483,12 +3695,9 @@ public abstract class DATA Name = "Red Harvest", Description = """ - Target a location to summon Mala's Specter. - + Target a location to summon Mala's Specter.
Nearby units make Quitl and give Sacral Blood on-death. - """, - Notes = - " - Summons Mala (moveable).
- Quitl Seed Aura of radius 400: All units around Mala spawn a Quitl when they die.
- Red Harvest Quitle last for 60 seconds." + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "V" }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Mala }) @@ -3503,14 +3712,10 @@ public abstract class DATA Name = "Prophet's Favor", Description = """ - Target an area. Permanently empower units. - - Empowered units get more HP and damage. Does not stack. + Target an area. Permanently empower units.
+ Empowered units get more HP and damage. Does not stack.
Costs Sacral Blood. Get Sacral Blood from Mala's other Powers and Vanguard. - - """, - Notes = - " - Summons Mala (unmoveable).
- Once the nearest owned unit's supply is doubled by Mala's upgrade supply it will be deemed Worthy, consuming the stored upgrade supply.
- Units of zero supply cost take 1 blood.
- Worthy: Permanent upgrade that gives +30% Max Life and +30% Damage." + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "V" }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Mala }) @@ -3524,9 +3729,7 @@ public abstract class DATA { Name = "Rain of Blood", Description = - "Rains blood from the sky for 30 seconds. Massively increases global life regeneration for allied troops. Allies anywhere also have significantly increased blood regeneration.", - Notes = - " - Summons Mala (unmoveable).
- All friendly units gain Life regeneration of 5/s.
- Friendly units in a large area around Mala gain a Mana regeneration of 5/s.
- Extends the Blood Well passive to enemy units, i.e. every enemy unit killed will give pyre equal to half it's supply (rounded down)" + "Rains blood from the sky for 30 seconds. Massively increases global life regeneration for allied troops. Allies anywhere also have significantly increased blood regeneration." }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "V" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -3602,8 +3805,19 @@ public abstract class DATA new EntityModel(DataType.BUILDING_Acropolis, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Acropolis", Descriptive = DescriptiveType.Town_Hall, - Description = "Town Hall (Structure) - Necessary for collecting Alloy and Ether." + Name = "Acropolis", + Descriptive = DescriptiveType.Stronghold, + Description = + """ + Collect Alloy and Ether.
+ If all your Strongholds are destroyed, you lose the game. + """, + FlavorText = + """ + "Bereft of Ancient Kin, from My burning heart new mothers shall be made and woven onto + the grateful earth. And within their walls, the righteous shall gather in great number."
+ —Holy Aros, "Utterances 14.7" + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3684,14 +3898,18 @@ public abstract class DATA TotalAmount = 100 }) }, - + { DataType.BUILDING_ApostleOfBinding, new EntityModel(DataType.BUILDING_ApostleOfBinding, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Apostle of Binding", Descriptive = DescriptiveType.Ether_Extractor, - Description = "Ether Extractor (Structure) - Must be placed on an Ether Node." + Name = "Apostle of Binding", + Descriptive = DescriptiveType.Economy, + Description = + """ + Automatically harvest Ether. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "TAB", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3700,8 +3918,11 @@ public abstract class DATA { Health = 300, DefenseLayer = 200, Armor = ArmorType.Heavy, IsStructure = true }) .AddPart(new EntityHarvestModel { - HarvestedPerInterval = 1.5625f, RequiresWorker = false, Resource = ResourceType.Ether, - Slots = 1, TotalAmount = 1200 + HarvestedPerInterval = 1.5625f, + RequiresWorker = false, + Resource = ResourceType.Ether, + Slots = 1, + TotalAmount = 1200 }) }, { @@ -3709,8 +3930,17 @@ public abstract class DATA new EntityModel(DataType.BUILDING_LegionHall, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Legion Hall", Descriptive = DescriptiveType.Production, - Description = "Army Production (Structure) - Produces infantry units." + Name = "Legion Hall", + Descriptive = DescriptiveType.Training, + Description = + """ + Trains Sipari, Zephyrs, Magi, and their Vanguard Replacements. Increases Population Capacity. + """, + FlavorText = + """ + "May the angels' army grow in size. May its many arms grow in strength. And may its soul grow in faith."
+ —Steel Banner-Lord Sian + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3725,8 +3955,12 @@ public abstract class DATA new EntityModel(DataType.DEFENSE_FireSinger, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Fire Singer", Descriptive = DescriptiveType.Defense, - Description = "Q'Rath Defensive structure." + Name = "Fire Singer", + Descriptive = DescriptiveType.Defense, + Description = + """ + Attacks ground/air targets. Does damage over time. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3751,8 +3985,13 @@ public abstract class DATA new EntityModel(DataType.BUILDING_KeeperOfTheHardenedFlames, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Keeper Of the Hardened Flames", Descriptive = DescriptiveType.Defense, - Description = "" + Name = "Keeper Of the Hardened Flames", + Descriptive = DescriptiveType.Technology, + Description = + """ + Unlocks Attack and Defense Upgrades for all units.
+ Unlocks Fire Singer building and research. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "TAB", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3765,9 +4004,12 @@ public abstract class DATA new EntityModel(DataType.BUILDING_Reliquary, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Reliquary", Descriptive = DescriptiveType.Research, + Name = "Reliquary", Descriptive = DescriptiveType.Technology, Description = - "Unlocks training of Magi and their Vanguard replacements." + """ + Unlocks training of Magi and their Vanguard replacements.
+ Unlocks research for Sipari and their Vanguard replacements. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3787,9 +4029,13 @@ public abstract class DATA new EntityModel(DataType.BUILDING_MonasteryOfIzur, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Monastery of Izur", Descriptive = DescriptiveType.Research, + Name = "Monastery of Izur", + Descriptive = DescriptiveType.Technology, Description = - "Unlocks training of Zephyrs and their Vanguard replacements" + """ + Unlocks training of Zephyrs and their Vanguard replacements.
+ Unlocks research for Zephyrs and their Vanguard replacements. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3810,8 +4056,12 @@ public abstract class DATA new EntityModel(DataType.BUILDING_SoulFoundry, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Soul Foundry", Descriptive = DescriptiveType.Production, - Description = "Army Production (Structure) - Produces advanced ground units." + Name = "Soul Foundry", + Descriptive = DescriptiveType.Training, + Description = + """ + Trains Hallowers, Castigators, Absolvers, and their Vanguard replacements. Increases Population Capacity. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3832,8 +4082,17 @@ public abstract class DATA new EntityModel(DataType.BUILDING_HouseOfFadingSaints, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "House of the Fading Saints", Descriptive = DescriptiveType.Research, - Description = "Research (Structure) - Has tech for the Soul Foundry. Unlocks Hallower." + Name = "House of the Fading Saints", + Descriptive = DescriptiveType.Technology, + Description = + """ + Unlocks training of Hallowers and their Vanguard replacements. + """, + FlavorText = + """ + "And soul pases unto the horizon, joining to the Holiest of Holies and the Host of Heaven."
+ — Ceremony of the Passing + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3852,8 +4111,12 @@ public abstract class DATA new EntityModel(DataType.BUILDING_Angelarium, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Angelarium", Descriptive = DescriptiveType.Production, - Description = "Army Production (Structure) - Produces flying units" + Name = "Angelarium", + Descriptive = DescriptiveType.Training, + Description = + """ + Trains Sentinels, Wardens, Thrones, Shar'U and their Vanguard replacements. Increases Population Capacity. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3874,8 +4137,19 @@ public abstract class DATA new EntityModel(DataType.BUILDING_EyeOfAros, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Eye of Aros", Descriptive = DescriptiveType.Research, - Description = "Research (Structure) - Unlocks the Shar'U and some late-game Q'Rath upgrades." + Name = "Eye of Aros", + Descriptive = DescriptiveType.Technology, + Description = + """ + Unlocks training of Shar'U.
+ Unlocks research for Sipari, Shar'U, and their Vanguard replacements. + """, + FlavorText = + """ + "Where My gaze shall fall, blessed son and sun of Mine, you shall go forth + and claim in Our Holy Cause. For you are My Lance and My Rook, and you shall never fail me."
+ —Holy Aros to Orzum + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3894,8 +4168,13 @@ public abstract class DATA new EntityModel(DataType.BUILDING_BearerOfTheCrown, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Bearer of the Crown", Descriptive = DescriptiveType.Research, - Description = "Research (Structure) - Unlocks the Throne and researches for Angelarium." + Name = "Bearer of the Crown", + Descriptive = DescriptiveType.Technology, + Description = + """ + Unlocks training of Thrones.
+ Unlocks research for: Thrones, Wardens, and their vanguard replacements. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) @@ -3916,8 +4195,12 @@ public abstract class DATA new EntityModel(DataType.BUILDING_GroveHeart, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Grove Heart", Descriptive = DescriptiveType.Town_Hall, - Description = "Town Hall (Structure) - Necessary for collection Alloy and Ether." + Name = "Grove Heart", Descriptive = DescriptiveType.Stronghold, + Description = + """ + Collect Alloy and Ether.
+ If all your Strongholds are destroyed, you lose the game. + """ }) //TODO: Add Alloy, Ether and Pyre, Supply to the database .AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -3983,8 +4266,15 @@ public abstract class DATA new EntityModel(DataType.BUILDING_EtherMaw, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Ether Maw", Descriptive = DescriptiveType.Ether_Extractor, - Description = "Ether Extractor (Structure) - Must be placed on an Ether Node." + Name = "Ether Maw", + Descriptive = DescriptiveType.Economy, + Description = "Automatically harvest Ether.", + FlavorText = + """ + "The Matriarchs tell of where the ether goes. ARound Lacuathon's trunk swirls a great aurora of + this world's lifeblood, flowing upwards into the half-eaten sky."
+ —Hunter Ipotzil + """ }) //TODO Add Ether Node to database .AddPart(new EntityHotkeyModel { Hotkey = "TAB", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -4002,13 +4292,17 @@ public abstract class DATA new EntityModel(DataType.BUILDING_AltarOfTheWorthy, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Altar of the Worthy", Descriptive = DescriptiveType.Production, - Description = "Army Production (Structure) - Produces infantry ground units" + Name = "Altar of the Worthy", + Descriptive = DescriptiveType.Training, + Description = + """ + Trains Masked Hunters, Xacal, Underspins, Ichors, and their Vanguard replacements. Increases Population Capacity. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntitySupplyModel { Grants = 16 }) - .AddPart(new EntityProductionModel { Alloy = 250, BuildTime = 36, RequiresWorker = true }) + .AddPart(new EntityProductionModel { Alloy = 300, BuildTime = 38, RequiresWorker = true }) .AddPart(new EntityVitalityModel { Health = 1000, DefenseLayer = 500, Armor = ArmorType.Heavy, IsStructure = true }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Rootway }) @@ -4018,8 +4312,13 @@ public abstract class DATA new EntityModel(DataType.BUILDING_Neurocyte, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Neurocyte", Descriptive = DescriptiveType.Research, - Description = "Research (Structure) - Unlocks additional research." + Name = "Neurocyte", + Descriptive = DescriptiveType.Technology, + Description = + """ + Unlocks training of Xacal, Underspines, Red Seers, Brood Anchors, Aarox, Behemoths, and their + Vanguard replacements. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -4038,8 +4337,14 @@ public abstract class DATA new EntityModel(DataType.BUILDING_RootCradle, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Root Cradle", Descriptive = DescriptiveType.Research, - Description = "Research (Structure) - Unlocks additional research." + Name = "Root Cradle", + Descriptive = DescriptiveType.Technology, + Description = "Unlocks Attack and Defense Upgrades for all units.", + FlavorText = + """ + Grinding and deep, Laculathon's Rootsong speaks of a time fast apporaching where the Worthy + shall rise and pierce the heart of the Wretched Sun. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "Tab", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -4058,8 +4363,9 @@ public abstract class DATA new EntityModel(DataType.DEFENSE_Aerovore, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Aerovore", Descriptive = DescriptiveType.Defense, - Description = "Defense Structure - Aru anti-air defense structure." + Name = "Aerovore", + Descriptive = DescriptiveType.Defense, + Description = "Attacks air targets." }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -4072,7 +4378,12 @@ public abstract class DATA { DataType.BUPGRADE_Omnivore, new EntityModel(DataType.BUPGRADE_Omnivore, EntityType.Building_Upgrade) - .AddPart(new EntityInfoModel { Name = "Omnivore", Descriptive = DescriptiveType.Upgrade }) + .AddPart(new EntityInfoModel + { + Name = "Omnivore", + Descriptive = DescriptiveType.Upgrade, + Description = "Attacks ground/air targets." + }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "SHIFT" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityRequirementModel @@ -4096,8 +4407,12 @@ public abstract class DATA new EntityModel(DataType.BUILDING_AmberWomb, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Amber Womb", Descriptive = DescriptiveType.Production, - Description = "Army Production (Structure) - Produces advanced ground units" + Name = "Amber Womb", + Descriptive = DescriptiveType.Training, + Description = + """ + Trains Wraith Bows, Brood Anchors, and their Vanguard replacements. Increases Population Capacity. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -4123,8 +4438,12 @@ public abstract class DATA new EntityModel(DataType.BUILDING_BoneCanopy, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Bone Canopy", Descriptive = DescriptiveType.Production, - Description = "Army Production (Structure) - Aru air production." + Name = "Bone Canopy", + Descriptive = DescriptiveType.Training, + Description = + """ + Trains Aarox, Thrums, Behemoths, and their Vanguard replacements. Increases Population Capacity. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -4145,8 +4464,17 @@ public abstract class DATA new EntityModel(DataType.BUILDING_MurderHollow, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Murder Hollow", Descriptive = DescriptiveType.Research, - Description = "Unlocks Ichor training and research." + Name = "Murder Hollow", Descriptive = DescriptiveType.Technology, + Description = + """ + Unlocks Ichor training and research. + """, + FlavorText = + """ + "Foolish Otapeke thought himself the master of Her children. Now he eases the acid + in their bellies. Stay for from the Hollow when they howl like that."
+ —Huntmaster Etatzli to his initiates + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -4165,8 +4493,12 @@ public abstract class DATA new EntityModel(DataType.BUILDING_RedVale, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Red Vale", Descriptive = DescriptiveType.Research, - Description = "Unlocks the advanced units at the Altar of the Worthy." + Name = "Red Vale", + Descriptive = DescriptiveType.Technology, + Description = + """ + Unlock training of Red Seer and their Vanguard replacements. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) @@ -4185,8 +4517,12 @@ public abstract class DATA new EntityModel(DataType.BUILDING_DeepNest, EntityType.Building) .AddPart(new EntityInfoModel { - Name = "Deep Nest", Descriptive = DescriptiveType.Research, - Description = "Unlocks the advanced units and researches at the Bone Canopy." + Name = "Deep Nest", + Descriptive = DescriptiveType.Technology, + Description = + """ + Unlock training of Behemoth and their Vanguard replacements. + """ }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "C" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) diff --git a/Model/Entity/Data/Ids_Entity.cs b/Model/Entity/Data/Ids_Entity.cs index 5446bf9..99688e8 100644 --- a/Model/Entity/Data/Ids_Entity.cs +++ b/Model/Entity/Data/Ids_Entity.cs @@ -40,22 +40,22 @@ public static class DataType public static string STARTING_Tower = "3ca43196-db92-4beb-b5c5-65bdffbd32cf"; public static string STARTING_TownHall_Aru = "f08e5320-8419-4259-b48d-e201b1f05ccf"; public static string STARTING_TownHall_QRath = "150a4727-f831-48be-81fe-4dfd3588dfec"; - public static string IMMORTAL_Orzum = "bd06682f-c8d5-4115-bb63-f948a034fab2"; - public static string IMMORTAL_Ajari = "a8041f5a-801a-4c7a-90a9-ea6897eda8be"; + public static string IMMORTAL_Orzum = nameof(IMMORTAL_Orzum); + public static string IMMORTAL_Ajari = nameof(IMMORTAL_Ajari); public static string IMMORTAL_Atzlan = nameof(IMMORTAL_Atzlan); - public static string IMMORTAL_Mala = "9ce65813-952d-4abd-b360-8d4d9c2ffc5a"; - public static string IMMORTAL_Xol = "73a9d002-4b64-40bd-aac9-669313d9df94"; + public static string IMMORTAL_Mala = nameof(IMMORTAL_Mala); + public static string IMMORTAL_Xol = nameof(IMMORTAL_Xol); - public static string ISPELL_SummonCitadel = "3813b14c-eac5-4249-85ac-8cd7253e3aa3"; + public static string ISPELL_SummonCitadel = nameof(ISPELL_SummonCitadel); - public static string ISPELL_ImperialFoundation = "c27e4369-1152-4c3f-84b3-444fe364a874"; - public static string ISPELL_EmpireUnbroken = "3f442411-e958-4ff2-8671-291c47e6404a"; - public static string ISPELL_PillarOfHeaven = "af822b5c-7404-4961-9589-774c7b073877"; + public static string ISPELL_RookOfIra = nameof(ISPELL_RookOfIra); + public static string ISPELL_EmpireUnbroken = nameof(ISPELL_EmpireUnbroken); + public static string ISPELL_PillarOfHeaven = nameof(ISPELL_PillarOfHeaven); - public static string ISPELL_HeavensAegis = "0dcbdeac-eea2-4208-a7a1-83f47fb76e66"; - public static string ISPELL_DeliverFromEvil = "4168ca14-be95-4db4-b2b8-8b5491510b1a"; - public static string ISPELL_Salvation = "dca82703-04af-4e4f-8f2d-eb16a72887e0"; + public static string ISPELL_HeavensAegis = nameof(ISPELL_HeavensAegis); + public static string ISPELL_DeliverFromEvil = nameof(ISPELL_DeliverFromEvil); + public static string ISPELL_Salvation = nameof(ISPELL_Salvation); public static string ISPELL_SummonGroveGuardian = nameof(ISPELL_SummonGroveGuardian); public static string ISPELL_ConstructBloodWell = nameof(ISPELL_ConstructBloodWell); @@ -74,11 +74,12 @@ public static class DataType public static string ISPELL_SummonRootBud = nameof(ISPELL_SummonRootBud); - public static string IPASSIVE_AjarisGrace = "3ec17526-8dc5-4592-9c15-ef1d9b1ca2f6"; - public static string IPASSIVE_OrdainedConquest = "b6cd4335-2165-44c3-b3dc-4500c0111870"; + public static string IPASSIVE_MendingGrace = nameof(IPASSIVE_MendingGrace); + public static string IPASSIVE_OrdainedConquest = nameof(IPASSIVE_OrdainedConquest); - public static string IPASSIVE_MothersHunger = "382dc614-9228-4494-9a80-d1a72604a1ee"; - public static string IPASSIVE_StalkersSense = "a3d255aa-94f2-4aed-bb44-e9becb736fca"; + public static string IPASSIVE_MothersHunger = nameof(IPASSIVE_MothersHunger); + public static string IPASSIVE_StalkersSense = nameof(IPASSIVE_StalkersSense); + public static string IPASSIVE_GreenThumb = nameof(IPASSIVE_GreenThumb); public static string BUILDING_Acropolis = nameof(BUILDING_Acropolis); public static string BUILDING_ApostleOfBinding = nameof(BUILDING_ApostleOfBinding); diff --git a/Model/Entity/Types/DescriptiveType.cs b/Model/Entity/Types/DescriptiveType.cs index 384bd8b..d9aa0bd 100644 --- a/Model/Entity/Types/DescriptiveType.cs +++ b/Model/Entity/Types/DescriptiveType.cs @@ -4,26 +4,23 @@ public static class DescriptiveType { public static string None = "None"; public static string Frontliner = "Frontliner"; - public static string Force_Multiplier = "Force_Multiplier"; public static string Support = "Support"; - public static string Assassin = "Assassin"; public static string Generalist = "Generalist"; - public static string Harrier = "Harrier"; - public static string ZoneControl = "Zone_Control"; - public static string AirDenial = "Air_Denial"; + public static string ZoneControl = "Zone Control"; + public static string AirKiller = "Air Killer"; public static string Dislodger = "Dislodger"; - public static string Air_Superiority = "Air_Superiority"; public static string EliteCaster = "Elite_Caster"; + public static string DamageCaster = "Damage Caster"; public static string Worker = "Worker"; public static string Skirmisher = "Skirmisher"; public static string TownHall_Starting = "Town_Hall_Starting"; - public static string Town_Hall = "Town_Hall"; - public static string Ether_Extractor = "Ether_Extractor"; - public static string Production = "Production"; - public static string Research = "Research"; - public static string Utility = "Utility"; + public static string Stronghold = "Stronghold"; + + public static string Economy = "Economy"; + + public static string Training = "Training"; + public static string Technology = "Technology"; public static string Defense = "Defense"; - public static string Tower = "Tower"; public static string Summon = "Summon"; public static string Upgrade = "Upgrade"; public static string Ability = "Ability";