@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
67 lines • 2.41 kB
JavaScript
/**
* Bastion - Protectorate heavy infantry unit
* Heavily armored defensive specialist with powerful weaponry and tactical positioning abilities
*/
import { Attack, Upgrade } from "../../../../engine/ability.js";
import { ProtectorateArmyUnit } from "../../protectorate-classes.js";
import ProtBarracks from "../building/prot-barracks.js";
import ResearchLab from "../building/research-lab.js";
export class Bastion extends ProtectorateArmyUnit {
get infuseCost() {
return 4;
}
constructor() {
super();
this.name = "Bastion";
this.tier = "T1.5";
this.supply = 3;
this.hexiteCost = 75;
this.fluxCost = 25;
this.buildTime = 24;
this.uuid = "09e41141-8b54-4634-bc20-499e82e9b3cc";
// Mutable properties in constructor
this.hp = 225;
this.armor = 1;
this.armorType = "heavy";
this.speed = 540;
this.description = "Heavy combat infantry with short range and splash damage. Attacks ground units.";
// Combat abilities
this.attacks.g53LightFlamethrower = new Attack({
name: "G53 Light Flamethrower",
damage: 8,
cooldown: 1.5,
range: 225,
targets: ["ground"],
parentId: this.id,
parentUUID: this.uuid,
});
// Upgrades
this.upgrades.reactiveArmor = new Upgrade({
name: "Reactive Armor",
description: "+33% AOE",
tier: "T1.5",
fluxCost: 100,
researchTime: 50,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.kineticMode = new Upgrade({
name: "Kinetic Mode",
description: "Gains +40% movement speed outside of combat. 5s delay after last combat.",
tier: "T2.5",
fluxCost: 150,
researchTime: 60,
parentId: this.id,
parentUUID: this.uuid,
});
// Entity relationships using static ID references
this.createdBy = [ProtBarracks.id];
this.upgradedBy = [ResearchLab.id];
this.unlockedBy = [ResearchLab.id];
// Tags for identification and targeting - none needed for Bastion
// Lore
}
}
Bastion.src = "src/zerospace/faction/protectorate/unit/bastion.ts";
export default Bastion;
//# sourceMappingURL=bastion.js.map