@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
54 lines • 2.3 kB
JavaScript
/**
* Marran Sharpshooter - T1 precision sniper with firing position ability
* Elite marksman who embodies Marran defensive philosophy through patient precision
*/
import { Attack, Siege } from "../../../../engine/ability.js";
import { MarranMercUnit } from "../../marran-classes.js";
import { MarranMercOutpostBuilding } from "../building/marran-merc-outpost.js";
export class MarranSharpshooter extends MarranMercUnit {
constructor() {
super();
this.name = "Marran Sharpshooter";
this.tier = "T1";
this.buildCount = 3;
this.hexiteCost = 100;
this.fluxCost = 200;
this.uuid = "fa911f95-449e-47a7-9aa4-8084ed260d3d";
this.description = "Light infantry which can set up to attack with extra range in a limited area. Attacks ground and air units.";
// Set short name
this.shortName = "Sharpshooter";
// Mutable properties - precision sniper with advanced positioning
this.supply = 3;
this.hp = 100;
this.shields = 100;
this.armorType = "light";
this.speed = 450;
// TODO: Convert to getter - this.infuseCost = 5;
// Relationships
this.createdBy = [MarranMercOutpostBuilding.id];
this.unlockedBy = [MarranMercOutpostBuilding.id];
// Attack ability with bonus vs light armor
this.attacks.attack = new Attack({
name: "Attack",
damage: 15,
cooldown: 1.0,
range: 1200,
targets: ["air", "ground"],
bonusDamage: [{ multiplier: 1.5, vs: ["armor:light"] }],
parentId: this.id,
parentUUID: this.uuid,
});
// Firing Position toggle ability - signature Marran siege mode
this.sieges.firingPosition = new Siege({
name: "Firing Position",
description: "0.3s to set up. gain 100% range and 50% attack speed against units in a limited arc. cannot move while in firing position",
hotkey: "F",
togglesMode: "siege",
duration: 0.3,
});
}
}
// Static property for source path
MarranSharpshooter.src = "src/zerospace/mercenary/marran/unit/marran-sharpshooter.ts";
export default MarranSharpshooter;
//# sourceMappingURL=marran-sharpshooter.js.map