ZSGG Public Library
Xol
Main Faction
import { XolFaction, XolTalent, XolTopbar } from "../../defaults/xol.js";
export class Xol extends XolFaction {
override uuid: string;
static override src = "src/zerospace/faction/xol.ts";
constructor() {
super();
this.name = "Xol";
this.uuid = "6f3fcc4c-0ecf-4865-8aab-5fa27adc3a7c";
// TODO: description coming from a separate source.
this.description = "";
this.buildings = [
"faction/xol/building/world-engine",
"faction/xol/building/extractor",
"faction/xol/building/power-core",
"faction/xol/building/gyroforge",
"faction/xol/building/xyther-assembler",
"faction/xol/building/spectral-foundry",
"faction/xol/building/resonator",
"faction/xol/building/world-forge",
"faction/xol/building/molten-core",
];
this.units = [
"faction/xol/unit/xol-harvester",
"faction/xol/unit/roller",
"faction/xol/unit/xyther",
"faction/xol/unit/spectron",
"faction/xol/unit/echo",
"faction/xol/unit/defiant",
"faction/xol/unit/synapse",
"faction/xol/unit/gravitron",
"faction/xol/unit/eradicator",
"faction/xol/unit/paradox",
"faction/xol/unit/havoc",
"faction/xol/unit/scouting-drone",
];
this.heroes = ["faction/xol/hero/anrubic"];
this.topbars.recall = new XolTopbar({
name: "Recall",
topbarType: "recall",
slot: 1,
hotkey: "Q",
energyCost: 5,
cooldown: 90,
targets: ["friendly:ground", "friendly:air", "map"],
targetMode: "location",
description: "Recall units to anywhere inside Power Fields.",
});
this.topbars.replicate = new XolTopbar({
name: "Replicate",
topbarType: "special",
slot: 2,
hotkey: "W",
variableEnergyCost: "Varies by each copied unit",
targets: ["friendly:ground", "friendly:air", "map"],
targetMode: "location",
description:
"Create copies of friendly units in the selected area, up to the number that can be afforded with available topbar energy.",
});
this.topbars.orbitalLaser = new XolTopbar({
name: "Orbital Laser",
topbarType: "ultimate",
requiredLevel: 5,
unlocked: false,
energyCost: 25,
cooldown: 120,
duration: 15,
damage: 40,
damageInstancesPerSecond: 3,
targets: ["map"],
targetMode: "location",
description: "Spawn a controllable orbital laser for 15 seconds. Deals 40 damage 3 times per second.",
});
this.topbars.havoc = new XolTopbar({
name: "Havoc",
topbarType: "special",
requiredLevel: 5,
unlocked: false,
energyCost: 10,
cooldown: 60,
charges: 3,
targets: ["friendly:ground"],
targetMode: "unit",
description: "Transform a Roller into a Havoc.",
wikiDescription:
"Transforms a [[faction/xol/unit/roller]] into a [[faction/xol/unit/havoc]].",
});
this.topbars.unmerge = new XolTopbar({
name: "Unmerge",
topbarType: "special",
requiredLevel: 3,
unlocked: false,
cooldown: 60,
range: 400,
targets: ["map"],
targetMode: "location",
description: "Unmerges Xol units in a 4 range radius.",
});
this.talents.instantPowerCore = new XolTalent({
name: "Instant Power Core",
level: 1,
description: "Power Cores build instantly.",
});
this.talents.powerCoreShields = new XolTalent({
name: "Power Core Shields",
level: 1,
description: "Power Cores gain 350 shields.",
});
this.talents.efficientMerging = new XolTalent({
name: "Efficient Merging",
level: 2,
description: "Reduces merge costs by 25 Flux.",
});
this.talents.efficientReplication = new XolTalent({
name: "Efficient Replication",
level: 3,
description: "Reduces replication time to 1 second.",
});
this.talents.unmerge = new XolTalent({
name: "Unmerge",
level: 3,
description: "Unmerges Xol units in a 4 range radius.",
wikiDescription:
"Unlocks the [[faction/xol/topbar/unmerge]] ability, which unmerges Xol units in a 4 range radius.",
});
this.talents.improvedSystems = new XolTalent({
name: "Improved Systems",
level: 4,
description: "+100% Overclock duration. \n-50% merging time.",
});
this.talents.orbitalLaser = new XolTalent({
name: "Orbital Laser",
level: 5,
description: "Spawn a controllable laser for 15 seconds.",
wikiDescription:
"Unlocks the [[faction/xol/topbar/orbital-laser]] ability, which spawns a controllable laser for 15 seconds.",
});
this.talents.havoc = new XolTalent({
name: "Havoc",
level: 5,
description: "Transform a Roller into a Havoc.",
wikiDescription:
"Unlocks the [[faction/xol/topbar/havoc]] ability to transform a [[faction/xol/unit/roller]] into a [[faction/xol/unit/havoc]].",
});
this.talents.t3Upgrades = new XolTalent({
name: "T3 Upgrades",
level: 6,
description: "Allows a third rank of each selected World Forge army upgrade to be researched.",
});
this.topbars.orbitalLaser.unlockedBy = [this.talents.orbitalLaser.id];
this.talents.orbitalLaser.unlocks = [this.topbars.orbitalLaser.id];
this.topbars.havoc.unlockedBy = [this.talents.havoc.id];
this.talents.havoc.unlocks = [this.topbars.havoc.id];
this.topbars.unmerge.unlockedBy = [this.talents.unmerge.id];
this.talents.unmerge.unlocks = [this.topbars.unmerge.id];
this.wireUpUnlocks();
}
}
export default Xol;