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.
ClownShoes
Gives the clown squeaky clown-shoe sounds as it walks.
| Last updated | 2 hours ago |
| Total downloads | 45 |
| Total rating | 1 |
| Categories | Mods Audio Monsters Client-side |
| Dependency string | Maxehmum-ClownShoes-1.0.0 |
| Dependants | 0 other packages depend on this package |
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
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.