UNPKG

@zerospacegg/iolin

Version:

Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)

172 lines 7.62 kB
/** * Legion Main Faction * Religious fanatic faction focused on uplifting aliens and eradicating synthetics * * Faction structure: * - Eight talents (War Experience, Improved Conduits, Efficient Upgrades, Death Pact, * Reanimate Hero, Improved Spellcasting, Ritual, Spawn Monolith) * - Four topbars (Recall, Reanimate, Ritual, Spawn Monolith) * - Three heroes allowed simultaneously (unique mechanic) * - Customizable tanks with upgrade systems * - Thrall units and reanimation mechanics */ import { MainFaction } from "../../engine/faction.js"; // Import all Legion entities import { LegionTalent, LegionTopbar } from "../../defaults/legion.js"; // Restored imports for entity registration // Tech tree generation will be handled by generic system /** * Legion Faction Entity - Modern Class Architecture */ class LegionFactionEntity extends MainFaction { constructor() { super(); this.name = "Legion"; this.uuid = "42b636c6-cf98-4534-bcf1-caaf148e2c39"; // Set faction properties this.faction = "legion"; this.factionName = "Legion"; // Faction settings this.mercHeroesAllowed = false; this.description = `Religious fanatic faction focused on uplifting aliens and eradicating synthetics. The Legion excels at tactical flexibility with three simultaneous heroes, powerful customizable tanks, and basic units called Thralls. Their unique mechanics emphasize flux management, hero versatility, and the ability to deploy multiple champions simultaneously while maintaining strong military infrastructure through sacred architecture and divine blessing systems.`; // Set Legion-specific topbars first (needed for talent unlock references) this.topbars.recall = new LegionTopbar({ name: "Recall", topbarType: "recall", slot: 1, description: "Recalls all selected units to the Garrison Tower", hotkey: "Q", }); this.topbars.reanimate = new LegionTopbar({ name: "Reanimate", topbarType: "special", slot: 2, description: "Resurrects destroyed units with stat bonuses and temporary debuff immunity", hotkey: "W", energyCost: 25, cooldown: 45, }); this.topbars.ritual = new LegionTopbar({ name: "Ritual", topbarType: "ultimate", slot: 3, description: "Unlocks a ritual site that summons a temporal projection of the Emperor", 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", hotkey: "R", energyCost: 40, cooldown: 120, }); // Set Legion-specific talents using Grell-style pattern this.talents.warExperience = new LegionTalent({ uuid: "399A15E1-05B7-40B8-8C43-2F9F8D38B639", name: "War Experience", level: 1, description: "Gain additional experience by destroying enemy units (20% of hex+flux cost) as XP", }); this.talents.improvedConduits = new LegionTalent({ uuid: "A8C7CE20-8CA0-4BA0-A79F-A6F8682D4C41", name: "Improved Conduits", level: 1, description: "Conduits build 50% faster with 50% bonus starting energy for 50 hexite", }); this.talents.efficientUpgrades = new LegionTalent({ uuid: "BC726A99-C585-4FB7-9776-5ED8A654F31F", name: "Efficient Upgrades", level: 2, description: "+40% research speed & -40% research cost", }); this.talents.summoningObelisk = new LegionTalent({ uuid: "4819FB77-2673-4739-A401-70A159F95B95", name: "Summoning Obelisk", level: 3, description: "Creates a Summoning Obelisk on the battlefield that summons Thralls over time", }); this.talents.reanimateHero = new LegionTalent({ uuid: "1A0BC61D-13E3-4CD3-9EFE-4532262F97B1", name: "Reanimate Hero", level: 3, description: "Reanimate can target Heroes, debuffing them for 15s upon reanimation.", }); this.talents.improvedSpellcasting = new LegionTalent({ uuid: "3E409C0B-D96F-4C21-B37F-BC2D08A5E70D", name: "Improved Spellcasting", level: 4, description: "+50% Energy Regen & -30% Ability Cooldown", }); this.talents.ritual = new LegionTalent({ uuid: "454B28CE-6C39-4A96-B03E-ED4285CD3F27", name: "Ritual", level: 5, description: "Unlocks a ritual site that summons a temporal projection of the Emperor", unlockedBy: [this.topbars.ritual.id], }); this.talents.spawnMonolith = new LegionTalent({ uuid: "366619CB-88AC-430E-87AE-0CA2B16D585D", name: "Spawn Monolith", level: 5, description: "Spawn powerful defensive structure on battlefield", unlockedBy: [this.topbars.spawnMonolith.id], }); // Set up talent-topbar unlock relationships this.talents.ritual.apply = () => { this.topbars.ritual.unlocked = true; }; this.talents.spawnMonolith.apply = () => { this.topbars.spawnMonolith.unlocked = true; }; // Wire up unlock relationships this.wireUpUnlocks(); // Add all buildings 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", "faction/legion/building/sacrificial-site", ]; // Add all units this.units = [ "faction/legion/unit/legion-build-drone", "faction/legion/unit/legion-laborer", "faction/legion/unit/legion-scout-drone", "faction/legion/unit/thrall", "faction/legion/unit/steelsworn", "faction/legion/unit/fanatic", "faction/legion/unit/exalted", "faction/legion/unit/mammoth", "faction/legion/unit/dreadnought", "faction/legion/unit/terror-tank", "faction/legion/unit/emperor-projection", ]; // Add heroes this.heroes = [ "faction/legion/hero/galavax", "faction/legion/hero/inquisitress", "faction/legion/hero/kraegar", "faction/legion/hero/sabretooth", ]; } } LegionFactionEntity.src = "src/zerospace/faction/legion.ts"; // Export the class as default export default LegionFactionEntity; // Named exports removed - use direct imports from individual entity files instead //# sourceMappingURL=legion.js.map