UNPKG

@zerospacegg/iolin

Version:

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

174 lines 7.84 kB
"use strict"; /** * 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 */ Object.defineProperty(exports, "__esModule", { value: true }); const faction_js_1 = require("../../engine/faction.cjs"); // Import all Legion entities const legion_js_1 = require("../../defaults/legion.cjs"); // Restored imports for entity registration // Tech tree generation will be handled by generic system /** * Legion Faction Entity - Modern Class Architecture */ class LegionFactionEntity extends faction_js_1.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 legion_js_1.LegionTopbar({ name: "Recall", topbarType: "recall", slot: 1, description: "Recalls all selected units to the Garrison Tower", hotkey: "Q", }); this.topbars.reanimate = new legion_js_1.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 legion_js_1.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 legion_js_1.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 legion_js_1.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 legion_js_1.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 legion_js_1.LegionTalent({ uuid: "BC726A99-C585-4FB7-9776-5ED8A654F31F", name: "Efficient Upgrades", level: 2, description: "+40% research speed & -40% research cost", }); this.talents.summoningObelisk = new legion_js_1.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 legion_js_1.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 legion_js_1.LegionTalent({ uuid: "3E409C0B-D96F-4C21-B37F-BC2D08A5E70D", name: "Improved Spellcasting", level: 4, description: "+50% Energy Regen & -30% Ability Cooldown", }); this.talents.ritual = new legion_js_1.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 legion_js_1.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 exports.default = LegionFactionEntity; // Named exports removed - use direct imports from individual entity files instead //# sourceMappingURL=legion.js.map