ZSGG Public Library
Commando
Protectorate Co-Op T1 Army Unit
import { ArmyUnit } from "../../../../../engine/unit.js";
import { Attack, Spell, Upgrade } from "../../../../../engine/ability.js";
export class CoopCommando extends ArmyUnit {
static override src = "src/zerospace/coop/commander/aster/unit/coop-aster-commando.ts";
constructor() {
super();
this.faction = "protectorate";
this.factionName = "Protectorate";
this.hexiteCost = 50;
this.fluxCost = 0;
this.buildTime = 24;
this.name = "Commando";
this.tier = "T1";
this.supply = 2;
this.uuid = "185e6a57-464b-473c-9666-9d0f6db05a99";
this.internalId = "Troop_Prot_Commando_C";
this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_Prot_Commando.Default__Troop_Prot_Commando_C";
this.internalTags = [
"Attackable.Unit.Troop",
"Attackable.Unit.Light",
"Attackable.ArmorType.Light",
"Attackable.Biological",
];
this.internalSecondaryTags = ["Biological", "Infantry"];
this.hp = 125;
this.armor = 0;
this.armorType = "light";
this.speed = 550;
this.turnSpeed = 5000;
this.description = "Ranged infantry equipped with a jetpack";
this.attacks.s10CombatRifle = new Attack({
internalId: "Default__Weapon_Prot_MP_Commando_C",
name: "S-10 Combat Rifle",
damage: 7,
cooldown: 0.8,
armorPenetration: 0,
delay: 0.01,
range: 700,
targets: ["ground", "air"],
parentId: this.id,
parentUUID: this.uuid,
});
const commando = this;
this.spells.jetpack = new Spell({
name: "Jetpack",
hotkey: "D",
cooldown: 18,
description: "Jump to a target location, ignoring terrain.",
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.impulseThrusters = new Upgrade({
name: "Impulse Thrusters",
unlockedBy: ["faction/protectorate/building/research-lab"],
description: "-33% Jetpack cooldown. \n+42% Jetpack Range.\n(Affects Prefect Aster)",
tier: "T1",
position: "A",
fluxCost: 100,
researchTime: 40,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.magneticRifling = new Upgrade({
name: "Magnetic Rifling",
unlockedBy: ["faction/protectorate/building/research-lab"],
description: "+3 attack range\n(Affects Prefect Aster)",
tier: "T1",
position: "B",
fluxCost: 100,
researchTime: 45,
apply: () => {
commando.attacks.s10CombatRifle!.range! += 300;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.eagleTactics = new Upgrade({
name: "Eagle Tactics",
unlockedBy: ["faction/protectorate/building/mechanical-research-lab"],
description:
"After using Jetpack, for 4 seconds: \n+40% attack speed \n+40% movement speed.\n(Affects Prefect Aster)",
tier: "T2",
position: "A",
fluxCost: 150,
researchTime: 60,
parentId: this.id,
parentUUID: this.uuid,
});
this.createdBy = ["faction/protectorate/building/prot-barracks"];
this.upgradedBy = ["faction/protectorate/building/research-lab"];
this.unlockedBy = ["faction/protectorate/building/prot-barracks"];
this.internalId = undefined;
this.internalPath = undefined;
this.setVariantUUID("coop-aster");
this.hp = 130;
this.upgrades.eagleTactics.tier = "T3";
this.upgrades.eagleTactics.position = "B";
this.upgrades.eagleTactics.description =
"After using Jetpack, for 4 seconds: \n+40% attack speed \n+40% movement speed.\n(Affects Prefect Aster)";
this.attacks.s10CombatRifle.damage = 8;
this.upgrades.shreddingRounds = new Upgrade({
name: "Shredding Rounds",
description: "Attacks cause targets to take 2% more damage from all sources for 8 seconds. Stacks up to 40%.",
tier: "T3",
position: "A",
fluxCost: 150,
researchTime: 60,
parentId: this.id,
parentUUID: this.uuid,
uuid: "2c42c0d8-ed9f-4ac8-b272-2d73423ff25d",
});
this.unlockedBy = ["coop/commander/aster/building/coop-aster-prot-barracks"];
this.createdBy = ["coop/commander/aster/building/coop-aster-prot-barracks"];
this.upgradedBy = ["coop/commander/aster/building/coop-aster-research-lab"];
}
}
export default CoopCommando;