diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index eeef80ca5b..824b50b168 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -314,7 +314,7 @@ return else connected_message("Authorized Ejection") - SPEAK("An authorized ejection of [occupant.real_name] has occurred.") + SPEAK("An authorized ejection of [clonemind.name] has occurred.") to_chat(user, "You force an emergency ejection. ") go_out() else @@ -342,7 +342,7 @@ if(mess) //Clean that mess and dump those gibs! mess = FALSE - new /obj/effect/gibspawner/generic(loc) + new /obj/effect/gibspawner/generic(loc) audible_message("You hear a splat.") icon_state = "pod_0" return @@ -355,7 +355,7 @@ to_chat(occupant, "There is a bright flash!
You feel like a new being.
") occupant.flash_act() - var/turf/T = get_turf(src) + var/turf/T = get_turf(src) occupant.forceMove(T) icon_state = "pod_0" occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest. @@ -367,6 +367,8 @@ SPEAK("Critical error! Please contact a Thinktronic Systems \ technician, as your warranty may be affected.") mess = TRUE + for(var/obj/item/O in unattached_flesh) + qdel(O) icon_state = "pod_g" if(occupant.mind != clonemind) clonemind.transfer_to(occupant) @@ -375,16 +377,16 @@ to_chat(occupant, "Agony blazes across your consciousness as your body is torn apart.
Is this what dying is like? Yes it is.
") playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 50, 0) occupant << sound('sound/hallucinations/veryfar_noise.ogg',0,1,50) - QDEL_IN(occupant, 40) + QDEL_IN(occupant, 40) /obj/machinery/clonepod/relaymove(mob/user) if(user.stat == CONSCIOUS) go_out() /obj/machinery/clonepod/emp_act(severity) - if(prob(100/(severity*efficiency))) + if((occupant || mess) && prob(100/(severity*efficiency))) connected_message(Gibberish("EMP-caused Accidental Ejection", 0)) - SPEAK(Gibberish("Exposure to electromagnetic fields has caused the ejection of [occupant.real_name] prematurely." ,0)) + SPEAK(Gibberish("Exposure to electromagnetic fields has caused the ejection of [clonemind.name] prematurely." ,0)) go_out() ..() diff --git a/code/game/machinery/cloning.dm.rej b/code/game/machinery/cloning.dm.rej new file mode 100644 index 0000000000..bd2462c1de --- /dev/null +++ b/code/game/machinery/cloning.dm.rej @@ -0,0 +1,28 @@ +diff a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm (rejected hunks) +@@ -343,7 +343,7 @@ + if(mess) //Clean that mess and dump those gibs! + mess = FALSE + for(var/obj/A in contents) +- if(istype(A, /obj/item/organ) || istype(A, /obj/effect/decal/cleanable/blood/gibs)) ++ if(istype(A, /obj/effect/decal/cleanable/blood/gibs)) + A.forceMove(T) + audible_message("You hear a splat.") + icon_state = "pod_0" +@@ -378,10 +378,13 @@ + to_chat(occupant, "Agony blazes across your consciousness as your body is torn apart.
Is this what dying is like? Yes it is.
") + playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 50, 0) + occupant << sound('sound/hallucinations/veryfar_noise.ogg',0,1,50) +- var/obj/item/organ/brain/B = occupant.getorganslot("brain") +- B.Remove(occupant) +- B.forceMove(src) +- occupant.gib(TRUE, TRUE, TRUE) ++ addtimer(CALLBACK(src, .proc/end_malfunction, occupant), 40) ++ ++/obj/machinery/clonepod/proc/end_malfunction(mob/victim) ++ if(!istype(victim)) //Where the hell did they go? ++ return ++ victim.ghostize(FALSE) ++ victim.gib(TRUE, TRUE, TRUE) + + /obj/machinery/clonepod/relaymove(mob/user) + if(user.stat == CONSCIOUS) diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index ba757bd713..1d6d373db5 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -24,7 +24,8 @@ if(!no_bodyparts) if(no_organs)//so the organs don't get transfered inside the bodyparts we'll drop. for(var/X in internal_organs) - qdel(X) + if(no_brain || !istype(X, /obj/item/organ/brain)) + qdel(X) else //we're going to drop all bodyparts except chest, so the only organs that needs spilling are those inside it. for(var/X in internal_organs) var/obj/item/organ/O = X @@ -42,6 +43,9 @@ if(no_brain && istype(I, /obj/item/organ/brain)) qdel(I) continue + if(no_organs && !istype(I, /obj/item/organ/brain)) + qdel(I) + continue I.Remove(src) I.forceMove(get_turf(src)) I.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)