Super Dismemberment (#11086)

This commit is contained in:
Geeves
2021-02-15 13:47:09 +02:00
committed by GitHub
parent 0ccc20de19
commit c710fe52f5
8 changed files with 56 additions and 9 deletions
+13
View File
@@ -606,3 +606,16 @@
// It receives the curent mob of the player s argument and MUST return the mob the player has been assigned.
/atom/proc/assign_player(var/mob/user)
return
/atom/proc/get_contained_external_atoms()
. = contents
/atom/proc/dump_contents()
for(var/thing in get_contained_external_atoms())
var/atom/movable/AM = thing
AM.dropInto(loc)
if(ismob(AM))
var/mob/M = AM
if(M.client)
M.client.eye = M.client.mob
M.client.perspective = MOB_PERSPECTIVE
@@ -106,17 +106,15 @@
return 0
return 1
/obj/structure/closet/proc/dump_contents()
/obj/structure/closet/dump_contents()
//Cham Projector Exception
for(var/obj/effect/dummy/chameleon/AD in src)
for(var/obj/effect/dummy/chameleon/AD in contents)
AD.forceMove(loc)
for(var/obj/I in src)
if(linked_teleporter && I == linked_teleporter)
continue
for(var/obj/I in contents - linked_teleporter)
I.forceMove(loc)
for(var/mob/M in src)
for(var/mob/M in contents)
M.forceMove(loc)
if(M.client)
M.client.eye = M.client.mob
+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)
+6
View File
@@ -0,0 +1,6 @@
author: Geeves
delete-after: True
changes:
- rscadd: "You can now completely get rid of bodies by dismembering all their limbs, including the lower body."