Maxehmum-ClownShoes icon

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-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

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.