ZSGG Public Library
Keeper
Grell Co-Op T1 Army Unit
import { CoopFrenzySkill } from "../../../../../defaults/grell.js";
import { GrellArmyUnit } from "../../../../../defaults/grell.js";
import { Attack, Passive, Upgrade } from "../../../../../engine/ability.js";
export class CoopKeeper extends GrellArmyUnit {
override uuid: string;
static override src = "src/zerospace/coop/commander/vynthra/unit/coop-vynthra-keeper.ts";
override get variantOf(): string {
return "faction/grell/unit/keeper";
}
constructor() {
super();
this.hexiteCost = 150;
this.fluxCost = 50;
this.buildTime = 40;
this.buildCount = 2;
this.name = "Keeper";
this.tier = "T2";
this.hotkey = "E";
this.uuid = "71541e61-01c7-48fe-bbdb-3e4bd1364072";
this.internalId = "Troop_Grell_BroodGuard_C";
this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_Grell_BroodGuard.Default__Troop_Grell_BroodGuard_C";
this.internalTags = ["Attackable.ArmorType.Medium", "Attackable.Biological", "Attackable.Unit.Troop"];
this.internalSecondaryTags = ["Biological"];
this.hp = 225;
this.shields = 0;
this.armor = 1;
this.armorType = "medium";
this.speed = 550;
this.supply = 2;
this.turnSpeed = 5000;
this.description = "Tanky melee unit which spawns Arkanids upon taking damage.";
this.wikiDescription =
"Tanky melee unit which spawns [[coop/commander/vynthra/unit/coop-vynthra-arkanid]] upon taking damage.";
this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-incubator"];
this.unlockedBy = ["coop/commander/vynthra/building/coop-vynthra-incubator"];
this.upgradedBy = ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"];
this.creates = ["coop/commander/vynthra/unit/coop-vynthra-arkanid"];
const unit = this;
this.attacks.keeperTalons = new Attack({
internalId: "Default__Grell_GrellingBig_C",
name: "Keeper Talons",
damage: 20,
cooldown: 1.3,
range: 140,
delay: 0.15,
targets: ["ground"],
parentId: this.id,
parentUUID: this.uuid,
});
this.passives.arkanidSpawn = new Passive({
name: "Arkanid Spawn",
description: "Spawns a 50 HP arkanid every 60 HP lost",
wikiDescription: "Spawns a 50 HP [[coop/commander/vynthra/unit/coop-vynthra-arkanid]] every 60 HP lost.",
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.exoskeletonReinforcement = new Upgrade({
name: "Exoskeleton Reinforcement",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"],
description: "+75 health.",
tier: "T1",
position: "A",
fluxCost: 100,
researchTime: 45,
apply() {
unit.hp = (unit.hp || 0) + 100;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.cytokininSurge = new Upgrade({
name: "Cytokinin Surge",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"],
description: "+3 health regeneration",
tier: "T1",
position: "B",
fluxCost: 100,
researchTime: 45,
apply() {},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.acceleratedMitosis = new Upgrade({
name: "Accelerated Mitosis",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-elderwomb"],
description: "Reduce Health loss per Arkanid from 20 to 15.",
wikiDescription: "Increases spawned [[coop/commander/vynthra/unit/coop-vynthra-arkanid]] from 1 to 2.",
tier: "T2",
position: "A",
fluxCost: 150,
researchTime: 60,
apply() {},
parentId: this.id,
parentUUID: this.uuid,
});
this.tier = "T1";
this.hp = 250;
this.armor = 2;
// Vynthra's Keepers are built one at a time for 125 hexite; PvP builds pairs for 150/50.
this.hexiteCost = 125;
this.fluxCost = 0;
this.buildCount = 1;
this.internalId = undefined;
this.internalPath = undefined;
this.setVariantUUID("coop-vynthra");
this.upgrades.exoskeletonReinforcement.description = "+75 max HP.";
this.unlockedBy = ["coop/commander/vynthra/building/coop-vynthra-broodwomb"];
this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-broodwomb"];
this.upgradedBy = ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"];
this.creates = ["coop/commander/vynthra/unit/coop-vynthra-arkanid"];
this.attacks.keeperTalons.range = 100;
this.spells.frenzy = new CoopFrenzySkill({
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.acceleratedMitosis.fluxCost = 75;
this.upgrades.acceleratedMitosis.researchTime = 30;
this.upgrades.cytokininSurge.fluxCost = 50;
this.upgrades.cytokininSurge.researchTime = 22;
this.upgrades.exoskeletonReinforcement.fluxCost = 50;
this.upgrades.exoskeletonReinforcement.researchTime = 22;
}
}
export default CoopKeeper;