PEAK
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
5 months ago
Downloads
2.4K
Size
167KB

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.


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. Configurable drop height.
[Tumbleweed] Tumbleweed rain: same pattern as the banana rain but with PEAK's native tumbleweed prefab.
[Dynamite] Drops a stick of lit dynamite somewhere near a random player every wave. Configurable distance and an option to drop unlit (for harvesting).
[MarkerSpawn] Press middle-click to drop a ping → spawns a pickaxe at the marker location, attached to the nearest surface when possible. One per player at a time — re-pinging moves it.
[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%).

Nothing fires while you're at the airport / lobby — events only run inside an actual mountain run.

Install

Install via Thunderstore Mod Manager or r2modman, or drop HappyPeak.dll into <PEAK install>/BepInEx/plugins/ manually.

Requires the BepInExPack for PEAK.

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 + Chinese) right above it.

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 2.0 Flat multiplier. 1 = vanilla, 2 = double, 3 = triple. Rounded to integer internally.

[Tornado]

Key Default Description
EnableRandomTornadoes true Toggle.
TornadoIntervalMin 10 Min seconds between waves.
TornadoIntervalMax 30 Max seconds between waves.
TornadoesPerWave 1 How many tornadoes per wave.
TornadoLifetime 60 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 10 Min seconds between waves.
BananaPeelIntervalMax 30 Max seconds.
BananaPeelsPerPlayerMin 2 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 10 Min seconds between waves.
TumbleweedIntervalMax 30 Max seconds.
TumbleweedsPerPlayerMin 2 Min tumbleweeds rained per player.
TumbleweedsPerPlayerMax 5 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 15 Min seconds between drops.
DynamiteIntervalMax 30 Max seconds.
DynamiteCountPerWave 1 Sticks per wave.
DynamiteOffsetMin 20 Min meters from chosen player. Below ~5 = nuke them.
DynamiteOffsetMax 100 Max meters.
DynamiteLifetime 30 Hard cleanup if the fuse fizzles.
LightDynamiteOnSpawn true If false, drops as an unlit stick the player can pick up.

[MarkerSpawn]

Key Default Description
EnableMarkerSpawn true Toggle.
MarkerSpawnLifetime 0 Seconds before the spawned pickaxe is removed. 0 = persist forever.

[Eruption]

Key Default Description
EnableRandomEruptions true Toggle. Silently skipped on biomes without an EruptionSpawner.
EruptionIntervalMin 15 Min seconds between eruptions.
EruptionIntervalMax 30 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 60 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.

Tuning recipes

  • Chill mode: bump every IntervalMin/IntervalMax to 60–180s, set LootMultiplier = 1, keep traps at default.
  • Party chaos: leave defaults (10–30s intervals).
  • Pure loot mode: set every EnableXxx (except EnableItemRandomization and EnableLootScaling) to false.
  • All-traps, no events: disable Tornado/BananaPeel/Tumbleweed/Dynamite/Eruption, leave ChestTraps + Randomizer + LootScaling on.

Switching languages

Each config description is written on two ## lines: English on the first, Chinese on the second. No language toggle needed — read whichever you understand.

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. Disable LootScaling if you want ItemMultiplier to be authoritative.
  • Coexists fine with PeakRandomizedChaos if you turn off the overlapping events on either side.

Build from source

Requires:

  • .NET SDK 8 or newer (brew install dotnet on macOS, winget install Microsoft.DotNet.SDK.8 on 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 the Managed/ folder into the project root (auto-detected) or set <PeakGameRootDir> in Config.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

Credits

Implementation patterns adapted from:

  • PeakRandomizedChaos by DoggyDentures — Tornado, BananaPeel, Eruption event templates.
  • ItemMultiplier by IceMods — Spawner.SpawnItems patching shape.
  • HazardChaos by Bananegame — Dynamite.LightFlare insight.
  • TrappedLuggage by tony4twenty — chest trap pattern (Scoutmaster + Zombie spawning, RPC names).
  • RayMarkerMod by NanJu — PointPing polling for the marker spawn event.
  • PeakStranding by lnkr — verified 0_Items/ClimbingSpikeHammered prefab name for embedded pitons.
  • BetterPreplacedPitons by Gabriel — confirmed ShittyPiton is PEAK's internal name for the wooden Mesa pickaxe.
  • ItemBrowser by cherrycove — project structure / build setup template.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.