ZSGG Public Library
Spectron
Xol T1 Army Unit
import { XolArmyUnit } from "../../../../defaults/xol.js";
import { Attack, Spell } from "../../../../engine/ability.js";
import { applyXolMerges } from "../_util/xol-merges.js";
export class Spectron extends XolArmyUnit {
override uuid: string;
static override src = "src/zerospace/faction/xol/unit/spectron.ts";
constructor() {
super();
applyXolMerges(this);
this.hexiteCost = 25;
this.fluxCost = 50;
this.buildTime = 5;
this.name = "Spectron";
this.tier = "T1";
this.hotkey = "";
this.uuid = "e424b0b3-3aee-49e8-97ca-fdddfe6ed2b2";
this.internalId = "Troop_Xol_Spectron_C";
this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_Xol_Spectron.Default__Troop_Xol_Spectron_C";
this.internalTags = [
"Attackable.Unit.Troop",
"Attackable.ArmorType.Light",
"Local.Xol.Spectron",
"Troop.Xol.Tier1",
];
this.internalSecondaryTags = ["Infantry"];
// The listed damage is the base the export gives. Charging is a property of the attack we have
// no way to represent as a stat, so it's noted at the end of the description.
this.description =
"Ranged unit that charges up its projectile to deal more damage. Can attack ground and air units. \nCharges up to double its attack damage while out of combat, losing the charge once it attacks.";
this.createdBy = ["faction/xol/building/spectral-foundry"];
this.unlockedBy = ["faction/xol/building/spectral-foundry"];
this.hp = 120;
this.shields = 0;
this.armor = 0;
this.armorType = "light";
this.speed = 600;
this.supply = 2;
this.turnSpeed = 2000;
this.vision = 1600;
this.pushability = 0;
this.modes = [
{ slug: "normal", name: "Normal", description: "Has not been upgraded by the Molten Core." },
{ slug: "molten", name: "Molten", description: "Upgraded by the Molten Core for 100 energy." },
];
this.attacks.singularityOrb = new Attack({
internalId: "Default__Weapon_Xol_MP_Spectron_C",
name: "Singularity Orb",
damage: 18,
range: 1000,
cooldown: 1.3,
armorPenetration: 0,
delay: 0.143,
targets: ["ground", "air"],
bonusDamage: [{ multiplier: 1.5, vs: ["armor:medium"] }],
requiresMode: "normal",
parentId: this.id,
parentUUID: this.uuid,
});
this.attacks.singularityOrbMolten = new Attack({
name: "Singularity Orb (Molten)",
damage: 80,
range: 1800,
cooldown: 5,
splash: { multiplier: 1, range: 150 },
bonusDamage: [{ multiplier: 1.5, vs: ["armor:medium"] }],
targets: ["ground", "air"],
requiresMode: "molten",
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.disassimilate = new Spell({
name: "Disassimilate",
description: "Quickly moves the Spectron to a target point, making it invulnerable while moving.",
targets: ["map"],
targetMode: "location",
cooldown: 12,
parentId: this.id,
parentUUID: this.uuid,
});
}
}
export default Spectron;