Lethal Company
Install

Details

Last Updated
First Uploaded
Downloads
12
Likes
0
Size
39KB
Dependency string
Solon-AnnoyingSpeaker-1.0.0
Dependants

Changelog

1.0.0

  • Initial release. The ship speaker periodically broadcasts a fake commercial assembled from clips the game already has loaded — no audio files are shipped, extracted or redistributed. Banks are declared in the config as Type.field tokens and resolved by reflection at runtime, so clips can be added or removed without recompiling.
  • Four broadcast categories. A jumpscare is rolled first and independently (5%); then an emergency bulletin if a FlowermanAI or NutcrackerEnemyAI is alive inside; then a weather bulletin if the moon's currentWeather is set; otherwise an advert. The advert is also the guaranteed fallback, so a quiet run is never silent.
  • Long clips preferred. Banks discard anything shorter than MinClipSeconds, and each pick samples four candidates and keeps the longest. The filter never empties a bank.
  • Dogs hear the ship. A broadcast feeds the vanilla RoundManager.PlayAudibleNoise from the ship: silent for NoiseDelaySeconds, then repeating every NoiseRepeatSeconds until the clip ends. noiseID stays 0 and timesPlayedInSameSpot stays 0 on purpose — MouthDogAI.DetectNoise ignores IDs 675189/7/546 and any noise past 15 repeats.
  • Dogs lose interest again. The noise loop dies with the music, SustainedNoiseSkipIfDogNear refuses to keep calling a dog that already arrived, and FadeInterest drains suspicion faster than vanilla once the speaker is quiet. The fade only accelerates the game's own countdown; a dog with a real targetPlayer is never touched.
  • Skip button. Pressing [E] on the ship speaker cuts the current advert short rather than switching the speaker off, and with SkipCancelsNoise on it kills the pending noise too — silence it inside the delay and no creature ever hears it. The hover tip reports whether the speaker is sounding right now, not whether it is armed.
  • Terminal commands. speaker on, speaker off and speaker for status, intercepted in Terminal.ParsePlayerSentence without hijacking option menus.
  • On-screen adverts. Re-triggers the vanilla HUDManager.ChooseAdItem on its own timer, keeping the real 3D product model and real store discounts. BypassVanillaAdLimits drops vanilla's once-per-quota, post-first-quota and multiplayer-only gates so adverts show in singleplayer from day one.
  • Host-authoritative multiplayer over Unity Netcode named messages. No NetworkObject is registered and no NetworkVariable or RPC is declared, so no NetcodePatcher step is needed and a lobby cannot desync. The host picks every clip and broadcasts bank/index pairs; banks are de-duplicated and sorted by clip name so index N is the same clip on every machine. Late joiners are sent the current state automatically.
  • Physical switch reuses the vanilla InteractTrigger already wired to StartOfRound.DisableShipSpeaker in the ship scene, found by matching the serialized UnityEvent binding — no new networked object is spawned, and vanilla behaviour is preserved.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.