UpgradeLimiter

v0.4.3·Updated 2026-05-27

Caps how many of each player upgrade can be stacked. Configurable per upgrade.

About this mod Author’s original text

UpgradeLimiter

A R.E.P.O. mod that caps how many of each player upgrade can be stacked. Each upgrade has its own enable toggle and max-stacks value.

When a player tries to consume an upgrade past the cap, the upgrade crystal is consumed normally but the stat does not increase. Decrements and resets pass through unchanged.

Features

  • Per-upgrade Enabled toggle and MaxStacks value (0–99)
  • Covers all 13 base-game player upgrades (Health, Energy, ExtraJump, TumbleLaunch, TumbleClimb, TumbleWings, SprintSpeed, CrouchRest, GrabStrength, ThrowStrength, GrabRange, DeathHeadBattery, MapPlayerCount)
  • Modded UpgradePlayer* methods are auto-discovered via IL scanning and added to the config
  • Host-to-client sync via Photon room properties — only the host needs to configure caps
  • Live config reload: changing limits mid-run takes effect on the next pickup, no level reload needed
  • Compatible with REPOConfig — adjust settings in-game

Configuration

Config file: BepInEx/config/darkharasho.UpgradeLimiter.cfg

Each upgrade gets its own section:

[Health]

Enabled = false

MaxStacks = 5

[SprintSpeed]

Enabled = true

MaxStacks = 2

| Key | Default | Range | Description |

|-----|---------|-------|-------------|

| Enabled | false | — | When true, the upgrade is capped. When false, it behaves vanilla. |

| MaxStacks | 5 | 0–99 | Maximum stacks of this upgrade per player. 0 blocks every pickup (effectively disables the upgrade). |

Plus a sync section:

[Sync]

SyncToClients = true

When SyncToClients = true, the host pushes its caps to every client via Photon room properties and clients ignore their own local caps while in the room. When false, each client uses its own local config.

Multiplayer

The cap is enforced on the host's authoritative state, so toggling caps on a client without host sync will not actually limit the upgrade — only the host's settings matter for enforcement.

Dependencies

  • BepInExPack

Installation

Install Mod Manager / r2modman, or manually place UpgradeLimiter.dll in BepInEx/plugins/UpgradeLimiter.

Building

GAME_DIR="/path/to/REPO"./package.sh

Builds the DLL and produces a -ready zip. Install the zip via r2modman.

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

BepInEx-BepInExPack

File & checksum

Filename
UpgradeLimiter-0.4.3.zip
File size
95.4 KiB