@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
119 lines • 4.58 kB
JavaScript
"use strict";
/**
* Harbinger - Grell flying artillery unit with bio-chemical warfare capabilities
* Heavy armor, acidic attacks, and devastating area-effect eruption ability
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Harbinger = void 0;
const ability_js_1 = require("../../../../engine/ability.cjs");
const grell_classes_js_1 = require("../../grell-classes.cjs");
const advanced_augmentation_pool_js_1 = __importDefault(require("../building/advanced-augmentation-pool.cjs"));
const medium_incubator_js_1 = __importDefault(require("../building/medium-incubator.cjs"));
class Harbinger extends grell_classes_js_1.GrellArmyUnit {
constructor() {
super();
this.name = "Harbinger";
this.tier = "T2";
this.hotkey = "W";
this.hexiteCost = 75;
this.fluxCost = 50;
this.buildTime = 26;
this.buildCount = 1;
this.uuid = "ea9c4201-f6df-47b8-b54e-732b03a5daab";
this.unlockedBy = [medium_incubator_js_1.default.id];
this.createdBy = [medium_incubator_js_1.default.id];
this.upgradedBy = [advanced_augmentation_pool_js_1.default.id];
this.hp = 500;
this.shields = 0;
this.armor = 1;
this.armorType = "heavy";
this.speed = 425;
this.supply = 4;
Object.assign(this, { domain: "air" });
this.description = "Durable ranged unit with an area damage ability. Attacks ground and air units.";
const harbinger = this;
this.attacks.acidicSpit = new ability_js_1.Attack({
name: "Acidic Spit",
damage: 27,
range: 500,
cooldown: 2,
targets: ["ground", "air"],
bonusDamage: [{ multiplier: 1.5, vs: ["armor:heavy"] }],
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.eruption = new ability_js_1.Spell({
name: "Eruption",
description: "Deals 150 damage to units in the target area after 1.5 seconds. Heals 25% per unit.",
targets: ["air", "ground"],
energyCost: 100,
energyType: "health",
delay: 1.5,
range: 1500,
hotkey: "E",
damage: 150,
splash: {
range: 100,
multiplier: 1.0,
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.harbingerArmor = new ability_js_1.Upgrade({
name: "Harbinger Armor",
description: "+2 armor",
tier: "T2.5",
fluxCost: 150,
researchTime: 50,
apply() {
harbinger.armor = (harbinger.armor ?? 0) + 1; // 1 + 1 = 2
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.harbingerSpeed = new ability_js_1.Upgrade({
name: "Harbinger Speed",
description: "+200 move speed",
tier: "T2.5",
fluxCost: 150,
researchTime: 50,
apply() {
harbinger.speed = (harbinger.speed ?? 0) + 100; // 575 + 100 = 675
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.eruptionRadius = new ability_js_1.Upgrade({
name: "Eruption Radius",
description: "Increases the radius of eruption by 50%",
tier: "T3.5",
fluxCost: 150,
researchTime: 60,
apply() {
harbinger.spells.eruption.range = (harbinger.spells.eruption.range ?? 0) * 1.5; // 1500 * 1.5 = 2250
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.eruptionCost = new ability_js_1.Upgrade({
name: "Eruption Cost",
description: "Reduces Eruption HP Cost by 60",
tier: "T3.5",
fluxCost: 200,
researchTime: 60,
apply() {
harbinger.spells.eruption.energyCost = (harbinger.spells.eruption.energyCost ?? 0) - 60; // 100 - 60 = 40
},
parentId: this.id,
parentUUID: this.uuid,
});
}
}
exports.Harbinger = Harbinger;
// Static property for source path
Harbinger.src = "src/zerospace/faction/grell/unit/harbinger.ts";
exports.default = Harbinger;
//# sourceMappingURL=harbinger.js.map