ZSGG Public Library
Mandragora
Grell Co-Op T1.5 Army Unit
import { CoopFrenzySkill } from "../../../../../defaults/grell.js";
import { GrellArmyUnit } from "../../../../../defaults/grell.js";
import { Attack, Spell, Upgrade } from "../../../../../engine/ability.js";
export class CoopMandragora extends GrellArmyUnit {
override uuid: string;
static override src = "src/zerospace/coop/commander/vynthra/unit/coop-vynthra-mandragora.ts";
override get variantOf(): string {
return "faction/grell/unit/mandragora";
}
constructor() {
super();
this.hexiteCost = 100;
this.fluxCost = 25;
this.buildTime = 35;
this.buildCount = 1;
this.name = "Mandragora";
this.description = "Short ranged tanky unit that deals area damage.";
this.tier = "T1.5";
this.hotkey = "";
this.uuid = "98561d74-ab4d-40c8-9522-c4e3ce47d8ca";
this.internalId = "Troop_Grell_ManEater_C";
this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_Grell_ManEater.Default__Troop_Grell_ManEater_C";
this.internalTags = [
"Attackable.Unit.Troop",
"Attackable.Unit.Light",
"Attackable.ArmorType.Medium",
"Attackable.Biological",
];
this.internalSecondaryTags = [];
this.hp = 350;
this.shields = 0;
this.armor = 1;
this.armorType = "medium";
this.speed = 550;
this.turnSpeed = 3000;
this.vision = 1600;
this.pushability = 1;
this.supply = 3;
this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-broodwomb"];
this.unlockedBy = ["coop/commander/vynthra/building/coop-vynthra-young-canopy"];
this.upgradedBy = ["coop/commander/vynthra/building/coop-vynthra-young-canopy"];
const unit = this;
this.attacks.savageMaw = new Attack({
internalId: "Default__Weapon_Grell_Beetle_C",
name: "Savage Maw",
damage: 32,
cooldown: 1.78,
armorPenetration: 0,
delay: 0.25,
range: 275,
targets: ["ground"],
splash: { multiplier: 1, range: 125 },
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.tunnel = new Spell({
name: "Tunnel",
description: "Tunnel to target location",
hotkey: "T",
cooldown: 20,
unlocked: false,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.wideMandibles = new Upgrade({
name: "Wide Mandibles",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-young-canopy"],
description: "+50% splash radius",
tier: "T1",
position: "A",
fluxCost: 100,
researchTime: 45,
apply() {
unit.attacks.savageMaw!.splash!.range = 187.5;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.tunnel = new Upgrade({
name: "Tunnel",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-young-canopy"],
description: "Tunnel to a target location",
tier: "T1",
position: "B",
fluxCost: 100,
researchTime: 45,
apply() {
unit.spells.tunnel!.unlocked = true;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.endorphicFrenzy = new Upgrade({
name: "Endorphic Frenzy",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-synapse-canopy"],
description: `${this.name}s gain 20% attack speed for every 10% of missing health`,
tier: "T2",
position: "A",
fluxCost: 125,
researchTime: 60,
apply() {
unit.attacks.savageMaw!.splash!.range = 187.5;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.internalId = undefined;
this.internalPath = undefined;
this.setVariantUUID("coop-vynthra");
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-young-canopy"];
this.attacks.savageMaw.range = 300;
this.spells.frenzy = new CoopFrenzySkill({ parentId: this.id, parentUUID: this.uuid });
this.upgrades.endorphicFrenzy.fluxCost = 62.5;
this.upgrades.endorphicFrenzy.researchTime = 30;
this.upgrades.tunnel.fluxCost = 50;
this.upgrades.tunnel.researchTime = 22;
this.upgrades.wideMandibles.fluxCost = 50;
this.upgrades.wideMandibles.researchTime = 22;
}
}
export default CoopMandragora;