SpongeMods-SpongePEAKQOL icon

SpongePEAKQOL

Quality-of-life improvements for PEAK, each individually toggleable.

Last updated 7 hours ago
Total downloads 41
Total rating 0 
Categories
Dependency string SpongeMods-SpongePEAKQOL-1.0.0
Dependants 1 other package depends on this package

This mod requires the following mods to function

BepInEx-BepInExPack_PEAK-5.4.75301 icon
BepInEx-BepInExPack_PEAK

BepInEx pack for PEAK. Preconfigured and ready to use.

Preferred version: 5.4.75301
SpongeMods-SpongePEAKCore-1.0.0 icon
SpongeMods-SpongePEAKCore

Shared foundation for Sponge PEAK mods: logging, config, reflection caching and patch hosting. Not a standalone mod.

Preferred version: 1.0.0
SpongeMods-SpongePEAKLib-1.0.0 icon
SpongeMods-SpongePEAKLib

Modding API for PEAK, and a Mods tab in the game's own settings menu for toggling any installed mod's features.

Preferred version: 1.0.0

README

SpongePEAKQOL

Quality-of-life improvements for PEAK, bundled with a toggle for every feature.

Sibling to SpongePEAKOptimized, deliberately kept separate. That mod is for fixes and performance, things that make the game work as intended. This one is for convenience, things that change behaviour because it is inconvenient rather than broken. Keeping them apart means you do not have to accept preference changes to get bug fixes.

Features

Every feature has its own setting in BepInEx/config/com.sponge.peakqol.cfg.

Feature Default What it does
BackpacksForEveryone on Gives every player a backpack when a run starts, if they do not already have one. Host only.
CatchFallingPlayers on Cushions the landing of teammates who fall close to you, using the game's own catch mechanic.
DroppablePassport on Lets you drop and throw the Passport instead of it occupying a slot permanently.
ExampleCustomItems on Adds example cloned items (Grape Berrynana, Nuclear Dynamite) that spawn naturally. Demonstrates the item cloning API.
GhostPing on Lets dead players ping locations, so they can still help the group navigate.
ItemInfo on Shows remaining uses and details for the item you are holding.
LastChanceCast on Delays passing out while you are mid-cast, so a last-second item use is not wasted.
MushroomInfo on Shows what each mushroom does in this run, instead of learning by trial and error.
Push on Lets players shove each other. On by default; the host owns it for the whole lobby, because being pushed is not something the person falling gets to opt out of.
RopeCutting on Lets players cut a rope down so a badly placed one is not permanent. Refuses a rope with someone on it unless that guard is disabled. The host can switch it off.
RopeSwinging on Lets players swing on ropes rather than being dropped when the rope passes vertical. The host decides whether it is allowed for the lobby.
TeammateStats on Shows nearby teammates' stamina above their heads so you can tell who needs a rest.

A note on LastChanceCast

This is the one feature here that changes outcomes rather than convenience, so it is worth being explicit: the reprieve lasts only while a cast is actively running. It cannot be held indefinitely. The moment the cast completes or is cancelled, the pass-out proceeds, and afflictions keep accumulating throughout.

It removes a timing coin-flip, not the consequence. If you would rather not have it, turn it off and the rest still works.

Compatibility

Mod Overlap
Icebox-IForgorPassport same Passport drop/throw change
IntRabbit-Last_Chance same mid-cast pass-out delay
Yueby-ItemInfo same held-item readout
Kirshoo-MushroomsNOW same mushroom effect display
nickklmao-PeakStats same teammate stamina display
boxofbiscuits97-GhostPing both allow pinging while dead
tony4twenty-Catch_Players both cushion nearby falling players
Nozz-BagsForEveryone both hand out backpacks at run start

Determined by comparing the game methods and fields each mod touches against ours. Disable those if you have them, or disable the matching feature here.

Not tested running side by side with them in a live session.

Prior art

Independent implementation, written against PEAK's own assemblies. The problems it addresses were identified by the mods listed above.

Custom items

ExampleCustomItems demonstrates the item cloning API in SpongePEAKLib: new items built from existing ones, with recolouring, scaling, custom effects and natural spawning. Two examples ship, and are enabled by default. They are additive: nothing vanilla stops spawning.

  • Grape Berrynana — a purple berrynana whose effect changes with each cook: drowsy and mildly filling raw, properly filling at two cooks, poisonous when burnt. Spawns in jungle berry bushes and luggage.
  • Nuclear Dynamite — five times the size, green, two hundred times the blast and two hundred times the force on loose objects, and it leaves a poison cloud. Rare, deep-biome luggage only, and barred from solo runs.

Like any content mod, everyone in the lobby should have it installed. Item ids are derived by hashing the item name rather than allocated in order, so every player independently arrives at the same id for the same item, whatever else they have installed. No coordination needed.

