* Shuffles bedsheet attack actions a wee bit (#71865)
## About The Pull Request
my friends been doing makeshift surgery and gets mad about having to do
harm intent to start surgery and then having to turn it off to do every
single other surgery step and i agree, thats silly
~~instead, now, the bedsheet attack does not check for harm and ALWAYS
COVERS with left mouse button and ALWAYS PREPARES SURGERY with right
mouse button~~
to be more consistent all surgery initiators now work on left mouse
click and covering with your bedsheet is the right mouse button

## Why It's Good For The Game
while obviously a lot of the time makeshift surgery IS about harming
someone else its inconsistent with how all other surgery tools function
and also isn't very clear at all. the screentip in addition to having
them be separate buttons means that bedsheets two functions are overall
much clearer and its surgery drape function will no longer lead to an
assistant accidentally knifing someone when theyre trying to save
someones life
## Changelog
🆑
qol: added makeshift surgery screentip
qol: you no longer have to go in and out of harm intent to do surgery
with a bedsheet
/🆑
* Shuffles bedsheet attack actions a wee bit
Co-authored-by: Sol N <116288367+flowercuco@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.