diff --git a/code/modules/surgery/ear_surgery.dm b/code/modules/surgery/ear_surgery.dm index 416857bafb25..fb5346c49ee9 100644 --- a/code/modules/surgery/ear_surgery.dm +++ b/code/modules/surgery/ear_surgery.dm @@ -24,9 +24,9 @@ /datum/surgery/ear_surgery/can_start(mob/user, mob/living/carbon/target) var/obj/item/organ/internal/ears/target_ears = target.get_organ_slot(ORGAN_SLOT_EARS) - if(!target_ears) - return FALSE - return TRUE + if(target_ears?.damage > 0) // monkestation edit: ear surgery is repeatable so no worries about wasting the surgery + return TRUE + return FALSE /datum/surgery_step/fix_ears/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results( diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm index 7b6d7844ee6c..6523832bc392 100644 --- a/code/modules/surgery/eye_surgery.dm +++ b/code/modules/surgery/eye_surgery.dm @@ -22,10 +22,9 @@ /datum/surgery/eye_surgery/can_start(mob/user, mob/living/carbon/target) var/obj/item/organ/internal/eyes/target_eyes = target.get_organ_slot(ORGAN_SLOT_EYES) - if(!target_eyes) - to_chat(user, span_warning("It's hard to do surgery on someone's eyes when [target.p_they()] [target.p_do()]n't have any.")) - return FALSE - return TRUE + if(target_eyes?.damage > 0) // monkestation edit: eye surgery is repeatable so only give the option if damaged. + return TRUE + return FALSE /datum/surgery_step/fix_eyes/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results( diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm index 56e256534f7f..f6faf6dec651 100644 --- a/code/modules/surgery/lobectomy.dm +++ b/code/modules/surgery/lobectomy.dm @@ -72,3 +72,4 @@ human_target.losebreath += 4 human_target.adjustOrganLoss(ORGAN_SLOT_LUNGS, 10) return FALSE + diff --git a/monkestation/code/modules/surgery/coronary_bypass.dm b/monkestation/code/modules/surgery/coronary_bypass.dm new file mode 100644 index 000000000000..0c554effde4b --- /dev/null +++ b/monkestation/code/modules/surgery/coronary_bypass.dm @@ -0,0 +1,14 @@ +/datum/surgery/coronary_bypass/mechanic + name = "Prosthesis Coronary Bypass" + requires_bodypart_type = BODYTYPE_ROBOTIC + target_mobtypes = list(/mob/living/carbon/human) // Simpler mobs don't have bodypart types + 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/incise_heart, + /datum/surgery_step/coronary_bypass, + /datum/surgery_step/mechanic_wrench, + /datum/surgery_step/mechanic_close, + ) diff --git a/monkestation/code/modules/surgery/ear_surgery.dm b/monkestation/code/modules/surgery/ear_surgery.dm new file mode 100644 index 000000000000..6a5d63c6aae3 --- /dev/null +++ b/monkestation/code/modules/surgery/ear_surgery.dm @@ -0,0 +1,14 @@ +/datum/surgery/ear_surgery + requires_bodypart_type = BODYTYPE_ORGANIC + +/datum/surgery/ear_surgery/mechanic + name = "Ear surgery" + requires_bodypart_type = BODYTYPE_ROBOTIC + target_mobtypes = list(/mob/living/carbon/human) + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/open_hatch, + /datum/surgery_step/prepare_electronics, + /datum/surgery_step/fix_ears, + /datum/surgery_step/mechanic_close, + ) diff --git a/monkestation/code/modules/surgery/eye_surgery.dm b/monkestation/code/modules/surgery/eye_surgery.dm new file mode 100644 index 000000000000..b841056606d8 --- /dev/null +++ b/monkestation/code/modules/surgery/eye_surgery.dm @@ -0,0 +1,14 @@ +/datum/surgery/eye_surgery + requires_bodypart_type = BODYTYPE_ORGANIC + +/datum/surgery/eye_surgery/mechanic + name = "Eye surgery" + requires_bodypart_type = BODYTYPE_ROBOTIC + target_mobtypes = list(/mob/living/carbon/human) + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/open_hatch, + /datum/surgery_step/prepare_electronics, + /datum/surgery_step/fix_eyes, + /datum/surgery_step/mechanic_close, + ) diff --git a/monkestation/code/modules/surgery/gastrectomy.dm b/monkestation/code/modules/surgery/gastrectomy.dm new file mode 100644 index 000000000000..95f511e7bfa1 --- /dev/null +++ b/monkestation/code/modules/surgery/gastrectomy.dm @@ -0,0 +1,15 @@ +/datum/surgery/gastrectomy/mechanic + name = "Prosthesis Gastrectomy" + requires_bodypart_type = BODYTYPE_ROBOTIC + target_mobtypes = list(/mob/living/carbon/human) // Simpler mobs don't have bodypart types + 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/incise, + /datum/surgery_step/gastrectomy, + /datum/surgery_step/clamp_bleeders, + /datum/surgery_step/mechanic_wrench, + /datum/surgery_step/mechanic_close, + ) diff --git a/monkestation/code/modules/surgery/hepatectomy.dm b/monkestation/code/modules/surgery/hepatectomy.dm new file mode 100644 index 000000000000..15024689acf6 --- /dev/null +++ b/monkestation/code/modules/surgery/hepatectomy.dm @@ -0,0 +1,14 @@ +/datum/surgery/hepatectomy/mechanic + name = "Prosthesis Hepatectomy" + requires_bodypart_type = BODYTYPE_ROBOTIC + target_mobtypes = list(/mob/living/carbon/human) // Simpler mobs don't have bodypart types + 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/incise, + /datum/surgery_step/hepatectomy, + /datum/surgery_step/mechanic_wrench, + /datum/surgery_step/mechanic_close, + ) diff --git a/monkestation/code/modules/surgery/lobectomy.dm b/monkestation/code/modules/surgery/lobectomy.dm new file mode 100644 index 000000000000..d3b0a6030363 --- /dev/null +++ b/monkestation/code/modules/surgery/lobectomy.dm @@ -0,0 +1,13 @@ +/datum/surgery/lobectomy/mechanic + name = "Prosthesis Lobectomy" + requires_bodypart_type = BODYTYPE_ROBOTIC + target_mobtypes = list(/mob/living/carbon/human) // Simpler mobs don't have bodypart types + 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/lobectomy, + /datum/surgery_step/mechanic_wrench, + /datum/surgery_step/mechanic_close, + ) diff --git a/tgstation.dme b/tgstation.dme index 1ddf49226214..fbb70927fd8a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7914,7 +7914,13 @@ #include "monkestation\code\modules\storytellers\storytellers\vote.dm" #include "monkestation\code\modules\storytellers\storytellers\warrior.dm" #include "monkestation\code\modules\surgery\blood_filter.dm" +#include "monkestation\code\modules\surgery\coronary_bypass.dm" +#include "monkestation\code\modules\surgery\ear_surgery.dm" +#include "monkestation\code\modules\surgery\eye_surgery.dm" +#include "monkestation\code\modules\surgery\gastrectomy.dm" #include "monkestation\code\modules\surgery\healing.dm" +#include "monkestation\code\modules\surgery\hepatectomy.dm" +#include "monkestation\code\modules\surgery\lobectomy.dm" #include "monkestation\code\modules\surgery\nif_debonding.dm" #include "monkestation\code\modules\surgery\advanced\brainwashing.dm" #include "monkestation\code\modules\surgery\bodyparts\arachnid_bodyparts.dm"