A player who is missing the mod will see log errors and be unable to pick the item up, but their game keeps running rather than breaking.

Host-only features

BackpacksForEveryone is host-driven by necessity: spawning is networked, so if every client did it independently each player would get one backpack per client in the room. If the host does not have this mod, the feature does nothing regardless of what clients have installed.

Everything else is local and works for you whatever the host is running.

Requirements

BepInEx, SpongePEAKCore and SpongePEAKLib. r2modman installs these automatically.

License

Free to use, stream, and include in modpacks. No attribution needed for any of that.

Attribution is only required if you decompile it and reuse the code. Please do not reupload it elsewhere or sell it.

Full terms in LICENSE.

Keybinds

Key Opens Setting
F7 Mushroom effect list MushroomInfo_ToggleKey
F Push the player you are looking at PushKey
G Cut the rope you are looking at RopeCutKey

All rebindable, in the config file or in Settings > Mods.

Configuration

Every setting is in BepInEx/config/com.sponge.peakqol.cfg, or in the game's own Settings > Mods tab.

Communication

Setting Type Default What it does
GhostPing on/off true Lets dead players ping locations, so they can still help the group navigate.

Display

Setting Type Default What it does
ItemInfo_ShowUses on/off true Shows remaining uses for consumable items.
ItemInfo_FontSize number 18 Font size for the held-item readout.
MushroomInfo_ToggleKey key F7 Key that shows or hides the mushroom effect list.
MushroomInfo_StartVisible on/off false Whether the list is shown without pressing the toggle key.
MushroomInfo_FontSize number 15 Font size for the mushroom effect list.
TeammateStats_ShowNames on/off true Shows each teammate's name above their stamina bar.
TeammateStats_MaxDistance number 30 Metres within which a teammate's stamina is shown.
ItemInfo on/off true Shows remaining uses and details for the item you are holding.
MushroomInfo on/off true Shows what each mushroom does in this run, instead of learning by trial and error.
TeammateStats on/off true Shows nearby teammates' stamina above their heads so you can tell who needs a rest.

Items

Setting Type Default What it does
Backpacks_PrefabName text Backpack Name of the backpack prefab to spawn, resolved under the game's 0_Items resource path.
Backpacks_SpawnDelaySeconds number 3 Seconds to wait after a run starts before handing out backpacks, so inventories are ready.
DroppablePassport on/off true Lets you drop and throw the Passport instead of it occupying a slot permanently.
BackpacksForEveryone on/off true Gives every player a backpack when a run starts, if they do not already have one. Host only.
ExampleCustomItems on/off true Adds example cloned items (Grape Berrynana, Nuclear Dynamite) that spawn naturally. Demonstrates the item cloning API. (replaces (new behaviour))

Movement

Setting Type Default What it does
RopeSwingMaxAngle number 150 How far past vertical a rope may swing before it drops you, in degrees. The game uses 90. Higher allows a fuller swing; beyond about 170 the rope can invert and look wrong.
PushKey key F Key that shoves the player you are looking at. Only works when the host allows pushing.
PushForce number 18 Impulse strength. Around 18 is a firm shove; much higher launches people, which is funny once and then ends someone's run.
PushRange number 3.5 How close you must be, in metres.
PushCooldown number 1 Seconds between pushes. Prevents holding the key from stunlocking someone and flooding the room with RPCs.
RopeCutKey key G Key that cuts the nearest rope. Only works when the host allows rope cutting.
RopeCutRange number 3 How close to the rope you must be, in metres.
RopeCutRequireEmpty on/off true Refuse to cut a rope somebody is currently climbing. Turning this off allows dropping other players, which is why the host rule exists at all.
RopeSwinging on/off true Lets players swing on ropes rather than being dropped when the rope passes vertical. The host decides whether it is allowed for the lobby.
Push on/off true Lets players shove each other. On by default; the host can switch it off for the being pushed is not something the person falling gets to opt out of.
RopeCutting on/off true Lets players cut a rope down so a badly placed one is not permanent. Refuses a rope with someone on it unless that guard is disabled. The host can switch it off.

Survival

Setting Type Default What it does
LastChance_Enabled on/off true Holds off passing out while an item cast is in progress. The reprieve ends as soon as the cast finishes or is cancelled.
Catch_Radius number 4 Metres within which a falling teammate's landing is cushioned.
Catch_MinFallSeconds number 0.6 How long someone must have been airborne before catching applies, so ordinary jumps are ignored.
LastChanceCast on/off true Delays passing out while you are mid-cast, so a last-second item use is not wasted.
CatchFallingPlayers on/off true Cushions the landing of teammates who fall close to you, using the game's own catch mechanic.