* Fixes Bread Smite Causing Some Fucked Up Shit
Hey there,
So basically, when you had the bread smite done on you, you were _just_ added to the contents of the bread. Nothing more. That means that you could pick it up. You couldn't add it to your bag (it would always return back into your hand(?)), but it would create some weird oddities that was just cursed in general. Let's make it so you can't hold the container that you are contained within by giving you HANDS_BLOCKED.
* actually we don't need the named arg
lets get rid of the cursed thing entirely
* removes sanity check
* we do a bit of component trolling
THIS TOOK ME TWO HOURS FUCK YOU
* removes cruft comment
* cleans up code a teeny bit, upgrades to incapacitated
* wait that named arg is still there wtf
* Review Time
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
* wrong operator and wrong order of operations
* null out the container
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* checks to see if container is qdeld
* weakref time
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
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 it's arguments with a SendSignal() call. Now every component that want's to can also know about this happening.