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.
WatchOutBro
Per-enemy gags + stacking + character cameos (Goobers, Clark, Dexter, DIRCM, ...). Drop voices/images for full effect.
By watchoutbro
| Date uploaded | 5 months ago |
| Version | 3.0.2 |
| Download link | watchoutbro-WatchOutBro-3.0.2.zip |
| Downloads | 818 |
| Dependency string | watchoutbro-WatchOutBro-3.0.2 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
WatchOutBro
A gag mod that slaps an out-of-place overlay onto your screen for everything that happens. Loud, ugly, on purpose.
What's new in v3
- Bug fix: per-enemy reactions actually trigger now.
- Stacking: multiple enemies → multiple stacked bubbles.
- Character cameos: Goobers, Clark, Dexter Morgan, DIRCM, Klonnku, Plonko, Ulfric Stormcloak, Mommy ASMR.
- Drop-in folders: add real voice clips and images without rebuilding the mod.
Drop-in folders (no rebuild required)
After first launch, two folders are read from BepInEx/plugins/WatchOutBro/:
voices/ ← drop OGG, WAV, or MP3 files here
images/ ← drop PNG (recommend ~256×256, transparent background)
Voice filenames
goober_1.ogg "one goober"
goober_2.ogg "two goobers"
goober_3.ogg "three goobers"
goober_4.ogg "four goobers"
goober_5.ogg "five goobers"
goober_6.ogg "six goobers"
goober_7.ogg "seven goobers"
goober_8.ogg "eight goobers"
goober_9.ogg "nine goobers"
goober_10.ogg "ten goobers"
goober_iquit.ogg "I quit" (plays from pickup 11 onwards)
clark_pickup.ogg "I think I like this Clark"
mommy_asmr_loop.ogg long ambient loop, 30s+ recommended (only plays in menu / lobby / truck)
ulfric.ogg Ulfric line (rare cameo on level load)
klonnku.ogg Klonnku noise (plays on Gnome proximity)
plonko.ogg Plonko noise (plays on Spewer proximity)
dexter.ogg Dexter line (plays on Chef proximity)
dircm.ogg DIRCM enemy line (plays on Trudge proximity)
dircm_fire.ogg IR-beam fire sound (plays on any gun fire)
Missing file → procedural placeholder beep.
Image filenames
clark.png ulfric.png klonnku.png plonko.png dexter.png dircm.png
Missing file → procedural placeholder icon.
Cameo roster
| Trigger | Cameo |
|---|---|
| Any valuable pickup | Goobers counter + duplicate spawn |
| Diamond / crown / jewel / gold / trophy / ruby / sapphire / emerald pickup | Clark |
| Menu / lobby / truck scene | Mommy ASMR ambient loop |
| Level scene load (5% chance) | Ulfric Stormcloak banner |
| Gnome proximity | Klonnku |
| Spewer proximity | Plonko |
| Chef proximity | Dexter Morgan |
| Trudge proximity | DIRCM enemy |
| Any gun fire | DIRCM weapon (cyan beam flash) |
| Level scene load (every level, 8–20s after load) | Wolters Kluwer Compliance Training modal |
| Anything else (vanilla enemy) | v2 reactions (Huntsman shush, Reaper skull, ...) |
Config
Tweak in BepInEx/config/watchoutbro.WatchOutBro.cfg after first launch:
[Diagnostics] LogEnemyNames— set totrueto dump every detected enemy's transform chain and which reaction matched. Use to tune keywords, then turn off.[Audio] VoiceVolume— voice + procedural SFX volume (0..1, default 0.7).[Audio] AmbientVolume— ambient loop volume (0..1, default 0.3).[Gameplay] GooberDuplicate— turn off to skip spawning visual duplicates on pickup.[Gameplay] UlfricChance— 0..1, default 0.05.
Install
Use r2modman or Gale. Click "Install with Mod Manager".
Multiplayer
All overlays + sounds are client-local. Each player who installs sees/hears their own gags. Goober duplicates are visual-only (not net-synced).
Credits
- Cat photo: the author's cat.
- Voice lines: the author. If a voice file came from somewhere else, replace it.
- Wolters Kluwer parody logo: procedurally generated, not the real trademark.
CHANGELOG
Changelog
3.0.1
Fixes
- Game no longer freezes on level load. Diagnostic Harmony patches were dispatching pickup events on every fire — many "pickup"/"grab"/"collect" methods run every frame (e.g. Unity's
OnTriggerEnter,IsPickupable()), which spammed the Goober counter into the thousands and spawned infinite duplicates. Diagnostic patches are now strictly log-only; narrowed keywords (pickup,shootonly); 50-patch cap per kind. - Mommy ASMR now plays on the main menu.
SceneManager.activeSceneChangeddoesn't fire for the scene already active when the plugin attaches — so the ambient loop never triggered on launch. Replaced with a 1Hz poll ofSceneManager.GetActiveScene(); scene-name heuristic also recognisesmain. - Plugin compile fix.
Configstatic class shadowedBaseUnityPlugin.Config(the inheritedConfigFileproperty) — renamed toModConfigsodotnet buildresolves correctly.
Goober — now actually wired
- New
PickupPatch.csruns Harmony patches on a curated short list of likely method names (PhysGrabber.PickUpValuable,PhysGrabObject.OnGrab*,ValuableObject.OnPickUp,ItemAttributes.PickUp). Whichever resolves at runtime gets postfixed. PickupRouter.OnRealPickupdebounces same-instance pickups within a 0.6s window so multiple patched methods firing in one event count once.- Hard limits to keep the game playable even if the patch target is wrong:
- 1s minimum gap between counted pickups
- 500-pickup lifetime kill-switch with warning log
- 100-duplicate hard cap per session (even with
GooberDuplicate=true) - Self-duplicates excluded from re-counting
- Clark trigger hard limits: 8s minimum gap between cameos, 50-fire lifetime cap.
Config defaults
GooberDuplicatedefault flipped to off — opt in once the pickup hook is verified working for your install.
3.0.0
Fixes
- Per-enemy reactions actually trigger now. v2 substring-matched on the leaf GameObject name; spawned enemy components live on child objects so the parent prefab name was missed. v3 walks the entire transform-ancestor chain and matches against the joined string. Strips "(Clone)" suffix.
- Diagnostic flag
LogEnemyNamesinBepInEx/config/watchoutbro.WatchOutBro.cfgdumps every distinct enemy's full ancestor chain + matched reaction key for tuning.
Features
- Stacking overlays. Multiple enemies in range now show multiple stacked bubbles in the bottom-left (max 4), sorted by priority. Exclusive layouts (Huntsman shush, Wolters Kluwer modal) suppress the stack.
- Voice + image drop-in folders. Drop OGG/WAV/MP3 into
BepInEx/plugins/WatchOutBro/voices/and PNG intoBepInEx/plugins/WatchOutBro/images/to override procedural placeholders. No rebuild needed. - Character cameos (overlay onto vanilla enemies/items, no new spawnable content):
- Goobers — every valuable pickup increments a counter, plays
goober_N.ogg(1..10) thengoober_iquit.ogg, and spawns a visual duplicate of the same valuable at your feet (client-only, not net-synced). - Clark — picking up a high-value valuable (diamond / crown / jewel / gold / trophy / ruby / sapphire / emerald) flashes a Clark cameo and plays
clark_pickup.ogg. - Mommy ASMR — ambient loop in menu / lobby / truck scenes. Drop
mommy_asmr_loop.oggto enable; otherwise silent. - Ulfric Stormcloak — random cameo on level load (5% chance, configurable).
- Klonnku — re-skins the Gnome reaction.
- Plonko — re-skins the Spewer reaction.
- Dexter Morgan — re-skins the Chef reaction.
- DIRCM (enemy) — re-skins the Trudge reaction with a nose-shaver icon.
- DIRCM (weapon) — firing any gun flashes a cyan IR beam and plays
dircm_fire.ogg(or a procedural whistle).
- Goobers — every valuable pickup increments a counter, plays
- New procedural icons: NoseShaver, Beam. New procedural sound: IrBeam.
- Pickup + gun-fire hooks use a diagnostic candidate-method scan; first launch logs which methods fired so the hook can be locked in a patch update if the heuristic missed.
Config
New BepInEx config keys in [Diagnostics], [Audio], [Gameplay] — see file in BepInEx/config/watchoutbro.WatchOutBro.cfg after first launch.
2.0.0
- Per-enemy reactions: each enemy type now triggers its own overlay and message.
- Wolters Kluwer compliance training modal once per level.
- Procedural icons + sounds.
1.0.0
- Initial release. Cat appears when enemy within 15 m.