diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index d6b70604af4..e93ff91a703 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -21,7 +21,8 @@ diseases_to_add += D if(LAZYLEN(diseases_to_add)) AddComponent(/datum/component/infective, diseases_to_add) - . = ..() + + return//. = ..()//cleanable stuff sometimes needs to be in objs /obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) if(mergeable_decal) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 5bcc446cfa9..d15138da1ea 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -24,7 +24,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an var/obj/structure/tray/connected = null var/locked = FALSE - var/opendir = SOUTH + dir = SOUTH var/message_cooldown var/breakout_time = 600 @@ -115,12 +115,15 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an /obj/structure/bodycontainer/proc/open() playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - var/turf/T = get_step(src, opendir) + playsound(src, 'sound/effects/roll.ogg', 5, 1) + var/turf/T = get_step(src, dir) + connected.dir=dir for(var/atom/movable/AM in src) AM.forceMove(T) update_icon() /obj/structure/bodycontainer/proc/close() + playsound(src, 'sound/effects/roll.ogg', 5, 1) playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) for(var/atom/movable/AM in connected.loc) if(!AM.anchored || AM == connected) @@ -137,7 +140,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an name = "morgue" desc = "Used to keep bodies in until someone fetches them." icon_state = "morgue1" - opendir = EAST + dir = EAST /obj/structure/bodycontainer/morgue/New() connected = new/obj/structure/tray/m_tray(src) @@ -156,11 +159,14 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an if(!length(compiled)) // No mobs? icon_state = "morgue3" return + for(var/mob/living/M in compiled) - if(M.client && !M.suiciding) + var/mob/living/mob_occupant = get_mob_or_brainmob(M) + if(!mob_occupant.suiciding && !(mob_occupant.has_trait(TRAIT_NOCLONE)) && !mob_occupant.hellbound) icon_state = "morgue4" // Cloneable break + /obj/item/paper/guides/jobs/medical/morgue name = "morgue memo" info = "Since this station's medbay never seems to fail to be staffed by the mindless monkeys meant for genetics experiments, I'm leaving a reminder here for anyone handling the pile of cadavers the quacks are sure to leave.

Red lights mean there's a plain ol' dead body inside.

Yellow lights mean there's non-body objects inside.
Probably stuff pried off a corpse someone grabbed, or if you're lucky it's stashed booze.

Green lights mean the morgue system detects the body may be able to be cloned.

I don't know how that works, but keep it away from the kitchen and go yell at the geneticists.

- CentCom medical inspector" @@ -173,7 +179,7 @@ GLOBAL_LIST_EMPTY(crematoriums) name = "crematorium" desc = "A human incinerator. Works well on barbeque nights." icon_state = "crema1" - opendir = SOUTH + dir = SOUTH var/id = 1 /obj/structure/bodycontainer/crematorium/attack_robot(mob/user) //Borgs can't use crematoriums without help @@ -235,12 +241,18 @@ GLOBAL_LIST_EMPTY(crematoriums) M.ghostize() qdel(M) - for(var/obj/O in conts) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up - if(O != connected) //Creamtorium does not burn hot enough to destroy the tray - qdel(O) + var/ash_check = FALSE + for(var/obj/O in conts) //conts defined above, ignores crematorium and tray + if(istype(O,/obj/effect/decal/cleanable/ash)) ash_check = TRUE//creates the illusion of ash piling up + qdel(O) + + var/obj/effect/decal/cleanable/ash/a + if(ash_check) a=new/obj/effect/decal/cleanable/ash/large(src)//cont. illusion of more ash + else a=new/obj/effect/decal/cleanable/ash(src) + a.layer = connected.layer//Makes the ash the same layer as the tray. - new /obj/effect/decal/cleanable/ash(src) sleep(30) + if(!QDELETED(src)) locked = FALSE update_icon() diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 4915ee8bec8..ff9363ef641 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -43,12 +43,13 @@ /mob/living/simple_animal/mouse/death(gibbed, toast) if(!ckey) ..(1) - var/obj/item/reagent_containers/food/snacks/deadmouse/M = new(loc) - M.icon_state = icon_dead - M.name = name - if(toast) - M.add_atom_colour("#3A3A3A", FIXED_COLOUR_PRIORITY) - M.desc = "It's toast." + if(!gibbed) + var/obj/item/reagent_containers/food/snacks/deadmouse/M = new(loc) + M.icon_state = icon_dead + M.name = name + if(toast) + M.add_atom_colour("#3A3A3A", FIXED_COLOUR_PRIORITY) + M.desc = "It's toast." qdel(src) else ..(gibbed) diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 28b186f2742..787f40a0b32 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