Mods / Stinky Chair

Tags:
Entity Logic(AI) User interface Creatures QoL Tweak Audio Immersion Survival
Author:
tomekcrm
Side:
Both
Created:
Mar 16th at 3:35 PM
Last modified:
Mar 25th at 7:27 PM
Downloads:
322
Latest release (for Vintage Story 1.21.6-rc.1 - 1.21.6, outdated):
stinky_chair_1.1.2.zip  1-click install

Stinky Chair is an immersion-focused survival mod for Vintage Story that turns hygiene and odor into a real gameplay system.

Your character’s hygiene is tracked on a 0-100 scale and divided into five odor stages. Dirt builds up through movement, stamina use, exhaustion, clothing, armor, weather, and everyday activity, while water, swimming, and rain can help clean you off.

As your hygiene gets worse, the world reacts. Animals detect you differently, drifters change their behavior at the highest stage, your HUD becomes dirtier, flies begin to gather, and the final stage starts feeding into the game’s vanilla temporal stability system.

Stinky Chair is designed as a survival and immersion feature, not a joke mechanic. The goal is to make grime feel like a natural part of living in the world.

It includes:

  • a full hygiene and odor system

  • reactive AI behavior

  • HUD and visual dirt feedback

  • fly particles and ambient audio

  • temporal pressure at the highest stage

  • multiplayer-safe behavior

  • client-side settings through ConfigLib

 

1.1.1 

Performance optimization release.

  • Moved heavy per-tick calculations (clothing scan, weather queries, stat updates, temporal stability, debug sync) to a slow tick running at ~2Hz instead of ~30Hz, reducing server-side overhead by ~15x for those operations
  • Cached WeatherSystemBase and TemporalStabilityAffected behavior references once on initialization instead of resolving them every tick
  • Animal seeking range stat registration now runs once per player instead of every tick
  • Particles and audio remain on the normal tick rate for visual and auditory smoothness

 

New in 1.1.0 

Crafting

Barrel Shower – Stack three vanilla barrels vertically in the crafting grid to build a 3-block tall wash station. Once placed, fill it with up to 50 litres of water using a bucket or watering can. Toggle the valve with an empty hand to start or stop the flow. Standing inside an active shower washes you at the same rate as swimming, while a visible water level in the top barrel shows how much is left.

Recipment

Washing

Clean yourself through natural and manual methods:

  • Swimming – The fastest cleaning method when fully submerged
  • Standing in water – Slower than swimming, but still effective
  • Rain – Gradual cleaning if you're exposed to the sky
  • Watering can wash – Another player can right-click you with a filled watering can to wash you directly. The session continues as long as they keep pouring and you stay in range
  • Barrel shower – A stationary wash point you can build at your base. Fill it with water, turn on the valve, and step inside

showering

 

The shower model, shower particles, and watering-can washing effect still need some polish. The next step is proper multiplayer testing on our server with friends to confirm that everything is functioning correctly at this stage.

Mod requirements:

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.1.2 stench
1.21.6-rc.1 - 1.21.6
129 Mar 25th at 7:27 PM stinky_chair_1.1.2.zip 1-click install

1.1.2 Default debug disable release.

  • Disabled server-side debug telemetry by default
  • Disabled client-side debug overlay by default
  • Fixed ConfigLib default so a freshly created `stench-client.json` starts with debug overlay disabled
  • Stopped migrating legacy server `DebugMode` into the client debug-overlay visibility flag

 

 

 

1.1.1 stench
1.21.6-rc.1 - 1.21.6
76 Mar 20th at 8:35 PM stinky_chair_1.1.1.zip 1-click install

Performance optimization release.

  • Moved heavy per-tick calculations (clothing scan, weather queries, stat updates, temporal stability, debug sync) to a slow tick running at ~2Hz instead of ~30Hz, reducing server-side overhead by ~15x for those operations
  • Cached WeatherSystemBase and TemporalStabilityAffected behavior references once on initialization instead of resolving them every tick
  • Animal seeking range stat registration now runs once per player instead of every tick
  • Particles and audio remain on the normal tick rate for visual and auditory smoothness
1.1.0 stench 56 Mar 18th at 1:14 PM stinky_chair_1.1.0.zip 1-click install

1.1.0

Watering-can washing and barrel shower release.

