ZeroSpace.gg

Harbinger

Grell Co-Op T2 Army Unit

import { CoopFrenzySkill } from "../../../../../defaults/grell.js"; import { GrellArmyUnit } from "../../../../../defaults/grell.js"; import { Attack, Spell, Upgrade } from "../../../../../engine/ability.js"; export class CoopHarbinger extends GrellArmyUnit { override uuid: string; static override src = "src/zerospace/coop/commander/vynthra/unit/coop-vynthra-harbinger.ts"; override get variantOf(): string { return "faction/grell/unit/harbinger"; } 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 = "9c075ac1-4ff7-4f38-9ab6-8c101324c117"; 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 = ["coop/commander/vynthra/building/coop-vynthra-incubator"]; this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-incubator"]; this.upgradedBy = ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"]; this.hp = 400; this.shields = 0; this.armor = 1; this.armorType = "heavy"; this.speed = 525; 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({ internalId: "Default__Grell_HarbingerWeapon_C", name: "Corrosive Spit", damage: 24, range: 700, cooldown: 1.7, armorPenetration: 0, delay: 0.17, targets: ["ground"], bonusDamage: [{ multiplier: 2, 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: "D", damage: 150, splash: { range: 100, multiplier: 1.0, //TODO Add 100 bonus damage to heavy }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.thermalCarapace = new Upgrade({ name: "Thermal Carapace", unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"], tier: "T1", position: "A", description: "+2 armor", fluxCost: 100, researchTime: 40, apply() { harbinger.armor = (harbinger.armor ?? 0) + 1; }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.cardiovascularBoost = new Upgrade({ name: "Cardiovascular Boost", unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"], tier: "T1", position: "B", description: "+200 move speed", fluxCost: 100, researchTime: 40, apply() { harbinger.speed = (harbinger.speed ?? 0) + 100; }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.hemalVents = new Upgrade({ name: "Hemal Vents", unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-elderwomb"], tier: "T2", position: "A", description: "Increases Eruption radius by 50%", fluxCost: 125, 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", unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-elderwomb"], tier: "T2", position: "B", description: "Reduce Eruption cost to 50 health", fluxCost: 125, researchTime: 60, apply() { harbinger.spells.eruption.energyCost = 50; }, parentId: this.id, parentUUID: this.uuid, }); this.internalId = undefined; this.internalPath = undefined; this.setVariantUUID("coop-vynthra"); this.upgrades.coagulatedMembrane.description = "Reduces Eruption's health cost by 50."; this.unlockedBy = ["coop/commander/vynthra/building/coop-vynthra-incubator"]; this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-incubator"]; this.upgradedBy = ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"]; this.attacks.corrosiveSpit.range = 600; this.spells.eruption.energyCost = 75; this.spells.eruption.cooldown = 10; this.spells.eruption.splash = { multiplier: 1, range: 125 }; this.spells.frenzy = new CoopFrenzySkill({ parentId: this.id, parentUUID: this.uuid }); this.upgrades.cardiovascularBoost.fluxCost = 50; this.upgrades.cardiovascularBoost.researchTime = 20; this.upgrades.coagulatedMembrane.fluxCost = 100; this.upgrades.coagulatedMembrane.researchTime = 30; this.upgrades.hemalVents.fluxCost = 100; this.upgrades.hemalVents.researchTime = 30; this.upgrades.thermalCarapace.fluxCost = 50; this.upgrades.thermalCarapace.researchTime = 20; } } export default CoopHarbinger;