ZeroSpace.gg

Harbinger

Grell T2 Army Unit

import { GrellArmyUnit } from "../../../../defaults/grell.js"; import { Attack, Spell, Upgrade } from "../../../../engine/ability.js"; export class Harbinger extends GrellArmyUnit { override uuid: string; static override src = "src/zerospace/faction/grell/unit/harbinger.ts"; constructor() { super(); this.hexiteCost = 75; this.fluxCost = 50; this.buildTime = 35; this.buildCount = 1; this.name = "Harbinger"; this.tier = "T2"; this.hotkey = "W"; this.uuid = "ea9c4201-f6df-47b8-b54e-732b03a5daab"; this.internalId = "Troop_GrellHarbinger_C"; this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_GrellHarbinger.Default__Troop_GrellHarbinger_C"; this.internalTags = [ "Attackable.Unit.Troop", "Attackable.Unit.Light", "Attackable.ArmorType.Heavy", "Attackable.Biological", ]; this.internalSecondaryTags = []; this.unlockedBy = ["faction/grell/building/incubator"]; this.createdBy = ["faction/grell/building/incubator"]; this.upgradedBy = ["faction/grell/building/macrogenesis-canopy"]; this.hp = 400; this.shields = 0; this.armor = 1; this.armorType = "heavy"; this.speed = 475; this.supply = 4; this.turnSpeed = 4000; this.healthRegen = 9; this.description = "Durable ranged unit that can cause damaging eruptions."; const harbinger = this; this.attacks.corrosiveSpit = new Attack({ name: "Corrosive Spit", damage: 27, range: 600, cooldown: 2, armorPenetration: 0, delay: 0.17, targets: ["ground"], bonusDamage: [{ multiplier: 1.5, vs: ["armor:heavy"] }], parentId: this.id, parentUUID: this.uuid, }); this.spells.eruption = new Spell({ name: "Eruption", description: "Deals 125 damage to units in the target area after 1.5 seconds.", 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.thermalCarapace = new Upgrade({ name: "Thermal Carapace", description: "+2 armor", tier: "T2.5" as const, fluxCost: 150, researchTime: 50, apply() { harbinger.armor = (harbinger.armor ?? 0) + 1; }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.cardiovascularBoost = new Upgrade({ name: "Cardiovascular Boost", description: "+200 move speed", tier: "T2.5" as const, fluxCost: 150, researchTime: 50, apply() { harbinger.speed = (harbinger.speed ?? 0) + 100; }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.hemalVents = new Upgrade({ name: "Hemal Vents", description: "Increases Eruption radius by 50%", tier: "T3.5" as const, fluxCost: 150, researchTime: 60, apply() { harbinger.spells.eruption.range = (harbinger.spells.eruption.range ?? 0) * 1.5; }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.coagulatedMembrane = new Upgrade({ name: "Coagulated Membrane", description: "Reduces Eruption HP Cost to 50", tier: "T3.5" as const, fluxCost: 200, researchTime: 60, apply() { harbinger.spells.eruption.energyCost = 50; }, parentId: this.id, parentUUID: this.uuid, }); } } export default Harbinger;