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
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.