Highlights:

  • Added server-side watering-can washing: direct right-click on a stench-enabled player or test prop starts a wash session, continuously draining the held watering can and reducing target stench at the swimming-cleaning rate
  • Wash sessions stop automatically when the can runs dry or the target moves out of range
  • Added stream particles from the watering can to the target while actively pouring, and white cleaning particles when stench is actually removed
  • Added dedicated wash audio played server-side so nearby players can hear it
  • Fast-cleaning particles now also appear during strong natural cleaning such as swimming when reduction is faster than rain or standing in water
  • Added `/stenchpropspawn <0-100>` to spawn a vanilla straw dummy with stench behavior attached as a stationary test target
  • Added `/smrodprop` and `/stenchprop` commands to set stench on the currently looked-at prop
  • Added the barrel shower: a craftable 3-block tall structure built from barrels that stores up to 50 litres of water and washes the player standing inside
  • The shower is filled by right-clicking with a water bucket or watering can; right-clicking with an empty hand toggles the valve on and off
  • The active shower drains water continuously, spawns falling water droplet particles from the showerhead, and plays a looping shower sound; three distinct sounds play when the tank runs dry
  • A flat water surface in the top barrel renders dynamically and rises with the fill level, using the custom barrel water texture from the block atlas
  • Crafted from three vanilla barrels stacked in a column
  • Fixed the vanilla watering can patch target so the stage-0 probe actually hooks the fired clay watering can in-game
  • Added a stage-0 watering can probe for `OnHeldInteract*` and raycast diagnostics
  • Added a dedicated watering-can patch so vanilla cans can be inspected in-game
  • Split the debug overlay into separate client-side sections: `Core`, `Sources`, `Effects`, and `Watering Can Probe`
  • Added new client config toggles for selective debug visibility
  • Fixed release packaging so generated `.zip` files are real zip archives

 

Testing note:
The barrel shower and washing other players have been tested in singleplayer and on localhost, including with `propspawn` test targets. Full multiplayer testing is still pending, so please report any bugs or desync issues you find in MP.

1.0.0 stench
1.21.6-rc.1 - 1.21.6
61 Mar 16th at 3:44 PM stinky_chair_1.0.0.zip 1-click install

- Full `0-100` hygiene system with `5` odor stages
- Activity, weather, clothing, and water-based hygiene changes
- Stage `5` drifter behavior changes
- Animal detection scaling through `animalSeekingRange`
- HUD bar, dirt overlay, particles, and fly buzz audio
- Temporal pressure through the vanilla temporal stability system
- Client UI settings through `ConfigLib`
- Admin commands for hygiene testing and moderation

Disclaimer

By downloading a mod you consent to our Terms of Use.

We tell you this specifically because we want to make sure you are aware that we cannot validate every mod, and you are responsible for any damages you might incur by installing or loading mods.

This prompt will not be shown to you again (for the current browser session) if you proceed.


26 Comments (oldest first | newest first) (threaded | flat)

Retr0shock, May 7th at 8:13 PM

Suggestion: a "water pump" item maybe made from iron or other later game materials, that refills the barrel shower without buckets? Could be tricky but your concept is already great as is!

IWillSoonReturn, Apr 29th at 11:59 AM

2 things :

Soap and more ways to clean yourself (like baths or different types of showers)

great concept, can't wait to play with it :) (Also maybe perfume or cologne to mask scent on long trips?)

KittyofPathos, Apr 28th at 1:30 AM

I like the concept but would like to see more kinds of showers. I think a watering can style would be neat as well as some intergration with irrigation would be really awesome too, having an interactable plummed water system for a shower.

ModernScience, Apr 5th at 9:22 PM (modified Apr 5th at 9:33 PM)

I tried it again, and the debug overlay was still active. I was sure to wipe the configs from the servers modconfig folder. It didn't make a difference.

To be explicitly clear about the setup here:

I am running linux
VS runs in a fedora distro shelf
I am hosting a dedicated server
I am modifying the stench and stench client jsons in the servers modconfig folder when attempting to make changes
The aforementioned folders are where I deleted the configs from when trying the new version of the game

my character is not in the admin group. They are suplayer

 

I tried using the 'defaults' option in configlib in game to reset. This didn't change the state of the overlay.

While a suplayer role, I am unable to modify any of stinky chairs settings in config lib. They are disabled.

While admin role, I can easily disable the overlay.

 

