Lethal Company
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
yesterday
Downloads
32
Size
156KB

MACO's Modpack Integration

A mod written for my own modpack. It exists because that pack needed fixes and cross-mod integration that no published mod provides: CodeRebirth's weapons without the coin economy that comes with them, crafting parts that turn up on all sixty-six moons rather than two, weather combinations the weather mods define and then skip. It is shared as-is and built around that pack rather than as a general-purpose mod, and anyone installing it should know that going in. Every feature is a switch, so whatever does not suit your install can be turned off.

Requires CodeRebirth and DawnLib. The recipes need Maco's Crafting Library and the weathers need WeatherRegistry and WeatherTweaks. Everything else it reaches - Fair AI, Chameleon, JLL's interiors, TerminalFormatter, Wesley's Weathers, Moonswept - is optional: each feature looks for its mod and does nothing when it is not there.

Everyone in the lobby needs this installed, with the same Economy / Removed list. The store list and the item registry have to match across clients or the terminal desyncs. Only the host's settings decide what spawns.

What it does

Content

  • CodeRebirth's eight merchant weapons, obtainable without the coin economy they are bundled with.
  • Sixteen recipes to build them, written into Maco's Crafting Library's own recipe file.
  • 43 pieces of CodeRebirth scrap that it registers and never spawns, switched on as crafting parts.
  • Ten combined weathers: four WeatherTweaks defines but skips over a version check, six for weathers that were in no combination at all.
  • Six weathers that turn into a tornado partway through the day, or out of one.
  • Twenty more combinations built on Wesley's Weathers' five.
  • The Ship Upgrade Unlocker rerolled so it hands out something worth having.

Fixes

  • Dropped items drifting up through the ceiling.
  • The Rail Slugger firing level with your eyes instead of at what you are looking at.
  • The Rail Slugger missing an enemy that is already touching you.
  • The laser turret firing through the walls of a custom interior.
  • Fair AI's turret rewrite costing 23-26 ms of a 36 ms frame on a moon with 57 turrets.
  • Every snail cat throwing an unhandled RPC exception as it spawns.
  • The Stoptime Watch leaving something behind every time it is used.
  • The Oxidizer leaving you unable to press E, and any other interact lock that sticks.
  • The EZ Bake Oven not hurting enemies.
  • Chameleon's door fixer cutting level setup short on interiors it does not expect.
  • The game hitching while the Ship Upgrade Unlocker's video decodes its first frame.
  • Store items whose first word is already a terminal keyword being impossible to type.
  • The Grand Armory's teleporter doors ignoring the apparatus being pulled: Wesley's events need LethalToolbox, which cannot load on v81.
  • A door or turret that outlives its level throwing a NullReferenceException once a frame for the rest of the session.
  • LC Office's elevator and its shelf surviving the ship leaving and turning up inside the next interior, with an invisible wall and a "Place Apparatus" prompt: the v81 compat fix skips the Awake that despawned them.
  • A held item hanging beside the hands after a TooManyEmotes emote until it is dropped.
  • An emote you can walk in turning you on the spot, so forward stops being forward: a camera mod that leans the view leaves a yaw where TooManyEmotes expects none, and adds it to your facing once a frame.
  • The ship monitor naming one crewmate while showing another, which is what the game does to itself the next time somebody joins after anything reorders the radar list.
  • The ship monitor showing a different crewmate to every player: the game syncs a list index, and the lists are built per machine.

Balance

  • Crafting parts held to a rate in landings per copy on every moon, instead of per-moon weights that leave most moons without them.
  • Interiors that place their own scrap thinned so they cannot farm those parts.
  • Moons that spawn hundreds of pieces a landing left out of the rate entirely - no rate survives them.
  • The three crystals tied to the weather's name rather than to a list of moons.

Integration

  • The >moons catalogue as one unbroken list, sorted by risk letter, with weather names held to a width so a combined weather stops pushing the risk column onto a line of its own - written with readable short names, Storm+Flare rather than Storm+Solar, in the colours the ship's map screen gives them.
  • Weather combinations registered only when every weather in them is registered, so nothing is gated behind a version string.
  • One build runs on either DawnLib 0.9.25 or DawnLibExperimental 1.0.x.
  • Diagnostics: a frame-timing probe, a per-script Update timer covering every installed mod, and a scene ablation pass that switches categories off and times each one. All off by default - they are measurements, not features.

Made with AI

