diff --git a/code/datums/components/rot.dm b/code/datums/components/rot.dm index 535bd97301f..8271c25f0fd 100644 --- a/code/datums/components/rot.dm +++ b/code/datums/components/rot.dm @@ -10,6 +10,10 @@ START_PROCESSING(SSprocessing, src) +/datum/component/rot/Destroy(force, silent) + STOP_PROCESSING(SSprocessing, src) + . = ..() + /datum/component/rot/process(delta_time) var/atom/A = parent diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 4eb88bdc62d..989d2919efc 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -60,6 +60,8 @@ . = ..() reagents.add_reagent(/datum/reagent/liquidgibs, 5) RegisterSignal(src, COMSIG_MOVABLE_PIPE_EJECTING, .proc/on_pipe_eject) + if(mapload) //Don't rot at roundstart for the love of god + return if(already_rotting) start_rotting(rename=FALSE) else diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 8889dd9fb50..2b6a6b1778c 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1,9 +1,11 @@ -/mob/living/carbon/Initialize() +/mob/living/carbon/Initialize(mapload) . = ..() create_reagents(1000) assign_bodypart_ownership() update_body_parts() //to update the carbon's new bodyparts appearance GLOB.carbon_list += src + if(!mapload) //I don't want no gas leaks on my space ruin you hear? + RegisterSignal(src, COMSIG_LIVING_DEATH, .proc/attach_rot) /mob/living/carbon/Destroy() //This must be done first, so the mob ghosts correctly before DNA etc is nulled @@ -1325,3 +1327,6 @@ return return ..() + +/mob/living/carbon/proc/attach_rot(mapload) + AddComponent(/datum/component/rot/corpse) diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 904b27adb9a..3ac0640413e 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -14,6 +14,9 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) /mob/living/carbon/human/dummy/Life() return +/mob/living/carbon/human/dummy/attach_rot(mapload) + return + /mob/living/carbon/human/dummy/proc/wipe_state() delete_equipment() cut_overlays(TRUE) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 6c589f87aba..af2743192e1 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -28,7 +28,6 @@ if(stat == DEAD) stop_sound_channel(CHANNEL_HEARTBEAT) - LoadComponent(/datum/component/rot/corpse) else var/bprv = handle_bodyparts() if(bprv & BODYPART_LIFE_UPDATE_HEALTH)