Bargain bin organ quirks: Prosthetic organ and Tin Man (#76498)

## About The Pull Request

Basically, the organ equivalents of prosthetic limb and quadruple
amputee.
These replace your organs with absolutely terrible cybernetic
counterparts which also have absolutely no resistance against EMPs.

![image](https://github.com/tgstation/tgstation/assets/82850673/1e4a4abc-8871-41fc-b2f7-a2e626f1fdfb)

### ADDITIONAL FUN
Surplus organs are so awful that if surgically removed while not EMPed
nor failing, they *explode*!

## Why It's Good For The Game

More character customization, and more suffering for hardcore random
players.

## Changelog

🆑
add: Added two new quirks, prosthetic organ and tin man. Essentially,
they replace organs with bad bad not good cybernetic counterparts.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
This commit is contained in:
ChungusGamer666
2023-07-07 20:31:43 -03:00
committed by GitHub
parent a2c8cce535
commit ca401b57a7
12 changed files with 265 additions and 60 deletions
@@ -0,0 +1,29 @@
/**
* ## DANGEROUS SURGICAL REMOVAL ELEMENT
*
* Makes the organ explode when removed surgically.
* That's about it.
*/
/datum/element/dangerous_surgical_removal
/datum/element/dangerous_surgical_removal/Attach(datum/target)
. = ..()
if(!isorgan(target))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_ORGAN_SURGICALLY_REMOVED, PROC_REF(on_surgical_removal))
/datum/element/dangerous_surgical_removal/Detach(datum/source)
. = ..()
UnregisterSignal(source, COMSIG_ORGAN_SURGICALLY_REMOVED)
/datum/element/dangerous_surgical_removal/proc/on_surgical_removal(obj/item/organ/source, mob/living/user, mob/living/carbon/old_owner, target_zone, obj/item/tool)
SIGNAL_HANDLER
if(source.organ_flags & (ORGAN_FAILING|ORGAN_EMP))
return
if(user?.Adjacent(source))
source.audible_message("[source] explodes on [user]'s face!")
user.take_bodypart_damage(15)
else
source.audible_message("[source] explodes into tiny pieces!")
explosion(source, light_impact_range = 1, explosion_cause = source)
qdel(source)