ZeroSpace.gg

Reaver

Grell Co-Op T3 Army Unit

import { CoopFrenzySkill } from "../../../../../defaults/grell.js"; import { GrellArmyUnit } from "../../../../../defaults/grell.js"; import { Attack, DeathTrigger, Spell, Upgrade } from "../../../../../engine/ability.js"; export class CoopReaver extends GrellArmyUnit { override uuid: string; static override src = "src/zerospace/coop/commander/vynthra/unit/coop-vynthra-reaver.ts"; override get variantOf(): string { return "faction/grell/unit/reaver"; } constructor() { super(); this.hexiteCost = 200; this.fluxCost = 100; this.buildTime = 80; this.buildCount = 1; this.name = "Reaver"; this.tier = "T3"; this.hotkey = "A"; this.uuid = "386a5125-5de1-4c84-ae97-c78ff206fc24"; this.internalId = "Troop_GrellReaver_C"; this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_GrellReaver.Default__Troop_GrellReaver_C"; this.internalTags = ["Attackable.Unit.Troop", "Attackable.ArmorType.Heavy", "Logic.ABES", "Attackable.Biological"]; this.internalSecondaryTags = []; this.unlockedBy = ["coop/commander/vynthra/building/coop-vynthra-elderwomb"]; this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-elderwomb"]; this.upgradedBy = ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"]; this.creates = ["coop/commander/vynthra/unit/coop-vynthra-arkanid"]; this.description = "Tanky melee unit with Ravage."; this.wikiDescription = "Tanky melee unit with [[coop/commander/vynthra/unit/coop-vynthra-reaver/spell/ravage]]."; this.hp = 900; this.energy = 15; this.startingEnergy = 15; this.shields = 0; this.armor = 3; this.armorType = "heavy"; this.speed = 525; this.supply = 8; this.stunResist = 50; this.turnSpeed = 5000; this.pushability = 0; const reaver = this; this.attacks.colossalScythes = new Attack({ internalId: "Default__GrellReaverWeapon_C", name: "Colossal Scythes", damage: 51, cooldown: 2, cooldownBetweenShots: 0.5, range: 175, targets: ["ground"], shots: 2, splash: { multiplier: 1, range: 60 }, armorPenetration: 0, delay: 0.2, parentId: this.id, parentUUID: this.uuid, }); this.spells.ravage = new Spell({ name: "Ravage", description: "Charge to target location, knocking enemies back and dealing 80 damage.", hotkey: "R", damage: 80, targets: ["ground"], energyCost: 15, energyType: "abes", activationType: "activated", parentId: this.id, parentUUID: this.uuid, }); this.onDeath.hatchArkanids = new DeathTrigger({ name: "Hatch Arkanids", description: "Spawns 4 Arkanids when the Reaver dies.", wikiDescription: "Spawns 4 [[coop/commander/vynthra/unit/coop-vynthra-arkanid]] when the Reaver dies.", shots: 4, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.fluxbloodSurge = new Upgrade({ name: "Fluxblood Surge", unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-elderwomb"], tier: "T1", position: "A", description: "Ravage: 50% Cast time, +50% damage dealt, +50% cast range.", fluxCost: 100, researchTime: 50, apply: () => { if (reaver.spells.charge && reaver.spells.charge.damage) { reaver.spells.charge.damage = Math.floor(reaver.spells.charge.damage * 1.5); } }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.elderCarapace = new Upgrade({ name: "Elder Carapace", unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-elderwomb"], tier: "T1", position: "B", description: "+3 armor", fluxCost: 100, researchTime: 50, apply: () => { reaver.armor = (reaver.armor || 0) + 3; }, parentId: this.id, parentUUID: this.uuid, }); this.internalId = undefined; this.internalPath = undefined; this.setVariantUUID("coop-vynthra"); this.unlockedBy = ["coop/commander/vynthra/building/coop-vynthra-elderwomb"]; this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-elderwomb"]; this.upgradedBy = ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"]; this.creates = ["coop/commander/vynthra/unit/coop-vynthra-arkanid"]; this.spells.frenzy = new CoopFrenzySkill({ parentId: this.id, parentUUID: this.uuid }); this.upgrades.elderCarapace.fluxCost = 50; this.upgrades.elderCarapace.researchTime = 25; this.upgrades.fluxbloodSurge.fluxCost = 50; this.upgrades.fluxbloodSurge.researchTime = 25; } } export default CoopReaver;