WatchOutBro
Per-enemy gags + stacking + character cameos (Goobers, Clark, Dexter, DIRCM, ...). Drop voices/images for full effect.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.
