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"