mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 01:51:46 +00:00
* 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>
76 lines
2.9 KiB
Plaintext
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
|