ClownShoes
Gives the clown squeaky clown-shoe sounds as it walks.ClownShoes
A tiny BepInEx plugin for R.E.P.O. that gives the clown squeaky clown-shoe sounds as it walks. 🤡👟
(The clown's EnemyParent.enemyName is Clown; its prefab/asset is
Enemy - Beamer, the "clown thing with a laser".)
What it does
Each clown gets a little 3D "squeak" that fires every time it has walked a set distance — so an idle clown is silent, a strolling one squeaks slowly, and a clown chasing you squeaks frantically. The cadence tracks its real walking speed because it's driven by distance traveled, not a timer.
The squeak is synthesized in code at load time (a short pitch-sweeping
rubbery "squEEk"), so there are no audio files to ship or install. It plays from
a 3D AudioSource that rides on the clown, so it sounds like it's coming from
the clown's feet and gets louder as it nears you.
It works by Harmony-patching EnemyParent.Setup and matching the enemy by name
(ClownName, default Clown), then attaching a tracker component that watches
the clown's CenterTransform position each frame. Matching by name means we
don't hard-code the clown's component class, and Debug logs every enemy name so
you can retarget it if the game renames things.
Who hears it
Unlike a host-authoritative behavior change, a sound is a per-client thing. Because the clown's transform is networked to everyone, this mod reads it locally, so any player who has the mod hears the clowns near them — the host, guests, and singleplayer all work, with no Photon networking involved.
If you'd rather only the host hear the squeaks (e.g. so guests don't need the
mod), set HostOnly = true in the config.
Install
Install with r2modman or the
Thunderstore Mod Manager and you're done. Manually: install
BepInEx, then drop
ClownShoes.dll into R.E.P.O./BepInEx/plugins/.
Config
After running the game once, edit BepInEx/config/ClownShoes.cfg:
| Setting | Default | Description |
|---|---|---|
Volume |
0.35 |
Loudness of each squeak. |
StepDistance |
1.8 |
Meters the clown walks between squeaks. Smaller = squeakier. |
MinWalkSpeed |
0.4 |
Minimum speed (m/s) before squeaks start; keeps a still clown quiet. |
PitchVariation |
0.2 |
Random pitch wobble per squeak (0 = identical every time). |
MaxHearingDistance |
25 |
How far away (meters) the squeaks can be heard. |
HostOnly |
false |
If true, only the host / singleplayer hears the squeaks. |
ClownName |
Clown |
Case-insensitive substring matched against each enemy's name. |
Debug |
false |
Log every enemy name at spawn and each squeak. Turn on to find the right ClownName. |
Build
No game files to copy by hand — the project pulls publicized game assemblies
from the R.E.P.O.GameLibs.Steam NuGet package.
dotnet build -c Release
The resulting ClownShoes.dll goes in BepInEx/plugins/.
Notes
The patch targets EnemyParent.Setup and matches the enemy by its enemyName
field rather than by component type, so a game update that renames the clown's
class won't break it. If the clown's name changes, just point ClownName at
the new one — turn Debug on to see every enemy name in the log. If
Enemy.CenterTransform is renamed, adjust Squeaker.cs.
