v1.0.0 - Active Abilities Patch Notes

What's new in v1.0.0 - Active Abilities

1.0.0 ships active abilities for the first time. The plugin previously only granted passive stat rewards through skill trees. This 1.0 release adds 31 hotbar abilities plus a triggered-passive lattice across the combat trees, a flat-first damage rebalance, real-momentum dashes with i-frames, and a sweep of bug fixes.

Active Abilities

  • Unlock through the skill tree — abilities live as ABILITY_UNLOCK rewards on tier nodes, just like any other reward. The skill and level that unlocks an ability are defined by the tree, so admins can re-home an ability with a single config edit
  • Bind via /mmoabilities — open the bind page, drag any unlocked ability onto hotbar slot 7, 8, or 9
  • Press hotkey to cast — a cooldown pip appears on the HUD; your held item stays where it was (the slot snaps back automatically after a brief revert)
  • Fully tunable — every numeric and asset-shaped value lives in mods/mmoskilltree/abilities.json. Server owners can retune damage, cooldowns, radii, projectile models, sounds, animations, on-hit effects, and XP routing without a plugin rebuild

The 31-ability roster

Acrobatics

  • Dodge (Lv 4) — roll in your movement direction (8-way WASD: forward / back / left / right / four diagonals — stationary defaults to backward). 100 ms i-frames during the slide, 3.5 s cooldown, 5 stamina. Free, low-stakes "get out" button every player picks up early

Magic — 9

  • Arcane Missiles (Lv 8) — quick-tap single-target projectile salvo for early-game spellcasters
  • Poison Dart (Lv 17) — fling a poisoned dart that hits for 2 and ticks 8 damage/sec for 10 s. Awards Magic XP regardless of held weapon
  • Fireball vs Ice Bolt (Lv 22 — Pick 1 of 2) — burst (45 damage, 4-block AoE) vs control (28 damage, 2.5-block splash, 3 s Slow)
  • Frost Nova vs Renewal (Lv 32 — Pick 1 of 2) — self-centered ice burst (28 damage, 4.5-block radius, 4 s Slow on every enemy hit) vs instant heal (20 HP) plus 5 s regen
  • Flame Stream (Lv 43) — sustained 5-second flame torrent: 50 ticks of 4 damage at 1 mana / tick, pierces 3, scorches with Burn. Channel breaks if you walk too far from the cast origin
  • Meteor (Lv 67) — mark a spot, wait 2.5 s, then a meteor lands dealing 70 damage in a 5-block radius (35 s cooldown). Headline late-game burst

Archery — 5

  • Hunter's Mark (Lv 13) — tag a target; your next 4 hits deal +20% for 10 s
  • Piercing Shot vs Scatter Shot (Lv 28 — Pick 1 of 2) — long-range single line (35 damage, 20 m, pierces 3) vs short-range buckshot (4 raycast pellets at 18 damage, 10 m, wide spray)
  • Volley (Lv 42) — arrow rain at a target point: 4-block radius, 6 ticks of 10 damage over 3 s
  • Paralyzing Dart (Lv 55) — arms your next ranged hit; on landing, the target is stunned for 1.5 s. 8 s armed window, 30 s cooldown. Costs mana (10) instead of stamina — the only archery ability that taps the mana stat, so bow players have a reason to invest in mana tier rewards

Swords — 3

  • Power Strike (Lv 22) — empowered swing: 30 damage in a 2.5-block burst at swing time AND arms your next melee hit with a 2× multiplier for 5 s
  • Leap Strike (Lv 32) — dash 8 blocks forward, damaging every enemy you pass through for 35 each
  • Rallying Cry (Lv 47) — party buff: you AND every ally within 6 blocks arm a 1.5× next-hit for 8 s

Axes — 3

  • Whirlwind (Lv 22) — 5-block radius spin, 22 damage to every enemy in reach
  • Berserker Charge (Lv 32) — dash 6 blocks (gated to ≤ 50% HP), then arm your next melee hit with a 1.5× multiplier for 5 s
  • Sunder (Lv 47) — brand a target for 6 s; your next 5 hits deal 1.25× (armor-shred drag-out tax)

