The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.

Vasodilation
Like the heat pack, whenever you sprint, you resist cold affliction. Keep moving to keep warm!
By tony4twenty
Date uploaded | 2 weeks ago |
Version | 1.2.1 |
Download link | tony4twenty-Vasodilation-1.2.1.zip |
Downloads | 6785 |
Dependency string | tony4twenty-Vasodilation-1.2.1 |
This mod requires the following mods to function

BepInEx-BepInExPack_PEAK
BepInEx pack for PEAK. Preconfigured and ready to use.
Preferred version: 5.4.75301README
🥶 Vasodilation
Sprint to stay warm.
This mod gives your character a survivalist edge for the Alpines — whenever you sprint, you resist cold affliction. Keep moving to keep warm! - Cold reduction is minor — it won’t make you invincible, just buy you time. Only activates when the player has cold affliction.
Not just the Alpines but even at night when its start to get cold in Ascent 5!
Find the mod in the Peak Modding Discord under #mod-releases to discuss mod related topics like issues/reports/appreciation
💡 What It Does
- 🏃 Sprinting reduces Cold over time — applied once per second.
- 🌡️ Automatically adds a cold resistance effect exactly like heat packs.
🛡️ Host-Controlled Multiplayer
- ✅ Host has mod → Clients with the mod get the effect using the host’s config.
- ❌ Host doesn’t have mod → Nobody gets the effect (even if clients have it).
- 🔁 Host migration → New host republishes config automatically and the loop restarts.
- 🔒 Fair by design → No client-side advantage in lobbies where the host doesn’t approve.
⚙️ Configuration (BepInEx)
A config file is created on first run:
BepInEx/config/tony4twentys.Vasodilation.cfg
General
ColdPerSecond = -0.06
— Per-second Cold adjustment while sprinting (negative reduces Cold).TickSeconds = 1.0
— How often the effect is applied.ColdGateOn = 0.025
— Minimum Cold required to start applying the effect.ColdGateOff = 0.0
— Minimum Cold required to continue applying once started.
In multiplayer, clients always use the host’s values above. Client local values are ignored.
Debug
-
VerboseLogs = false
— Whentrue
, logs:- host/client role on join,
- config publish/receive,
- tick send/receive and whether a tick was applied or skipped (with reasons).
📦 Installation
- Download the mod manually and extract the files
- Drop the
.dll
into your/PEAK/BepInEx/plugins/
folder - Launch the game and the config will be generated automatically
🔥 Or use the Thunderstore Mod Manager for 1-click install 🔥
- Supports BepInEx
- Safe for singleplayer and host-approved multiplayer
🔥 How It Works (Behind the Scenes)
-
Host config broadcast
The host publishes a compact string (ColdPerSecond|TickSeconds|GateOn|GateOff
) to the room propertyVASO_CFG_V1
. Clients read this on join and whenever it changes, so everyone uses the host’s values. -
Per-player ticks via Photon events
The host sends a tiny RaiseEvent (code 113) everyTickSeconds
, targeted to each actor. This avoids PhotonView hacks and scene-load stalls. -
Local gating on the client
On receive, the client checksisSprinting
and current Cold >gateOff
. Only then is the effect applied — no effect when you’re not sprinting or when Cold is already low. -
Effect application
AppliesPeak.Afflictions.Affliction_AdjustColdOverTime
withstatusPerSecond = ColdPerSecond
forTickSeconds
, repeating while you keep sprinting and the gate allows it. -
Optional detailed logging
SetDebug.VerboseLogs = true
to log host/client role, config publish/receive, tick send/receive, and apply/skip reasons.
If the host doesn’t have the mod, no one gets the effect, even if a client does.
🔍 Troubleshooting
-
Client not getting the effect?
- Make sure the host has the mod.
- Set
VerboseLogs = true
on both host & client, sprint in a cold area for ~10s, then checkBepInEx/LogOutput.log
.- Host should show:
"[Vaso] Sent tick -> actor X"
. - Client should show:
"Tick applied"
or"Tick ignored"
plus sprinting/cold details.
- Host should show:
-
Values not matching?
- Clients always adopt the host’s config via room property sync. Change the host’s config and re-enter the room.
👑 Credits
Author - mod created by tony4twenty
Check out my other PEAK mods
Stay fast. Stay warm. Stay alive.
CHANGELOG
Changelog
[1.2.1] - 2025-08-24
- Removede the leftover PhotonCustomPropsUtils dependecy stuff I didnt remove before previous update -_-
[1.2.0] - 2025-08-24
- Host-authoritative behavior: effect only applies if the host has the mod; clients consume host ticks and settings.
- Config sync: host writes room property
VASO_CFG_V1
(pipe-packed); clients adopt host config on join and when updated. - Networking: per-actor ticks sent via Photon RaiseEvent (no PhotonView required); prevents scene-load hangs.
- Reliability: broadcast ticks → clients gate locally (must be sprinting &
Cold > gateOff
); hysteresis reduces flicker. - Compatibility: explicit
IInRoomCallbacks
/IMatchmakingCallbacks
/IOnEventCallback
implementations for PEAK’s PUN signatures; handles host migration (re-publishes config and restarts loop). - Debugging: new config
Debug.VerboseLogs
with detailed join, publish/receive, and tick apply/skip messages. - Fixes: resolved client not receiving effects under host configs; removed ambiguous
Hashtable
usage and invalid PhotonView IDs.
[1.1.0] - 2025-08-12
- Checks if player has cold affliction before activating, removing unwanted VFX/SFX anytime the player runs
[1.0.0] - 2025-08-06
- Initial release.