

You may be familiar with SharedUpgrades or SyncHostUpgrades
This mod is a combination of both, and it is not buggy, not laggy, and not inefficient.
The code behind this mod only runs when a player consumes an upgrade, a player joins the game, or a level is loaded.
This is different behavior than the other mods, which run every frame to check for upgrades.
It was programmed and designed properly.
LateStart is called which fetches the
upgrade values and updates the underlying properties. This means, that once a player has loaded into the game, only
NON-modded consumable upgrades will change the underlying properties and henceforth be applied to your player.When a player consumes an upgrade, it changes the appropriate underlying properties of the player.
PlayerAvatar.upgradeMapPlayerCount,
PhysGrabber.grabStrength, PhysGrabber.throwStrength, PhysGrabber.grabRangeInside the PunManager there are functions for UpdateThrowStrength, UpdateGrabStrength, UpdateGrabRange, etc.
When a player consumes an upgrade, it is possible to call PunManager.UpdateThrowStrength or similar, and these functions
will update the underlying properties of the player, in this case PhysGrabber.throwStrength = newValue.
There are no such functions to call for modded upgrades
The only way to notify the modded upgrade is if the modded upgrade required this mod SyncUpgrades as a dependency.
The only time the underlying properties are updated are as follows
LateStart is called which loads the underlying properties)There are no built-in RPC calls for modded upgrades
"Truck Lobby" phase.This is a problem with the mod not sending the upgrade event to the server.
Developers please examine Patches/PunManagerPatch.cs