I tried changing the 'debug' ( "DebugMode": false) flag in the configs to false in the stench config. That didn't disable it for clients joining.

The stench-client file contained an empty set of curlies. I tried adding the debug flag as it exists in the server config and setting that to false. This also did not change client behavior.

 

The debug overlay just doesn't want to go away :(

 

ModernScience, Apr 5th at 9:16 PM (modified Apr 5th at 9:18 PM)

traugdor What did you find suspect? The only thing that really stood out to me was the seemingly endless use of what I think are pointless nullable types. Granted, I didn't spend a whole lot of time on the repo, just a few mintues. That was all that really stood out to me. It did feel a little AI generated but that doesn't really bother me so much. As long as the code makes sense, is easy to read, and doesn't contain any really painful design choices or Inefficiencies it's all good.

Wrythley, Apr 2nd at 8:25 AM

When filling or emptying the barrel shower, if you are holding a stack of buckets, all five of them get filled at once with 10L each, but when emptying them into the shower they only fill ten liters. You can duplicate water by turning 1L into 5L, then 5L into 25L. Or simply 10L into 50L. Fortunately, the shower can only take basic water, so you can't duplicate boiled water or anything.

Still, probably worth fixing so you don't have to separate all the buckets before filling or emptying the shower.

ModernScience, Mar 30th at 11:54 PM (modified Mar 30th at 11:54 PM)

traugdor

Yeah sorry man, I didn't see your responses until now. I'd love to check out the updated version, and thank you very much for considering and implementing that change! Big +1 man! I do know C#. I don't know much about the class library or anything for VS. Structurally I could evaluate your code. I could probably learn a bunch from it too. Feel free to message me directly.

tomekcrm , Mar 26th at 6:49 PM

traugdor

Unfortunately, the mod was not written solely with the help of ugabuga coding, although if you found any issues, I would really appreciate a PR with fixes, and I’m grateful for any help. Especially since, for years, I’ve mostly been coding in Python and YAMLs not C#.

 

Yamahi

The mods listed in the requirements were included as essential because, as I mentioned in the mod description, we primarily use this mod on our own small server, where it was tested together with them.

I cannot guarantee that it will work correctly in a different configuration.

For example, Vigor itself affects how quickly stink/dirt builds up, and when exhaustion is maxed out, an additional debuff is applied in the form of a further penalty.

Will it work without them? Probably yes, but I have not tested it that way, so I cannot guarantee it.

Yamahi, Mar 26th at 4:01 AM

is vigor a hard dep or not? 

seems to work without but not 100% sure if there some things not working without it on, 

Vigor seems to have some kind of memory leak or something, needing client resets after awhile.

traugdor, Mar 25th at 9:41 PM

I inspected your source code and I find a lot of things about it very suspect. Nearest I can tell Vigor and Hydrate or Diedrate aren't actually required, but only supported. The only actual requirement here is config lib. But yeah definitely looks like it was vibe-coded.

Good job.

tomekcrm , Mar 25th at 7:28 PM

Sunconure11 ModernScience Please check 1.1.2; I turned off debug by default.

Panaqolus, Mar 23rd at 11:34 AM (modified Mar 23rd at 11:40 AM)

ModernScience

https://github.com/tomekcrm/Stinky-Chair/issues/1

I also want you to see if you can go over the code a bit for me, assuming you know C#. I... want to rule out something possibly related that may impact the mod, as I have seen other mods made in such fashions have some nasty issues. That is, some mods that were obviously vibe coded had constant issues with the game. My knowledge of C# is not good enough yet to rule that out myself.

ModernScience, Mar 21st at 5:05 AM (modified Mar 21st at 5:13 AM)

Yeah dude, I can't use this mod until you disable the overlay by default. I don't know how to modify this in such a way that clients who connect and are not allowed admin priviledges can disable the overlay. 

when I connect as admin, it's trivial. I open the mod settings per config lib and turn it off.

If I connect as anything other than admin, all of the options in config lib are disabled. I cannot edit them, thus cannot shut off the overlay.


Please turn off the overlay by default. 

-Edit

I tried both setting the DebugMode setting to false in the stench.json server side. That didn't work
I then tried adding DebugMode=false to the stench-client.json file, as it is empty by default. This was a shot in the dark that also didn't work.

