mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-25 21:19:00 +01:00
Merge pull request #8277 from Aurorablade/DisMemberments
Adds to Dismemberment slightly
This commit is contained in:
@@ -1800,7 +1800,10 @@
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/canBeHandcuffed()
|
||||
return 1
|
||||
if(get_num_arms() >= 2)
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/human/InCritical()
|
||||
return (health <= config.health_threshold_crit && stat == UNCONSCIOUS)
|
||||
|
||||
@@ -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 FALSE
|
||||
|
||||
|
||||
/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
|
||||
@@ -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("<span class='danger'><b>[user]</b> cuts [src] open with [W]!</span>")
|
||||
open++
|
||||
return
|
||||
if(1)
|
||||
if(istype(W,/obj/item/weapon/retractor))
|
||||
spread_germs_to_organ(src, user, W)
|
||||
user.visible_message("<span class='danger'><b>[user]</b> cracks [src] open like an egg with [W]!</span>")
|
||||
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("<span class='danger'><b>[user]</b> extracts [removing] from [src] with [W]!</span>")
|
||||
else
|
||||
user.visible_message("<span class='danger'><b>[user]</b> fishes around fruitlessly in [src] with [W].</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
|
||||
/obj/item/organ/external/update_health()
|
||||
damage = min(max_damage, (brute_dam + burn_dam))
|
||||
@@ -552,6 +523,63 @@ 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(spillage_zone = "chest")
|
||||
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)
|
||||
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 == spillage_zone)
|
||||
O.remove(C)
|
||||
O.forceMove(T)
|
||||
organ_spilled = TRUE
|
||||
|
||||
if(organ_spilled)
|
||||
C.visible_message("<span class='danger'><B>[C]'s internal organs spill out onto the floor!</B></span>")
|
||||
return TRUE
|
||||
|
||||
/obj/item/organ/external/chest/droplimb()
|
||||
if(disembowel())
|
||||
return TRUE
|
||||
|
||||
/obj/item/organ/external/groin/droplimb()
|
||||
if(disembowel("groin"))
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
/obj/item/organ/external/attackby(obj/item/I, mob/user, params)
|
||||
if(I.sharp)
|
||||
add_fingerprint(user)
|
||||
if(!contents.len)
|
||||
to_chat(user, "<span class='warning'>There is nothing left inside [src]!</span>")
|
||||
return
|
||||
playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1)
|
||||
user.visible_message("<span class='warning'>[user] begins to cut open [src].</span>",\
|
||||
"<span class='notice'>You begin to cut open [src]...</span>")
|
||||
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
|
||||
****************************************************/
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
vital = 1
|
||||
amputation_point = "spine"
|
||||
gendered_icon = 1
|
||||
cannot_amputate = 1
|
||||
parent_organ = null
|
||||
encased = "ribcage"
|
||||
var/fat = FALSE
|
||||
@@ -46,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
|
||||
|
||||
Reference in New Issue
Block a user