ZSGG Public Library
Aster (Commander)
Protectorate Co-Op Coop Commander Unit
import { ProtectorateTopbar } from "../../../defaults/protectorate.js";
import { Attack, Spell } from "../../../engine/ability.js";
import { CommanderLevel } from "../../../engine/commander-level.js";
import { CoopCommanderUnit } from "../../../engine/unit.js";
export class AsterCoop extends CoopCommanderUnit {
static override src = "src/zerospace/coop/commander/aster-commander.ts";
constructor() {
super();
this.uuid = "5562f476-0611-4941-bc0a-d62d2b06a3d0";
this.name = "Aster (Commander)";
this.commanderType = "frontline";
this.maxLevel = 12;
this.faction = "protectorate";
this.factionName = "Protectorate";
this.internalId = "Troop_Coop_Aster_C";
this.internalPath = undefined;
this.internalTags = [
"Logic.SpawnAtOldestSpawner",
"Attackable.Biological",
"Logic.NoVeterancy",
"Attackable.Unit.Hero.Aster",
];
this.hp = 724;
this.speed = 632;
this.armor = 1;
this.armorType = "medium";
this.stunResist = 40;
this.commanderFaction = [
"coop/commander/aster/building/coop-aster-operating-tower",
"coop/commander/aster/building/coop-aster-supply-platform",
"coop/commander/aster/building/coop-aster-prot-barracks",
"coop/commander/aster/building/coop-aster-assembly-plant",
"coop/commander/aster/building/coop-aster-war-foundry",
"coop/commander/aster/building/coop-aster-research-lab",
"coop/commander/aster/building/coop-aster-mechanical-research-lab",
"coop/commander/aster/building/coop-aster-airstrip",
"coop/commander/aster/building/coop-aster-skydock",
"coop/commander/aster/building/coop-aster-prot-extractor",
"coop/commander/aster/unit/coop-aster-prot-build-drone",
"coop/commander/aster/unit/coop-aster-protectorate-prospector",
"coop/commander/aster/unit/coop-aster-recon-drone",
"coop/commander/aster/unit/coop-aster-commando",
"coop/commander/aster/unit/coop-aster-bastion",
"coop/commander/aster/unit/coop-aster-predator",
"coop/commander/aster/unit/coop-aster-ironwing",
"coop/commander/aster/unit/coop-aster-titan",
"coop/commander/aster/unit/coop-aster-sentinel",
"coop/commander/aster/unit/coop-aster-juggernaut",
"coop/commander/aster/unit/coop-aster-strider",
"coop/commander/aster/unit/coop-aster-griffin",
"coop/commander/aster/unit/coop-aster-sol-invictus",
];
this.attacks.vx9IonCarbine = new Attack({
name: "VX-9 Ion Carbine",
damage: 19,
cooldown: 1,
range: 1200,
targets: ["ground", "air"],
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.plasmaBlast = new Spell({
name: "Plasma Blast",
hotkey: "Q",
cooldown: 7,
description: "Deal 50 damage in an arc and stuns enemies for 3 seconds",
damage: 50,
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.rally = new Spell({
name: "Rally",
hotkey: "W",
cooldown: 45,
description:
"Rallies nearby units. +40% attack and movement speed. Lasts 15 seconds. Biological units are healed over the duration.",
duration: 15,
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.jetpack = new Spell({
name: "Jetpack",
hotkey: "D",
description:
'Jump to a target location, ignoring terrain. With "Combat Kit" Commander Level: Aster deals 200 damage and stuns enemy units for 3s after landing.',
parentId: this.id,
parentUUID: this.uuid,
});
this.commanderTopbars.shockwave = new ProtectorateTopbar({
name: "Shockwave",
topbarType: "special",
slot: 1,
hotkey: "Ctrl-Q",
cooldown: 30,
duration: 3,
description: "Stuns enemy units in an area for 3 seconds",
requiredLevel: 1,
parentId: this.id,
parentUUID: this.uuid,
});
this.commanderTopbars.reinforcements = new ProtectorateTopbar({
name: "Reinforcements",
topbarType: "summon",
slot: 2,
energyCost: 20,
description:
'Call down reinforcements of the selected type. Can be used near Operating Towers and Striders. With "Hot Landing Zone" Commander Level: Reinforcements can be used anywhere with vision.',
requiredLevel: 1,
parentId: this.id,
parentUUID: this.uuid,
});
this.commanderTopbars.airstrike = new ProtectorateTopbar({
name: "Airstrike",
topbarType: "special",
slot: 3,
description: "Calls down an Airstrike, dealing 200 damage to ground units. Requires Airstrips with an available Airstrike ship.",
requiredLevel: 3,
parentId: this.id,
parentUUID: this.uuid,
});
this.commanderTopbars.solInvictus = new ProtectorateTopbar({
name: "Sol Invictus",
topbarType: "summon",
slot: 4,
cooldown: 150,
energyCost: 30,
description:
'Call down a powerful mech that explodes on death and sets the ground on fire. With "Mechanical Stockpile" Commander Level: Sol invictus faction power is no longer restricted by cooldown.',
requiredLevel: 6,
creates: ["coop/commander/aster/unit/coop-aster-sol-invictus"],
unlockedBy: ["coop/commander/aster-commander/commander-level/levels/6"],
parentId: this.id,
parentUUID: this.uuid,
});
this.levels["1"] = new CommanderLevel({
name: "Prefect Aster",
level: 1,
description: "Aster leads personally on the battlefield, unleashing the full might of the Protectorate.",
unlocks: ["shockwave", "reinforcements"],
parentId: this.id,
uuid: "14feba4d-dcce-445f-b6be-a72720eb4e33",
});
this.levels["2"] = new CommanderLevel({
name: "Rally",
level: 2,
description: "Aster gains the ability to temporarily boost nearby units.",
parentId: this.id,
uuid: "30102a15-901d-44a8-ac96-8576ece287b3",
});
this.levels["3"] = new CommanderLevel({
name: "Airstrike",
level: 3,
description: "New Topbar Ability: Airstrike targeted location. Build airstrips to gain access to airstrikes",
unlocks: ["airstrike", "coop/commander/aster/building/coop-aster-airstrip"],
parentId: this.id,
uuid: "f0bbd9bb-8d12-4e89-a337-96cf8285e813",
});
this.levels["4"] = new CommanderLevel({
name: "Combat Kit",
level: 4,
description:
"Aster's Plasma Blast cooldown reduced by 3 seconds. Aster's Jump deals damage and stuns enemies after landing.",
parentId: this.id,
uuid: "8a596483-88ea-4bc3-a69a-b4089549bb94",
});
this.levels["5"] = new CommanderLevel({
name: "Walker Upgrade Cache",
level: 5,
description: "New upgrades for Titan and Strider",
parentId: this.id,
uuid: "b1e51875-cb91-4aa9-963e-17013f1aaaf1",
});
this.levels["6"] = new CommanderLevel({
name: "Sol Invictus",
level: 6,
description: "New faction power: Spawn a powerful mech on the battlefield.",
unlocks: [
"faction/protectorate/topbar/sol-invictus",
"coop/commander/aster/unit/coop-aster-sol-invictus",
],
parentId: this.id,
uuid: "9a17e215-acd7-410d-acd0-4f8da5155f8a",
});
this.levels["7"] = new CommanderLevel({
name: "Vanguard",
level: 7,
description: "Army units gain +15% health and movement speed",
parentId: this.id,
uuid: "b52eb367-2209-477a-b681-f4255cc8c251",
});
this.levels["8"] = new CommanderLevel({
name: "Airship Upgrade Cache",
level: 8,
description: "New upgrades for ironwing and Griffin.",
parentId: this.id,
uuid: "90cac21a-d483-4f12-bd68-502d42d463f6",
});
this.levels["9"] = new CommanderLevel({
name: "Production Efficiency",
level: 9,
description: "Flux cost of all units is reduced by 25.",
parentId: this.id,
uuid: "2d91df52-24b1-4a33-9e80-c179efeaea57",
});
this.levels["10"] = new CommanderLevel({
name: "Hot Landing Zone",
level: 10,
description: "Reinforcements can be used anywhere with vision.",
parentId: this.id,
uuid: "6121479c-b34f-45e3-9ba6-13c6dbd6b707",
});
this.levels["11"] = new CommanderLevel({
name: "Battle Hardened",
level: 11,
description: "Units gain veterancy 30% faster.",
parentId: this.id,
uuid: "4b51cfd0-0842-48ad-bf5e-9537aedb24d6",
});
this.levels["12"] = new CommanderLevel({
name: "Mechanical Stockpile",
level: 12,
description: "Sol Invictus faction power is no longer restricted by cooldown.",
parentId: this.id,
uuid: "423bed0d-61ff-48ac-9fad-2cfdfc2659bf",
});
}
}
export default AsterCoop;