
BaconFixer
Fixes for big modpacks: $0 store prices, DunGen load errors, dark interiors from destroyed lights, duplicate network prefab errors, games frozen on quit, and weather bonuses and dangers in the terminal. Replaces DunGenReferenceFixer.BaconFixer
Fixes for big Lethal Company modpacks, in one mod. It changes nothing on the network, so players can use it without everyone in the lobby having it.
Mods it fixes
Each entry says what goes wrong, why, and how to see it yourself. Versions are the ones tested on game v81. If a mod has been updated since, its problem may already be gone.
To compare, disable BaconFixer in your mod manager, launch and follow the test, then enable it and repeat. Log lines are in BepInEx/LogOutput.log in your profile.
MrovLib 0.4.15, shown by TerminalFormatter 0.3.9: $0 store prices
- Affects: LethalLevelLoader unlockables, such as items from Farming and Cooking Mod by MelanieMelicious, and Magic sphere from Wesley's Moons.
- Why: MrovLib reads the price from the item's info node, which is often $0. BaconFixer uses the real price from the buy node.
- Test: Host a lobby and type
storein the terminal. Without BaconFixer these items show $0. With it they show their real price, and the log hasFixed store price for 'Magic sphere': $140.
loaforcsSoundAPI.LethalCompany 1.0.2: DunGen load errors
- Why: It still looks for DunGen inside
Assembly-CSharp, but the game moved DunGen toDunGen.dll. Its dungeon name condition throws duringAudioSource.Play, which interrupts ambient sounds. BaconFixer forwards those types toDunGen.dllin memory, and game files on disk are not changed. - Test: Land on a moon. Without BaconFixer the log has
RoundManagerPatch::Reporting(). Error: System.TypeLoadException. With it that error is gone, and the log hasForwarding 133 DunGen types from Assembly-CSharp to DunGen.dll.
DunGenReferenceFixer 0.0.1: loading crash
- Why: Its native hook rewrites a Unity function,
MonoManager::GetMonoClassWithAssemblyName, on every call with no lock, so two loading threads can collide and crash the game. BaconFixer's forwarders answer the same lookups, so that mod isn't needed. Remove it if you have it, because BaconFixer can't turn its hook off. - Test: This can't be triggered on demand. It was seen once in 51 launches, as an access violation at
UnityPlayer.dll+0x7842E0, the function it hooks. If your log hasPatched MonoManager::GetMonoClassWithAssemblyName(), the hook is still active.
LethalModDataLib 1.2.2: mod data not registering
- Affects: Plugins that load after any plugin that failed to load, such as WesleysInteriorShenanigans inside Wesley's Interiors 5.0.19.
- Why: It loops over every plugin, and a failed plugin aborts the loop, so plugins after it never register their mod data. BaconFixer skips failed plugins and carries on.
- Test: Launch to the main menu with both installed. Without BaconFixer the log has a
NullReferenceExceptionfromModDataAttributeCollector. With it the log hasModDataFix: scanned N plugin(s), skipped 1 that failed to load.
LethalResonance 4.7.8, loaded by loaforcsSoundAPI 2.0.13: sound pack errors
- Why: Its
meltdown.jsonreplaces sounds from FacilityMeltdown. Without that mod installed, SoundAPI logs errors on every launch. BaconFixer stops those errors, and your sounds stay the same. - Test: Launch without FacilityMeltdown. Without BaconFixer the log has
2 fail(s) while loadingformeltdown.json, andMapping: '#FacilityMeltdown:warning_voice' has not been found. With it those lines are gone.
Wesley's Interiors 5.0.19 and Wesley's Moons 7.0.18: duplicate prefab errors
- Why: Several of their bundles ship the same prefab, such as Gastank. Netcode keeps the first copy and logs an error for the others. BaconFixer keeps the same result without the error.
- Test: Launch to the main menu. Without BaconFixer the log has
NetworkPrefab (Gastank) has a duplicate GlobalObjectIdHash source entry value of: 298664861!. With it the log hasSkipped duplicate network prefab 'Gastank' (hash 298664861).
TerminalUtils 0.0.18 and WeatherRegistry 0.8.8: terminal stutter
- Why: They call HarmonyX's
AccessTools.TypeByName, which can scan every type in every assembly. BaconFixer caches the results. - Test: In a big pack, type
moonsorstorefor the first time after launching. Without BaconFixer it stalls for 1-2 seconds the first time. With it there is no stall.
Chameleon 2.4.6 with Wesley's Interiors 5.0.19: Spooky Manor windows
- Why: Spooky Manor is built from the manor's tiles, including its fake windows, but Chameleon only sets windows up in the vanilla manor. In Spooky Manor they always show the default pasture view and stay on when the power goes out. BaconFixer runs Chameleon's window setup there too, so they follow its window lists and
PowerOffWindows. - Test: Land on a moon with a different window list, such as Rend, when Spooky Manor generates, and find a room with windows. Without BaconFixer they show the default view. With it they show that moon's view, and the log has
Cached window tile instance.
Base game v81, RoundManager: dark interiors
- Why: An interior can destroy a light after the game has built its light list. The loop that switches lights then throws, so later lights keep their old state and part of the building can stay dark. BaconFixer removes destroyed lights from the list before each step.
- Test: This needs an interior that destroys a light, and most don't. Without BaconFixer the log has a
NullReferenceExceptionwithRoundManager+<turnOnLights>in its stack. With it that error is gone.
Big modpacks: game freezing on quit
- Why: The cause isn't known yet. The game can stop during its final shutdown, after every mod's quit code has run, leaving a frozen window until you end the process. With about 100 mods it happened on 2 of 6 quits after landing on a moon, and never on quits without a landing.
- What BaconFixer does: This doesn't fix the cause. If the game is still running 15 seconds after you quit, BaconFixer closes it. A normal quit finishes first, so the timer never fires. It closed a freeze forced on purpose in testing, but a natural freeze hasn't happened with it yet.
- Test: This can't be triggered on demand. After a frozen quit,
Player.login%USERPROFILE%\AppData\LocalLow\ZeekerssRBLX\Lethal Companystops afterInput System module state changed to: Shutdown., with noMemory Statistics:line. With BaconFixer the window closes by itself within 15 seconds.
Terminal additions
Both need WeatherRegistry.
- Moons list and route pages (needs TerminalUtils): weather shows its bonuses, such as
Eclipsed $+35% loot+15%.$is scrap value andlootis scrap amount. - Route confirm page (needs TerminalFormatter): a
SCRAP BONUSline and aDANGERline that explain the weather.
Limits
Fixes for other mods check that those mods are installed, and skip themselves if they are not.
Different prefabs that share a hash still spawn as the first one registered, because a real fix needs every player's game to agree. BaconFixer logs a warning for these, such as Network hash 3155849242 is shared by 'GASteelDoorMapModel' and 'SteelDoorMapModel2'.
Two log messages remain. DawnLib logs Couldn't match DestroyItemInSlot when DestroyItemInSlotFix is installed, which JLL's package does, though that mod fixes the same bug. WesleysInteriorShenanigans, inside Wesley's Interiors, warns that it could not be instantiated. It was built for an older game version and stays off on purpose.
Feedback
Found a bug, or know a mod BaconFixer should fix or support? Message me on Discord: bac_kun.
AI disclosure
The code and this README were generated with Claude Code, Anthropic's AI coding agent. The author directed the work and tested the mod in game.