ZSGG Public Library
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;