Super Dismemberment (#11086)

This commit is contained in:
Geeves
2021-02-15 12:47:09 +01:00
committed by GitHub
parent 0ccc20de19
commit c710fe52f5
8 changed files with 56 additions and 9 deletions
+4 -1
View File
@@ -492,4 +492,7 @@
/mob/living/carbon/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash)
if(eyecheck() < intensity || override_blindness_check)
return ..()
return ..()
/mob/living/carbon/get_contained_external_atoms()
. = contents - internal_organs
+12 -1
View File
@@ -131,4 +131,15 @@
/mob/living/carbon/human/proc/vr_disconnect()
if(remote_network)
SSvirtualreality.remove_robot(src, remote_network)
remote_network = null
remote_network = null
/mob/living/carbon/human/proc/drop_all_limbs(var/droplimb_type = DROPLIMB_BLUNT)
for(var/thing in organs)
var/obj/item/organ/external/limb = thing
var/limb_can_amputate = (limb.limb_flags & ORGAN_CAN_AMPUTATE)
limb.limb_flags |= ORGAN_CAN_AMPUTATE
limb.droplimb(TRUE, droplimb_type, TRUE, TRUE)
if(!QDELETED(limb) && !limb_can_amputate)
limb.limb_flags &= ~ORGAN_CAN_AMPUTATE
dump_contents()
qdel(src)
@@ -272,4 +272,7 @@
if(species?.respawn_type)
set_death_time(species.respawn_type, world.time)
else
set_death_time(CREW, world.time)
set_death_time(CREW, world.time)
/mob/living/carbon/human/get_contained_external_atoms()
. = ..() - organs
+10
View File
@@ -1207,6 +1207,16 @@ proc/is_blind(A)
/mob/proc/get_antag_datum(var/antag_role)
return
/mob/dump_contents()
for(var/thing in get_contained_external_atoms())
var/atom/movable/AM = thing
drop_from_inventory(AM, loc)
if(ismob(AM))
var/mob/M = AM
if(M.client)
M.client.eye = M.client.mob
M.client.perspective = MOB_PERSPECTIVE
/mob/proc/in_neck_grab()
for(var/thing in grabbed_by)
var/obj/item/grab/G = thing
+3
View File
@@ -901,7 +901,10 @@ Note that amputating the affected organ does in fact remove the infection from t
victim.shock_stage += min_broken_damage
victim.flash_strong_pain()
var/mob/living/carbon/human/last_owner = owner
removed(null, ignore_children)
if(istype(last_owner) && !QDELETED(last_owner) && length(last_owner.organs) <= 1)
last_owner.drop_all_limbs(disintegrate) // drops the last remaining part, usually the torso, as an item
if(parent_organ)
var/datum/wound/lost_limb/W = new(src, disintegrate, clean)