ZSGG Public Library
Sentinel
Protectorate Co-Op T1.5 Army Unit
import { ArmyUnit } from "../../../../../engine/unit.js";
import { Attack, Upgrade } from "../../../../../engine/ability.js";
export class CoopSentinel extends ArmyUnit {
static override src = "src/zerospace/coop/commander/aster/unit/coop-aster-sentinel.ts";
constructor() {
super();
this.faction = "protectorate";
this.factionName = "Protectorate";
this.hexiteCost = 75;
this.fluxCost = 75;
this.buildTime = 36;
this.buildCount = 1;
this.name = "Sentinel";
this.description = "Ranged infantry equipped with an anti-heavy cannon.";
this.tier = "T1.5";
this.hotkey = "R";
this.uuid = "c5916a87-f869-46bd-a211-238c93cf48c8";
this.internalId = "Troop_Prot_MP_HeavyRail_C";
this.internalPath =
"/Game/Nova/Archetypes_Troops/Multiplayer/Protectorate/Troop_Prot_MP_HeavyRail.Default__Troop_Prot_MP_HeavyRail_C";
this.internalTags = [
"Attackable.Unit.Troop",
"Attackable.Unit.Light",
"Attackable.ArmorType.Light",
"Attackable.Biological",
];
this.internalSecondaryTags = ["Infantry"];
this.hp = 180;
this.shields = 0;
this.armor = 0;
this.armorType = "light";
this.speed = 550;
this.turnSpeed = 5000;
this.vision = 1600;
this.pushability = 1;
this.supply = 3;
this.unlockedBy = ["faction/protectorate/building/research-lab"];
this.upgradedBy = ["faction/protectorate/building/research-lab"];
this.createdBy = ["faction/protectorate/building/prot-barracks"];
this.attacks.hR7RailCannon = new Attack({
internalId: "Default__Weapon_Prot_RocketTrooper_Beam_C",
name: "HR-7 Rail Cannon",
damage: 30,
cooldown: 2.6,
armorPenetration: 0,
delay: 0.08,
range: 1300,
targets: ["ground"],
bonusDamage: [{ multiplier: 2.0, vs: ["armor:heavy"] }],
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.longshotCalibration = new Upgrade({
name: "Longshot Calibration",
unlockedBy: ["faction/protectorate/building/research-lab"],
description: "+4 attack range",
tier: "T1",
position: "A",
fluxCost: 100,
researchTime: 45,
apply: () => {
this.attacks.hR7RailCannon!.range! += 400;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.heavyRockets = new Upgrade({
name: "Heavy Rockets",
unlockedBy: ["faction/protectorate/building/mechanical-research-lab"],
description: "+100% damage vs heavy armor",
tier: "T1",
position: "B",
fluxCost: 100,
researchTime: 45,
apply: () => {
const attack = this.attacks.hR7RailCannon!;
attack.bonusDamage![0]!.multiplier! += 3.0;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.internalId = undefined;
this.internalPath = undefined;
this.setVariantUUID("coop-aster");
delete this.upgrades.longshotCalibration;
this.upgrades.longshotCalibration = new Upgrade({
name: "Longshot Calibration",
unlockedBy: ["faction/protectorate/building/research-lab"],
description: "+4 attack range",
tier: "T1",
position: "A",
fluxCost: 100,
researchTime: 45,
apply: () => {
this.attacks.hR7RailCannon!.range! += 400;
},
parentId: this.id,
parentUUID: this.uuid,
});
delete this.upgrades.heavyRockets;
this.upgrades.hyperdenseRounds = new Upgrade({
name: "Hyperdense Rounds",
unlockedBy: ["faction/protectorate/building/mechanical-research-lab"],
description: "+100% damage vs heavy armor",
tier: "T2",
position: "A",
fluxCost: 100,
researchTime: 45,
apply: () => {
const attack = this.attacks.hR7RailCannon!;
attack.bonusDamage![0]!.multiplier! += 3.0;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.falcoRounds = new Upgrade({
name: "Falco Rounds",
description: "Sentinels can target air units.",
tier: "T2",
position: "B",
fluxCost: 150,
researchTime: 45,
parentId: this.id,
parentUUID: this.uuid,
uuid: "132e13bd-eae0-4b7e-961a-fa1a73e5da17",
});
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 CoopSentinel;