From f1bdd827cbac0d28f16136a5c25b348b764c344b Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 19 Oct 2017 02:58:14 -0400 Subject: [PATCH 1/9] new blood --- code/modules/surgery/organs/organ_external.dm | 75 ++++++++++++------- .../surgery/organs/subtypes/standard.dm | 2 +- 2 files changed, 47 insertions(+), 30 deletions(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index a623c0a0d0f..15084a8c094 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -96,35 +96,6 @@ return ..() -/obj/item/organ/external/attackby(obj/item/weapon/W as obj, mob/user as mob) - switch(open) - if(0) - if(istype(W,/obj/item/weapon/scalpel)) - spread_germs_to_organ(src, user, W) - user.visible_message("[user] cuts [src] open with [W]!") - open++ - return - if(1) - if(istype(W,/obj/item/weapon/retractor)) - spread_germs_to_organ(src, user, W) - user.visible_message("[user] cracks [src] open like an egg with [W]!") - open++ - return - if(2) - if(istype(W,/obj/item/weapon/hemostat)) - spread_germs_to_organ(src, user, W) - if(contents.len) - var/obj/item/removing = pick(contents) - var/obj/item/organ/internal/O = removing - if(istype(O)) - spread_germs_to_organ(O, user, W) // This wouldn't be any cleaner than the actual surgery - user.put_in_hands(removing) - user.visible_message("[user] extracts [removing] from [src] with [W]!") - else - user.visible_message("[user] fishes around fruitlessly in [src] with [W].") - return - . = ..() - /obj/item/organ/external/update_health() damage = min(max_damage, (brute_dam + burn_dam)) @@ -552,6 +523,52 @@ Note that amputating the affected organ does in fact remove the infection from t qdel(src) // If you flashed away to ashes, YOU FLASHED AWAY TO ASHES return null +/obj/item/organ/external/chest/droplimb() + if(cannot_amputate || !owner) + return + + var/mob/living/carbon/C = owner + + var/organ_spilled = 0 + var/turf/T = get_turf(C) + C.add_splatter_floor(T) + playsound(get_turf(C), 'sound/effects/splat.ogg', 25, 1) + for(var/X in C.internal_organs) + var/obj/item/organ/O = X + var/org_zone = check_zone(O.parent_organ) + if(org_zone != "chest") + continue + O.remove(C) + O.forceMove(T) + organ_spilled = 1 + + if(organ_spilled) + C.visible_message("[C]'s internal organs spill out onto the floor!") + return 1 + + +/obj/item/organ/external/attackby(obj/item/W, mob/user, params) + if(W.sharp) + add_fingerprint(user) + if(!contents.len) + to_chat(user, "There is nothing left inside [src]!") + return + playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) + user.visible_message("[user] begins to cut open [src].",\ + "You begin to cut open [src]...") + if(do_after(user, 54, target = src)) + drop_organs(user) + else + return ..() + +//empties the bodypart from its organs and other things inside it +/obj/item/organ/external/proc/drop_organs(mob/user) + var/turf/T = get_turf(src) + if(status != ORGAN_ROBOT) + playsound(T, 'sound/effects/splat.ogg', 25, 1) + for(var/obj/item/I in src) + I.forceMove(T) + /**************************************************** HELPERS ****************************************************/ diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index a18613d55af..6ff1a7b4d4b 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -13,7 +13,7 @@ vital = 1 amputation_point = "spine" gendered_icon = 1 - cannot_amputate = 1 + //cannot_amputate = 1 parent_organ = null encased = "ribcage" var/fat = FALSE From 74d1394ecc69785bf6e71e7a07e918516234dd2a Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 20 Oct 2017 01:09:48 -0400 Subject: [PATCH 2/9] organ check! --- code/modules/surgery/organs/organ_external.dm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 15084a8c094..0ce41976c24 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -524,7 +524,7 @@ Note that amputating the affected organ does in fact remove the infection from t return null /obj/item/organ/external/chest/droplimb() - if(cannot_amputate || !owner) + if(cannot_amputate || !owner || !hasorgans(src)) return var/mob/living/carbon/C = owner @@ -536,19 +536,18 @@ Note that amputating the affected organ does in fact remove the infection from t for(var/X in C.internal_organs) var/obj/item/organ/O = X var/org_zone = check_zone(O.parent_organ) - if(org_zone != "chest") - continue - O.remove(C) - O.forceMove(T) - organ_spilled = 1 + if(org_zone == "chest" || org_zone == "groin") + O.remove(C) + O.forceMove(T) + organ_spilled = 1 if(organ_spilled) C.visible_message("[C]'s internal organs spill out onto the floor!") return 1 -/obj/item/organ/external/attackby(obj/item/W, mob/user, params) - if(W.sharp) +/obj/item/organ/external/attackby(obj/item/I, mob/user, params) + if(I.sharp) add_fingerprint(user) if(!contents.len) to_chat(user, "There is nothing left inside [src]!") From 8c5beaaaff8bd581358332216ec332c4c8e806b3 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 26 Oct 2017 08:09:08 -0400 Subject: [PATCH 3/9] adds some helper procs --- code/game/objects/items/weapons/handcuffs.dm | 2 +- code/game/objects/items/weapons/legcuffs.dm | 2 +- .../stool_bed_chair_nest/wheelchair.dm | 4 +- code/modules/mob/living/carbon/human/human.dm | 5 +- code/modules/surgery/organs/helpers.dm | 76 +++++++++++++++++++ 5 files changed, 83 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 0b7850bba1f..24bcb7a8c2c 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -29,7 +29,7 @@ if(ishuman(C)) var/mob/living/carbon/human/H = C - if(!(H.get_organ("l_hand") || H.get_organ("r_hand"))) + if(!H.has_left_hand() || !H.has_right_hand()) to_chat(user, "How do you suggest handcuffing someone with no hands?") return diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm index cbb8c3d4ed2..27cae75ac6c 100644 --- a/code/game/objects/items/weapons/legcuffs.dm +++ b/code/game/objects/items/weapons/legcuffs.dm @@ -127,7 +127,7 @@ H.apply_damage(trap_damage, BRUTE,"chest") else H.apply_damage(trap_damage, BRUTE,(pick("l_leg", "r_leg"))) - if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs. + if(!H.legcuffed && H.get_num_legs() >= 2) //beartrap can't cuff you leg if there's already a beartrap or legcuffs. H.legcuffed = src forceMove(H) H.update_inv_legcuffed() diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 8e148d75eb5..9c8624df444 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -39,9 +39,7 @@ if(ishuman(buckled_mob)) var/mob/living/carbon/human/driver = user - var/obj/item/organ/external/l_hand = driver.get_organ("l_hand") - var/obj/item/organ/external/r_hand = driver.get_organ("r_hand") - if(!l_hand && !r_hand) + if(!driver.has_left_hand() && !driver.has_right_hand()) return 0 // No hands to drive your chair? Tough luck! for(var/organ_name in list("l_hand","r_hand","l_arm","r_arm")) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a2235b3811c..4cfede1fdee 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1827,7 +1827,10 @@ ..() /mob/living/carbon/human/canBeHandcuffed() - return 1 + if(get_num_arms() >= 2) + return 1 + else + return 0 /mob/living/carbon/human/InCritical() return (health <= config.health_threshold_crit && stat == UNCONSCIOUS) diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index 61ed78d0e3b..10ec8ee0dcc 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -44,3 +44,79 @@ for(var/obj/item/organ/external/O in bodyparts) if(limb_name == O.limb_name) return O + + +/mob/proc/has_left_hand() + return TRUE + +/mob/living/carbon/human/has_left_hand() + if(has_organ("l_hand")) + return TRUE + return FALSE + + +/mob/proc/has_right_hand() + return TRUE + +/mob/living/carbon/human/has_right_hand() + if(has_organ("r_hand")) + return TRUE + return FALSE + + +//Limb numbers +/mob/proc/get_num_arms() + return 2 + +/mob/living/carbon/human/get_num_arms() + . = 0 + for(var/X in bodyparts) + var/obj/item/organ/external/affecting = X + if(affecting.body_part == ARM_RIGHT) + .++ + if(affecting.body_part == ARM_LEFT) + .++ + +//sometimes we want to ignore that we don't have the required amount of arms. +/mob/proc/get_arm_ignore() + return 0 + + +/mob/proc/get_num_legs() + return 2 + +/mob/living/carbon/human/get_num_legs() + . = 0 + for(var/X in bodyparts) + var/obj/item/organ/external/affecting = X + if(affecting.body_part == LEG_RIGHT) + .++ + if(affecting.body_part == LEG_LEFT) + .++ + +//sometimes we want to ignore that we don't have the required amount of legs. +/mob/proc/get_leg_ignore() + return FALSE + + +/mob/living/carbon/human/get_leg_ignore() + + if(flying == 1) + return TRUE + + var/obj/item/weapon/tank/jetpack/J + if(istype(back,/obj/item/weapon/tank/jetpack)) + J = back + if(J.on == 1) + return TRUE + return FALSE + +/mob/living/proc/get_missing_limbs() + return list() + +/mob/living/carbon/human/get_missing_limbs() + var/list/full = list("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg") + for(var/zone in full) + if(has_organ(zone)) + full -= zone + return full \ No newline at end of file From 1f59e61bc99ed8f5625c26fe910865950fdd8d4d Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 8 Feb 2018 02:31:30 -0500 Subject: [PATCH 4/9] I got to test this in a sec... --- code/modules/mob/living/carbon/human/human.dm | 4 +-- code/modules/surgery/organs/helpers.dm | 2 +- code/modules/surgery/organs/organ_external.dm | 35 ++++++++++++++----- .../surgery/organs/subtypes/standard.dm | 1 - 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 4cfede1fdee..82ef8fcfa8e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1828,9 +1828,9 @@ /mob/living/carbon/human/canBeHandcuffed() if(get_num_arms() >= 2) - return 1 + return TRUE else - return 0 + return FALSE /mob/living/carbon/human/InCritical() return (health <= config.health_threshold_crit && stat == UNCONSCIOUS) diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index 10ec8ee0dcc..c8e5cb8422a 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -79,7 +79,7 @@ //sometimes we want to ignore that we don't have the required amount of arms. /mob/proc/get_arm_ignore() - return 0 + return FALSE /mob/proc/get_num_legs() diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 0ce41976c24..060c1c22e83 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -523,28 +523,45 @@ Note that amputating the affected organ does in fact remove the infection from t qdel(src) // If you flashed away to ashes, YOU FLASHED AWAY TO ASHES return null -/obj/item/organ/external/chest/droplimb() - if(cannot_amputate || !owner || !hasorgans(src)) +/obj/item/organ/external/chest/proc/droplimb() + if(!owner || !hasorgans(src)) return var/mob/living/carbon/C = owner - var/organ_spilled = 0 + var/organ_spilled = FALSE var/turf/T = get_turf(C) C.add_splatter_floor(T) playsound(get_turf(C), 'sound/effects/splat.ogg', 25, 1) for(var/X in C.internal_organs) var/obj/item/organ/O = X - var/org_zone = check_zone(O.parent_organ) - if(org_zone == "chest" || org_zone == "groin") - O.remove(C) - O.forceMove(T) - organ_spilled = 1 + O.remove(C) + O.forceMove(T) + organ_spilled = TRUE if(organ_spilled) C.visible_message("[C]'s internal organs spill out onto the floor!") - return 1 + return TRUE +/obj/item/organ/external/groin/proc/droplimb() + if(!owner || !hasorgans(src)) + return + + var/mob/living/carbon/C = owner + + var/organ_spilled = FALSE + var/turf/T = get_turf(C) + C.add_splatter_floor(T) + playsound(get_turf(C), 'sound/effects/splat.ogg', 25, 1) + for(var/X in C.internal_organs) + var/obj/item/organ/O = X + O.remove(C) + O.forceMove(T) + organ_spilled = TRUE + + if(organ_spilled) + C.visible_message("[C]'s internal organs spill out onto the floor!") + return TRUE /obj/item/organ/external/attackby(obj/item/I, mob/user, params) if(I.sharp) diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index 6ff1a7b4d4b..258ff9ebaff 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -13,7 +13,6 @@ vital = 1 amputation_point = "spine" gendered_icon = 1 - //cannot_amputate = 1 parent_organ = null encased = "ribcage" var/fat = FALSE From 148b4545aaae2d149992dabeecbf087408411763 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 8 Feb 2018 03:05:09 -0500 Subject: [PATCH 5/9] this is still wrong... --- code/modules/surgery/organs/organ_external.dm | 28 +++++-------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index cabcfeb221c..ebbd9d0bb00 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -221,6 +221,8 @@ if(dismember_at_max_damage && body_part != UPPER_TORSO && body_part != LOWER_TORSO) // We've ensured all damage to the mob is retained, now let's drop it, if necessary. droplimb(1) //Clean loss, just drop the limb and be done + if(dismember_at_max_damage && (body_part == UPPER_TORSO || body_part == LOWER_TORSO)) + disembowel() // See if bones need to break check_fracture() @@ -230,7 +232,10 @@ if(!cannot_amputate && (brute_dam) >= (max_damage)) if(prob(brute / 2)) if(sharp) - droplimb(0, DROPLIMB_SHARP) + if(body_part == UPPER_TORSO || body_part == LOWER_TORSO) + disembowel() + else + droplimb(0, DROPLIMB_SHARP) if(owner_old) owner_old.updatehealth() @@ -523,7 +528,7 @@ Note that amputating the affected organ does in fact remove the infection from t qdel(src) // If you flashed away to ashes, YOU FLASHED AWAY TO ASHES return null -/obj/item/organ/external/chest/proc/droplimb() +/obj/item/organ/external/proc/disembowel() if(!owner || !hasorgans(src)) return @@ -543,25 +548,6 @@ Note that amputating the affected organ does in fact remove the infection from t C.visible_message("[C]'s internal organs spill out onto the floor!") return TRUE -/obj/item/organ/external/groin/proc/droplimb() - if(!owner || !hasorgans(src)) - return - - var/mob/living/carbon/C = owner - - var/organ_spilled = FALSE - var/turf/T = get_turf(C) - C.add_splatter_floor(T) - playsound(get_turf(C), 'sound/effects/splat.ogg', 25, 1) - for(var/X in C.internal_organs) - var/obj/item/organ/O = X - O.remove(C) - O.forceMove(T) - organ_spilled = TRUE - - if(organ_spilled) - C.visible_message("[C]'s internal organs spill out onto the floor!") - return TRUE /obj/item/organ/external/attackby(obj/item/I, mob/user, params) if(I.sharp) From 56122116c51a2b0dd6854e452f5f482445d2d75e Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 8 Feb 2018 04:01:45 -0500 Subject: [PATCH 6/9] well now its just not working at all --- code/modules/surgery/organs/organ_external.dm | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index ebbd9d0bb00..22cb6933cda 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -221,8 +221,6 @@ if(dismember_at_max_damage && body_part != UPPER_TORSO && body_part != LOWER_TORSO) // We've ensured all damage to the mob is retained, now let's drop it, if necessary. droplimb(1) //Clean loss, just drop the limb and be done - if(dismember_at_max_damage && (body_part == UPPER_TORSO || body_part == LOWER_TORSO)) - disembowel() // See if bones need to break check_fracture() @@ -232,10 +230,7 @@ if(!cannot_amputate && (brute_dam) >= (max_damage)) if(prob(brute / 2)) if(sharp) - if(body_part == UPPER_TORSO || body_part == LOWER_TORSO) - disembowel() - else - droplimb(0, DROPLIMB_SHARP) + droplimb(0, DROPLIMB_SHARP) if(owner_old) owner_old.updatehealth() @@ -528,7 +523,7 @@ Note that amputating the affected organ does in fact remove the infection from t qdel(src) // If you flashed away to ashes, YOU FLASHED AWAY TO ASHES return null -/obj/item/organ/external/proc/disembowel() +/obj/item/organ/external/chest/droplimb() if(!owner || !hasorgans(src)) return @@ -540,9 +535,33 @@ Note that amputating the affected organ does in fact remove the infection from t playsound(get_turf(C), 'sound/effects/splat.ogg', 25, 1) for(var/X in C.internal_organs) var/obj/item/organ/O = X - O.remove(C) - O.forceMove(T) - organ_spilled = TRUE + var/org_zone = check_zone(O.parent_organ) + if(org_zone == "chest") + O.remove(C) + O.forceMove(T) + organ_spilled = TRUE + + if(organ_spilled) + C.visible_message("[C]'s internal organs spill out onto the floor!") + return TRUE + +/obj/item/organ/external/groin/droplimb() + if(!owner || !hasorgans(src)) + return + + var/mob/living/carbon/C = owner + + var/organ_spilled = FALSE + var/turf/T = get_turf(C) + C.add_splatter_floor(T) + playsound(get_turf(C), 'sound/effects/splat.ogg', 25, 1) + for(var/X in C.internal_organs) + var/obj/item/organ/O = X + var/org_zone = check_zone(O.parent_organ) + if(org_zone == "groin") + O.remove(C) + O.forceMove(T) + organ_spilled = TRUE if(organ_spilled) C.visible_message("[C]'s internal organs spill out onto the floor!") From f4a18ef044492f4bf7408a031c0f7c18112a9492 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 8 Feb 2018 13:36:43 -0500 Subject: [PATCH 7/9] Fixed --- code/modules/surgery/organs/organ_external.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 22cb6933cda..58ed8163a14 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -524,11 +524,14 @@ Note that amputating the affected organ does in fact remove the infection from t return null /obj/item/organ/external/chest/droplimb() - if(!owner || !hasorgans(src)) + if(!owner) return var/mob/living/carbon/C = owner + if(!hasorgans(C)) + return + var/organ_spilled = FALSE var/turf/T = get_turf(C) C.add_splatter_floor(T) @@ -546,11 +549,14 @@ Note that amputating the affected organ does in fact remove the infection from t return TRUE /obj/item/organ/external/groin/droplimb() - if(!owner || !hasorgans(src)) + if(!owner) return var/mob/living/carbon/C = owner + if(!hasorgans(C)) + return + var/organ_spilled = FALSE var/turf/T = get_turf(C) C.add_splatter_floor(T) From acc2547e38289c22be286ca05d3022d63d4a384a Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 8 Feb 2018 22:42:34 -0500 Subject: [PATCH 8/9] its works --- code/modules/surgery/organs/organ_external.dm | 32 +++++-------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 58ed8163a14..7e61bc866a7 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -523,7 +523,7 @@ Note that amputating the affected organ does in fact remove the infection from t qdel(src) // If you flashed away to ashes, YOU FLASHED AWAY TO ASHES return null -/obj/item/organ/external/chest/droplimb() +/obj/item/organ/external/proc/disembowel(spillage_zone = "chest") if(!owner) return @@ -539,7 +539,7 @@ Note that amputating the affected organ does in fact remove the infection from t for(var/X in C.internal_organs) var/obj/item/organ/O = X var/org_zone = check_zone(O.parent_organ) - if(org_zone == "chest") + if(org_zone == spillage_zone) O.remove(C) O.forceMove(T) organ_spilled = TRUE @@ -548,30 +548,14 @@ Note that amputating the affected organ does in fact remove the infection from t C.visible_message("[C]'s internal organs spill out onto the floor!") return TRUE +/obj/item/organ/external/chest/droplimb() + if(disembowel()) + return TRUE + /obj/item/organ/external/groin/droplimb() - if(!owner) - return + if(disembowel("groin")) + return TRUE - var/mob/living/carbon/C = owner - - if(!hasorgans(C)) - return - - var/organ_spilled = FALSE - var/turf/T = get_turf(C) - C.add_splatter_floor(T) - playsound(get_turf(C), 'sound/effects/splat.ogg', 25, 1) - for(var/X in C.internal_organs) - var/obj/item/organ/O = X - var/org_zone = check_zone(O.parent_organ) - if(org_zone == "groin") - O.remove(C) - O.forceMove(T) - organ_spilled = TRUE - - if(organ_spilled) - C.visible_message("[C]'s internal organs spill out onto the floor!") - return TRUE /obj/item/organ/external/attackby(obj/item/I, mob/user, params) From 37f2b8f0100866737df06cbf1e141f2aee154aa7 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 9 Feb 2018 20:18:04 -0500 Subject: [PATCH 9/9] Allows castration --- code/modules/surgery/organs/subtypes/standard.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/surgery/organs/subtypes/standard.dm b/code/modules/surgery/organs/subtypes/standard.dm index 0662cb490a5..3fd8effd56a 100644 --- a/code/modules/surgery/organs/subtypes/standard.dm +++ b/code/modules/surgery/organs/subtypes/standard.dm @@ -45,7 +45,6 @@ w_class = WEIGHT_CLASS_BULKY // if you know what I mean ;) body_part = LOWER_TORSO vital = 1 - cannot_amputate = TRUE parent_organ = "chest" amputation_point = "lumbar" gendered_icon = 1