You are viewing a potentially older version of this package. View all versions.
LJS-PPR-1.2.7 icon

PPR

Perfect parry & counter, projectile reflect, shield auto-equip, back-worn shield guard, guard durability protection, instant equip. Updating from 1.2.6: settings reset; manual installs must delete the old PPR.dll first.

By LJS
Date uploaded 2 days ago
Version 1.2.7
Download link LJS-PPR-1.2.7.zip
Downloads 177
Dependency string LJS-PPR-1.2.7

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2351 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2351

README

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

CHANGELOG

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 (Thunderstore Mod Manager / r2modman / Gale): just update, old files are replaced automatically. Manual install users: delete the old PPR.dll (and the folder that contains it) from BepInEx/plugins before installing this version, or two copies will load at once and effects will be doubled or break.

  • NEW Auto Shield Equip — switch to a one-handed weapon with an empty off-hand and PPR automatically re-equips the last shield you used. ([Auto Shield Equip] (Enable) Auto-Equip Last Shield, default on)
  • NEW Back Shield Guard — while your last-used shield is in your inventory but not in hand, it's shown on your back and passively blocks attacks that land from behind, using the same block-power math as a normal front guard. ([Back Shield Guard], default on — includes rear cone half-angle and back-worn shield position/rotation offsets)
  • NEW Guard Durability — when a guard (vanilla front block/parry or the back guard above) actually reduces incoming damage, skip your armor's durability loss and/or your blocker's own durability loss, per category. ([Guard Durability] — armor protection on by default; blocker categories Weapon/Tool on by default, Shield off by default/vanilla-like)
  • NEW Equip Motion Cancel — instantly equip/unequip items in the categories you enable, skipping vanilla's equip queue animation and progress bar; also applies to hiding/showing hand items with the Hide key (R), including vanilla's own automatic use of the same function (e.g. auto-hiding weapons while swimming). Equip sounds/effects and vanilla's equip conditions (e.g. can't swap mid-attack) are unchanged. ([Equip Motion Cancel] — master toggle + one toggle per category: Shield/Helmet/Chest/Legs/Cape/Utility/Trinket/Weapon/Tool/Hide-Show, all on by default)
  • NEW [Debug] (Enable) Verbose Log — off by default; turn on and send your LogOutput.log if you're reporting a bug.
  • Stability (Valheim 1.0.16) Rebuilt against the game's real 1.0.16 DLLs instead of a "publicized" reference, so illegal access to non-public game members is now caught at build time instead of crashing the game at runtime; fixed the access-level issues this uncovered (including a vanilla method overload that gained a parameter in 1.0).
  • Stability Every patch is isolated behind a shared exception guard — if one feature hits an unexpected error (including a future game update changing something this mod touches), only that one feature logs an error and turns itself off for the rest of the session; player loading, monster AI, and the rest of the mod keep working normally.
  • Stability AnimationSpeedManager (used for the counter attack's speed boost) is now merged directly into this mod's own DLL instead of shipped as a separate file, so it no longer depends on any other mod being present or on a particular load order.

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 against all ranged attack types (arrows, rocks, trolls, magic) — previously failed due to mod compatibility issue with Impetus
  • FIX Reflection no longer errors when other mods patch Projectile.Setup with null item checks
  • NEW Greydwarf rock (Aoe-type projectile) reflection support added
  • FIX Look direction fallback to transform.forward when GetLookDir() returns zero vector

v1.2.0

  • NEW Perfect Parry VFX color customization via hex code in config (default: #4DB8FF blue)
  • NEW Vanilla vfx_blocked suppressed on perfect parry — replaced with custom-colored version of the same effect; normal parry still shows original white vfx_blocked
  • NEW Projectile reflection on Perfect Parry — 3× attacker's original damage (configurable)
  • NEW Projectile reflection on Normal Parry — any successful block reflects at 2× (configurable)
  • NEW Reflected damage uses attacker's pre-block damage as the base value
  • NEW Reflection direction follows player look direction
  • NEW Ranged No Stagger — ranged attackers are not staggered when projectile is blocked or reflected
  • FIX Normal Parry Reflect now works independently of the Perfect Parry enable toggle
  • TWEAK Default counter input window: 1.0s (was 0.6s)
  • TWEAK Default counter animation 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 (default 0.1s)
  • Counter attack triggered by secondary attack within counter window
  • Counter animation speed multiplier
  • Damage reduction during counter window (default 50%)
  • VFX effect above player head on successful parry