Valheim
Install with App

Details

Latest version
1.2.4
Last Updated
First Uploaded
Downloads
2.1K
Likes
2
Size
270KB
Dependants
ADDatHost Valheim hosting
30% off

SpecialAttack

Adds unique special attacks to every weapon category in Valheim — swords, axes, clubs, sledgehammers, atgeirs, spears, knives, bare fists/fist weapons, bows, and crossbows — each with cooldown tracking, configurable damage multipliers, visual/audio feedback, and an optional custom activation key (see the table below for the full weapon-by-weapon list). On top of that, several weapon-independent extras: a configurable dodge-roll replacement (Quickstep), a standalone dedicated-key dash (Dash) that works regardless of equipped weapon, and the ability to cancel an in-progress melee swing into a normal block (Guard Cancel). Crossbows and bows get extra depth beyond their own special attack — reload improvements and skill XP tuning for crossbows, and arrow embedding/recovery/gravity tuning for bows. All cooldowns are shown on a configurable on-screen HUD, and every value in the mod is configurable via the BepInEx config file.


Special Attacks by Weapon

Weapon Special Attack Description
1H Sword Sword Chain Secondary attack starts a chain — hold to keep chaining up to 3 hits, each with its own damage multiplier. Extra hits unlock at higher Swords skill levels.
2H Sword (Claymore / THSwordKrom / Gold / Slayer variants) Quad Slash Secondary attack replaces the vanilla swing with a 4-hit slash combo — each hit has its own animation speed and damage multiplier. Extra hits unlock at higher Swords skill levels.
Bastard Sword (Warfare weapon) Crescent Wave The weapon's own secondary attack plays normally; at the hit-trigger moment a piercing crescent slash is additionally fired forward — at higher Swords skill, more crescents fire in quick succession from that same single swing.
Spear Spear Pin Throws the spear into an enemy — it stays embedded, slowing the target and dealing bonus damage. Walk up and pull it out to get your spear back; the bonus damage and reticle stay for the pin duration while the slow wears off gradually.
Battleaxe (2H Axe) Impact Burst Throws the axe with a spinning visual; it explodes in an AoE burst on impact.
1H Axe Hatchet Hook Secondary attack is replaced entirely by a throw — the axe embeds in the target (slowing it) instead of swinging. Walk up and pull it out to get your axe back (or it drops at your feet if your inventory is full); pulling it out starts a bleed DoT on the target.
1H Club/Mace Concussion Blow The weapon's own swing/damage is untouched; every monster actually hit by the swing gets a forced stagger + brief movement/attack lockout (small/large monster tiers gated by Clubs skill level; bosses are excluded).
Sledgehammer / 2H Mace Aftershock The weapon's own ground-slam swing plays normally; immediately after, a series of shockwaves ripples out from the impact point, growing in size and damage over 1–5 waves depending on Clubs skill level.
Battle Hammer (Clubs + Two-Handed, excluding Sledgehammers) Spinning Sweep Hold secondary attack to spin continuously, hitting all nearby enemies for the duration.
Polearm / Atgeir Spiral Thrust The weapon's own secondary attack plays normally (motion/hit detection/multi-hit untouched); only this swing's attack instance is switched to a horizontal spin thrust, and every monster hit takes extra follow-up hits over time (1–5 depending on Polearms skill level).
Knife / Dagger Smoke Vanish Throws a smoke bomb that resets nearby aggro and suppresses re-detection for a short duration — lets you reposition or vanish mid-fight.
All weapons (per-category toggle) Quickstep Replaces the vanilla roll with a short, fast dash — lower stamina cost, shorter cooldown, brief i-frames. Ported from sighsorry's SecondaryAttacks with the author's permission — see Credits.
Any weapon (or none) — dedicated key Dash A short straight-line dash on a dedicated key (default V), completely independent of the equipped weapon and of the special attacks above — see the [Dash] section below.
Melee weapons (Unarmed/Knives/Swords/Axes/Clubs/Polearms/Spears) — vanilla block key Guard Cancel Press the vanilla block key while mid-swing to instantly cancel the attack and drop into a normal vanilla block/parry instead of finishing the swing — see the [GuardCancel] section below.
Crossbow Tranquilizer Bolt Secondary attack is a toggle — reloads (full vanilla reload) into a tranquilizer bolt, or back to a normal one if one's already loaded. The bolt itself deals zero damage/knockback, but a non-boss hit (on creatures that have a corpse) puts the target to sleep after a short delay (stacks on repeat tranquilizer hits instead of waking it), with any other damage dealt while asleep always landing as a backstab — see the [TranquilizerBolt] section below. Crossbows also get reload improvements (keep-loaded-through-holster, move/jump/dodge not interrupting reload, 2-point skill-scaled reload time) and Crossbows skill XP tuning — see [Crossbow] below.
Bow Hunter's Volley A toggle, bound only to the dedicated SpecialAttackKey (never the vanilla secondary-attack key) so it never interferes with drawing/firing — press it to arm (shows an icon near the crosshair), press again to cancel. Works even mid-draw. Your next shot then fires a horizontal fan of extra arrows (count scales with Bows skill level) at a reduced per-arrow damage, instead of a single arrow — see the [HuntersVolley] section below. Bow arrows also get embedding/recovery — see [ArrowEmbed] below.
Unarmed (bare fists) and Fist/Claw weapons Doom Fist Secondary attack borrows the Knife's secondary-attack motion instead of your own punch/weapon swing, and that swing's own melee hit is disabled — all the damage instead comes from a single ground-impact AoE burst (Aftershock's shockwave visual/sound, resized) a short distance in front of you the instant the swing lands. Cooldown is spent the moment the swing starts, win or miss — see the [DoomFist] section below.
Staves (StaffFireball / StaffClusterbomb / StaffOrbofAhri / StaffThunderBlood — the 4 vanilla single-shot staves, configurable list) Twin Cast (passive) + Repulse Twin Cast is a passive on your normal primary cast: at high enough skill it has a chance to fire a second identical projectile a short moment later, aimed wherever you're looking at that later instant. Repulse is a dedicated special attack: slam the staff into the ground (borrows the Staff of Protection's ground-slam motion, movement/turning slowed to that same motion's own rate instead of blocked) to knock back and damage everything nearby — bosses take the damage but are never knocked back. See the [MagicBolt]/[TwinCast]/[Repulse] sections below.
Dundr (StaffLightning, configurable list) Railgun (passive) + Storm Field Railgun is a passive on Dundr's reload-and-fire cycle: lets you keep it loaded across weapon swaps/holstering at high enough skill, fires extra bolts alongside its normal spread the higher your skill gets (no extra Eitr cost), and tightens that spread the higher your skill gets too. Storm Field is a dedicated special attack usable only while loaded: fires a harmless (zero-damage) version of your normal volley, and wherever it first lands — on an enemy or just on the ground — a lingering storm zone appears there (shown by a ground ring matching its real radius), striking everything nearby with real damage every second or so for its duration. See the [Railgun]/[StormField] sections below.
Staff of Frost (StaffIceShards, configurable list) Glacial Breath A dedicated special attack: hold the special-attack key to breathe Moder's own cold-breath effect forward in a locked direction (release to stop) — the staff's own ice-shard shot never fires, your camera/facing (mouse and movement keys) stay locked to the moment you started, and everything in a straight corridor in front of you is hit every tick (walls block it, line of sight is required). Costs your entire current Eitr on activation (the amount consumed sets the per-tick damage), pushes you backward slightly while firing, and holds one fixed stance the whole time (no repeated casting motion). The icy back-wings are still work in progress (angle/shape aren't right yet) and are off by default — the code/config are kept in place and can be re-enabled with ShowWings. See the [GlacialBreath] section below.
Staff of the Wild (StaffGreenRoots, configurable list) Nature's Mend A dedicated special attack: slam the staff into the ground (borrows the Staff of Protection's ground-slam motion, same slowed movement/turning as Repulse) and heal yourself plus nearby allies over time. Costs your entire current Eitr on activation — the amount consumed sets the total heal (split evenly across several ticks over a few seconds, using the normal vanilla heal numbers). Who's included is locked in at the exact instant the staff touches the ground — only allies within range at that moment (yourself, tamed animals, friendly summons, and optionally other players) get healed, and they keep getting healed for the full duration even if they wander off afterward; nobody who shows up later gets added. You're completely free to move, fight, or swap weapons once healing starts — it's a background effect, not a locked stance. See the [NatureMend] section below.

Weapon detection is done by vanilla skill type + item type (and, for Bastard Sword/Crescent Wave, by prefab name) — no specific mod required for most weapons. Bastard Sword itself only exists if you have the Warfare mod installed (see "Optional integrations" below).


How It Works

  • Secondary attack key triggers specials by default — each has its own cooldown
  • Optionally bind a custom key (SpecialAttackKey) to separate specials from vanilla secondary attacks
    • Custom key pressed → special attack only (no secondary swing)
    • Custom key pressed while on cooldown → nothing happens
    • Secondary attack key → always vanilla secondary attack
  • Cooldown icons appear on your HUD
  • All values are fully configurable via the BepInEx config file

Optional integrations (not required dependencies)

SpecialAttack does not require any other mod to function. If the following mods are installed, a couple of features use them automatically — with no integration installed, the affected feature simply falls back to its vanilla equivalent:

  • Warfare (Therzie) — recommended, but entirely optional. If installed:
    • Crescent Wave can trigger on the Bastard Sword (a Warfare weapon; without Warfare this weapon doesn't exist, so Crescent Wave never fires).
    • Spiral Thrust will play Warfare's Warpike secondary-attack motion (SpiralThrust.MotionName, default WarpikeSecondary_TW) for the spin thrust. Without Warfare (or if the motion can't be found), it plays the Atgeir's own secondary attack motion instead — the hit detection and extra-hit logic work identically either way.
    • Without Warfare installed, every other weapon category and special attack in this mod works exactly the same — Warfare only adds the Bastard Sword itself and the alternate Spiral Thrust motion.

Configuration

Edit BepInEx/config/com.specialattack.plugin.cfg after first launch.

[General]

Key Default Description
SpecialAttackKey Mouse4 Custom activation key (Unity KeyCode). When set, secondary key = vanilla only. Example: Mouse4, Mouse2, F
AdrenalineOnHit true Vanilla grants its own "on-hit" Adrenaline bump from the code that fires a weapon swing or a projectile, not from the damage pipeline itself — a handful of specials in this mod deal damage by building a HitData directly (bypassing that code), or skip a projectile's own hit-resolution body entirely, so they never trigger it. This setting backfills that bump for exactly those specials, using the same value and the same eligible-target rule (hostile target) vanilla would — everything else (normal attacks, stagger-triggered Adrenaline) is untouched either way. Turn off to disable only this backfill.
BowExcludeWeapons GrapplingHook Prefab names (comma-separated) excluded from this mod's shared "is this a bow" check (used by Hunter's Volley and arrow embedding/recovery) even though they share the Bows skill. Needed because the Grappling Hook is classified under the same skill as real bows — without this it would arm/fire Hunter's Volley too. Doesn't affect real bows.
GrappleBlockSecondary true Weapons listed in BowExcludeWeapons (the Grappling Hook by default) have a real vanilla secondary attack of their own (the "repel/pull" fire) — while this is on, that secondary attack is blocked entirely for those weapons, both on the vanilla secondary-attack key and on the custom SpecialAttackKey, so they only ever fire on left-click like a plain throw. Turn off to restore their normal vanilla secondary attack. Doesn't affect any other weapon.

