@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
102 lines • 3.73 kB
JavaScript
/**
* Commando - Protectorate light infantry unit
* Fast-moving elite soldier with jetpack mobility and precision weaponry
*/
import { Attack, Spell, 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 Commando extends ProtectorateArmyUnit {
get infuseCost() {
return 3;
}
constructor() {
super();
this.name = "Commando";
this.tier = "T1";
this.supply = 2;
this.hexiteCost = 50;
this.fluxCost = 0;
this.buildTime = 18;
this.uuid = "38c2cfa9-c894-47b9-a2c0-7715de8ed15c";
// Mutable properties in constructor
this.hp = 140;
this.armor = 0;
this.armorType = "light";
this.speed = 550;
this.description = "Light ranged infantry equipped with jump jets. Attacks ground and air units.";
// Combat abilities
this.attacks.s10CombatRifle = new Attack({
name: "S-10 Combat Rifle",
damage: 8,
cooldown: 0.84,
range: 800,
targets: ["ground", "air"],
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.jetpack = new Spell({
name: "Jetpack",
hotkey: "D",
cooldown: 18,
description: "jumps to the target point, bypassing any terrain. Jump speed: 1000",
parentId: this.id,
parentUUID: this.uuid,
});
// Upgrades
this.upgrades.highPoweredJetpacks = new Upgrade({
name: "High Powered Jetpacks",
description: "+5 jump range, jetpack cooldown reduced from 18 to 12 seconds",
tier: "T1",
fluxCost: 75,
researchTime: 30,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.commandoSpeed = new Upgrade({
name: "Commando Speed",
description: "Increases move speed by +100",
tier: "T1.5",
fluxCost: 100,
researchTime: 45,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.improvedRifles = new Upgrade({
name: "Improved Rifles",
description: "Increases range by +200",
tier: "T1.5",
fluxCost: 100,
researchTime: 45,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.shreddingRounds = new Upgrade({
name: "Shredding Rounds",
description: "Each hit causes target to take 2% more damage for 8s",
tier: "T2.5",
fluxCost: 150,
researchTime: 60,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.eagleSense = new Upgrade({
name: "Eagle Sense",
description: "Gains +75% attack speed and +25% move speed for 4 seconds after jetpack finishes",
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 = [ProtBarracks.id];
// Tags for identification and targeting - none needed for Commando
// Lore with beautiful formatting
}
}
Commando.src = "src/zerospace/faction/protectorate/unit/commando.ts";
export default Commando;
//# sourceMappingURL=commando.js.map