Daggers — 4

  • Shadowstep vs Vanish (Lv 18 — Pick 1 of 2) — blink 8 blocks forward (drops mob aggro in a 30-block radius) vs short-duration aggro suppression that mobs treat as IGNORE for the window. Both require Perfect Utils for the actual aggro mutation; without it the blink/cosmetic still works but mobs keep their lock
  • Vampiric Strike (Lv 42) — dagger lifesteal hit (12 s cooldown), applies a Bleed for 8 over 4 ticks
  • Shadow Pounce (Lv 47) — dash 10 blocks forward, then arm your next hit with a 2.25× multiplier for 3 s

Defense — 3

  • Shield Bash (Lv 22) — stuns the foe in front of you (within ~3 blocks) on cast for 1.5 s, AND arms your next melee hit with a flat +20 damage bonus for 4 s. 8 s cooldown, 5 stamina
  • Shield Slam (Lv 38) — dash 6 blocks with a shield-first sweep, damaging enemies on the path and stunning each for 1.5 s
  • Guardian's Call (Lv 47) — tank-flavored 1.4× next-hit aura on self + allies within 6 blocks for 10 s

Mining / Woodcutting / Harvesting / Fishing — 4

  • Seismic Slam (Mining, Lv 32) — aim at the ground, wait 0.6 s, then a tremor erupts dealing 45 damage in a 4-block radius
  • Lumberjack Leap (Woodcutting, Lv 32) — dash 7 blocks with an axe-leap sweep, 28 damage per enemy on the path
  • Thorn Patch (Harvesting, Lv 32) — plant a toxic herb patch at your aimed point: 3-block radius, 6 ticks of 10 poison damage over 6 s
  • Tide Caller (Fishing, Lv 32) — cast a turquoise tide pool that drowns and chills anything caught in it for 4 s (8 damage / sec); 16 s cooldown, requires a fishing rod

Choice tiers — Pick 1 of 2

Four "Choice — Pick 1" nodes sit in the skill tree, forcing a build-shaping decision between two opposite abilities at a single level threshold. Pick one and the other locks out for that skill until you reset:

  • Daggers Lv 18 — Shadowstep vs Vanish (mobility flavor)
  • Magic Lv 22 — Fireball vs Ice Bolt (burst vs control)
  • Archery Lv 28 — Piercing Shot vs Scatter Shot (long-range line vs short-range cone)
  • Magic Lv 32 — Frost Nova vs Renewal (control AoE vs sustain)

The skill-tree page sorts tiers by level requirement so each choice node renders right between adjacent stat tiers, with a "Choice — Pick 1" header above the two ability cards.

Triggered passives — combat trees + L100 capstones

On top of the 31 hotbar abilities, every combat tree (Swords, Daggers, Polearms, Staves, Axes, Blunt, Unarmed, Archery, Magic, Artillery, Defense) grants:

  • One triggered passive at low / mid level on each tree — fires automatically on on_hit_dealt, on_kill, or on_finisher events. Examples: *Coup de Grâce* (Daggers Lv 11) lands a 2× execute swing when you hit a target ≤ 25% HP; *Cleaver* (Axes Lv 25) detonates a 4-block ground burst on every combo finisher; *Pyromaniac* (Magic Lv 57) buffs your next Fireball hit
  • Two Lv 100 capstones (Pick 1 of 2) per combat tree — augment specific abilities, apply real status effects to the victim, or drop damage zones at the kill site instead of generic % multipliers. Examples: *Cataclysm* (Staves) makes meteor leave a 4-second burning crater; *Multishot* (Archery) gives every Scatter Shot pellet its own bleed; *Stagger* (Blunt) stuns for 0.75 s on every hit

Plus Wind Dancer (Acrobatics Lv 67) — a passive that auto-arms a 2.5× next-hit damage buff for 4 s with a chained 1.4× follow-up when you successfully dodge an incoming hit during the perfect-dodge window. No hotbar slot, no cast — pure dodge-and-counter feel.

Damage rebalance — flat-first, % gated to endgame

