ZeroSpace.gg

Legion

Main Faction

import { MainFaction } from "../../engine/faction.js"; import { LegionTalent, LegionTopbar } from "../../defaults/legion.js"; /** * Legion Faction Entity - Modern Class Architecture */ class LegionFactionEntity extends MainFaction { override uuid: string; static override src = "src/zerospace/faction/legion.ts"; constructor() { super(); this.name = "Legion"; this.uuid = "42b636c6-cf98-4534-bcf1-caaf148e2c39"; this.faction = "legion"; this.factionName = "Legion"; this.mercHeroesAllowed = false; this.commanders = ["coop/commander/galavax-commander"]; this.description = "A fanatical empire with unknown origins, devoted to the worship of the Idals, the Legion seeks to impose its divine will across the galaxy. Their zealous devotion drives them to sacrifice anything, even their own soldiers, to fulfill the will of the Idals. The Legion's forces are built around few but powerful units, including massive Terror Tanks and customizable Dreadnoughts, and they uniquely field many heroes in a single battle. Their soldiers seek honor through their sacrifice, their souls summoning the might of the Emperor himself, making the Legion a force to be feared."; this.topbars.recall = new LegionTopbar({ name: "Recall", topbarType: "recall", slot: 1, description: "Recalls to a Garrison Tower. Click minimap to choose a Garrison Tower to Recall to.", hotkey: "Q", energyCost: 5, cooldown: 90, }); this.topbars.reanimate = new LegionTopbar({ name: "Reanimate", topbarType: "special", slot: 2, description: "The targeted unit gains +40% attack speed and +15% move speed. \nIf it's killed, it's reanimated with -30% attack speed and -25% move speed. \n\nOn heroes after-reanimation debuffs last 10 seconds.", hotkey: "W", energyCost: 25, cooldown: 45, }); this.topbars.ritual = new LegionTopbar({ name: "Ritual", topbarType: "ultimate", slot: 3, description: "Start ritual on one of the Control Towers. When the ritual finishes an Emperor Projection will spawn for 90 seconds. Sacrifice Thralls to make it more powerful. \nSacrificed Thralls refund a portion of resources.", wikiDescription: "Creates a [[faction/legion/building/ritual-site]] that summons an [[faction/legion/unit/emperor-projection]].", hotkey: "E", energyCost: 50, cooldown: 180, }); this.topbars.spawnMonolith = new LegionTopbar({ name: "Spawn Monolith", topbarType: "ultimate", slot: 4, description: "Spawn powerful defensive structure on battlefield", wikiDescription: "Spawns a [[faction/legion/building/monolith]] on the battlefield.", hotkey: "R", energyCost: 40, cooldown: 120, }); this.talents.warExperience = new LegionTalent({ uuid: "399A15E1-05B7-40B8-8C43-2F9F8D38B639", name: "War Experience", level: 1, position: "A", description: "Gain experience by destroying enemy units\n15% of cost as XP.", }); this.talents.improvedConduits = new LegionTalent({ uuid: "A8C7CE20-8CA0-4BA0-A79F-A6F8682D4C41", name: "Improved Conduits", level: 1, position: "B", description: "-50% Conduit build time. \n+100% Conduit starting energy, max energy, and energy recharge rate", }); this.talents.efficientUpgrades = new LegionTalent({ uuid: "BC726A99-C585-4FB7-9776-5ED8A654F31F", name: "Efficient Upgrades", level: 2, position: "A", description: "+40% research speed. \n-60% research cost", }); this.talents.summoningObelisk = new LegionTalent({ uuid: "4819FB77-2673-4739-A401-70A159F95B95", name: "Summoning Obelisk", level: 3, position: "A", description: "Creates a Summoning Obelisk on the battlefield that summons Thralls over time", unlocks: ["faction/legion/building/summoning-obelisk"], }); this.talents.reanimateHero = new LegionTalent({ uuid: "1A0BC61D-13E3-4CD3-9EFE-4532262F97B1", name: "Reanimate Hero", level: 3, position: "B", description: "Reanimate can target Heroes for 10 energy, debuffing them for 15s upon reanimation. \nCannot target a Hero already carrying the debuff. \nAllows a third Hero to be built.", }); this.talents.improvedSpellcasting = new LegionTalent({ uuid: "3E409C0B-D96F-4C21-B37F-BC2D08A5E70D", name: "Improved Spellcasting", level: 4, position: "A", description: "+50% Energy Regeneration. \n-30% Ability Cooldown", }); this.talents.ritual = new LegionTalent({ uuid: "454B28CE-6C39-4A96-B03E-ED4285CD3F27", name: "Ritual", level: 5, position: "A", description: "Unlocks a ritual site that summons a temporal projection of the Emperor", wikiDescription: "Unlocks the [[faction/legion/topbar/ritual]] topbar ability.", unlocks: [this.topbars.ritual.id], }); this.talents.spawnMonolith = new LegionTalent({ uuid: "366619CB-88AC-430E-87AE-0CA2B16D585D", name: "Spawn Monolith", level: 5, position: "B", description: "Spawn powerful defensive structure on battlefield", wikiDescription: "Unlocks the [[faction/legion/topbar/spawn-monolith]] topbar ability.", unlocks: [this.topbars.spawnMonolith.id], }); this.talents.unendingArmy = new LegionTalent({ uuid: "5e74d881-9b41-43d0-8c32-4db771ace0b7", name: "Unending Army", level: 6, position: "A", description: "Producing any unit spawns an additional Thrall.", }); this.talents.ritual.apply = () => { this.topbars.ritual!.unlocked = true; }; this.talents.spawnMonolith.apply = () => { this.topbars.spawnMonolith!.unlocked = true; }; this.wireUpUnlocks(); this.buildings = [ "faction/legion/building/garrison-tower", "faction/legion/building/idal-conduit", "faction/legion/building/legion-barracks", "faction/legion/building/legion-extractor", "faction/legion/building/beastiary", "faction/legion/building/citadel", "faction/legion/building/altar", "faction/legion/building/terror-tower", "faction/legion/building/armory", "faction/legion/building/guardian-obelisk", "faction/legion/building/healing-obelisk", "faction/legion/building/summoning-obelisk", "faction/legion/building/monolith", "faction/legion/building/ritual-site", ]; this.units = [ "faction/legion/unit/legion-build-drone", "faction/legion/unit/legion-labourer", "faction/legion/unit/legion-scout-drone", "faction/legion/unit/thrall", "faction/legion/unit/steelsworn", "faction/legion/unit/dark-disciple", "faction/legion/unit/storm-bringer", "faction/legion/unit/exalted", "faction/legion/unit/mammoth", "faction/legion/unit/dreadnought", "faction/legion/unit/terror-tank", "faction/legion/unit/emperor-projection", "faction/legion/unit/sacrificial-site", ]; this.heroes = [ "faction/legion/hero/galavax", "faction/legion/hero/inquisitress", "faction/legion/hero/kraegar", "faction/legion/hero/kragvorn", ]; } } export default LegionFactionEntity; // Named exports removed - use direct imports from individual entity files instead