From efb0c2c398f2f6c45fc3d6ce8043d9e338cf5d1c Mon Sep 17 00:00:00 2001 From: Spaghetti-bit Date: Sat, 24 May 2025 14:39:26 -0500 Subject: [PATCH] [MODULAR] Adds synth versions of fix ears and fix eyes. (#3871) ## About The Pull Request Fixes blood being applied to hands when operating on a robotic bodypart. Adds a synthetic / mechanical version of fix ears and fix eyes. Adds sounds for fix ears and fix eyes. Mechanical versions too. Ears: Step by step: - screwdriver - open hatch (hand) - Wrench - multitool - Screwdriver - Wrench - Screwdriver Eyes: Step by step: - screwdriver - open hatch (hand) - multitool - screwdriver - screwdriver ## Why It's Good For The Game Robotic limbs don't have bone (for the most part) so having to saw into a synthetic's head to repair their ears made no sense. You shouldn't be getting blood splashed on your hands if there is no blood / its robotic to begin with! ## Proof Of Testing Loaded up, checked available surgeries, went through each surgery, it worked. Yippie. Made sure ear surgery and eye surgery for organics still worked. It did. Yippie 2x.
Screenshots/Videos Auditory Sensor Repair: ![image](https://github.com/user-attachments/assets/8f968fff-9039-4ae0-996e-1dbdc763fd00) Optical Sensor Repair: ![image](https://github.com/user-attachments/assets/48ffc5a3-c670-4e29-9e9d-d4b8788f510f) Preexisting sounds used for the surgery: Organic: Preop https://github.com/user-attachments/assets/575c4b28-2322-4876-9716-f8fe1ab6549d Failure https://github.com/user-attachments/assets/00995ef2-0100-40e1-8c24-133517a3cc5f Success https://github.com/user-attachments/assets/db62542c-ab54-4347-ac68-bd390a737ddf Mechanic: Prepop https://github.com/user-attachments/assets/4778fe6a-fc48-43ae-bed6-88a9b02578ac Failure https://github.com/user-attachments/assets/b8daa66d-b111-406f-89da-abdefbd7bb26 Success https://github.com/user-attachments/assets/c795a54d-c1b0-436e-9619-303d042a0567
## Changelog :cl: add: Added sounds for eye and ear surgery. add: Added synthetic versions of fix ears and fix eyes (Repair Auditory Sensors and Repair Optical Sensors) fix: fixed blood being applied to a surgeon's hands when the patient's limb was robotic. /:cl: --- code/modules/surgery/surgery_step.dm | 15 +++++++++- .../modules/surgery/organs/ear_surgery.dm | 30 +++++++++++++++++++ .../modules/surgery/organs/eye_surgery.dm | 28 +++++++++++++++++ .../code/modules/surgery/surgery_step.dm | 1 + tgstation.dme | 2 ++ 5 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 modular_zubbers/code/modules/surgery/organs/ear_surgery.dm create mode 100644 modular_zubbers/code/modules/surgery/organs/eye_surgery.dm diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index 3a552db8635..52cb2d21e80 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -245,11 +245,24 @@ span_notice("[user] succeeds!"), span_notice("[user] finishes."), ) + // BUBBER EDIT: prevents blood from being splashed / added to the surgeon's gloves if the patient's limb / organ (eyes) are robotic if(ishuman(user)) var/mob/living/carbon/human/surgeon = user - surgeon.add_blood_DNA_to_items(target.get_blood_dna_list(), ITEM_SLOT_GLOVES) + if (ishuman(target)) + var/mob/living/carbon/human/human_target = target + var/obj/item/bodypart/target_bodypart = target.get_bodypart(target_zone) + var/obj/item/organ/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES) + if(target_bodypart) + if(target_bodypart.bodytype != BODYTYPE_ROBOTIC && !HAS_TRAIT(human_target, TRAIT_NOBLOOD)) + surgeon.add_blood_DNA_to_items(target.get_blood_dna_list(), ITEM_SLOT_GLOVES) + else if(target_eyes) // snowflake case for eyes + if(target_eyes.organ_flags != ORGAN_ROBOTIC && !HAS_TRAIT(human_target, TRAIT_NOBLOOD)) + surgeon.add_blood_DNA_to_items(target.get_blood_dna_list(), ITEM_SLOT_GLOVES) + else + surgeon.add_blood_DNA_to_items(target.get_blood_dna_list(), ITEM_SLOT_GLOVES) else user.add_mob_blood(target) + // BUBBER EDIT END return TRUE /datum/surgery_step/proc/play_success_sound(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/modular_zubbers/code/modules/surgery/organs/ear_surgery.dm b/modular_zubbers/code/modules/surgery/organs/ear_surgery.dm new file mode 100644 index 00000000000..81f8687e321 --- /dev/null +++ b/modular_zubbers/code/modules/surgery/organs/ear_surgery.dm @@ -0,0 +1,30 @@ +/datum/surgery/ear_surgery + requires_bodypart_type = BODYTYPE_ORGANIC | BODYTYPE_ALIEN | BODYTYPE_NANO | BODYTYPE_SHADOW + +/datum/surgery/ear_surgery/mechanic + name = "Auditory Sensor repair" + requires_bodypart_type = BODYTYPE_ROBOTIC + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/open_hatch, + /datum/surgery_step/mechanic_unwrench, + /datum/surgery_step/prepare_electronics, + /datum/surgery_step/fix_ears/mechanic, + /datum/surgery_step/mechanic_wrench, + /datum/surgery_step/mechanic_close + ) + +/datum/surgery_step/fix_ears + preop_sound = 'sound/items/handling/surgery/hemostat1.ogg' + success_sound = 'sound/items/handling/surgery/retractor2.ogg' + failure_sound = 'sound/items/handling/surgery/organ2.ogg' + +/datum/surgery_step/fix_ears/mechanic + name = "repair auditory sensor (screwdriver/hemostat)" + implements = list( + TOOL_SCREWDRIVER = 100, + TOOL_HEMOSTAT = 45, + /obj/item/pen = 25) + preop_sound = 'sound/items/taperecorder/tape_flip.ogg' + success_sound = 'sound/items/taperecorder/taperecorder_close.ogg' + failure_sound = 'sound/items/handling/disk_drop.ogg' diff --git a/modular_zubbers/code/modules/surgery/organs/eye_surgery.dm b/modular_zubbers/code/modules/surgery/organs/eye_surgery.dm new file mode 100644 index 00000000000..f0ccc45739a --- /dev/null +++ b/modular_zubbers/code/modules/surgery/organs/eye_surgery.dm @@ -0,0 +1,28 @@ +/datum/surgery/eye_surgery + requires_bodypart_type = BODYTYPE_ORGANIC | BODYTYPE_ALIEN | BODYTYPE_NANO | BODYTYPE_SHADOW + +/datum/surgery/eye_surgery/mechanic + name = "Optical Sensor repair" + requires_bodypart_type = BODYTYPE_ROBOTIC + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/open_hatch, + /datum/surgery_step/prepare_electronics, + /datum/surgery_step/fix_eyes/mechanic, + /datum/surgery_step/mechanic_close + ) + +/datum/surgery_step/fix_eyes + preop_sound = 'sound/items/handling/surgery/hemostat1.ogg' + success_sound = 'sound/items/handling/surgery/retractor2.ogg' + failure_sound = 'sound/items/handling/surgery/organ2.ogg' + +/datum/surgery_step/fix_eyes/mechanic + name = "repair optical sensor (screwdriver/hemostat)" + implements = list( + TOOL_SCREWDRIVER = 100, + TOOL_HEMOSTAT = 45, + /obj/item/pen = 25) + preop_sound = 'sound/items/taperecorder/tape_flip.ogg' + success_sound = 'sound/items/taperecorder/taperecorder_close.ogg' + failure_sound = 'sound/items/handling/disk_drop.ogg' diff --git a/modular_zubbers/code/modules/surgery/surgery_step.dm b/modular_zubbers/code/modules/surgery/surgery_step.dm index a2fc9f59fef..1d77ee95094 100644 --- a/modular_zubbers/code/modules/surgery/surgery_step.dm +++ b/modular_zubbers/code/modules/surgery/surgery_step.dm @@ -14,3 +14,4 @@ return TRUE return FALSE + diff --git a/tgstation.dme b/tgstation.dme index 26d6148796a..ac149146a74 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9634,6 +9634,8 @@ #include "modular_zubbers\code\modules\surgery\advanced\trauma_surgery.dm" #include "modular_zubbers\code\modules\surgery\bodyparts\dismemberment.dm" #include "modular_zubbers\code\modules\surgery\bodyparts\species_parts\misc_bodyparts.dm" +#include "modular_zubbers\code\modules\surgery\organs\ear_surgery.dm" +#include "modular_zubbers\code\modules\surgery\organs\eye_surgery.dm" #include "modular_zubbers\code\modules\surgery\organs\external\antennae.dm" #include "modular_zubbers\code\modules\surgery\organs\external\wings.dm" #include "modular_zubbers\code\modules\surgery\organs\internal\ears\_ears.dm"