A ground-up rework of how damage stacks. Percent-damage rewards multiplied with each other and with weapon-tree bonuses, and paired with other mods the chain hit one-shot territory long before defenses could kick in. Now percent damage is a rare endgame multiplier; flat damage is the bread-and-butter at every other tier.

  • Low and mid tiers (Lv 5–65) no longer give % damage. Every "Damage +X%" reward in the early/mid tree has been replaced with a flat "+X Damage" reward. Flat damage adds after all multipliers and the ability-stack cap, so it doesn't compound — your Tier 0 reward is exactly as strong at Lv 100 as it was at Lv 5
  • % damage is endgame-only. Tiers 8 and 9 (Lv 80, Lv 100) keep their STAT_DAMAGE, LIFESTEAL, and COMBO_DAMAGE percent rewards, with values roughly halved
  • Combo finishers and lifesteal got the same treatment — flat at low tiers, percent only at L80+
  • Two new unique-passive choice tiers per combat tree at off-grid levels (Lv 11–29 lower, Lv 52–78 upper). Each is a "Pick 1 of 2" with hand-crafted passives: execute-style flat damage that scales when the target is below a HP threshold, full-HP openers that reward fresh engagements, ability-filtered specialists ("+15 Power Strike Damage", "+20 Fireball Damage"), and low-HP rage rewards

A maxed-out Lv 100 build sees roughly 12% lower peak burst vs. the old percent-stacking max. Mid-game (~Lv 40) drops more sharply because flat doesn't compound — by design.

Dashes are real dashes (momentum + i-frames)

The five DASH abilities — Leap Strike, Berserker Charge, Shield Slam, Shadow Pounce, Lumberjack Leap — write a one-shot velocity impulse that physics carries through the world, slowing on collisions and decaying with air resistance. Dashes also grant i-frames — a brief invulnerability window during the slide. Hits that connect mid-dodge are cancelled outright, and any incoming knockback is stripped. Defaults: 200 ms for most dashes, 300 ms on Shield Slam (longest, tank-flavored), 150 ms on Shadow Pounce (briefer, assassin timing). Server owners can tune every value (velocityHorizontal, iframesDurationMs) per ability from mods/mmoskilltree/abilities.json.

Dodge Counterattack — Acrobatics + Defense passive

Time a dodge so a hit lands inside the i-frame window and your next swing hits harder. Souls-style parry-then-execute, built into the skill tree as a passive you unlock and scale per-skill.

  • Generalist "+25% Dodge Counterattack" options at Acrobatics Tier 4 (Lv 30), Acrobatics Tier 6 (Lv 50), and Defense Tier 4 (Lv 30). A fully-invested generalist hits 1.75× damage on every successful dodge counter
  • Specialist tiers that only apply to a specific ability — *Shadow Counterstrike* (Acrobatics Tier 8, Lv 80, +50% extra when you dodge with Shadow Pounce) and *Bulwark Counterstrike* (Defense Tier 7, Lv 65, +50% extra on Shield Slam dodges). A Shadow Pounce specialist with full investment caps at 2.25×; a Shield Slam tank tops out at 2.0×

The dodge timing window (50 ms by default) and how long the counterattack stays armed (750 ms) are server-tunable in mods/mmoskilltree/abilities.json.

Active vs Passive labeling

Every ABILITY_UNLOCK reward in the skill tree wears a clear [ACTIVE] or [PASSIVE] tag so you can tell at a glance which abilities go on your hotbar vs. which trigger on their own. Active abilities bind to slots 7/8/9 and cast on hotkey. Passive abilities don't appear on the bind page, can't be assigned to a slot, and trigger automatically when their condition is met.

If a future patch removes an ability from the codebase but leaves the skill-tree reward in place, the orphan reward chip is hidden from the page entirely instead of showing a broken-looking placeholder. Tier "Pick N of M" headers reflect the real visible reward count.

Mark hierarchy — two flavors, two roles

