ZSGG Public Library
Bastion
Protectorate T1.5 Army Unit
import { ProtectorateArmyUnit } from "../../../../defaults/protectorate.js";
import { Attack, Upgrade } from "../../../../engine/ability.js";
export class Bastion extends ProtectorateArmyUnit {
override uuid: string;
static override src = "src/zerospace/faction/protectorate/unit/bastion.ts";
constructor() {
super();
this.hexiteCost = 75;
this.fluxCost = 25;
this.buildTime = 30;
this.name = "Bastion";
this.tier = "T1.5";
this.supply = 3;
this.uuid = "09e41141-8b54-4634-bc20-499e82e9b3cc";
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"];
}
}
export default Bastion;