WeightsRebalanced
Customize item weights in kg with working multiplayer sync, global/category multipliers, presets, hot reload and unit selection.Changelog
All notable changes to Weights Rebalanced will be documented in this file.
[2.1.0] - 2026-07-05
New Features
- Global Weight Multiplier - one slider scaling all item weights at once
- Per-Category Multipliers - separate multipliers for Scrap / Equipment / Store / Modded items
- Display Unit selection - HUD weight counter can show Kilograms, Pounds (vanilla) or Both
- Weights of 0 kg are now allowed (vanilla weightless items like the flashlight stay weightless)
Fixed
- Multiplayer sync never actually fired - the host only tried to sync 2 s after StartOfRound.Start (before any client is connected) and never subscribed to OnClientConnectedCallback. Clients now receive weights the moment they connect, including late joiners.
- Sync broke after the first lobby - the message handler was registered once per game session, but Netcode recreates CustomMessagingManager on every StartHost/StartClient. It is now re-registered for each session.
- Client configs were overwritten on disk by the host's weights - synced values are now kept in a runtime-only override table; the local config file is never touched, so nothing can be lost on crash.
- Wrong kg conversion factor - the game displays (carryWeight - 1) * 105 lb; the mod used * 100, so all displayed/configured weights were ~5% off from vanilla. Now uses the exact vanilla factor.
- Changing the weight of a held item corrupted carry weight permanently - the game subtracts the CURRENT item weight on drop; the mod now adjusts every holder's carryWeight by the delta when weights change mid-game.
- Modded item detection never worked - item.GetType().Assembly is always the vanilla assembly. Modded items are now detected through LethalLib's registration lists via reflection.
- Presets were saved with the system locale (e.g. "12,5" on Polish systems) making them non-shareable - now always invariant culture, with backward-compatible parsing.
- HUD weight is now updated by a postfix on HUDManager.UpdateWeightCounter (the only place vanilla writes "lb") instead of patching HUDManager.Update every frame.
- HUD value is derived from the real carryWeight, so dead bodies and other mods' weight changes are displayed correctly.
- Removed dead code: scan-node lb->kg patch (scan nodes never show lb and used the wrong UI type) and the DisplayNewScrapFound patch.
Technical
- Built against BepInEx 5.4.23.5
- Weight application centralized in WeightApplier with original-asset-weight tracking
[2.0.1] - 2026-01-10
- Fixed manifest
[2.0.0] - 2026-01-09
Major Features
- Multiplayer Synchronization - Host-to-client weight sync via Unity Netcode
- Automatic sync on client connect
- Late joiner support
- Hot reload broadcasts to all clients
- Original config restoration on disconnect
- Dynamic Item Detection - Removed hardcoded item lists
- Assembly-based vanilla vs modded detection
- Automatic categorization (Scrap/Equipment/Store/Modded)
- Works with any mod without updates needed
- Preset System - Save and load weight configurations
- Save current weights as preset
- Load vanilla weights preset
- Import/export for sharing with friends
- Simple text format for easy editing
- Hot Reload - Change weights mid-game without restart
- Config watcher monitors changes
- Updates all active items in real-time
- Broadcasts to clients if host
Improvements
- Config Validation - All weights clamped to 0.1-500 kg range
- Enhanced Descriptions - Config shows vanilla weight and valid range
- Safety Helpers - Comprehensive error handling and validation
- Optimized HUD Updates - Cached inventory hash reduces CPU usage
- Performance - Event-based patching with Update fallback
LethalConfig Integration
- New buttons:
- Save Current as Preset
- Load Vanilla Weights
- Network Sync Status
- Diagnostic: Print Item Detection
- Updated slider ranges with validation
- Real-time updates without restart
Technical
- Added
ConfigValidator.cs- Weight validation system - Added
SafetyHelpers.cs- Error handling utilities - Added
ItemDetection/namespace:ItemClassifier.cs- Vanilla/modded detectionCategoryDetector.cs- Item categorizationDiagnosticCommands.cs- Debug tools
- Added
Presets/PresetManager.cs- Preset management - Added
HotReload/ConfigWatcher.cs- Real-time config monitoring - Added
Networking/namespace:WeightSyncManager.cs- Multiplayer synchronization
- Added
Patches/NetworkPatches.cs- Network event hooks - Improved
Patches/WeightPatches.cs- Optimized HUD updates
Bug Fixes
- Fixed HUD showing "lb" instead of "kg" in all scenarios
- Fixed potential null reference exceptions
- Fixed item validation edge cases
- Fixed network sync timing issues
Removed
- Hardcoded vanilla item lists (42 scrap, 17 store, 3 equipment items)
- Update-only HUD patching (replaced with hybrid approach)
[1.0.0] - Initial Release
Features
- Customize item weights in kilograms
- Per-item configuration
- LethalConfig integration (optional)
- Weight display in kg instead of pounds
- Basic item categorization
Note: Version 1.0.0 was the initial internal release. Version 2.0.0 is the first public Thunderstore release with major enhancements.
