@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
266 lines • 13.4 kB
JavaScript
"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
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Thrall = exports.TerrorTower = exports.TerrorTank = exports.Steelsworn = exports.SacrificialSite = exports.Sabretooth = exports.RitualSite = exports.Monolith = exports.Mammoth = exports.LegionScoutDrone = exports.LegionLaborer = exports.LegionExtractor = exports.LegionBuildDrone = exports.LegionBarracks = exports.Kraegar = exports.Inquisitress = exports.IdalConduit = exports.HealingObelisk = exports.GuardianObelisk = exports.GarrisonTower = exports.Galavax = exports.Exalted = exports.EmperorProjection = exports.Dreadnought = exports.DarkDisciple = exports.Citadel = exports.Beastiary = exports.Armory = exports.Altar = void 0;
const faction_js_1 = require("../../engine/faction.cjs");
// Import all Legion entities
const altar_js_1 = __importDefault(require("./legion/building/altar.cjs"));
exports.Altar = altar_js_1.default;
const armory_js_1 = __importDefault(require("./legion/building/armory.cjs"));
exports.Armory = armory_js_1.default;
const beastiary_js_1 = __importDefault(require("./legion/building/beastiary.cjs"));
exports.Beastiary = beastiary_js_1.default;
const citadel_js_1 = __importDefault(require("./legion/building/citadel.cjs"));
exports.Citadel = citadel_js_1.default;
const garrison_tower_js_1 = __importDefault(require("./legion/building/garrison-tower.cjs"));
exports.GarrisonTower = garrison_tower_js_1.default;
const guardian_obelisk_js_1 = __importDefault(require("./legion/building/guardian-obelisk.cjs"));
exports.GuardianObelisk = guardian_obelisk_js_1.default;
const healing_obelisk_js_1 = __importDefault(require("./legion/building/healing-obelisk.cjs"));
exports.HealingObelisk = healing_obelisk_js_1.default;
const idal_conduit_js_1 = __importDefault(require("./legion/building/idal-conduit.cjs"));
exports.IdalConduit = idal_conduit_js_1.default;
const legion_barracks_js_1 = __importDefault(require("./legion/building/legion-barracks.cjs"));
exports.LegionBarracks = legion_barracks_js_1.default;
const legion_extractor_js_1 = __importDefault(require("./legion/building/legion-extractor.cjs"));
exports.LegionExtractor = legion_extractor_js_1.default;
const monolith_js_1 = __importDefault(require("./legion/building/monolith.cjs"));
exports.Monolith = monolith_js_1.default;
const ritual_site_js_1 = __importDefault(require("./legion/building/ritual-site.cjs"));
exports.RitualSite = ritual_site_js_1.default;
const sacrificial_site_js_1 = __importDefault(require("./legion/building/sacrificial-site.cjs"));
exports.SacrificialSite = sacrificial_site_js_1.default;
const terror_tower_js_1 = __importDefault(require("./legion/building/terror-tower.cjs"));
exports.TerrorTower = terror_tower_js_1.default;
const dark_disciple_js_1 = __importDefault(require("./legion/unit/dark-disciple.cjs"));
exports.DarkDisciple = dark_disciple_js_1.default;
const dreadnought_js_1 = __importDefault(require("./legion/unit/dreadnought.cjs"));
exports.Dreadnought = dreadnought_js_1.default;
const emperor_projection_js_1 = __importDefault(require("./legion/unit/emperor-projection.cjs"));
exports.EmperorProjection = emperor_projection_js_1.default;
const exalted_js_1 = __importDefault(require("./legion/unit/exalted.cjs"));
exports.Exalted = exalted_js_1.default;
const legion_build_drone_js_1 = __importDefault(require("./legion/unit/legion-build-drone.cjs"));
exports.LegionBuildDrone = legion_build_drone_js_1.default;
const legion_laborer_js_1 = __importDefault(require("./legion/unit/legion-laborer.cjs"));
exports.LegionLaborer = legion_laborer_js_1.default;
const legion_scout_drone_js_1 = __importDefault(require("./legion/unit/legion-scout-drone.cjs"));
exports.LegionScoutDrone = legion_scout_drone_js_1.default;
const mammoth_js_1 = __importDefault(require("./legion/unit/mammoth.cjs"));
exports.Mammoth = mammoth_js_1.default;
const steelsworn_js_1 = __importDefault(require("./legion/unit/steelsworn.cjs"));
exports.Steelsworn = steelsworn_js_1.default;
const terror_tank_js_1 = __importDefault(require("./legion/unit/terror-tank.cjs"));
exports.TerrorTank = terror_tank_js_1.default;
const thrall_js_1 = __importDefault(require("./legion/unit/thrall.cjs"));
exports.Thrall = thrall_js_1.default;
const galavax_js_1 = __importDefault(require("./legion/hero/galavax.cjs"));
exports.Galavax = galavax_js_1.default;
const inquisitress_js_1 = __importDefault(require("./legion/hero/inquisitress.cjs"));
exports.Inquisitress = inquisitress_js_1.default;
const kraegar_js_1 = __importDefault(require("./legion/hero/kraegar.cjs"));
exports.Kraegar = kraegar_js_1.default;
const sabretooth_js_1 = __importDefault(require("./legion/hero/sabretooth.cjs"));
exports.Sabretooth = sabretooth_js_1.default;
const legion_classes_js_1 = require("./legion-classes.cjs");
// 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_classes_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_classes_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_classes_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_classes_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_classes_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_classes_js_1.LegionTalent({
uuid: "A8C7CE20-8CA0-4BA0-A79F-A6F8682D4C41",
name: "Improved Conduits",
level: 1,
description: "Conduits now build instantly and start with max energy",
});
this.talents.efficientUpgrades = new legion_classes_js_1.LegionTalent({
uuid: "BC726A99-C585-4FB7-9776-5ED8A654F31F",
name: "Efficient Upgrades",
level: 2,
description: "+40% research speed & -40% research cost",
});
this.talents.deathPact = new legion_classes_js_1.LegionTalent({
uuid: "C9E557DE-FBC0-4ABF-8B3E-BAC6454266F6",
name: "Death Pact",
level: 3,
description: "Reanimate bonuses increased by 50%",
});
this.talents.reanimateHero = new legion_classes_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_classes_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_classes_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_classes_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 = [
garrison_tower_js_1.default.id,
idal_conduit_js_1.default.id,
legion_barracks_js_1.default.id,
legion_extractor_js_1.default.id,
beastiary_js_1.default.id,
citadel_js_1.default.id,
altar_js_1.default.id,
terror_tower_js_1.default.id,
armory_js_1.default.id,
guardian_obelisk_js_1.default.id,
healing_obelisk_js_1.default.id,
monolith_js_1.default.id,
ritual_site_js_1.default.id,
sacrificial_site_js_1.default.id,
];
// Add all units
this.units = [
legion_build_drone_js_1.default.id,
legion_laborer_js_1.default.id,
legion_scout_drone_js_1.default.id,
thrall_js_1.default.id,
steelsworn_js_1.default.id,
dark_disciple_js_1.default.id,
exalted_js_1.default.id,
mammoth_js_1.default.id,
dreadnought_js_1.default.id,
terror_tank_js_1.default.id,
emperor_projection_js_1.default.id,
];
// Add heroes
this.heroes = [galavax_js_1.default.id, inquisitress_js_1.default.id, kraegar_js_1.default.id, sabretooth_js_1.default.id];
}
// Provide entity classes for techTree generation
get buildingClasses() {
return [
garrison_tower_js_1.default,
idal_conduit_js_1.default,
legion_barracks_js_1.default,
legion_extractor_js_1.default,
beastiary_js_1.default,
citadel_js_1.default,
altar_js_1.default,
terror_tower_js_1.default,
armory_js_1.default,
guardian_obelisk_js_1.default,
healing_obelisk_js_1.default,
monolith_js_1.default,
ritual_site_js_1.default,
sacrificial_site_js_1.default,
];
}
get unitClasses() {
return [
legion_build_drone_js_1.default,
legion_laborer_js_1.default,
legion_scout_drone_js_1.default,
thrall_js_1.default,
steelsworn_js_1.default,
dark_disciple_js_1.default,
exalted_js_1.default,
mammoth_js_1.default,
dreadnought_js_1.default,
terror_tank_js_1.default,
emperor_projection_js_1.default,
galavax_js_1.default,
inquisitress_js_1.default,
kraegar_js_1.default,
sabretooth_js_1.default,
];
}
}
LegionFactionEntity.src = "src/zerospace/faction/legion.ts";
// Export the class as default
exports.default = LegionFactionEntity;
//# sourceMappingURL=legion.js.map