diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 67b5509383e..cccd67909bb 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1,3 +1,7 @@ +#define GHOST_CAN_REENTER 1 +#define GHOST_IS_OBSERVER 2 + + /mob/dead/observer name = "ghost" desc = "It's a g-g-g-g-ghooooost!" //jinkies! @@ -19,11 +23,16 @@ universal_speak = 1 var/atom/movable/following = null var/medHUD = 0 -/mob/dead/observer/New(mob/body) +/mob/dead/observer/New(var/mob/body=null, var/flags=1) sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF see_invisible = SEE_INVISIBLE_OBSERVER see_in_dark = 100 verbs += /mob/dead/observer/proc/dead_tele + + can_reenter_corpse = flags & GHOST_CAN_REENTER + started_as_observer = flags & GHOST_IS_OBSERVER + + stat = DEAD var/turf/T @@ -183,10 +192,9 @@ Works together with spawning an observer, noted above. U.client.images += image(tempHud,silicon_target,"hudmalai") return 1 -/mob/proc/ghostize(var/can_reenter_corpse = 1) +/mob/proc/ghostize(var/flags = GHOST_CAN_REENTER) if(key) - var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc. - ghost.can_reenter_corpse = can_reenter_corpse + var/mob/dead/observer/ghost = new(src, flags) //Transfer safety to observer spawning proc. ghost.timeofdeath = src.timeofdeath //BS12 EDIT respawnable_list -= src if(ghost.can_reenter_corpse) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 29efa7398cd..2145afc1bb8 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -125,7 +125,7 @@ src << "\blue Now teleporting." observer.loc = O.loc observer.timeofdeath = world.time // Set the time of death so that the respawn timer works correctly. - client.prefs.update_preview_icon() + client.prefs.update_preview_icon(1) observer.icon = client.prefs.preview_icon observer.alpha = 127 diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 37af046a616..685e19189c6 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -128,7 +128,7 @@ datum/preferences b_eyes = blue - proc/update_preview_icon() //seriously. This is horrendous. + proc/update_preview_icon(var/for_observer=0) //seriously. This is horrendous. del(preview_icon_front) del(preview_icon_side) del(preview_icon) @@ -566,6 +566,16 @@ datum/preferences if(disabilities & NEARSIGHTED) preview_icon.Blend(new /icon('icons/mob/eyes.dmi', "glasses"), ICON_OVERLAY) + // Observers get tourist outfit. + if(for_observer) + clothes_s = new /icon(uniform_dmi, "tourist_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if(backbag == 2) + clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) + else if(backbag == 3 || backbag == 4) + clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY) + + preview_icon.Blend(eyes_s, ICON_OVERLAY) if(clothes_s) preview_icon.Blend(clothes_s, ICON_OVERLAY)