From c7d745e9c1200580e9b6ecc6e5adaa61611bf10a Mon Sep 17 00:00:00 2001 From: Boop Date: Tue, 17 Jun 2014 23:30:25 +0100 Subject: [PATCH] fixed some weird slime runtime that's been around forever apparently --- code/modules/surgery/appendix.dm | 2 ++ code/modules/surgery/bones.dm | 8 +++++++ code/modules/surgery/generic.dm | 32 ++++++++++++++++------------ code/modules/surgery/headreattach.dm | 25 +++++++++++++--------- code/modules/surgery/implant.dm | 22 ++++++++++--------- code/modules/surgery/other.dm | 3 +++ code/modules/surgery/ribcage.dm | 8 ++++++- code/modules/surgery/robolimbs.dm | 28 +++++++++++++----------- 8 files changed, 81 insertions(+), 47 deletions(-) diff --git a/code/modules/surgery/appendix.dm b/code/modules/surgery/appendix.dm index ede75704ee0..91332eab06b 100644 --- a/code/modules/surgery/appendix.dm +++ b/code/modules/surgery/appendix.dm @@ -8,6 +8,8 @@ can_infect = 1 blood_level = 1 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (!hasorgans(target)) + return 0 if (target_zone != "groin") return 0 var/datum/organ/external/groin = target.get_organ("groin") diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm index d0d30cfd209..0bc14075677 100644 --- a/code/modules/surgery/bones.dm +++ b/code/modules/surgery/bones.dm @@ -15,6 +15,8 @@ max_duration = 60 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (!hasorgans(target)) + return 0 var/datum/organ/external/affected = target.get_organ(target_zone) return affected.open == 2 && affected.stage == 0 @@ -47,6 +49,8 @@ max_duration = 70 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (!hasorgans(target)) + return 0 var/datum/organ/external/affected = target.get_organ(target_zone) return affected.name != "head" && affected.open == 2 && affected.stage == 1 @@ -84,6 +88,8 @@ max_duration = 70 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (!hasorgans(target)) + return 0 var/datum/organ/external/affected = target.get_organ(target_zone) return affected.name == "head" && affected.open == 2 && affected.stage == 1 @@ -118,6 +124,8 @@ max_duration = 60 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (!hasorgans(target)) + return 0 var/datum/organ/external/affected = target.get_organ(target_zone) return affected.open == 2 && affected.stage == 2 diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 1ee3408b41a..0114ea08655 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -35,8 +35,9 @@ max_duration = 110 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open == 0 && target_zone != "mouth" + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 0 && target_zone != "mouth" begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -74,8 +75,9 @@ max_duration = 120 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open == 0 && target_zone != "mouth" + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 0 && target_zone != "mouth" begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -114,10 +116,9 @@ max_duration = 110 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if(isslime(target)) - return 0 - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open == 0 && target_zone != "mouth" + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 0 && target_zone != "mouth" begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -153,8 +154,9 @@ max_duration = 60 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open && (affected.status & ORGAN_BLEEDING) + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open && (affected.status & ORGAN_BLEEDING) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -187,8 +189,9 @@ max_duration = 40 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open == 1 && !(affected.status & ORGAN_BLEEDING) + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 1 && !(affected.status & ORGAN_BLEEDING) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -242,8 +245,9 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open && target_zone != "mouth" + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open && target_zone != "mouth" begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) diff --git a/code/modules/surgery/headreattach.dm b/code/modules/surgery/headreattach.dm index eb5c6964269..c808fa200ec 100644 --- a/code/modules/surgery/headreattach.dm +++ b/code/modules/surgery/headreattach.dm @@ -28,8 +28,9 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && !(affected.status & ORGAN_CUT_AWAY) + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return !(affected.status & ORGAN_CUT_AWAY) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] starts peeling back tattered flesh where [target]'s head used to be with \the [tool].", \ @@ -61,8 +62,9 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.status & ORGAN_CUT_AWAY && affected.open < 3 && !(affected.status & ORGAN_ATTACHABLE) + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.status & ORGAN_CUT_AWAY && affected.open < 3 && !(affected.status & ORGAN_ATTACHABLE) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -94,8 +96,9 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open == 3 + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 3 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] is stapling and suturing flesh into place in [target]'s esophagal and vocal region with \the [tool].", \ @@ -128,8 +131,9 @@ max_duration = 70 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open == 4 + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 4 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] starts adjusting area around [target]'s neck with \the [tool].", \ @@ -162,8 +166,9 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/head = target.get_organ(target_zone) - return ..() && head.status & ORGAN_ATTACHABLE + if(..()) + var/datum/organ/external/head = target.get_organ(target_zone) + return head.status & ORGAN_ATTACHABLE begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] starts attaching [tool] to [target]'s reshaped neck.", \ diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index a57d1d89ca9..c3f4f3298a2 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -7,6 +7,8 @@ /datum/surgery_step/cavity priority = 1 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if(!hasorgans(target)) + return 0 var/datum/organ/external/affected = target.get_organ(target_zone) return affected.open == 2 && !(affected.status & ORGAN_BLEEDING) && (target_zone != "chest" || target.op_stage.ribcage == 2) @@ -41,8 +43,9 @@ max_duration = 80 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && !affected.cavity && !affected.hidden + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return !affected.cavity && !affected.hidden begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -76,8 +79,9 @@ max_duration = 80 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.cavity + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.cavity begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -106,11 +110,9 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if(isslime(target)) - return 0 - var/datum/organ/external/affected = target.get_organ(target_zone) - var/can_fit = !affected.hidden && affected.cavity && tool.w_class <= get_max_wclass(affected) - return ..() && can_fit + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return !affected.hidden && affected.cavity && tool.w_class <= get_max_wclass(affected) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -185,7 +187,7 @@ affected.implants -= obj target.hud_updateflag |= 1 << IMPLOYAL_HUD - + //Handle possessive brain borers. if(istype(obj,/mob/living/simple_animal/borer)) var/mob/living/simple_animal/borer/worm = obj diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 55fc59dd35a..bd1002b06d6 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -17,6 +17,9 @@ max_duration = 90 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if(!hasorgans(target)) + return 0 + var/datum/organ/external/affected = target.get_organ(target_zone) var/internal_bleeding = 0 diff --git a/code/modules/surgery/ribcage.dm b/code/modules/surgery/ribcage.dm index 7515fa0529a..7bbad9b5b1d 100644 --- a/code/modules/surgery/ribcage.dm +++ b/code/modules/surgery/ribcage.dm @@ -19,7 +19,7 @@ max_duration = 70 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if (!istype(target)) + if (!hasorgans(target)) return var/datum/organ/external/affected = target.get_organ(target_zone) return ..() && target.op_stage.ribcage == 0 && affected.open >= 2 @@ -197,6 +197,9 @@ max_duration = 90 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if(!hasorgans(target)) + return 0 + var/is_chest_organ_damaged = 0 var/datum/organ/external/chest/chest = target.get_organ("chest") for(var/datum/organ/internal/I in chest.internal_organs) if(I.damage > 0) @@ -278,6 +281,9 @@ max_duration = 90 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if(!hasorgans(target)) + return 0 + var/is_chest_organ_damaged = 0 var/datum/organ/internal/heart/heart = target.internal_organs["heart"] var/datum/organ/external/chest/chest = target.get_organ("chest") diff --git a/code/modules/surgery/robolimbs.dm b/code/modules/surgery/robolimbs.dm index 3be16401be2..d201d627543 100644 --- a/code/modules/surgery/robolimbs.dm +++ b/code/modules/surgery/robolimbs.dm @@ -30,8 +30,9 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && !(affected.status & ORGAN_CUT_AWAY) + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return !(affected.status & ORGAN_CUT_AWAY) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -64,8 +65,9 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.status & ORGAN_CUT_AWAY && affected.open < 3 && !(affected.status & ORGAN_ATTACHABLE) + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.status & ORGAN_CUT_AWAY && affected.open < 3 && !(affected.status & ORGAN_ATTACHABLE) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -100,8 +102,9 @@ max_duration = 70 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.open == 3 + if(..()) + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.open == 3 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) @@ -134,12 +137,13 @@ max_duration = 100 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - var/obj/item/robot_parts/p = tool - if (p.part) - if (!(target_zone in p.part)) - return 0 - var/datum/organ/external/affected = target.get_organ(target_zone) - return ..() && affected.status & ORGAN_ATTACHABLE + if(..()) + var/obj/item/robot_parts/p = tool + if (p.part) + if (!(target_zone in p.part)) + return 0 + var/datum/organ/external/affected = target.get_organ(target_zone) + return affected.status & ORGAN_ATTACHABLE begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone)