SweetHiggs-SteadyCrew icon

SteadyCrew

Up to 6-8 players, plus a guard that keeps the round going when a client stalls: ship that will not leave, nobody revived, dead lever.

Last updated 2 hours ago
Total downloads 49
Total rating 0 
Categories Mods Modpacks BepInEx Tweaks & Quality Of Life AI Generated
Dependency string SweetHiggs-SteadyCrew-1.0.1
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

SteadyCrew

Lobbies of up to 6 players (8 at most) for Lethal Company v81, built around not breaking mid-round.

It does two separate jobs:

Crew – more than four players. Every player in the lobby needs the mod.

FlowGuard – keeps a round moving when one client stalls or a counter drifts. This half also works on its own: in a normal 4-player lobby, or next to MoreCompany if you would rather keep that for the lobby size.

Why another lobby-size mod

The usual complaints in big lobbies are "the ship won't leave", "everyone stayed dead" and "people drop when they join". In the game's code these are not about the lobby size itself:

  • The host waits for every player at five points of a round (level generated, moon loaded, moon unloaded, revived, revived after a failed quota). None of them has a timeout. One stalled client and the round stops for everybody.
  • Those waits compare against a player counter the game does not always decrement when somebody leaves. Once it is one too high, every wait hangs until the lobby is recreated.
  • The revive loop returns early if one player's voice object did not come up, leaving everyone after them dead and the "living players" count wrong for the next round.
  • The lever only works while the "loaded players" list is as long as the player count, on the player who pulls it and again on the host.
  • The Steam transport ignores the result of every send. When Steam's 512 KB send buffer fills up (a slow client, a burst at join time), reliable messages are dropped without a trace.

FlowGuard checks the waits against who is really connected, bounds them in time, repairs the counters, makes the revive survive an exception, and queues messages Steam refused instead of losing them. It only steps in when the game has stalled or thrown; otherwise it does nothing.

Install

Import the zip in Thunderstore Mod Manager / r2modman (Settings → Import local mod), or drop SteadyCrew.dll into BepInEx/plugins.

  • Remove MoreCompany if you want SteadyCrew to handle the lobby size. With MoreCompany present SteadyCrew switches its Crew half off by itself and only runs FlowGuard and the network tuning.
  • Everyone joining a SteadyCrew lobby needs SteadyCrew. A player without it is refused at the door with a message saying so, instead of joining and desyncing.
  • You can still join vanilla lobbies with the mod installed.

Settings

BepInEx/config/sweethiggs.steadycrew.cfg

Setting Default
Crew / MaxPlayers 6 Host only. 2–8.
FlowGuard / LoadTimeout 300 Seconds the host waits for a client to load the moon and generate the level. The host never lands without a client that is still loading; one that is still not ready after this long is disconnected. 0 = wait forever.
FlowGuard / UnloadTimeout 60 Seconds the host waits for a client to unload the moon after take-off; a slow client catches up. 0 = wait forever.
FlowGuard / ReviveTimeout 30 Seconds the host waits for a client's end-of-round revive.
FlowGuard / LaunchGrace 12 Seconds in orbit before a never-loaded client stops blocking the lever.
FlowGuard / LivingAudit true Recount living players from the real player states.
FlowGuard / AnnounceInChat true Say in chat when the host stops waiting for somebody.
Network / SteamSendBufferKB 4096 Steam default is 512.
Network / SteamSendRateKB 1024 Steam default is 256.
Network / SteamTimeoutSeconds 25 Steam default is 10.
Network / ResendDroppedReliable true Hold and resend what Steam refused.
Network / JoinSanitizer true Host: repair broken spawned objects before a client is let in.

While the host is waiting for somebody for more than 25 seconds, it says so in chat ([SteadyCrew] waiting for <name> (moon loading, 40s)), so nobody has to guess why the ship is not landing.

A client that is still loading the moon when the level gets generated (for example with a host on 1.0.0) holds that step until its moon is in and then lands late, instead of hanging on "Waiting for crew".

What it changes on screen

  • Pause menu: the crew list holds every player, packed to fit.
  • End-of-round report: still four rows; with more players it turns the page (1/2, 2/2).
  • Spectator boxes: closer together once there are more than six.

When something goes wrong

Search BepInEx/LogOutput.log for SteadyCrew. Every time the guard steps in it says who it was waiting for and what it did, for example:

[Warning:SteadyCrew] Waited 60s for Dubina (moon unloading) - going on, they will catch up.
[Warning:SteadyCrew] Join guard: object '...' cannot be sent to a joining client (...). Left out of the join so that it does not break it.
[Warning:SteadyCrew] Player counters drifted (connectedPlayers 7, ...) while 6 player(s) are really in the game - corrected.

The host's log is the one that matters for "ship won't leave" and "nobody revived".

Known limits

  • Players 5–8 have no mixer group of their own (the game ships four). Their voice goes through the master group; the per-player volume slider can turn them down but not boost them, and voice pitch effects (TZP) do not apply to them.
  • No cosmetics.
  • Tested on game version 81.