Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
SharedUpgradesPlus compatibilitytweaks
Host-controlled upgrade sharing with External Map / Personal sections, readable automatic two-column fitting, and saved per-player life charges. Preserves one team benefit per purchase without refilling spent lives.
| Date uploaded | a week ago |
| Version | 1.5.2 |
| Download link | ByteSizeMetal-SharedUpgradesPlus_compatibilitytweaks-1.5.2.zip |
| Downloads | 315 |
| Dependency string | ByteSizeMetal-SharedUpgradesPlus_compatibilitytweaks-1.5.2 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305Vippy-SharedUpgradesPlus
Host-only shared upgrades for R.E.P.O. Chance-based sharing, late join sync, modded upgrade support. Alternative to SharedUpgrades and BetterTeamUpgrades.
Preferred version: 1.6.2README
SharedUpgradesPlus-compatibilitytweaks
Author: ByteSizeMetal
Keeps supported upgrades consistent across the lobby using the host's settings. Shares personal upgrades, preserves one team benefit per world-upgrade purchase, and tracks each player's remaining life charges.
The upgrade panel
Upgrades appear under two subheaders, with indented entries:
- External Map shows the team's level for supported upgrades that affect the world, such as Valuable Density and Investor. Everyone can see the benefit without receiving extra copies that multiply its effect.
- Personal shows your own upgrades and remaining consumable charges. An exhausted life upgrade disappears from your list.
The list keeps the game's original font size. If it is too long for one column it splits into two, with a clear gap between them, and shrinks only if two columns still would not fit the free space on the HUD. Both sections keep their headers, each count stays beside its name, and no names are shortened to make room.
TextUpgradesUIScale is optional and can stay enabled. With this mod's fitting on, the final layout is measured from the original font size rather than an already-shrunk result. Turning FitUpgradePanel off lets the optional fitter use its own layout, including aligned columns.
Sharing and life charges
Ordinary permanent upgrades catch up to the highest level held by a connected teammate, when the host's sharing rules allow it. Supported world effects retain one contribution per purchase.
For supported REPOLib consumables, the host keeps purchase history and a separate spending balance for every player. Each pickup grants everyone immediately, regardless of who uses it. Spending a charge lowers only that player's balance. For example, after two Extra Life purchases, a player who has spent both sees no Extra Life row; a teammate who has spent none still has two.
New players can receive the run's grant history. Returning players receive purchases missed while away, with their own previous spending retained. Spending or rejoining never turns another player's unused lives into a refill. Level caps still apply, and purchases blocked by a cap do not become a hidden reserve of charges.
The ledger saves with the game's run stats. When first loading an existing save, the mod preserves observed balances: it cannot reconstruct spending that happened before the ledger was installed. It also cannot reliably undo inflated levels from an older sharing setup.
Second Chance from Extra Battle Upgrades currently uses a cooldown, rather than spending a level when activated. This mod preserves that behavior. Its level decreases only if the source mod actually consumes it.
Host settings
The current host controls compatibility rules, named per-upgrade choices, caps, charge bookkeeping, historical grants and the grouped panel/fitting options. Clients receive the policy automatically without having their saved config overwritten. Leaving the lobby restores their local choices; a new host supplies the next policy.
Use the same 1.5.1 version on the host and every client. Versions before 1.5.0 use a different policy format. Compatibility catch-up waits for valid host rules rather than guessing from a client's local settings.
Universal charge bookkeeping and highest-level permanent catch-up require the host's SharedUpgradesPlus sharing chance to be 100%. Global sharing, modded-upgrade sharing and the relevant per-upgrade sharing switches must also be enabled. Otherwise the normal purchase path remains in charge; the ledger does not override those exclusions or turn probabilistic sharing into guaranteed grants.
This synchronizes this compatibility mod's rules, not every balance setting in the underlying upgrade mods. Keep those mod versions and gameplay configs matched too. Pop-up visibility/duration and debug logging remain personal preferences.
Supported world effects
| Mod | External Map upgrades |
|---|---|
| SLRUpgradePack | Valuable Density, Object Value, Object Durability |
| Nikki's Upgrades | Investor |
| MoreUpgrades | Item Value |
These upgrades select their supported handling automatically. Valuable Density affects the next level's generation; it cannot add valuables to a level that has already been generated. MoreUpgrades' Valuable Count is a personal HUD counter, and Item Resist protects only items held or last grabbed by players who own it. Both follow ordinary permanent-upgrade sharing.
Other registered upgrades receive named options where their source can be identified. Generic REPOLib consumable handling needs the source mod's normal upgrade-item and level-change APIs. Custom activation paths may need a separate compatibility check.
Installation
Install on the host and every client. The host needs SharedUpgradesPlus for purchase sharing. Keep the upgrade mods you want to use; this package includes no content mods. Optional integrations activate only when their supported APIs are present.
This replaces SharedUpgradesFix and the older SharedUpgrades_SLRPatch. Remove or disable those older packages first. Keep one copy of this compatibility mod enabled and restart the game normally after installation.
For manual installation, put the DLL in:
BepInEx/plugins/SharedUpgradesPlus.CompatibilityTweaks/SharedUpgradesPlus.CompatibilityTweaks.dll
Configuration
Existing settings are retained in:
BepInEx/config/nakeem.SharedUpgradesFix.cfg
That filename stays the same for compatibility. The mod appears under its public name in the mod manager.
Upgrades have named entries grouped by source mod. Use Allow sharing to enable or disable one and Handling to choose its behavior. No typed upgrade IDs or exception lists are needed.
| Handling | Meaning |
|---|---|
| Automatic | Recommended. Selects the supported behavior for that upgrade. |
| SharedPermanent | Catches everyone up to the highest connected permanent level. |
| TeamPooled | Preserves individual contributions and shows one team total under External Map. |
| Consumable | Tracks shared purchases and individual spending when host ledger conditions are met. Never uses highest-level refill. |
Leave supported world upgrades on Automatic or TeamPooled. Extra Life and Second Chance remain protected as consumables.
| Section / option | Default | Effect |
|---|---|---|
| Consumable charges / HostChargeLedger | On | Host bookkeeping for supported purchases and per-player spending. |
| Consumable charges / GrantHistoryOnJoin | On | Grants past purchases to newcomers and missed purchases to returning players. Off skips historical grants while new pickups still share immediately. |
| Display / ShowTeamPooledLevels | On | Groups the panel into External Map and Personal. The existing config key is retained. |
| Display / FitUpgradePanel | On | Fits the list automatically, with or without TextUpgradesUIScale. |
The Team effects section controls individual compatibility adjustments. Disabling the ledger preserves its saved history. SharedUpgradesPlus' generic host-level late catch-up is excluded for consumables, because copying someone else's remaining count could restore spent charges.
Compatibility and reporting
Checked against the installed APIs for R.E.P.O. 0.5.0, SharedUpgradesPlus 1.6.2, REPOLib 4.3.0, MoreUpgrades 1.7.3, SLRUpgradePack 0.6.0 and TextUpgradesUIScale 1.4.1. Purchase, spending, save/load, host migration and layout behavior have offline regression checks; live multiplayer validation is still needed.
If players disagree, include the upgrade name, purchaser, mod versions and affected players' logs. State whether the mismatch is in the panel, remaining charges or the effect itself.
Original mods remain credited to their creators. This package contains compatibility code, not their content.
CHANGELOG
1.7.1
- SharedUpgradesPlus is now listed as a dependency, so mod managers install it alongside this mod. No code changes.
1.7.0
- New
HideFinishedUpgradessetting, on by default. Upgrades stop appearing in the shop and in upgrade stand rerolls once another copy would do nothing for anyone connected. - Covers one-and-done upgrades: Map Player Count, Map Player Tracker, Map Enemy Tracker, Map Cosmetics Tracker and Valuable Count.
- Also covers upgrades at their own limit, such as Max Purchase Amount in MoreUpgrades or Maximum Level in SLR Inventory Slot.
- Until then, the shop carries no more copies than the team can use, even when a shop mod raises the limit.
- New
ExtraOneAndDoneUpgradessetting for adding other upgrades by name. - Only the host needs this version for the shop change.
1.6.0
- New plugin ID:
ByteSizeMetal.SharedUpgradesPlusCompatibilityTweaks. Everyone in a lobby should update together. - Existing settings move to the new settings file automatically the first time this version starts.
- Remove old references to mods that no longer exist under those IDs. Nothing about upgrades, sharing or the panel changes.
- Boot-time warnings from other mods that listed the old ID no longer match this mod.
1.5.6
- Move two-column upgrade lists closer to the left edge of the screen. The gap beside the column is 75% smaller.
- Line the UPGRADES header up with the rows in two-column lists, so it stays on screen.
- Single-column lists stay where the game puts them.
1.5.5
- Keep two-column upgrade lists off the map. The whole section now lands just inside the left edge of the screen, and the gap between columns is half what it was.
- Single-column lists stay where the game puts them.
- Measure from the real screen edge when hiding the list too, since the game's HUD area sits slightly inside it.
1.5.4
- Fix External Map upgrades also appearing under Personal for players who had bought them, such as Object Durability on the host. SLRUpgradePack renames the upgrade list before the panel reads it, so the panel could not match a player's own level to the team total. The panel now reads the saved upgrade names directly.
- This should also fix Second Chance showing twice, and a spent charge staying in the list, since both came from the same mismatch.
- Some Personal rows may change wording or order: they now use the names the game and each mod give their upgrades.
- Nothing about levels, sharing or charges changes. This only affects what the list shows.
1.5.3
- Fix the two-column upgrade list staying on screen when you are not holding the map button. The game hides the panel by moving it a fixed distance, which was only enough for a narrow list. It now moves far enough to clear the screen for the current list width, then slides back to the same spot.
- Short lists keep the original hide distance, and it is restored if the list shrinks or fitting is turned off.
- If two upgrade rows ever show the same name, the log now names the saved upgrades behind them and their levels. Nothing about those upgrades is changed.
1.5.2
- Fix the upgrade list rendering far too small: it was being fitted into the game's 50-unit text rectangle, which the native list always overflows. It now keeps the game's original font size and measures the free HUD space instead.
- Make two columns actually appear. The numbers field is a child of the names field, so the previous check always failed. Lists too long for one column now split into two with a wider gap, and text shrinks only if two columns still would not fit.
- Keep each count on the same line as its name, and stop moving the panel's rectangles so the layout cannot fight the panel's slide and bounce animations.
- Treat MoreUpgrades Item Resist as a Personal upgrade. It again protects only items held by players who own it, or last grabbed by one, instead of using the team total. Levels are shared like other personal upgrades. Explicit TeamPooled handling still works.
1.5.1
- Aim for the original upgrade font size instead of starting from an already-shrunk TextUpgradesUIScale result.
- Compare one- and two-column grouped layouts and choose two columns when they allow larger text within the existing upgrade area.
- Keep both section headers, aligned per-column counts and all upgrade names. Restore the original rectangles/style before each refresh so the layout cannot progressively shrink or drift.
- Leave the optional UI fitter in control when this mod's FitUpgradePanel option is off. Sharing and charge bookkeeping are unchanged.
1.5.0
- Group the upgrade panel into External Map and Personal, with indented entries instead of Team suffixes.
- Add automatic panel fitting that also works with TextUpgradesUIScale, including its aligned columns.
- Let the host record consumable purchases and each player's spending separately in the run save. A pickup grants everyone immediately; spending affects only that player's balance and panel.
- Catch up new and returning players from purchase history without restoring used charges. Hide exhausted charge upgrades and discard grants blocked by level caps.
- Add host options for the charge ledger, historical grants on join and panel fitting. Preserve cooldown-based Second Chance behavior.
- Refresh permanent sharing and team totals after purchases. Guard competing purchase handlers and stale charge updates against duplicate grants or refills.
- Update the host protocol: install 1.5.0 on every player.
1.4.0
- Use the current host's compatibility settings, per-upgrade handling/sharing and source-level caps throughout the lobby.
- Send rules on late join, host changes and live configuration changes without overwriting clients' saved settings.
- Pause compatibility catch-up while host rules are unavailable, and reject malformed or non-host policy messages.
- Make supported team-effect adapters follow the host even when a client's local toggle was disabled at startup.
- Keep personal popup preferences local and retain spent-life protection.
1.3.1
- Renamed the mod to SharedUpgradesPlus-compatibilitytweaks and the DLL to SharedUpgradesPlus.CompatibilityTweaks.dll.
- Rewrote the package description and instructions for easier setup.
- Kept existing settings, upgrade choices and sharing behavior.
1.3.0
- Improved synchronization and team-level display for supported SLRUpgradePack, Nikki's Upgrades and MoreUpgrades world effects.
- Kept one team benefit per purchase instead of multiplying the effect across players.
- Added named compatibility options and retained protection against refilling spent Extra Life or Second Chance charges.