YappersHQ.PissMod.Shared
1.0.1
dotnet add package YappersHQ.PissMod.Shared --version 1.0.1
NuGet\Install-Package YappersHQ.PissMod.Shared -Version 1.0.1
<PackageReference Include="YappersHQ.PissMod.Shared" Version="1.0.1" />
<PackageVersion Include="YappersHQ.PissMod.Shared" Version="1.0.1" />
<PackageReference Include="YappersHQ.PissMod.Shared" />
paket add YappersHQ.PissMod.Shared --version 1.0.1
#r "nuget: YappersHQ.PissMod.Shared, 1.0.1"
#:package YappersHQ.PissMod.Shared@1.0.1
#addin nuget:?package=YappersHQ.PissMod.Shared&version=1.0.1
#tool nuget:?package=YappersHQ.PissMod.Shared&version=1.0.1
<div align="center"> <h1><strong>💦 PissMod</strong></h1> <p>A CS2 (ModSharp) joke plugin — type <code>!piss</code> to freeze, spray a particle stream, grow puddles, and regen a little HP.</p> </div>
<p align="center"> <a href="https://github.com/Kxnrl/modsharp-public"><img src="https://img.shields.io/badge/framework-ModSharp-5865F2?logo=github" alt="ModSharp"></a> <img src="https://img.shields.io/badge/game-CS2-orange" alt="CS2"> <img src="https://img.shields.io/gitlab/license/cs2-server-plugins/cs2-pissmod?gitlab_url=https%3A%2F%2Fgitlab.com" alt="License"> <img src="https://img.shields.io/gitlab/stars/cs2-server-plugins/cs2-pissmod?gitlab_url=https%3A%2F%2Fgitlab.com" alt="Stars"> </p>
ModSharp port of bostonriot/SW2PissMod (SwiftlyS2), itself based on McFly's Piss Mod V0.8 (EventScripts / CS:S) and KRoTaL's AMXX Piss 2.0 (AMX Mod X / CS 1.6). Players type !piss in chat — they freeze in place, a particle stream emits from their crotch toward their crosshair, puddle props grow on the floor, and they optionally regenerate HP. A single soundevent (piss.pissing) loops while pissing, and getting killed mid-piss announces it to everyone.
🚀 Install
Copy the build output into your ModSharp install (<sharp> = your sharp directory):
| From | To |
|---|---|
.build/modules/PissMod/ |
<sharp>/modules/PissMod/ |
.assets/configs/pissmod.json |
<sharp>/configs/pissmod.json |
.assets/locales/pissmod.json |
<sharp>/locales/pissmod.json |
Restart the server (or change map) to load. Requires LocalizerManager (ships with ModSharp) for chat strings.
Server-side assets are not shipped in this repo — provide them via your own workshop addon. The plugin precaches them on map load:
Resource Purpose models/piss_puddle1..5.vmdlPuddle stage props (5 sizes) particles/piss_stream2.vpcfCrotch particle stream soundevents/...vsndevtswith keypiss.pissingLooped piss sound Edit the asset paths in
pissmod.jsonif your addon uses different names.
⌨️ Commands
| Command | Description |
|---|---|
!piss |
Toggle pissing on/off — freeze, spray the stream, grow puddles, regen HP |
⚙️ Configuration
ConVars (runtime — console / rcon)
| ConVar | Default | Meaning |
|---|---|---|
pissmod_enabled |
true |
Master switch |
pissmod_adminonly |
false |
Restrict !piss to admins (no-op until an AdminManager check is wired) |
pissmod_maxperround |
3 |
Max pees per round (0 = unlimited) |
pissmod_duration |
8.0 |
Force-stop after N seconds (0 = no limit) |
pissmod_healthboost |
false |
Regen HP while pissing |
pissmod_hppertick |
1 |
HP regained per tick |
pissmod_healthtickrate |
0.2 |
Seconds between HP ticks |
pissmod_streampitch |
15.0 |
Extra downward pitch added to eye pitch (degrees) |
pissmod_streamtickrate |
0.08 |
Particle reorient interval (seconds) |
pissmod_puddleinterval |
2.2 |
Seconds between puddle stages |
pissmod_puddlescale |
0.05 |
Puddle prop scale multiplier |
pissmod_volume |
1.0 |
Soundevent volume (0.0–1.0) |
configs/pissmod.json (static asset paths)
Auto-written with defaults on first run. Edit if your workshop addon uses different resource names.
| Key | Default | Meaning |
|---|---|---|
particlePath |
particles/piss_stream2.vpcf |
Stream particle |
soundEvent |
piss.pissing |
Soundevent key to play |
soundEventsFile |
soundevents/soundevents_general.vsndevts |
Soundevents file to precache |
puddleModels |
5 .vmdl puddle stages |
Ordered puddle prop models |
precacheFiles |
[] |
Extra resources to precache |
locales/pissmod.json
Key-first per-culture (ModSharp LocalizerManager schema). Ships en-US; add cultures by adding inner keys. Keys: pissmod.disabled, pissmod.admin_only, pissmod.must_be_alive, pissmod.max_per_round ({0} = limit), pissmod.broadcast_start ({0} = name), pissmod.pants_down ({0} = name), pissmod.not_allowed.
🔧 How it works
On !piss the player's MoveType is set to None (frozen), a looped soundevent starts, and three repeating timers spin up: one reorients an info_particle_system stream toward the player's aim, one regenerates HP (if enabled), and one spawns successive puddle prop_dynamic stages at a locked feet-forward origin. Per-player state is keyed by SteamID with a per-round usage cap and an optional force-stop duration. Round end, death, disconnect, and shutdown all hard-stop cleanly — death mid-piss also broadcasts a "pants down" line.
🧩 Public API
PissMod ships IPissModShared, letting other plugins veto who may piss. Resolve it in OnAllModulesLoaded and subscribe to CanUseFor — return false to deny:
var api = sharedSystem.GetSharpModuleManager()
.GetOptionalSharpModuleInterface<IPissModShared>(IPissModShared.Identity)?.Instance;
api!.CanUseFor += client => client.IsVip(); // example: VIP-only
If every subscriber returns true (or there are none), the player is allowed.
📦 Build
Requires the .NET 10 SDK and the ModSharp NuGet feed (version pinned in Directory.Build.props).
dotnet build -c Release
Outputs .build/modules/PissMod/PissMod.dll and .build/shared/PissMod.Shared/PissMod.Shared.dll. Default pissmod.json config + locale live under .assets/.
🙏 Credits
- Original concept: McFly — Piss Mod V0.8 (EventScripts, CS:S)
- AMX port: KRoTaL — AMXX Piss 2.0 (AMX Mod X, CS 1.6)
- SwiftlyS2 port: bostonriot/SW2PissMod — this repo is a ModSharp rewrite from scratch
- ModSharp framework: Kxnrl/modsharp-public
<div align="center"> <p>Made with ❤️ by <a href="https://gitlab.com/cs2-server-plugins">yappershq</a></p> <p>⭐ Star this repo if you find it useful!</p> </div>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.