code/global.dm => code/_global_vars/ (#17244)

* 1

* Full conversion

* .

* .

---------

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
Selis
2025-04-21 11:55:25 +02:00
committed by GitHub
parent 5d21a53dfa
commit 28e969778c
448 changed files with 1339 additions and 1346 deletions
+3 -3
View File
@@ -47,13 +47,13 @@ GLOBAL_LIST_EMPTY(prevent_respawns)
//Cut the PDA manifest (ugh)
if(GLOB.PDA_Manifest.len)
GLOB.PDA_Manifest.Cut()
for(var/datum/data/record/R in data_core.medical)
for(var/datum/data/record/R in GLOB.data_core.medical)
if((R.fields["name"] == src.real_name))
qdel(R)
for(var/datum/data/record/T in data_core.security)
for(var/datum/data/record/T in GLOB.data_core.security)
if((T.fields["name"] == src.real_name))
qdel(T)
for(var/datum/data/record/G in data_core.general)
for(var/datum/data/record/G in GLOB.data_core.general)
if((G.fields["name"] == src.real_name))
qdel(G)
+6 -6
View File
@@ -132,8 +132,8 @@
add_overlay(H.overlays_standing)
default_pixel_x = M.default_pixel_x
default_pixel_y = M.default_pixel_y
if(!T && length(latejoin))
T = get_turf(pick(latejoin)) //Safety in case we cannot find the body's position
if(!T && length(GLOB.latejoin))
T = get_turf(pick(GLOB.latejoin)) //Safety in case we cannot find the body's position
if(T)
forceMove(T, just_spawned = TRUE)
else
@@ -714,10 +714,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return
var/timedifference = world.time - client.time_died_as_mouse
if(client.time_died_as_mouse && timedifference <= mouse_respawn_time * 600)
if(client.time_died_as_mouse && timedifference <= CONFIG_GET(number/mouse_respawn_time) MINUTES)
var/timedifference_text
timedifference_text = time2text(mouse_respawn_time * 600 - timedifference,"mm:ss")
to_chat(src, span_warning("You may only spawn again as a mouse more than [mouse_respawn_time] minutes after your death. You have [timedifference_text] left."))
timedifference_text = time2text(CONFIG_GET(number/mouse_respawn_time) MINUTES - timedifference,"mm:ss")
to_chat(src, span_warning("You may only spawn again as a mouse more than [CONFIG_GET(number/mouse_respawn_time)] minutes after your death. You have [timedifference_text] left."))
return
var/response = tgui_alert(src, "Are you -sure- you want to become a mouse?","Are you sure you want to squeek?",list("Squeek!","Nope!"))
@@ -728,7 +728,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/mob/living/simple_mob/animal/passive/mouse/host
var/obj/machinery/atmospherics/unary/vent_pump/vent_found
var/list/found_vents = list()
for(var/obj/machinery/atmospherics/unary/vent_pump/v in machines)
for(var/obj/machinery/atmospherics/unary/vent_pump/v in GLOB.machines)
if(!v.welded && v.z == T.z && v.network && v.network.normal_members.len > 20)
found_vents.Add(v)
if(found_vents.len)
+4 -4
View File
@@ -409,14 +409,14 @@
// Used for A-star pathfinding
// Returns the surrounding cardinal turfs with open links
// Returns the surrounding GLOB.cardinal turfs with open links
// Including through doors openable with the ID
/turf/proc/CardinalTurfsWithAccess(var/obj/item/card/id/ID)
var/L[] = new()
// for(var/turf/simulated/t in oview(src,1))
for(var/d in cardinal)
for(var/d in GLOB.cardinal)
var/turf/T = get_step(src, d)
if(istype(T) && !T.density)
if(!LinkBlockedWithAccess(src, T, ID))
@@ -424,11 +424,11 @@
return L
// Similar to above but not restricted to just cardinal directions.
// Similar to above but not restricted to just GLOB.cardinal directions.
/turf/proc/TurfsWithAccess(var/obj/item/card/id/ID)
var/L[] = new()
for(var/d in alldirs)
for(var/d in GLOB.alldirs)
var/turf/T = get_step(src, d)
if(istype(T) && !T.density)
if(!LinkBlockedWithAccess(src, T, ID))
+2 -2
View File
@@ -146,7 +146,7 @@
visible_message(span_warning("[src] is trying to inject [H]!"))
if(declare_treatment)
var/area/location = get_area(src)
global_announcer.autosay("[src] is treating <b>[H]</b> in <b>[location]</b>", "[src]", "Medical")
GLOB.global_announcer.autosay("[src] is treating <b>[H]</b> in <b>[location]</b>", "[src]", "Medical")
busy = 1
update_icons()
if(do_mob(src, H, 30))
@@ -404,7 +404,7 @@
if(MEDBOT_PANIC_ENDING)
messagevoice = list("Is this the end?" = 'sound/voice/medbot/is_this_the_end.ogg', "Nooo!" = 'sound/voice/medbot/nooo.ogg')
if(MEDBOT_PANIC_END)
global_announcer.autosay("PSYCH ALERT: Crewmember [tipper_name] recorded displaying antisocial tendencies torturing bots in [get_area(src)]. Please schedule psych evaluation.", "[src]", "Medical")
GLOB.global_announcer.autosay("PSYCH ALERT: Crewmember [tipper_name] recorded displaying antisocial tendencies torturing bots in [get_area(src)]. Please schedule psych evaluation.", "[src]", "Medical")
set_right() // strong independent medbot
// if(prob(tipped_status)) // Commented out pending introduction of jitter stuff from /tg/
+4 -4
View File
@@ -50,7 +50,7 @@
var/mob/living/L = pulledby
UnarmedAttack(L)
say("Do not interfere with active law enforcement routines!")
global_announcer.autosay("[src] was interfered with in <b>[get_area(src)]</b>, activating defense routines.", "[src]", "Security")
GLOB.global_announcer.autosay("[src] was interfered with in <b>[get_area(src)]</b>, activating defense routines.", "[src]", "Security")
//VOREStation Add End
/mob/living/bot/secbot/beepsky
name = "Officer Beepsky"
@@ -201,7 +201,7 @@
if(!target)
playsound(src, pick(threat_found_sounds), 50)
global_announcer.autosay("[src] was attacked by a hostile <b>[target_name(attacker)]</b> in <b>[get_area(src)]</b>.", "[src]", "Security")
GLOB.global_announcer.autosay("[src] was attacked by a hostile <b>[target_name(attacker)]</b> in <b>[get_area(src)]</b>.", "[src]", "Security")
target = attacker
attacked = TRUE
@@ -209,7 +209,7 @@
/mob/living/bot/secbot/proc/demand_surrender(mob/target, var/threat)
var/suspect_name = target_name(target)
if(declare_arrests)
global_announcer.autosay("[src] is [arrest_type ? "detaining" : "arresting"] a level [threat] suspect <b>[suspect_name]</b> in <b>[get_area(src)]</b>.", "[src]", "Security")
GLOB.global_announcer.autosay("[src] is [arrest_type ? "detaining" : "arresting"] a level [threat] suspect <b>[suspect_name]</b> in <b>[get_area(src)]</b>.", "[src]", "Security")
say("Down on the floor, [suspect_name]! You have [SECBOT_WAIT_TIME*2] seconds to comply.")
playsound(src, pick(preparing_arrest_sounds), 50)
// Register to be told when the target moves
@@ -266,7 +266,7 @@
var/action = arrest_type ? "detaining" : "arresting"
if(!ishuman(target))
action = "fighting"
global_announcer.autosay("[src] is [action] a level [threat] [action != "fighting" ? "suspect" : "threat"] <b>[target_name(target)]</b> in <b>[get_area(src)]</b>.", "[src]", "Security")
GLOB.global_announcer.autosay("[src] is [action] a level [threat] [action != "fighting" ? "suspect" : "threat"] <b>[target_name(target)]</b> in <b>[get_area(src)]</b>.", "[src]", "Security")
UnarmedAttack(target)
/mob/living/bot/secbot/handlePanic() // Speed modification based on alert level.
@@ -71,6 +71,6 @@ var/list/_nymph_default_emotes = list(
if(D.stat != CONSCIOUS)
return
if(prob(33) && D.canmove && isturf(D.loc) && !D.pulledby) //won't move if being pulled
step(D, pick(cardinal))
step(D, pick(GLOB.cardinal))
if(prob(1))
D.emote(pick("scratch","jump","chirp","roll"))
@@ -13,7 +13,7 @@
for(var/obj/item/organ/I in internal_organs)
I.removed()
if(isturf(I?.loc)) // Some organs qdel themselves or other things when removed
I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30)
I.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),30)
for(var/obj/item/organ/external/E in src.organs)
E.droplimb(0,DROPLIMB_EDGE,1)
@@ -22,7 +22,7 @@
for(var/obj/item/I in src)
drop_from_inventory(I)
I.throw_at(get_edge_target_turf(src,pick(alldirs)), rand(1,3), round(30/I.w_class))
I.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)), rand(1,3), round(30/I.w_class))
..(species.gibbed_anim) // uses the default mob.dmi file for these, so we only need to specify the first argument
gibs(loc, dna, null, species.get_flesh_colour(src), species.get_blood_colour(src))
@@ -7,7 +7,7 @@
if(!deadnif.gib_nodrop)
deadnif.unimplant(src)
deadnif.forceMove(drop_location())
deadnif.throw_at(get_edge_target_turf(src,pick(alldirs)), rand(1,3), round(30/deadnif.w_class))
deadnif.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)), rand(1,3), round(30/deadnif.w_class))
deadnif.wear(10) //Presumably it's gone through some shit if they got gibbed?
. = ..()
@@ -407,7 +407,7 @@
var/obj/item/pda/P = wear_id
perpname = P.owner
for (var/datum/data/record/R in data_core.security)
for (var/datum/data/record/R in GLOB.data_core.security)
if(R.fields["name"] == perpname)
criminal = R.fields["criminal"]
@@ -426,7 +426,7 @@
var/obj/item/pda/P = wear_id
perpname = P.owner
for (var/datum/data/record/R in data_core.medical)
for (var/datum/data/record/R in GLOB.data_core.medical)
if (R.fields["name"] == perpname)
medical = R.fields["p_stat"]
+28 -28
View File
@@ -415,9 +415,9 @@
perpname = name
if(perpname)
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
for (var/datum/data/record/R in GLOB.data_core.security)
if (R.fields["id"] == E.fields["id"])
var/setcriminal = tgui_input_list(usr, "Specify a new criminal status for this person.", "Security HUD", list("None", "*Arrest*", "Incarcerated", "Parolled", "Released", "Cancel"))
@@ -449,9 +449,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
for (var/datum/data/record/R in GLOB.data_core.security)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"security"))
var/list/security_hud_text = list()
@@ -479,9 +479,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
for (var/datum/data/record/R in GLOB.data_core.security)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"security"))
read = 1
@@ -504,9 +504,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
for (var/datum/data/record/R in GLOB.data_core.security)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"security"))
var/t1 = sanitize(tgui_input_text(usr, "Add Comment:", "Sec. records", null, null, multiline = TRUE, prevent_enter = TRUE))
@@ -517,10 +517,10 @@
counter++
if(ishuman(usr))
var/mob/living/carbon/human/U = usr
R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]<BR>[t1]")
R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]<BR>[t1]")
if(istype(usr,/mob/living/silicon/robot))
var/mob/living/silicon/robot/U = usr
R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]<BR>[t1]")
R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]<BR>[t1]")
if (href_list["medical"])
if(hasHUD(usr,"medical"))
@@ -533,9 +533,9 @@
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.general)
for (var/datum/data/record/R in GLOB.data_core.general)
if (R.fields["id"] == E.fields["id"])
var/setmedical = tgui_input_list(usr, "Specify a new medical status for this person.", "Medical HUD", list("*SSD*", "*Deceased*", "Physically Unfit", "Active", "Disabled", "Cancel"))
@@ -568,9 +568,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.medical)
for (var/datum/data/record/R in GLOB.data_core.medical)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"medical"))
var/list/medical_hud_text = list()
@@ -599,9 +599,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.medical)
for (var/datum/data/record/R in GLOB.data_core.medical)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"medical"))
read = 1
@@ -624,9 +624,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.medical)
for (var/datum/data/record/R in GLOB.data_core.medical)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"medical"))
var/t1 = sanitize(tgui_input_text(usr, "Add Comment:", "Med. records", null, null, multiline = TRUE, prevent_enter = TRUE))
@@ -637,10 +637,10 @@
counter++
if(ishuman(usr))
var/mob/living/carbon/human/U = usr
R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]<BR>[t1]")
R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]<BR>[t1]")
if(istype(usr,/mob/living/silicon/robot))
var/mob/living/silicon/robot/U = usr
R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]<BR>[t1]")
R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]<BR>[t1]")
if (href_list["emprecord"])
if(hasHUD(usr,"best"))
@@ -652,9 +652,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.general)
for (var/datum/data/record/R in GLOB.data_core.general)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"best"))
var/list/emp_hud_text = list()
@@ -685,9 +685,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.general)
for (var/datum/data/record/R in GLOB.data_core.general)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"best"))
read = 1
@@ -710,9 +710,9 @@
perpname = I.registered_name
else
perpname = name
for (var/datum/data/record/E in data_core.general)
for (var/datum/data/record/E in GLOB.data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.general)
for (var/datum/data/record/R in GLOB.data_core.general)
if (R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"best"))
var/t1 = sanitize(tgui_input_text(usr, "Add Comment:", "Emp. records", null, null, multiline = TRUE, prevent_enter = TRUE))
@@ -723,10 +723,10 @@
counter++
if(ishuman(usr))
var/mob/living/carbon/human/U = usr
R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]<BR>[t1]")
R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]<BR>[t1]")
if(istype(usr,/mob/living/silicon/robot))
var/mob/living/silicon/robot/U = usr
R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]<BR>[t1]")
R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [GLOB.game_year]<BR>[t1]")
if (href_list["lookitem"])
var/obj/item/I = locate(href_list["lookitem"])
@@ -352,7 +352,7 @@
attack_message = "[H] attempted to strike [src], but missed!"
else
attack_message = "[H] attempted to strike [src], but [TT.he] rolled out of the way!"
src.set_dir(pick(cardinal))
src.set_dir(pick(GLOB.cardinal))
miss_type = 1
if(!miss_type && block)
@@ -465,7 +465,7 @@ This function restores all organs.
*/
/mob/living/carbon/human/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/sharp = FALSE, var/edge = FALSE, var/obj/used_weapon = null, var/projectile = FALSE)
if(Debug2)
if(GLOB.Debug2)
to_world_log("## DEBUG: human/apply_damage() was called on [src], with [damage] damage, an armor value of [blocked], and a soak value of [soaked].")
var/obj/item/organ/external/organ = null
if(isorgan(def_zone))
@@ -548,7 +548,7 @@ This function restores all organs.
if(soaked)
damage -= soaked
if(Debug2)
if(GLOB.Debug2)
to_world_log("## DEBUG: [src] was hit for [damage].")
switch(damagetype)
@@ -312,7 +312,7 @@ emp_act
return 0
if(effective_force > 10 || effective_force >= 5 && prob(33))
forcesay(hit_appends) //forcesay checks stat already
forcesay(GLOB.hit_appends) //forcesay checks stat already
if(prob(25 + (effective_force * 2)))
if(!((I.damtype == BRUTE) || (I.damtype == HALLOSS)))
@@ -146,20 +146,20 @@
return FBP_NONE
/mob/living/carbon/human/make_hud_overlays()
hud_list[HEALTH_HUD] = gen_hud_image(ingame_hud_med, src, "100", plane = PLANE_CH_HEALTH)
hud_list[HEALTH_HUD] = gen_hud_image(GLOB.ingame_hud_med, src, "100", plane = PLANE_CH_HEALTH)
if(isSynthetic())
hud_list[STATUS_HUD] = gen_hud_image(ingame_hud, src, "hudrobo", plane = PLANE_CH_STATUS)
hud_list[LIFE_HUD] = gen_hud_image(ingame_hud, src, "hudrobo", plane = PLANE_CH_LIFE)
hud_list[STATUS_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudrobo", plane = PLANE_CH_STATUS)
hud_list[LIFE_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudrobo", plane = PLANE_CH_LIFE)
else
hud_list[STATUS_HUD] = gen_hud_image(ingame_hud, src, "hudhealthy", plane = PLANE_CH_STATUS)
hud_list[LIFE_HUD] = gen_hud_image(ingame_hud, src, "hudhealthy", plane = PLANE_CH_LIFE)
hud_list[STATUS_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudhealthy", plane = PLANE_CH_STATUS)
hud_list[LIFE_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudhealthy", plane = PLANE_CH_LIFE)
hud_list[ID_HUD] = gen_hud_image(using_map.id_hud_icons, src, "hudunknown", plane = PLANE_CH_ID)
hud_list[WANTED_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_WANTED)
hud_list[IMPLOYAL_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_IMPLOYAL)
hud_list[IMPCHEM_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_IMPCHEM)
hud_list[IMPTRACK_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_IMPTRACK)
hud_list[SPECIALROLE_HUD] = gen_hud_image(ingame_hud, src, "hudblank", plane = PLANE_CH_SPECIAL)
hud_list[STATUS_HUD_OOC] = gen_hud_image(ingame_hud, src, "hudhealthy", plane = PLANE_CH_STATUS_OOC)
hud_list[WANTED_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudblank", plane = PLANE_CH_WANTED)
hud_list[IMPLOYAL_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudblank", plane = PLANE_CH_IMPLOYAL)
hud_list[IMPCHEM_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudblank", plane = PLANE_CH_IMPCHEM)
hud_list[IMPTRACK_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudblank", plane = PLANE_CH_IMPTRACK)
hud_list[SPECIALROLE_HUD] = gen_hud_image(GLOB.ingame_hud, src, "hudblank", plane = PLANE_CH_SPECIAL)
hud_list[STATUS_HUD_OOC] = gen_hud_image(GLOB.ingame_hud, src, "hudhealthy", plane = PLANE_CH_STATUS_OOC)
hud_list[HEALTH_VR_HUD] = gen_hud_image(ingame_hud_med_vr, src, "100", plane = PLANE_CH_HEALTH_VR)
hud_list[STATUS_R_HUD] = gen_hud_image(ingame_hud_vr, src, "hudblank", plane = PLANE_CH_STATUS_R)
hud_list[BACKUP_HUD] = gen_hud_image(ingame_hud_vr, src, "hudblank", plane = PLANE_CH_BACKUP)
@@ -232,7 +232,7 @@
if(direct & WH.wind_dir)
. = max(. - WH.wind_speed, -1) // Wind speedup is capped to prevent supersonic speeds from a storm.
// Against it.
else if(direct & reverse_dir[WH.wind_dir])
else if(direct & GLOB.reverse_dir[WH.wind_dir])
. += WH.wind_speed
*/
+6 -6
View File
@@ -1860,9 +1860,9 @@
if(T.get_lumcount() <= LIGHTING_SOFT_THRESHOLD)
if(text2num(time2text(world.timeofday, "MM")) == 4)
if(text2num(time2text(world.timeofday, "DD")) == 1)
playsound_local(src,pick(scawwySownds),50, 0)
playsound_local(src,pick(GLOB.scawwySownds),50, 0)
return
playsound_local(src,pick(scarySounds),50, 1, -1)
playsound_local(src,pick(GLOB.scarySounds),50, 1, -1)
/mob/living/carbon/human/proc/handle_changeling()
if(mind && mind.changeling)
@@ -2168,9 +2168,9 @@
if(I)
perpname = I.registered_name
for(var/datum/data/record/E in data_core.general)
for(var/datum/data/record/E in GLOB.data_core.general)
if(E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
for (var/datum/data/record/R in GLOB.data_core.security)
if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*"))
holder.icon_state = "hudwanted"
break
@@ -2217,8 +2217,8 @@
var/image/holder = grab_hud(SPECIALROLE_HUD)
holder.icon_state = "hudblank"
if(mind && mind.special_role)
if(hud_icon_reference[mind.special_role])
holder.icon_state = hud_icon_reference[mind.special_role]
if(GLOB.hud_icon_reference[mind.special_role])
holder.icon_state = GLOB.hud_icon_reference[mind.special_role]
else
holder.icon_state = "hudsyndicate"
apply_hud(SPECIALROLE_HUD, holder)
@@ -157,7 +157,7 @@
//Affect nearby lights
var/destroy_lights = 0
for(var/obj/machinery/light/L in machines)
for(var/obj/machinery/light/L in GLOB.machines)
if(L.z != z || get_dist(src,L) > 10)
continue
@@ -60,7 +60,7 @@
// Traitgenes Monkeys perform emotes based on their traits
if(H.canmove && isturf(H.loc) && !H.pulledby) //won't move if being pulled
if(prob(33))
step(H, pick(cardinal))
step(H, pick(GLOB.cardinal))
if(prob(5))
// Handle generic gene expression emotes
if(!H.species || !H.species.traits || H.species.traits.len == 0)
@@ -74,7 +74,7 @@ var/global/list/sparring_attack_cache = list()
else
target.visible_message(span_danger("[target] slams into [T]!"))
if(prob(50))
target.set_dir(reverse_dir[target.dir])
target.set_dir(GLOB.reverse_dir[target.dir])
target.apply_effect(attack_damage * 0.4, WEAKEN, armour)
if(BP_GROIN)
target.visible_message(span_warning("[target] looks like [TT.he] [TT.is] in pain!"), span_warning("[(target.gender=="female") ? "Oh god that hurt!" : "Oh no, not your[pick("testicles", "crown jewels", "clockweights", "family jewels", "marbles", "bean bags", "teabags", "sweetmeats", "goolies")]!"]")) // I see no easy way to fix this for non-organic or neuter characters.
+2 -2
View File
@@ -9,7 +9,7 @@
standard 0 if fail
*/
/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/soaked = 0, var/sharp = FALSE, var/edge = FALSE, var/obj/used_weapon = null, var/projectile = 0)
if(Debug2)
if(GLOB.Debug2)
to_world_log("## DEBUG: apply_damage() was called on [src], with [damage] damage, and an armor value of [blocked].")
if(!damage || (blocked >= 100))
return 0
@@ -140,7 +140,7 @@
/mob/living/proc/apply_effect(var/effect = 0,var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
if(Debug2)
if(GLOB.Debug2)
to_world_log("## DEBUG: apply_effect() was called. The type of effect is [effecttype]. Blocked by [blocked].")
if(!effect || (blocked >= 100))
return 0
+1 -1
View File
@@ -16,7 +16,7 @@
dsma.blend_mode = BLEND_ADD
dsoverlay.appearance = dsma
selected_image = image(icon = buildmode_hud, loc = src, icon_state = "ai_sel")
selected_image = image(icon = GLOB.buildmode_hud, loc = src, icon_state = "ai_sel")
/mob/living/Destroy()
SSradiation.listeners -= src
+3 -3
View File
@@ -12,7 +12,7 @@
A number between 0 and 100, with higher numbers resulting in less damage taken.
*/
/mob/living/proc/run_armor_check(var/def_zone = null, var/attack_flag = "melee", var/armour_pen = 0, var/absorb_text = null, var/soften_text = null)
if(Debug2)
if(GLOB.Debug2)
to_world_log("## DEBUG: getarmor() was called.")
if(armour_pen >= 100)
@@ -22,7 +22,7 @@
if(armor)
var/armor_variance_range = round(armor * 0.25) //Armor's effectiveness has a +25%/-25% variance.
var/armor_variance = rand(-armor_variance_range, armor_variance_range) //Get a random number between -25% and +25% of the armor's base value
if(Debug2)
if(GLOB.Debug2)
to_world_log("## DEBUG: The range of armor variance is [armor_variance_range]. The variance picked by RNG is [armor_variance].")
armor = min(armor + armor_variance, 100) //Now we calcuate damage using the new armor percentage.
@@ -38,7 +38,7 @@
to_chat(src, span_danger("[soften_text]"))
else
to_chat(src, span_danger("Your armor softens the blow!"))
if(Debug2)
if(GLOB.Debug2)
to_world_log("## DEBUG: Armor when [src] was attacked was [armor].")
return armor
+1 -1
View File
@@ -29,7 +29,7 @@
for(var/obj/item/organ/I in internal_organs)
I.removed()
if(isturf(I?.loc)) // Some organs qdel themselves or other things when removed
I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),30)
I.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),30)
for(var/obj/item/organ/external/E in src.organs)
if(!ispath(E))
+1 -1
View File
@@ -12,7 +12,7 @@
remove_ai_verbs(src)
for(var/obj/machinery/ai_status_display/O in machines)
for(var/obj/machinery/ai_status_display/O in GLOB.machines)
spawn( 0 )
O.mode = 2
if (istype(loc, /obj/item/aicard))
@@ -25,7 +25,7 @@ GLOBAL_LIST_EMPTY(empty_playable_ai_cores)
// We warned you.
GLOB.empty_playable_ai_cores += new /obj/structure/AIcore/deactivated(loc)
global_announcer.autosay("[src] has been moved to intelligence storage.", "Artificial Intelligence Oversight")
GLOB.global_announcer.autosay("[src] has been moved to intelligence storage.", "Artificial Intelligence Oversight")
//Handle job slot/tater cleanup.
set_respawn_timer()
+1 -1
View File
@@ -3,7 +3,7 @@
for(var/obj/effect/rune/rune in rune_list)
client.images += rune.blood_image
if(stat != DEAD)
for(var/obj/machinery/ai_status_display/O in machines) //change status
for(var/obj/machinery/ai_status_display/O in GLOB.machines) //change status
O.mode = 1
O.emotion = "Neutral"
if(multicam_on)
+1 -1
View File
@@ -1,6 +1,6 @@
/mob/living/silicon/ai/Logout()
..()
for(var/obj/machinery/ai_status_display/O in machines) //change status
for(var/obj/machinery/ai_status_display/O in GLOB.machines) //change status
O.mode = 0
if(!isturf(loc))
if (client)
@@ -32,7 +32,7 @@
base.plane = PLATING_PLANE
base.appearance_flags = PIXEL_SCALE
for(var/direction in cardinal)
for(var/direction in GLOB.cardinal)
var/mutable_appearance/dir = new /mutable_appearance(base)
dir.dir = direction
dir.icon_state = "background_highlight_[direction]"
@@ -3,6 +3,6 @@
icon_state = "ai-crash"
spawn(10)
explosion(loc, 3, 6, 12, 15)
for(var/obj/machinery/ai_status_display/O in machines) //change status
for(var/obj/machinery/ai_status_display/O in GLOB.machines) //change status
O.mode = 2
return ..(gibbed)
@@ -298,7 +298,7 @@
pai_nom(A)
// Allow card inhabited machines to be interacted with
// This has to override ClickOn because of storage depth nonsense with how pAIs are in cards in machines
// This has to override ClickOn because of storage depth nonsense with how pAIs are in cards in GLOB.machines
/mob/living/silicon/pai/ClickOn(var/atom/A, var/params)
if(istype(A, /obj/machinery))
var/obj/machinery/M = A
@@ -111,8 +111,8 @@
/datum/pai_software/crew_manifest/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
var/list/data = ..()
if(data_core)
data_core.get_manifest_list()
if(GLOB.data_core)
GLOB.data_core.get_manifest_list()
data["manifest"] = GLOB.PDA_Manifest
return data
@@ -142,7 +142,7 @@
var/list/data = ..()
var/list/records = list()
for(var/datum/data/record/general in sortRecord(data_core.general))
for(var/datum/data/record/general in sortRecord(GLOB.data_core.general))
var/list/record = list()
record["name"] = general.fields["name"]
record["ref"] = "\ref[general]"
@@ -169,11 +169,11 @@
if(record)
var/datum/data/record/R = record
var/datum/data/record/M = null
if (!( data_core.general.Find(R) ))
if (!( GLOB.data_core.general.Find(R) ))
P.medical_cannotfind = 1
else
P.medical_cannotfind = 0
for(var/datum/data/record/E in data_core.medical)
for(var/datum/data/record/E in GLOB.data_core.medical)
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
M = E
P.medicalActive1 = R
@@ -198,7 +198,7 @@
var/list/data = ..()
var/list/records = list()
for(var/datum/data/record/general in sortRecord(data_core.general))
for(var/datum/data/record/general in sortRecord(GLOB.data_core.general))
var/list/record = list()
record["name"] = general.fields["name"]
record["ref"] = "\ref[general]"
@@ -225,13 +225,13 @@
if(record)
var/datum/data/record/R = record
var/datum/data/record/S = null
if (!( data_core.general.Find(R) ))
if (!( GLOB.data_core.general.Find(R) ))
P.securityActive1 = null
P.securityActive2 = null
P.security_cannotfind = 1
else
P.security_cannotfind = 0
for(var/datum/data/record/E in data_core.security)
for(var/datum/data/record/E in GLOB.data_core.security)
if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
S = E
P.securityActive1 = R
@@ -432,7 +432,7 @@
if(href_list["sync"])
synced = TRUE
var/success = 0
for(var/obj/machinery/r_n_d/server/S in machines)
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
for(var/datum/tech/T in files.known_tech) //Uploading
S.files.AddTech2Known(T)
for(var/datum/tech/T in S.files.known_tech) //Downloading
@@ -280,7 +280,7 @@ var/list/mob_hat_cache = list()
log_game("[key_name(user)] emagged drone [key_name(src)]. Laws overridden.")
var/time = time2text(world.realtime,"hh:mm:ss")
lawchanges.Add("[time] " + span_bold(":") + " [user.name]([user.key]) emagged [name]([key])")
GLOB.lawchanges.Add("[time] " + span_bold(":") + " [user.name]([user.key]) emagged [name]([key])")
emagged = 1
lawupdate = 0
@@ -141,7 +141,7 @@
return
var/list/all_fabricators = list()
for(var/obj/machinery/drone_fabricator/DF in machines)
for(var/obj/machinery/drone_fabricator/DF in GLOB.machines)
if(DF.stat & NOPOWER || !DF.produce_drones)
continue
if(DF.drone_progress >= 100)
@@ -1302,7 +1302,7 @@
clear_inherent_laws()
laws = new /datum/ai_laws/syndicate_override
var/time = time2text(world.realtime,"hh:mm:ss")
lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) emagged [name]([key])")
GLOB.lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) emagged [name]([key])")
var/datum/gender/TU = GLOB.gender_datums[user.get_visible_gender()]
set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.")
. = 1
@@ -61,7 +61,7 @@
to_chat(user, span_filter_notice("The [src] is empty. Put something inside it first."))
if(response == "Sync")
var/success = 0
for(var/obj/machinery/r_n_d/server/S in machines)
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
for(var/datum/tech/T in files.known_tech) //Uploading
S.files.AddTech2Known(T)
for(var/datum/tech/T in S.files.known_tech) //Downloading
@@ -39,13 +39,13 @@
if(LAZYLEN(R.restrict_modules_to) > 0)
modules.Add(R.restrict_modules_to)
else if(R.shell)
modules.Add(shell_module_types)
modules.Add(GLOB.shell_module_types)
else
modules.Add(robot_module_types)
modules.Add(GLOB.robot_module_types)
if(R.crisis || GLOB.security_level >= SEC_LEVEL_RED || R.crisis_override)
to_chat(R, span_red("Crisis mode active. Combat module available."))
modules |= emergency_module_types
for(var/module_name in whitelisted_module_types)
modules |= GLOB.emergency_module_types
for(var/module_name in GLOB.whitelisted_module_types)
if(is_borg_whitelisted(R, module_name))
modules |= module_name
data["possible_modules"] = modules
@@ -347,8 +347,8 @@
return span_italics("[tt_desc]")
/mob/living/simple_mob/make_hud_overlays()
hud_list[STATUS_HUD] = gen_hud_image(buildmode_hud, src, "ai_0", plane = PLANE_BUILDMODE)
hud_list[LIFE_HUD] = gen_hud_image(buildmode_hud, src, "ais_1", plane = PLANE_BUILDMODE)
hud_list[STATUS_HUD] = gen_hud_image(GLOB.buildmode_hud, src, "ai_0", plane = PLANE_BUILDMODE)
hud_list[LIFE_HUD] = gen_hud_image(GLOB.buildmode_hud, src, "ais_1", plane = PLANE_BUILDMODE)
add_overlay(hud_list)
//Makes it so that simplemobs can understand galcomm without being able to speak it.
@@ -1077,7 +1077,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
tepholder.lay_down()
return
var/moving_to = 0 // Apparently this is required or it always picks 4, according to the previous developer for simplemob AI.
moving_to = pick(cardinal)
moving_to = pick(GLOB.cardinal)
holder.set_dir(moving_to)
T = get_step(holder,moving_to)
// Finally do move if we actually found somewhere we'd like to go
@@ -172,7 +172,7 @@
else
to_world("Going to move away randomly")
var/turf/move_to = get_turf(L)
move_to = get_step(move_to, pick(cardinal))
move_to = get_step(move_to, pick(GLOB.cardinal))
for(var/i = 1 to vision_range) // Move them this many steps away from where they were before.
move_to = get_step_away(move_to, L, 7)
if(move_to)
@@ -215,7 +215,7 @@
I.attack_hand(holder)
lose_target()
if(isliving(A) && holder.Adjacent(A)) // Not the dumbest tool in the shed. If we're fighting, we're gonna dance around them.
holder.IMove(get_step(holder, pick(alldirs)))
holder.IMove(get_step(holder, pick(GLOB.alldirs)))
holder.face_atom(A)
request_help() // And we're going to call friends, too.
@@ -52,7 +52,7 @@
/datum/ai_holder/simple_mob/siffet/post_melee_attack(atom/A) //Evasive
if(holder.Adjacent(A))
holder.IMove(get_step(holder, pick(alldirs)))
holder.IMove(get_step(holder, pick(GLOB.alldirs)))
holder.face_atom(A)
/mob/living/simple_mob/animal/sif/siffet/IIsAlly(mob/living/L)
@@ -309,7 +309,7 @@
on_engagement(target)
if(firing_lanes && !test_projectile_safety(target))
// Nudge them a bit, maybe they can shoot next time.
var/turf/T = get_step(holder, pick(cardinal))
var/turf/T = get_step(holder, pick(GLOB.cardinal))
if(T)
holder.IMove(T) // IMove() will respect movement cooldown.
holder.face_atom(target)
@@ -370,7 +370,7 @@
on_engagement(target)
if(firing_lanes && !test_projectile_safety(target))
// Nudge them a bit, maybe they can shoot next time.
var/turf/T = get_step(holder, pick(cardinal))
var/turf/T = get_step(holder, pick(GLOB.cardinal))
if(T)
holder.IMove(T) // IMove() will respect movement cooldown.
holder.face_atom(target)
@@ -68,7 +68,7 @@
//Affect nearby lights
var/destroy_lights = 0
for(var/obj/machinery/light/L in machines)
for(var/obj/machinery/light/L in GLOB.machines)
if(L.z != z || get_dist(src,L) > 10)
continue
@@ -254,7 +254,7 @@
on_engagement(target)
if(firing_lanes && !test_projectile_safety(target))
// Nudge them a bit, maybe they can shoot next time.
var/turf/T = get_step(holder, pick(cardinal))
var/turf/T = get_step(holder, pick(GLOB.cardinal))
if(T)
holder.IMove(T) // IMove() will respect movement cooldown.
holder.face_atom(target)
@@ -200,7 +200,7 @@
return
var/moving_to = 0 // Apparently this is required or it always picks 4, according to the previous developer for simplemob AI.
moving_to = pick(cardinal)
moving_to = pick(GLOB.cardinal)
holder.set_dir(moving_to)
holder.IMove(get_step(holder,moving_to))
wander_delay = base_wander_delay
@@ -210,7 +210,7 @@
on_engagement(target)
if(firing_lanes && !test_projectile_safety(target))
// Nudge them a bit, maybe they can shoot next time.
var/turf/T = get_step(holder, pick(cardinal))
var/turf/T = get_step(holder, pick(GLOB.cardinal))
if(T)
holder.IMove(T) // IMove() will respect movement cooldown.
holder.face_atom(target)
@@ -46,7 +46,7 @@
//Affect nearby lights
for(var/obj/machinery/light/L in machines)
for(var/obj/machinery/light/L in GLOB.machines)
if(L.z != z || get_dist(src,L) > 10)
continue
@@ -253,7 +253,7 @@
if(ishuman(prey))
vore_selected.digest_mode = DM_HOLD
if(check_threat(prey) >= 4)
global_announcer.autosay("[src] is detaining suspect <b>[target_name(prey)]</b> in <b>[get_area(src)]</b>.", "SmartCollar oversight", "Security")
GLOB.global_announcer.autosay("[src] is detaining suspect <b>[target_name(prey)]</b> in <b>[get_area(src)]</b>.", "SmartCollar oversight", "Security")
if(istype(prey,/mob/living/simple_mob/animal/passive/mouse))
vore_selected.digest_mode = DM_DIGEST
. = ..()
@@ -83,7 +83,7 @@
if(eye_state == PURPLE_EYES)
destroy_lights = 25
for(var/obj/machinery/light/L in machines)
for(var/obj/machinery/light/L in GLOB.machines)
if(L.z != z || get_dist(src,L) > 10)
continue
@@ -408,7 +408,7 @@
//Random walk
if(!moving_to)
moving_to = pick(cardinal)
moving_to = pick(GLOB.cardinal)
dir = moving_to
var/turf/T = get_step(src,moving_to)
@@ -264,7 +264,7 @@
on_engagement(target)
if(firing_lanes && !test_projectile_safety(target))
// Nudge them a bit, maybe they can shoot next time.
var/turf/T = get_step(holder, pick(cardinal))
var/turf/T = get_step(holder, pick(GLOB.cardinal))
if(T)
holder.IMove(T) // IMove() will respect movement cooldown.
holder.face_atom(target)
+3 -3
View File
@@ -411,13 +411,13 @@
//Cut the PDA manifest (ugh)
if(GLOB.PDA_Manifest.len)
GLOB.PDA_Manifest.Cut()
for(var/datum/data/record/R in data_core.medical)
for(var/datum/data/record/R in GLOB.data_core.medical)
if((R.fields["name"] == real_name))
qdel(R)
for(var/datum/data/record/T in data_core.security)
for(var/datum/data/record/T in GLOB.data_core.security)
if((T.fields["name"] == real_name))
qdel(T)
for(var/datum/data/record/G in data_core.general)
for(var/datum/data/record/G in GLOB.data_core.general)
if((G.fields["name"] == real_name))
qdel(G)
+1 -1
View File
@@ -326,7 +326,7 @@
var/rand_set = list("#","@","*","&","%","$","/", "<", ">", ";","*","*","*","*","*","*","*")
if(p >= 80)
rand_set += alphabet_uppercase
rand_set += GLOB.alphabet_upper
for(var/j = 1, j <= rand(0, 2), j++)
letter += pick(rand_set)
+1 -1
View File
@@ -340,7 +340,7 @@
// Update all the grabs!
for (var/obj/item/grab/G in my_mob)
if (G.state == GRAB_NECK)
mob.set_dir(reverse_dir[direct])
mob.set_dir(GLOB.reverse_dir[direct])
G.adjust_position()
for (var/obj/item/grab/G in my_mob.grabbed_by)
G.adjust_position()
+3 -3
View File
@@ -28,9 +28,9 @@ var/obj/effect/lobby_image = new /obj/effect/lobby_image
/mob/new_player/Login()
update_Login_details() //handles setting lastKnownIP and computer_id for use by the ban systems as well as checking for multikeying
if(join_motd)
join_motd = GLOB.is_valid_url.Replace(join_motd,span_linkify("$1"))
to_chat(src, examine_block("<div class=\"motd\">[join_motd]</div>"))
if(GLOB.join_motd)
GLOB.join_motd = GLOB.is_valid_url.Replace(GLOB.join_motd, span_linkify("$1"))
to_chat(src, examine_block("<div class=\"motd\">[GLOB.join_motd]</div>"))
if(has_respawned)
to_chat(src, CONFIG_GET(string/respawn_message))
+4 -4
View File
@@ -129,7 +129,7 @@
. = ..()
. += ""
. += "Game Mode: [SSticker.hide_mode ? "Secret" : "[config.mode_names[master_mode]]"]"
. += "Game Mode: [SSticker.hide_mode ? "Secret" : "[config.mode_names[GLOB.master_mode]]"]"
// if(SSvote.mode)
// . += "Vote: [capitalize(SSvote.mode)] Time Left: [SSvote.time_remaining] s"
@@ -138,7 +138,7 @@
. += "Time To Start: Server Initializing"
else if(SSticker.current_state == GAME_STATE_PREGAME)
. += "Time To Start: [round(SSticker.pregame_timeleft,1)][round_progressing ? "" : " (DELAYED)"]"
. += "Time To Start: [round(SSticker.pregame_timeleft,1)][GLOB.round_progressing ? "" : " (DELAYED)"]"
. += "Players: [totalPlayers]"
. += "Players Ready: [totalPlayersReady]"
totalPlayers = 0
@@ -517,7 +517,7 @@
AnnounceCyborg(character, rank, join_message, announce_channel, character.z)
else
AnnounceArrival(character, rank, join_message, announce_channel, character.z)
data_core.manifest_inject(character)
GLOB.data_core.manifest_inject(character)
ticker.minds += character.mind//Cyborgs and AIs handle this in the transform proc. //TODO!!!!! ~Carn
if(ishuman(character))
if(character.client.prefs.auto_backup_implant)
@@ -570,7 +570,7 @@
if(character.mind.role_alt_title)
rank = character.mind.role_alt_title
// can't use their name here, since cyborg namepicking is done post-spawn, so we'll just say "A new Cyborg has arrived"/"A new Android has arrived"/etc.
global_announcer.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer", channel, zlevels)
GLOB.global_announcer.autosay("A new[rank ? " [rank]" : " visitor" ] [join_message ? join_message : "has arrived on the station"].", "Arrivals Announcement Computer", channel, zlevels)
/mob/new_player/proc/LateChoices()
if(!late_choices_dialog)