[Hud]

Key Default Description
HudX 0.5 Cooldown HUD X position (0 = left, 1 = right)
HudY 0.15 Cooldown HUD Y position (0 = bottom, 1 = top)

[SwordChain] — 1H Sword

Key Default Description
Enable true Toggle on/off
Cooldown 20 Cooldown in seconds
ChainWindow 0.8 Time window to trigger next chain hit (seconds)
AnimSpeed 1.4 Chain hit animation speed multiplier
Damage1 1.2 1st hit (special attack) damage multiplier
Damage2 1.4 2nd hit damage multiplier
Damage3 2.0 3rd hit (finisher) damage multiplier
MinSkillLevel 0 Minimum Swords skill level required (0 = no limit)
HitLevel2 20 Min Swords level for the 2nd hit (1st hit only needs MinSkillLevel)
HitLevel3 30 Min Swords level for the 3rd hit (finisher)
ChainPushMult 0.1 Knockback multiplier for chain hits (0 = none, 1.0 = full weapon knockback)

[QuadSlash] — 2H Sword (Claymore / THSwordKrom / Gold & Slayer variants)

Key Default Description
Enable true Toggle on/off
Cooldown 22 Cooldown in seconds
AnimSpeed1 / AnimSpeed2 / AnimSpeed3 1.3 / 1.2 / 1.5 Animation speed for hits 1–3
AnimSpeed4 2.0 Animation speed for finisher (hit 4)
Damage1–3 1.0 Damage multiplier for hits 1–3
Damage4 1.5 Damage multiplier for finisher
MinSkillLevel 0 Minimum Swords skill level required
HitLevel2 10 Min Swords level for the 2nd hit
HitLevel3 30 Min Swords level for the 3rd hit
HitLevel4 50 Min Swords level for the finisher

[CrescentWave] — Bastard Sword (Warfare weapon)

At higher Swords skill, the same swing fires more than one crescent. The weapon's own secondary-attack swing still only plays once — the first crescent fires immediately (exactly as before), and any additional ones from the skill bracket below are fired in sequence afterward, ChainInterval seconds apart, all reusing the exact position/direction/damage/size/speed/ range/effects/sound captured at the moment the first one fired (not recalculated per extra shot). Each crescent still does its own independent hit detection, so the same monster can be hit by more than one of them (hit tracking to prevent a single crescent re-hitting the same target is unchanged). Cooldown is still spent only once per swing, at the same point as before (when the first crescent is confirmed to fire). If the player dies, staggers, switches weapons, teleports, or guard-cancels the swing while later crescents are still pending, those remaining ones are skipped.

Key Default Description
Enable true Toggle on/off
HitHeight 2 Hit detection height (meters)
DamageMult 0.8 Crescent damage multiplier — weapon damage (quality/skill applied, all types summed then converted to Slash) × this value
Cooldown 40 Cooldown in seconds — while on cooldown, only the vanilla secondary attack plays
MinSkillLevel 0 Minimum Swords skill level required to trigger a crescent at all
HitSlashEnable true Show a small slash-mark effect at the hit point
CrescentFullness 0.25 Crescent thickness ratio (closer to 1 = thicker)
ChainInterval 0.08 Seconds between each extra crescent in a multi-shot burst
Lv1 / Count1 20 / 1 Below this Swords level, 1 crescent (unchanged); at/above it, Count1
Lv2 / Count2 40 / 2 At/above this level, Count2
Lv3 / Count3 60 / 3 At/above this level, Count3
Lv4 / Count4 80 / 4 At/above this level, Count4

[SpearPin] — Spear

Cooldown is consumed the instant the spear actually leaves your hand (the real thrown projectile is created) — not on landing a hit. A miss, hitting terrain/water/a player, or hitting a monster that's already pinned all still spend it, same as a successful pin; the cooldown HUD icon appears starting from that same throw moment, and the same activation effect every other special plays also fires right there at your position. If the throw itself never happens (not enough stamina, etc. — this is vanilla's own primary attack this special rides on, not something this mod intercepts and replaces), nothing is spent and no effect plays.