The two marks (Hunter's Mark, Sunder) each occupy a clear corner:

  • Hunter's Mark — ranged tracker (1.20× / 10 s / 4 hits — lower per-hit, longer window, more total budget)
  • Sunder — armor-shred drag-out tax (1.25× / 6 s / 5 hits)

Held-weapon gating

Many abilities require the appropriate weapon category — Power Strike + Leap Strike + Rallying Cry need a sword, Whirlwind + Sunder hold an axe, Shield Bash + Shield Slam + Guardian's Call need a shield, Vampiric Strike + Shadow Pounce need daggers, Hunter's Mark + Piercing Shot + Volley need a bow. Hot-swap to the wrong weapon mid-fight and the cast aborts cleanly — no cost, no cooldown.

Two ways to cast — keyboard or inventory item

Hotkey casting on slots 7/8/9 is the default. Players who prefer mousewheel-friendly hotbar navigation can opt into inventory-item casting on the abilities page (or in /settings): toggle "Cast Abilities via Inventory Item" on, and three new items appear in your inventory — one per ability slot. Use an item to cast the ability bound to that slot. The items are reusable (don't get consumed), and while the mode is on, hotbar slots 7-9 work as ordinary hotbar slots. If you ever lose an item, click "Restore Missing Items" on the abilities page (15-minute cooldown).

UI

  • Cooldown HUD — pip-style cooldown bar shows your bound abilities and their remaining cooldowns. Each pip displays the ability's icon (the same one shown on the bind page) with its hotbar key above and a seconds counter below — hover to see the ability name. A subtle blue fill behind the icon drains as the cooldown ticks down. Configurable from the Admin Config menu (vertical anchor / horizontal align / X-Y offsets)
  • MultipleHUD compatibility — if the MultipleHUD mod (Buuz135) is installed, the ability HUD coexists with other HUD-using mods (Coordinates HUD, Block Information, Equipment Plus HUD) instead of replacing them. Auto-detected at startup; falls back to the standard slot if not installed
  • Bind page filtering — search box (filters by name or flavor text), sort buttons (Name / Level / Skill), skill filter dropdown, category chips (Combat / Gathering / Crafting / Misc), Hide Locked toggle, empty-state messages
  • Distinct icons for every ability — each ability shows its own thematically picked Hytale item icon on the bind page
  • Reward icons across all menus — every reward that grants an item shows its actual item icon next to the reward text in the skill tree, item rewards, achievements, and quest menus. Stat-shaped rewards (like "+5 Max Health") get a representative icon synthesized from the reward type. Locked rewards appear greyed out with a "Lv N" badge so you know which level milestone unlocks each one. Native Hytale item tooltips on hover

Configuration

  • Fully tunable abilities.json — Damage, cooldowns, radii, projectile models, sounds, damage causes, animations, on-hit effects, XP routing, and nested behaviors all live in the config
  • Configurable damage cap — server admins can tune the pre-defense ability multiplier ceiling via mods/mmoskilltree/skill-config.json (maxPreDefenseMultiplier, default 4.0). Raise it to allow bigger combo numbers, lower it for tighter PvE balance
  • reward-icons.json override config — server admins can remap any reward icon. Three precedence layers: per-skill overrides (highest), per-combat-target overrides, and per-reward-type defaults. Set a value to "__DISABLED__" to suppress an icon entirely

Ability localization

Active ability names, flavor text, and the dynamic damage/radius/duration summary are translated into the player's chosen language. Numeric values come straight from the ability's config, so balance changes propagate to every language without re-translation.

  • Ability names — all default abilities resolve their display name through localization
  • Flavor descriptions — the hand-written intro line on the bind-page tooltip is per-language
  • Dynamic summaries — the auto-generated sentence describing each ability's effect (e.g. "Launches a projectile dealing 40 damage in a 4-block radius.") is built from per-archetype templates that translators can re-order to fit each language's natural sentence flow

Ground AoE visuals

Each ground AoE has its own bespoke effects so they read as distinct beats in combat:

  • Meteor — telegraph ring during the 2.5-second drop, with a falling fireball timed so its visual impact lands on the same frame as the damage tick, then a cataclysmic fire burst on hit
  • Volley — overhead arrow streaks plus 4 cosmetic arrows per tick that freefall from sky-height onto random points in the zone
  • Seismic Slam — dust telegraph during the windup, stone-impact windup sound, and a heavy earth-stomp on landing
  • Thorn Patch — a foliage rustle on cast, sprouting plant burst, and small poison drips per tick

Cast / impact / tick visuals are separate beats — a ground AoE can play one particle on cast (telegraph), a different particle when damage first lands (impact), and a third per tick. Per-tick sound effects are configurable.

Bug fixes

  • /mmoawardxp works without a trailing world argument — the admin XP-award command no longer requires --world to be passed. Run /mmoawardxp from console, in-game, or from a quest-reward command and it just works. The command picks up the world from the player sender, or from the first available online player when run from console. Old callers that still pass a world name continue to parse cleanly
  • Custom Skills admin page opens again — the Custom Skills page (and its wizard) crashed silently on open with an internal array index error after the acrobatics movement triggers were added in 0.16.1. Both pages now render correctly from every entry point (admin dashboard button and help guide)
  • Quest claim button refreshes after claiming a repeatable quest — used to stay visible after claim, making it look like rewards weren't dispensed. Rewards were always being granted; only the row visuals were stuck. The page refreshes on a successful claim so the quest moves out of the active list and the row reflects its new state (cooldown, or available again if there's no cooldown)