mihow-WeightsRebalanced icon

WeightsRebalanced

Customize item weights in kg with working multiplayer sync, global/category multipliers, presets, hot reload and unit selection.

CHANGELOG

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 detection
    • CategoryDetector.cs - Item categorization
    • DiagnosticCommands.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.