ZeroSpace.gg

Thresher

Grell Co-Op T2.5 Army Unit

import { CoopFrenzySkill } from "../../../../../defaults/grell.js"; import { GrellArmyUnit } from "../../../../../defaults/grell.js"; import { Attack, Siege, Upgrade } from "../../../../../engine/ability.js"; export class CoopThresher extends GrellArmyUnit { override uuid: string; static override src = "src/zerospace/coop/commander/vynthra/unit/coop-vynthra-thresher.ts"; override get variantOf(): string { return "faction/grell/unit/thresher"; } constructor() { super(); this.hexiteCost = 100; this.fluxCost = 175; this.buildTime = 65; this.buildCount = 1; this.name = "Thresher"; this.tier = "T2.5"; this.hotkey = "S"; this.uuid = "8468fb1b-77ac-46cb-9cd1-ebf277e0cc89"; this.internalId = "Troop_GrellThresher_C"; this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_GrellThresher.Default__Troop_GrellThresher_C"; this.internalTags = [ "Attackable.Unit.Troop", "Attackable.ArmorType.Heavy", "Attackable.Biological", "Local.Grell.Thresher", ]; 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.providesBiomass = 375; const biomassSpread = this.setupBiomassSpreadPassive(); if (biomassSpread) { biomassSpread.requiresMode = [...(biomassSpread.requiresMode ?? []), "sieged"]; } const unit = this; this.hp = 350; this.shields = 0; this.armor = 1; this.armorType = "heavy"; this.speed = 450; this.supply = 6; this.turnSpeed = 2000; this.pushability = 0; this.description = "Long range siege unit with splash damage."; this.attacks.voidBomb = new Attack({ internalId: "Default__Weapon_ThresherVoidBomb_C", name: "Void Bomb", damage: 120, range: 2700, cooldown: 3.3, requiresMode: "sieged", targets: ["ground"], bonusDamage: [{ multiplier: 1.75, vs: ["building"] }], splash: { multiplier: 1.0, range: 250 }, armorPenetration: 0, delay: 0.45, parentId: this.id, parentUUID: this.uuid, }); this.sieges.takeRoot = new Siege({ name: "Take Root", description: "Rooted Threshers gain a long range AoE attack and spread biomass over a 3.75 radius. Rooted Threshers cannot move.", hotkey: "D", reverseHotKey: "Ctrl-D", duration: 1.25, parentId: this.id, parentUUID: this.uuid, }); // this.passives.siegeResistance = new Passive({ // name: "Siege Resistance", // description: "+75% status resist while sieged", // parentId: this.id, // parentUUID: this.uuid, // }); this.upgrades.CorrodingExpulsion = new Upgrade({ name: "Corroding Expulsion", unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"], description: "Attacks create a pool of poison on the ground that lasts for 6 seconds", tier: "T1", position: "A", fluxCost: 100, researchTime: 50, apply() { // unit.attacks.attack!.description += " - Creates burning ground effect (140 damage over 6s)"; }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.anchoringTendrils = new Upgrade({ name: "Anchoring Tendrils", unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"], description: "Rooting and uprooting is 50% faster, +30% movement speed", tier: "T1", position: "B", fluxCost: 100, researchTime: 50, apply() { unit.speed = (unit.speed || 0) * 1.3; if (unit.sieges.takeRoot) { unit.sieges.takeRoot.duration = (unit.sieges.takeRoot.duration || 0) * 0.5; } }, parentId: this.id, parentUUID: this.uuid, }); this.internalId = undefined; this.internalPath = undefined; this.setVariantUUID("coop-vynthra"); this.hp = 300; ((this.attacks.voidBomb.splash = { multiplier: 1.0, range: 250 }), (this.upgrades.CorrodingExpulsion.name = "Corroding Expulsion")); this.upgrades.CorrodingExpulsion.description = "Attacks create a pool of damaging acid that lasts for 6 seconds."; 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.spells.frenzy = new CoopFrenzySkill({ parentId: this.id, parentUUID: this.uuid }); this.upgrades.CorrodingExpulsion.fluxCost = 50; this.upgrades.CorrodingExpulsion.researchTime = 25; this.upgrades.anchoringTendrils.fluxCost = 50; this.upgrades.anchoringTendrils.researchTime = 25; } } export default CoopThresher;