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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="YappersHQ.PissMod.Shared" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="YappersHQ.PissMod.Shared" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="YappersHQ.PissMod.Shared" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add YappersHQ.PissMod.Shared --version 1.0.1
                    
#r "nuget: YappersHQ.PissMod.Shared, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package YappersHQ.PissMod.Shared@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=YappersHQ.PissMod.Shared&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=YappersHQ.PissMod.Shared&version=1.0.1
                    
Install as a Cake Tool

<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.vmdl Puddle stage props (5 sizes)
particles/piss_stream2.vpcf Crotch particle stream
soundevents/...vsndevts with key piss.pissing Looped piss sound

Edit the asset paths in pissmod.json if 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
1.0.1 102 8/10/2026
1.0.0 117 8/1/2026