@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
79 lines • 3.11 kB
JavaScript
/**
* Bastion - Protectorate heavy infantry unit
* Heavily armored defensive specialist with powerful weaponry and tactical positioning abilities
*/
import { ProtectorateArmyUnit } from "../../../../defaults/protectorate.js";
import { Attack, Upgrade } from "../../../../engine/ability.js";
export class Bastion extends ProtectorateArmyUnit {
// Readonly properties at class level
get infuseCost() {
return 4;
}
constructor() {
super();
// Auto-generated fixes from dev data comparison
// hp is set later in the mutable properties section
this.hexiteCost = 75;
this.fluxCost = 25;
this.buildTime = 24;
this.name = "Bastion";
this.tier = "T1.5";
this.supply = 3;
this.uuid = "09e41141-8b54-4634-bc20-499e82e9b3cc";
// Internal game engine data
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.Mech", "Attackable.ArmorType.Medium"];
this.internalSecondaryTags = ["Mech", "Infantry"];
// Mutable properties in constructor
this.hp = 275;
this.shields = 0;
this.armor = 1;
this.armorType = "heavy";
this.speed = 540;
this.turnSpeed = 4000;
this.pushability = 1;
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,
cooldownBetweenShots: 1.5,
armorPenetration: 0,
delay: 0.01,
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 = ["faction/protectorate/building/prot-barracks"];
this.upgradedBy = ["faction/protectorate/building/research-lab"];
this.unlockedBy = ["faction/protectorate/building/research-lab"];
// 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