diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm
index 1142d2d6cb..59e8911659 100644
--- a/code/modules/mob/dead/dead.dm
+++ b/code/modules/mob/dead/dead.dm
@@ -2,6 +2,9 @@
INITIALIZE_IMMEDIATE(/mob/dead)
+/mob/dead
+ sight = SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
+
/mob/dead/Initialize()
if(initialized)
stack_trace("Warning: [src]([type]) initialized multiple times!")
@@ -11,8 +14,9 @@ INITIALIZE_IMMEDIATE(/mob/dead)
prepare_huds()
- if(CONFIG_GET(string/cross_server_address))
+ if(length(CONFIG_GET(keyed_string_list/cross_server)))
verbs += /mob/dead/proc/server_hop
+ set_focus(src)
return INITIALIZE_HINT_NORMAL
/mob/dead/dust() //ghosts can't be vaporised.
@@ -45,26 +49,46 @@ INITIALIZE_IMMEDIATE(/mob/dead)
else
stat(null, "Time To Start: SOON")
+ stat(null, "Players: [SSticker.totalPlayers]")
+ if(client.holder)
+ stat(null, "Players Ready: [SSticker.totalPlayersReady]")
+
/mob/dead/proc/server_hop()
set category = "OOC"
set name = "Server Hop!"
set desc= "Jump to the other server"
if(notransform)
return
- var/csa = CONFIG_GET(string/cross_server_address)
- if(csa)
- verbs -= /mob/dead/proc/server_hop
- to_chat(src, "Server Hop has been disabled.")
+ var/list/csa = CONFIG_GET(keyed_string_list/cross_server)
+ var/pick
+ switch(csa.len)
+ if(0)
+ verbs -= /mob/dead/proc/server_hop
+ to_chat(src, "Server Hop has been disabled.")
+ if(1)
+ pick = csa[0]
+ else
+ pick = input(src, "Pick a server to jump to", "Server Hop") as null|anything in csa
+
+ if(!pick)
return
- if (alert(src, "Jump to server running at [csa]?", "Server Hop", "Yes", "No") != "Yes")
- return 0
- if (client && csa)
- to_chat(src, "Sending you to [csa].")
- new /obj/screen/splash(client)
- notransform = TRUE
- sleep(29) //let the animation play
- notransform = FALSE
- winset(src, null, "command=.options") //other wise the user never knows if byond is downloading resources
- client << link(csa + "?server_hop=[key]")
- else
- to_chat(src, "There is no other server configured!")
+
+ var/addr = csa[pick]
+
+ if(alert(src, "Jump to server [pick] ([addr])?", "Server Hop", "Yes", "No") != "Yes")
+ return
+
+ var/client/C = client
+ to_chat(C, "Sending you to [pick].")
+ new /obj/screen/splash(C)
+
+ notransform = TRUE
+ sleep(29) //let the animation play
+ notransform = FALSE
+
+ if(!C)
+ return
+
+ winset(src, null, "command=.options") //other wise the user never knows if byond is downloading resources
+
+ C << link("[addr]?server_hop=[key]")
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 573183df96..0ee1e91d3a 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -73,26 +73,6 @@
popup.open(0)
return
-/mob/dead/new_player/Stat()
- ..()
-
- if(statpanel("Lobby"))
- stat("Game Mode:", (SSticker.hide_mode) ? "Secret" : "[GLOB.master_mode]")
- stat("Map:", SSmapping.config.map_name)
-
- if(SSticker.current_state == GAME_STATE_PREGAME)
- var/time_remaining = SSticker.GetTimeLeft()
- if(time_remaining > 0)
- stat("Time To Start:", "[round(time_remaining/10)]s")
- else if(time_remaining == -10)
- stat("Time To Start:", "DELAYED")
- else
- stat("Time To Start:", "SOON")
-
- stat("Players:", "[SSticker.totalPlayers]")
- if(client.holder)
- stat("Players Ready:", "[SSticker.totalPlayersReady]")
-
/mob/dead/new_player/Topic(href, href_list[])
if(src != usr)
@@ -317,15 +297,13 @@
return 0
if(job.required_playtime_remaining(client))
return 0
- if(CONFIG_GET(flag/enforce_human_authority) && !client.prefs.pref_species.qualifies_for_rank(rank, client.prefs.features))
- return 0
return 1
/mob/dead/new_player/proc/AttemptLateSpawn(rank)
if(!IsJobAvailable(rank))
alert(src, "[rank] is not available. Please try another.")
- return 0
+ return FALSE
if(SSticker.late_join_disabled)
alert(src, "An administrator has disabled late join spawning.")
diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm
index f362f09a65..c9710a5457 100644
--- a/code/modules/mob/dead/new_player/preferences_setup.dm
+++ b/code/modules/mob/dead/new_player/preferences_setup.dm
@@ -1,4 +1,5 @@
-//The mob should have a gender you want before running this proc. Will run fine without H
+
+ //The mob should have a gender you want before running this proc. Will run fine without H
/datum/preferences/proc/random_character(gender_override)
if(gender_override)
gender = gender_override
@@ -19,7 +20,7 @@
features = random_features()
age = rand(AGE_MIN,AGE_MAX)
-/datum/preferences/proc/update_preview_icon(nude = 0)
+/datum/preferences/proc/update_preview_icon(nude = FALSE)
// Silicons only need a very basic preview since there is no customization for them.
if(job_engsec_high)
switch(job_engsec_high)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 8bf80eccb8..cc05486895 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -13,7 +13,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
density = FALSE
canmove = 0
anchored = TRUE // don't get pushed around
- sight = SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
see_invisible = SEE_INVISIBLE_OBSERVER
see_in_dark = 100
invisibility = INVISIBILITY_OBSERVER
@@ -136,13 +135,13 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
/mob/dead/observer/narsie_act()
var/old_color = color
color = "#960000"
- animate(src, color = old_color, time = 10, flags_1 = ANIMATION_PARALLEL)
+ animate(src, color = old_color, time = 10, flags = ANIMATION_PARALLEL)
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 10)
/mob/dead/observer/ratvar_act()
var/old_color = color
color = "#FAE48C"
- animate(src, color = old_color, time = 10, flags_1 = ANIMATION_PARALLEL)
+ animate(src, color = old_color, time = 10, flags = ANIMATION_PARALLEL)
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 10)
/mob/dead/observer/Destroy()
@@ -767,8 +766,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
//Istype so we filter out points of interest that are not mobs
if(client && mob_eye && istype(mob_eye))
client.eye = mob_eye
- client.screen = list()
if(mob_eye.hud_used)
+ client.screen = list()
LAZYINITLIST(mob_eye.observers)
mob_eye.observers |= src
mob_eye.hud_used.show_hud(mob_eye.hud_used.hud_version, src)
diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm
index ad64c53fc7..c8cf1a5f1b 100644
--- a/code/modules/mob/dead/observer/say.dm
+++ b/code/modules/mob/dead/observer/say.dm
@@ -1,25 +1,28 @@
-/mob/dead/observer/say(message)
- message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
-
- if (!message)
- return
-
+/mob/dead/observer/say(message)
+ message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
+
+ if (!message)
+ return
+
log_talk(src,"Ghost/[src.key] : [message]", LOGSAY)
-
- . = src.say_dead(message)
-
-/mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
- var/atom/movable/to_follow = speaker
- if(radio_freq)
- var/atom/movable/virtualspeaker/V = speaker
-
- if(isAI(V.source))
- var/mob/living/silicon/ai/S = V.source
- to_follow = S.eyeobj
- else
- to_follow = V.source
- var/link = FOLLOW_LINK(src, to_follow)
- // Recompose the message, because it's scrambled by default
- message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode)
- to_chat(src, "[link] [message]")
-
+
+ if(check_emote(message))
+ return
+
+ . = say_dead(message)
+
+/mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
+ var/atom/movable/to_follow = speaker
+ if(radio_freq)
+ var/atom/movable/virtualspeaker/V = speaker
+
+ if(isAI(V.source))
+ var/mob/living/silicon/ai/S = V.source
+ to_follow = S.eyeobj
+ else
+ to_follow = V.source
+ var/link = FOLLOW_LINK(src, to_follow)
+ // Recompose the message, because it's scrambled by default
+ message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode)
+ to_chat(src, "[link] [message]")
+