Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
AnnoyingSpeaker
The ship speaker blares fake commercials stitched from the game's own sounds. Each one is real noise that calls Eyeless Dogs - reach the speaker and hit [E] to cut it before they hear. No audio files shipped.
CHANGELOG
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.fieldtokens 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
FlowermanAIorNutcrackerEnemyAIis alive inside; then a weather bulletin if the moon'scurrentWeatheris 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.PlayAudibleNoisefrom the ship: silent forNoiseDelaySeconds, then repeating everyNoiseRepeatSecondsuntil the clip ends.noiseIDstays 0 andtimesPlayedInSameSpotstays 0 on purpose —MouthDogAI.DetectNoiseignores IDs 675189/7/546 and any noise past 15 repeats. - Dogs lose interest again. The noise loop dies with the music,
SustainedNoiseSkipIfDogNearrefuses to keep calling a dog that already arrived, andFadeInterestdrains suspicion faster than vanilla once the speaker is quiet. The fade only accelerates the game's own countdown; a dog with a realtargetPlayeris never touched. - Skip button. Pressing
[E]on the ship speaker cuts the current advert short rather than switching the speaker off, and withSkipCancelsNoiseon 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 offandspeakerfor status, intercepted inTerminal.ParsePlayerSentencewithout hijacking option menus. - On-screen adverts. Re-triggers the vanilla
HUDManager.ChooseAdItemon its own timer, keeping the real 3D product model and real store discounts.BypassVanillaAdLimitsdrops 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
NetworkObjectis registered and noNetworkVariableor 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
InteractTriggeralready wired toStartOfRound.DisableShipSpeakerin the ship scene, found by matching the serialized UnityEvent binding — no new networked object is spawned, and vanilla behaviour is preserved.