ZSGG Public Library
Lasher
Grell Co-Op T1 Army Unit
import { CoopFrenzySkill } from "../../../../../defaults/grell.js";
import { GrellArmyUnit } from "../../../../../defaults/grell.js";
import { Attack, Spell, Upgrade } from "../../../../../engine/ability.js";
export class CoopLasher extends GrellArmyUnit {
override uuid: string;
static override src = "src/zerospace/coop/commander/vynthra/unit/coop-vynthra-lasher.ts";
override get variantOf(): string {
return "faction/grell/unit/lasher";
}
constructor() {
super();
this.hexiteCost = 50;
this.fluxCost = 25;
this.buildTime = 26;
this.buildCount = 1;
this.name = "Lasher";
this.description = "Ranged combat unit.";
this.tier = "T1";
this.hotkey = "R";
this.uuid = "f511d6e3-4839-410a-a10f-272eac84b3ef";
this.internalId = "Troop_GrellLasher_C";
this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_GrellLasher.Default__Troop_GrellLasher_C";
this.internalTags = [
"Attackable.Unit.Troop",
"Attackable.Unit.Light",
"Attackable.ArmorType.Light",
"Attackable.Biological",
];
this.internalSecondaryTags = ["Biological"];
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-young-canopy"];
const unit = this;
this.hp = 150;
this.shields = 0;
this.armor = 0;
this.armorType = "light";
this.speed = 550;
this.supply = 2;
this.vision = 1800;
this.turnSpeed = 4000;
this.attacks.acidicSpines = new Attack({
internalId: "Default__Grell_LasherWeapon_C",
name: "Acidic Spines",
damage: 18,
range: 800,
cooldown: 1.2,
armorPenetration: 0,
delay: 0.12,
targets: ["air", "ground"],
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.camouflage = new Spell({
name: "Camouflage",
description: "Grants invisibility and +75% movement speed for 6s",
hotkey: "X",
cooldown: 20,
duration: 6,
unlocked: false,
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.extensorAdaptation = new Upgrade({
name: "Extensor Adaptation",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-young-canopy"],
description: "+4 attack range",
tier: "T1",
position: "A",
fluxCost: 100,
researchTime: 50,
apply() {
unit.attacks.attack!.range = (unit.attacks.attack!.range || 0) + 200;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.sinuousMusculature = new Upgrade({
name: "Sinuous Musculature",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-young-canopy"],
description: "+125 movement speed.",
tier: "T1",
position: "B",
fluxCost: 100,
researchTime: 50,
apply() {
unit.speed = (unit.speed || 0) * 1.25;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.corrosiveSecretion = new Upgrade({
name: "Corrosive Secretion",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-elderwomb"],
description: "+75% damage to medium",
tier: "T2",
position: "A",
fluxCost: 100,
researchTime: 50,
apply() {
unit.attacks.attack!.bonusDamage = [{ multiplier: 1.75, vs: ["armor:medium"] }];
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.camouflage = new Upgrade({
name: "Camouflage",
unlockedBy: ["coop/commander/vynthra/building/coop-vynthra-elderwomb"],
description: "Unlocks the Camouflage ability (+25% movement speed and cloak for 6s)",
tier: "T2",
position: "B",
fluxCost: 150,
researchTime: 60,
apply() {
unit.spells.camouflage!.unlocked = true;
},
parentId: this.id,
parentUUID: this.uuid,
});
this.internalId = undefined;
this.internalPath = undefined;
this.setVariantUUID("coop-vynthra");
this.upgrades.extensorAdaptation.description = "+4 attack range.";
this.upgrades.sinuousMusculature.description = "+50% movement speed.";
this.upgrades.camouflage.description =
"Unlocks Camouflage: +25% movement speed and cloak for 5 seconds. 20-second cooldown.";
this.unlockedBy = ["coop/commander/vynthra/building/coop-vynthra-young-canopy"];
this.createdBy = ["coop/commander/vynthra/building/coop-vynthra-broodwomb"];
this.upgradedBy = ["coop/commander/vynthra/building/coop-vynthra-young-canopy"];
this.spells.frenzy = new CoopFrenzySkill({ parentId: this.id, parentUUID: this.uuid });
this.upgrades.camouflage.fluxCost = 75;
this.upgrades.camouflage.researchTime = 30;
this.upgrades.corrosiveSecretion.fluxCost = 75;
this.upgrades.corrosiveSecretion.researchTime = 30;
this.upgrades.extensorAdaptation.fluxCost = 50;
this.upgrades.extensorAdaptation.researchTime = 25;
this.upgrades.sinuousMusculature.fluxCost = 62.5;
this.upgrades.sinuousMusculature.researchTime = 30;
}
}
export default CoopLasher;