@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
74 lines • 2.85 kB
JavaScript
"use strict";
/**
* Bastion - Protectorate heavy infantry unit
* Heavily armored defensive specialist with powerful weaponry and tactical positioning abilities
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Bastion = void 0;
const ability_js_1 = require("../../../../engine/ability.cjs");
const protectorate_classes_js_1 = require("../../protectorate-classes.cjs");
const prot_barracks_js_1 = __importDefault(require("../building/prot-barracks.cjs"));
const research_lab_js_1 = __importDefault(require("../building/research-lab.cjs"));
class Bastion extends protectorate_classes_js_1.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 ability_js_1.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 ability_js_1.Upgrade({
name: "Reactive Armor",
description: "+33% AOE",
tier: "T1.5",
fluxCost: 100,
researchTime: 50,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.kineticMode = new ability_js_1.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 = [prot_barracks_js_1.default.id];
this.upgradedBy = [research_lab_js_1.default.id];
this.unlockedBy = [research_lab_js_1.default.id];
// Tags for identification and targeting - none needed for Bastion
// Lore
}
}
exports.Bastion = Bastion;
Bastion.src = "src/zerospace/faction/protectorate/unit/bastion.ts";
exports.default = Bastion;
//# sourceMappingURL=bastion.js.map