mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-11 16:14:08 +01:00
5786289821
## About The Pull Request Adds a dirty quirk, as requested in a bounty in https://discord.com/channels/1059199070016655462/1415440129362886727/1415440129362886727. This quirk does a few things. 1. Walking around, you have a small chance to spread dirt to the floor. 2. If you are barefoot, you track colored footprints that fade out over 7 seconds. 3. If you are attacked, you have a puff of colored, opaque smoke fly off you. **This cannot be spammed and must be refreshed by digging in trash.** 4. People around you get a small mood debuff. 5. You get a small examine blurb telling people that you're dirty. Both the dirt color and flavor text can be customized in the quirk. If you are cleaned with soap... 1. You scream, flail, and get a -6 mood debuff. 2. **All above effects are disabled.** 3. You can refresh your filth by rummaging in trash Hygeinebots also always try to clean dirty people. ## Why It's Good For The Game We have filth goblins on station, and this lets them reflect who they are mechanically. Its also a small, but minor, way to give janitors just a bit more things to do - and a small source of conflict where you may have people running around trying to clean you because god you just smell so bad. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> https://github.com/user-attachments/assets/6c627e3f-0874-4609-84e8-d7137628ecf1 </details> ## Changelog 🆑 add: Dirty quirk - spreads dirt, makes everyone annoyed at you, defeated by soap. /🆑 --------- Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Datum Component System (DCS)
Concept
Loosely adapted from /vg/. This is an entity component system for adding behaviours to datums when inheritance doesn't quite cut it. By using signals and events instead of direct inheritance, you can inject behaviours without hacky overloads. It requires a different method of thinking, but is not hard to use correctly. If a behaviour can have application across more than one thing. Make it generic, make it a component. Atom/mob/obj event? Give it a signal, and forward its arguments with a SendSignal() call. Now every component that want's to can also know about this happening.