UNPKG

@zerospacegg/iolin

Version:

Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)

119 lines 4.58 kB
"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