ZSGG Public Library
Bastion
Protectorate Co-Op T1.5 Army Unit
import { ArmyUnit } from "../../../../../engine/unit.js";
import { Attack, Upgrade } from "../../../../../engine/ability.js";
export class CoopBastion extends ArmyUnit {
static override src = "src/zerospace/coop/commander/aster/unit/coop-aster-bastion.ts";
constructor() {
super();
this.faction = "protectorate";
this.factionName = "Protectorate";
this.hexiteCost = 75;
this.fluxCost = 25;
this.buildTime = 30;
this.name = "Bastion";
this.tier = "T1.5";
this.supply = 3;
this.uuid = "44203ab1-2a4b-457b-870b-353edde39ea7";
this.internalId = "Troop_Prot_Bastion_C";
this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_Prot_Bastion.Default__Troop_Prot_Bastion_C";
this.internalTags = [
"Attackable.Unit.Troop",
"Attackable.Unit.Light",
"Attackable.ArmorType.Medium",
"Attackable.Biological",
"Local.Prot.Bastion",
];
this.internalSecondaryTags = ["Biological", "Mech", "Infantry"];
this.hp = 275;
this.shields = 0;
this.armor = 1;
this.armorType = "medium";
this.speed = 540;
this.turnSpeed = 4000;
this.pushability = 1;
this.description = "Infantry with short range and splash damage.";
this.attacks.g53Flamethrower = new Attack({
internalId: "Default__Weapon_Prot_Bastion_C",
name: "G53 Flamethrower",
damage: 16,
cooldown: 1.5,
armorPenetration: 0,
delay: 0.15,
range: 225,
bonusDamage: [{ multiplier: 2.0, vs: ["armor:light"] }],
splash: {
multiplier: 1.0,
range: 80,
},
targets: ["ground"],
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.reactiveArmor = new Upgrade({
name: "Reactive Armor",
unlockedBy: ["faction/protectorate/building/research-lab"],
description: "+25% health. +1 armor.",
tier: "T1",
position: "A",
fluxCost: 100,
researchTime: 50,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.kineticMode = new Upgrade({
name: "Kinetic Mode",
unlockedBy: ["faction/protectorate/building/mechanical-research-lab"],
description: "+40% movement speed outside of combat.",
tier: "T1",
position: "B",
fluxCost: 100,
researchTime: 50,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.overpressureNozzle = new Upgrade({
name: "Overpressure Nozzle",
unlockedBy: ["faction/protectorate/building/research-lab"],
description: "+25% Splash range. \n+33% Splash area of effect.",
tier: "T2",
position: "A",
fluxCost: 125,
researchTime: 60,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.retributionProtocol = new Upgrade({
name: "Retribution Protocol",
unlockedBy: ["faction/protectorate/building/mechanical-research-lab"],
description: "Explodes on death, dealing 20 damage per second to nearby enemies. Lasts 6 seconds.",
tier: "T2",
position: "B",
fluxCost: 125,
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.unlockedBy = ["coop/commander/aster/building/coop-aster-research-lab"];
this.createdBy = ["coop/commander/aster/building/coop-aster-prot-barracks"];
this.upgradedBy = ["coop/commander/aster/building/coop-aster-research-lab"];
}
}
export default CoopBastion;