ZeroSpace.gg

Behemoth

Grell Co-Op T3 Army Unit

import { CoopFrenzySkill } from "../../../../../defaults/grell.js"; import { Upgrade } from "../../../../../engine/ability.js"; import { GrellArmyUnit } from "../../../../../defaults/grell.js"; import { Attack } from "../../../../../engine/ability.js"; export class CoopBehemoth extends GrellArmyUnit { override uuid: string; static override src = "src/zerospace/coop/commander/vynthra/unit/coop-vynthra-behemoth.ts"; override get variantOf(): string { return "faction/grell/unit/behemoth"; } constructor() { super(); this.hexiteCost = 100; this.fluxCost = 200; this.buildTime = 70; this.buildCount = 1; this.name = "Behemoth"; this.tier = "T3"; this.hotkey = "D"; this.uuid = "05ee73dd-b64e-46bd-a6dd-d6bb41df9213"; this.internalId = "Troop_GrellBehemoth_C"; this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_GrellBehemoth.Default__Troop_GrellBehemoth_C"; this.internalTags = [ "Attackable.Unit.Troop", "Attackable.ArmorType.Heavy", "Logic.ABES", "Attackable.Biological", "Attackable.FlyingUnit", ]; this.internalSecondaryTags = ["Biological", "Air"]; // Requires a Skyclutch to build, but is produced at the Elderwomb, which can be // standing well before one exists. unlockedBy is an OR in this engine, so listing both // would wrongly say a Elderwomb alone is enough - only the real gate goes here. this.unlockedBy = ["faction/grell/building/skyclutch"]; this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-elderwomb"]; this.upgradedBy = ["faction/grell/building/skyclutch"]; this.hp = 700; this.energy = 5; this.startingEnergy = 5; this.stunResist = 40; this.shields = 0; this.armor = 1; this.armorType = "heavy"; this.domain = "air"; this.speed = 475; this.supply = 8; this.turnSpeed = 2500; this.vision = 1800; this.description = "Powerful flying brawler. \nPeriodically deals area damage over time on attacks."; const behemoth = this; this.attacks.plasmaTorrent = new Attack({ internalId: "Default__Weapon_GrellBehemoth_C", name: "Plasma Torrent", damage: 35, cooldown: 2.0, armorPenetration: 0, delay: 0.3, range: 1100, targets: ["ground"], bonusDamage: [{ multiplier: 2.0, vs: ["armor:heavy"] }], parentId: this.id, parentUUID: this.uuid, }); // should be a trigger later, and be called deathbloom, but i forget how triggers work and meh // // this.spells.sacrifice = new Spell({ // name: "Sacrifice", // description: // "Sacrifices itself, healing nearby units and damaging enemies. +25% damage and healing from death effect. Autocast on death.", // hotkey: "M", // targets: ["self"], // parentId: this.id, // parentUUID: this.uuid, // }); this.attacks.faerieFire = new Attack({ name: "Faerie Fire", energyCost: 5, energyType: "abes", cooldown: 0, damageOverTime: 40, duration: 8, range: 200, targets: ["ground"], splash: { multiplier: 1.0, range: 200 }, description: "Area damage spell unleashed once every 5 attacks. Deals 20 damage every 0.5s for 8s to enemies in area.", parentId: this.id, parentUUID: this.uuid, }); this.upgrades.colossalMaw = new Upgrade({ name: "Colossal Maw", unlockedBy: ["faction/grell/building/skyclutch"], tier: "T1", position: "A", description: "+5 attack range.", fluxCost: 100, researchTime: 50, apply: () => { behemoth.attacks.plasmaTorrent!.range = 1600; }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.deathbloom = new Upgrade({ name: "Deathbloom", unlockedBy: ["faction/grell/building/skyclutch"], description: "Deals 50 damage and heals 50 health per second to nearby ground uits upon death. Lasts 5 seconds.", tier: "T1", position: "B", fluxCost: 100, researchTime: 50, parentId: this.id, parentUUID: this.uuid, }); this.internalId = undefined; this.internalPath = undefined; this.setVariantUUID("coop-vynthra"); this.hp = 625; this.attacks.plasmaTorrent.damage = 40; this.attacks.plasmaTorrent.range = 1200; this.attacks.plasmaTorrent.bonusDamage = [{ multiplier: 3.0, vs: ["armor:heavy"] }]; this.upgrades.colossalMaw.description = "+6 attack range, for 18 total range."; delete this.upgrades.deathbloom; this.upgrades.behemothSpeed = new Upgrade({ name: "Behemoth Speed", description: "+25% movement speed.", tier: "T1", position: "B", fluxCost: 50, researchTime: 25, parentId: this.id, parentUUID: this.uuid, uuid: "d30c3e2a-daf2-4b62-b8b0-17d89754bcc2", }); this.upgrades.transportation = new Upgrade({ name: "Transportation", description: "Allows the Behemoth to transport 30 supply of units.", tier: "T2", position: "A", fluxCost: 75, researchTime: 30, parentId: this.id, parentUUID: this.uuid, uuid: "8554b40c-d913-49b2-abad-8c602a93c822", }); this.carryCapacity = 30; 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-elderwomb"]; this.spells.frenzy = new CoopFrenzySkill({ parentId: this.id, parentUUID: this.uuid }); this.upgrades.colossalMaw.fluxCost = 50; this.upgrades.colossalMaw.researchTime = 25; } } export default CoopBehemoth;