ZSGG Public Library
Thresher
Grell T2.5 Army Unit
import { GrellArmyUnit } from "../../../../defaults/grell.js";
import { Attack, Siege, Upgrade } from "../../../../engine/ability.js";
export class Thresher extends GrellArmyUnit {
override uuid: string;
static override src = "src/zerospace/faction/grell/unit/thresher.ts";
constructor() {
super();
this.hexiteCost = 100;
this.fluxCost = 175;
this.buildTime = 65;
this.buildCount = 1;
this.name = "Thresher";
this.tier = "T2.5";
this.hotkey = "S";
this.uuid = "a7240b28-2b4c-46a8-9294-58c898ca7555";
this.internalId = "Troop_GrellThresher_C";
this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_GrellThresher.Default__Troop_GrellThresher_C";
this.internalTags = [
"Attackable.Unit.Troop",
"Attackable.ArmorType.Heavy",
"Attackable.Biological",
"Local.Grell.Thresher",
];
this.internalSecondaryTags = [];
this.unlockedBy = ["faction/grell/building/incubator"];
this.createdBy = ["faction/grell/building/incubator"];
this.upgradedBy = ["faction/grell/building/synapse-canopy"];
this.providesBiomass = 375;
const biomassSpread = this.setupBiomassSpreadPassive();
if (biomassSpread) {
biomassSpread.requiresMode = [...(biomassSpread.requiresMode ?? []), "sieged"];
}
const unit = this;
this.hp = 350;
this.shields = 0;
this.armor = 1;
this.armorType = "heavy";
this.speed = 450;
this.supply = 6;
this.turnSpeed = 2000;
this.pushability = 0;
this.description = "Long range siege unit with splash damage.";
this.attacks.voidBomb = new Attack({
internalId: "Default__Weapon_ThresherVoidBomb_C",
name: "Void Bomb",
damage: 120,
range: 2700,
cooldown: 3.3,
requiresMode: "sieged",
targets: ["ground"],
bonusDamage: [{ multiplier: 1.75, vs: ["building"] }],
splash: { multiplier: 1.0, range: 250 },
armorPenetration: 0,
delay: 0.45,
parentId: this.id,
parentUUID: this.uuid,
});
this.sieges.takeRoot = new Siege({
name: "Take Root",
description:
"Rooted Threshers gain a long range AoE attack and spread biomass over a 3.75 radius. Rooted Threshers cannot move.",
hotkey: "D",
reverseHotKey: "Ctrl-D",
duration: 1.25,
parentId: this.id,
parentUUID: this.uuid,
});
// this.passives.siegeResistance = new Passive({
// name: "Siege Resistance",
// description: "+75% status resist while sieged",
// parentId: this.id,
// parentUUID: this.uuid,
// });
this.upgrades.CorrodingExpulsion = new Upgrade({
name: "Corroding Expulsion",
unlockedBy: ["faction/grell/building/synapse-canopy"],
description: "Attacks create a pool of poison on the ground that lasts for 6 seconds",
tier: "T1",
position: "A",
fluxCost: 100,
researchTime: 50,
apply() {
// unit.attacks.attack!.description += " - Creates burning ground effect (140 damage over 6s)";
},
parentId: this.id,
parentUUID: this.uuid,
});
this.upgrades.anchoringTendrils = new Upgrade({
name: "Anchoring Tendrils",
unlockedBy: ["faction/grell/building/synapse-canopy"],
description: "Rooting and uprooting is 50% faster, +30% movement speed",
tier: "T1",
position: "B",
fluxCost: 100,
researchTime: 50,
apply() {
unit.speed = (unit.speed || 0) * 1.3;
if (unit.sieges.takeRoot) {
unit.sieges.takeRoot.duration = (unit.sieges.takeRoot.duration || 0) * 0.5;
}
},
parentId: this.id,
parentUUID: this.uuid,
});
}
}
export default Thresher;