using System.Collections.Generic; using Model.Entity.Parts; using Model.Entity.Types; using Model.Types; namespace Model.Entity.Data; public partial class EntityData { public static Dictionary GetArmyData() { return new Dictionary { // Vanguard // Q'Rath { DataType.VANGUARD_Zentari_Orzum, new EntityModel(DataType.VANGUARD_Zentari_Orzum, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Zentari", Descriptive = DescriptiveType.Frontliner, Description = """ Ground unit. Attacks ground targets. Ranged attack in Hallowed Ground. """, FlavorText = """ "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 """ }) .AddPart(new EntityTierModel { Tier = 1 }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Sipari, ImmortalId = DataType.IMMORTAL_Orzum }) .AddPart(new EntityProductionModel { Alloy = 100, BuildTime = 20, ProducedBy = DataType.BUILDING_LegionHall }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityVitalityModel { Health = 180, DefenseLayer = 100, Armor = ArmorType.Light }) .AddPart(new EntityWeaponModel { Damage = 26, Range = 100, AttacksPerSecond = 0.699f, Targets = TargetType.Ground }) .AddPart(new EntityWeaponModel { Damage = 26, Range = 300, AttacksPerSecond = 0.699f, Targets = TargetType.Ground }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityMovementModel { Speed = 380, Movement = MovementType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_FaithCastBlades }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_IconOfKhastEem }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_IconOfKhastEem }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_FaithCastBlades }) }, { DataType.VANGUARD_Sceptre_Orzum, new EntityModel(DataType.VANGUARD_Sceptre_Orzum, EntityType.Army) .AddPart(new EntityInfoModel { 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" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 200, Ether = 175, BuildTime = 32, ProducedBy = DataType.BUILDING_Angelarium }) .AddPart(new EntityVitalityModel { Health = 435, DefenseLayer = 150, Armor = ArmorType.Heavy }) .AddPart(new EntitySupplyModel { Takes = 6 }) .AddPart(new EntityWeaponModel { Damage = 35, MediumDamage = 40, HeavyDamage = 45, Range = 450, SecondsBetweenAttacks = 2.1f, Targets = TargetType.Ground }) .AddPart(new EntityWeaponModel { Damage = 125, Range = 450, SecondsBetweenAttacks = 2f, Targets = TargetType.Ground, HasSplash = true }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Warden, ImmortalId = DataType.IMMORTAL_Orzum }) .AddPart(new EntityMovementModel { Speed = 340, Movement = MovementType.Air }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_RegentsWrath }) }, { DataType.VANGUARD_Saoshin_Ajari, new EntityModel(DataType.VANGUARD_Saoshin_Ajari, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Saoshin", Descriptive = DescriptiveType.Support, Description = """ 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" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Magi, ImmortalId = DataType.IMMORTAL_Ajari }) .AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 28, ProducedBy = DataType.BUILDING_LegionHall }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityVitalityModel { Health = 210, DefenseLayer = 105, Armor = ArmorType.Light, IsEtheric = true }) .AddPart(new EntityMovementModel { Speed = 460, Movement = MovementType.Ground }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Production_Building }) .AddPart(new EntityWeaponModel { Damage = 18, Range = 400, SecondsBetweenAttacks = 1.4f, Targets = TargetType.Ground }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_Intervention }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Invervention }) }, { DataType.VANGUARD_ArkMother_Ajari, new EntityModel(DataType.VANGUARD_ArkMother_Ajari, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Ark Mother", Descriptive = DescriptiveType.Support, Description = """ Ground Spellcaster. Casts a utility spell. Protector.
Creates Hallowed Ground when still for a few seconds. """ }) .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 = 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 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_HouseOfFadingSaints, Requirement = RequirementType.Research_Building }) .AddPart(new EntityMovementModel { Speed = 390, Movement = MovementType.Hover }) .AddPart(new EntityWeaponModel { Damage = 25, Range = 1100, SecondsBetweenAttacks = 2.5f, Targets = TargetType.Ground }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_OrdainedPassage }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_HallowingRites }) }, // Vanguards // Aru { DataType.VANGUARD_Incubator_Mala, new EntityModel(DataType.VANGUARD_Incubator_Mala, EntityType.Army) .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 { Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Underspine, ImmortalId = DataType.IMMORTAL_Mala }) .AddPart(new EntityProductionModel { 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 }) .AddPart(new EntityMovementModel { Speed = 340, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { 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 }) }, { DataType.VANGUARD_DreadSister_Mala, new EntityModel(DataType.VANGUARD_DreadSister_Mala, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Dread Sister", Descriptive = DescriptiveType.EliteCaster }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_RedSeer, ImmortalId = DataType.IMMORTAL_Mala }) .AddPart(new EntityProductionModel { Alloy = 60, Ether = 150, BuildTime = 36, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityVitalityModel { Energy = 100, Health = 90, DefenseLayer = 110, Armor = ArmorType.Light, Defense = DefenseType.Overgrowth, IsEtheric = false }) .AddPart(new EntityMovementModel { Speed = 360, Movement = MovementType.Ground }) .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 }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_RootVice }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_BirthingStorm }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_DeployDreadSister }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_BirthingStorm }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_CastingFromBlood }) }, { DataType.VANGUARD_RootShepard_Atzlan, new EntityModel(DataType.VANGUARD_RootShepard_Atzlan, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Root Shepard", Descriptive = DescriptiveType.Skirmisher, Description = "Can generate rootway." }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Ichor, ImmortalId = DataType.IMMORTAL_Atzlan }) .AddPart(new EntityProductionModel { Alloy = 80, Ether = 0, BuildTime = 24, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 3 }) .AddPart(new EntityVitalityModel { Health = 125, DefenseLayer = 100, Armor = ArmorType.Medium, IsEtheric = false }) .AddPart(new EntityMovementModel { Speed = 540, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 15, MediumDamage = 12, HeavyDamage = 9, Range = 400, AttacksPerSecond = 2.4f, Targets = TargetType.Ground }) //.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Stalk }) }, { DataType.VANGUARD_Resinant_Atzlan, new EntityModel(DataType.VANGUARD_Resinant_Atzlan, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Resinant", Descriptive = DescriptiveType.ZoneControl, Description = "Ground unit. Can only attack ground." }) .AddPart(new EntityTierModel { Tier = 2.5f }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_BloodAnchor, ImmortalId = DataType.IMMORTAL_Atzlan }) .AddPart(new EntityProductionModel { Alloy = 150, Ether = 125, BuildTime = 32, ProducedBy = DataType.BUILDING_AmberWomb }) .AddPart(new EntitySupplyModel { Takes = 6 }) .AddPart(new EntityVitalityModel { Health = 260, DefenseLayer = 90, Armor = ArmorType.Heavy }) .AddPart(new EntityMovementModel { Speed = 360, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 25, MediumDamage = 35, HeavyDamage = 45, Range = 800, SecondsBetweenAttacks = 1.429f, Targets = TargetType.Ground }) .AddPart(new EntityWeaponModel { Damage = 85, MediumDamage = 100, HeavyDamage = 115, Range = 1000, SecondsBetweenAttacks = 2.5f, MinimumRange = 500, Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_ResinantSpeed }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_MobilizeAru }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_EngorgedArteries }) }, { DataType.VANGUARD_BoneStalker_Xol, new EntityModel(DataType.VANGUARD_BoneStalker_Xol, EntityType.Army) .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 { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_MaskedHunter, ImmortalId = DataType.IMMORTAL_Xol }) .AddPart(new EntityProductionModel { Alloy = 50, Ether = 0, BuildTime = 16, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 2 }) .AddPart(new EntityVitalityModel { Health = 85, DefenseLayer = 10, Armor = ArmorType.Light, IsEtheric = false }) .AddPart(new EntityMovementModel { Speed = 380, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 11, Range = 400, AttacksPerSecond = 1.02f, Targets = TargetType.All }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Stalk }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Ambush }) }, { DataType.VANGUARD_WhiteWoodReaper_Xol, new EntityModel(DataType.VANGUARD_WhiteWoodReaper_Xol, EntityType.Army) .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 { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Bloodbound, ImmortalId = DataType.IMMORTAL_Xol }) .AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 28, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityVitalityModel { Energy = 60, Health = 80, DefenseLayer = 40, Defense = DefenseType.Overgrowth, Armor = ArmorType.Medium, IsEtheric = false }) .AddPart(new EntityMovementModel { Speed = 448, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 40, Range = 100, AttacksPerSecond = 1, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_CastingFromBlood }) }, // Units // Q'Rath { DataType.WORKER_Mote, new EntityModel(DataType.WORKER_Mote, EntityType.Worker) .AddPart(new EntityInfoModel { Name = "Mote", Descriptive = DescriptiveType.Worker }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 50, BuildTime = 20 }) .AddPart(new EntityVitalityModel { Health = 45, DefenseLayer = 45, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 400, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 5, Range = 50, AttacksPerSecond = 1.887f, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_HarvestAlloy }) }, { DataType.UNIT_Sipari, new EntityModel(DataType.UNIT_Sipari, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Sipari", Descriptive = DescriptiveType.Frontliner, Description = """ 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" }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Orzum, ReplacedById = DataType.VANGUARD_Zentari_Orzum }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 75, BuildTime = 20, ProducedBy = DataType.BUILDING_LegionHall }) .AddPart(new EntitySupplyModel { Takes = 3 }) .AddPart(new EntityVitalityModel { Health = 210, DefenseLayer = 135, Armor = ArmorType.Light }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityMovementModel { Speed = 440, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 20, HeavyDamage = 18, Range = 180, SecondsBetweenAttacks = 1.43f, Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_GreavesOfAhqar }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_FortifiedIcons }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_GreavesOfAhqar }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_FortifiedIcons }) }, { DataType.UNIT_Magi, new EntityModel(DataType.UNIT_Magi, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Magi", Descriptive = DescriptiveType.Support, Description = """ Ground Spellcaster. Casts healing/utility spells. Protector.
Deploy to get Shields and create Hallowed Ground. """ }) .AddPart(new EntityTierModel { Tier = 1.5f }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 50, Ether = 75, BuildTime = 28, ProducedBy = DataType.BUILDING_LegionHall }) .AddPart(new EntitySupplyModel { Takes = 2 }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Ajari, ReplacedById = DataType.VANGUARD_Saoshin_Ajari }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Energy = 100, Health = 75, DefenseLayer = 75, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 420, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 6, Range = 600, SecondsBetweenAttacks = 1.5f, Targets = TargetType.All }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_DeployMagi }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_MobilizeQrath }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_MendingDecree }) }, { DataType.UNIT_Zephyr, new EntityModel(DataType.UNIT_Zephyr, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Zephyr", Descriptive = DescriptiveType.Generalist, Description = """ 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_LegionHall }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_MonasteryOfIzur, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 255, DefenseLayer = 105, Armor = ArmorType.Heavy }) .AddPart(new EntityMovementModel { Speed = 400, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 22, MediumDamage = 27, HeavyDamage = 32, Range = 500, SecondsBetweenAttacks = 1.5f, Targets = TargetType.All }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_WindStep }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_ZephyrRange }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_Windstep }) }, { DataType.UNIT_Dervish, new EntityModel(DataType.UNIT_Dervish, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Dervish", Descriptive = DescriptiveType.Skirmisher, Description = """ 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" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 125, Ether = 10, BuildTime = 24, ProducedBy = DataType.BUILDING_SoulFoundry }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityVitalityModel { Health = 180, DefenseLayer = 150, Armor = ArmorType.Medium }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityMovementModel { Speed = 500, Movement = MovementType.Hover }) .AddPart(new EntityWeaponModel { Damage = 10, LightDamage = 26, MediumDamage = 18, Range = 350, SecondsBetweenAttacks = 2.0f, Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_SiroccoScript }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_RadiantWard }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_RadiantWard }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_SiroccoScript }) }, { DataType.UNIT_Absolver, new EntityModel(DataType.UNIT_Absolver, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Absolver", Descriptive = DescriptiveType.ZoneControl, Description = """ 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" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 28, ProducedBy = DataType.BUILDING_SoulFoundry }) .AddPart(new EntitySupplyModel { Takes = 5 }) .AddPart(new EntityVitalityModel { Health = 230, DefenseLayer = 150, Armor = ArmorType.Medium }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityMovementModel { Speed = 400, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 11, MediumDamage = 13, HeavyDamage = 15, StructureDamageBonus = 8, Range = 800, AttacksPerSecond = 1.25f, Targets = TargetType.Ground }) .AddPart(new EntityWeaponModel { Damage = 6, MediumDamage = 7, HeavyDamage = 8, Range = 800, AttacksPerSecond = 2.222f, Targets = TargetType.Ground }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_DeployAbsolver }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_MobilizeQrath }) .AddPart(new EntityPassiveModel { Name = "?", Description = "Hits multiple units when deployed." }) }, { DataType.UNIT_Castigator, new EntityModel(DataType.UNIT_Castigator, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Castigator", Descriptive = DescriptiveType.AirKiller, Description = """ Ground unit. Can attack air and ground. """ }) .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 28, ProducedBy = DataType.BUILDING_SoulFoundry }) .AddPart(new EntitySupplyModel { Takes = 5 }) .AddPart(new EntityVitalityModel { Health = 300, DefenseLayer = 150, Armor = ArmorType.Heavy }) .AddPart(new EntityMovementModel { Speed = 390, Movement = MovementType.Ground }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityWeaponModel { 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 }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_RelicOfTheWrathfulGaze }) .AddPart(new EntityIdAbilityModel { Id = DataType.PASSIVE_Maledictions }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_RelicOfTheWrathfulGaze }) }, { DataType.UNIT_Hallower, new EntityModel(DataType.UNIT_Hallower, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Hallower", Descriptive = DescriptiveType.Dislodger, Description = """ Ground Unit. Attack ground targets. Long-range attack. """ }) .AddPart(new EntityTierModel { Tier = 2.5f }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Ajari, ReplacedById = DataType.VANGUARD_ArkMother_Ajari }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 32, ProducedBy = DataType.BUILDING_SoulFoundry }) .AddPart(new EntitySupplyModel { Takes = 5 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_HouseOfFadingSaints, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 100, DefenseLayer = 130, Armor = ArmorType.Heavy }) .AddPart(new EntityMovementModel { Speed = 335, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 60, MediumDamage = 80, HeavyDamage = 100, Range = 1300, AttacksPerSecond = 0.143f, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_HallowedRuin }) }, { DataType.UNIT_Sentinel, new EntityModel(DataType.UNIT_Sentinel, EntityType.Army) .AddPart(new EntityInfoModel { 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" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 28, ProducedBy = DataType.BUILDING_Angelarium }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityVitalityModel { Health = 150, DefenseLayer = 100, Armor = ArmorType.Medium }) .AddPart(new EntityMovementModel { Speed = 525, Movement = MovementType.Air }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityWeaponModel { 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, Description = """ 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.5f }) .AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 350, Ether = 200, BuildTime = 70, ProducedBy = DataType.BUILDING_Angelarium }) .AddPart(new EntitySupplyModel { Takes = 10 }) .AddPart(new EntityVitalityModel { Health = 550, DefenseLayer = 350, Armor = ArmorType.Heavy }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Research_Building }) .AddPart(new EntityMovementModel { Speed = 300, Movement = MovementType.Air }) .AddPart(new EntityWeaponModel { Damage = 120, Range = 500, SecondsBetweenAttacks = 2.5f, Targets = TargetType.All }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_TitheBlades }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_TitheBlades }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_GodstoneBulwark }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_ThroneMovingShot }) }, { DataType.UNIT_Warden, new EntityModel(DataType.UNIT_Warden, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Warden", Descriptive = DescriptiveType.Skirmisher, Description = """ Air unit. Attacks ground targets. Anti-ground specialist. """ }) .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Orzum, ReplacedById = DataType.VANGUARD_Sceptre_Orzum }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityProductionModel { Alloy = 175, Ether = 100, BuildTime = 32, ProducedBy = DataType.BUILDING_Angelarium }) .AddPart(new EntitySupplyModel { Takes = 6 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 375, DefenseLayer = 100, Armor = ArmorType.Heavy }) .AddPart(new EntityMovementModel { Speed = 480, Movement = MovementType.Air }) .AddPart(new EntityWeaponModel { Damage = 32, Range = 500, SecondsBetweenAttacks = 1.8f, Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_WingsOfTheKenLatir }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_WingsOfTheKenLatir }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_ExecutionRites }) }, { DataType.UNIT_SharU, new EntityModel(DataType.UNIT_SharU, EntityType.Army) .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 }) .AddPart(new EntityProductionModel { Alloy = 110, Ether = 250, BuildTime = 55, ProducedBy = DataType.BUILDING_Angelarium }) .AddPart(new EntitySupplyModel { Takes = 6 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_EyeOfAros, Requirement = RequirementType.Research_Building }) .AddPart(new EntityVitalityModel { Health = 300, DefenseLayer = 155, Energy = 150, IsEtheric = true, Armor = ArmorType.Heavy }) .AddPart(new EntityMovementModel { Speed = 360, Movement = MovementType.Air }) .AddPart(new EntityWeaponModel { Damage = 10, Range = 650, SecondsBetweenAttacks = 1.4f, Targets = TargetType.All }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_Awestrike }) }, // Units // Aru { DataType.WORKER_Symbiote, new EntityModel(DataType.WORKER_Symbiote, EntityType.Worker) .AddPart(new EntityInfoModel { Name = "Symbiote", Descriptive = DescriptiveType.Worker }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { Alloy = 50, BuildTime = 20 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_GroveHeart, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 75, DefenseLayer = 15, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 400, Movement = MovementType.Hover }) .AddPart(new EntityWeaponModel { Damage = 8, Range = 40, AttacksPerSecond = 1.25f, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_HarvestAlloy }) }, { DataType.UNIT_MaskedHunter, new EntityModel(DataType.UNIT_MaskedHunter, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Masked Hunter", Descriptive = DescriptiveType.Generalist, Description = """ Ground Unit. Can attack ground and air. """ }) .AddPart(new EntityTierModel { Tier = 1 }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "Z" }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Xol, ReplacedById = DataType.VANGUARD_BoneStalker_Xol }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { Alloy = 50, BuildTime = 16, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 2 }) .AddPart(new EntityVitalityModel { Health = 125, DefenseLayer = 40, Defense = DefenseType.Overgrowth, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 400, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 7, Range = 400, AttacksPerSecond = 1.4f, Targets = TargetType.All, MediumDamage = 6, HeavyDamage = 5 }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_Offering }) .AddPart(new EntityIdPassiveModel { Id = DataType.ABILITY_Offering }) }, { DataType.UNIT_Xacal, new EntityModel(DataType.UNIT_Xacal, EntityType.Army) .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 { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { 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 }) .AddPart(new EntityWeaponModel { Damage = 14, MediumDamage = 21, HeavyDamage = 28, Range = 600, SecondsBetweenAttacks = 1.786f, Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_EthericFibers }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_XacalDamage }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_XacalDefense }) }, { DataType.UNIT_Bloodbound, new EntityModel(DataType.UNIT_Bloodbound, EntityType.Army) .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 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 24, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityVitalityModel { Energy = 60, Health = 150, DefenseLayer = 75, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 500, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 30, MediumDamage = 40, LightDamage = 50, Range = 80, AttacksPerSecond = 1.4f, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_QuenchingScythes }) .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, 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 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { Alloy = 125, Ether = 100, BuildTime = 32, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 5 }) .AddPart(new EntityVitalityModel { Health = 150, DefenseLayer = 75, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 500, Movement = MovementType.Ground }) .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.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 }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { Alloy = 40, Ether = 140, BuildTime = 32, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 3 }) .AddPart(new EntityVitalityModel { Energy = 100, Health = 90, DefenseLayer = 75, Defense = DefenseType.Overgrowth, IsEtheric = true, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 360, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 9, Range = 700, AttacksPerSecond = 1.253f, Targets = TargetType.All }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_BloodPlague }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_DrainingEmbrace }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_MorphToGodphage }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_CastingFromBlood }) }, { DataType.UNIT_Underspine, new EntityModel(DataType.UNIT_Underspine, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Underspine", Descriptive = DescriptiveType.Support, Description = "Ground unit. Can attack ground and air." }) .AddPart(new EntityTierModel { Tier = 1.5f }) .AddPart(new EntityVanguardReplacedModel { ImmortalId = DataType.IMMORTAL_Mala, ReplacedById = DataType.VANGUARD_Incubator_Mala }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { Alloy = 70, Ether = 50, BuildTime = 20, ProducedBy = DataType.BUILDING_AltarOfTheWorthy }) .AddPart(new EntitySupplyModel { Takes = 3 }) .AddPart(new EntityVitalityModel { Health = 210, DefenseLayer = 60, Armor = ArmorType.Medium }) .AddPart(new EntityMovementModel { Speed = 400, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 2, Range = 600, SecondsBetweenAttacks = 1.253f, Targets = TargetType.All }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_OssifyingSwarm }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_ObstructingSwarm }) }, { DataType.UNIT_Ichor, new EntityModel(DataType.UNIT_Ichor, EntityType.Army) .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_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { 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 { Damage = 18, LightDamage = 38, MediumDamage = 28, Range = 500, AttacksPerSecond = 0.7f, Targets = TargetType.Ground, SecondsBetweenAttacks = 1.429f }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_PursuitLigaments }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_ExternalDigestion }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_PursuitLigaments }) }, { DataType.UNIT_Aarox, new EntityModel(DataType.UNIT_Aarox, EntityType.Army) .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 { Id = DataType.BUILDING_BoneCanopy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { 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 }) .AddPart(new EntityWeaponModel { Damage = 125, MediumDamage = 163, HeavyDamage = 200, Range = 20, AttacksPerSecond = 1, Targets = TargetType.Air }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_DiveBomb }) }, { DataType.UNIT_Thrum, new EntityModel(DataType.UNIT_Thrum, EntityType.Army) .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 { Id = DataType.BUILDING_BoneCanopy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { 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 }) .AddPart(new EntityWeaponModel { Damage = 11, LightDamage = 15, MediumDamage = 13, Range = 350, SecondsBetweenAttacks = 1.25f, Targets = TargetType.All }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_BloodFrenzy }) }, { DataType.UNIT_WraithBow, new EntityModel(DataType.UNIT_WraithBow, EntityType.Army) .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 { Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { Alloy = 80, Ether = 40, BuildTime = 24, ProducedBy = DataType.BUILDING_AmberWomb }) .AddPart(new EntitySupplyModel { Takes = 3 }) .AddPart(new EntityVitalityModel { Health = 180, DefenseLayer = 65, Armor = ArmorType.Medium }) .AddPart(new EntityMovementModel { Speed = 500, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 22, Range = 700, AttacksPerSecond = 1.4f, Targets = TargetType.Air }) .AddPart(new EntityWeaponModel { Damage = 9, Range = 500, AttacksPerSecond = 1.4f, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_GuidingAmber }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_WraithBowRange }) }, { DataType.UNIT_Behemoth, new EntityModel(DataType.UNIT_Behemoth, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Behemoth", Descriptive = DescriptiveType.Skirmisher, Description = """ Air unit. Attacks ground targets. Long-range attack. """ }) .AddPart(new EntityTierModel { Tier = 3.5f }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_BoneCanopy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "Z" }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityProductionModel { Alloy = 190, Ether = 150, BuildTime = 40, ProducedBy = DataType.BUILDING_BoneCanopy }) .AddPart(new EntitySupplyModel { Takes = 8 }) .AddPart(new EntityVitalityModel { Health = 350, DefenseLayer = 100, Armor = ArmorType.Heavy }) .AddPart(new EntityMovementModel { Speed = 210, Movement = MovementType.Air }) .AddPart(new EntityWeaponModel { Damage = 21, Range = 600, AttacksPerSecond = 0.588f, SecondsBetweenAttacks = 1.7f, Cooldown = 6, Charges = 1, Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_VitellineCysts }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_BehemothCapacity }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_QuitlStorage2 }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_FireQuitl }) }, { DataType.SUMMON_Quitl, new EntityModel(DataType.SUMMON_Quitl, EntityType.Army) .AddPart(new EntityInfoModel { Name = "Quitl", Descriptive = DescriptiveType.Summon }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityVitalityModel { Health = 65, Armor = ArmorType.Light, Lasts = 8 }) .AddPart(new EntityMovementModel { Speed = 168, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 10, Range = 300, AttacksPerSecond = 1.124f, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Temporary }) } }; } }