Files
Bubberstation/code/modules/surgery/ear_surgery.dm
SkyratBot fadc04eb93 [MIRROR] Adds surgery for fixing ears/hearing. [MDB IGNORE] (#18657)
* Adds surgery for fixing ears/hearing. (#71651)

## About The Pull Request

Adds surgery for fixing ears/hearing - this time without somehow
bricking my entire fork trying to squash the merge commit out of there
as I did with #71644. My apologies to the folks who reviewed and were
sitting on the last one - I actually used a branch this time, so it
shouldn't be a mess. 💀

Apologies and thanks to @ distributivgesetz and @ Time-Green for review
and comments on the earlier PR, this should integrate all of your
feedback.

## Why It's Good For The Game

Consistency with eye surgery as a way of getting people access to the
information they use to engage with the game, when getting people back
to engaging with the game is the point of medical (and you don't always
have chems or upgraded organ freezers for non-functional ears) is a good
thing.

## Changelog

🆑
add: Adds ear surgery to repair damaged ears/deafness.
/🆑

* Adds surgery for fixing ears/hearing.

Co-authored-by: Higgin <cdonny11@yahoo.com>
2023-01-12 12:14:05 -08:00

76 lines
2.9 KiB
Plaintext

//Head surgery to fix the ears organ
/datum/surgery/ear_surgery
name = "Ear surgery"
requires_bodypart_type = NONE
organ_to_manipulate = ORGAN_SLOT_EARS
possible_locs = list(BODY_ZONE_HEAD)
steps = list(
/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/saw,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/fix_ears,
/datum/surgery_step/close,
)
//fix ears
/datum/surgery_step/fix_ears
name = "fix ears (hemostat)"
implements = list(
TOOL_HEMOSTAT = 100,
TOOL_SCREWDRIVER = 45,
/obj/item/pen = 25)
time = 64
/datum/surgery/ear_surgery/can_start(mob/user, mob/living/carbon/target)
var/obj/item/organ/internal/ears/target_ears = target.getorganslot(ORGAN_SLOT_EARS)
if(!target_ears)
return FALSE
return TRUE
/datum/surgery_step/fix_ears/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(
user,
target,
span_notice("You begin to fix [target]'s ears..."),
span_notice("[user] begins to fix [target]'s ears."),
span_notice("[user] begins to perform surgery on [target]'s ears."),
)
display_pain(target, "You feel a dizzying pain in your head!")
/datum/surgery_step/fix_ears/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/obj/item/organ/internal/ears/target_ears = target.getorganslot(ORGAN_SLOT_EARS)
display_results(
user,
target,
span_notice("You succeed in fixing [target]'s ears."),
span_notice("[user] successfully fixes [target]'s ears!"),
span_notice("[user] completes the surgery on [target]'s ears."),
)
display_pain(target, "Your head swims, but it seems like you can feel your hearing coming back!")
target_ears.deaf = (20) //deafness works off ticks, so this should work out to about 30-40s
target_ears.setOrganDamage(0)
return ..()
/datum/surgery_step/fix_ears/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.getorgan(/obj/item/organ/internal/brain))
display_results(
user,
target,
span_warning("You accidentally stab [target] right in the brain!"),
span_warning("[user] accidentally stabs [target] right in the brain!"),
span_warning("[user] accidentally stabs [target] right in the brain!"),
)
display_pain(target, "You feel a visceral stabbing pain right through your head, into your brain!")
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 70)
else
display_results(
user,
target,
span_warning("You accidentally stab [target] right in the brain! Or would have, if [target] had a brain."),
span_warning("[user] accidentally stabs [target] right in the brain! Or would have, if [target] had a brain."),
span_warning("[user] accidentally stabs [target] right in the brain!"),
)
display_pain(target, "You feel a visceral stabbing pain right through your head!") // dunno who can feel pain w/o a brain but may as well be consistent.
return FALSE