Valheim
Install with App

Details

Latest version
1.2.7
Last Updated
First Uploaded
Downloads
2.7K
Likes
1
Size
95KB
Dependants
ADDatHost Valheim hosting
€1

PPR — Perfect Parry & Reflect

A skill-based parry mod for Valheim. Block with precise timing to trigger a Perfect Parry — then counter, reflect projectiles, and take reduced damage. Every setting is configurable.


⚠️ Updating from 1.2.6 or earlier — please read

  • Mod manager users (Thunderstore Mod Manager / r2modman / Gale): just update PPR. The old files are replaced automatically.
  • Manual install users: before installing 1.2.7, delete the old PPR.dll (and the folder that contains it) from BepInEx/plugins. If you skip this, two copies of PPR will load at the same time and effects will be doubled or break.
  • Settings reset once: the plugin ID changed to LJS.PPR, so a new config file LJS.PPR.cfg is created and your previous PPR settings are not carried over. Please set them again once. The old PPR config file in BepInEx/config can be deleted.

Features

⚔️ Perfect Parry

Block at the exact moment an attack lands (within 0.1s by default) to trigger a Perfect Parry.

  • Counter Window (1s) — After a perfect parry, press your secondary attack to fire a fast counter at 2× animation speed
  • Damage Reduction (50%) — Take half damage for the duration of the counter window
  • Custom VFX — A colored effect appears to confirm the parry (default: blue #4DB8FF)

🎨 Perfect Parry VFX Color

The vanilla white vfx_blocked is replaced on perfect parry with a custom-colored version of the same effect.

  • Color is set via hex code in the config (e.g. #FF4444 red, #FFD700 gold, #44FF88 green)
  • On normal parry, the original white vfx_blocked plays as usual
  • On perfect parry, the white effect is suppressed and only the colored PPR effect is shown

🏹 Projectile Reflection

Block an incoming projectile to reflect it back in the direction you're looking. Reflected damage is based on the attacker's original damage (before block reduction).

Parry Type Damage Config
Perfect Parry 3× (Reflect) Perfect Parry Damage Multiplier
Normal Parry 2× (Reflect) Normal Parry Damage Multiplier
  • Normal Parry Reflect works independently of the Perfect Parry enable toggle
  • Any successful block (shield raised) will reflect projectiles at 2× if enabled
  • Supports all projectile types: arrows, rocks, Greydwarf stones, troll boulders, magic

🛡️ Ranged No Stagger

Ranged attackers are not staggered when their projectile is blocked or reflected.

🎯 Auto Shield Equip

Switch to a one-handed weapon with an empty off-hand, and PPR automatically re-equips the last shield you used.

🔙 Back Shield Guard

While your last-used shield is in your inventory but not in your hand, it's shown on your back and passively blocks attacks that land from behind (within a configurable rear cone) — using the same block-power math as a normal front guard.

🧰 Guard Durability

When a guard (front block/parry, or the back guard above) actually reduces incoming damage, you can skip:

  • Your armor's durability loss (helmet/chest/legs/cape) — on by default
  • Your blocker's own durability loss — by category: Weapon/Tool (on by default), Shield (off by default, vanilla-like)

Guard failures (e.g. out of stamina) and hits that weren't guarded at all are always handled exactly like vanilla.

⚡ Equip Motion Cancel

Skip the vanilla "equipping" animation and progress bar for whichever equipment categories you enable (Shield, Helmet, Chest, Legs, Cape, Utility, Trinket, Weapon, Tool — all on by default) — equip/unequip happens instantly instead. Equip sounds/effects and vanilla's equip conditions (e.g. can't swap gear mid-attack) are unchanged. Meant to replace similar standalone "instant equip" mods.

Also covers the Hide key (R) — hiding (sheathing) and showing (drawing) your hand items plays no animation either, so going into/out of the "weapons hidden" state is as instant as swapping with a hotkey. This also applies to vanilla's own automatic use of the same function, such as auto-hiding your weapon while swimming.


Configuration

Edit LJS.PPR.cfg or use an in-game config manager mod.

[Perfect Parry]

Setting Default Range Description
(Enable) Perfect Parry true — Master toggle for the perfect parry system
(Parry) Detection Window (sec) 0.1 0.01–0.24 Timing window for perfect parry
(Counter) Input Window (sec) 1.0 0.1–2.0 Time to trigger counter after parry
(Counter) Animation Speed Multiplier 2.0 1.0–5.0 Speed of counter attack animation

[Perfect Parry - Damage Reduction]

Setting Default Description
(Enable) Damage Reduction true Reduce damage during counter window
(Damage Reduction) Reduction Rate (%) 50 How much damage is reduced

[Perfect Parry - Effect]

Setting Default Description
(Enable) Head Effect true Spawn a VFX on perfect parry
(Effect) VFX Name vfx_blocked Prefab name (must exist in ZNetScene)
(Effect) Offset X/Y/Z 0 / 1.25 / 0 Position offset relative to player
(Effect) Custom Color Enabled true Apply custom color to perfect parry VFX
(Effect) Custom Color (Hex) #4DB8FF Hex color — blue by default

[Perfect Parry - Ranged]

Setting Default Description
(Enable) Ranged No Stagger true Prevent attacker stagger on block
(Enable) Projectile Reflect true Reflect on perfect parry (3×)
(Reflect) Perfect Parry Damage Multiplier 3.0 Multiplier for perfect parry reflect
(Enable) Normal Parry Reflect true Reflect on any block (2×)
(Reflect) Normal Parry Damage Multiplier 2.0 Multiplier for normal parry reflect

[Auto Shield Equip]

Setting Default Description
(Enable) Auto-Equip Last Shield true Re-equip last-used shield when switching to a one-handed weapon with empty off-hand

[Back Shield Guard]

Setting Default Description
(Enable) Back Shield Guard true Show your tracked shield on your back and passively block attacks from behind
(Guard) Rear Cone Half-Angle (deg) 60 Half-angle of the rear cone counted as a back attack
(Visual) Position/Rotation Offset X/Y/Z 0 Local transform offset for the back-worn shield visual

[Guard Durability]

Setting Default Description
(Armor) No Armor Wear On Guard true Skip armor durability loss when a guard actually reduces damage
(Blocker) No Durability Loss - Weapon true Skip the blocker's own durability loss when it's a weapon
(Blocker) No Durability Loss - Tool true Same, for tools (pickaxes, hammers, etc.)
(Blocker) No Durability Loss - Shield false Same, for shields — off by default (vanilla-like)

[Equip Motion Cancel]

Setting Default Description
(Enable) Equip Motion Cancel true Master toggle — turning this off also turns off every category below
(Cancel) Shield / Helmet / Chest / Legs / Cape / Utility / Trinket / Weapon / Tool true Instantly equip/unequip that category, skipping the vanilla queue/animation
(Cancel) Hide/Show Hand Items (R) true Skip the animation when hiding/showing hand items with the Hide key (R) — also applies when vanilla auto-hides your weapon (e.g. while swimming)

Debug

[Debug]

Setting Default Description
(Enable) Verbose Log false Logs detailed [PPR-SHIELD]/[PPR-GUARD]/[PPR-EQUIP] diagnostics as Info-level lines. If you're reporting a bug, please turn this on, reproduce the issue, and send your LogOutput.log (BepInEx console log) along with your report — it makes the cause much easier to track down.

How It Works

Hold block → attack lands within 0.1s → Perfect Parry triggers
  → VFX appears (colored)
  → Press secondary attack within 1s → Counter fires at 2× speed
  → Incoming damage reduced by 50% during counter window

Hold block (any time) → projectile hits → Reflected at 2× damage
Perfect parry a projectile → Reflected at 3× damage

Reflection direction always follows where you are looking.


Requirements

  • Valheim 1.0.16
  • The only required dependency is BepInExPack — nothing else needs to be installed for PPR to work.

Compatibility

  • Compatible with most combat mods
  • Tested alongside Warfare — no conflicts
  • Compatible with Impetus — projectile reflection uses reflection-based setup to avoid conflicts
  • If using SecondaryAttacks, a cooldown indicator may briefly flash on counter — visual only, does not limit re-use
  • The small helper library used for the counter attack's speed boost (AnimationSpeedManager) is merged directly into PPR.dll — it ships as part of this mod and does not need to be installed separately, regardless of whether other mods also use it

Troubleshooting

Reporting any bug? Turn on [Debug] (Enable) Verbose Log, reproduce the issue, and send your LogOutput.log along with your report (see the Debug table above).

Game stuck on infinite loading?

This is a rare, intermittent issue we're still tracking down. If it happens to you:

  1. Look in your PPR plugin folder (BepInEx/plugins/LJS-PPR/) for a file named PPR-freeze-report.txt.
  2. This file is only created when the issue actually occurs — if you find it, please send it to us (along with roughly when it happened).
  3. It contains no personal data, just internal diagnostic info (timestamps, stack traces) to help pinpoint the cause.

Changelog

v1.2.7

Update notice: The plugin ID changed to LJS.PPR, so a new config file LJS.PPR.cfg is created and your previous PPR settings are not carried over — please set them again once (the old PPR config file in BepInEx/config can be deleted). Mod manager users: just update, old files are replaced automatically. Manual install users: delete the old PPR.dll (and its folder) from BepInEx/plugins before installing this version, or two copies will load at once.

  • NEW Auto Shield Equip, Back Shield Guard, Guard Durability, Equip Motion Cancel (including Hide/Show Hand Items on R) — see the Features and Configuration sections above for details and defaults.
  • NEW [Debug] (Enable) Verbose Log — off by default; see Troubleshooting below.
  • Stability (Valheim 1.0.16) Rebuilt against the game's real 1.0.16 DLLs so illegal access to non-public game members is caught at build time instead of crashing at runtime.
  • Stability Every patch is isolated behind a shared exception guard — a problem in one feature only disables that feature for the session, the rest of the mod and the game keep working.
  • Stability AnimationSpeedManager is now merged directly into PPR.dll instead of shipped as a separate file.

v1.2.6

  • Added a dedicated diagnostic report file (PPR-freeze-report.txt, created next to PPR.dll only if the infinite loading issue actually occurs) to make it easier to report and help track down the cause. No gameplay changes.

v1.2.5

  • FIX Fixed another rare cause of the intermittent multiplayer infinite loading issue — in certain timing situations the Perfect Parry effect could fail to clean up completely, which could eventually lead to the same freeze as before.

v1.2.4

  • FIX Blocking a ranged attack too late (outside the parry timing window) no longer triggers a reflect — it's now handled as a normal block, just like it should be.
  • Added extra logging around parries and damage reduction, so it's easier to see what happened in your log file.

v1.2.3

  • Added diagnostic logging to help investigate a rare intermittent multiplayer infinite loading issue. No gameplay changes.

v1.2.2

  • FIX Resolved an intermittent infinite loading issue in multiplayer, caused by a leftover parry effect that wasn't cleaned up properly

v1.2.1

  • FIX Projectile reflection now works for all types: arrows, rocks, Greydwarf stones, troll boulders, magic
  • FIX Resolved conflict with Impetus mod that caused reflection to fail silently
  • NEW Greydwarf rock (Aoe-type projectile) reflection support
  • FIX Look direction fallback when camera vector is zero

v1.2.0

  • NEW Perfect Parry VFX color customization — hex code in config, applied cleanly before particle play
  • NEW Vanilla vfx_blocked is suppressed on perfect parry and replaced with the colored version
  • NEW Projectile reflection on Perfect Parry (3× original damage, configurable)
  • NEW Projectile reflection on Normal Parry — any successful block (2×, configurable)
  • NEW Reflected damage uses attacker's pre-block damage as the base
  • NEW Reflection direction follows player look direction
  • NEW Ranged No Stagger — ranged attackers are not staggered on block/reflect
  • FIX Normal Parry Reflect works independently of the Perfect Parry enable toggle
  • TWEAK Default counter window: 1.0s (was 0.6s)
  • TWEAK Default counter speed: 2.0× (was 2.5×)
  • TWEAK Default VFX Y offset: 1.25 (was 2.5)

v1.0.0

  • Initial release
  • Perfect Parry detection with configurable timing window
  • Counter attack with animation speed boost
  • Damage reduction during counter window
  • VFX effect on successful parry

Made by LJS

DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro
DatHost — Valheim server hosting, first month for one euro