HappyPeak
Tired of a plain old climb? Spice up every PEAK run with a bunch of toggleable chaos events โ random tornadoes, banana rain, lit dynamite, chests that hatch zombies or summon the Scoutmaster, and more.
By Ninex
| Last updated | a week ago |
| Total downloads | 506 |
| Total rating | 0 |
| Categories | Mods |
| Dependency string | Ninex-HappyPeak-0.12.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack_PEAK
BepInEx pack for PEAK. Preconfigured and ready to use.
Preferred version: 5.4.2403README
HappyPeak
Tired of a plain old climb? Spice up every PEAK run with a bunch of toggleable chaos events.
A host-side PEAK mod that randomizes chest loot, scales loot by a configurable multiplier, and adds a handful of independently-toggleable chaos events designed to make co-op runs more unpredictable.
Every event has its own on/off switch and tuning knobs. Don't like banana rain? Turn it off. Want zombies to come out of every chest? Crank ZombieTrapChance. The defaults aim for "noticeable but not run-ruining"; tweak as you like.
Only the host needs to install this mod. Clients see all the effects without installing anything โ every spawn / replacement happens host-side and propagates over Photon.
๐ฅ Strongly recommended companion: ModConfig
Install PEAKModding's ModConfig alongside HappyPeak. It opens an in-game GUI where you can flip any config value live โ no need to alt-tab, edit text files, or restart the game. Boolean toggles, sliders, etc. all work out of the box with HappyPeak's settings.
It's a separate mod (one-click install from Thunderstore). Without it, you have to edit BepInEx/config/HappyPeak.cfg by hand and BepInEx hot-reloads it.
โ ๏ธ Upgrading from an older HappyPeak version?
If you had HappyPeak installed and are updating to a newer version that added/removed/renamed config entries, delete BepInEx/config/HappyPeak.cfg before launching. BepInEx never rewrites descriptions or new entries into an existing cfg, so you'll lose new toggles otherwise. Your custom values get reset โ back them up first if you'd tuned anything.
If you're unsure whether the version you're updating to changed configs, just delete the cfg. It costs you a 5-second restart and avoids weirdness. (As of 0.12.0 the safe zone, invincibility, chest trap, and tumbleweed sections are recent additions; 0.11.x doesn't have them.)
Features
| Section | What it does |
|---|---|
[Randomizer] |
Every chest you open returns a random item from PEAK's full item database (minus a small blacklist of cheat / quest / cosmetic-only items). Bushes, vines, ground spawners and other scenery are not affected. |
[LootScaling] |
Multiply chest loot quantity by a flat integer. 1 = vanilla, 2 = double, 3 = triple, etc. |
[Tornado] |
Periodically spawns tornadoes targeting a random player on any biome (vanilla PEAK only spawns them on Mesa). Disabled at the Kiln by default. |
[BananaPeel] |
Banana rain: drops 2โ5 banana peels (random color) from above each player every wave. |
[Tumbleweed] |
Tumbleweed rain: same pattern as banana rain but with PEAK's native tumbleweed prefab. |
[Dynamite] |
Drops a stick of dynamite right in front of each player's face (head height, 1m forward). Default is unlit so the player can pick it up and use it; flip LightDynamiteOnSpawn to true for explosive surprises. |
[MarkerSpawn] |
Middle-click ping โ spawns a Mesa pickaxe (้นคๅด้) on the exact surface you aimed at. Up to 2 unclaimed pickaxes per player; a new ping past that destroys the one farthest from you (never yanking one out of your hand). Auto-cleanup at 60s. |
[Eruption] |
Triggers PEAK's native "floor erupts in flames" effect near a random player. Requires the game's EruptionSpawner to exist in the current scene. |
[ChestTraps] |
Each chest opening rolls a small chance to spawn a Mushroom Zombie (default 10%) or teleport the Scoutmaster to hunt the opener (default 5%). |
[SafeZones] |
Standing near a campfire makes you immune to tornadoes / eruptions / banana rain / tumbleweed rain / dynamite drops โ and (optional) immune to all status damage (injury, cold, hunger, etc.). Healing still works. |
Events never fire while you're at the airport / lobby โ they only run inside an actual mountain run.
Install
Install via the Thunderstore Mod Manager or r2modman, or drop HappyPeak.dll into <PEAK install>/BepInEx/plugins/ manually.
Requires the BepInExPack for PEAK.
Also recommended: PEAKModding/ModConfig for in-game live configuration.
Configuration
After running the game once with the mod installed, BepInEx generates BepInEx/config/HappyPeak.cfg. Edit it with any text editor โ every entry has a bilingual description (English line + Chinese line) right above it.
Or use ModConfig for in-game live editing (see top of this page).
Full config reference
[Randomizer]
| Key | Default | Description |
|---|---|---|
EnableItemRandomization |
true |
Master switch for chest randomization. |
AdditionalBlacklist |
"" |
Comma-separated extra item names to exclude (e.g. Dynamite, Scorpion, CactusBall). |
[LootScaling]
| Key | Default | Description |
|---|---|---|
EnableLootScaling |
true |
Toggle for the chest loot multiplier. |
LootMultiplier |
3.0 |
Flat multiplier. 1 = vanilla, 2 = double, 3 = triple. Rounded to integer internally. |
[Tornado]
| Key | Default | Description |
|---|---|---|
EnableRandomTornadoes |
true |
Toggle. |
TornadoIntervalMin |
90 |
Min seconds between waves. |
TornadoIntervalMax |
120 |
Max seconds between waves. |
TornadoesPerWave |
1 |
How many tornadoes per wave. |
TornadoLifetime |
30 |
Seconds before each tornado is removed. |
EnableTornadoAtKiln |
false |
Allow tornadoes at the Kiln (off because they tend to wreck endgame). |
[BananaPeel]
| Key | Default | Description |
|---|---|---|
EnableRandomBananaPeels |
true |
Toggle. |
BananaPeelIntervalMin |
60 |
Min seconds between waves. |
BananaPeelIntervalMax |
90 |
Max seconds. |
BananaPeelsPerPlayerMin |
1 |
Min peels rained per player. |
BananaPeelsPerPlayerMax |
5 |
Max peels rained per player. |
BananaPeelLifetime |
30 |
Seconds before each peel is removed. |
BananaPeelDropHeight |
15 |
Meters above each player to spawn peels (gravity drops them). |
[Tumbleweed]
| Key | Default | Description |
|---|---|---|
EnableRandomTumbleweeds |
true |
Toggle. |
TumbleweedIntervalMin |
60 |
Min seconds between waves. |
TumbleweedIntervalMax |
90 |
Max seconds. |
TumbleweedsPerPlayerMin |
1 |
Min tumbleweeds rained per player. |
TumbleweedsPerPlayerMax |
3 |
Max per player. |
TumbleweedLifetime |
15 |
Seconds before each tumbleweed is removed. |
TumbleweedDropHeight |
15 |
Meters above each player to spawn from. |
[Dynamite]
| Key | Default | Description |
|---|---|---|
EnableRandomDynamite |
true |
Toggle. |
DynamiteIntervalMin |
60 |
Min seconds between drops. |
DynamiteIntervalMax |
90 |
Max seconds. |
DynamiteCountPerWave |
1 |
Sticks per wave. |
DynamiteForwardDistance |
1 |
Meters in front of the player's head where the stick spawns. |
DynamiteDropHeight |
0 |
Extra meters above the player's head. 0 = level with head. |
DynamiteSidewaysJitter |
0.5 |
Random sideways scatter (meters) so it's not always dead-center. |
DynamiteLifetime |
30 |
Hard cleanup if the fuse fizzles. |
LightDynamiteOnSpawn |
false |
If true, the stick is lit on spawn and explodes after its fuse. Default false = drops unlit so the player can pick it up. |
[MarkerSpawn]
| Key | Default | Description |
|---|---|---|
EnableMarkerSpawn |
true |
Toggle. |
Behavior is hardcoded (no extra knobs): up to 2 pickaxes per player, auto-cleanup at 60 seconds. New pings past the cap evict the pickaxe farthest from you so a pickaxe in your hand is never destroyed.
[Eruption]
| Key | Default | Description |
|---|---|---|
EnableRandomEruptions |
true |
Toggle. Silently skipped on biomes without an EruptionSpawner. |
EruptionIntervalMin |
60 |
Min seconds between eruptions. |
EruptionIntervalMax |
90 |
Max seconds. |
EruptionOffsetMin |
0 |
Min meters from chosen player (0 = directly under their feet). |
EruptionOffsetMax |
5 |
Max meters. |
[ChestTraps]
| Key | Default | Description |
|---|---|---|
EnableScoutmasterTrap |
true |
Toggle for the "open chest โ Scoutmaster teleports in" trap. |
ScoutmasterTrapChance |
5 |
Percent chance per chest opened. Keep it low โ the Scoutmaster is brutal. |
ScoutmasterChaseTime |
30 |
Seconds the Scoutmaster is forced to hunt the opener. |
EnableZombieTrap |
true |
Toggle for the "open chest โ mushroom zombies appear" trap. |
ZombieTrapChance |
10 |
Percent chance per chest opened. |
ZombieCountMin |
1 |
Min zombies per trigger. |
ZombieCountMax |
2 |
Max zombies per trigger. |
ZombieLifetime |
60 |
Seconds before each spawned zombie is removed. |
[SafeZones]
| Key | Default | Description |
|---|---|---|
CampfireSafeRadius |
30 |
Radius in meters around any campfire (biome rest + player-lit) that counts as a safe zone. 0 = disable safe zones. |
EnableCampfireInvincibility |
true |
When true, players inside the safe radius take no status damage at all (injury, cold, hot, hunger, poison, etc.). Healing still works. |
Affected events: Tornado, Eruption, BananaPeel, Tumbleweed, Dynamite. Players standing inside the safe radius are skipped by those events.
Tuning recipes
- Default (balanced): leave everything alone. Events fire roughly every 1โ2 minutes per type, loot is tripled, traps are rare.
- Chill mode: bump every
IntervalMin/IntervalMaxto 180โ300s, setLootMultiplier = 1, traps at 1โ2%. - Party chaos: drop intervals back to 10โ30s across the board.
- Pure loot mode: set every
EnableXxx(exceptEnableItemRandomizationandEnableLootScaling) tofalse. - All-traps, no events: disable Tornado/BananaPeel/Tumbleweed/Dynamite/Eruption, leave ChestTraps + Randomizer + LootScaling on.
- Demolition mode:
LightDynamiteOnSpawn = true,DynamiteForwardDistance = 0,DynamiteDropHeight = 0โ bombs detonate exactly where the player is standing.
Compatibility
- Targets BepInExPack PEAK 5.4.2403.
- Should coexist with most cosmetic / QoL mods.
- Likely conflicts with mods that also patch
Spawner.SpawnItems(e.g.ItemMultiplier) โ Harmony will let one of them win on each call. DisableLootScalingif you wantItemMultiplierto be authoritative. - Coexists fine with
PeakRandomizedChaosif you turn off the overlapping events on either side.
Build from source
Requires:
- .NET SDK 8 or newer (
brew install dotneton macOS,winget install Microsoft.DotNet.SDK.8on Windows). - A local PEAK install โ the build pulls game DLLs from
<PeakGameRootDir>/PEAK_Data/Managed/. If your install isn't at the default Steam path, you can either copy theManaged/folder into the project root (auto-detected) or set<PeakGameRootDir>inConfig.Build.user.props.
dotnet restore
dotnet build -c Release
DLL ends up at artifacts/bin/HappyPeak/release/HappyPeak.dll.
To produce a Thunderstore package:
dotnet tool restore
dotnet build -c Release -target:PackTS
Recent changes
Full history in CHANGELOG.md. Top-level summary:
-
0.12.0 โ Big quality-of-life release.
- MarkerSpawn now drops a real Mesa pickaxe (้นคๅด้) instead of a piton, captured instantly via Harmony Postfix, attached precisely to whatever surface the ping crosshair landed on. Spawned pickaxes don't crack. Up to 2 per player, evicts the one farthest from you so the held / freshly-spawned ones are always safe.
- Dynamite redesigned as a "face-drop": spawns in front of the player's head from head height, default unlit (so the player can pick it up and use it).
- New events: Tumbleweed rain, Chest traps (Scoutmaster summon + Mushroom Zombies).
- New SafeZones section: standing near a campfire makes you immune to all hazardous events and (optionally) to all status damage.
- Fix: bushes no longer get randomized items (was a side effect of patching
LootDatainstead ofSpawner.SpawnItems). - Fix: held items no longer accidentally destroyed by marker eviction.
- All networked spawns now properly replicate destroy to clients (no ghost objects).
- README + cfg descriptions fully bilingual (English + Chinese).
-
0.11.5 โ First public Thunderstore release: chest randomization, loot multiplier, Tornado, BananaPeel (trail-style), Dynamite (lit), MarkerSpawn (piton), Eruption.
Credits
Implementation patterns adapted from:
PeakRandomizedChaosby DoggyDentures โ Tornado, BananaPeel, Eruption event templates.ItemMultiplierby IceMods โSpawner.SpawnItemspatching shape.HazardChaosby Bananegame โDynamite.LightFlareinsight.TrappedLuggageby tony4twenty โ chest trap pattern (Scoutmaster + Zombie spawning, RPC names).PeakStrandingby lnkr โ verified0_Items/ClimbingSpikeHammeredprefab name for embedded pitons.BetterPreplacedPitonsby Gabriel โ confirmedShittyPitonis PEAK's internal name for the wooden Mesa pickaxe.RandomEventsby Wesmania โ verified0_Items/PickAxeHammered_Shittyprefab name for spawning the Mesa pickaxe.ItemBrowserby cherrycove โ project structure / build setup template.