Key Default Description
Enable true Toggle on/off
Cooldown 60 Cooldown in seconds, consumed the instant the spear is actually thrown — hit, miss, or already-pinned target, it doesn't matter
SpeedFactor 0.8 Movement speed multiplier while pinned (0.1–1.0)
PinDuration 10 Duration of the pin effect (seconds) — spear drops as an item on expiry
PullRange 3 Distance to retrieve the pinned spear (meters)
PullRestoreTime 5 Time for movement speed to recover after the spear is pulled (seconds)
MinSkillLevel 30 Minimum Spears skill level required
BonusDamageRatio 0.2 Extra hit dealt while pinned, as a ratio of the pin hit (0 = disabled)
BossMinSkillLevel 50 Minimum Spears level required for the pin (slow) effect to apply to bosses — below this, bosses still get pinned and take bonus damage but aren't slowed
ReticleEnable true Show a reticle above pinned targets
ReticleSize 1.5 Reticle size (meters)
DropMarkerLevel 20 Minimum Spears skill level (thrower's) to show a map marker where a dropped spear lands — own map only

[ImpactBurst] — Battleaxe (2H Axe)

The thrown axe always ends up as a pickup-able dropped item right where it lands — whether that's open ground, wherever it hits a monster (after the AoE burst goes off), or water — there's no separate "embeds and stays" case like [HatchetHook]. A map marker can mark that landing spot, on your own map only, reusing the same map-marker system [HatchetHook]/[SpearPin] already use for their own dropped weapons — same pin shape/name/removal rules (picked up or despawned makes it disappear).

Key Default Description
Enable true Toggle on/off
Cooldown 30 Cooldown in seconds
DamageFactor 3 AoE damage multiplier
PushFactor 4.0 AoE knockback multiplier
Radius 4.0 AoE radius (meters)
ThrowSpeed 30 Throw velocity (m/s)
SpinSpeed 2.5 Thrown axe spin rate (rotations/second); 0 = no spin
VisualPitch / VisualYaw / VisualRoll 0 Visual orientation correction (degrees) — only needed if a modded axe's throw pose looks off
MinSkillLevel 40 Minimum Axes skill level required
DropMarkerLevel 20 Minimum Axes skill level (thrower's) to show a map marker where the dropped axe lands — own map only

[HatchetHook] — 1H Axe

Secondary attack is fully replaced by a throw (no vanilla melee swing happens at all) — the axe embeds in whatever it hits instead of exploding like Impact Burst. Throw damage is the weapon's own damage (quality + skill applied); the embedded axe has no time limit and stays until the target dies or you pull it out.

Key Default Description
Enable true Toggle on/off
Cooldown 30 Cooldown in seconds — only consumed when the throw actually goes out
MinSkillLevel 10 Minimum Axes skill level required
BossMinSkillLevel 50 Minimum Axes level required for the embed to slow bosses — below this, bosses still get hit/embedded/bled normally but aren't slowed
BleedDuration 5 Bleed duration after pulling the axe out (seconds)
BleedInterval 0.1 Seconds between bleed ticks
BleedTickMult 0.05 Bleed tick damage = weapon damage (quality/skill applied) × this value
EmbedDepth 0.35 How far past the hit surface the axe is pushed in along the throw direction (meters)
EmbedTiltAngle 30 Tilt angle (degrees) so the blade edge digs in at an angle instead of head-on
DropMarkerLevel 20 Minimum Axes skill level (thrower's) to show a map marker where a dropped/embedded axe lands — own map only
TrackMarkerLevel 40 Minimum Axes skill level (thrower's) to show a map marker that follows the monster while the axe is embedded — own map only

[ConcussionBlow] — 1H Club/Mace

The weapon's own motion/damage/multi-hit is completely untouched — this only adds a forced stagger + brief lockout on top, gated by target size and Clubs skill level. Bosses are always excluded.

Key Default Description
Enable true Toggle on/off
Cooldown 16 Cooldown in seconds — only consumed if at least one monster was actually staggered this swing
MinSkillLevel 0 Minimum Clubs skill level for the skill itself (separate from the per-size gates below)
SmallLevel 0 Minimum Clubs level to force-stagger small monsters
LargeLevel 40 Minimum Clubs level to force-stagger large monsters (see LargeMonsters)
ExtraBosses (empty) Comma-separated prefab names to additionally treat as bosses (excluded from this skill)
LargeMonsters Troll,Abomination,StoneGolem,Gjall,SeekerBrute,GoblinBrute Comma-separated prefab names treated as "large"
ExportCreatureList false If true, dumps every Character-bearing prefab to BepInEx/config/SpecialAttack_CreatureList.txt once per game start — turn on only when you need this reference list, leave off otherwise so it doesn't write a file every launch
StunDuration 3 How long (seconds) a staggered target is locked out of movement/attacks. Re-triggering refreshes (doesn't stack) this duration

[Aftershock] — Sledgehammer / 2H Mace

The weapon's own ground-slam swing is untouched; the shockwaves are a purely additive follow-up from the same impact point.

Key Default Description
Enable true Toggle on/off
Cooldown 60 Cooldown in seconds
MinSkillLevel 30 Minimum Clubs skill level — meeting this always grants at least 1 shockwave
Radius 4 Base shockwave radius (meters) — actual radius is this × the per-wave size multiplier below
ImpactOffset 2 Forward distance to the fixed impact point (meters)
ShockInterval 1 Seconds between shockwaves — the first fires immediately on impact
ShockLevel2–5 20/40/60/80 Minimum Clubs level for 2/3/4/5 total shockwaves
ScaleFirst / ScaleLast 1.1 / 2 Size multiplier for wave 1 / wave 5 (linearly interpolated in between; the table stays fixed even if fewer waves occur)
DamageFirst / DamageLast 1 / 3 Damage multiplier for wave 1 / wave 5

[SpinningSweep] — Battle Hammer (Clubs + Two-Handed, excluding Sledgehammers)

Key Default Description
EnableBattleHammer true Toggle on/off
Cooldown 30 Cooldown in seconds
LoopStart / LoopEnd 0.4 / 0.6 Normalized animation time window that loops while held
AnimationSpeed 1.0 Animation playback speed
BattleHammerMoveSpeedFactor 0.3 Movement speed multiplier while spinning
SkillRaiseFactor 0.25 Skill XP multiplier per loop
MinSkillLevel 40 Minimum skill level required
StaminaMult 0.5 Stamina cost per loop, relative to the weapon's own secondary attack stamina cost (1.0 = full) — applied exactly once per loop (first spin and every repeat alike), and only on swings that actually start or continue Spinning Sweep (vanilla secondary attacks blocked by cooldown/skill level keep their full vanilla stamina cost)
PushMult 0.1 Knockback multiplier (0 = none, 1.0 = full weapon knockback)
StaggerMult 1.0 Stagger multiplier (1.0 = full weapon stagger)
DamageMult 0.7 Damage multiplier (1.0 = full weapon damage)

[SpiralThrust] — Polearm / Atgeir

Does not intercept the secondary attack — the weapon's own motion, hit detection, and multi-hit are untouched. Only this swing's attack instance has its AttackType switched to a horizontal spin, and every monster actually hit receives extra follow-up hits over time.

Key Default Description
Enable true Toggle on/off
Cooldown 16 Cooldown in seconds
MinSkillLevel 0 Minimum Polearms skill level required — meeting this always grants at least 1 extra hit
HitLevel2–5 20/40/60/80 Minimum Polearms level for 2/3/4/5 total extra hits
TickInterval 0.2 Seconds between extra hits
TickDamageMult 0.3 Damage multiplier per extra hit (applied to weapon damage)
MotionName WarpikeSecondary_TW Motion name invoked via ZSyncAnimation.SetTrigger when Warfare is installed (see "Optional integrations"). Not an Animator parameter — it's the name Warfare's own animation-replacement system listens for. Falls back to the Atgeir's own secondary attack motion if Warfare isn't installed or the motion can't be played

[SmokeVanish] — Knife / Dagger

Key Default Description
Enable true Toggle on/off
Cooldown 120 Cooldown in seconds
MinSkillLevel 20 Minimum Knives skill level required
Duration 10 Seconds nearby monsters can't newly detect/re-target you after activation. Not invincibility — attacking or getting hit ends it immediately
AggroResetRadius 20 Radius (meters) for the immediate aggro reset and the ongoing re-detection suppression
PreCastHitGrace 0.5 Grace period (seconds) after activation during which an incoming hit doesn't count as "ending" the effect — covers monster attacks already in motion before you activated

[Quickstep] — dodge roll replacement (all weapons, per-category toggle below)

Ported from sighsorry's SecondaryAttacks with the author's permission — see Credits. Default values match the original mod's fixed constants.

Key Default Description
Enable true Use a short fast dash instead of the vanilla roll when conditions are met; falls back to the vanilla roll otherwise
DashAcceleration 200 Dash acceleration
DashDuration 0.25 Dash duration (seconds)
StaminaFactor 0.6 Stamina cost = this fraction of the vanilla roll's cost
Cooldown 0.5 Cooldown (seconds)
ShieldInvincibleDuration 0.15 I-frame duration (seconds) while a shield is equipped — without a shield, the whole dash is invincible
AnimSpeedStart 3.0 Animation speed multiplier at dash start
AnimSpeedEnd 1.5 Animation speed multiplier during the rest of the dash

[Quickstep - Weapons] — per weapon-category toggle

Key Default Description
Knives_1H / Knives_2H true / true Knives (1H / 2H)
Unarmed_1H / Unarmed_2H true / true Unarmed / fist weapons (1H / 2H)
Swords_1H / Swords_2H true / true Swords (1H / 2H)
Axes_1H / Axes_2H true / true Axes (1H / 2H)
Clubs_1H / Clubs_2H true / true Clubs (1H / 2H)
Polearms_1H / Polearms_2H true / true Polearms (1H / 2H — vanilla has no 1H polearm; covers modded weapons)
Spears_1H / Spears_2H true / true Spears (1H / 2H — vanilla has no 2H spear; covers modded weapons)
Pickaxes_1H / Pickaxes_2H true / true Pickaxes (1H — modded only / 2H — all vanilla pickaxes)
OtherSkills_1H / OtherSkills_2H true / true Any skill type not listed above (e.g. from other mods)
Bows / Crossbows true / true Bows / Crossbows
ElementalMagic / BloodMagic true / true Elemental / Blood magic staves
BareHands true Completely unequipped (no unarmed weapon item)
ExtraPrefabs (empty) Comma-separated weapon drop-prefab names always allowed regardless of the checkboxes above

[Dash] — dedicated-key dash (independent of equipped weapon and of the special attacks above)

A short straight-line dash on its own dedicated key. If you're holding a movement key (WASD etc.), it dashes in that world-facing direction (same movement-direction value vanilla itself uses); otherwise it dashes in the direction the camera is looking — either way the character turns to face the dash direction first, like a roll. On ground, it hugs the terrain (re-sampled every frame within a tight window just above/below your current foot height, so it can never latch onto a ceiling, roof, or the floor above in a dungeon) instead of flying off ramps or stopping short on slopes; while swimming it stays at a fixed height (horizontal only). Only usable while grounded or swimming — pressing the key while airborne (jumping/falling) does nothing (no stamina/cooldown spent, chain dashes included). If you get teleported (e.g. entering/leaving a dungeon) or otherwise moved by something else mid-dash, the dash stops immediately without fighting that movement, and is also ignored for a short grace period right after a teleport. Works with any weapon equipped (or none) and doesn't block attacks or other special attacks — you can swing or trigger a special attack while dashing and the dash keeps going. Plays the same activation effect as the other special attacks once per dash (including chain dashes). Does nothing (no screen message) while on cooldown, without enough stamina, or below the configured skill level. Ignored while a UI is open (chat/console/inventory/ map/etc.), while dead, or while attached to something (ship helm, chair, saddle).

Key Default Description
Enable true Toggle on/off
DashKey V Dash activation key
Distance 3 Dash distance (meters, measured horizontally) — shortened automatically if it would hit an obstacle
Speed 20 Dash travel speed (m/s, horizontal)
StaminaCost 10 Stamina cost for the first dash
Cooldown 10 Cooldown in seconds — refreshed from the moment of the most recently used dash (including chain dashes)
MaxSlope 50 Ground dash only — an uphill slope steeper than this angle (degrees) is treated as a wall and stops the dash in place
CliffDrop 2 Ground dash only — if the ground ahead suddenly drops by at least this much (meters), the dash stops at the edge instead of following it down
StepUp 1 Ground dash only — how far above your current foot height the ground search is allowed to look (and no further) — keeps it from ever detecting a ceiling/roof/the floor above as "ground"
ChainExtra 1 Extra dash uses allowed within the chain window after the first dash (0 = no chaining)
ChainWindow 3 Time window (seconds) during which chain dashes can be used
ChainStaminaCost 15 Stamina cost per chain dash
RunLevel 30 Minimum Run skill level required for a ground dash (0 = no requirement)
JumpLevel 30 Minimum Jump skill level required for a ground dash (0 = no requirement)
SwimLevel 40 Minimum Swim skill level required for a swim dash (0 = no requirement)

[GuardCancel] — cancel an in-progress melee swing into a block (independent of weapon/special attacks above)

Normally you can't block while mid-swing — vanilla only lets you block once the swing animation finishes. With this enabled, pressing the vanilla block key (including gamepad) while attacking with a melee weapon (Unarmed, Knives, Swords, Axes, Clubs, Polearms, Spears — bows, crossbows, staves, pickaxes and tools are excluded) immediately cancels the swing — no damage is dealt, no ammo/durability/resources are consumed for that swing, and any of this mod's own ongoing combo (QuadSlash/SwordChain/Spinning Sweep) is stopped cleanly — and drops you into a completely normal vanilla block using your equipped shield's own block animation, with full vanilla blocking/parry timing, block-stamina cost, and block+jump dodge. Hold the key to keep blocking, release it to drop block, exactly like vanilla. Does nothing while you're not mid-swing (vanilla block behaves exactly as usual), while the weapon isn't a melee weapon, or below the configured Blocking skill level.

Key Default Description
Enable true Toggle on/off
BlockLevel 20 Minimum Blocking skill level required to cancel a swing into a block (0 = no requirement)

[TranquilizerBolt] — Crossbow-only special attack (tranquilizer bolt)

Triggered the same way as any other special attack (dedicated special-attack key, or the vanilla secondary-attack key if no dedicated key is set) while a crossbow is equipped — it's a toggle: if a tranquilizer bolt isn't currently loaded, pressing it reloads (full vanilla reload animation/timing, see [Crossbow] below) into a tranquilizer bolt, subject to cooldown/ammo/skill conditions; if one is currently loaded, pressing it reloads back to a normal bolt instead, with no condition and no cooldown. Either direction can be interrupted exactly like any other reload (see [Crossbow]), which cancels the swap. Ammo consumption and the shot's own flight are 100% vanilla once fired — nothing about ammo or trajectory is changed. On a non-boss hit against a creature that normally leaves a corpse behind (most creatures; corpse-less ones like Blobs/Skeletons are automatically excluded), the bolt itself deals zero physical/elemental damage, knockback, and stagger — after a short delay the target falls asleep: its AI stops, it becomes invisible, its own collider(s) are disabled, and a physics-driven ragdoll stand-in (the creature's own death-ragdoll prefab, falling over and rolling around naturally with no restrictions — falls back to a simpler static stand-in if that isn't available) appears in its place. The real creature itself doesn't fall over or react physically — it's just continuously repositioned (while colliders stay off) to stay underneath wherever the stand-in's torso currently is, so its name/health bar keeps following the stand-in as it rolls around instead of staying stuck at the spot where it first fell asleep. The stand-in is the only thing that can be hit while asleep — its own bone colliders, plus an extra invisible hit-sphere that continuously tracks its torso (sized from the creature's own collider, see HitSphereScale) so there's always a generously-sized, reliable target even if it ends up resting on an odd angle; it's a free-floating volume with no physical presence of its own (it can't nudge the stand-in, the ground, or anything else), it just follows along. Hits on either are forwarded to the real, hidden creature exactly the same way. While asleep, any other hit always gets a backstab/sneak damage bonus (using that weapon/ammo's own vanilla bonus value). Hitting an already-sleeping (or about-to-sleep) target with another tranquilizer bolt does not wake it or deal damage — instead it adds another full SleepDuration to the remaining time (capped at MaxSleepDuration), with the countdown shown as a number floating above the stand-in's torso — it follows the stand-in if it rolls away, including down slopes (shown as a screen-space number, local-only). The target wakes up when the timer runs out or, if enabled, the instant it takes real damage (bonus applied first) — a tranquilizer bolt's own hit never wakes it. When it wakes, the real creature reappears at the stand-in's current torso position (snapped onto the ground directly beneath it) rather than back where it originally fell asleep; if that spot has dropped more than WakeMaxDrop below where it first fell asleep, or no ground can be found there at all (rolled somewhere the game's own collision can't resolve), it instead wakes at the last position where solid ground was confirmed underneath it (checked a few times a second while asleep) — waking up while the stand-in is resting over water or lava is left as-is either way, no repositioning. If the target falls asleep mid-swing, its in-progress attack is safely cancelled so it can't land a hit on anything as it drops off; a sleeping creature's own attacks are also ignored by the hit-forwarding logic as an extra safety net. Death while asleep proceeds exactly like any other vanilla kill. Swapping back to a normal bolt always works immediately, even while the swap-to-tranquilizer cooldown is still running (the cooldown only gates the tranquilizer direction). With two crossbows, each keeps its own loaded-bolt-type correctly when you switch between them. Local-only visuals (stand-in, timer, crosshair indicator below) aren't seen by other players in multiplayer, but the sleep/backstab/ hit-forwarding/position logic itself is handled correctly on whichever client owns that creature. While a tranquilizer bolt is loaded, a small tinted icon shows near the crosshair.

Key Default Description
Enable true Toggle on/off
MinSkillLevel 10 Minimum Crossbows skill level required to swap to a tranquilizer bolt (0 = no requirement)
Cooldown 60 Cooldown (seconds), consumed when the swap to tranquilizer actually completes (not when the swap-back reload is merely interrupted)
SleepDelay 3 Seconds after a hit before the target falls asleep
SleepDuration 60 How long each sleep application lasts (seconds); also how much a repeat hit adds
MaxSleepDuration 600 Cap on how long the sleep timer can be stacked up to
HitSphereScale 1.0 Size multiplier for the invisible hit-sphere that tracks the stand-in's torso, relative to the real creature's own collider size
WakeMaxDrop 30 Maximum drop (meters) below the original fall-asleep height that still counts as "normal ground" when waking up — beyond this, wakes at the last confirmed-solid-ground position instead
WakeOnDamage true Wake up immediately on taking other damage while asleep (after applying the backstab bonus)
ShowTimer true Show the floating remaining-sleep-time number above the target (local-only)
RevertEffectColor pink Color of the activation effect played when swapping back to a normal bolt (same effect as other special attacks, tinted for this instance only)
IndicatorEnable true Show a small icon near the crosshair while a tranquilizer bolt is loaded
IndicatorColor red Color of that icon

[Crossbow] — reload improvements + skill XP (applies to crossbows only)

Reload-related improvements, each gated by its own Crossbows skill level, plus Crossbows skill XP tuning. KeepLoadedLevel keeps a loaded (unfired) normal bolt loaded through holstering, inventory swaps, and relogging — below the required level it's lost exactly like vanilla; a loaded tranquilizer bolt is always kept regardless of this level. MoveReloadLevel/DodgeReloadLevel stop running/jumping or dodge-rolling (Quickstep included) from interrupting an in-progress reload (normal or tranquilizer-swap alike) — vanilla normally cancels the reload outright the instant any of those happen. ReloadOverride replaces vanilla's own Crossbows-skill reload-time scaling with a straight line between ReloadTimeLv1 (skill 1) and ReloadTimeLv100 (skill 100) — e.g. 6s/2s means skill 50 reloads in about 4s; set ReloadOverride to false to leave vanilla's own scaling alone. SkillXpMultiplier multiplies all Crossbows skill XP gains (vanilla on-hit XP included) by this amount; the three Xp* entries below are additional XP sources (only while a crossbow is equipped), each using the same unit vanilla itself uses for a single hit's worth of XP (which defaults to 1.0) — these also get multiplied by SkillXpMultiplier.

Key Default Description
KeepLoadedLevel 20 Minimum Crossbows skill level to keep a loaded normal bolt through holster/relog (0 = no requirement) — a loaded tranquilizer bolt ignores this and is always kept
MoveReloadLevel 40 Minimum Crossbows skill level for running/jumping to not interrupt a reload in progress (0 = no requirement)
DodgeReloadLevel 60 Minimum Crossbows skill level for dodge-rolling to not interrupt a reload in progress (0 = no requirement)
ReloadOverride true If false, reload time is left at vanilla's own value (ignores the two settings below)
ReloadTimeLv1 8 Reload time (seconds) at Crossbows skill level 1
ReloadTimeLv100 2 Reload time (seconds) at Crossbows skill level 100 — levels in between scale smoothly between the two
SkillXpMultiplier 2 Multiplier applied to all Crossbows skill XP gains, vanilla on-hit XP included
XpReload 1 Extra Crossbows XP on completing any reload while a crossbow is equipped (before SkillXpMultiplier)
XpSwap 1 Extra Crossbows XP on completing a tranquilizer-bolt swap (either direction), on top of XpReload
XpOnDamaged 0 Extra Crossbows XP when you take damage while a crossbow is equipped (once per hit)

[HuntersVolley] — Bow-only special attack (multi-arrow volley)

A ready/cancel toggle, bound only to the dedicated SpecialAttackKey (set one in [General] to use this — it never binds to the vanilla secondary-attack key, and never triggers a secondary attack or interrupts an in-progress bow draw). Press the key while a bow is equipped to arm it (plays the activation effect and shows an icon near the crosshair); press it again to cancel (plays the same effect tinted with CancelEffectColor, no cooldown or ammo cost either way). Switching to a different bow keeps the armed state; switching to any non-bow weapon (or unequipping) cancels it silently, with no effect played. Arming requires Enable, your Bows skill level ≥ MinSkillLevel, the special attack not being on cooldown, and at least 2 arrows on hand — cancelling is always allowed regardless.

Once armed, your very next bow shot (whatever draw-based speed/damage that shot would normally have) fires a horizontal fan of arrows instead of one — the arrow count is read from your current Bows skill level against the Lv0..Lv4 / Count0..Count4 bracket pairs below, each additional arrow offset from the previous by SpreadAngle degrees. Every arrow in the volley (including the one vanilla itself fired) gets its damage multiplied by DamagePerArrow. If you don't have enough arrows for the full bracket count, it fires as many as you actually have; if that comes out to only 1 arrow, it's treated as a plain normal shot — no extra cooldown, no damage change. If a dev/cheat "no resource cost" setting is active and vanilla itself didn't actually spend an arrow for this shot, the full bracket count fires regardless of how many arrows you're carrying, and no arrows are spent for the extra shots either (detected by checking whether vanilla's own ammo consumption actually reduced your arrow count, not by reading the cheat flag itself — this keeps it compatible with any mod that disables ammo cost). Each arrow of the volley gets its own independent copy of the shot's owner/weapon/ammo/damage/blockable/dodgeable/status-effect data (re-run through vanilla's own Projectile.Setup, the same call vanilla itself uses) so embedding, hit tracking, and recovery (see [ArrowEmbed] below) all see every arrow, not just the first one. The armed state is cleared and Cooldown starts the instant the volley (or the single-arrow fallback) fires.

Key Default Description
Enable true Toggle on/off
MinSkillLevel 0 Minimum Bows skill level required to arm (0 = no requirement)
Cooldown 45 Cooldown (seconds), started the instant a volley actually fires
CancelEffectColor sky blue Color of the activation effect played when cancelling
IndicatorEnable true Show a small icon near the crosshair while armed (same position as the Tranquilizer Bolt icon — the two weapon types never overlap, so they're never shown at once)
SpreadAngle 1.6 Degrees between adjacent arrows in the fan
DamagePerArrow 0.7 Damage multiplier applied to every arrow in the volley
Lv0 / Count0 0 / 2 Bracket 1 — Bows skill level / arrow count
Lv1 / Count1 20 / 3 Bracket 2
Lv2 / Count2 40 / 4 Bracket 3
Lv3 / Count3 60 / 5 Bracket 4
Lv4 / Count4 80 / 6 Bracket 5

[ArrowEmbed] — arrow embedding + recovery + gravity (all bow shots, Hunter's Volley included)

Any arrow fired from a bow (normal shots and every arrow from a Hunter's Volley) that hits a monster sticks into it at the hit point — using the flying arrow's own visual and its exact in-flight orientation (not the ground-pickup item's model), so it embeds nose-first instead of backwards — attached to the nearest bone so it follows the monster's own animation/ movement; this is a local-only visual, not seen by other players. Up to EmbedMax arrows per monster are shown at once; past that, the oldest one is removed to make room for the newest. All embedded arrows on a monster are cleaned up when it dies or despawns. How many arrows you personally landed on a monster is always tracked regardless of whether Enable is on (it only controls the visual). When the monster dies, each landed arrow independently rolls a chance to drop that same arrow type at the death location — the chance scales linearly with your Bows skill level between RecoverChancePercentLv0 and RecoverChancePercentLv100 (both in percent, 0–100).

Arrows that miss and hit terrain, trees, or buildings instead (not water) also get a chance to turn into a pickup-able item right where they landed instead of just staying stuck as vanilla's own embedded-arrow visual — this scales the same way, between MissRecoverChancePercentLv0 and MissRecoverChancePercentLv100. Only applies to arrows you fired; there's no "pull arrows back out while they're still stuck" interaction either way.

Separately, arrow gravity itself can be reduced at higher Bows skill (flatter, longer-ranged shots) — GravityOverride multiplies vanilla's own per-arrow gravity value by a factor that scales between GravityLv1 (skill level 1) and GravityLv100 (skill level 100). Applies to every bow arrow (normal shots and all Hunter's Volley arrows alike); crossbow bolts are unaffected.

Key Default Description
Enable true Show monsters' arrows stuck in them, locally (hit tracking for recovery always runs regardless)
EmbedDepth 0.12 How deep (meters) the arrow visual sinks in — deeper than vanilla's own tree-embed depth (roughly 0.05–0.08)
EmbedMax 100 Max simultaneous embedded arrows shown per monster — oldest removed first past this
RecoverChancePercentLv0 0 Per-arrow recovery chance (%) on monster death, at Bows skill level 0
RecoverChancePercentLv100 100 Per-arrow recovery chance (%) on monster death, at Bows skill level 100 — levels in between interpolate linearly
MissRecoverChancePercentLv0 0 Recovery chance (%) for an arrow that missed and hit terrain/trees/buildings, at Bows skill level 0
MissRecoverChancePercentLv100 100 Same, at Bows skill level 100 — levels in between interpolate linearly
GravityOverride true Toggle the Bows-skill-based gravity multiplier on/off
GravityLv1 1.0 Gravity multiplier at Bows skill level 1
GravityLv100 0.5 Gravity multiplier at Bows skill level 100 — levels in between interpolate linearly

Older builds stored recovery chance as a 0–1 fraction under RecoverChanceLv0/RecoverChanceLv100 — those keys are no longer read: if your config file still has them, they're harmless leftovers, and the new RecoverChancePercentLv0/RecoverChancePercentLv100 keys (percent, 0–100) start over at their defaults.

[DoomFist] — Unarmed (bare fists) and Fist/Claw weapons

Triggered the same way as any other special attack (dedicated special-attack key, or the vanilla secondary-attack key if no dedicated key is set) while unarmed or wielding a fist/claw-type weapon. The swing's own secondary-attack animation is replaced with the Knife's secondary-attack motion (the Knife weapon itself, and its own special attack Smoke Vanish, are completely unaffected by this — it only borrows the animation trigger), and that swing's melee hit detection is turned off entirely. Cooldown is spent the instant the swing starts (win or miss, matching Spiral Thrust's timing rather than Hatchet Hook's) — scales from CooldownLv1 down to CooldownLv100 across Unarmed skill level 1–100 (same two-point geometric interpolation as the Crossbow reload-time scaling). Stamina cost is untouched — whatever the equipped weapon's (or bare fists') own secondary attack normally costs.

The instant the swing's hit-trigger point is reached, a single area attack fires at a point ImpactDistance in front of you (snapped to ground height) — everyone within Radius gets hit once, using the same target rules as a vanilla melee swing (no self-hit, no hitting tamed/friendly creatures or other players unless PvP is enabled, enemies and aggravated tames always get hit). Damage is the equipped weapon's own damage (quality/skill applied — bare fists use the vanilla Fists damage) × DamageMult; knockback is that weapon's own push force × KnockbackMult, directed outward from the impact point — bosses take the damage but no knockback. Unarmed skill XP is granted once per swing if at least one target was hit, same as a normal vanilla melee swing. The impact plays Aftershock's own shockwave effect/sound (resized to match Radius) once; Aftershock itself is untouched.

Key Default Description
Enable true Toggle on/off
MinSkillLevel 0 Minimum Unarmed skill level required (0 = no requirement)
CooldownLv1 10 Cooldown (seconds) at Unarmed skill level 1
CooldownLv100 4 Cooldown (seconds) at Unarmed skill level 100 — levels in between scale geometrically
ImpactDistance 2 How far in front of you the impact point is (meters)
Radius 3 Area attack radius (meters) — the impact effect's visual size scales proportionally with this
DamageMult 2.7 Damage multiplier applied to the weapon's (or bare fists') own damage
KnockbackMult 4 Knockback multiplier applied to the weapon's own push force (5–10 recommended)
AnimationSpeed 1.0 Fixed Animator playback speed used for the swing's motion (the Knife's knife_secondary clip), overriding whatever speed the equipped weapon would otherwise play it at (1.0 = the Knife's own secondary-attack speed) — restored to normal the instant the swing ends

[MagicBolt] — shared weapon list for Twin Cast and Repulse

A single config shared by both [TwinCast] and [Repulse] below — identifies which staves they apply to, by prefab name (comma-separated, no (Clone) suffix), same convention as every other weapon-list config in this mod (e.g. [ConcussionBlow] LargeMonsters). Defaults to the 4 vanilla single-shot staves. Add prefab names here to extend either feature to modded staves.

Key Default Description
Weapons SP_StaffFireball,StaffFireball,StaffClusterbomb,StaffOrbofAhri,StaffThunderBlood Prefab names (comma-separated) Twin Cast and Repulse apply to

[TwinCast] — passive double-cast for [MagicBolt] staves

A passive on your normal primary cast with a [MagicBolt] staff: once your skill in that staff's magic type (Elemental or Blood) reaches MinLevel, every primary cast has a chance to fire a second, identical projectile a short moment (Delay) after the first — aimed wherever you're looking at that later instant, not where you were aiming when the first shot left. The chance scales linearly from ChanceAtMin% at MinLevel up to ChanceAt100% (default 80%) at skill level 100 (levels above 100 stay at ChanceAt100%). The extra shot deals identical damage/effects to the first (no penalty), including the full StaffClusterbomb splinter-shrapnel behavior, and by default costs no extra Eitr — CostsEitr can make it consume the staff's own casting cost again (skipped if you don't have enough).

Key Default Description
Enable true Toggle on/off
MinLevel 50 Minimum skill level (0–100) for the chance to be above 0% at all
ChanceAtMin 5 Chance (%) to fire the extra shot at exactly MinLevel
ChanceAt100 80 Chance (%) to fire the extra shot at skill level 100 (and above) — levels in between interpolate linearly from ChanceAtMin
Delay 0.15 Seconds between the first shot and the extra shot
CostsEitr false If true, the extra shot also consumes the staff's own primary-cast Eitr cost (skipped entirely if you don't have enough)

[Repulse] — special attack for [MagicBolt] staves (ground-slam knockback + damage)

Pressing the special-attack key with a [MagicBolt] staff equipped — if your skill in that staff's magic type is at least MinLevel, you have enough Eitr (the staff's own primary-cast cost × EitrMult), and this isn't on cooldown — slams the staff into the ground (borrowing the Staff of Protection's own ground-slam motion; none of these 4 staves have a real secondary attack of their own, so nothing else about them is touched) and hits everything within Radius meters with knockback and (if DamageMult is above 0) damage. Cooldown and Eitr are both spent the instant it starts, whether or not anything's actually in range. If any gate fails (cooldown, level, Eitr), nothing happens at all — no partial cost, no motion. Other players and tamed animals are never hit at all. Bosses (same check as [ConcussionBlow] ExtraBosses) take damage but are never knocked back.

While the ground-slam motion is playing, you face whichever horizontal direction your camera was aimed the instant you triggered it, and keep facing it until the motion finishes — mouse/stick turning is ignored for that window. Movement is no longer blocked outright: instead both your turn rate and your move speed are slowed to the same rate the vanilla Staff of Protection's own ground-slam swing uses (read live from that staff's attack data; MoveSpeedFactor/RotationSpeedFactor let you override either one directly instead of using that reference value). The lock releases the instant the motion ends normally, if you die/stagger/dodge-roll/teleport, or after LockMaxDuration seconds (scaled by your current animation playback speed, so a slowed attack speed gets a proportionally longer grace period instead of being cut off early) as a safety net if nothing else releases it first.

The actual knockback/damage hit lands on the real animation hit-frame of the ground-slam clip (the same vanilla OnAttackTrigger/Hit animation event every other attack in the game relies on) rather than a guessed fixed delay — so it stays correctly timed even if something else changes your attack/animation speed. If that event never arrives before LockMaxDuration runs out (animation interrupted, etc.), the hit is cancelled outright — no refund of the cooldown/Eitr already spent. Damage uses the equipped staff's own weapon damage (element split preserved) × DamageMult, and StaggerMult scales stagger on top of that. Knockback strength scales in 3 steps by skill level (LevelTier1/2/3 → KnockbackLv30/50/70). At the moment of the hit, the struck staff's own projectile hit-effect (or a shared fallback effect if it doesn't have one) is spawned RingPoints times evenly around you and animated rippling outward from your feet to the full Radius over RippleDuration seconds.

Key Default Description
Enable true Toggle on/off
MinLevel 30 Minimum skill level (0–100) to use at all
Cooldown 10 Cooldown (seconds), spent the instant the attack starts
EitrMult 1.0 Eitr cost multiplier — the staff's own primary-cast Eitr cost × this value
Radius 5 Hit radius (meters), also the final radius of the ring effect
RingPoints 8 Number of ring-effect instances spread evenly around the circle
RippleDuration 0.35 Seconds for the ring effect to travel from your feet out to Radius
LevelTier1 30 Skill level at which KnockbackLv30 applies
LevelTier2 50 Skill level at which KnockbackLv50 applies
LevelTier3 70 Skill level at which KnockbackLv70 applies
KnockbackLv30 300 Knockback strength (hit.m_pushForce) at LevelTier1
KnockbackLv50 500 Knockback strength at LevelTier2
KnockbackLv70 700 Knockback strength at LevelTier3
LockMaxDuration 3 Safety-net seconds (at normal animation speed) — if the motion-end detection/hit animation event never arrives within this time, the facing lock is force-released and the hit is cancelled. Automatically scales up if your animation is currently playing slower than normal
DamageMult 1.0 Equipped staff's weapon damage (element split preserved) × this multiplier, applied in the same hit as the knockback. 0 = knockback only, no damage
StaggerMult 3.0 Multiplier applied to the dealt damage to get stagger strength
MoveSpeedFactor -1 Movement-speed multiplier while the motion plays. -1 (default) reads the Staff of Protection's own ground-slam move-speed factor at runtime and uses that; 0 or above overrides it directly (0 = fully rooted, 1 = no slow at all)
RotationSpeedFactor -1 Turn-speed multiplier while the motion plays. -1 (default) reads the Staff of Protection's own ground-slam turn-speed factor at runtime and uses that; 0 or above overrides it directly (0 = facing fully locked, 1 = no turn-lock at all)

[Railgun] — passive for Dundr (StaffLightning, the reload-type lightning staff)

Dundr fires by loading once and then unleashing all of its shots (vanilla: 12) in one spread the instant you pull the trigger — it needs reloading again immediately after, win or miss. This passive touches three things about that cycle:

Keep loaded — at KeepLoadedLevel skill or higher, switching away from Dundr (to another weapon, or holstering entirely) no longer makes you reload it again the next time you draw it — the exact item you had loaded stays loaded. Below that level, it behaves exactly like vanilla (reload lost on switch). This never affects other reload weapons like crossbows — it's gated strictly to the Weapons list.

More bolts — the total shot count scales up to MaxMult× (default 2×) the vanilla count (rounded to the nearest whole bolt overall, not per-shot — e.g. at a 2.5× multiplier a normal 12-bolt volley becomes 30 bolts, not 24), scaling up by 1× every LevelStep levels, at no extra Eitr cost. Each extra bolt deals identical damage/effects to a normal one.

Tighter spread — every bolt in the shot (the original vanilla ones and the extra ones) narrows toward a single point as your skill goes up: the spread angle scales from SpreadAtMin× Dundr's own base spread at level 0 down to SpreadAt100× at level 100 (linear). If Dundr's own base spread is 0, BaseSpread degrees is used as the starting point instead. At level 0, SpreadAtMin defaults to 1.0, so the spread amount is identical to vanilla's own — it's only from there upward that the whole volley starts converging into more of a pinpoint railgun blast.

Key Default Description
Enable true Toggle on/off
Weapons StaffLightning Prefab names (comma-separated) this and [StormField] below apply to
KeepLoadedLevel 50 Minimum skill level (0–100) to keep the exact loaded item loaded across weapon swaps/holstering
LevelStep 25 Every this many skill levels, the bolt-count multiplier goes up by 1×
MaxMult 2 Bolt-count multiplier cap (reached at skill level 100)
SpreadAtMin 1.0 Extra-bolt spread multiplier at skill level 0 (1.0 = same as Dundr's own base spread)
SpreadAt100 0.05 Extra-bolt spread multiplier at skill level 100 (tight cluster)
BaseSpread 3 Fallback base spread (degrees) used when Dundr's own spread value is 0

[StormField] — special attack for Dundr (a lingering storm zone, pulsing damage)

Usable only while Dundr is loaded (otherwise nothing happens, same as a normal shot would refuse to fire) and your Elemental Magic skill is at least MinLevel. Fires your actual volley exactly as [Railgun] would produce it (extra bolts and tightened spread included) — but every bolt in that volley deals zero damage, zero knockback, and zero stagger no matter what it hits, since its only job is to find where to drop a storm. The moment any one of those bolts hits anything — an enemy, the ground, a building, doesn't matter — a storm zone appears at that spot (snapped to that enemy's own feet if it hit one) and the cooldown is spent. The zone sits there for Duration seconds, pulsing with a lightning strike every PulseInterval seconds (the first strike lands immediately on creation), each one dealing DamageMult× Dundr's own per-bolt damage (same element split) and StaggerMult× stagger (0 by default — no stagger) with no knockback to every valid enemy within Radius meters of the zone's center. Players and tamed animals are never targeted; bosses can be hit like anything else. Adrenaline for a given enemy is only granted once per zone, not on every single pulse that hits it. Only one bolt per volley ever triggers a zone — the rest of that volley hitting things afterward (or a second volley while the first zone is still up) won't spawn an overlapping zone from the same cast. The special-attack key is ignored while a normal attack animation is still playing, and does nothing at all (no cooldown spent) if the staff isn't loaded, you're below MinLevel, or it's on cooldown — which only starts counting down once the shot actually fires.

Each pulse's visual is Dundr's own vanilla hit-spark effect, replayed once at the zone's center and once more (at half size by default, VfxRingScale) at VfxRingPoints evenly-spaced points around the ring at Radius — so the actual damage radius is visible, not just implied. The size of all of these is worked out automatically from the effect's own particle settings (shape radius plus how far its particles travel before dying) scaled up or down to match Radius, with VfxScale as an extra manual multiplier on top if the automatic sizing isn't quite right for your taste. While measuring and spawning that effect, any of its particle systems that look like smoke (by name — smoke, fog, cloud, dust — or by using one of vanilla's own smoke/cloud materials) are skipped/disabled so the pulse reads as a clean lightning strike instead of a hazy puff; this also makes the automatic size measurement more accurate, since a smoke puff's drifting radius was throwing it off. Turn off VfxRemoveSmoke to get the effect back exactly as vanilla plays it. Since nothing is pooled, each pulse briefly creates 1 + VfxRingPoints short-lived effect instances (9 by default) — negligible for one zone, but worth knowing if you're the type to chain-cast several at once.

Each of those effect instances is also snapped to the real terrain height at its own spot (the same downward raycast the ground ring below uses) and laid flat against the ground instead of standing upright — the original effect is a vertical spark burst meant for hitting an upright target, so without this it visually reads as a donut floating in the air above the ring on sloped terrain, rather than lying on the ground with it. Turn off VfxFlatten to get the 44차 behavior (upright, single shared height) back.

On top of the per-pulse hit-spark ring, the zone also shows a ground-following ring outline at exactly Radius for its whole Duration (appears the instant the zone spawns, disappears the instant it ends) — drawn with two concentric line loops (a thin bright core plus a soft wider glow) that re-samples the terrain height under it each frame so it hugs slopes instead of floating or clipping into the ground. Turn off ShowRing to hide it; RingColor controls its color/opacity (default is a reddish-purple to read as "lightning," independent from the actual lightning-colored hit-spark effects).

Key Default Description
Enable true Toggle on/off
MinLevel 30 Minimum skill level (0–100) to use at all
Cooldown 60 Cooldown (seconds), starts counting from the moment the shot actually fires
Radius 5 Zone radius (meters) — every pulse hits every valid enemy within this of the zone's center
Duration 7 How long the zone lasts (seconds)
PulseInterval 0.5 Seconds between pulses (the first one fires immediately on creation)
DamageMult 3.0 Each pulse's damage multiplier, relative to one normal Dundr bolt
StaggerMult 0.3 Each pulse's stagger multiplier — 0 means no stagger at all
VfxScale 8.0 Extra manual multiplier on top of the automatically-computed size match
VfxRingPoints 30 How many ring effects play around the zone's edge each pulse (on top of the one at center) — 0 for center-only
VfxRingScale 4.0 Size of each ring effect, relative to the center one
VfxRemoveSmoke true Disable smoke/fog/cloud/dust-classified particles on the pulse's hit-spark effect so it reads as a clean strike instead of a hazy puff
ShowRing true Show the ground-following ring outline at Radius for the zone's whole duration
RingColor RGBA(1.0, 0.0, 0.42, 1.0) Color/opacity of the ground ring outline
VfxFlatten true Lay each pulse effect flat against the terrain instead of standing it upright (fixes the "floating donut" look on sloped ground)

[GlacialBreath] — special attack for the Staff of Frost (a channeled cold breath)

Usable only on the SpecialAttackKey (never the vanilla secondary-attack key) while your Elemental Magic skill is at least MinLevel, you have at least 1 Eitr, and you're not already mid-swing. On activation it drains all of your current Eitr (even a single point is enough to fire), plays vanilla's own Adrenaline VFX once, and holds a firing stance (Motion) for as long as you hold the key down (up to Duration seconds) — it's fired once and then only re-triggered if the animation actually finishes early (checked every frame across every Animator layer, not just reapplied on a fixed timer), instead of restarting the staff's whole cast from scratch over and over the way an early version of this did (which looked like repeatedly firing instead of holding one pose). Left at its default (empty), Motion is read directly off the Staff of Frost's own attack data at the moment you activate it, so it's always the exact animation trigger vanilla itself would use for a real cast of that weapon — set it to a specific trigger name (check with MotionInspector's F10 preview) to override; if your config file already has an old value from a previous version in it, it's automatically treated as unset and reset back to auto-detect. The staff's own ice-shard shot never actually fires while this is active. Instead, Moder's own cold-breath effect (vfx_dragon_coldbreath, used directly rather than hunted down through weapon attack data) is created once at activation a short distance in front of your weapon hand (so it doesn't render on top of/around your own character) and kept alive there for the whole breath, aimed at whichever direction (including up/down angle) you were looking the instant you activated it — its own start/trail sounds play alongside it. Both the camera and your character's facing (including turning via movement keys) are locked for the whole duration — nothing you do with the mouse or WASD changes where you're looking until breathing ends — so what you see always matches the breath's actual (fixed) direction; this is done by freezing vanilla's own mouse-look and movement-direction input, not by fighting the camera's rotation after the fact, so it doesn't reintroduce the shake/fly bugs the previous Staff of Frost specials were scrapped over. You can't move, jump, or dodge-roll while breathing; a small constant push-back away from your aim direction (Recoil, plain physics velocity — not a position override) is the only motion applied, and walls/terrain stop it exactly like any other vanilla collision. Releasing the special-attack key ends breathing immediately — Duration is only a hard cap for however long you keep it held; dying, teleporting, mounting something, or swapping away from the staff also end it immediately.

Every TickInterval seconds, everything within a Range-long, Width-wide straight corridor in front of you (in your locked aim direction) is hit simultaneously as a direct frost hit — targets behind a wall or other obstruction (checked by a line-of-sight raycast from you to each candidate) are skipped even if they're geometrically inside that corridor. Each tick's damage is DamagePerEitr × however much Eitr you actually had when you activated it (so a bigger Eitr pool means a harder breath), dealt as pure Frost damage — vanilla's own frost status effect (slow + eventual freeze) applies automatically from that, same as any other frost hit in the game. Stagger is StaggerMult× (0 by default, same reason as Storm Field/other multi-tick attacks — it adds up fast over many ticks). Players and tamed animals are never targeted; bosses take damage normally but no knockback. Adrenaline for a given enemy is only granted once per activation, not on every tick that hits it.

The breath's visual size is a flat, evenly-applied multiplier (VfxScale) rather than something auto-measured — an earlier version tried to measure the source effect's own particle settings and scale its length/width independently, but a handful of its sub-effects (sparks, debris) reported wildly unrealistic travel distances that threw the whole calculation off, making the breath balloon out into a sphere around your character instead of a beam. It's created once and kept alive (forced to loop even if its particles are naturally a one-shot burst, and forced onto Unity's "Hierarchy" particle scaling mode so your scale setting reliably applies) rather than being recreated every tick, which is what an even earlier version did and looked like it kept restarting from nothing. VfxRotationOffsetX/Y/Z let you correct the aim if the effect's own "forward" axis doesn't turn out to match the direction it's aimed at by default.

While breathing, a pair of icy wings is attached to your back — purely cosmetic, no gameplay effect either way. They're built once (and cached) from a Drake's (Hatchling's) own wing geometry — if its wings are their own separate mesh, that's used directly; if they're fused into the same mesh as the body, the wing triangles are extracted on the fly (keyed off vertex bone weights, a configurable threshold), split into independent left/right pieces when the source bone names make that possible. Since a resting Drake normally holds its wings folded, the extraction first searches that creature's own animation clips for whichever moment has its wing bones spread the farthest apart, and poses it there before baking, rather than capturing a folded, barely-there sliver of membrane; the full clip list and whichever moment won gets logged for reference, and if no clip spreads the wings any further than their resting pose, it falls back to manually rotating the first wing bone in the chain outward instead. In either case the extracted geometry is re-centered on its own so it attaches cleanly at the intended spot regardless of where it originally sat relative to the source creature's root, and the attach point (WingOffsetX/Y/Z, direction relative to your own body — right/up/forward, not the bone's own orientation, and the angle of the pair likewise follows your body's orientation rather than that bone's) is placed correctly regardless of that bone's scale, which turned out to be the real culprit behind every earlier version's wing placement being wrong by a wildly inconsistent amount (that spine bone on the player rig scales everything parented to it by about 95×, which a naive "just set the local position/size you want" approach doesn't account for). Whatever size that extracted geometry ends up at is automatically rescaled (measured against its actual real-world size once attached, not just the raw mesh data — a mismatch between those two was exactly what made an earlier version balloon to hundreds of meters across) so the wings' true span matches WingSpan, with WingScale as an extra multiplier on top of that. By default (WingMaterial = Simple) they're rendered as a solid icy color with a guaranteed-to-work built-in shader, at a minimum opacity (WingOpacity) regardless of how transparent the Drake's own wing-membrane texture might be — thin membrane textures tend to be authored with a fairly transparent alpha channel, which combined with any tint of our own multiplies down to "barely visible," so this mode skips the texture entirely rather than trying to composite over it. WingMaterial = Original uses the Drake's actual material as-is instead (more authentic when it works, but prone to ending up invisible, since some creature materials rely on rendering setup a manually-placed mesh doesn't get) — Simple trades a bit of visual fidelity for reliability by default. An optional emissive boost (WingGlow) is layered on top where the active material's shader supports it; WingRotationX/Y/Z let you correct the pair's angle if the baked rest pose doesn't already read as "spread," and WingSpreadAngle specifically lifts both wings upward and outward by a set amount, symmetrically (given as the right wing's angle — the left wing's WingRotationY/Z and WingSpreadAngle get mirrored automatically either way). Turning on WingDebugCube adds a small, bright magenta cube at the same attach point as a sanity check — if you see the cube but not the wings, it's a material/rendering problem; if you see neither, it's a position problem. Currently off by default (still in development) — the wing angle/shape don't yet look right in-game, so ShowWings defaults to false while this gets revisited; all the wing code and settings below are kept in place and ShowWings can be turned back on at any time to pick up where it left off. To make all of this easier to dial in, turning on WingPreview keeps the wings permanently visible (using whatever pose/rotation/size settings are currently in the config) for as long as you're holding the Staff of Frost and not actually breathing, and every wing-shape setting listed above updates live the moment you change it in the in-game config menu — no need to reactivate the breath or restage anything to see a tweak take effect. If nothing usable can be extracted from the Drake, it falls back to an older wing mesh (from a creature called "Fader"), and if even that fails, a pair of simple ice-particle effects takes their place at the same spot instead (forced to loop for the whole duration instead of playing their normal short one-shot flash, so they don't go dark midway through a longer breath) — so breathing never silently has "no wings at all" with ShowWings left on. Either version is removed the instant breathing (or the preview) ends.

Breathing ends (and Cooldown starts counting, every time, whether you released the key, it ran out the clock, or it got force-ended by death/teleport/weapon swap) at that point.

Key Default Description
Enable true Toggle on/off
Weapons StaffIceShards Prefab names (comma-separated) this applies to
MinLevel 30 Minimum Elemental Magic skill level (0–100) to use at all
Cooldown 180 Cooldown (seconds), starts counting the instant breathing ends (key released, time-out, or forced end all count)
TickInterval 0.2 Seconds between damage ticks while breathing
Range 15 Corridor length (meters) in front of you that each tick hits
Width 28 Corridor width (meters) each tick hits
DamagePerEitr 0.2 Each tick's damage = this × the Eitr amount you had when you activated it
StaggerMult 0 Each tick's stagger multiplier — 0 (default) means no stagger at all
Duration 5 Hard cap on breathing time (seconds) even if you keep the key held the whole time
Motion (empty) Animator trigger name held while breathing (re-fired only once the previous play-through actually ends, not on a fixed timer) — a pure SetTrigger call, never a full attack restart. Empty (default) reads the real trigger off the Staff of Frost's own attack data at activation time; old values from a previous version are automatically treated the same as empty
VfxSource vfx_dragon_coldbreath Prefab used directly for the breath's visual
VfxScale 1.0 Flat, evenly-applied size multiplier for the breath visual (auto-measuring this went badly — see above)
VfxRotationOffsetX / VfxRotationOffsetY / VfxRotationOffsetZ 0 / 0 / 0 Extra rotation (degrees) layered on top of the aim direction, in case the effect's own "forward" axis isn't what's assumed
VfxForwardOffset 0.4 Distance (meters) the breath visual is pushed forward from your weapon hand, so it doesn't render around/inside your character
Recoil 1.0 Backward push speed (m/s) while breathing, opposite your locked aim direction
ShowWings false Show the icy back-wings (or the ice-particle fallback) while breathing — off by default, still in development (angle/shape not finalized); turn on to resume testing
WingSpan 2.0 Total wingspan (meters) the baked wing mesh is automatically rescaled to, regardless of its source size
WingScale 1.0 Extra multiplier on top of the automatic WingSpan fit
WingRotationX / WingRotationY / WingRotationZ 0 / 0 / 0 Angle correction (degrees) for the wing pair's rest pose, given as the right wing's angle (left is mirrored automatically)
WingSpreadAngle 20 Extra lift angle (degrees) for both wings, applied symmetrically on top of WingRotationZ
WingGlow 0.3 Emissive boost layered on the active wing material — 0 leaves it untouched; silently ignored if the shader doesn't support emission
WingOpacity 0.85 Minimum opacity for the wing membrane — with WingMaterial = Simple this is the only thing controlling how solid the wings look (no texture alpha involved at all)
WingMaterial Simple Simple (default) renders the wings as a solid icy color with a guaranteed-to-work built-in shader (no texture); Original uses the Drake's actual material and texture as-is (more authentic, but invisible if its shader needs rendering setup a standalone mesh doesn't get, and its membrane texture's own transparency isn't corrected for)
WingDebugCube false Show a small bright magenta cube at the wing attach point — a sanity check for telling a position problem apart from a material/rendering one
WingPreview false Keep the wings permanently visible (for tuning the settings above) while holding the Staff of Frost and not actually breathing; every wing-shape setting updates live while this is on
WingOffsetX / WingOffsetY / WingOffsetZ 0 / 0 / -0.1 Position offset (meters) for the back-wings relative to their attach bone, given in your own body's directions (right/up/forward)

[NatureMend] — special attack for the Staff of the Wild (heal yourself + nearby allies over time)

Activates on the special-attack key while the Staff of the Wild is equipped, provided you're at least MinLevel Elemental Magic and have more than 0 current Eitr (on cooldown / under-level / 0 Eitr / mid-swing / already healing all do nothing at all, same silent-no-op rule as every other special attack here).

On activation it consumes all of your current Eitr (E) and borrows the exact same motion as [Repulse] above (the Staff of Protection's ground-slam trigger, same slowed movement/turning while it plays, your own root projectile never fires). At the same animation moment Repulse uses for its knockback/damage (the staff actually touching the ground), the heal target list is locked in for good: everyone currently within Radius of you — yourself (always), tamed animals, friendly summons (anything not classified as hostile by the game's normal friend/foe check), and other players if HealPlayers is on. Hostile monsters and bosses are never included. Nobody added to that list is ever removed just for wandering outside Radius later — they keep being healed for the whole duration; a target is only dropped if it dies or is destroyed. Nobody who shows up after the lock moment is ever added. If the motion gets interrupted (staggered, dodging, teleporting) or its animation event never fires at all, a timeout (MotionTimeout, scaled by your current animation speed) starts the heal anyway so the Eitr you already spent is never wasted — death is the only exception, since there'd be nothing left to heal.

Once healing starts you are completely free — move, fight, swap weapons, anything; it's a plain background timer, not a locked stance like Glacial Breath's channel. The total heal per target (E × HealMult) is split evenly across Ticks ticks, one every TickInterval seconds, using the real vanilla heal (so you see the normal green floating numbers, capped at max health automatically). If you yourself die or teleport, the whole effect ends immediately for every target, not just you. Cooldown starts the moment healing ends (naturally finishing, or being cut short by your own death/teleport) and shows on the shared cooldown HUD like every other special attack here — while healing is still in progress, that same slot shows the time left instead.

A green glow effect plays once where you're standing when healing starts (and, by default, a smaller version on each healed target every tick too), sized roughly to match Radius. Both default to the Dvergr mage's own ally-heal effect (DvergerStaffHeal_aoe) — its actual healing logic is stripped out the instant it's created (so it never heals/hits anything on its own; this mod's own ticks are the only thing that ever actually heals anyone), leaving just the particles/light/sound. If you name a different prefab in Vfx/TickVfx and it turns out to be a monster, item, or building prefab instead of a harmless effect, it's rejected automatically (logged once) and healing just continues with no visual instead.

Key Default Description
Enable true Toggle on/off
Weapons StaffGreenRoots Prefab names (comma-separated) this applies to
MinLevel 30 Minimum Elemental Magic skill level (0–100) to use at all
Radius 5 How far from you allies must be, at the exact instant healing starts, to be included — never re-checked afterward
HealMult 1.0 Total heal per target = the Eitr you had when you activated it (E) × this
Ticks 10 Number of heal ticks the total is split evenly across — the first tick fires the instant healing starts
TickInterval 0.8 Seconds between heal ticks
Cooldown 120 Cooldown (seconds), starts counting the instant healing ends (naturally finishing or being cut short)
HealPlayers true Whether other nearby players count as valid heal targets too (you yourself are always included regardless of this)
Vfx DvergerStaffHeal_aoe Prefab name for the one-shot green glow effect (the Dvergr mage's own ally-heal visual, with its actual healing effect stripped out — see above)
VfxScale 1.0 Extra size multiplier for that effect, on top of automatic scaling to roughly match Radius
TickVfx DvergerStaffHeal_aoe Prefab name for a small extra sparkle played on each healed target every tick — leave empty for no tick sparkle (main Vfx only)
MotionTimeout 3 If the ground-slam's hit animation event never arrives (motion interrupted or stuck), start healing anyway after this many seconds (scaled by your current animation speed) rather than losing the Eitr you already spent

[ThrowTuning] — throw speed/gravity scaling by skill level (spears and axes)

Scales a thrown weapon's initial projectile speed and gravity for a single throw, based on the relevant skill level — the underlying projectile prefab's own values are never modified, only the one projectile actually thrown. Spear throws (the vanilla secondary attack, and by extension [SpearPin] — it reacts to that same throw rather than firing its own, so one setting covers both) scale with your Spears skill level; axe throws ([HatchetHook] and [ImpactBurst]) scale with your Axes skill level. Each scales independently between its own ...Lv1 (skill level 1) and ...Lv100 (skill level 100) value, interpolating linearly in between. Bows, crossbows, staves, and monster projectiles are all unaffected — this only touches spear and axe throws.

Key Default Description
Enable true Toggle on/off
SpearSpeedLv1 1.0 Spear throw projectile speed multiplier at Spears skill level 1
SpearSpeedLv100 1.5 Spear throw projectile speed multiplier at Spears skill level 100 — levels in between interpolate linearly
SpearGravityLv1 1.0 Spear throw projectile gravity multiplier at Spears skill level 1
SpearGravityLv100 0.5 Spear throw projectile gravity multiplier at Spears skill level 100 — levels in between interpolate linearly
AxeSpeedLv1 1.0 Axe throw ([HatchetHook]/[ImpactBurst]) projectile speed multiplier at Axes skill level 1
AxeSpeedLv100 1.5 Axe throw projectile speed multiplier at Axes skill level 100 — levels in between interpolate linearly
AxeGravityLv1 1.0 Axe throw projectile gravity multiplier at Axes skill level 1
AxeGravityLv100 0.5 Axe throw projectile gravity multiplier at Axes skill level 100 — levels in between interpolate linearly

[MotionInspector] — debug tool for picking animation triggers (off by default)

A development-only tool for figuring out the exact animation trigger name to use when wiring up a new special attack — not a gameplay feature, and disabled by default (Enable=false means every hook it adds is a no-op, with no effect on or overhead for any existing special). While on, a toggle key shows a small text readout in the top-left corner (pure debug text, not styled to match vanilla) listing, for your own character: every Animator layer's current clip and progress (plus whichever clip it's blending into, if a transition is in progress), the last 10 animation triggers fired with how long ago, your currently equipped weapon, and — if you're mid-swing — that swing's m_attackAnimation value and whether it's the primary or secondary attack. A separate key dumps your entire Animator's parameter list (triggers listed separately) and every clip in its controller, plus every weapon in the game's primary/secondary m_attackAnimation values, to a text file for reference. A third key fires an arbitrary trigger by name on your own character to preview it — pure animation, no damage, no stamina cost, same as an existing SetTrigger call elsewhere in this mod; an unrecognized name just shows an on-screen message instead of doing anything.

Key Default Description
Enable false Master switch — everything below does nothing while this is off
ToggleKey F8 Show/hide the on-screen readout
ShowTarget false Also show the monster you're aiming at (current clip + its last 10 triggers) below your own info
FontSize 16 On-screen readout font size
DumpKey F9 Write your Animator's parameters/triggers/clips and every weapon's attack animation names to BepInEx/config/SpecialAttack_motions.txt
PreviewTrigger (empty) Trigger name PreviewKey fires — look it up in the DumpKey output file
PreviewKey F10 Fire PreviewTrigger on yourself (animation only — no attack, no stamina cost)

Requirements

No other mod is required. See "Optional integrations" above for what changes if Warfare is also installed.


Credits

  • Some special attacks in this mod were inspired by, or adapted from, sighsorry's SecondaryAttacks, used and modified with the author's permission. Many thanks to sighsorry.
  • Quickstep is ported from SecondaryAttacks (QuickstepSystem.cs, originally licensed under GPL-3.0). Core dash physics/stamina/animation-transition/invincibility logic follows the original; see the attribution comment at the top of Quickstep.cs for the changes made when porting it into this project.
  • Hunter's Volley's fixed-fan multi-arrow spread pattern is based on the barrage-firing approach in SecondaryAttacks (SecondaryAttackManager.ProjectileRuntime.cs, FireBarrage/SpawnBarrageShot), used with the author's permission; see the attribution comment at the top of HuntersVolley.cs.
  • Dash is an original feature designed and implemented for this mod.

Changelog

1.2.4

New special attacks / passives:

  • The 4 vanilla single-shot staves: Twin Cast + Repulse — Twin Cast is a passive chance (scaling with skill) to fire a second projectile on your normal cast; Repulse is a dedicated ground-slam special attack dealing knockback (skill-scaled, bosses excluded) and damage; see [MagicBolt], [TwinCast], [Repulse]
  • Dundr (StaffLightning): Railgun + Storm Field — Railgun is a passive letting you keep it loaded across weapon swaps, fire extra bolts, and tighten your spread, all scaling with skill; Storm Field is a dedicated special attack that fires a harmless volley to mark a spot, then pulses real lightning damage there on a timer (with a ground ring showing the true radius); see [Railgun] and [StormField]
  • Staff of Frost: Glacial Breath — hold the special-attack key to channel Moder's own cold-breath effect forward in a locked direction, multi-hitting everything in a straight corridor every tick; its icy back-wings are still in development and off by default; see [GlacialBreath]
  • Staff of the Wild: NatureMend — drains your current Eitr to heal yourself and nearby allies over time, borrowing Repulse's ground-slam motion; who gets healed is locked in the instant that motion lands and never changes afterward; see [NatureMend]

Reliability:

  • Fixed a bug where an ambiguous Harmony patch target could silently fail to load the entire mod on some game versions (no "loaded" log line, every special attack disabled, not just the one that triggered it); patches are now applied one class at a time, so a single bad one can only ever disable that one feature
  • Hardened the special-attack input handler so one broken system (dash, guard-cancel, the cooldown HUDs, etc.) can never silently stop the others from running in the same frame
  • Fixed the Grappling Hook occasionally arming/firing Hunter's Volley, or leaking its own vanilla secondary attack, through the special-attack key — it now behaves exactly like vanilla (fire + pull yourself in), with zero special-attack key interference

Tuning:

  • All special attacks' default config values updated to match this project's current, in-testing baseline — see each section below for the new numbers
  • Removed every remaining temporary diagnostic-tracing log left over from development; the small number of genuine warnings these touched along the way (reflection/fallback failures, a rare cooldown race, a distance safety-net) are all still logged, just without the internal tracking tag in front of them

1.2.3

New special attacks / passives:

  • Dash — a short dedicated-key dash, independent of your equipped weapon and of every special attack below; see [Dash]
  • GuardCancel — press the vanilla block key mid-swing with a melee weapon to cancel it into a normal vanilla block instead of finishing the attack; see [GuardCancel]
  • Crossbow: Tranquilizer Bolt — a toggleable bolt that puts non-boss targets to sleep (any other hit while asleep always lands as a backstab) instead of dealing damage, plus reload improvements (keep a loaded bolt through holster/relog, move/dodge no longer interrupt reload, skill-scaled reload time) and Crossbows skill XP tuning; see [TranquilizerBolt] and [Crossbow]
  • Bow: Hunter's Volley — a dedicated-key ready/cancel toggle that turns your next shot into a skill-scaled fan of extra arrows; plus arrow embedding/recovery/gravity for every bow shot (normal or Hunter's Volley alike); see [HuntersVolley] and [ArrowEmbed]
  • Bastard Sword: Crescent Wave multi-shot — at higher Swords skill, the same swing fires one or more extra crescents in quick succession; see [CrescentWave]
  • Unarmed / Fist & Claw weapons: Doom Fist — a single ground-impact area attack on a skill-scaled cooldown, borrowing the Knife's secondary-attack motion; see [DoomFist]

Also: various bug fixes (Spinning Sweep's stamina cost, Tranquilizer Bolt's sleep/backstab edge cases, Hunter's Volley's arrow data) and default config tuning for the features above; temporary diagnostic-only logging added to verify those same features was removed once they were confirmed stable.

1.2.2

  • Polearm / Atgeir: Triple Thrust → Spiral Thrust. The old version blocked the vanilla secondary attack and replayed the primary attack 3 times. The new version leaves the weapon's own secondary attack, motion, and multi-hit completely alone — it only switches this swing's attack instance to a horizontal spin, and adds scaling follow-up hits (1–5, by Polearms skill level) to whatever it hits
  • 1H Club/Mace: Launch Slam → Concussion Blow. Airborne launch removed; replaced with a forced stagger + brief lockout on hit, gated by monster size and Clubs skill level (bosses excluded)
  • Knife/Dagger: Sneak Ambush → Smoke Vanish. Charge-and-backstab removed; replaced with a smoke bomb that resets and suppresses aggro for a short duration
  • Bastard Sword: Charge Slash → Crescent Wave. Hold-to-charge slash removed; replaced with a piercing crescent projectile fired alongside the weapon's normal (unmodified) secondary attack
  • Aftershock redesigned: now a fixed-point, growing shockwave series immediately following the sledgehammer's own ground slam (previously a forward-advancing, shrinking wave pattern); wave count now scales with Clubs skill level (1–5)
  • Added Quickstep: dodge-roll replacement ported from sighsorry's SecondaryAttacks (used with the author's permission), with per-weapon-category toggles
  • SwordChain / QuadSlash: extra combo hits now gated by skill level (HitLevel2/3/4) instead of always available
  • ImpactBurst: thrown axe now has a configurable spin animation and orientation correction for modded axes
  • SpinningSweep / SpearPin: various tuning and stability fixes
  • Removed the Unarmed (Knockback Chain) and Warfare Fist/Claw (Spinkick) special attacks — not present in this build
  • Added stamina/eitr pre-checks so specials that don't have a normal secondary-attack animation don't fire (or consume cooldown) without enough resources
  • Various weapon-detection fixes for modded weapon variants (Gold, Slayer, and other Deep North weapon lines)

1.2.1

  • Fixed: mod not working after the Valheim 1.0 update (Unity 6)
    • The game changed the signature of MessageHud.ShowMessage, which caused a MissingMethodException every frame and stopped the special attacks from running
    • The mod was rebuilt against the current game assemblies
  • Fixed the plugin version being logged as 1.0.0 in the BepInEx log — it now matches the package version
  • No gameplay or config changes

1.2.0

  • Counter Upper removed → replaced with Spinkick for Warfare Fist/Claw weapons (later removed in 1.2.2)
  • Aftershock: VFX replaced with vfx_sledge_iron_hit (sledgehammer swing shockwave ring)
  • Aftershock: Added [Aftershock VFX] config section — individual toggles for each particle (Waves, Cloud, Splosh, TrollRock)

1.1.0

  • Added Counter Upper for Warfare mod Fist weapons (later removed)
  • Added Quad Slash for Claymore / THSwordKrom (4-hit combo, per-hit damage and speed config)
  • Added Triple Thrust for Polearm / Atgeir (later replaced by Spiral Thrust in 1.2.2)
  • Added Spear Pin for all Spear weapons (replaces Spear Rain) — pins enemy, slows movement
  • Spinning Sweep now supports Polearms via EnablePolearms config option (later removed)

1.0.1

  • Fixed Charge Slash Mouse4 hold charge bug

1.0.0

  • Initial release
  • 10 weapon categories with unique special attacks
  • Configurable custom activation key — separate specials from vanilla secondary attack
  • Per-weapon minimum skill level requirement
  • Cooldown HUD with radial icons
  • Charge bar HUD for Sneak Ambush and Charge Slash
  • Fully configurable via BepInEx config
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.