ZSGG Public Library
Anrubic
Xol Hero Unit
import { XolHeroUnit } from "../../../../defaults/xol.js";
import { Attack, Spell, SpellModeSwitch } from "../../../../engine/ability.js";
export class Anrubic extends XolHeroUnit {
override uuid: string;
static override src = "src/zerospace/faction/xol/hero/anrubic.ts";
constructor() {
super();
this.name = "Anrubic";
this.description =
"Powerful hero that can grapple enemies and merge with other Xol units to augment its abilities.";
this.hexiteCost = 220;
this.buildTime = 5;
this.hotkey = "";
this.uuid = "8d742b58-2487-448e-9378-7520a054ba0b";
this.internalId = "Troop_Hero_MP_XolHero_C";
this.internalPath =
"/Game/Nova/Archetypes_Heroes/Multiplayer/Troop_Hero_MP_XolHero.Default__Troop_Hero_MP_XolHero_C";
this.internalTags = [
"Attackable.Unit.Hero",
"Logic.SpawnAtOldestSpawner",
"Attackable.Biological",
"Logic.NoVeterancy",
"Troop.Xol.Hero",
];
this.internalSecondaryTags = ["Biological", "Infantry"];
this.hp = 175;
this.shields = 175;
this.armor = 0;
this.armorType = "hero";
this.healthRegen = 6;
this.stunResist = 70;
this.speed = 500;
this.supply = 10;
this.turnSpeed = 6000;
this.vision = 1800;
this.pushability = 0.1;
this.modes = [
{ slug: "unmerged", name: "Unmerged", description: "Has not merged with any T1 unit yet." },
{ slug: "roller", name: "Roller", description: "Last merged with a Roller." },
{ slug: "xyther", name: "Xyther", description: "Last merged with a Xyther." },
{ slug: "spectron", name: "Spectron", description: "Last merged with a Spectron." },
];
this.attacks.morphBlade = new Attack({
name: "Morph Blade",
damage: 23,
range: 200,
cooldown: 1.2,
splash: { multiplier: 0.5, range: 150 },
armorPenetration: 0,
delay: 0.27,
targets: ["ground"],
requiresMode: "unmerged",
parentId: this.id,
parentUUID: this.uuid,
});
this.attacks.morphBladeRoller = new Attack({
name: "Morph Blade (Roller)",
damage: 12,
range: 400,
cooldown: 0.4,
targets: ["ground", "air"],
requiresMode: "roller",
parentId: this.id,
parentUUID: this.uuid,
});
this.attacks.morphBladeXyther = new Attack({
name: "Morph Blade (Xyther)",
damage: 27,
range: 200,
cooldown: 1.2,
splash: { multiplier: 0.5, range: 150 },
targets: ["ground"],
requiresMode: "xyther",
parentId: this.id,
parentUUID: this.uuid,
});
this.attacks.morphBladeSpectron = new Attack({
name: "Morph Blade (Spectron)",
damage: 63,
range: 1000,
cooldown: 1,
bonusDamage: [{ multiplier: 1.25, vs: ["armor:heavy"] }],
targets: ["ground", "air"],
requiresMode: "spectron",
parentId: this.id,
parentUUID: this.uuid,
});
this.spellModes.merge = new SpellModeSwitch({
name: "Merge",
hotkey: "Q",
cooldown: 16,
targets: ["ground", "air"],
targetMode: "unit",
switchBetween: ["unmerged", "roller", "xyther", "spectron"],
description:
"Merge with a T1 Xol unit, gaining an ability and stats based on the unit type, healing 50% of the unit's health, and Overclocking Anrubic for 5 seconds. Overclock grants +35% damage and movement speed for 5 seconds. \nWhen targeting an enemy unit, deal damage and heal for 35 + 10% of the target's health. \n\nRoller: Gain Throw Rollers and a Roller weapon. +50 permanent move speed. \nXyther: Gain Shield and a 20 shield damage cap. +25 permanent health and shields. \nSpectron: Gain Blink and a charging ranged weapon. +10% permanent attack damage.",
wikiDescription: `
Merge with a T1 Xol unit, gaining an ability and stats based on the unit type, healing 50% of the unit's health, and Overclocking Anrubic for 5 seconds. Overclock grants +35% damage and movement speed for 5 seconds.
When targeting an enemy unit, deal damage and heal for 35 + 10% of the target's health.
- [[faction/xol/unit/roller]]: Gain [[faction/xol/hero/anrubic/spells/throw-rollers]] and a Roller weapon. +50 permanent move speed.
- [[faction/xol/unit/xyther]]: Gain [[faction/xol/hero/anrubic/spells/shield]] and a 20 shield damage cap. +25 permanent health and shields.
- [[faction/xol/unit/spectron]]: Gain [[faction/xol/hero/anrubic/spells/blink]] and a charging ranged weapon. +10% permanent attack damage.
`,
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.grapple = new Spell({
name: "Grapple",
hotkey: "W",
cooldown: 12,
targets: ["ground", "air"],
targetMode: "unit",
description:
"Pulls Anrubic to the target unit, stunning it and dealing 2x weapon damage to the target and any units along the way.",
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.throwRollers = new Spell({
name: "Throw Rollers",
hotkey: "E",
cooldown: 2,
targets: ["map"],
targetMode: "location",
requiresMode: "roller",
description: "Throw a nearby Roller to the target location.",
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.shield = new Spell({
name: "Shield",
hotkey: "E",
cooldown: 90,
duration: 20,
targets: ["map"],
targetMode: "location",
requiresMode: "xyther",
description:
"Place down a shield that blocks incoming shots. \nThe shield absorbs 3x Anrubic's maximum shields. Lasts 20 seconds.",
parentId: this.id,
parentUUID: this.uuid,
});
this.spells.blink = new Spell({
name: "Blink",
hotkey: "E",
cooldown: 18,
targets: ["map"],
targetMode: "location",
requiresMode: "spectron",
description: "Instantly teleports Anrubic and nearby allied units to a nearby location.",
parentId: this.id,
parentUUID: this.uuid,
});
}
}
export default Anrubic;