SpecialAttack
Adds unique special attacks to weapon categories in Valheim, plus a
configurable dodge-roll replacement (Quickstep).
Every covered weapon type gets a distinct skill with cooldown tracking,
configurable damage multipliers, visual/audio feedback, and an optional
custom activation key.
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. |
| 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 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. |
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) — 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.
Configuration
Edit BepInEx/config/com.specialattack.plugin.cfg after first launch.
[General]
| Key |
Default |
Description |
SpecialAttackKey |
None |
Custom activation key (Unity KeyCode). When set, secondary key = vanilla only. Example: Mouse4, Mouse2, F |
[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 |
10 |
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 |
10 |
Min Swords level for the 2nd hit (1st hit only needs MinSkillLevel) |
HitLevel3 |
20 |
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 |
12 |
Cooldown in seconds |
AnimSpeed1–3 |
2.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)
| Key |
Default |
Description |
Enable |
true |
Toggle on/off |
HitHeight |
2 |
Hit detection height (meters) |
DamageMult |
1.0 |
Crescent damage multiplier — weapon damage (quality/skill applied, all types summed then converted to Slash) × this value |
Cooldown |
12 |
Cooldown in seconds — while on cooldown, only the vanilla secondary attack plays |
MinSkillLevel |
0 |
Minimum Swords skill level required |
HitSlashEnable |
true |
Show a small slash-mark effect at the hit point |
CrescentFullness |
0.25 |
Crescent thickness ratio (closer to 1 = thicker) |
[SpearPin] — Spear
| Key |
Default |
Description |
Enable |
true |
Toggle on/off |
Cooldown |
18 |
Cooldown in seconds |
SpeedFactor |
0.35 |
Movement speed multiplier while pinned (0.1–1.0) |
PinDuration |
8 |
Duration of the pin effect (seconds) — spear drops as an item on expiry |
PullRange |
3 |
Distance to retrieve the pinned spear (meters) |
PullRestoreTime |
3 |
Time for movement speed to recover after the spear is pulled (seconds) |
MinSkillLevel |
0 |
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) |
[ImpactBurst] — Battleaxe (2H Axe)
| Key |
Default |
Description |
Enable |
true |
Toggle on/off |
Cooldown |
12 |
Cooldown in seconds |
DamageFactor |
0.75 |
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 |
0 |
Minimum Axes skill level required |
[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 |
10 |
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 |
30 |
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 |
2.5 |
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 |
15 |
Cooldown in seconds |
MinSkillLevel |
0 |
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 |
0.4 |
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.2 / 3.0 |
Size multiplier for wave 1 / wave 5 (linearly interpolated in between; the table stays fixed even if fewer waves occur) |
DamageFirst / DamageLast |
0.5 / 1.0 |
Damage multiplier for wave 1 / wave 5 |
[SpinningSweep] — Battle Hammer (Clubs + Two-Handed, excluding Sledgehammers)
| Key |
Default |
Description |
EnableBattleHammer |
true |
Toggle on/off |
Cooldown |
8 |
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 |
0 |
Minimum skill level required |
StaminaMult |
0.5 |
Stamina cost per loop, relative to the weapon's own secondary attack stamina cost (1.0 = full) |
PushMult |
0 |
Knockback multiplier (0 = none, 1.0 = full weapon knockback) |
StaggerMult |
0.5 |
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 |
12 |
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.3 |
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 |
15 |
Cooldown in seconds |
MinSkillLevel |
0 |
Minimum Knives skill level required |
Duration |
6 |
Seconds nearby monsters can't newly detect/re-target you after activation. Not invincibility — attacking or getting hit ends it immediately |
AggroResetRadius |
10 |
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 |
false / false |
Swords (1H / 2H) |
Axes_1H / Axes_2H |
false / false |
Axes (1H / 2H) |
Clubs_1H / Clubs_2H |
false / false |
Clubs (1H / 2H) |
Polearms_1H / Polearms_2H |
false / false |
Polearms (1H / 2H — vanilla has no 1H polearm; covers modded weapons) |
Spears_1H / Spears_2H |
false / false |
Spears (1H / 2H — vanilla has no 2H spear; covers modded weapons) |
Pickaxes_1H / Pickaxes_2H |
false / false |
Pickaxes (1H — modded only / 2H — all vanilla pickaxes) |
OtherSkills_1H / OtherSkills_2H |
false / false |
Any skill type not listed above (e.g. from other mods) |
Bows / Crossbows |
false / false |
Bows / Crossbows |
ElementalMagic / BloodMagic |
false / false |
Elemental / Blood magic staves |
BareHands |
false |
Completely unequipped (no unarmed weapon item) |
ExtraPrefabs |
(empty) |
Comma-separated weapon drop-prefab names always allowed regardless of the checkboxes above |
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.
Changelog
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