
SpecialAttack
Special attacks for every melee weapon; Tranquilizer Bolt/crossbow reload; Hunter's Volley+arrow embedding; staff magic (Twin Cast, Repulse, Railgun, Storm Field, Glacial Breath, NatureMend); skill limit; Dash/Guard Cancel/Quickstep/cooldown HUD.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 two-stage special attack like a crossbow's Tranquilizer Bolt: the special-attack key loads a storm shell (a normal vanilla reload — same time/sound/Eitr cost), then your next ordinary left-click 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. Each Dundr you carry tracks its own cooldown independently, and the shared cooldown HUD lists every Dundr that's on cooldown or still chambered, not just the one in your hand. 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, defaultWarpikeSecondary_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. Dashes toward your held movement direction if any, otherwise toward where the camera is looking, turning to face that direction first like a roll. On ground it hugs the terrain (re-sampled every frame within a tight height window so it can't latch onto a ceiling or the floor above in a dungeon); while swimming it stays at a fixed horizontal height. Only usable while grounded or swimming — airborne presses do nothing. Getting teleported or otherwise moved mid-dash stops it immediately, and it's ignored for a short grace period right after teleporting. Works with any weapon (or none) and never blocks attacks or other special attacks — dashing doesn't interrupt a swing or vice versa. Plays the shared activation effect once per dash. Does nothing while on cooldown, out of stamina, below skill level, a UI is open, dead, or 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)
A toggle triggered like any other special attack: pressing it reloads
(full vanilla reload animation/timing, see [Crossbow]) into a tranquilizer
bolt if one isn't currently loaded (subject to cooldown/ammo/skill
conditions), or back to a normal bolt with no condition/cooldown if one is.
Either swap can be interrupted exactly like any other reload, cancelling
it. Ammo consumption and the shot's own flight are 100% vanilla once fired.
On a non-boss hit against a creature with a corpse (most creatures;
corpse-less ones like Blobs/Skeletons are excluded), the bolt deals zero
damage/knockback/stagger — after SleepDelay the target falls asleep: its
AI stops, it turns invisible, and a physics-driven ragdoll stand-in (the
creature's own death-ragdoll, or a simpler fallback) takes its place,
continuously repositioned under wherever the real (hidden) creature's name/
health bar should follow. The stand-in — its bone colliders plus an extra
tracking hit-sphere (HitSphereScale) — is the only thing hittable while
asleep; hits on it forward to the real creature. Any other hit while
asleep always lands as a backstab. A repeat tranquilizer hit doesn't wake
or damage the target — it extends the sleep timer by another
SleepDuration (capped at MaxSleepDuration), shown as a floating number
above the stand-in (ShowTimer). The target wakes when the timer runs out
or, if WakeOnDamage, the instant it takes real damage (bonus applied
first) — a tranquilizer hit itself never wakes it. On waking, the real
creature reappears at the stand-in's current ground position, or the last
confirmed-solid-ground position if the stand-in rolled somewhere unsafe
(beyond WakeMaxDrop). Falling asleep mid-swing safely cancels the
creature's in-progress attack; a sleeping creature's own attacks are also
ignored as an extra safety net. Death while asleep proceeds like any
vanilla kill. Swapping back to a normal bolt always works immediately, even
mid-cooldown (the cooldown only gates the tranquilizer direction); two
crossbows each keep their own loaded-bolt-type correctly. The stand-in/
timer/crosshair icon are local-only visuals, but the sleep/backstab/
position logic itself is handled correctly for whichever client owns the
creature in multiplayer. A small tinted icon (IndicatorEnable/
IndicatorColor) shows near the crosshair while a tranquilizer bolt is
loaded.
| 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]) — never the vanilla secondary-attack key, and
never interrupts an in-progress bow draw. Press while a bow is equipped to
arm it (icon near the crosshair); press again to cancel — no cooldown or
ammo cost either way. Switching to a different bow keeps the armed state;
switching to a non-bow weapon cancels it silently. Arming requires
Enable, Bows skill ≥ MinSkillLevel, not on cooldown, and at least 2
arrows; cancelling is always allowed.
Once armed, your next bow shot fires a horizontal fan of arrows instead of
one — the count is read from your Bows skill against the Lv0..Lv4 /
Count0..Count4 brackets below, each arrow offset by SpreadAngle
degrees, every arrow (including vanilla's own) multiplied by
DamagePerArrow. If you don't have enough arrows it fires as many as you
have (1 arrow = a plain normal shot, no changes); with a "no resource cost"
cheat/mod active, the full bracket fires regardless of arrow count at no
ammo cost. Each arrow gets its own independent copy of the shot's full data
(re-run through vanilla's own Projectile.Setup) so embedding/recovery
(see [ArrowEmbed]) sees every arrow, not just the first. The armed state
clears and Cooldown starts the instant a volley (or fallback single shot)
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 Hunter's Volley alike) that
hits a monster sticks into it at the hit point, using the flying arrow's
own in-flight orientation so it embeds nose-first, attached to the nearest
bone so it follows the monster's movement — a local-only visual. Up to
EmbedMax arrows per monster are shown at once (oldest removed first past
that), all cleaned up on death/despawn. Hit tracking always runs regardless
of Enable. On death, each landed arrow independently rolls a recovery
chance that scales linearly with your Bows skill between
RecoverChancePercentLv0 and RecoverChancePercentLv100.
Arrows that miss and hit terrain/trees/buildings (not water) also get a
chance to become a pickup-able item where they landed, scaling the same way
between MissRecoverChancePercentLv0 and MissRecoverChancePercentLv100 —
only for arrows you fired.
Arrow gravity can also be reduced at higher Bows skill for flatter,
longer-ranged shots: GravityOverride multiplies vanilla's own per-arrow
gravity between GravityLv1 (level 1) and GravityLv100 (level 100).
Applies to every bow arrow; 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–1fraction underRecoverChanceLv0/RecoverChanceLv100— those keys are no longer read: if your config file still has them, they're harmless leftovers, and the newRecoverChancePercentLv0/RecoverChancePercentLv100keys (percent, 0–100) start over at their defaults.
[DoomFist] — Unarmed (bare fists) and Fist/Claw weapons
Triggered like any other special attack while unarmed or wielding a
fist/claw weapon. The swing's own secondary-attack animation is replaced
with the Knife's secondary-attack motion (the Knife itself and its Smoke
Vanish are unaffected — only the animation trigger is borrowed), and melee
hit detection for that swing is disabled entirely. Cooldown is spent the
instant the swing starts (win or miss), scaling from CooldownLv1 to
CooldownLv100 across Unarmed skill level 1–100. Stamina cost is untouched.
At the swing's hit-trigger point, a single area attack fires at a point
ImpactDistance in front of you (snapped to ground height) — everyone
within Radius is hit once, using normal vanilla melee target rules (no
self-hit, no friendly/tame hits unless PvP). Damage is the weapon's own
damage (bare fists use vanilla Fists damage) × DamageMult; knockback is
the weapon's own push force × KnockbackMult, directed outward — bosses
take damage but no knockback. Unarmed skill XP is granted once per swing if
something was hit. The impact plays Aftershock's own shockwave effect/sound,
resized to Radius.
| 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 (skill in
that staff's magic type ≥ MinLevel, enough Eitr — the staff's own
primary-cast cost × EitrMult — and not 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) and hits
everything within Radius with knockback and, if DamageMult > 0, damage.
Cooldown and Eitr are both spent the instant it starts, whether or not
anything's actually in range; if any gate fails, nothing happens at all —
no partial cost. Other players and tamed animals are never hit; bosses
take damage but are never knocked back.
While the motion plays, your facing is locked to the direction your camera
was aimed when triggered, and both your turn rate and move speed are
slowed to the vanilla Staff of Protection's own ground-slam rate (read live
from its attack data; MoveSpeedFactor/RotationSpeedFactor can override
either directly). The lock releases when the motion ends normally, on
death/stagger/dodge-roll/teleport, or after LockMaxDuration seconds
(scaled to your animation speed) as a safety net.
The actual hit lands on the ground-slam clip's real animation hit-frame
(vanilla's own OnAttackTrigger/Hit event, same as every other attack),
so timing stays correct even if your attack speed changes; if that event
never arrives before LockMaxDuration runs out, the hit is cancelled with
no refund. Damage uses the equipped staff's own weapon damage (element
split preserved) × DamageMult, with StaggerMult scaling stagger on top.
Knockback scales in 3 steps by skill level (LevelTier1/2/3 →
KnockbackLv30/50/70). At the hit, the staff's own projectile
hit-effect (or a shared fallback) plays RingPoints times evenly around
you, rippling out from your feet to 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 (load a storm shell, fire it like a normal shot)
Works as a two-step "special shell" like a crossbow's Tranquilizer Bolt, not
an instant-fire key. Pressing the special-attack key (Elemental Magic ≥
MinLevel) plays Dundr's normal vanilla reload and loads a storm shell
instead of a normal one, replacing any bolt already chambered or
mid-reload; the key does nothing if that Dundr is already on cooldown or
already chambered, and an interrupted reload (dodge/stagger/swap) spends
nothing. Once loaded, the shell sits chambered (shown by a small
icon+label, IndicatorEnable) until your next ordinary left-click fires
it — that shot goes out exactly like [Railgun] would (extra bolts/tightened
spread included), except every bolt deals zero damage/knockback/stagger.
The moment any bolt hits anything, a storm zone appears there (snapped to
the target's feet if it hit one), the shell is consumed, and that Dundr's
own cooldown starts (each Dundr tracks its cooldown independently, saved on
the weapon itself — survives reconnects, swaps, and pickup). A
chambered-but-unfired shell isn't on a cooldown timer yet, but it
permanently occupies one of [SkillLimit]'s shared slots from the moment it
finishes loading until it's fired (then the slot carries straight into the
firing cooldown) — so stockpiling loaded Dundrs can't dodge the shared
limit.
The zone lasts Duration seconds, pulsing every PulseInterval seconds
(first strike immediate), each pulse dealing DamageMult× Dundr's per-bolt
damage and StaggerMult× stagger (0 by default) to every valid enemy
within Radius. Players and tamed animals are never targeted; bosses can
be hit. Adrenaline is granted once per zone, not per pulse. Only one bolt
per volley can ever trigger a zone.
If [Railgun]'s KeepLoadedLevel is met, swapping away from and back to
that Dundr keeps the chambered shell too; below that level, swapping drops
the reload (and the shell) like vanilla.
Each pulse replays Dundr's own vanilla hit-spark effect at the zone's
center and at VfxRingPoints points around the ring at Radius,
auto-sized to match (VfxScale as a manual multiplier on top), with
smoke/fog particles filtered out by default (VfxRemoveSmoke) so it reads
as a clean strike, and laid flat against sloped terrain (VfxFlatten). A
separate ground-following ring outline shows the true Radius for the
zone's whole duration (ShowRing, RingColor).
Firing Dundr (bolt or shell) grants Adrenaline on every shot regardless of whether it hits anything — that's vanilla's own behavior for this weapon, left untouched on purpose.
Unlike every other special attack, the shared cooldown HUD shows every
Dundr in your inventory (hotbar or bag, equipped or not) that's on cooldown
or still chambered, not just the one in your hand — each slot labeled with
its hotbar number or HudBagLabel, the currently-equipped one highlighted.
Chests and other external storage are never counted. A chambered-but-unfired
shell shows HudLoadedLabel in place of a countdown, switching over
automatically to a normal shrinking countdown once fired.
| 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 the moment the storm shell is actually fired |
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) |
IndicatorEnable |
true |
Show a small "storm shell chambered" icon+label near the cooldown HUD while a shell is loaded |
HudBagLabel |
가방 |
Corner label shown on a Dundr's cooldown-HUD slot when it's in your bag rather than bound to a hotbar slot (hotbar Dundrs show their slot number, 1–8, instead) |
HudLoadedLabel |
장전 |
Text shown in place of the countdown number on a Dundr's cooldown-HUD slot while it's chambered but not yet fired |
[GlacialBreath] — special attack for the Staff of Frost (a channeled cold breath)
Hold SpecialAttackKey (requires Elemental Magic ≥ MinLevel, at least 1
Eitr, not mid-swing) to drain all your current Eitr and channel Moder's own
cold-breath effect forward for up to Duration seconds — release the key to
stop early. The staff's own ice-shard shot never fires. Your camera and
character facing (mouse and movement keys) are locked to the direction you
were looking when you activated it, so what you see always matches where
the breath is actually hitting; you can't move, jump, or dodge-roll while
breathing, aside from a small constant backward push (Recoil). Dying,
teleporting, mounting, or swapping weapons ends it immediately, same as
releasing the key.
Every TickInterval seconds, everything within a Range-long,
Width-wide straight corridor in front of you is hit simultaneously
(line-of-sight required — targets behind cover are skipped). Each tick
deals DamagePerEitr × the Eitr you had on activation as pure Frost
damage (applying vanilla's own frost slow/freeze automatically) plus
StaggerMult× stagger (0 by default). Players and tamed animals are
never targeted; bosses take damage but no knockback. Adrenaline is granted
once per activation, not per tick. Cooldown starts the instant breathing
ends, however it ended.
The breath's visual size is a flat VfxScale multiplier, with
VfxRotationOffsetX/Y/Z to correct its aim if the effect's own "forward"
axis doesn't match by default.
While breathing, a cosmetic pair of icy wings can attach to your back (no
gameplay effect) — built once from a Drake's wing geometry, automatically
extracted, re-centered, and rescaled to WingSpan. Off by default
(ShowWings) since the angle/shape are still being tuned; turn on
WingPreview to see live wing-shape changes while holding the staff
without needing to breathe. If a usable Drake mesh can't be built, it falls
back to an older wing mesh, then to a looping ice-particle effect, so
ShowWings never silently shows nothing.
| 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 when breathing ends |
TickInterval |
0.2 |
Seconds between damage ticks while breathing |
Range |
15 |
Corridor length (meters) each tick hits |
Width |
28 |
Corridor width (meters) each tick hits |
DamagePerEitr |
0.2 |
Each tick's damage = this × Eitr spent on activation |
StaggerMult |
0 |
Each tick's stagger multiplier — 0 means no stagger |
Duration |
5 |
Hard cap on breathing time (seconds) |
Motion |
(empty) | Animator trigger held while breathing; empty auto-detects the Staff of Frost's own attack trigger |
VfxSource |
vfx_dragon_coldbreath |
Prefab used for the breath's visual |
VfxScale |
1.0 |
Flat size multiplier for the breath visual |
VfxRotationOffsetX / VfxRotationOffsetY / VfxRotationOffsetZ |
0 / 0 / 0 |
Extra rotation (degrees) to correct the visual's aim |
VfxForwardOffset |
0.4 |
Distance (meters) the visual is pushed forward from your weapon hand |
Recoil |
1.0 |
Backward push speed (m/s) while breathing |
ShowWings |
false |
Show the icy back-wings (or fallback effect) while breathing — off by default, still in development |
WingSpan |
2.0 |
Total wingspan (meters) the wing mesh is rescaled to |
WingScale |
1.0 |
Extra multiplier on top of WingSpan |
WingRotationX / WingRotationY / WingRotationZ |
0 / 0 / 0 |
Angle correction (degrees) for the wing pair's rest pose |
WingSpreadAngle |
20 |
Extra lift angle (degrees) for both wings |
WingGlow |
0.3 |
Emissive boost on the wing material (0 disables) |
WingOpacity |
0.85 |
Minimum opacity for the wing membrane |
WingMaterial |
Simple |
Simple = solid icy color (reliable); Original = the Drake's real material/texture (more authentic, may be invisible) |
WingDebugCube |
false |
Show a magenta cube at the wing attach point, for debugging placement vs. rendering |
WingPreview |
false |
Keep wings visible while holding the staff (not breathing) for live tuning |
WingOffsetX / WingOffsetY / WingOffsetZ |
0 / 0 / -0.1 |
Position offset (meters) for the wings relative to their attach bone |
[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
(Elemental Magic ≥ MinLevel, Eitr > 0, not mid-swing or already healing —
anything else does nothing at all). It consumes all your current Eitr
(E) and borrows [Repulse]'s exact ground-slam motion (same slowed
movement/turning, no root projectile). At the moment the staff touches the
ground, the heal target list locks in for good: you (always), tamed
animals, friendly summons, and other players if HealPlayers is on —
hostile monsters and bosses are never included. Targets keep being healed
for the whole duration even if they wander outside Radius afterward;
nobody who shows up after the lock moment is added. If the motion is
interrupted or its animation event never fires, MotionTimeout (scaled to
your animation speed) starts the heal anyway so spent Eitr is never
wasted — death is the only exception.
Once healing starts you're completely free to move, fight, or swap
weapons — it's a background timer, not a locked stance. The total heal per
target (E × HealMult) is split evenly across Ticks ticks (one every
TickInterval seconds) using real vanilla heal numbers, capped at max
health. Dying or teleporting ends the effect for everyone immediately.
Cooldown starts when healing ends, and the shared cooldown HUD shows the
remaining heal time while it's still in progress.
A green glow effect plays once where you started (plus a smaller tick
effect on each target by default), both using the Dvergr mage's own
ally-heal visual with its actual healing logic stripped out (so only this
mod's own ticks ever heal anyone). A custom Vfx/TickVfx prefab is
rejected automatically (logged once) if it turns out to be a monster/item/
building instead of a harmless effect.
| 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 |
[SkillLimit] — shared cooldown slot limit across every active special attack
Stops you from swapping between weapons to chain-fire special attacks
back-to-back. It counts how many of the special attacks below are currently
on cooldown (or mid-channel/mid-heal, for Repulse/StormField/NatureMend/
Glacial Breath) across every weapon you own, not just the one in hand. At
MaxActive, starting one more does exactly nothing — the same silent
no-op each attack already falls back to on its own cooldown.
Counted (18): SpinningSweep, ConcussionBlow, QuadSlash, SmokeVanish, Aftershock, ImpactBurst, SpearPin, SwordChain, SpiralThrust, CrescentWave, HatchetHook, TranquilizerBolt, Hunter's Volley, DoomFist, Repulse, Glacial Breath, NatureMend, and Storm Field. Storm Field is counted per Dundr item instance (two Dundrs on cooldown = 2 toward the limit), and a Dundr occupies a slot the moment its shell finishes chambering, even before firing — so stockpiling loaded Dundrs still can't push past the limit. Not counted: Dash, Quickstep, GuardCancel, Twin Cast, Railgun's passive, and arrow embedding/recovery — none have a shared slot to spend.
The check happens once, the moment you try to start the attack (for Storm Field, that's when loading begins). If that attack is already on its own cooldown, this limit is never even checked, so you never see two different block reasons at once.
When blocked, a floating message appears above your own head (updating in place rather than stacking) and a small "current/limit" counter shows above the shared cooldown HUD whenever the count is above zero.
| Key | Default | Description |
|---|---|---|
Enable |
true |
Toggle on/off |
MaxActive |
5 |
Max number of the 18 counted special attacks allowed to be on cooldown (or mid-channel/mid-heal) at the same time |
Message |
기술 한도 초과 ({0}/{1}) |
Floating message shown above your head when blocked — {0} = current count, {1} = MaxActive |
MessageDuration |
1.5 |
Seconds the floating message stays visible |
MessageColor |
orange | Color of the floating message |
ShowCounter |
true |
Whether to show the small "current/limit" counter near the shared cooldown HUD |
[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 ofQuickstep.csfor 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 ofHuntersVolley.cs. - Dash is an original feature designed and implemented for this mod.
Changelog
See CHANGELOG.md for the full version history.