All of the code in this mod and its documentation were written by Claude (Anthropic's AI, through Claude Code), directed and play-tested by me. The mod ships no items, models or assets of its own: everything it touches is CodeRebirth's content or the base game's.

The problem it solves

CodeRebirth ships the merchant as one asset bundle behind one switch, [Merchant Options]. Switch it on and you get the eight weapons — Oxidizer, Rail Slugger, Mole Digger, Nitroglycerin Crate, Remote Detonator, EZ Bake Oven, Orbital Strike Caller, Scrap-a-pult — and also a second currency. Coins and dollar bills spawn as scrap, enemies drop them, four vending machines appear inside, a merchant NPC sells to you outside, a 250-credit Denomination Analyzer banks the coins, and going into debt on a team wipe sends the Boogey Man after you.

Switch it off and none of that content is registered at all. The weapons do not exist in your game — DawnLib never loads the bundle, so there is nothing to spawn, buy or find.

This mod leaves the switch on and edits the bundle between loading and registration. Everything that deals in coins is marked as content that never registers, and the scrap CodeRebirth registered but gave no spawn weights is switched on so it can be found.

The weapons are not sold. None of them were buyable in vanilla, and a store entry makes every other way of getting one pointless — so they are built instead, out of that scrap plus ordinary vanilla junk. The recipes ship as a text file for Maco's Crafting Library, which is a separate mod because "combine scrap in the ship" is not a CodeRebirth idea and should not need CodeRebirth installed. Fill in Shop / Stock to put them back on the shelf.

Setup

One line in CodeRebirth.cfg, which is off by default:

[Merchant Options]
Enabled = true

Without it there is no bundle to edit and the mod logs a warning saying so.

Config

BepInEx/config/AhojKubas.MacosModpackIntegration.cfg

Setting Default What it does
Shop / Stock empty Name=Price list. Empty by default — the weapons are meant to be crafted.
Shop / CrateOnly Rocket Launcher Items that turn up in CodeRebirth's wooden crates without being for sale.
Components / Weights see below Dormant CodeRebirth scrap to switch on, as Name : weights entries separated by |.
Components / WeatherNameRates the three crystals Items found only while the weather's name contains a given word, as Name : text : landings.
Components / MinimumRates 22 recipe parts How often a part must turn up on every moon, as Name : landings.
Components / MinimumRatesSkipMoons 7 Dine Moons the two rate settings above are not applied to. The number is optional.
Components / InteriorSpawnerChance 0.25 How often an interior that places its own scrap may place a crafting part.
Economy / RemoveCoinEconomy true Strips coins, wallets, vending machines, the merchant, the analyzer and the Boogey Man.
Economy / Removed see below Exactly which pieces RemoveCoinEconomy takes out.
Fixes / ClampFloorOffsets true Stops a dropped item drifting up through the ceiling.
Fixes / SmoothUnlockerVideo true Stops the game stalling while the unlocker's video decodes its first frame.
Fixes / MaxFloorOffset 1.5 How far off the floor an item may claim to rest before that is read as a bad measurement.
Fixes / FixSluggerAim true Makes the Rail Slugger hit what you are looking at rather than firing level with your eyes.
Fixes / FixSluggerPointBlank true Lets the Rail Slugger hit an enemy that is already touching you.
Fixes / GuardChameleonDoorFixer true Catches the error Chameleon's FixDoorMeshes throws on some custom interiors (Underwater Mines), so level setup is not cut short.
Fixes / FixLaserTurretWalls true Stops the laser turret burning you through a wall that a custom interior left on the Default layer.
Fixes / SpeedUpFairAiTurrets true Remembers the answers Fair AI's turret rewrite works out from scratch every frame. Worth 23–26ms a frame on a moon with dozens of turrets.
Fixes / FixSnailCatOwner true Stops every snail cat throwing an unhandled RPC exception as it spawns.
Fixes / RestoreWeatherCombos true Adds ten combined weathers: four WeatherTweaks defines but skips over a version check, and six for weathers that were in none.
Fixes / TornadoProgression true Adds six weathers that turn into a tornado partway through the day, or out of one.
Fixes / WesleyWeatherCombos true Twenty combinations built on Wesley's five weathers.
Fixes / RestoreArmoryApparatusEvents true Flips the Grand Armory's teleporter doors when the apparatus is pulled, as Wesley's missing LethalToolbox events would have.
Fixes / SilenceDeadRadarBlips true Skips the per-frame radar check on a terminal-controlled object whose map icon was destroyed with its level.
Fixes / DespawnOfficeElevator true Despawns LC Office's elevator and shelf as the ship leaves, and tells the elevator when the apparatus is pulled - the two listeners the v81 compat fix drops.
Fixes / RestorePoseAfterEmote true Puts a held item back in the hand it was in before a TooManyEmotes emote, with the pose and the hold animation, so it is held right without dropping it.
Fixes / SteadyEmoteCamera true Stops an emote you can walk in from turning you on the spot next to a camera mod that leans the view.
Fixes / RepairRadarNames true Names each radar entry from the player it points at, so the ship monitor cannot label one crewmate with another's name.
Fixes / SyncRadarTarget true The host says which object its ship monitor is showing, so every monitor shows the same crewmate instead of the same list index.
Unlocker / RerollShipUnlocker true Makes the Ship Upgrade Unlocker hand out things worth having.
Unlocker / Pool upgrades, lategame What it may roll: upgrades, decor, suits, lategame.
Unlocker / Exclude empty Names it will never roll, comma-separated.
Unlocker / Announce Tip Where to show what was unlocked: Tip, Notification, Chat, Off.
Terminal / MoonListGroupSize 0 How many moons the >moons catalogue prints before a blank line. 0 is one unbroken list.
Terminal / SortUnrankedMoonsByLetter true Sorts a moon whose risk level is not a plain letter by the letter it starts with.
Terminal / MoonListWeatherWidth 16 Longest weather name the >moons catalogue prints. 0 leaves them at full length.
Terminal / WeatherShortNames Stormy=Storm, ... What each weather is called when a combined weather has to be shortened to fit the catalogue.
Terminal / ColorMoonListWeather true Colours each weather in the catalogue as the ship's map screen does.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.