I love the idea of this mod dude, but I cannot fathom why you would leave this overlay on by default. It's assinine dude. Just shut it off. Take it from a guy who writes software for a living; "Here's a cool thing, now do a backflip to use it" is NEVER the right answer.

 

ModernScience, Mar 21st at 1:09 AM

I think the problem was that I was in the admin group. The server, and my character were both in survival, but after I removed myself from the admin group, it started working. Nice catch!

tomekcrm , Mar 20th at 7:48 PM

MrRogvold Just to mention it first: if you have debug enabled, you can turn it off in the config. Also, like I wrote in the mod description, the UI part is configurable through ConfigLib: https://mods.vintagestory.at/configlib

As for the system itself, it’s kind of a mix of both approaches.

Some parts are already action-based, not just raw tick updates. For example, stamina drain from running, fighting, mining, or digging increases stench gain through the Vigor integration. If Vigor isn’t installed, movement speed is used as a fallback. Entering or leaving water affects washing, using a watering can on another player starts a wash event, and death/respawn fully resets the system.

The tick-based part is mostly there for things that are naturally continuous. That includes the passive base stench buildup, rain checks, clothing and armor evaluation, fly/audio timing, particles, and the higher-stage effects like animal detection changes and temporal stability.

So it’s not really “you get dirty only because of ticks.” Activity already matters a lot. The periodic checks are mainly handling the stuff that has to be updated over time anyway, like passive grime, weather exposure, and visual/audio feedback.

That said, you’re not wrong about optimization. Some checks definitely run more often than they need to right now. Clothing and weather are good examples — those don’t need to be evaluated that often. I’ll probably reduce the frequency of some of the heavier checks in a future update so it keeps the same feel but runs lighter.

Harbardthr Stamina usage (Vigor) makes you get dirty faster, and fully depleting your stamina adds an extra amount of dirt buildup.

tomekcrm , Mar 20th at 7:34 PM

ModernScience are you testing on creative or survival? You can test the stench level by using the command /smrod <user> <level 0-100> 

MrRogvold, Mar 20th at 11:37 AM

ModernScience thank you for the hint :)

ModernScience, Mar 20th at 2:49 AM

Despite being able to disable the debug mode, I can't seem to get this mod to work. The hygene bar displays but is always filled. I re-enabled the debug overlay and watched it while I messed around in game. I never see anything other than zeros for reductions and gains. net is zero, everything stays zero regardless. The rest of the debug overlay content shows values that make sense. 

I don't see any obvious errors in my server logs. Haven't checked the client logs. Cool idea though!

ModernScience, Mar 20th at 12:36 AM (modified Mar 20th at 12:37 AM)

@MrRogvold

I forget the mod that adds it, but I have an ingame 'Mod Settings' menu when I hit escape. From there you can select Stinky Chair and disable the overlay by unchecking the box and clicking save.

I find it very cumbersome that this is enabled by default without explanation, but you can disable it so there's that.

MrRogvold, Mar 19th at 8:56 PM

Also a technical question - does this mod implemented through tics? I am experiencing some slight game lag which I didn't have with "bath time" mod. 
If I am correct maybe it would be better to rethink the idea towards some specific player action? Like getting girty by N point while digging or mining for example

MrRogvold, Mar 19th at 8:36 AM

Is there a way to remove debug menu?

Harbardthr, Mar 18th at 11:28 PM

This is slowly becoming a strong competitor to bath time

why is vigor required? 

--
+ i second adding bonus' / compatability with soap and lye
+ Make a drying towel option? 

MrRogvold, Mar 18th at 4:51 PM

neet one! how about adding clothes to get durty as well, so you have to clean them too?
+ integration with soap and lye mod to speed up process of cleaning?

noeffort, Mar 17th at 4:55 PM

When do you plan to update to 1.22?!

tomekcrm , Mar 16th at 6:01 PM

Sunconure11 There are quite a lot of plans for the mod’s development. For now, I’ve released a version with basic features so I can test it on a server with my friends. But we’re planning to keep working on it some more :)

 

Panaqolus, Mar 16th at 5:23 PM

Not sure if I failed to post this or if I got my post deleted, but I think you should add some compat with a few other mods. Natural fertilizer because well, that is a mod dealing with manure. Butchering because I doubt processing meat all day is gonna smell nice. BathTime since it adds some similar mechanics. Soap and Lye (both versions), as to add one way to help reduce filth.