diff --git a/code/__defines/qdel.dm b/code/__defines/qdel.dm
index 12002dc46e0..cf1afe492e7 100644
--- a/code/__defines/qdel.dm
+++ b/code/__defines/qdel.dm
@@ -37,13 +37,13 @@
#define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
//Qdel helper macros.
-#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE)
-#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
+#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE)
+#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
#define QDEL_NULL(item) if(item) {qdel(item); item = null}
#define QDEL_NULL_LIST QDEL_LIST_NULL
#define QDEL_LIST_NULL(x) if(x) { for(var/y in x) { qdel(y) } ; x = null }
#define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); }
-#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE)
+#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(______qdel_list_wrapper), L), time, TIMER_STOPPABLE)
#define QDEL_LIST_ASSOC(L) if(L) { for(var/I in L) { qdel(L[I]); qdel(I); } L.Cut(); }
#define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/I in L) qdel(L[I]); L.Cut(); }
diff --git a/code/__defines/rust_g.dm b/code/__defines/rust_g.dm
index 9c9e2637ce8..1c93497ec88 100644
--- a/code/__defines/rust_g.dm
+++ b/code/__defines/rust_g.dm
@@ -42,26 +42,26 @@
#define RUSTG_JOB_NO_SUCH_JOB "NO SUCH JOB"
#define RUSTG_JOB_ERROR "JOB PANICKED"
-#define rustg_dmi_strip_metadata(fname) call(RUST_G, "dmi_strip_metadata")(fname)
-#define rustg_dmi_create_png(path, width, height, data) call(RUST_G, "dmi_create_png")(path, width, height, data)
+#define rustg_dmi_strip_metadata(fname) LIBCALL(RUST_G, "dmi_strip_metadata")(fname)
+#define rustg_dmi_create_png(path, width, height, data) LIBCALL(RUST_G, "dmi_create_png")(path, width, height, data)
-#define rustg_noise_get_at_coordinates(seed, x, y) call(RUST_G, "noise_get_at_coordinates")(seed, x, y)
+#define rustg_noise_get_at_coordinates(seed, x, y) LIBCALL(RUST_G, "noise_get_at_coordinates")(seed, x, y)
-#define rustg_file_read(fname) call(RUST_G, "file_read")(fname)
-#define rustg_file_exists(fname) call(RUST_G, "file_exists")(fname)
-#define rustg_file_write(text, fname) call(RUST_G, "file_write")(text, fname)
-#define rustg_file_append(text, fname) call(RUST_G, "file_append")(text, fname)
+#define rustg_file_read(fname) LIBCALL(RUST_G, "file_read")(fname)
+#define rustg_file_exists(fname) LIBCALL(RUST_G, "file_exists")(fname)
+#define rustg_file_write(text, fname) LIBCALL(RUST_G, "file_write")(text, fname)
+#define rustg_file_append(text, fname) LIBCALL(RUST_G, "file_append")(text, fname)
#ifdef RUSTG_OVERRIDE_BUILTINS
#define file2text(fname) rustg_file_read("[fname]")
#define text2file(text, fname) rustg_file_append(text, "[fname]")
#endif
-#define rustg_git_revparse(rev) call(RUST_G, "rg_git_revparse")(rev)
-#define rustg_git_commit_date(rev) call(RUST_G, "rg_git_commit_date")(rev)
+#define rustg_git_revparse(rev) LIBCALL(RUST_G, "rg_git_revparse")(rev)
+#define rustg_git_commit_date(rev) LIBCALL(RUST_G, "rg_git_commit_date")(rev)
-#define rustg_hash_string(algorithm, text) call(RUST_G, "hash_string")(algorithm, text)
-#define rustg_hash_file(algorithm, fname) call(RUST_G, "hash_file")(algorithm, fname)
+#define rustg_hash_string(algorithm, text) LIBCALL(RUST_G, "hash_string")(algorithm, text)
+#define rustg_hash_file(algorithm, fname) LIBCALL(RUST_G, "hash_file")(algorithm, fname)
#define RUSTG_HASH_MD5 "md5"
#define RUSTG_HASH_SHA1 "sha1"
@@ -72,13 +72,13 @@
#define md5(thing) (isfile(thing) ? rustg_hash_file(RUSTG_HASH_MD5, "[thing]") : rustg_hash_string(RUSTG_HASH_MD5, thing))
#endif
-#define rustg_json_is_valid(text) (call(RUST_G, "json_is_valid")(text) == "true")
+#define rustg_json_is_valid(text) (LIBCALL(RUST_G, "json_is_valid")(text) == "true")
-#define rustg_log_write(fname, text, format) call(RUST_G, "log_write")(fname, text, format)
-/proc/rustg_log_close_all() return call(RUST_G, "log_close_all")()
+#define rustg_log_write(fname, text, format) LIBCALL(RUST_G, "log_write")(fname, text, format)
+/proc/rustg_log_close_all() return LIBCALL(RUST_G, "log_close_all")()
-#define rustg_url_encode(text) call(RUST_G, "url_encode")(text)
-#define rustg_url_decode(text) call(RUST_G, "url_decode")(text)
+#define rustg_url_encode(text) LIBCALL(RUST_G, "url_encode")(text)
+#define rustg_url_decode(text) LIBCALL(RUST_G, "url_decode")(text)
#ifdef RUSTG_OVERRIDE_BUILTINS
#define url_encode(text) rustg_url_encode(text)
@@ -91,13 +91,13 @@
#define RUSTG_HTTP_METHOD_PATCH "patch"
#define RUSTG_HTTP_METHOD_HEAD "head"
#define RUSTG_HTTP_METHOD_POST "post"
-#define rustg_http_request_blocking(method, url, body, headers) call(RUST_G, "http_request_blocking")(method, url, body, headers)
-#define rustg_http_request_async(method, url, body, headers) call(RUST_G, "http_request_async")(method, url, body, headers)
-#define rustg_http_check_request(req_id) call(RUST_G, "http_check_request")(req_id)
+#define rustg_http_request_blocking(method, url, body, headers) LIBCALL(RUST_G, "http_request_blocking")(method, url, body, headers)
+#define rustg_http_request_async(method, url, body, headers) LIBCALL(RUST_G, "http_request_async")(method, url, body, headers)
+#define rustg_http_check_request(req_id) LIBCALL(RUST_G, "http_check_request")(req_id)
-#define rustg_sql_connect_pool(options) call(RUST_G, "sql_connect_pool")(options)
-#define rustg_sql_query_async(handle, query, params) call(RUST_G, "sql_query_async")(handle, query, params)
-#define rustg_sql_query_blocking(handle, query, params) call(RUST_G, "sql_query_blocking")(handle, query, params)
-#define rustg_sql_connected(handle) call(RUST_G, "sql_connected")(handle)
-#define rustg_sql_disconnect_pool(handle) call(RUST_G, "sql_disconnect_pool")(handle)
-#define rustg_sql_check_query(job_id) call(RUST_G, "sql_check_query")("[job_id]")
+#define rustg_sql_connect_pool(options) LIBCALL(RUST_G, "sql_connect_pool")(options)
+#define rustg_sql_query_async(handle, query, params) LIBCALL(RUST_G, "sql_query_async")(handle, query, params)
+#define rustg_sql_query_blocking(handle, query, params) LIBCALL(RUST_G, "sql_query_blocking")(handle, query, params)
+#define rustg_sql_connected(handle) LIBCALL(RUST_G, "sql_connected")(handle)
+#define rustg_sql_disconnect_pool(handle) LIBCALL(RUST_G, "sql_disconnect_pool")(handle)
+#define rustg_sql_check_query(job_id) LIBCALL(RUST_G, "sql_check_query")("[job_id]")
diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm
index 9825374b024..1408896e555 100644
--- a/code/_helpers/global_lists.dm
+++ b/code/_helpers/global_lists.dm
@@ -206,7 +206,7 @@ GLOBAL_LIST_EMPTY(mannequins)
GLOB.all_species[S.name] = S
//Shakey shakey shake
- sortTim(GLOB.all_species, /proc/cmp_species, associative = TRUE)
+ sortTim(GLOB.all_species, GLOBAL_PROC_REF(cmp_species), associative = TRUE)
//Split up the rest
for(var/speciesname in GLOB.all_species)
@@ -238,7 +238,7 @@ GLOBAL_LIST_EMPTY(mannequins)
for(var/oretype in paths)
var/ore/OD = new oretype()
GLOB.ore_data[OD.name] = OD
-
+
paths = subtypesof(/datum/alloy)
for(var/alloytype in paths)
GLOB.alloy_data += new alloytype()
@@ -310,7 +310,7 @@ GLOBAL_LIST_EMPTY(mannequins)
/proc/init_crafting_recipes(list/crafting_recipes)
for(var/path in subtypesof(/datum/crafting_recipe))
var/datum/crafting_recipe/recipe = new path()
- recipe.reqs = sortList(recipe.reqs, /proc/cmp_crafting_req_priority)
+ recipe.reqs = sortList(recipe.reqs, GLOBAL_PROC_REF(cmp_crafting_req_priority))
crafting_recipes += recipe
return crafting_recipes
/* // Uncomment to debug chemical reaction list.
diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index d8cc8b8f6a8..398104b4b11 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -540,7 +540,7 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
all_traits[path] = instance
// Shakey shakey shake
- sortTim(all_traits, /proc/cmp_trait_datums_name, associative = TRUE)
+ sortTim(all_traits, GLOBAL_PROC_REF(cmp_trait_datums_name), associative = TRUE)
// Split 'em up
for(var/traitpath in all_traits)
diff --git a/code/_helpers/icons.dm b/code/_helpers/icons.dm
index 34a7e2fc15a..31970b792fa 100644
--- a/code/_helpers/icons.dm
+++ b/code/_helpers/icons.dm
@@ -215,7 +215,7 @@
break
layers[current] = current_layer
- //sortTim(layers, /proc/cmp_image_layer_asc)
+ //sortTim(layers, GLOBAL_PROC_REF(cmp_image_layer_asc))
var/icon/add // Icon of overlay being added
@@ -386,7 +386,7 @@ GLOBAL_LIST_EMPTY(cached_examine_icons)
/proc/set_cached_examine_icon(var/atom/A, var/icon/I, var/expiry = 12000)
GLOB.cached_examine_icons[WEAKREF(A)] = I
if(expiry)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/uncache_examine_icon, WEAKREF(A)), expiry, TIMER_UNIQUE)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(uncache_examine_icon), WEAKREF(A)), expiry, TIMER_UNIQUE)
/proc/get_cached_examine_icon(var/atom/A)
var/datum/weakref/WR = WEAKREF(A)
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index cb19ec6c511..a8dce670f54 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -626,7 +626,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
//Returns: all the areas in the world, sorted.
/proc/return_sorted_areas()
- return sortTim(return_areas(), /proc/cmp_text_asc)
+ return sortTim(return_areas(), GLOBAL_PROC_REF(cmp_text_asc))
//Takes: Area type as text string or as typepath OR an instance of the area.
//Returns: A list of all turfs in areas of that type of that type in the world.
@@ -1350,9 +1350,9 @@ var/mob/dview/dview_mob = new
//datum may be null, but it does need to be a typed var
#define NAMEOF(datum, X) (#X || ##datum.##X)
-#define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##target, ##var_name, ##var_value)
+#define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___callbackvarset), ##target, ##var_name, ##var_value)
//dupe code because dm can't handle 3 level deep macros
-#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##datum, NAMEOF(##datum, ##var), ##var_value)
+#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___callbackvarset), ##datum, NAMEOF(##datum, ##var), ##var_value)
//we'll see about those 3-level deep macros
#define VARSET_IN(datum, var, var_value, time) addtimer(VARSET_CALLBACK(datum, var, var_value), time)
diff --git a/code/_helpers/visual_filters.dm b/code/_helpers/visual_filters.dm
index c02bbb69939..60aef7c9081 100644
--- a/code/_helpers/visual_filters.dm
+++ b/code/_helpers/visual_filters.dm
@@ -302,7 +302,7 @@ GLOBAL_LIST_INIT(master_filter_info, list(
/atom/proc/update_filters()
filters = null
- filter_data = sortTim(filter_data, /proc/cmp_filter_data_priority, TRUE)
+ filter_data = sortTim(filter_data, GLOBAL_PROC_REF(cmp_filter_data_priority), TRUE)
for(var/f in filter_data)
var/list/data = filter_data[f]
var/list/arguments = data.Copy()
diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm
index 9f7848b3d31..2ea2a4885f6 100644
--- a/code/_onclick/drag_drop.dm
+++ b/code/_onclick/drag_drop.dm
@@ -21,7 +21,7 @@
if(!Adjacent(usr) || !over.Adjacent(usr))
return // should stop you from dragging through windows
- INVOKE_ASYNC(over, /atom/.proc/MouseDrop_T, src, usr, src_location, over_location, src_control, over_control, params)
+ INVOKE_ASYNC(over, TYPE_PROC_REF(/atom, MouseDrop_T), src, usr, src_location, over_location, src_control, over_control, params)
/atom/proc/MouseDrop_T(atom/dropping, mob/user, src_location, over_location, src_control, over_control, params)
- return
\ No newline at end of file
+ return
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index c1309e3e95f..7515e47dac6 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -53,7 +53,7 @@
animate(alert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
if(alert.timeout)
- addtimer(CALLBACK(src, .proc/alert_timeout, alert, category), alert.timeout)
+ addtimer(CALLBACK(src, PROC_REF(alert_timeout), alert, category), alert.timeout)
alert.timeout = world.time + alert.timeout - world.tick_lag
return alert
@@ -436,7 +436,7 @@ so as to remain in compliance with the most up-to-date laws."
if(alert.icon_state in cached_icon_states(ui_style))
alert.icon = ui_style
-
+
else if(!alert.no_underlay)
var/image/I = image(icon = ui_style, icon_state = "template")
I.color = ui_color
diff --git a/code/controllers/master.dm b/code/controllers/master.dm
index fe88f6c10e3..6d66e04789e 100644
--- a/code/controllers/master.dm
+++ b/code/controllers/master.dm
@@ -68,7 +68,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
qdel(Master)
else
var/list/subsytem_types = subtypesof(/datum/controller/subsystem)
- sortTim(subsytem_types, /proc/cmp_subsystem_init)
+ sortTim(subsytem_types, GLOBAL_PROC_REF(cmp_subsystem_init))
for(var/I in subsytem_types)
_subsystems += new I
Master = src
@@ -83,7 +83,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
/datum/controller/master/Shutdown()
processing = FALSE
- sortTim(subsystems, /proc/cmp_subsystem_init)
+ sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_init))
reverseRange(subsystems)
for(var/datum/controller/subsystem/ss in subsystems)
log_world("Shutting down [ss.name] subsystem...")
@@ -173,7 +173,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
to_chat(world, "MC: Initializing subsystems...")
// Sort subsystems by init_order, so they initialize in the correct order.
- sortTim(subsystems, /proc/cmp_subsystem_init)
+ sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_init))
var/start_timeofday = REALTIMEOFDAY
// Initialize subsystems.
@@ -196,7 +196,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
GLOB.revdata = new // It can load revdata now, from tgs or .git or whatever
// Sort subsystems by display setting for easy access.
- sortTim(subsystems, /proc/cmp_subsystem_display)
+ sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_display))
// Set world options.
#ifdef UNIT_TEST
world.sleep_offline = 0
@@ -276,9 +276,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
queue_tail = null
//these sort by lower priorities first to reduce the number of loops needed to add subsequent SS's to the queue
//(higher subsystems will be sooner in the queue, adding them later in the loop means we don't have to loop thru them next queue add)
- sortTim(tickersubsystems, /proc/cmp_subsystem_priority)
+ sortTim(tickersubsystems, GLOBAL_PROC_REF(cmp_subsystem_priority))
for(var/I in runlevel_sorted_subsystems)
- sortTim(runlevel_sorted_subsystems, /proc/cmp_subsystem_priority)
+ sortTim(runlevel_sorted_subsystems, GLOBAL_PROC_REF(cmp_subsystem_priority))
I += tickersubsystems
var/cached_runlevel = current_runlevel
diff --git a/code/controllers/subsystems/assets.dm b/code/controllers/subsystems/assets.dm
index 75c23ff10f4..522deae1776 100644
--- a/code/controllers/subsystems/assets.dm
+++ b/code/controllers/subsystems/assets.dm
@@ -14,5 +14,5 @@ SUBSYSTEM_DEF(assets)
preload = cache.Copy() //don't preload assets generated during the round
for(var/client/C in GLOB.clients)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/getFilesSlow, C, preload, FALSE), 10)
- return ..()
\ No newline at end of file
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(getFilesSlow), C, preload, FALSE), 10)
+ return ..()
diff --git a/code/controllers/subsystems/job.dm b/code/controllers/subsystems/job.dm
index 2aa6d84cb69..30878ea6acf 100644
--- a/code/controllers/subsystems/job.dm
+++ b/code/controllers/subsystems/job.dm
@@ -37,11 +37,11 @@ SUBSYSTEM_DEF(job)
if(LAZYLEN(job.departments))
add_to_departments(job)
- sortTim(occupations, /proc/cmp_job_datums)
+ sortTim(occupations, GLOBAL_PROC_REF(cmp_job_datums))
for(var/D in department_datums)
var/datum/department/dept = department_datums[D]
- sortTim(dept.jobs, /proc/cmp_job_datums, TRUE)
- sortTim(dept.primary_jobs, /proc/cmp_job_datums, TRUE)
+ sortTim(dept.jobs, GLOBAL_PROC_REF(cmp_job_datums), TRUE)
+ sortTim(dept.primary_jobs, GLOBAL_PROC_REF(cmp_job_datums), TRUE)
return TRUE
@@ -69,7 +69,7 @@ SUBSYSTEM_DEF(job)
var/datum/department/D = new t()
department_datums[D.name] = D
- sortTim(department_datums, /proc/cmp_department_datums, TRUE)
+ sortTim(department_datums, GLOBAL_PROC_REF(cmp_department_datums), TRUE)
/datum/controller/subsystem/job/proc/get_all_department_datums()
var/list/dept_datums = list()
@@ -140,4 +140,4 @@ SUBSYSTEM_DEF(job)
/datum/controller/subsystem/job/proc/job_debug_message(message)
if(debug_messages)
- log_debug("JOB DEBUG: [message]")
\ No newline at end of file
+ log_debug("JOB DEBUG: [message]")
diff --git a/code/controllers/subsystems/media_tracks.dm b/code/controllers/subsystems/media_tracks.dm
index 58fd0ec858f..addff1541f0 100644
--- a/code/controllers/subsystems/media_tracks.dm
+++ b/code/controllers/subsystems/media_tracks.dm
@@ -2,7 +2,7 @@ SUBSYSTEM_DEF(media_tracks)
name = "Media Tracks"
flags = SS_NO_FIRE
init_order = INIT_ORDER_MEDIA_TRACKS
-
+
/// Every track, including secret
var/list/all_tracks = list()
/// Non-secret jukebox tracks
@@ -18,19 +18,19 @@ SUBSYSTEM_DEF(media_tracks)
/datum/controller/subsystem/media_tracks/proc/load_tracks()
for(var/filename in config.jukebox_track_files)
report_progress("Loading jukebox track: [filename]")
-
+
if(!fexists(filename))
error("File not found: [filename]")
continue
-
+
var/list/jsonData = json_decode(file2text(filename))
-
+
if(!istype(jsonData))
error("Failed to read tracks from [filename], json_decode failed.")
continue
-
+
for(var/entry in jsonData)
-
+
// Critical problems that will prevent the track from working
if(!istext(entry["url"]))
error("Jukebox entry in [filename]: bad or missing 'url'. Tracks must have a URL.")
@@ -47,21 +47,21 @@ SUBSYSTEM_DEF(media_tracks)
warning("Jukebox entry in [filename], [entry["title"]]: bad or missing 'artist'. Please consider crediting the artist.")
if(!istext(entry["genre"]))
warning("Jukebox entry in [filename], [entry["title"]]: bad or missing 'genre'. Please consider adding a genre.")
-
+
var/datum/track/T = new(entry["url"], entry["title"], entry["duration"], entry["artist"], entry["genre"])
-
+
T.secret = entry["secret"] ? 1 : 0
T.lobby = entry["lobby"] ? 1 : 0
-
+
all_tracks += T
/datum/controller/subsystem/media_tracks/proc/sort_tracks()
report_progress("Sorting media tracks...")
- sortTim(all_tracks, /proc/cmp_media_track_asc)
-
+ sortTim(all_tracks, GLOBAL_PROC_REF(cmp_media_track_asc))
+
jukebox_tracks.Cut()
lobby_tracks.Cut()
-
+
for(var/datum/track/T in all_tracks)
if(!T.secret)
jukebox_tracks += T
@@ -72,7 +72,7 @@ SUBSYSTEM_DEF(media_tracks)
var/client/C = usr.client
if(!check_rights(R_DEBUG|R_FUN))
return
-
+
// Required
var/url = tgui_input_text(C, "REQUIRED: Provide URL for track, or paste JSON if you know what you're doing. See code comments.", "Track URL", multiline = TRUE)
if(!url)
@@ -95,7 +95,7 @@ SUBSYSTEM_DEF(media_tracks)
* "secret": only on hacked jukeboxes (true/false)
* "lobby": plays in the lobby (true/false)
*/
-
+
if(islist(json))
for(var/song in json)
if(!islist(song))
@@ -104,18 +104,18 @@ SUBSYSTEM_DEF(media_tracks)
var/list/songdata = song
if(!songdata["url"] || !songdata["title"] || !songdata["duration"])
to_chat(C, "URL, Title, or Duration was missing from a song. Skipping.")
- continue
+ continue
var/datum/track/T = new(songdata["url"], songdata["title"], songdata["duration"], songdata["artist"], songdata["genre"], songdata["secret"], songdata["lobby"])
all_tracks += T
-
+
report_progress("New media track added by [C]: [T.title]")
sort_tracks()
return
-
+
var/title = tgui_input_text(C, "REQUIRED: Provide title for track", "Track Title")
if(!title)
return
-
+
var/duration = tgui_input_number(C, "REQUIRED: Provide duration for track (in deciseconds, aka seconds*10)", "Track Duration")
if(!duration)
return
@@ -124,11 +124,11 @@ SUBSYSTEM_DEF(media_tracks)
var/artist = tgui_input_text(C, "Optional: Provide artist for track", "Track Artist")
if(isnull(artist)) // Cancel rather than empty string
return
-
+
var/genre = tgui_input_text(C, "Optional: Provide genre for track (try to match an existing one)", "Track Genre")
if(isnull(genre)) // Cancel rather than empty string
return
-
+
var/secret = tgui_alert(C, "Optional: Mark track as secret?", "Track Secret", list("Yes", "Cancel", "No"))
if(secret == "Cancel")
return
@@ -136,7 +136,7 @@ SUBSYSTEM_DEF(media_tracks)
secret = TRUE
else
secret = FALSE
-
+
var/lobby = tgui_alert(C, "Optional: Mark track as lobby music?", "Track Lobby", list("Yes", "Cancel", "No"))
if(lobby == "Cancel")
return
@@ -146,12 +146,12 @@ SUBSYSTEM_DEF(media_tracks)
secret = FALSE
var/datum/track/T = new(url, title, duration, artist, genre)
-
+
T.secret = secret
T.lobby = lobby
-
+
all_tracks += T
-
+
report_progress("New media track added by [C]: [title]")
sort_tracks()
@@ -163,7 +163,7 @@ SUBSYSTEM_DEF(media_tracks)
var/track = tgui_input_text(C, "Input track title or URL to remove (must be exact)", "Remove Track")
if(!track)
return
-
+
for(var/datum/track/T in all_tracks)
if(T.title == track || T.url == track)
all_tracks -= T
@@ -171,7 +171,7 @@ SUBSYSTEM_DEF(media_tracks)
report_progress("Media track removed by [C]: [track]")
sort_tracks()
return
-
+
to_chat(C, "")
/datum/controller/subsystem/media_tracks/vv_get_dropdown()
diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm
index 629ec4b79dc..1a8f8fb1b52 100644
--- a/code/controllers/subsystems/ticker.dm
+++ b/code/controllers/subsystems/ticker.dm
@@ -220,7 +220,7 @@ var/global/datum/controller/subsystem/ticker/ticker
end_game_state = END_GAME_READY_TO_END
current_state = GAME_STATE_FINISHED
Master.SetRunLevel(RUNLEVEL_POSTGAME)
- INVOKE_ASYNC(src, .proc/declare_completion)
+ INVOKE_ASYNC(src, PROC_REF(declare_completion))
else if (mode_finished && (end_game_state < END_GAME_MODE_FINISHED))
end_game_state = END_GAME_MODE_FINISHED // Only do this cleanup once!
mode.cleanup()
diff --git a/code/controllers/subsystems/timer.dm b/code/controllers/subsystems/timer.dm
index 4fadc4f599c..cfcba6afbf6 100644
--- a/code/controllers/subsystems/timer.dm
+++ b/code/controllers/subsystems/timer.dm
@@ -256,7 +256,7 @@ SUBSYSTEM_DEF(timer)
if (!length(alltimers))
return
- sortTim(alltimers, /proc/cmp_timer)
+ sortTim(alltimers, GLOBAL_PROC_REF(cmp_timer))
var/datum/timedevent/head = alltimers[1]
@@ -516,4 +516,4 @@ SUBSYSTEM_DEF(timer)
#undef BUCKET_LEN
#undef BUCKET_POS
#undef TIMER_MAX
-#undef TIMER_ID_MAX
\ No newline at end of file
+#undef TIMER_ID_MAX
diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index 18472c854cb..62aa9aab864 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -290,7 +290,7 @@
winset(user, "mapwindow", "focus=true")
break
if (timeout)
- addtimer(CALLBACK(src, .proc/close), timeout)
+ addtimer(CALLBACK(src, PROC_REF(close)), timeout)
/datum/browser/modal/proc/wait()
while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time))
diff --git a/code/datums/chat_message.dm b/code/datums/chat_message.dm
index 982e9e098c8..23d43296b0c 100644
--- a/code/datums/chat_message.dm
+++ b/code/datums/chat_message.dm
@@ -34,7 +34,7 @@ var/list/runechat_image_cache = list()
var/image/emote_image = image('icons/UI_Icons/chat/chat_icons.dmi', icon_state = "emote")
runechat_image_cache["emote"] = emote_image
-
+
return TRUE
/datum/chatmessage
@@ -99,10 +99,10 @@ var/list/runechat_image_cache = list()
if(!target || !owner)
qdel(src)
return
-
+
// Register client who owns this message
owned_by = owner.client
- RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, .proc/qdel_self)
+ RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, PROC_REF(qdel_self))
var/extra_length = owned_by.is_preference_enabled(/datum/client_preference/runechat_long_messages)
var/maxlen = extra_length ? CHAT_MESSAGE_EXT_LENGTH : CHAT_MESSAGE_LENGTH
@@ -147,10 +147,10 @@ var/list/runechat_image_cache = list()
// Icon on both ends?
//var/image/I = runechat_image_cache["emote"]
//text = "\icon[I][text]\icon[I]"
-
+
// Icon on one end?
//LAZYADD(prefixes, "\icon[runechat_image_cache["emote"]]")
-
+
// Asterisks instead?
text = "* [text] *"
@@ -168,7 +168,7 @@ var/list/runechat_image_cache = list()
// Translate any existing messages upwards, apply exponential decay factors to timers
message_loc = target.runechat_holder(src)
- RegisterSignal(message_loc, COMSIG_PARENT_QDELETING, .proc/qdel_self)
+ RegisterSignal(message_loc, COMSIG_PARENT_QDELETING, PROC_REF(qdel_self))
if(owned_by.seen_messages)
var/idx = 1
var/combined_height = approx_lines
@@ -255,7 +255,7 @@ var/list/runechat_image_cache = list()
if(!message)
return
*/
-
+
var/list/extra_classes = list()
extra_classes += existing_extra_classes
diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm
index 6e0a3bfdc59..fd468994de3 100644
--- a/code/datums/components/crafting/crafting.dm
+++ b/code/datums/components/crafting/crafting.dm
@@ -1,6 +1,6 @@
/datum/component/personal_crafting/Initialize()
if(ismob(parent))
- RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, .proc/create_mob_button)
+ RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, PROC_REF(create_mob_button))
/datum/component/personal_crafting/proc/create_mob_button(mob/user, client/CL)
// SIGNAL_HANDLER
@@ -12,7 +12,7 @@
C.alpha = H.ui_alpha
LAZYADD(H.other_important, C)
CL.screen += C
- RegisterSignal(C, COMSIG_CLICK, .proc/component_ui_interact)
+ RegisterSignal(C, COMSIG_CLICK, PROC_REF(component_ui_interact))
/datum/component/personal_crafting
var/busy
@@ -279,28 +279,28 @@
if(amt <= 0)//since machinery can have 0 aka CRAFTING_MACHINERY_USE - i.e. use it, don't consume it!
continue
- // If the path is in R.parts, we want to grab those to stuff into the product
+ // If the path is in R.parts, we want to grab those to stuff into the product
var/amt_to_transfer = 0
if(is_path_in_list(path_key, R.parts))
amt_to_transfer = R.parts[path_key]
-
+
// Reagent: gotta go sniffing in all the beakers
if(ispath(path_key, /datum/reagent))
var/datum/reagent/reagent = path_key
var/id = initial(reagent.id)
- for(var/obj/item/weapon/reagent_containers/RC in surroundings)
+ for(var/obj/item/weapon/reagent_containers/RC in surroundings)
// Found everything we need
if(amt <= 0 && amt_to_transfer <= 0)
- break
+ break
// If we need to keep any to put in the new object, pull it out
if(amt_to_transfer > 0)
var/A = RC.reagents.trans_id_to(parts["reagents"], id, amt_to_transfer)
amt_to_transfer -= A
amt -= A
-
+
// If we need to consume some amount of it
if(amt > 0)
var/datum/reagent/RG = RC.reagents.get_reagent(id)
@@ -322,27 +322,27 @@
parts["items"] += split
amt_to_transfer -= split.get_amount()
amt -= split.get_amount()
-
+
if(amt > 0)
var/A = min(amt, S.get_amount())
if(S.use(A))
amt -= A
-
+
else // Just a regular item. Find them all and delete them
for(var/atom/movable/I in surroundings)
if(amt <= 0 && amt_to_transfer <= 0)
break
-
+
if(!istype(I, path_key))
continue
-
+
// Special case: the reagents may be needed for other recipes
if(istype(I, /obj/item/weapon/reagent_containers))
var/obj/item/weapon/reagent_containers/RC = I
if(RC.reagents.total_volume > 0)
continue
-
+
// We're using it for something
amt--
@@ -351,7 +351,7 @@
parts["items"] += I
amt_to_transfer--
continue
-
+
// Snowflake handling of reagent containers and storage atoms.
// If we consumed them in our crafting, we should dump their contents out before qdeling them.
if(istype(I, /obj/item/weapon/reagent_containers))
@@ -369,7 +369,7 @@
// SIGNAL_HANDLER
if(user == parent)
- INVOKE_ASYNC(src, .proc/tgui_interact, user)
+ INVOKE_ASYNC(src, PROC_REF(tgui_interact), user)
/datum/component/personal_crafting/tgui_state(mob/user)
return GLOB.tgui_not_incapacitated_turf_state
@@ -499,7 +499,7 @@
//Also these are typepaths so sadly we can't just do "[a]"
L += "[req[req_atom]] [initial(req_atom.name)]"
req_text += L.Join(" OR ")
-
+
for(var/obj/machinery/content as anything in R.machinery)
req_text += "[R.reqs[content]] [initial(content.name)]"
if(R.additional_req_text)
@@ -530,4 +530,4 @@
name = "crafting menu"
icon = 'icons/mob/screen/midnight.dmi'
icon_state = "craft"
- screen_loc = ui_smallquad
\ No newline at end of file
+ screen_loc = ui_smallquad
diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm
index 2b0c74e269b..b414f4651f6 100644
--- a/code/datums/components/material_container.dm
+++ b/code/datums/components/material_container.dm
@@ -76,9 +76,9 @@
. = ..()
if(!(mat_container_flags & MATCONTAINER_NO_INSERT))
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/on_attackby)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(on_attackby))
if(mat_container_flags & MATCONTAINER_EXAMINE)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine))
/datum/component/material_container/vv_edit_var(var_name, var_value)
@@ -86,12 +86,12 @@
. = ..()
if(var_name == NAMEOF(src, mat_container_flags) && parent)
if(!(old_flags & MATCONTAINER_EXAMINE) && mat_container_flags & MATCONTAINER_EXAMINE)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine))
else if(old_flags & MATCONTAINER_EXAMINE && !(mat_container_flags & MATCONTAINER_EXAMINE))
UnregisterSignal(parent, COMSIG_PARENT_EXAMINE)
if(old_flags & MATCONTAINER_NO_INSERT && !(mat_container_flags & MATCONTAINER_NO_INSERT))
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/on_attackby)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(on_attackby))
else if(!(old_flags & MATCONTAINER_NO_INSERT) && mat_container_flags & MATCONTAINER_NO_INSERT)
UnregisterSignal(parent, COMSIG_PARENT_ATTACKBY)
diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm
index 9bc38204946..755888cec19 100644
--- a/code/datums/components/overlay_lighting.dm
+++ b/code/datums/components/overlay_lighting.dm
@@ -111,15 +111,15 @@
/datum/component/overlay_lighting/RegisterWithParent()
. = ..()
if(directional)
- RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/on_parent_dir_change)
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_parent_moved)
- RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_RANGE, .proc/set_range)
- RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_POWER, .proc/set_power)
- RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_COLOR, .proc/set_color)
- RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_ON, .proc/on_toggle)
- RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_FLAGS, .proc/on_light_flags_change)
- RegisterSignal(parent, COMSIG_ATOM_USED_IN_CRAFT, .proc/on_parent_crafted)
- RegisterSignal(parent, COMSIG_LIGHT_EATER_QUEUE, .proc/on_light_eater)
+ RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_parent_dir_change))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_moved))
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_RANGE, PROC_REF(set_range))
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_POWER, PROC_REF(set_power))
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_COLOR, PROC_REF(set_color))
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_ON, PROC_REF(on_toggle))
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_LIGHT_FLAGS, PROC_REF(on_light_flags_change))
+ RegisterSignal(parent, COMSIG_ATOM_USED_IN_CRAFT, PROC_REF(on_parent_crafted))
+ RegisterSignal(parent, COMSIG_LIGHT_EATER_QUEUE, PROC_REF(on_light_eater))
var/atom/movable/movable_parent = parent
if(movable_parent.light_flags & LIGHT_ATTACHED)
overlay_lighting_flags |= LIGHTING_ATTACHED
@@ -155,17 +155,17 @@
set_parent_attached_to(null)
set_holder(null)
clean_old_turfs()
-
+
qdel(visible_mask, TRUE)
visible_mask = null
-
+
if(directional)
qdel(directional_atom, TRUE)
directional_atom = null
-
+
qdel(cone, TRUE)
cone = null
-
+
return ..()
@@ -229,15 +229,15 @@
var/atom/movable/old_parent_attached_to = .
UnregisterSignal(old_parent_attached_to, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED, COMSIG_LIGHT_EATER_QUEUE))
if(old_parent_attached_to == current_holder)
- RegisterSignal(old_parent_attached_to, COMSIG_PARENT_QDELETING, .proc/on_holder_qdel)
- RegisterSignal(old_parent_attached_to, COMSIG_MOVABLE_MOVED, .proc/on_holder_moved)
- RegisterSignal(old_parent_attached_to, COMSIG_LIGHT_EATER_QUEUE, .proc/on_light_eater)
+ RegisterSignal(old_parent_attached_to, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel))
+ RegisterSignal(old_parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved))
+ RegisterSignal(old_parent_attached_to, COMSIG_LIGHT_EATER_QUEUE, PROC_REF(on_light_eater))
if(parent_attached_to)
if(parent_attached_to == current_holder)
UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED, COMSIG_LIGHT_EATER_QUEUE))
- RegisterSignal(parent_attached_to, COMSIG_PARENT_QDELETING, .proc/on_parent_attached_to_qdel)
- RegisterSignal(parent_attached_to, COMSIG_MOVABLE_MOVED, .proc/on_parent_attached_to_moved)
- RegisterSignal(parent_attached_to, COMSIG_LIGHT_EATER_QUEUE, .proc/on_light_eater)
+ RegisterSignal(parent_attached_to, COMSIG_PARENT_QDELETING, PROC_REF(on_parent_attached_to_qdel))
+ RegisterSignal(parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_attached_to_moved))
+ RegisterSignal(parent_attached_to, COMSIG_LIGHT_EATER_QUEUE, PROC_REF(on_light_eater))
check_holder()
@@ -257,11 +257,11 @@
clean_old_turfs()
return
if(new_holder != parent && new_holder != parent_attached_to)
- RegisterSignal(new_holder, COMSIG_PARENT_QDELETING, .proc/on_holder_qdel)
- RegisterSignal(new_holder, COMSIG_MOVABLE_MOVED, .proc/on_holder_moved)
- RegisterSignal(new_holder, COMSIG_LIGHT_EATER_QUEUE, .proc/on_light_eater)
+ RegisterSignal(new_holder, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel))
+ RegisterSignal(new_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved))
+ RegisterSignal(new_holder, COMSIG_LIGHT_EATER_QUEUE, PROC_REF(on_light_eater))
if(directional)
- RegisterSignal(new_holder, COMSIG_ATOM_DIR_CHANGE, .proc/on_holder_dir_change)
+ RegisterSignal(new_holder, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_holder_dir_change))
if(overlay_lighting_flags & LIGHTING_ON)
make_luminosity_update()
add_dynamic_lumi()
@@ -444,7 +444,7 @@
if(final_distance > SHORT_CAST && !(ALL_CARDINALS & current_direction))
final_distance -= 1
var/turf/scanning = get_turf(current_holder)
-
+
. = 0
for(var/i in 1 to final_distance)
var/turf/next_turf = get_step(scanning, current_direction)
@@ -464,7 +464,7 @@
if(final_distance > SHORT_CAST && !(ALL_CARDINALS & get_dir(GET_PARENT, target)))
final_distance -= 1
var/turf/scanning = get_turf(GET_PARENT)
-
+
. = 0
for(var/i in 1 to final_distance)
var/next_dir = get_dir(scanning, target)
@@ -477,9 +477,9 @@
directional_atom.forceMove(scanning)
var/turf/Ts = get_turf(GET_PARENT)
var/turf/To = get_turf(GET_LIGHT_SOURCE)
-
+
var/angle = Get_Angle(Ts, To)
-
+
directional_atom.face_light(GET_PARENT, angle, .)
set_cone_direction(NORTH, angle)
@@ -510,7 +510,7 @@
return
current_direction = newdir
set_cone_direction(newdir)
-
+
if(newdir & NORTH)
cone.pixel_y = 16
else if(newdir & SOUTH)
@@ -522,7 +522,7 @@
else
cone.pixel_y = 0
directional_atom.pixel_y = 0
-
+
if(newdir & EAST)
cone.pixel_x = 16
else if(newdir & WEST)
@@ -538,7 +538,7 @@
else
cone.pixel_x = 0
directional_atom.pixel_x = 0
-
+
if(!skip_update && (overlay_lighting_flags & LIGHTING_ON))
make_luminosity_update()
@@ -549,7 +549,7 @@
return
UnregisterSignal(parent, COMSIG_ATOM_USED_IN_CRAFT)
- RegisterSignal(new_craft, COMSIG_ATOM_USED_IN_CRAFT, .proc/on_parent_crafted)
+ RegisterSignal(new_craft, COMSIG_ATOM_USED_IN_CRAFT, PROC_REF(on_parent_crafted))
set_parent_attached_to(new_craft)
/// Handles putting the source for overlay lights into the light eater queue since we aren't tracked by [/atom/var/light_sources]
diff --git a/code/datums/components/resize_guard.dm b/code/datums/components/resize_guard.dm
index 724d2524431..33799cb828c 100644
--- a/code/datums/components/resize_guard.dm
+++ b/code/datums/components/resize_guard.dm
@@ -6,7 +6,7 @@
/datum/component/resize_guard/RegisterWithParent()
// When our parent mob enters any atom, we check resize
- RegisterSignal(parent, COMSIG_ATOM_ENTERING, .proc/check_resize)
+ RegisterSignal(parent, COMSIG_ATOM_ENTERING, PROC_REF(check_resize))
/datum/component/resize_guard/UnregisterFromParent()
UnregisterSignal(parent, COMSIG_ATOM_ENTERING)
@@ -16,4 +16,4 @@
if(A?.limit_mob_size)
var/mob/living/L = parent
L.resize(L.size_multiplier)
- qdel(src)
\ No newline at end of file
+ qdel(src)
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index aa92979d5a3..4579f50f409 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -63,11 +63,11 @@
if(!check_rights(NONE))
return
var/list/names = list()
- var/list/componentsubtypes = sortTim(subtypesof(/datum/component), /proc/cmp_typepaths_asc)
+ var/list/componentsubtypes = sortTim(subtypesof(/datum/component), GLOBAL_PROC_REF(cmp_typepaths_asc))
names += "---Components---"
names += componentsubtypes
names += "---Elements---"
- names += sortTim(subtypesof(/datum/element), /proc/cmp_typepaths_asc)
+ names += sortTim(subtypesof(/datum/element), GLOBAL_PROC_REF(cmp_typepaths_asc))
var/result = tgui_input_list(usr, "Choose a component/element to add:", "Add Component/Element", names)
if(!usr || !result || result == "---Components---" || result == "---Elements---")
return
diff --git a/code/datums/elements/_element.dm b/code/datums/elements/_element.dm
index 30bd98a3268..82b51395225 100644
--- a/code/datums/elements/_element.dm
+++ b/code/datums/elements/_element.dm
@@ -23,7 +23,7 @@
return ELEMENT_INCOMPATIBLE
SEND_SIGNAL(target, COMSIG_ELEMENT_ATTACH, src)
if(element_flags & ELEMENT_DETACH)
- RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/OnTargetDelete, override = TRUE)
+ RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(OnTargetDelete), override = TRUE)
/datum/element/proc/OnTargetDelete(datum/source, force)
SIGNAL_HANDLER
diff --git a/code/datums/elements/conflict_checking.dm b/code/datums/elements/conflict_checking.dm
index cd56d288566..eea61f8f89a 100644
--- a/code/datums/elements/conflict_checking.dm
+++ b/code/datums/elements/conflict_checking.dm
@@ -18,7 +18,7 @@
CRASH("Invalid ID in conflict checking element.")
if(isnull(src.id))
src.id = id
- RegisterSignal(target, COMSIG_CONFLICT_ELEMENT_CHECK, .proc/check)
+ RegisterSignal(target, COMSIG_CONFLICT_ELEMENT_CHECK, PROC_REF(check))
/datum/element/conflict_checking/proc/check(datum/source, id_to_check)
if(id == id_to_check)
@@ -32,4 +32,4 @@
for(var/i in GetAllContents())
var/atom/movable/AM = i
if(SEND_SIGNAL(AM, COMSIG_CONFLICT_ELEMENT_CHECK, id) & ELEMENT_CONFLICT_FOUND)
- ++.
\ No newline at end of file
+ ++.
diff --git a/code/datums/elements/light_blocking.dm b/code/datums/elements/light_blocking.dm
index 86aac9f0758..f8e5cd82dfe 100644
--- a/code/datums/elements/light_blocking.dm
+++ b/code/datums/elements/light_blocking.dm
@@ -9,7 +9,7 @@
. = ..()
if(!ismovable(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/on_target_move)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_target_move))
var/atom/movable/movable_target = target
if(isturf(movable_target.loc))
var/turf/turf_loc = movable_target.loc
diff --git a/code/datums/elements/turf_transparency.dm b/code/datums/elements/turf_transparency.dm
index 073f076659e..8b2ac8f9186 100644
--- a/code/datums/elements/turf_transparency.dm
+++ b/code/datums/elements/turf_transparency.dm
@@ -14,8 +14,8 @@
our_turf.plane = OPENSPACE_PLANE
our_turf.layer = OPENSPACE_LAYER
- RegisterSignal(target, COMSIG_TURF_MULTIZ_DEL, .proc/on_multiz_turf_del, override = TRUE)
- RegisterSignal(target, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_turf_new, override = TRUE)
+ RegisterSignal(target, COMSIG_TURF_MULTIZ_DEL, PROC_REF(on_multiz_turf_del), override = TRUE)
+ RegisterSignal(target, COMSIG_TURF_MULTIZ_NEW, PROC_REF(on_multiz_turf_new), override = TRUE)
update_multiz(our_turf, TRUE, TRUE)
@@ -75,12 +75,12 @@
if(!ispath(path))
warning("Z-level [our_turf] has invalid baseturf '[get_base_turf_by_area(our_turf)]' in area '[get_area(our_turf)]'")
path = /turf/space
-
+
var/do_plane = ispath(path, /turf/space) ? SPACE_PLANE : null
var/do_state = ispath(path, /turf/space) ? "white" : initial(path.icon_state)
-
+
var/mutable_appearance/underlay_appearance = mutable_appearance(initial(path.icon), do_state, layer = TURF_LAYER-0.02, plane = do_plane)
underlay_appearance.appearance_flags = RESET_ALPHA | RESET_COLOR
our_turf.underlays += underlay_appearance
-
- return TRUE
\ No newline at end of file
+
+ return TRUE
diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm
index 2f3f4884b5c..234a226c813 100644
--- a/code/datums/ghost_query.dm
+++ b/code/datums/ghost_query.dm
@@ -63,7 +63,7 @@
if(query_sound)
SEND_SOUND(C, sound(query_sound))
- tgui_alert_async(D, question, "[role_name] request", list("Yes", "No", "Never for this round"), CALLBACK(src, .proc/get_reply), wait_time SECONDS)
+ tgui_alert_async(D, question, "[role_name] request", list("Yes", "No", "Never for this round"), CALLBACK(src, PROC_REF(get_reply)), wait_time SECONDS)
/// Process an async alert response
/datum/ghost_query/proc/get_reply(response)
@@ -87,7 +87,7 @@
else if(finished) // Already finished candidate list
to_chat(D, "Unfortunately, you were not fast enough, and there are no more available roles. Sorry.")
else // Prompt a second time
- tgui_alert_async(D, "Are you sure you want to play as a [role_name]?", "[role_name] request", list("I'm Sure", "Nevermind"), CALLBACK(src, .proc/get_reply), wait_time SECONDS)
+ tgui_alert_async(D, "Are you sure you want to play as a [role_name]?", "[role_name] request", list("I'm Sure", "Nevermind"), CALLBACK(src, PROC_REF(get_reply)), wait_time SECONDS)
if("I'm Sure")
if(!evaluate_candidate(D)) // Failed revalidation
diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm
index e60fa3ad19d..e9397825298 100644
--- a/code/datums/looping_sounds/_looping_sound.dm
+++ b/code/datums/looping_sounds/_looping_sound.dm
@@ -87,7 +87,7 @@
if(!chance || prob(chance))
play(get_sound(starttime))
if(!timerid)
- timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), mid_length, TIMER_STOPPABLE | TIMER_LOOP)
+ timerid = addtimer(CALLBACK(src, PROC_REF(sound_loop), world.time), mid_length, TIMER_STOPPABLE | TIMER_LOOP)
/datum/looping_sound/proc/play(soundfile)
var/list/atoms_cache = output_atoms
@@ -119,7 +119,7 @@
if(start_sound)
play(start_sound)
start_wait = start_length
- addtimer(CALLBACK(src, .proc/sound_loop), start_wait)
+ addtimer(CALLBACK(src, PROC_REF(sound_loop)), start_wait)
/datum/looping_sound/proc/on_stop()
if(end_sound)
diff --git a/code/datums/looping_sounds/sequence.dm b/code/datums/looping_sounds/sequence.dm
index 650b3c8d5a0..b43229812eb 100644
--- a/code/datums/looping_sounds/sequence.dm
+++ b/code/datums/looping_sounds/sequence.dm
@@ -54,7 +54,7 @@
/datum/looping_sound/sequence/sound_loop(starttime)
iterate_on_sequence()
- timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), next_iteration_delay, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src, PROC_REF(sound_loop), world.time), next_iteration_delay, TIMER_STOPPABLE)
#define MORSE_DOT "*" // Yes this is an asterisk but its easier to see on a computer compared to a period.
#define MORSE_DASH "-"
@@ -172,4 +172,4 @@
return spaces_between_letters
#undef MORSE_DOT
-#undef MORSE_DASH
\ No newline at end of file
+#undef MORSE_DASH
diff --git a/code/datums/riding.dm b/code/datums/riding.dm
index ec5afff5d5d..d92e19ba2dd 100644
--- a/code/datums/riding.dm
+++ b/code/datums/riding.dm
@@ -112,7 +112,7 @@
to_chat(user, "You'll need [key_name] in one of your hands to move \the [ridden].")
/datum/riding/proc/Unbuckle(atom/movable/M)
-// addtimer(CALLBACK(ridden, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE)
+// addtimer(CALLBACK(ridden, TYPE_PROC_REF(/atom/movable, unbuckle_mob), M), 0, TIMER_UNIQUE)
spawn(0)
// On /tg/ this uses the fancy CALLBACK system. Not entirely sure why they needed to do so with a duration of 0,
// so if there is a reason, this should replicate it close enough. Hopefully.
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index e2993681208..9f865aced66 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -698,7 +698,7 @@
if(length(speech_bubble_hearers))
var/image/I = generate_speech_bubble(src, "[bubble_icon][say_test(message)]", FLY_LAYER)
I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
- INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_hearers, 30)
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), I, speech_bubble_hearers, 30)
/atom/proc/speech_bubble(bubble_state = "", bubble_loc = src, list/bubble_recipients = list())
return
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 58338edf220..74c4d3569ee 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -741,7 +741,7 @@
// Cooldown
injector_ready = FALSE
- addtimer(CALLBACK(src, .proc/injector_cooldown_finish), 30 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(injector_cooldown_finish)), 30 SECONDS)
// Create it
var/datum/dna2/record/buf = buffers[buffer_id]
@@ -798,4 +798,4 @@
#undef PAGE_BUFFER
#undef PAGE_REJUVENATORS
-/////////////////////////// DNA MACHINES
\ No newline at end of file
+/////////////////////////// DNA MACHINES
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index 37400109142..c0d7cfd7a48 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -154,7 +154,7 @@
return
/obj/effect/gateway/active/Initialize()
- addtimer(CALLBACK(src, .proc/spawn_and_qdel), rand(30, 60) SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(spawn_and_qdel)), rand(30, 60) SECONDS)
/obj/effect/gateway/active/proc/spawn_and_qdel()
if(LAZYLEN(spawnable))
diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm
index f811abf9572..baa151eecb8 100644
--- a/code/game/jobs/job/civilian_chaplain.dm
+++ b/code/game/jobs/job/civilian_chaplain.dm
@@ -34,7 +34,7 @@
if(!B || !I)
return
- INVOKE_ASYNC(src, .proc/religion_prompts, H, B, I)
+ INVOKE_ASYNC(src, PROC_REF(religion_prompts), H, B, I)
/datum/job/chaplain/proc/religion_prompts(mob/living/carbon/human/H, obj/item/weapon/storage/bible/B, obj/item/weapon/card/id/I)
var/religion_name = "Unitarianism"
@@ -121,4 +121,4 @@
bible_name = bn
bible_icon_state = bis
bible_item_state = bits
- title = t
\ No newline at end of file
+ title = t
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index 2cea520fd29..785a60a93cd 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -26,7 +26,7 @@ var/global/datum/controller/occupations/job_master
if(!job) continue
if(job.faction != faction) continue
occupations += job
- sortTim(occupations, /proc/cmp_job_datums)
+ sortTim(occupations, GLOBAL_PROC_REF(cmp_job_datums))
return 1
diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm
index bfe95bada70..c50080feb9f 100644
--- a/code/game/machinery/atmoalter/area_atmos_computer.dm
+++ b/code/game/machinery/atmoalter/area_atmos_computer.dm
@@ -48,13 +48,13 @@
"load" = scrubber.last_power_draw,
"area" = get_area(scrubber),
)))
-
+
return list("scrubbers" = working)
/obj/machinery/computer/area_atmos/tgui_act(action, params)
if(..())
return TRUE
-
+
switch(action)
if("toggle")
var/scrub_id = params["id"]
@@ -66,10 +66,10 @@
S.update_icon()
. = TRUE
if("allon")
- INVOKE_ASYNC(src, .proc/toggle_all, TRUE)
+ INVOKE_ASYNC(src, PROC_REF(toggle_all), TRUE)
. = TRUE
if("alloff")
- INVOKE_ASYNC(src, .proc/toggle_all, FALSE)
+ INVOKE_ASYNC(src, PROC_REF(toggle_all), FALSE)
. = TRUE
if("scan")
scanscrubbers()
@@ -78,7 +78,7 @@
add_fingerprint(usr)
/obj/machinery/computer/area_atmos/proc/toggle_all(on)
- for(var/id in connectedscrubbers)
+ for(var/id in connectedscrubbers)
var/obj/machinery/portable_atmospherics/powered/scrubber/huge/S = connectedscrubbers["[id]"]
if(!validscrubber(S))
connectedscrubbers -= S
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index cebc88566e7..236f6d68374 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -30,7 +30,7 @@
var/filtertext
/obj/machinery/autolathe/Initialize()
- AddComponent(/datum/component/material_container, subtypesof(/datum/material), 0, MATCONTAINER_EXAMINE, _after_insert = CALLBACK(src, .proc/AfterMaterialInsert))
+ AddComponent(/datum/component/material_container, subtypesof(/datum/material), 0, MATCONTAINER_EXAMINE, _after_insert = CALLBACK(src, PROC_REF(AfterMaterialInsert)))
. = ..()
if(!autolathe_recipes)
autolathe_recipes = new()
diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm
index 227e36948cd..62a2a154a5d 100644
--- a/code/game/machinery/biogenerator.dm
+++ b/code/game/machinery/biogenerator.dm
@@ -142,7 +142,7 @@
. = TRUE
switch(action)
if("activate")
- INVOKE_ASYNC(src, .proc/activate)
+ INVOKE_ASYNC(src, PROC_REF(activate))
return TRUE
if("detach")
if(beaker)
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 60e5727a7c5..7930231cbfa 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -348,7 +348,7 @@
printing = TRUE
// playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, TRUE)
SStgui.update_uis(src)
- addtimer(CALLBACK(src, .proc/print_finish), 5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(print_finish)), 5 SECONDS)
else
return FALSE
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 2e315362cfa..fea0fa3950e 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -336,7 +336,7 @@
printing = TRUE
// playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, TRUE)
SStgui.update_uis(src)
- addtimer(CALLBACK(src, .proc/print_finish), 5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(print_finish)), 5 SECONDS)
if("photo_front")
var/icon/photo = get_photo(usr)
if(photo && active1)
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index 26e45d7f409..876a2009d14 100644
--- a/code/game/machinery/computer/skills.dm
+++ b/code/game/machinery/computer/skills.dm
@@ -251,7 +251,7 @@
printing = TRUE
// playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, TRUE)
SStgui.update_uis(src)
- addtimer(CALLBACK(src, .proc/print_finish), 5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(print_finish)), 5 SECONDS)
else
return FALSE
diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm
index 08ae8653dfa..1cee3a8eecc 100644
--- a/code/game/machinery/doors/blast_door.dm
+++ b/code/game/machinery/doors/blast_door.dm
@@ -273,7 +273,7 @@
force_open()
if(autoclose && src.operating && !(stat & BROKEN || stat & NOPOWER))
- addtimer(CALLBACK(src, .proc/close, 15 SECONDS))
+ addtimer(CALLBACK(src, PROC_REF(close), 15 SECONDS))
return 1
// Proc: close()
@@ -473,4 +473,4 @@
#undef BLAST_DOOR_CRUSH_DAMAGE
-#undef SHUTTER_CRUSH_DAMAGE
\ No newline at end of file
+#undef SHUTTER_CRUSH_DAMAGE
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index 617397f071b..a1b5b21e977 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -94,7 +94,7 @@
for(var/obj/machinery/door/window/brigdoor/door in targets)
if(door.density)
continue
- INVOKE_ASYNC(door, /obj/machinery/door/window/brigdoor.proc/close)
+ INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/machinery/door/window/brigdoor, close))
for(var/obj/structure/closet/secure_closet/brig/C in targets)
if(C.broken)
@@ -118,7 +118,7 @@
for(var/obj/machinery/door/window/brigdoor/door in targets)
if(!door.density)
continue
- INVOKE_ASYNC(door, /obj/machinery/door/window/brigdoor.proc/open)
+ INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/machinery/door/window/brigdoor, open))
for(var/obj/structure/closet/secure_closet/brig/C in targets)
if(C.broken)
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
index 23b71bdb0f1..4f5adbb677e 100644
--- a/code/game/machinery/doors/multi_tile.dm
+++ b/code/game/machinery/doors/multi_tile.dm
@@ -10,7 +10,7 @@
/obj/machinery/door/airlock/multi_tile/Initialize(mapload)
. = ..()
SetBounds()
- RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/SetBounds)
+ RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(SetBounds))
apply_opacity_to_my_turfs(opacity)
/obj/machinery/door/airlock/multi_tile/set_opacity()
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 28afc5e9ff4..822e950d639 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -67,13 +67,13 @@
if(istype(bot))
if(density && src.check_access(bot.botcard))
open()
- addtimer(CALLBACK(src, .proc/close), 50)
+ addtimer(CALLBACK(src, PROC_REF(close)), 50)
else if(istype(AM, /obj/mecha))
var/obj/mecha/mecha = AM
if(density)
if(mecha.occupant && src.allowed(mecha.occupant))
open()
- addtimer(CALLBACK(src, .proc/close), 50)
+ addtimer(CALLBACK(src, PROC_REF(close)), 50)
return
if (!( ticker ))
return
@@ -81,7 +81,7 @@
return
if (density && allowed(AM))
open()
- addtimer(CALLBACK(src, .proc/close), check_access(null)? 50 : 20)
+ addtimer(CALLBACK(src, PROC_REF(close)), check_access(null)? 50 : 20)
/obj/machinery/door/window/CanPass(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
diff --git a/code/game/machinery/holoposter.dm b/code/game/machinery/holoposter.dm
index 2e1d609ccc5..a5174380d2d 100644
--- a/code/game/machinery/holoposter.dm
+++ b/code/game/machinery/holoposter.dm
@@ -29,7 +29,7 @@ GLOBAL_LIST_EMPTY(holoposters)
. = ..()
set_rand_sprite()
GLOB.holoposters += src
- mytimer = addtimer(CALLBACK(src, .proc/set_rand_sprite), 30 MINUTES + rand(0, 5 MINUTES), TIMER_STOPPABLE | TIMER_LOOP)
+ mytimer = addtimer(CALLBACK(src, PROC_REF(set_rand_sprite)), 30 MINUTES + rand(0, 5 MINUTES), TIMER_STOPPABLE | TIMER_LOOP)
/obj/machinery/holoposter/Destroy()
GLOB.holoposters -= src
@@ -92,7 +92,7 @@ GLOBAL_LIST_EMPTY(holoposters)
stat &= ~BROKEN
icon_forced = FALSE
if(!mytimer)
- mytimer = addtimer(CALLBACK(src, .proc/set_rand_sprite), 30 MINUTES + rand(0, 5 MINUTES), TIMER_STOPPABLE | TIMER_LOOP)
+ mytimer = addtimer(CALLBACK(src, PROC_REF(set_rand_sprite)), 30 MINUTES + rand(0, 5 MINUTES), TIMER_STOPPABLE | TIMER_LOOP)
set_rand_sprite()
return
icon_forced = TRUE
@@ -114,4 +114,3 @@ GLOBAL_LIST_EMPTY(holoposters)
/obj/machinery/holoposter/emp_act()
stat |= BROKEN
update_icon()
-
diff --git a/code/game/machinery/machinery_power.dm b/code/game/machinery/machinery_power.dm
index be648d0f80c..0f4c2ef01b1 100644
--- a/code/game/machinery/machinery_power.dm
+++ b/code/game/machinery/machinery_power.dm
@@ -80,7 +80,7 @@
// Or in Destroy at all, but especially after the ..().
/obj/machinery/Destroy()
if(ismovable(loc))
- GLOB.moved_event.unregister(loc, src, .proc/update_power_on_move) // Unregister just in case
+ GLOB.moved_event.unregister(loc, src, PROC_REF(update_power_on_move)) // Unregister just in case
var/power = POWER_CONSUMPTION
REPORT_POWER_CONSUMPTION_CHANGE(power, 0)
. = ..()
@@ -91,9 +91,9 @@
. = ..()
update_power_on_move(src, old_loc, loc)
if(ismovable(loc)) // Register for recursive movement (if the thing we're inside moves)
- GLOB.moved_event.register(loc, src, .proc/update_power_on_move)
+ GLOB.moved_event.register(loc, src, PROC_REF(update_power_on_move))
if(ismovable(old_loc)) // Unregister recursive movement.
- GLOB.moved_event.unregister(old_loc, src, .proc/update_power_on_move)
+ GLOB.moved_event.unregister(old_loc, src, PROC_REF(update_power_on_move))
/obj/machinery/proc/update_power_on_move(atom/movable/mover, atom/old_loc, atom/new_loc)
var/area/old_area = get_area(old_loc)
diff --git a/code/game/machinery/pointdefense.dm b/code/game/machinery/pointdefense.dm
index 1996139db29..d61e0dbe721 100644
--- a/code/game/machinery/pointdefense.dm
+++ b/code/game/machinery/pointdefense.dm
@@ -244,7 +244,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/power/pointdefense)
var/Angle = round(Get_Angle(src,M))
var/matrix/rot_matrix = matrix()
rot_matrix.Turn(Angle)
- addtimer(CALLBACK(src, .proc/finish_shot, target), rotation_speed)
+ addtimer(CALLBACK(src, PROC_REF(finish_shot), target), rotation_speed)
animate(src, transform = rot_matrix, rotation_speed, easing = SINE_EASING)
set_dir(ATAN2(transform.b, transform.a) > 0 ? NORTH : SOUTH)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 1dd50dc0bfe..595e44a2cdf 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -566,7 +566,7 @@
"View Stats" = radial_image_statpanel
)
- var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_occupant_radial, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_occupant_radial), user), require_near = TRUE, tooltips = TRUE)
if(!check_occupant_radial(user))
return
if(!choice)
diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm
index 5dad8accc43..b57145c801c 100644
--- a/code/game/objects/effects/chem/foam.dm
+++ b/code/game/objects/effects/chem/foam.dm
@@ -23,9 +23,9 @@
metal = ismetal
playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3)
if(dries) //VOREStation Add
- addtimer(CALLBACK(src, .proc/post_spread), 3 + metal * 3)
- addtimer(CALLBACK(src, .proc/pre_harden), 12 SECONDS)
- addtimer(CALLBACK(src, .proc/harden), 15 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(post_spread)), 3 + metal * 3)
+ addtimer(CALLBACK(src, PROC_REF(pre_harden)), 12 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(harden)), 15 SECONDS)
/obj/effect/effect/foam/proc/post_spread()
process()
diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index 6f96ec16894..73669120381 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -49,7 +49,7 @@ var/global/list/image/splatter_cache=list()
if (B.blood_DNA)
blood_DNA |= B.blood_DNA.Copy()
qdel(B)
- addtimer(CALLBACK(src, .proc/dry), DRYING_TIME * (amount+1))
+ addtimer(CALLBACK(src, PROC_REF(dry)), DRYING_TIME * (amount+1))
/obj/effect/decal/cleanable/blood/update_icon()
if(basecolor == "rainbow") basecolor = get_random_colour(1)
diff --git a/code/game/objects/effects/map_effects/beam_point.dm b/code/game/objects/effects/map_effects/beam_point.dm
index c10e8b0315c..6a023a0470f 100644
--- a/code/game/objects/effects/map_effects/beam_point.dm
+++ b/code/game/objects/effects/map_effects/beam_point.dm
@@ -36,7 +36,7 @@ GLOBAL_LIST_EMPTY(all_beam_points)
if(make_beams_on_init)
create_beams()
if(use_timer)
- addtimer(CALLBACK(src, .proc/handle_beam_timer), initial_delay)
+ addtimer(CALLBACK(src, PROC_REF(handle_beam_timer)), initial_delay)
return ..()
/obj/effect/map_effect/beam_point/Destroy()
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 573e498aa4a..8c0309563a6 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -728,7 +728,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
H.toggle_zoom_hud() // If the user has already limited their HUD this avoids them having a HUD when they zoom in
H.set_viewsize(viewsize)
zoom = 1
- GLOB.moved_event.register(H, src, .proc/zoom)
+ GLOB.moved_event.register(H, src, PROC_REF(zoom))
var/tilesize = 32
var/viewoffset = tilesize * tileoffset
@@ -757,7 +757,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
if(!H.hud_used.hud_shown)
H.toggle_zoom_hud()
zoom = 0
- GLOB.moved_event.unregister(H, src, .proc/zoom)
+ GLOB.moved_event.unregister(H, src, PROC_REF(zoom))
H.client.pixel_x = 0
H.client.pixel_y = 0
@@ -938,7 +938,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
. = ..()
if(usr.is_preference_enabled(/datum/client_preference/inv_tooltips) && ((src in usr) || isstorage(loc))) // If in inventory or in storage we're looking at
var/user = usr
- tip_timer = addtimer(CALLBACK(src, .proc/openTip, location, control, params, user), 5, TIMER_STOPPABLE)
+ tip_timer = addtimer(CALLBACK(src, PROC_REF(openTip), location, control, params, user), 5, TIMER_STOPPABLE)
/obj/item/MouseExited()
. = ..()
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index e1a295dfc4e..ac73bf97c8a 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -71,7 +71,7 @@
if("wipe")
msg_admin_attack("[key_name_admin(user)] wiped [key_name_admin(AI)] with \the [src].")
add_attack_logs(user,carded_ai,"Purged from AI Card")
- INVOKE_ASYNC(src, .proc/wipe_ai)
+ INVOKE_ASYNC(src, PROC_REF(wipe_ai))
if("radio")
carded_ai.aiRadio.disabledAi = !carded_ai.aiRadio.disabledAi
to_chat(carded_ai, "Your Subspace Transceiver has been [carded_ai.aiRadio.disabledAi ? "disabled" : "enabled"]!")
@@ -83,7 +83,7 @@
if(carded_ai.control_disabled && carded_ai.deployed_shell)
carded_ai.disconnect_shell("Disconnecting from remote shell due to [src] wireless access interface being disabled.")
update_icon()
-
+
return TRUE
/obj/item/device/aicard/update_icon()
@@ -182,4 +182,4 @@
AI.adjustOxyLoss(2)
AI.updatehealth()
sleep(10)
- flush = FALSE
\ No newline at end of file
+ flush = FALSE
diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm
index a92c2725c08..7eafc0fe052 100644
--- a/code/game/objects/items/devices/communicator/communicator.dm
+++ b/code/game/objects/items/devices/communicator/communicator.dm
@@ -106,7 +106,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
setup_tgui_camera()
//This is a pretty terrible way of doing this.
- addtimer(CALLBACK(src, .proc/register_to_holder), 5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(register_to_holder)), 5 SECONDS)
// Proc: register_to_holder()
// Parameters: None
@@ -376,4 +376,3 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
return
icon_state = initial(icon_state)
-
diff --git a/code/game/objects/items/devices/communicator/phone.dm b/code/game/objects/items/devices/communicator/phone.dm
index 671598a6ef8..eafd3105e0b 100644
--- a/code/game/objects/items/devices/communicator/phone.dm
+++ b/code/game/objects/items/devices/communicator/phone.dm
@@ -349,14 +349,14 @@
video_source = comm.camera
comm.visible_message("\icon[src][bicon(src)] New video connection from [comm].")
update_active_camera_screen()
- GLOB.moved_event.register(video_source, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.register(video_source, src, PROC_REF(update_active_camera_screen))
update_icon()
// Proc: end_video()
// Parameters: reason - the text reason to print for why it ended
// Description: Ends the video call by clearing video_source
/obj/item/device/communicator/proc/end_video(var/reason)
- GLOB.moved_event.unregister(video_source, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.unregister(video_source, src, PROC_REF(update_active_camera_screen))
show_static()
video_source = null
@@ -364,4 +364,3 @@
visible_message(.)
update_icon()
-
diff --git a/code/game/objects/items/devices/denecrotizer_vr.dm b/code/game/objects/items/devices/denecrotizer_vr.dm
index 4a6160b2424..613818440f4 100644
--- a/code/game/objects/items/devices/denecrotizer_vr.dm
+++ b/code/game/objects/items/devices/denecrotizer_vr.dm
@@ -49,7 +49,7 @@
if(!evaluate_ghost_join(user))
return ..()
- tgui_alert_async(usr, "Would you like to become [src]? It is bound to [revivedby].", "Become Mob", list("Yes","No"), CALLBACK(src, .proc/reply_ghost_join), 20 SECONDS)
+ tgui_alert_async(usr, "Would you like to become [src]? It is bound to [revivedby].", "Become Mob", list("Yes","No"), CALLBACK(src, PROC_REF(reply_ghost_join)), 20 SECONDS)
/// A reply to an async alert request was received
/mob/living/simple_mob/proc/reply_ghost_join(response)
@@ -64,7 +64,7 @@
/mob/living/simple_mob/proc/ghost_join(mob/observer/dead/D)
log_and_message_admins("[key_name_admin(D)] joined [src] as a ghost [ADMIN_FLW(src)]")
active_ghost_pods -= src
-
+
// Move the ghost in
if(D.mind)
D.mind.active = TRUE
@@ -72,7 +72,7 @@
else
src.ckey = D.ckey
qdel(D)
-
+
// Clean up the simplemob
ghostjoin = FALSE
ghostjoin_icon()
@@ -91,14 +91,14 @@
return FALSE
// At this point we can at least send them messages as to why they can't join, since they are a mob with a client
- if(!ghostjoin)
+ if(!ghostjoin)
to_chat(D, "Sorry, [src] is no longer ghost-joinable.")
return FALSE
if(ckey)
to_chat(D, "Sorry, someone else has already inhabited [src].")
return FALSE
-
+
if(capture_caught && !D.client.prefs.capture_crystal)
to_chat(D, "Sorry, [src] is participating in capture mechanics, and your preferences do not allow for that.")
return FALSE
@@ -128,7 +128,7 @@
else
. += "The screen indicates that this device can be used again in [cooldowntime] seconds, and that it has enough energy for [charges] uses."
-/obj/item/device/denecrotizer/proc/check_target(mob/living/simple_mob/target, mob/living/user)
+/obj/item/device/denecrotizer/proc/check_target(mob/living/simple_mob/target, mob/living/user)
if(!target.Adjacent(user))
return FALSE
if(user.a_intent != I_HELP) //be gentle
@@ -150,10 +150,10 @@
if(!advanced)
to_chat(user, "[src] doesn't seem to work on that.")
return FALSE
- if(target.ai_holder.retaliate || target.ai_holder.hostile) // You can be friends with still living mobs if they are passive I GUESS
+ if(target.ai_holder.retaliate || target.ai_holder.hostile) // You can be friends with still living mobs if they are passive I GUESS
to_chat(user, "[src] doesn't seem to work on that.")
return FALSE
- if(!target.mind)
+ if(!target.mind)
user.visible_message("[user] gently presses [src] to [target]...", runemessage = "presses [src] to [target]")
if(do_after(user, revive_time, exclusive = TASK_USER_EXCLUSIVE, target = target))
target.faction = user.faction
@@ -197,7 +197,7 @@
icon_state = "[initial(icon_state)]-o"
update_icon()
return
-
+
/obj/item/device/denecrotizer/proc/basic_rez(mob/living/simple_mob/target, mob/living/user) //so medical can have a way to bring back people's pets or whatever, does not change any settings about the mob or offer it to ghosts.
user.visible_message("[user] presses [src] to [target]...", runemessage = "presses [src] to [target]")
if(do_after(user, revive_time, exclusive = TASK_ALL_EXCLUSIVE, target = target))
@@ -235,9 +235,9 @@
I.invisibility = INVISIBILITY_OBSERVER
I.plane = PLANE_GHOSTS
I.appearance_flags = KEEP_APART|RESET_TRANSFORM
-
+
cut_overlay(I)
-
+
if(ghostjoin)
add_overlay(I)
@@ -247,4 +247,4 @@
icon_state = "m-denecrotizer"
advanced = 0 //This one isn't as fancy
cooldown = 5 MINUTES //not as long
- charges = 20 //in case spiders merc Ian
\ No newline at end of file
+ charges = 20 //in case spiders merc Ian
diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm
index 980685f1241..1861694fae9 100644
--- a/code/game/objects/items/devices/gps.dm
+++ b/code/game/objects/items/devices/gps.dm
@@ -45,8 +45,8 @@ var/list/GPS_list = list()
if(istype(loc, /mob))
holder = loc
- GLOB.moved_event.register(holder, src, .proc/update_compass)
- GLOB.dir_set_event.register(holder, src, .proc/update_compass)
+ GLOB.moved_event.register(holder, src, PROC_REF(update_compass))
+ GLOB.dir_set_event.register(holder, src, PROC_REF(update_compass))
if(holder && tracking)
if(!is_in_processing_list)
diff --git a/code/game/objects/items/devices/translocator_vr.dm b/code/game/objects/items/devices/translocator_vr.dm
index 3a0fb80bd0b..57630d9c88f 100644
--- a/code/game/objects/items/devices/translocator_vr.dm
+++ b/code/game/objects/items/devices/translocator_vr.dm
@@ -125,7 +125,7 @@ This device can be easily used to break ERP preferences due to the nature of tel
Make sure you carefully examine someone's OOC prefs before teleporting them if you are going to use this device for ERP purposes.
This device records all warnings given and teleport events for admin review in case of pref-breaking, so just don't do it.
"},"OOC Warning")
- var/choice = show_radial_menu(user, radial_menu_anchor, radial_images, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, radial_menu_anchor, radial_images, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!choice)
return
diff --git a/code/game/objects/items/devices/uplink.dm b/code/game/objects/items/devices/uplink.dm
index ef5ae25fa71..268131fb7de 100644
--- a/code/game/objects/items/devices/uplink.dm
+++ b/code/game/objects/items/devices/uplink.dm
@@ -25,7 +25,7 @@
/obj/item/device/uplink/Initialize(var/mapload)
. = ..()
- addtimer(CALLBACK(src, .proc/next_offer), offer_time) //It seems like only the /hidden type actually makes use of this...
+ addtimer(CALLBACK(src, PROC_REF(next_offer)), offer_time) //It seems like only the /hidden type actually makes use of this...
/obj/item/device/uplink/get_item_cost(var/item_type, var/item_cost)
return (discount_item && (item_type == discount_item)) ? max(1, round(item_cost*discount_amount)) : item_cost
@@ -63,7 +63,7 @@
discount_amount = pick(90;0.9, 80;0.8, 70;0.7, 60;0.6, 50;0.5, 40;0.4, 30;0.3, 20;0.2, 10;0.1)
next_offer_time = world.time + offer_time
SStgui.update_uis(src)
- addtimer(CALLBACK(src, .proc/next_offer), offer_time)
+ addtimer(CALLBACK(src, PROC_REF(next_offer)), offer_time)
// Toggles the uplink on and off. Normally this will bypass the item's normal functions and go to the uplink menu, if activated.
/obj/item/device/uplink/hidden/proc/toggle()
diff --git a/code/game/objects/items/toys/mech_toys.dm b/code/game/objects/items/toys/mech_toys.dm
index 3fdb9c66598..d2d88f4a793 100644
--- a/code/game/objects/items/toys/mech_toys.dm
+++ b/code/game/objects/items/toys/mech_toys.dm
@@ -170,7 +170,7 @@
to_chat(user, "You offer battle to [target.name]!")
to_chat(target, "[user.name] wants to battle with [T.His] [name]! Attack them with a toy mech to initiate combat.")
wants_to_battle = TRUE
- addtimer(CALLBACK(src, .proc/withdraw_offer, user), 6 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(withdraw_offer), user), 6 SECONDS)
return
..()
@@ -602,4 +602,4 @@
#undef SPECIAL_ATTACK_DAMAGE
#undef SPECIAL_ATTACK_UTILITY
#undef SPECIAL_ATTACK_OTHER
-#undef MAX_BATTLE_LENGTH
\ No newline at end of file
+#undef MAX_BATTLE_LENGTH
diff --git a/code/game/objects/items/toys/toys_vr.dm b/code/game/objects/items/toys/toys_vr.dm
index cb879b71398..f999c701450 100644
--- a/code/game/objects/items/toys/toys_vr.dm
+++ b/code/game/objects/items/toys/toys_vr.dm
@@ -174,7 +174,7 @@
playsound(user, 'sound/voice/shriek1.ogg', 10, 0)
src.visible_message("Skreee!")
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/plushie/vox/proc/cooldownreset()
@@ -224,7 +224,7 @@
playsound(user, 'sound/machines/ping.ogg', 10, 0)
src.visible_message("Ping!")
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/plushie/ipc/proc/cooldownreset()
@@ -241,7 +241,7 @@
playsound(user, 'sound/machines/ding.ogg', 10, 0)
src.visible_message("Ding!")
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/plushie/snakeplushie
@@ -274,14 +274,14 @@
atom_say(pick(responses))
playsound(user, 'sound/effects/whistle.ogg', 10, 0)
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/plushie/marketable_pip/attack_self(mob/user as mob)
if(!cooldown)
playsound(user, 'sound/effects/whistle.ogg', 10, 0)
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/plushie/marketable_pip/proc/cooldownreset()
@@ -299,7 +299,7 @@
playsound(user, 'sound/voice/moth/scream_moth.ogg', 10, 0)
src.visible_message("Aaaaaaa.")
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/plushie/moth/proc/cooldownreset()
@@ -344,7 +344,7 @@
playsound(user, 'sound/weapons/slice.ogg', 10, 0)
src.visible_message("Stab!")
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/plushie/susblue
@@ -470,7 +470,7 @@
flick("[initial(icon_state)]2", src)
user.visible_message("[user] doesn't blind [M] with the toy flash!")
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/flash/proc/cooldownreset()
@@ -539,7 +539,7 @@
user.visible_message("[user] asks the AI core to state laws.")
user.visible_message("[src] says \"[answer]\"")
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/AI/proc/cooldownreset()
@@ -819,7 +819,7 @@
if(!cooldown)
playsound(user, 'sound/weapons/chainsaw_startup.ogg', 10, 0)
cooldown = 1
- addtimer(CALLBACK(src, .proc/cooldownreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(cooldownreset)), 50)
return ..()
/obj/item/toy/chainsaw/proc/cooldownreset()
diff --git a/code/game/objects/items/weapons/RCD_vr.dm b/code/game/objects/items/weapons/RCD_vr.dm
index d120e593f4f..48f380f1ae1 100644
--- a/code/game/objects/items/weapons/RCD_vr.dm
+++ b/code/game/objects/items/weapons/RCD_vr.dm
@@ -36,20 +36,20 @@
/obj/item/weapon/rcd/update_icon()
var/nearest_ten = round((stored_matter/max_stored_matter)*10, 1)
-
+
//Just to prevent updates every use
if(ammostate == nearest_ten)
return //No change
ammostate = nearest_ten
-
+
cut_overlays()
-
+
//Main sprite update
if(!nearest_ten)
icon_state = "[initial(icon_state)]_empty"
else
icon_state = "[initial(icon_state)]"
-
+
add_overlay("[initial(icon_state)]_charge[nearest_ten]")
/obj/item/weapon/rcd/proc/perform_effect(var/atom/A, var/time_taken)
@@ -98,12 +98,12 @@
if(user.incapacitated())
world.log << "Two"
return FALSE
-
+
var/obj/item/rig_module/device/D = loc
if(!istype(D) || !D?.holder?.wearer == user)
world.log << "Three"
return FALSE
-
+
return TRUE
/obj/item/weapon/rcd/attack_self(mob/living/user)
@@ -134,7 +134,7 @@
"Change Window Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "windowtype")
)
*/
- var/choice = show_radial_menu(user, user, choices, custom_check = CALLBACK(src, .proc/check_menu, user), tooltips = TRUE)
+ var/choice = show_radial_menu(user, user, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), tooltips = TRUE)
if(!check_menu(user))
return
switch(choice)
@@ -206,7 +206,7 @@
status = rcd_status
delay = rcd_delay
if (status == RCD_DECONSTRUCT)
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 11)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 11)
delay -= 11
icon_state = "rcd_end_reverse"
else
@@ -228,7 +228,7 @@
qdel(src)
else
icon_state = "rcd_end"
- addtimer(CALLBACK(src, .proc/end), 15)
+ addtimer(CALLBACK(src, PROC_REF(end)), 15)
/obj/effect/constructing_effect/proc/end()
qdel(src)
diff --git a/code/game/objects/items/weapons/RMS_vr.dm b/code/game/objects/items/weapons/RMS_vr.dm
index b0a72144d47..69c5f61e64b 100644
--- a/code/game/objects/items/weapons/RMS_vr.dm
+++ b/code/game/objects/items/weapons/RMS_vr.dm
@@ -219,7 +219,7 @@
"Random" = radial_image_random
)
- var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(choice)
diff --git a/code/game/objects/items/weapons/capture_crystal.dm b/code/game/objects/items/weapons/capture_crystal.dm
index 36447ce9cc3..da3e3673456 100644
--- a/code/game/objects/items/weapons/capture_crystal.dm
+++ b/code/game/objects/items/weapons/capture_crystal.dm
@@ -249,8 +249,8 @@
//Make it so the crystal knows if its mob references get deleted to make sure things get cleaned up
/obj/item/capture_crystal/proc/knowyoursignals(mob/living/M, mob/living/U)
- RegisterSignal(M, COMSIG_PARENT_QDELETING, .proc/mob_was_deleted, TRUE)
- RegisterSignal(U, COMSIG_PARENT_QDELETING, .proc/owner_was_deleted, TRUE)
+ RegisterSignal(M, COMSIG_PARENT_QDELETING, PROC_REF(mob_was_deleted), TRUE)
+ RegisterSignal(U, COMSIG_PARENT_QDELETING, PROC_REF(owner_was_deleted), TRUE)
//The basic capture command does most of the registration work.
/obj/item/capture_crystal/proc/capture(mob/living/M, mob/living/U)
@@ -856,4 +856,4 @@
/mob/living
var/capture_crystal = TRUE //If TRUE, the mob is capturable. Otherwise it isn't.
- var/capture_caught = FALSE //If TRUE, the mob has already been caught, and so cannot be caught again.
\ No newline at end of file
+ var/capture_caught = FALSE //If TRUE, the mob has already been caught, and so cannot be caught again.
diff --git a/code/game/objects/items/weapons/picnic_blankets.dm b/code/game/objects/items/weapons/picnic_blankets.dm
index a5da9860153..ab76b8efa73 100644
--- a/code/game/objects/items/weapons/picnic_blankets.dm
+++ b/code/game/objects/items/weapons/picnic_blankets.dm
@@ -33,6 +33,7 @@
var/blanket_type = CENTER
layer = HIDING_LAYER - 0.01 //Stuff shouldn't be able to hide under the blanket on the ground
var/list/attached_blankets = list()
+ anchored = TRUE
/obj/structure/picnic_blanket_deployed/verb/fold_up()
set name = "Fold up"
diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
index 20fe500575d..6352f4ff9e4 100644
--- a/code/game/objects/items/weapons/storage/bible.dm
+++ b/code/game/objects/items/weapons/storage/bible.dm
@@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
var/image/bible_image = image(icon = 'icons/obj/storage.dmi', icon_state = GLOB.biblestates[i])
skins += list("[GLOB.biblenames[i]]" = bible_image)
- var/choice = show_radial_menu(user, src, skins, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 40, require_near = TRUE)
+ var/choice = show_radial_menu(user, src, skins, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 40, require_near = TRUE)
if(!choice)
return FALSE
var/bible_index = GLOB.biblenames.Find(choice)
@@ -112,4 +112,4 @@ GLOBAL_LIST_INIT(bibleitemstates, list(
/obj/item/weapon/storage/bible/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (src.use_sound)
playsound(src, src.use_sound, 50, 1, -5)
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/game/objects/structures/crates_lockers/__closets.dm b/code/game/objects/structures/crates_lockers/__closets.dm
index cf196ddf0a0..05661ccedb0 100644
--- a/code/game/objects/structures/crates_lockers/__closets.dm
+++ b/code/game/objects/structures/crates_lockers/__closets.dm
@@ -526,7 +526,7 @@
animate(door_obj, transform = M, icon_state = door_state, layer = door_layer, time = world.tick_lag, flags = ANIMATION_END_NOW)
else
animate(transform = M, icon_state = door_state, layer = door_layer, time = world.tick_lag)
- addtimer(CALLBACK(src, .proc/end_door_animation,closing), closet_appearance.door_anim_time, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(end_door_animation), closing), closet_appearance.door_anim_time, TIMER_UNIQUE|TIMER_OVERRIDE)
/obj/structure/closet/proc/end_door_animation(closing = FALSE)
is_animating_door = FALSE
diff --git a/code/game/objects/structures/ghost_pods/ghost_pods.dm b/code/game/objects/structures/ghost_pods/ghost_pods.dm
index 6c856ceb7f2..5a5ed5db2f7 100644
--- a/code/game/objects/structures/ghost_pods/ghost_pods.dm
+++ b/code/game/objects/structures/ghost_pods/ghost_pods.dm
@@ -73,13 +73,13 @@
/obj/structure/ghost_pod/automatic/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/trigger), delay_to_self_open)
+ addtimer(CALLBACK(src, PROC_REF(trigger)), delay_to_self_open)
/obj/structure/ghost_pod/automatic/trigger()
. = ..()
if(. == FALSE) // If we failed to get a volunteer, try again later if allowed to.
if(delay_to_try_again)
- addtimer(CALLBACK(src, .proc/trigger), delay_to_try_again)
+ addtimer(CALLBACK(src, PROC_REF(trigger)), delay_to_try_again)
// This type is triggered by a ghost clicking on it, as opposed to a living player. A ghost query type isn't needed.
/obj/structure/ghost_pod/ghost_activated
diff --git a/code/game/socket_talk.dm b/code/game/socket_talk.dm
index 8484b636b8d..6cad496937c 100644
--- a/code/game/socket_talk.dm
+++ b/code/game/socket_talk.dm
@@ -8,15 +8,15 @@
src.enabled = config.socket_talk
if(enabled)
- call("DLLSocket.so","establish_connection")("127.0.0.1","8019")
+ LIBCALL("DLLSocket.so","establish_connection")("127.0.0.1","8019")
proc
send_raw(message)
if(enabled)
- return call("DLLSocket.so","send_message")(message)
+ return LIBCALL("DLLSocket.so","send_message")(message)
receive_raw()
if(enabled)
- return call("DLLSocket.so","recv_message")()
+ return LIBCALL("DLLSocket.so","recv_message")()
send_log(var/log, var/message)
return send_raw("type=log&log=[log]&message=[message]")
send_keepalive()
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
index baba14563cf..fe64b973460 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
@@ -445,7 +445,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null
ENABLE_BITFIELD(options, SDQL2_OPTION_DO_NOT_AUTOGC)
/datum/SDQL2_query/proc/ARun()
- INVOKE_ASYNC(src, .proc/Run)
+ INVOKE_ASYNC(src, PROC_REF(Run))
/datum/SDQL2_query/proc/Run()
if(SDQL2_IS_RUNNING)
diff --git a/code/modules/ai/ai_holder.dm b/code/modules/ai/ai_holder.dm
index 8a101decd7a..f12a337a10c 100644
--- a/code/modules/ai/ai_holder.dm
+++ b/code/modules/ai/ai_holder.dm
@@ -210,7 +210,7 @@
holder = new_holder
home_turf = get_turf(holder)
manage_processing(AI_PROCESSING)
- GLOB.stat_set_event.register(holder, src, .proc/holder_stat_change)
+ GLOB.stat_set_event.register(holder, src, PROC_REF(holder_stat_change))
..()
/datum/ai_holder/Destroy()
@@ -516,4 +516,4 @@
#undef AI_NO_PROCESS
#undef AI_PROCESSING
-#undef AI_FASTPROCESSING
\ No newline at end of file
+#undef AI_FASTPROCESSING
diff --git a/code/modules/artifice/telecube.dm b/code/modules/artifice/telecube.dm
index 2b304560942..bca000870fe 100644
--- a/code/modules/artifice/telecube.dm
+++ b/code/modules/artifice/telecube.dm
@@ -193,10 +193,10 @@
/obj/item/weapon/telecube/proc/cooldown(var/mate_too = FALSE)
if(!ready)
return
-
+
ready = FALSE
update_icon()
- addtimer(CALLBACK(src, .proc/ready), cooldown_time)
+ addtimer(CALLBACK(src, PROC_REF(ready)), cooldown_time)
if(mate_too && mate)
mate.cooldown(mate_too = FALSE) //No infinite recursion pls
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 60eee032656..a7267ca3428 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -50,7 +50,7 @@
switch(action)
if("signal")
- INVOKE_ASYNC(src, .proc/signal)
+ INVOKE_ASYNC(src, PROC_REF(signal))
. = TRUE
if("freq")
frequency = unformat_frequency(params["freq"])
diff --git a/code/modules/busy_space_vr/air_traffic.dm b/code/modules/busy_space_vr/air_traffic.dm
index d353522d962..a261b56d864 100644
--- a/code/modules/busy_space_vr/air_traffic.dm
+++ b/code/modules/busy_space_vr/air_traffic.dm
@@ -60,7 +60,7 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
/datum/lore/atc_controller/proc/shift_ending(var/evac = 0)
msg("[using_map.shuttle_name], this is [using_map.dock_name] Control, you are cleared to complete routine transfer from [using_map.station_name] to [using_map.dock_name].")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[using_map.shuttle_name] departing [using_map.dock_name] for [using_map.station_name] on routine transfer route. Estimated time to arrival: ten minutes.","[using_map.shuttle_name]")
/datum/lore/atc_controller/proc/random_convo()
@@ -110,14 +110,14 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
var/chatter_type = "normal"
if(force_chatter_type)
chatter_type = force_chatter_type
- else if((org_type == "government" || org_type == "neutral" || org_type == "military" || org_type == "corporate" || org_type == "system defense") && org_type2 == "pirate") //this is ugly but when I tried to do it with !='s it fired for pirate-v-pirate, still not sure why. might as well stick it up here so it takes priority over other combos.
+ else if((org_type == "government" || org_type == "neutral" || org_type == "military" || org_type == "corporate" || org_type == "system defense" || org_type == "spacer") && org_type2 == "pirate") //this is ugly but when I tried to do it with !='s it fired for pirate-v-pirate, still not sure why. might as well stick it up here so it takes priority over other combos.
chatter_type = "distress"
else if(org_type == "corporate") //corporate-specific subset for the slogan event. despite the relatively high weight it was still quite rare in tests.
- chatter_type = pick(5;"emerg",25;"policescan",25;"traveladvisory",30;"pathwarning",30;"dockingrequestgeneric",30;"dockingrequestdenied",30;"dockingrequestdelayed",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",30;"undockingrequest","normal",30;"undockingdenied",30;"undockingdelayed",300;"slogan")
+ chatter_type = pick(5;"emerg",25;"policescan",25;"traveladvisory",30;"pathwarning",180;"dockingrequestgeneric",30;"undockingrequest","normal",30;"undockingdenied",50;"slogan",25;"civvieleaks")
else if((org_type == "government" || org_type == "neutral" || org_type == "military"))
- chatter_type = pick(5;"emerg",25;"policescan",25;"traveladvisory",30;"pathwarning",30;"dockingrequestgeneric",30;"dockingrequestdenied",30;"dockingrequestdelayed",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",30;"undockingrequest","normal",30;"undockingdenied",30;"undockingdelayed")
+ chatter_type = pick(5;"emerg",25;"policescan",25;"traveladvisory",30;"pathwarning",180;"dockingrequestgeneric",30;"undockingrequest","normal",30;"undockingdenied",25;"civvieleaks")
else if(org_type == "spacer")
- chatter_type = pick(5;"emerg",15;"policescan",15;"traveladvisory",5;"pathwarning",10;"dockingrequestgeneric",30;"dockingrequestdenied",10;"dockingrequestdelayed",30;"dockingrequestsupplly",10;"dockingrequestrepair",20;"dockingrequestmedical",20;"dockingrequestsecurity",30;"undockingrequest","normal",10;"undockingdenied",30;"undockingdelayed")
+ chatter_type = pick(5;"emerg",15;"policescan",15;"traveladvisory",5;"pathwarning",150;"dockingrequestgeneric",30;"undockingrequest","normal",10;"undockingdenied",25;"civvieleaks")
//the following filters *always* fire their 'unique' event when they're tripped, simply because the conditions behind them are quite rare to begin with
else if(org_type == "smuggler" && org_type2 != "system defense") //just straight up funnel smugglers into always being caught, otherwise we get them asking for traffic info and stuff
@@ -129,14 +129,14 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
else if((org_type == "smuggler" || org_type == "pirate") && org_type2 != "system defense") //but if we roll THIS combo, time to alert the SDF to get off their asses
chatter_type = "hostiledetected"
//SDF-specific events that need to filter based on the second party (basically just the following SDF-unique list with the soft-result ship scan thrown in)
- else if(org_type == "system defense" && (org_type == "government" || org_type == "neutral" || org_type == "military" || org_type == "corporate")) //let's see if we can narrow this down, I didn't see many ship-to-ship scans
- chatter_type = pick(75;"policeshipscan","sdfpatrolupdate",75;"sdfendingpatrol",30;"dockingrequestgeneric",30;"dockingrequestdelayed",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",20;"undockingrequest",75;"sdfbeginpatrol",50;"normal")
+ else if(org_type == "system defense" && (org_type2 == "government" || org_type2 == "neutral" || org_type2 == "military" || org_type2 == "corporate" || org_type2 == "spacer")) //let's see if we can narrow this down, I didn't see many ship-to-ship scans
+ chatter_type = pick(75;"policeshipscan","sdfpatrolupdate",75;"sdfendingpatrol",180;"dockingrequestgeneric",20;"undockingrequest",75;"sdfbeginpatrol",50;"normal",10;"civvieleaks")
//SDF-specific events that don't require the secondary at all, in the event that we manage to roll SDF + hostile/smuggler or something
else if(org_type == "system defense")
- chatter_type = pick("sdfpatrolupdate",60;"sdfendingpatrol",30;"dockingrequestgeneric",30;"dockingrequestdelayed",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",20;"undockingrequest",80;"sdfbeginpatrol","normal")
+ chatter_type = pick("sdfpatrolupdate",60;"sdfendingpatrol",120;"dockingrequestgeneric",20;"undockingrequest",80;"sdfbeginpatrol","normal","sdfchatter")
//if we somehow don't match any of the other existing filters once we've run through all of them
else
- chatter_type = pick(5;"emerg",25;"policescan",25;"traveladvisory",30;"pathwarning",30;"dockingrequestgeneric",30;"dockingrequestdelayed",30;"dockingrequestdenied",30;"dockingrequestsupply",30;"dockingrequestrepair",30;"dockingrequestmedical",30;"dockingrequestsecurity",30;"undockingrequest",30;"undockingdenied",30;"undockingdelayed","normal")
+ chatter_type = pick(5;"emerg",25;"policescan",25;"traveladvisory",30;"pathwarning",90;"dockingrequestgeneric",30;"undockingrequest",30;"undockingdenied","normal",25;"civvieleaks")
//I probably should do some kind of pass here to work through all the possible combinations of major factors and see if the filtering list needs reordering or modifying, but I really can't be arsed
//DEBUG BLOCK
@@ -175,11 +175,11 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
switch(chatter_type)
//mayday call
if("emerg")
- var/problem = pick("We have hull breaches on multiple decks","We have unknown hostile life forms on board","Our primary drive is failing","We have [pick("asteroids","space debris")] impacting the hull","We're experiencing a total loss of engine power","We have hostile ships closing fast","There's smoke in the cockpit","We have unidentified boarders","Our RCS are malfunctioning and we're losing stability","Our life support [pick("is failing","has failed")]")
+ var/problem = pick("We have hull breaches on multiple decks","We have unknown hostile life forms on board","Our primary drive is failing","We have [pick("asteroids","space debris")] impacting the hull","We're experiencing a total loss of engine power","We have hostile ships closing fast","There's smoke [pick("in the cockpit","on the bridge")]","We have unidentified boarders","Our RCS are malfunctioning and we're losing stability","Our life support [pick("is failing","has failed")]")
msg("+Mayday, mayday, mayday!+ This is [combined_first_name] declaring an emergency! [problem]!","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[combined_first_name], this is [using_map.dock_name] Control, copy. Switch to emergency responder channel [ertchannel].")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("Understood [using_map.dock_name] Control, switching now.","[prefix] [shipname]")
//Control scan event: soft outcome
if("policescan")
@@ -187,21 +187,21 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
var/complain = pick("I hope this doesn't take too long.","Can we hurry this up?","Make it quick.","This better not take too long.","Is this really necessary?")
var/completed = pick("You're free to proceed.","Everything looks fine, carry on.","You're clear, move along.","Apologies for the delay, you're clear.","Switch to channel [sdfchannel] and await further instruction.")
msg("[combined_first_name], this is [using_map.dock_name] Control, your [pick("ship","vessel","starship")] has been flagged for routine inspection. Hold position and prepare to be scanned.")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[confirm] [using_map.dock_name] Control, holding position.","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("Your compliance is appreciated, [combined_first_name]. Scan commencing.")
- sleep(10 SECONDS)
+ sleep(rand(3,6)*2 SECONDS)
msg(complain,"[prefix] [shipname]")
- sleep(15 SECONDS)
+ sleep(rand(3,6)*3 SECONDS)
msg("[combined_first_name], this is [using_map.dock_name] Control. Scan complete. [completed]")
//Control scan event: hard outcome
if("policeflee")
var/uhoh = pick("No can do chief, we got places to be.","Sorry but we've got places to be.","Not happening.","Ah fuck, who ratted us out this time?!","You'll never take me alive!","Hey, I have a cloaking device! You can't see me!","I'm going to need to ask for a refund on that stealth drive...","I'm afraid I can't do that, Control.","Ah |hell|.","Fuck!","This isn't the ship you're looking for.","Well. This is awkward.","Uh oh.","I surrender!")
msg("Unknown [pick("ship","vessel","starship")], this is [using_map.dock_name] Control, identify yourself and submit to a full inspection. Flying without an active transponder is a violation of interstellar shipping regulations.")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[uhoh]","[shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("This is [using_map.starsys_name] Defense Control to all local assets: vector to interdict and detain [combined_first_name]. Control out.","[using_map.starsys_name] Defense Control")
//SDF scan event: soft outcome
if("policeshipscan")
@@ -209,160 +209,195 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
var/complain = pick("I hope this doesn't take too long.","Can we hurry this up?","Make it quick.","This better not take too long.","Is this really necessary?")
var/completed = pick("You're free to proceed.","Everything looks fine, carry on.","You're clear. Move along.","Apologies for the delay, you're clear.","Switch to channel [sdfchannel] and await further instruction.")
msg("[combined_second_name], this is [combined_first_name], your [pick("ship","vessel","starship")] has been flagged for routine inspection. Hold position and prepare to be scanned.","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[confirm] [combined_first_name], holding position.","[secondprefix] [secondshipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("Your compliance is appreciated, [combined_second_name]. Scan commencing.","[prefix] [shipname]")
- sleep(10 SECONDS)
+ sleep(rand(3,6)*2 SECONDS)
msg(complain,"[secondprefix] [secondshipname]")
- sleep(15 SECONDS)
+ sleep(rand(3,6)*3 SECONDS)
msg("[combined_second_name], this is [combined_first_name]. Scan complete. [completed]","[prefix] [shipname]")
//SDF scan event: hard outcome
if("policeshipflee")
var/uhoh = pick("No can do chief, we got places to be.","Sorry but we've got places to be.","Not happening.","Ah fuck, who ratted us out this time?!","You'll never take me alive!","Hey, I have a cloaking device! You can't see me!","I'm going to need to ask for a refund on that stealth drive...","I'm afraid I can't do that, |[shipname]|.","Ah |hell|.","Fuck!","This isn't the ship you're looking for.","Well. This is awkward.","Uh oh.","I surrender!")
msg("Unknown [pick("ship","vessel","starship")], this is [combined_second_name], identify yourself and submit to a full inspection. Flying without an active transponder is a violation of interstellar shipping regulations.","[secondprefix] [secondshipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[uhoh]","[shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[using_map.starsys_name] Defense Control, this is [combined_second_name]. We have a situation here, please advise.","[secondprefix] [secondshipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("Defense Control copies, [combined_second_name], reinforcements are en route. Switch further communications to encrypted band [sdfchannel].","[using_map.starsys_name] Defense Control")
//SDF scan event: engage primary in combat! fairly rare since it needs a pirate/vox + SDF roll
if("policeshipcombat")
var/battlestatus = pick("requesting reinforcements.","we need backup! Now!","holding steady.","we're holding our own for now.","we have them on the run.","they're trying to make a run for it!","we have them right where we want them.","we're badly outgunned!","we have them outgunned.","we're outnumbered here!","we have them outnumbered.","this'll be a cakewalk.",10;"notify their next of kin.")
msg("[using_map.starsys_name] Defense Control, this is [combined_second_name], engaging [combined_first_name] [pick("near route","in sector")] [rand(1,100)], [battlestatus]","[secondprefix] [secondshipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[using_map.starsys_name] Defense Control copies, [combined_second_name]. Keep us updated.","[using_map.starsys_name] Defense Control")
//SDF event: patrol update
if("sdfpatrolupdate")
var/statusupdate = pick("nothing unusual so far","nothing of note","everything looks clear so far","ran off some [pick("pirates","marauders")] near route [pick(1,100)], [pick("no","minor")] damage sustained, continuing patrol","situation normal, no suspicious activity yet","minor incident on route [pick(1,100)]","Code 7-X [pick("on route","in sector")] [pick(1,100)], situation is under control","seeing a lot of traffic on route [pick(1,100)]","caught a couple of smugglers [pick("on route","in sector")] [pick(1,100)]","sustained some damage in a skirmish just now, we're heading back for repairs")
msg("[using_map.starsys_name] Defense Control, this is [combined_first_name] reporting in, [statusupdate], over.","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[using_map.starsys_name] Defense Control copies, [combined_first_name]. Keep us updated, out.","[using_map.starsys_name] Defense Control")
//SDF event: end patrol
if("sdfendingpatrol")
var/appreciation = pick("Copy","Understood","Affirmative","10-4","Roger that")
var/dockingplan = pick("Starting final approach now.","Commencing landing procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
msg("[callname], this is [combined_first_name], returning from our system patrol route, requesting permission to [landing_short].","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
+ //SDF event: general chatter
+ if("sdfchatter")
+ var/chain = pick("codecheck","commscheck")
+ switch(chain)
+ if("codecheck")
+ msg("Check. Check. |Check|. Uhhh... check? Wait. Wait! Hold on. Yeah, okay, I gotta call this one in.","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[using_map.dock_name] Control, confirm auth-code... [rand(1,9)][rand(1,9)][rand(1,9)]-[pick("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega")]?","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("One moment... yeah, that code checks out [combined_first_name].")
+ sleep(rand(3,6) SECONDS)
+ msg("|(sigh)| Copy that Control. You! Move along!","[prefix] [shipname]")
+ if("commscheck")
+ msg("Control this is [combined_first_name], we're getting some interference in our area. [pick("How's our line?","Do you read?","How copy, over?")]","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("Control reads you loud and clear [combined_first_name].","[using_map.starsys_name] Defense Control")
+ sleep(rand(3,6) SECONDS)
+ msg("[pick("Copy that","Thanks,","Roger that")] Control. [combined_first_name] out.","[prefix] [shipname]")
+ //Civil event: leaky chatter
+ if("civvieleaks")
+ var/commleak = pick("thatsmywife","missingkit","pipeleaks","weirdsmell","weirdsmell2")
+ switch(commleak)
+ if("thatsmywife")
+ msg("-so then I says to him, |that's no [pick("space carp","space shark","vox","garbage scow","freight liner","cargo hauler","superlifter")], that's my +wife!+| And he-","[prefix] [shipname]")
+ if("missingkit")
+ msg("-did you get the kit from down on deck [rand(1,4)]? I need th-","[prefix] [shipname]")
+ if("pipeleaks")
+ msg("I swear if these pipes keep leaking I'm going to-","[prefix] [shipname]")
+ if("weirdsmell")
+ msg("-and where the hell is that smell coming fr-","[prefix] [shipname]")
+ if("weirdsmell2")
+ msg("-hat in the [pick("three","five","seven","nine")] hells did you |eat| [pick("ensign","crewman")]? This compartment reeks of-","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], your internal comms are leaking[pick("."," again.",", again.",". |Again|.")]")
+ sleep(rand(3,6) SECONDS)
+ msg("Sorry Control, won't happen again.","[prefix] [shipname]")
//DefCon event: hostile found
if("hostiledetected")
var/orders = pick("Engage on sight","Engage with caution","Engage with extreme prejudice","Engage at will","Search and destroy","Bring them in alive, if possible","Interdict and detain","Keep your eyes peeled","Bring them in, dead or alive","Stay alert")
msg("This is [using_map.starsys_name] Defense Control to all SDF assets. Priority update follows.","[using_map.starsys_name] Defense Control")
- sleep(5 SECONDS)
- msg("Be on the lookout for [combined_first_name], last sighted near route [rand(1,100)]. [orders]. DefCon, out.","[using_map.starsys_name] Defense Control")
+ sleep(rand(3,6) SECONDS)
+ msg("Be on the lookout for [combined_first_name], last sighted [pick("near route","in sector","near sector")] [rand(1,100)]. [orders]. DefCon, out.","[using_map.starsys_name] Defense Control")
//Ship event: distress call, under attack
if("distress")
- msg("+Mayday, mayday, mayday!+ This is [combined_first_name] declaring an emergency! We are under attack by [combined_second_name]! Requesting immediate assistance!","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.starsys_name] Defense Control, copy. SDF is en route, contact on [sdfchannel].")
- sleep(5 SECONDS)
- msg("Understood [using_map.starsys_name] Defense Control, switching now.","[prefix] [shipname]")
+ var/state = pick(66;"calm",34;"panic")
+ switch(state)
+ if("calm")
+ msg("[using_map.starsys_name] Defense Control, this is [combined_first_name].","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("We read you. Go ahead, [combined_first_name].","[using_map.starsys_name] Defense Control")
+ sleep(rand(3,6) SECONDS)
+ msg("Another vessel in our area is moving [pick("aggressively","suspiciously","erratically","unpredictably","with clear hostile intent")], please advise? Forwarding sensor data now.","[prefix] [shipname]","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], [using_map.starsys_name] Defense Control copies. Sensor data matches logged profile for [combined_second_name]. SDF units are en route to your location.","[using_map.starsys_name] Defense Control")
+ sleep(rand(3,6) SECONDS)
+ msg("[pick("Appreciated","Copy that","Understood")], Control. Switching to [sdfchannel] to coordinate.","[prefix] [shipname]")
+ if("panic")
+ msg("+Mayday, mayday, mayday!+ This is [combined_first_name] declaring an emergency! We are under attack by [combined_second_name]! Requesting immediate assistance!","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], this is [using_map.starsys_name] Defense Control, copy. SDF is en route, contact on [sdfchannel].")
+ sleep(rand(3,6) SECONDS)
+ msg("[pick("Copy that","Understood")] [using_map.starsys_name] Defense Control, switching now!","[prefix] [shipname]")
//Control event: travel advisory
if("traveladvisory")
- var/flightwarning = pick("Solar flare activity is spiking and expected to cause issues along main flight lanes [rand(1,33)], [rand(34,67)], and [rand(68,100)]","Pirate activity is on the rise, stay close to System Defense vessels","We're seeing a rise in illegal salvage operations, please report any unusual activity to the nearest SDF vessel via channel [sdfchannel]","Vox Marauder activity is higher than usual, report any unusual activity to the nearest System Defense vessel","A quarantined [pick("fleet","convoy")] is passing through the system along route [rand(1,100)], please observe minimum safe distance","A prison [pick("fleet","convoy")] is passing through the system along route [rand(1,100)], please observe minimum safe distance","Traffic volume is higher than normal, expect processing delays","Anomalous bluespace activity detected along route [rand(1,100)], exercise caution","Smugglers have been particularly active lately, expect increased security scans","Depots are currently experiencing a fuel shortage, expect delays and higher rates","Asteroid mining has displaced debris dangerously close to main flight lanes on route [rand(1,100)], watch for potential impactors","[pick("Pirate","Vox Marauder")] and System Defense forces are currently engaged in skirmishes throughout the system, please steer clear of any active combat zones","A [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship")] has collided with a [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship")] near route [rand(1,100)], watch for debris and do not impede emergency service vessels","A [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship")] on route [rand(1,100)] has experienced total engine failure. Emergency response teams are en route, please observe minimum safe distances and do not impede emergency service vessels","Transit routes have been recalculated to adjust for planetary drift. Please synch your astronav computers as soon as possible to avoid delays and difficulties","[pick("Bounty hunters","System Defense officers","Mercenaries")] are currently searching for a wanted fugitive, report any sightings of suspicious activity to System Defense via channel [sdfchannel]","Mercenary contractors are currently conducting aggressive [pick("piracy","marauder")] suppression operations",10;"It's space carp breeding season. [pick("Stars","Gods","God","Goddess")] have mercy on you all, because the carp won't")
+ var/flightwarning = pick("Solar flare activity is spiking and expected to cause issues along main flight lanes [rand(1,33)], [rand(34,67)], and [rand(68,100)]","Pirate activity is on the rise, stay close to System Defense vessels","We're seeing a rise in illegal salvage operations, please report any unusual activity to the nearest SDF vessel via channel [sdfchannel]","Vox Marauder activity is higher than usual, report any unusual activity to the nearest System Defense vessel","A quarantined [pick("fleet","convoy")] is passing through the system along route [rand(1,100)], please observe minimum safe distance","A prison [pick("fleet","convoy")] is passing through the system along route [rand(1,100)], please observe minimum safe distance","Traffic volume is higher than normal, expect processing delays","Anomalous bluespace activity detected [pick("along route [rand(1,100)]","in sector [rand(1,100)]")], exercise caution","Smugglers have been particularly active lately, expect increased security scans","Depots are currently experiencing a fuel shortage, expect delays and higher rates","Asteroid mining has displaced debris dangerously close to main flight lanes on route [rand(1,100)], watch for potential impactors","[pick("Pirate","Vox Marauder")] and System Defense forces are currently engaged in skirmishes throughout the system, please steer clear of any active combat zones","A [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship","mining barge","salvage trawler")] has collided with a [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship","mining barge","salvage trawler")] near route [rand(1,100)], watch for debris and do not impede emergency service vessels","A [pick("fuel tanker","cargo liner","passenger liner","freighter","transport ship","mining barge","salvage trawler")] on route [rand(1,100)] has experienced total engine failure. Emergency response teams are en route, please observe minimum safe distances and do not impede emergency service vessels","Transit routes have been recalculated to adjust for planetary drift. Please synch your astronav computers as soon as possible to avoid delays and difficulties","[pick("Bounty hunters","System Defense officers","Mercenaries")] are currently searching for a wanted fugitive, report any sightings of suspicious activity to System Defense via channel [sdfchannel]","Mercenary contractors are currently conducting aggressive [pick("piracy","marauder")] suppression operations",10;"It's space [pick("carp","shark")] breeding season. [pick("Stars","Skies","Gods","God","Goddess","Fates")] have mercy on you all")
msg("This is [using_map.dock_name] Control to all vessels in the [using_map.starsys_name] system. Priority travel advisory follows.")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[flightwarning]. Control out.")
//Control event: warning to a specific vessel
if("pathwarning")
- var/navhazard = pick("a pocket of intense radiation","a pocket of unstable gas","a debris field","a secure installation","an active combat zone","a quarantined ship","a quarantined installation","a quarantined sector","a live-fire SDF training exercise","an ongoing Search & Rescue operation")
+ var/navhazard = pick("a pocket of intense radiation","a pocket of unstable gas","a debris field","a secure installation","an active combat zone","a quarantined ship","a quarantined installation","a quarantined sector","a live-fire SDF training exercise","an ongoing Search & Rescue operation","a hazardous derelict","an intense electrical storm","an intense ion storm","a shoal of space carp","a pack of space sharks","an asteroid infested with gnat hives","a protected space ray habitat","a region with anomalous bluespace activity","a rogue comet")
var/confirm = pick("Understood","Roger that","Affirmative","Our bad","Thanks for the heads up")
var/safetravels = pick("Fly safe out there","Good luck","Safe travels","Godspeed","Stars guide you","Don't let it happen again")
msg("[combined_first_name], this is [using_map.dock_name] Control, your [pick("ship","vessel","starship")] is approaching [navhazard], observe minimum safe distance and adjust your heading appropriately.")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[confirm] [using_map.dock_name] Control, adjusting course.","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("Your compliance is appreciated, [combined_first_name]. [safetravels].")
//Ship event: docking request (generic)
if("dockingrequestgeneric")
- var/appreciation = pick("Much appreciated","Many thanks","Understood","Cheers")
- var/dockingplan = pick("Starting final approach now.","Commencing landing procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
- msg("[callname], this is [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to [landing_short].","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
- sleep(5 SECONDS)
- msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
- //Ship event: docking request (denied)
- if("dockingrequestdenied")
- var/reason = pick("we don't have any landing pads large enough for your vessel","we don't have the necessary facilities for your vessel type or class")
- var/disappointed = pick("That's unfortunate. [combined_first_name], out.","Damn shame. We'll just have to keep moving. [combined_first_name], out.","[combined_first_name], out.")
- msg("[callname], this is [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to [landing_short].","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Request denied, [reason].")
- sleep(5 SECONDS)
- msg("Understood, [using_map.dock_name] Control. [disappointed]","[prefix] [shipname]")
- //Ship event: docking request (delayed)
- if("dockingrequestdelayed")
- var/reason = pick("we don't have any free landing pads right now, please hold for three minutes","you're too far away, please close to ten thousand meters","we're seeing heavy traffic around the landing pads right now, please hold for three minutes","we're currently cleaning up a fuel spill on one of our free pads, please hold for three minutes","there are loose containers on our free pads, stand by for a couple of minutes whilst we secure them","another vessel has aerospace priority right now, please hold for three minutes")
+ var/request_type = pick(100;"generic",40;"delayed",40;"supply",20;"repair",20;"medical",20;"security")
var/appreciation = pick("Much appreciated","Many thanks","Understood","Perfect, thank you","Excellent, thanks","Great","Copy that")
var/dockingplan = pick("Starting final approach now.","Commencing landing procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
- msg("[callname], this is [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to [landing_short].","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Request denied, [reason] and resubmit your request.")
- sleep(5 SECONDS)
- msg("Understood, [using_map.dock_name] Control.","[prefix] [shipname]")
- sleep(180 SECONDS)
- msg("[callname], this is [combined_first_name], resubmitting [landing_move].","[prefix] [shipname]")
- sleep (5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Everything appears to be in order now, permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
- sleep(5 SECONDS)
- msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
- //Ship event: docking request (resupply)
- if("dockingrequestsupply")
- var/preintensifier = pick(75;"getting ",75;"running ","") //whitespace hack, sometimes they'll add a preintensifier, but not always
- var/intensifier = pick("very","pretty","critically","extremely","dangerously","desperately","kinda","a little","a bit","rather","sorta")
- var/low_thing = pick("ammunition","munitions","clean water","food","spare parts","medical supplies","reaction mass","gas","hydrogen fuel","phoron fuel","fuel",10;"tea",10;"coffee",10;"soda",10;"pizza",10;"beer",10;"booze",10;"vodka",10;"snacks") //low chance of a less serious shortage
- var/appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
- var/dockingplan = pick("Starting final approach now.","Commencing landing procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
- msg("[callname], this is [combined_first_name]. We're [preintensifier][intensifier] low on [low_thing]. Requesting permission to [landing_short] for resupply.","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
- sleep(5 SECONDS)
- msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
- //Ship event: docking request (repair/maint)
- if("dockingrequestrepair")
- var/damagestate = pick("We've experienced some hull damage","We're suffering minor system malfunctions","We're having some technical issues","We're overdue maintenance","We have several minor space debris impacts","We've got some battle damage here","Our reactor output is fluctuating","We're hearing some weird noises from the [pick("engines","pipes","ducting","HVAC")]","Our artificial gravity generator has failed","Our life support is failing","Our environmental controls are busted","Our water recycling system has shorted out","Our navcomp is freaking out","Our systems are glitching out","We just got caught in a solar flare","We had a close call with an asteroid","We have a minor [pick("fuel","water","oxygen","gas")] leak","We have depressurized compartments","We have a hull breach","Our shield generator is on the fritz","Our RCS is acting up","One of our [pick("hydraulic","pneumatic")] systems has depressurized","Our repair bots are malfunctioning")
- var/appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
- var/dockingplan = pick("Starting final approach now.","Commencing landing procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
- msg("[callname], this is [combined_first_name]. [damagestate]. Requesting permission to [landing_short] for repairs and maintenance.","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Repair crews are standing by, contact them on channel [engchannel].")
- sleep(5 SECONDS)
- msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
- //Ship event: docking request (medical)
- if("dockingrequestmedical")
- var/medicalstate = pick("multiple casualties","several cases of radiation sickness","an unknown virus","an unknown infection","a critically injured VIP","sick refugees","multiple cases of food poisoning","injured passengers","sick passengers","injured engineers","wounded marines","a delicate situation","a pregnant passenger","injured castaways","recovered escape pods","unknown escape pods")
- var/appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
- var/dockingplan = pick("Starting final approach now.","Commencing landing procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
- msg("[callname], this is [combined_first_name]. We have [medicalstate] on board. Requesting permission to [landing_short] for medical assistance.","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Medtechs are standing by, contact them on channel [medchannel].")
- sleep(5 SECONDS)
- msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
- //Ship event: docking request (security)
- if("dockingrequestsecurity")
- var/species = pick("human","unathi","lizard","tajaran","feline","skrell","akula","promethean","sergal","synthetic","robotic","teshari","avian","vulpkanin","canine","vox","zorren","hybrid","mixed-species","vox","grey","alien")
- var/securitystate = pick("several [species] convicts","a captured pirate","a wanted criminal","[species] stowaways","incompetent [species] shipjackers","a delicate situation","a disorderly passenger","disorderly [species] passengers","ex-mutineers","a captured vox marauder","captured vox marauders","stolen goods","a container full of confiscated contraband","containers full of confiscated contraband",5;"a very lost shadekin",5;"a raging case of [pick("spiders","crabs")]") //gotta have a little something to lighten the mood now and then
- var/appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","Perfect, thank you")
- var/dockingplan = pick("Starting final approach now.","Commencing docking procedures.","Autopilot engaged.","Approach vector locked in.","In the pipe, five by five.")
- msg("[callname], this is [combined_first_name]. We have [securitystate] on board and require security assistance. Requesting permission to [landing_short].","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Security teams are standing by, contact them on channel [secchannel].")
- sleep(5 SECONDS)
+ switch(request_type)
+ if("generic")
+ msg("[callname], this is [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to [landing_short].","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
+ if("delayed")
+ var/reason = pick("we don't have any free landing pads right now, please hold for a few minutes","you're too far away, please close to ten thousand meters","we're seeing heavy traffic around the landing pads right now, please hold for a few minutes","we're currently cleaning up a fuel spill on one of our free pads, please hold for a few minutes","there are loose containers on our free pads, stand by for a couple of minutes whilst we secure them","another vessel has aerospace priority right now, please hold for a few minutes")
+ msg("[callname], this is [combined_first_name], [pick("stopping by","passing through")] on our way to [destname], requesting permission to [landing_short].","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Request denied, [reason] and resubmit your request.")
+ sleep(rand(3,6) SECONDS)
+ msg("Understood, [using_map.dock_name] Control.","[prefix] [shipname]")
+ sleep(rand(3,6)*60 SECONDS)
+ msg("[callname], this is [combined_first_name], resubmitting [landing_move].","[prefix] [shipname]")
+ sleep (5 SECONDS)
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Everything appears to be in order now, permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
+ if("supply")
+ var/preintensifier = pick(75;"getting ",75;"running ","",15;"like, ") //whitespace hack, sometimes they'll add a preintensifier, but not always
+ var/intensifier = pick("very","pretty","critically","extremely","dangerously","desperately","kinda","a little","a bit","rather","sorta")
+ var/low_thing = pick("ammunition","munitions","clean water","food","spare parts","medical supplies","reaction mass","gas","hydrogen fuel","phoron fuel","fuel",10;"tea",10;"coffee",10;"soda",10;"pizza",10;"beer",10;"booze",10;"vodka",10;"snacks") //low chance of a less serious shortage
+ appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
+ msg("[callname], this is [combined_first_name]. We're [preintensifier][intensifier] low on [low_thing]. Requesting permission to [landing_short] for resupply.","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in.")
+ if("repair")
+ var/damagestate = pick("We've experienced some hull damage","We're suffering minor system malfunctions","We're having some [pick("weird","strange","odd","unusual")] technical issues","We're overdue maintenance","We have several minor space debris impacts","We've got some battle damage here","Our reactor output is fluctuating","We're hearing some weird noises from the [pick("engines","pipes","ducting","HVAC")]","We just got caught in a solar flare","We had a close call with an asteroid","We have a minor [pick("fuel","water","oxygen","gas")] leak","We have depressurized compartments","We have a hull breach","One of our [pick("hydraulic","pneumatic")] systems has depressurized","Our [pick("life support","water recycling system","navcomp","shield generator","RCS","auto-repair system","artificial gravity generator","environmental control system")] is [pick("failing","acting up","on the fritz","shorting out","glitching out","freaking out","malfunctioning")]")
+ appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
+ msg("[callname], this is [combined_first_name]. [damagestate]. Requesting permission to [landing_short] for repairs and maintenance.","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Repair crews are standing by, contact them on channel [engchannel].")
+ if("medical")
+ var/species = pick("human","humanoid","unathi","lizard","tajaran","feline","skrell","akula","promethean","sergal","synthetic","robotic","teshari","avian","vulpkanin","canine","vox","zorren","hybrid","mixed-species","vox","grey","alien",5;"catslug")
+ var/medicalstate = pick("multiple casualties","several cases of radiation sickness","an unknown virus","an unknown infection","a critically injured VIP","sick refugees","multiple cases of food poisoning","injured [pick("","[species] ")]passengers","sick [pick("","[species] ")]passengers","injured engineers","wounded marines","a delicate situation","a pregnant passenger","injured [pick("","[species] ")]castaways","recovered escape pods","unknown escape pods")
+ appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","We owe you one","I owe you one","Perfect, thank you")
+ msg("[callname], this is [combined_first_name]. We have [medicalstate] on board. Requesting permission to [landing_short] for medical assistance.","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Medtechs are standing by, contact them on channel [medchannel].")
+ if("security")
+ var/species = pick("human","humanoid","unathi","lizard","tajaran","feline","skrell","akula","promethean","sergal","synthetic","robotic","teshari","avian","vulpkanin","canine","vox","zorren","hybrid","mixed-species","vox","grey","alien",5;"catslug")
+ var/securitystate = pick("several [species] convicts","a captured pirate","a wanted criminal","[species] stowaways","incompetent [species] shipjackers","a delicate situation","a disorderly passenger","disorderly [species] passengers","ex-mutineers","a captured vox marauder","captured vox marauders","stolen goods","[pick("a container","containers")] full of [pick("confiscated contraband","stolen goods")]",5;"a very lost shadekin",15;"a buncha lost-looking uh... cat... slug... |things?|",10;"a raging case of [pick("spiders","crabs","geese","gnats","sharks","carp")]") //gotta have a little something to lighten the mood now and then
+ appreciation = pick("Much appreciated","Many thanks","Understood","You're a lifesaver","Perfect, thank you")
+ msg("[callname], this is [combined_first_name]. We have [securitystate] on board and require security assistance. Requesting permission to [landing_short].","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted, proceed to [landing_zone]. Follow the green lights on your way in. Security teams are standing by, contact them on channel [secchannel].")
+ sleep(rand(3,6) SECONDS)
msg("[appreciation], [using_map.dock_name] Control. [dockingplan]","[prefix] [shipname]")
//Ship event: undocking request
if("undockingrequest")
+ var/request_type = pick(150;"generic",50;"delayed")
+ var/takeoff = pick("depart","launch")
var/safetravels = pick("Fly safe out there","Good luck","Safe travels","See you next week","Godspeed","Stars guide you")
var/thanks = pick("Appreciated","Thanks","Don't worry about us","We'll be fine","You too","So long")
- var/takeoff = pick("depart","launch")
msg("[callname], this is [combined_first_name], requesting permission to [takeoff] from [landing_zone].","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted. Docking clamps released. [safetravels].")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
+ switch(request_type)
+ if("generic")
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted. Docking clamps released. [safetravels].")
+ sleep(rand(3,6) SECONDS)
+ msg("[thanks], [using_map.dock_name] Control. This is [combined_first_name] setting course for [destname], out.","[prefix] [shipname]")
+ if("delayed")
+ var/denialreason = pick("Docking clamp malfunction, please hold","Fuel lines have not been secured","Ground crew are still on the pad","Loose containers are on the pad","Exhaust deflectors are not yet in position, please hold","There's heavy traffic right now, it's not safe for your vessel to launch","Another vessel has aerospace priority at this moment","Port officials are still aboard")
+ msg("Negative [combined_first_name], request denied. [denialreason]. Try again in a few minutes.")
+ sleep(rand(3,6)*60 SECONDS)
+ msg("[callname], this is [combined_first_name], re-requesting permission to depart from [landing_zone].","[prefix] [shipname]")
+ sleep(rand(3,6) SECONDS)
+ msg("[combined_first_name], this is [using_map.dock_name] Control. Everything appears to be in order now, permission granted. Docking clamps released. [safetravels].")
+ sleep(rand(3,6) SECONDS)
msg("[thanks], [using_map.dock_name] Control. This is [combined_first_name] setting course for [destname], out.","[prefix] [shipname]")
//SDF event: starting patrol
if("sdfbeginpatrol")
@@ -370,51 +405,36 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
var/thanks = pick("Appreciated","Thanks","Don't worry about us","We'll be fine","You too")
var/takeoff = pick("depart","launch","take off","dust off")
msg("[callname], this is [combined_first_name], requesting permission to [takeoff] from [landing_zone] to begin system patrol.","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[combined_first_name], this is [using_map.dock_name] Control. Permission granted. Docking clamps released. [safetravels].")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[thanks], [using_map.dock_name] Control. This is [combined_first_name] beginning system patrol, out.","[prefix] [shipname]")
//Ship event: undocking request (denied)
if("undockingdenied")
var/takeoff = pick("depart","launch")
var/denialreason = pick("Security is requesting a full cargo inspection","Your ship has been impounded for multiple [pick("security","safety")] violations","Your ship is currently under quarantine lockdown","We have reason to believe there's an issue with your papers","Security personnel are currently searching for a fugitive and have ordered all outbound ships remain grounded until further notice")
msg("[callname], this is [combined_first_name], requesting permission to [takeoff] from [landing_zone].","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("Negative [combined_first_name], request denied. [denialreason].")
- //Ship event: undocking request (delayed)
- if("undockingdelayed")
- var/denialreason = pick("Docking clamp malfunction, please hold","Fuel lines have not been secured","Ground crew are still on the pad","Loose containers are on the pad","Exhaust deflectors are not yet in position, please hold","There's heavy traffic right now, it's not safe for your vessel to launch","Another vessel has aerospace priority at this moment","Port officials are still aboard")
- var/takeoff = pick("depart","launch")
- var/safetravels = pick("Fly safe out there","Good luck","Safe travels","See you next week","Godspeed","Stars guide you")
- var/thanks = pick("Appreciated","Thanks","Don't worry about us","We'll be fine","You too","So long")
- msg("[callname], this is [combined_first_name], requesting permission to [takeoff] from [landing_zone].","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("Negative [combined_first_name], request denied. [denialreason]. Try again in three minutes.")
- sleep(180 SECONDS) //yes, three minutes
- msg("[callname], this is [combined_first_name], re-requesting permission to depart from [landing_zone].","[prefix] [shipname]")
- sleep(5 SECONDS)
- msg("[combined_first_name], this is [using_map.dock_name] Control. Everything appears to be in order now, permission granted. Docking clamps released. [safetravels].")
- sleep(5 SECONDS)
- msg("[thanks], [using_map.dock_name] Control. This is [combined_first_name] setting course for [destname], out.","[prefix] [shipname]")
if("slogan")
msg("The following is a sponsored message from [name].","Facility PA")
- sleep (5 SECONDS)
+ sleep(5 SECONDS)
msg("[slogan]","Facility PA")
else //time for generic message
msg("[callname], this is [combined_first_name] on [mission] [pick(mission_noun)] to [destname], requesting [request].","[prefix] [shipname]")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[combined_first_name], this is [using_map.dock_name] Control, [response].")
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
msg("[using_map.dock_name] Control, [yes ? "thank you" : "understood"], out.","[prefix] [shipname]")
return //oops, forgot to restore this
/* //OLD BLOCK, for reference
//Ship sends request to ATC
msg(full_request,"[prefix] [shipname]"
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
//ATC sends response to ship
msg(full_response)
- sleep(5 SECONDS)
+ sleep(rand(3,6) SECONDS)
//Ship sends response to ATC
msg(full_closure,"[prefix] [shipname]")
return
diff --git a/code/modules/busy_space_vr/organizations.dm b/code/modules/busy_space_vr/organizations.dm
index a4b1bc88162..c625a2d34c1 100644
--- a/code/modules/busy_space_vr/organizations.dm
+++ b/code/modules/busy_space_vr/organizations.dm
@@ -11,12 +11,12 @@
var/list/ship_prefixes = list() //Some might have more than one! Like NanoTrasen. Value is the mission they perform, e.g. ("ABC" = "mission desc")
var/complex_tasks = FALSE //enables complex task generation
-
+
//how does it work? simple: if you have complex tasks enabled, it goes; PREFIX + TASK_TYPE + FLIGHT_TYPE
//e.g. NDV = Asset Protection + Patrol + Flight
//this overrides the standard PREFIX = TASK logic and allows you to use the ship prefix for subfactions (warbands, religions, whatever) within a faction, and define task_types at the faction level
//task_types are picked from completely at random in air_traffic.dm, much like flight_types, so be careful not to potentially create combos that make no sense!
-
+
var/list/task_types = list(
"logistics",
"patrol",
@@ -183,7 +183,8 @@
"Cwn Annwn",
"Morning Swan",
"Black Cat",
- "Challenger"
+ "Challenger",
+ "Savage Chicken"
)
var/list/destination_names = list() //Names of static holdings that the organization's ships visit regularly.
@@ -192,7 +193,7 @@
var/org_type = "neutral" //Valid options are "neutral", "corporate", "government", "system defense", "military, "smuggler", & "pirate"
var/sysdef = FALSE //Are we the space cops?
var/autogenerate_destination_names = TRUE //Pad the destination lists with some extra random ones? see the proc below for info on that
-
+
var/slogans = list("This is a placeholder slogan, ding dong!") //Advertising slogans. Who doesn't want more obnoxiousness on the radio? Picked at random each time the slogan event fires. This has a placeholder so it doesn't runtime on trying to draw from a 0-length list in the event that new corps are added without full support.
/datum/lore/organization/New()
@@ -309,8 +310,8 @@
them being the foremost experts on the substance and its uses. In the modern day, NanoTrasen prides \
itself on being an early adopter to as many new technologies as possible, often offering the newest \
products to their employees. In an effort to combat complaints about being 'guinea pigs', Nanotrasen \
- also offers one of the most comprehensive medical plans in Commonwealth space, up to and including cloning \
- and therapy.\
+ also offers one of the most comprehensive medical plans in Commonwealth space, up to and including cloning, \
+ resleeving, and therapy.\
\
NT's most well known products are its phoron based creations, especially those used in Cryotherapy. \
It also boasts a prosthetic line, which is provided to its employees as needed, and is used as an incentive \
@@ -403,9 +404,9 @@
org_type = "corporate"
slogans = list(
- "Hephaestus Arms - When it comes to personal protection, nobody does it better.",
- "Hephaestus Arms - Peace through Superior Firepower.",
- "Hephaestus Arms - Don't be caught firing blanks."
+ "+Hephaestus Arms!+ - When it comes to +personal protection+, +nobody+ does it +better+.",
+ "+Hephaestus Arms!+ - Peace through +Superior Firepower+.",
+ "+Hephaestus Arms!+ - Don't be caught +firing blanks+."
)
ship_prefixes = list("HCV" = "a general operations", "HTV" = "a freight", "HLV" = "a munitions resupply", "HDV" = "an asset protection", "HDV" = "a preemptive deployment")
//War God Theme, updated
@@ -503,7 +504,7 @@
and everything in between. Their equipment tends to be top-of-the-line, most obviously shown by their incredibly \
human-like FBP designs. Vey's rise to stardom came from their introduction of resurrective cloning, although in \
recent years they've been forced to diversify as their patents expired and NanoTrasen-made medications became \
- essential to modern cloning. \
+ essential to modern cloning and resleeving procedures. \
\
For reasons known only to the board, Vey-Med's ship names seem to follow the same naming pattern as the Dionae use."
history = ""
@@ -719,7 +720,8 @@
slogans = list(
"Bishop Cybernetics - only the best in personal augmentation.",
"Bishop Cybernetics - why settle for flesh when you can have metal?",
- "Bishop Cybernetics - make a statement."
+ "Bishop Cybernetics - make a statement.",
+ "Bishop Cybernetics - embrace the purity of the machine."
)
ship_prefixes = list("BCV" = "a general operations", "BCTV" = "a transportation", "BCSV" = "a research exchange")
//famous mechanical engineers
@@ -957,6 +959,7 @@
slogans = list(
"The FTU. We look out for the little guy.",
"There's no Trade like Free Trade.",
+ "There's no Union like the Free Trade Union.",
"Join the Free Trade Union. Because anything worth doing, is worth doing for money." //rule of acquisition #13
)
ship_prefixes = list("FTV" = "a general operations", "FTRP" = "a trade protection", "FTRR" = "a piracy suppression", "FTLV" = "a logistical support", "FTTV" = "a mercantile", "FTDV" = "a market establishment")
@@ -1333,6 +1336,7 @@
slogans = list(
"Oculum - All News, All The Time.",
"Oculum - We Keep An Eye Out.",
+ "Oculum - Nothing But The Truth.",
"Oculum - Your Eye On The Galaxy."
)
ship_prefixes = list("OBV" = "an investigation", "OBV" = "a distribution", "OBV" = "a journalism", "OBV" = "a general operations")
@@ -1354,7 +1358,9 @@
slogans = list(
"Centauri Provisions Bread Tubes - They're Not Just Edible, They're |Breadible!|",
"Centauri Provisions SkrellSnax - Not |Just| For Skrell!",
- "Centauri Provisions Space Mountain Wind - It'll Take Your |Breath| Away!"
+ "Centauri Provisions Space Mountain Wind - It'll Take Your |Breath| Away!",
+ "Centauri Provisions Syndi-Cakes - A Taste So Good You'll Swear It's |Illegal|!",
+ "Centauri Provisions Tuna Snax - There's Nothing |Fishy| Going On Here!"
)
ship_prefixes = list("CPTV" = "a transport", "CPCV" = "a catering", "CPRV" = "a resupply", "CPV" = "a general operations")
destination_names = list(
@@ -1620,7 +1626,7 @@
"Vampir",
"Wendigo",
"Werewolf",
- "Wraith"
+ "Wraith"
)
destination_names = list (
"Chimera HQ, Titan",
@@ -2186,23 +2192,40 @@
org_type = "pirate"
ship_prefixes = list("Ue-Katish pirate" = "a raiding", "Ue-Katish bandit" = "a raiding", "Ue-Katish raider" = "a raiding", "Ue-Katish enforcer" = "an enforcement")
- ship_names = list(
- "Keqxuer'xeu's Prize",
- "Xaeker'qux' Bounty",
- "Teq'ker'qerr's Mercy",
- "Ke'teq's Thunder",
- "Xumxerr's Compass",
- "Xue'qux' Greed",
- "Xaexuer's Slave",
- "Xue'taq's Dagger",
- "Teqxae's Madness",
- "Taeqtaq'kea's Pride",
- "Keqxae'xeu's Saber",
- "Xueaeq's Disgrace",
- "Xum'taq'qux' Star",
- "Ke'xae'xe's Scream",
- "Keq'keax' Blade"
+ ship_names = list()
+
+/datum/lore/organization/other/uekatish/New()
+ ..()
+ var/i = 20 //give us twenty random names
+ var/list/first_names = file2list('config/names/first_name_skrell.txt')
+ var/list/words = list(
+ "Prize",
+ "Bounty",
+ "Treasure",
+ "Pearl",
+ "Star",
+ "Mercy",
+ "Compass",
+ "Greed",
+ "Slave",
+ "Madness",
+ "Pride",
+ "Disgrace",
+ "Judgement",
+ "Wrath",
+ "Hatred",
+ "Vengeance",
+ "Fury",
+ "Thunder",
+ "Scream",
+ "Dagger",
+ "Saber",
+ "Lance",
+ "Blade"
)
+ while(i)
+ ship_names.Add("[pick(first_names)] [pick(words)]")
+ i--
/datum/lore/organization/other/marauders
name = "Vox Marauders"
@@ -2222,12 +2245,7 @@
org_type = "pirate"
ship_prefixes = list("vox marauder" = "a marauding", "vox raider" = "a raiding", "vox ravager" = "a raiding", "vox corsair" = "a raiding") //as assigned by control, second part shouldn't even come up
//blank out our shipnames for redesignation
- ship_names = list(
- )
- /*
- destination_names = list(
- )
- */
+ ship_names = list()
/datum/lore/organization/other/marauders/New()
..()
@@ -2635,26 +2653,7 @@
//the tesh expeditionary fleet's closest analogue in modern terms would be the US Army Corps of Engineers, just with added combat personnel as well
ship_prefixes = list("TEF" = "a diplomatic", "TEF" = "a peacekeeping", "TEF" = "an escort", "TEF" = "an exploration", "TEF" = "a survey", "TEF" = "an expeditionary", "TEF" = "a pioneering")
//TODO: better ship names? I just took a bunch of random teshnames from the Random Name button and added a word.
- ship_names = list(
- "Leniri's Hope",
- "Tatani's Venture",
- "Ninai's Voyage",
- "Miiescha's Claw",
- "Ishena's Talons",
- "Lili's Fang",
- "Taalische's Wing",
- "Cami's Pride",
- "Schemisa's Glory",
- "Shilirashi's Wit",
- "Sanene's Insight",
- "Aeimi's Wisdom",
- "Ischica's Mind",
- "Recite's Cry",
- "Leseca's Howl",
- "Iisi's Fury",
- "Simascha's Revenge",
- "Lisascheca's Vengeance"
- )
+ ship_names = list()
destination_names = list(
"an Expeditionary Fleet RV point",
"an Expeditionary Fleet Resupply Ship",
@@ -2665,14 +2664,59 @@
"Expeditionary Fleet HQ"
)
+/datum/lore/organization/gov/teshari/New()
+ ..()
+ var/i = 20 //give us twenty random names
+ var/list/first_names = list(
+ "Leniri's",
+ "Tatani's",
+ "Ninai's",
+ "Miiescha's",
+ "Ishena's",
+ "Taalische's",
+ "Cami's",
+ "Schemisa's",
+ "Shilirashi's",
+ "Sanene's",
+ "Aeimi's",
+ "Ischica's",
+ "Shasche's",
+ "Leseca's",
+ "Iisi's",
+ "Simascha's",
+ "Lisascheca's"
+ )
+ var/list/words = list(
+ "Hope",
+ "Venture",
+ "Voyage",
+ "Talons",
+ "Fang",
+ "Wing",
+ "Pride",
+ "Glory",
+ "Wit",
+ "Insight",
+ "Wisdom",
+ "Mind",
+ "Cry",
+ "Howl",
+ "Fury",
+ "Revenge",
+ "Vengeance"
+ )
+ while(i)
+ ship_names.Add("[pick(first_names)] [pick(words)]")
+ i--
+
/datum/lore/organization/gov/altevian_hegemony
- name = "The Altevian Hegemony"
+ name = "The Altevian Hegemony"
short_name = "Altevian Hegemony "
acronym = "AH"
desc = "The Altevians are a space-faring race of rodents that resemble Earth-like rats. \
They do not have a place they call home in terms of a planet, and instead have massive multiple-kilometer-long colony-ships \
- that are constantly on the move and typically keep operations outside of known populated systems to not eat the resources from others. \
- Their primary focus is trade and slavage operations and can be expected to be seen around both densely populated and empty systems for their work."
+ that are constantly on the move and typically keep operations outside of known populated systems to minimize potential conflicts over resources. \
+ Their primary focus is trade and salvage operations, and their ships can be expected to be seen around both densely populated and empty systems for their work."
history = ""
work = "salvage and trade operators"
headquarters = "AH-CV Migrant"
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index 99d56623b3c..8c624ff3691 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -448,7 +448,7 @@
src << browse('code/modules/asset_cache/validate_assets.html', "window=asset_cache_browser")
//Precache the client with all other assets slowly, so as to not block other browse() calls
- addtimer(CALLBACK(GLOBAL_PROC, /proc/getFilesSlow, src, SSassets.preload, FALSE), 5 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(getFilesSlow), src, SSassets.preload, FALSE), 5 SECONDS)
/mob/proc/MayRespawn()
return 0
diff --git a/code/modules/client/preference_setup/loadout/loadout_mask.dm b/code/modules/client/preference_setup/loadout/loadout_mask.dm
index 79cced4864a..3531cfff729 100644
--- a/code/modules/client/preference_setup/loadout/loadout_mask.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_mask.dm
@@ -68,11 +68,11 @@
for(var/gaiter in typesof(/obj/item/clothing/accessory/gaiter))
var/obj/item/clothing/accessory/gaiter_type = gaiter
gaiters[initial(gaiter_type.name)] = gaiter_type
- gear_tweaks += new/datum/gear_tweak/path(sortTim(gaiters, /proc/cmp_text_asc))
+ gear_tweaks += new/datum/gear_tweak/path(sortTim(gaiters, GLOBAL_PROC_REF(cmp_text_asc)))
/datum/gear/mask/lace
display_name = "lace veil"
path = /obj/item/clothing/mask/lacemask
/datum/gear/mask/lace/New()
- gear_tweaks += gear_tweak_free_color_choice
\ No newline at end of file
+ gear_tweaks += gear_tweak_free_color_choice
diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm
index b9cb44faea0..4aaff663542 100644
--- a/code/modules/clothing/under/accessories/accessory_vr.dm
+++ b/code/modules/clothing/under/accessories/accessory_vr.dm
@@ -127,7 +127,7 @@
usr.audible_message("[usr] jingles the [src]'s bell.", runemessage = "jingle")
playsound(src, 'sound/items/pickup/ring.ogg', 50, 1)
jingled = 1
- addtimer(CALLBACK(src, .proc/jingledreset), 50)
+ addtimer(CALLBACK(src, PROC_REF(jingledreset)), 50)
return
/obj/item/clothing/accessory/collar/bell/proc/jingledreset()
@@ -721,4 +721,4 @@
name = "drab crop jacket"
desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. This one's a sort of olive-drab kind of colour."
icon_state = "cropjacket_drab"
- item_state = "cropjacket_drab"
\ No newline at end of file
+ item_state = "cropjacket_drab"
diff --git a/code/modules/economy/vending.dm b/code/modules/economy/vending.dm
index 929023ce86d..e17d5c951f7 100644
--- a/code/modules/economy/vending.dm
+++ b/code/modules/economy/vending.dm
@@ -619,7 +619,7 @@ GLOBAL_LIST_EMPTY(vending_products)
use_power(vend_power_usage) //actuators and stuff
flick("[icon_state]-vend",src)
- addtimer(CALLBACK(src, .proc/delayed_vend, R, user), vend_delay)
+ addtimer(CALLBACK(src, PROC_REF(delayed_vend), R, user), vend_delay)
/obj/machinery/vending/proc/delayed_vend(datum/stored_item/vending_product/R, mob/user)
R.get_product(get_turf(src))
@@ -777,7 +777,7 @@ GLOBAL_LIST_EMPTY(vending_products)
if(!throw_item)
return FALSE
throw_item.vendor_action(src)
- INVOKE_ASYNC(throw_item, /atom/movable.proc/throw_at, target, rand(3, 10), rand(1, 3), src)
+ INVOKE_ASYNC(throw_item, TYPE_PROC_REF(/atom/movable, throw_at), target, rand(3, 10), rand(1, 3), src)
visible_message("\The [src] launches \a [throw_item] at \the [target]!")
return 1
diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm
index 48244e3ff99..0b12a5cdcce 100644
--- a/code/modules/economy/vending_machines_vr.dm
+++ b/code/modules/economy/vending_machines_vr.dm
@@ -3519,6 +3519,8 @@
/obj/item/weapon/reagent_containers/food/snacks/ratfruitcake = 15,
/obj/item/weapon/reagent_containers/food/snacks/ratpackburger = 8,
/obj/item/weapon/reagent_containers/food/snacks/ratpackcheese = 8,
+ /obj/item/weapon/reagent_containers/food/snacks/ratpackramen = 8,
+ /obj/item/weapon/reagent_containers/food/snacks/ratpacktaco = 8,
/obj/item/weapon/reagent_containers/food/snacks/ratpackturkey = 2)
prices = list(/obj/item/weapon/reagent_containers/food/snacks/ratprotein = 8,
@@ -3527,4 +3529,6 @@
/obj/item/weapon/reagent_containers/food/snacks/ratfruitcake = 8,
/obj/item/weapon/reagent_containers/food/snacks/ratpackburger = 10,
/obj/item/weapon/reagent_containers/food/snacks/ratpackcheese = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/ratpackramen = 10,
+ /obj/item/weapon/reagent_containers/food/snacks/ratpacktaco = 10,
/obj/item/weapon/reagent_containers/food/snacks/ratpackturkey = 200)
diff --git a/code/modules/eventkit/gm_interfaces/mob_spawner.dm b/code/modules/eventkit/gm_interfaces/mob_spawner.dm
index 43cd6dfb2ff..568875065f8 100644
--- a/code/modules/eventkit/gm_interfaces/mob_spawner.dm
+++ b/code/modules/eventkit/gm_interfaces/mob_spawner.dm
@@ -24,8 +24,6 @@
/datum/eventkit/mob_spawner/tgui_static_data(mob/user)
var/list/data = list()
- data["mob_paths"] = typesof(/mob);
-
data["initial_x"] = usr.x;
data["initial_y"] = usr.y;
data["initial_z"] = usr.z;
@@ -43,12 +41,13 @@
data["path"] = path;
- var/mob/M = new path();
- if(M)
- data["default_path_name"] = M.name;
- data["default_desc"] = M.desc;
- data["default_flavor_text"] = M.flavor_text;
- qdel(M);
+ if(path)
+ var/mob/M = new path();
+ if(M)
+ data["default_path_name"] = M.name;
+ data["default_desc"] = M.desc;
+ data["default_flavor_text"] = M.flavor_text;
+ qdel(M);
return data
@@ -60,7 +59,11 @@
return
switch(action)
if("select_path")
- path = params["path"]
+ var/list/choices = typesof(/mob)
+ var/newPath = tgui_input_list(usr, "Please select the new path of the mob you want to spawn.", items = choices)
+
+ path = newPath
+
return TRUE
if("loc_lock")
loc_lock = !loc_lock
@@ -77,6 +80,10 @@
var/y = params["y"]
var/z = params["z"]
+ if(!name)
+ to_chat(usr, "Name cannot be empty.")
+ return FALSE
+
var/turf/T = locate(x, y, z)
if(!T)
to_chat(usr, "Those coordinates are outside the boundaries of the map.")
diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm
index 7f991b44fc2..5f7640b3216 100644
--- a/code/modules/events/carp_migration.dm
+++ b/code/modules/events/carp_migration.dm
@@ -69,7 +69,7 @@
// Spawn a single carp at given location.
/datum/event/carp_migration/proc/spawn_one_carp(var/loc)
var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/carp/event(loc)
- GLOB.destroyed_event.register(M, src, .proc/on_carp_destruction)
+ GLOB.destroyed_event.register(M, src, PROC_REF(on_carp_destruction))
spawned_carp.Add(M)
return M
@@ -83,7 +83,7 @@
// If carp is bomphed, remove it from the list.
/datum/event/carp_migration/proc/on_carp_destruction(var/mob/M)
spawned_carp -= M
- GLOB.destroyed_event.unregister(M, src, .proc/on_carp_destruction)
+ GLOB.destroyed_event.unregister(M, src, PROC_REF(on_carp_destruction))
/datum/event/carp_migration/end()
. = ..()
diff --git a/code/modules/events/gnat_migration.dm b/code/modules/events/gnat_migration.dm
index e807f85b3c6..8d0428eab8e 100644
--- a/code/modules/events/gnat_migration.dm
+++ b/code/modules/events/gnat_migration.dm
@@ -69,7 +69,7 @@
// Spawn a single gnat at given location.
/datum/event/gnat_migration/proc/spawn_one_gnat(var/loc)
var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/gnat(loc)
- GLOB.destroyed_event.register(M, src, .proc/on_gnat_destruction)
+ GLOB.destroyed_event.register(M, src, PROC_REF(on_gnat_destruction))
spawned_gnat.Add(M)
return M
@@ -83,7 +83,7 @@
// If gnat is bomphed, remove it from the list.
/datum/event/gnat_migration/proc/on_gnat_destruction(var/mob/M)
spawned_gnat -= M
- GLOB.destroyed_event.unregister(M, src, .proc/on_gnat_destruction)
+ GLOB.destroyed_event.unregister(M, src, PROC_REF(on_gnat_destruction))
/datum/event/gnat_migration/end()
. = ..()
diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm
index d0d221d5fd1..17fcdec8d67 100644
--- a/code/modules/events/infestation.dm
+++ b/code/modules/events/infestation.dm
@@ -53,7 +53,7 @@
// Spawn a single vermin at given location.
/datum/event/infestation/proc/spawn_one_vermin(var/loc)
var/mob/living/simple_mob/animal/M = new spawn_types(loc)
- GLOB.destroyed_event.register(M, src, .proc/on_vermin_destruction)
+ GLOB.destroyed_event.register(M, src, PROC_REF(on_vermin_destruction))
spawned_vermin.Add(M)
return M
@@ -67,7 +67,7 @@
// If vermin is kill, remove it from the list.
/datum/event/infestation/proc/on_vermin_destruction(var/mob/M)
spawned_vermin -= M
- GLOB.destroyed_event.unregister(M, src, .proc/on_vermin_destruction)
+ GLOB.destroyed_event.unregister(M, src, PROC_REF(on_vermin_destruction))
@@ -75,4 +75,4 @@
command_announcement.Announce("Bioscans indicate that [vermstring] have been breeding all over the facility. Clear them out, before this starts to affect productivity.", "Vermin infestation")
#undef VERM_MICE
-#undef VERM_LIZARDS
\ No newline at end of file
+#undef VERM_LIZARDS
diff --git a/code/modules/events/jellyfish_migration.dm b/code/modules/events/jellyfish_migration.dm
index 7498539ae14..0a0f6394517 100644
--- a/code/modules/events/jellyfish_migration.dm
+++ b/code/modules/events/jellyfish_migration.dm
@@ -69,7 +69,7 @@
// Spawn a single jellyfish at given location.
/datum/event/jellyfish_migration/proc/spawn_one_jellyfish(var/loc)
var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/vore/alienanimals/space_jellyfish(loc)
- GLOB.destroyed_event.register(M, src, .proc/on_jellyfish_destruction)
+ GLOB.destroyed_event.register(M, src, PROC_REF(on_jellyfish_destruction))
spawned_jellyfish.Add(M)
return M
@@ -83,7 +83,7 @@
// If jellyfish is bomphed, remove it from the list.
/datum/event/jellyfish_migration/proc/on_jellyfish_destruction(var/mob/M)
spawned_jellyfish -= M
- GLOB.destroyed_event.unregister(M, src, .proc/on_jellyfish_destruction)
+ GLOB.destroyed_event.unregister(M, src, PROC_REF(on_jellyfish_destruction))
/datum/event/jellyfish_migration/end()
. = ..()
diff --git a/code/modules/events/ray_migration.dm b/code/modules/events/ray_migration.dm
index 3df3971a814..559f77169bb 100644
--- a/code/modules/events/ray_migration.dm
+++ b/code/modules/events/ray_migration.dm
@@ -69,7 +69,7 @@
// Spawn a single ray at given location.
/datum/event/ray_migration/proc/spawn_one_ray(var/loc)
var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/ray(loc)
- GLOB.destroyed_event.register(M, src, .proc/on_ray_destruction)
+ GLOB.destroyed_event.register(M, src, PROC_REF(on_ray_destruction))
spawned_ray.Add(M)
return M
@@ -83,7 +83,7 @@
// If ray is bomphed, remove it from the list.
/datum/event/ray_migration/proc/on_ray_destruction(var/mob/M)
spawned_ray -= M
- GLOB.destroyed_event.unregister(M, src, .proc/on_ray_destruction)
+ GLOB.destroyed_event.unregister(M, src, PROC_REF(on_ray_destruction))
/datum/event/ray_migration/end()
. = ..()
diff --git a/code/modules/events/shark_migration.dm b/code/modules/events/shark_migration.dm
index 7baed0af9c1..dc3d0d94383 100644
--- a/code/modules/events/shark_migration.dm
+++ b/code/modules/events/shark_migration.dm
@@ -69,7 +69,7 @@
// Spawn a single shark at given location.
/datum/event/shark_migration/proc/spawn_one_shark(var/loc)
var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/shark/event(loc)
- GLOB.destroyed_event.register(M, src, .proc/on_shark_destruction)
+ GLOB.destroyed_event.register(M, src, PROC_REF(on_shark_destruction))
spawned_shark.Add(M)
return M
@@ -83,7 +83,7 @@
// If shark is bomphed, remove it from the list.
/datum/event/shark_migration/proc/on_shark_destruction(var/mob/M)
spawned_shark -= M
- GLOB.destroyed_event.unregister(M, src, .proc/on_shark_destruction)
+ GLOB.destroyed_event.unregister(M, src, PROC_REF(on_shark_destruction))
/datum/event/shark_migration/end()
. = ..()
diff --git a/code/modules/ext_scripts/irc.dm b/code/modules/ext_scripts/irc.dm
index a554cdd20a9..5cfeae553cc 100644
--- a/code/modules/ext_scripts/irc.dm
+++ b/code/modules/ext_scripts/irc.dm
@@ -18,7 +18,7 @@
nudge_lib = "lib/nudge.so"
spawn(0)
- call(nudge_lib, "nudge")("[config.comms_password]","[config.irc_bot_host]","[channel]","[escape_shell_arg(msg)]")
+ LIBCALL(nudge_lib, "nudge")("[config.comms_password]","[config.irc_bot_host]","[channel]","[escape_shell_arg(msg)]")
else
spawn(0)
ext_python("ircbot_message.py", "[config.comms_password] [config.irc_bot_host] [channel] [escape_shell_arg(msg)]")
@@ -39,4 +39,3 @@
/hook/startup/proc/ircNotify()
send2mainirc("Server starting up on byond://[config.serverurl ? config.serverurl : (config.server ? config.server : "[world.address]:[world.port]")]")
return 1
-
diff --git a/code/modules/food/kitchen/smartfridge/smartfridge.dm b/code/modules/food/kitchen/smartfridge/smartfridge.dm
index c683bf9a603..1a10b3c219b 100644
--- a/code/modules/food/kitchen/smartfridge/smartfridge.dm
+++ b/code/modules/food/kitchen/smartfridge/smartfridge.dm
@@ -119,7 +119,7 @@
user.remove_from_mob(O)
stock(O)
user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].")
- sortTim(item_records, /proc/cmp_stored_item_name)
+ sortTim(item_records, GLOBAL_PROC_REF(cmp_stored_item_name))
else if(istype(O, /obj/item/weapon/storage/bag))
var/obj/item/weapon/storage/bag/P = O
diff --git a/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm b/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm
index 54548a88dda..c3cd5d0b243 100644
--- a/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm
+++ b/code/modules/gamemaster/event2/events/engineering/airlock_failure.dm
@@ -70,7 +70,7 @@
for(var/obj/machinery/door/airlock/door in area.contents)
if(can_break_door(door))
- addtimer(CALLBACK(src, .proc/break_door, door), 1) // Emagging proc is actually a blocking proc and that's bad for the ticker.
+ addtimer(CALLBACK(src, PROC_REF(break_door), door), 1) // Emagging proc is actually a blocking proc and that's bad for the ticker.
door.visible_message(span("danger", "\The [door]'s panel sparks!"))
playsound(door, "sparks", 50, 1)
log_debug("Airlock Failure event has broken \the [door] airlock in [area].")
diff --git a/code/modules/gamemaster/event2/events/everyone/radiation_storm.dm b/code/modules/gamemaster/event2/events/everyone/radiation_storm.dm
index ebd137b404f..c81968c23e8 100644
--- a/code/modules/gamemaster/event2/events/everyone/radiation_storm.dm
+++ b/code/modules/gamemaster/event2/events/everyone/radiation_storm.dm
@@ -38,7 +38,7 @@
Please allow for up to one minute while radiation levels dissipate, and report to \
medbay if you experience any unusual symptoms. Maintenance will lose all \
access again shortly.", "Anomaly Alert")
- addtimer(CALLBACK(src, .proc/maint_callback), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(maint_callback)), 2 MINUTES)
/datum/event2/event/radiation_storm/proc/maint_callback()
revoke_maint_all_access()
diff --git a/code/modules/gamemaster/event2/events/mob_spawning.dm b/code/modules/gamemaster/event2/events/mob_spawning.dm
index 4f3bcffa027..35321cd2f06 100644
--- a/code/modules/gamemaster/event2/events/mob_spawning.dm
+++ b/code/modules/gamemaster/event2/events/mob_spawning.dm
@@ -80,7 +80,7 @@
/datum/event2/event/mob_spawning/proc/spawn_one_mob(new_loc, mob_type)
var/mob/living/simple_mob/M = new mob_type(new_loc)
- GLOB.destroyed_event.register(M, src, .proc/on_mob_destruction)
+ GLOB.destroyed_event.register(M, src, PROC_REF(on_mob_destruction))
spawned_mobs += M
return M
@@ -94,4 +94,4 @@
// If simple_mob is bomphed, remove it from the list.
/datum/event2/event/mob_spawning/proc/on_mob_destruction(mob/M)
spawned_mobs -= M
- GLOB.destroyed_event.unregister(M, src, .proc/on_mob_destruction)
\ No newline at end of file
+ GLOB.destroyed_event.unregister(M, src, PROC_REF(on_mob_destruction))
diff --git a/code/modules/gamemaster/event2/events/security/prison_break.dm b/code/modules/gamemaster/event2/events/security/prison_break.dm
index 4684f0ae177..80f6ad2f9a7 100644
--- a/code/modules/gamemaster/event2/events/security/prison_break.dm
+++ b/code/modules/gamemaster/event2/events/security/prison_break.dm
@@ -205,7 +205,7 @@
Disabling the main breaker in the APCs will protect the APC's room from being compromised."))
var/time_to_flicker = start_delay - 10 SECONDS
- addtimer(CALLBACK(src, .proc/flicker_area), time_to_flicker)
+ addtimer(CALLBACK(src, PROC_REF(flicker_area)), time_to_flicker)
/datum/event2/event/prison_break/proc/flicker_area()
diff --git a/code/modules/instruments/instrument_data/_instrument_data.dm b/code/modules/instruments/instrument_data/_instrument_data.dm
index a37d7a2dd9c..cf37e25c9b0 100644
--- a/code/modules/instruments/instrument_data/_instrument_data.dm
+++ b/code/modules/instruments/instrument_data/_instrument_data.dm
@@ -88,7 +88,7 @@
samples = list()
for(var/key in real_samples)
real_keys += text2num(key)
- sortTim(real_keys, /proc/cmp_numeric_asc, associative = FALSE)
+ sortTim(real_keys, GLOBAL_PROC_REF(cmp_numeric_asc), associative = FALSE)
for(var/i in 1 to (length(real_keys) - 1))
var/from_key = real_keys[i]
diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm
index def8741909e..4d6725f8f1c 100644
--- a/code/modules/instruments/items.dm
+++ b/code/modules/instruments/items.dm
@@ -81,8 +81,8 @@
/obj/item/instrument/piano_synth/headphones/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_SONG_START, .proc/start_playing)
- RegisterSignal(src, COMSIG_SONG_END, .proc/stop_playing)
+ RegisterSignal(src, COMSIG_SONG_START, PROC_REF(start_playing))
+ RegisterSignal(src, COMSIG_SONG_END, PROC_REF(stop_playing))
/**
* Called by a component signal when our song starts playing.
@@ -252,7 +252,7 @@
/obj/item/instrument/harmonica/equipped(mob/M, slot)
. = ..()
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/obj/item/instrument/harmonica/dropped(mob/M)
. = ..()
diff --git a/code/modules/instruments/songs/editor.dm b/code/modules/instruments/songs/editor.dm
index d63ae107cd7..c4941cec136 100644
--- a/code/modules/instruments/songs/editor.dm
+++ b/code/modules/instruments/songs/editor.dm
@@ -160,7 +160,7 @@
tempo = sanitize_tempo(tempo + text2num(href_list["tempo"]))
else if(href_list["play"])
- INVOKE_ASYNC(src, .proc/start_playing, usr)
+ INVOKE_ASYNC(src, PROC_REF(start_playing), usr)
else if(href_list["newline"])
var/newline = html_encode(tgui_input_text(usr, "Enter your line: ", parent.name))
diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm
index a83924a5d4a..13bb7675799 100644
--- a/code/modules/integrated_electronics/subtypes/input.dm
+++ b/code/modules/integrated_electronics/subtypes/input.dm
@@ -359,7 +359,7 @@
. = ..()
set_pin_data(IC_INPUT, 1, frequency)
set_pin_data(IC_INPUT, 2, code)
- addtimer(CALLBACK(src, .proc/set_frequency, frequency), 40)
+ addtimer(CALLBACK(src, PROC_REF(set_frequency), frequency), 40)
/obj/item/integrated_circuit/input/signaler/Destroy()
if(radio_controller)
diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm
index 9a193f9bf7e..a20a02c8f1c 100644
--- a/code/modules/integrated_electronics/subtypes/output.dm
+++ b/code/modules/integrated_electronics/subtypes/output.dm
@@ -444,11 +444,11 @@
/obj/item/integrated_circuit/output/holographic_projector/Initialize()
. = ..()
- GLOB.moved_event.register(src, src, .proc/on_moved)
+ GLOB.moved_event.register(src, src, PROC_REF(on_moved))
/obj/item/integrated_circuit/output/holographic_projector/Destroy()
destroy_hologram()
- GLOB.moved_event.unregister(src, src, .proc/on_moved)
+ GLOB.moved_event.unregister(src, src, PROC_REF(on_moved))
return ..()
/obj/item/integrated_circuit/output/holographic_projector/do_work()
diff --git a/code/modules/integrated_electronics/subtypes/time.dm b/code/modules/integrated_electronics/subtypes/time.dm
index 9633ef78813..1acaea0f3bc 100644
--- a/code/modules/integrated_electronics/subtypes/time.dm
+++ b/code/modules/integrated_electronics/subtypes/time.dm
@@ -25,7 +25,7 @@
var/new_delay = CLAMP(delay_input, 1, 1 HOUR)
delay = new_delay
- addtimer(CALLBACK(src, .proc/activate_pin, 2), delay)
+ addtimer(CALLBACK(src, PROC_REF(activate_pin), 2), delay)
/obj/item/integrated_circuit/time/ticker
name = "ticker circuit"
@@ -65,7 +65,7 @@
/obj/item/integrated_circuit/time/ticker/proc/tick()
if(is_running && check_power())
- addtimer(CALLBACK(src, .proc/tick), delay)
+ addtimer(CALLBACK(src, PROC_REF(tick)), delay)
if(world.time > next_fire)
next_fire = world.time + delay
activate_pin(1)
diff --git a/code/modules/mining/kinetic_crusher.dm b/code/modules/mining/kinetic_crusher.dm
index 043dfe81885..2a668262824 100644
--- a/code/modules/mining/kinetic_crusher.dm
+++ b/code/modules/mining/kinetic_crusher.dm
@@ -69,8 +69,8 @@
/obj/item/weapon/kinetic_crusher/Initialize()
. = ..()
if(requires_Wield)
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield)
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield)
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
/obj/item/weapon/kinetic_crusher/ComponentInitialize()
. = ..()
@@ -163,7 +163,7 @@
D.fire()
charged = FALSE
update_icon()
- addtimer(CALLBACK(src, .proc/Recharge), charge_time)
+ addtimer(CALLBACK(src, PROC_REF(Recharge)), charge_time)
// * (user?.ConflictElementCount(CONFLICT_ELEMENT_CRUSHER) || 1 - tentatively commented out
return
if(proximity_flag && isliving(target))
@@ -258,7 +258,7 @@
update_item_state = FALSE
slot_flags = SLOT_BELT
-
+
/obj/item/weapon/kinetic_crusher/machete/gauntlets
@@ -425,4 +425,3 @@ but alas
- hatterhat
*/
-
diff --git a/code/modules/mob/living/carbon/human/human_modular_limbs.dm b/code/modules/mob/living/carbon/human/human_modular_limbs.dm
index c38bf4ebd63..481c9e57341 100644
--- a/code/modules/mob/living/carbon/human/human_modular_limbs.dm
+++ b/code/modules/mob/living/carbon/human/human_modular_limbs.dm
@@ -73,13 +73,13 @@
// Called in robotize(), replaced() and removed() to update our modular limb verbs.
/mob/living/carbon/human/proc/refresh_modular_limb_verbs()
if(length(get_modular_limbs(return_first_found = TRUE, validate_proc = /obj/item/organ/external/proc/can_attach_modular_limb_here)))
- verbs |= .proc/attach_limb_verb
+ verbs |= PROC_REF(attach_limb_verb)
else
- verbs -= .proc/attach_limb_verb
+ verbs -= PROC_REF(attach_limb_verb)
if(length(get_modular_limbs(return_first_found = TRUE, validate_proc = /obj/item/organ/external/proc/can_remove_modular_limb)))
- verbs |= .proc/detach_limb_verb
+ verbs |= PROC_REF(detach_limb_verb)
else
- verbs -= .proc/detach_limb_verb
+ verbs -= PROC_REF(detach_limb_verb)
// Proc helper for attachment verb.
/mob/living/carbon/human/proc/check_can_attach_modular_limb(var/obj/item/organ/external/E)
diff --git a/code/modules/mob/living/inventory.dm b/code/modules/mob/living/inventory.dm
index d9af7a3689a..eb93f679e3a 100644
--- a/code/modules/mob/living/inventory.dm
+++ b/code/modules/mob/living/inventory.dm
@@ -49,7 +49,7 @@
. = drop_r_hand(Target)
if (istype(item_dropped) && !QDELETED(item_dropped) && is_preference_enabled(/datum/client_preference/drop_sounds))
- addtimer(CALLBACK(src, .proc/make_item_drop_sound, item_dropped), 1)
+ addtimer(CALLBACK(src, PROC_REF(make_item_drop_sound), item_dropped), 1)
/mob/proc/make_item_drop_sound(obj/item/I)
if(QDELETED(I))
@@ -119,14 +119,14 @@
// We're the first!
if(!L)
L = list()
-
+
// Lefty grab!
if (istype(l_hand, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = l_hand
L |= G.affecting
if(mobchain_limit-- > 0)
G.affecting?.ret_grab(L, mobchain_limit) // Recurse! They can update the list. It's the same instance as ours.
-
+
// Righty grab!
if (istype(r_hand, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = r_hand
@@ -144,7 +144,7 @@
if(!checkClickCooldown())
return
-
+
setClickCooldown(1)
if(istype(loc,/obj/mecha)) return
@@ -272,7 +272,7 @@
if(..())
return TRUE
- // If anyone wants the inventory panel to actually work,
+ // If anyone wants the inventory panel to actually work,
// add code to handle actions "mask", "l_hand", "r_hand", "back", "pockets", and "internals" here
// No mobs other than humans actually supported stripping or putting stuff on before the /datum/inventory_panel was
// created, so feature parity demands not adding that and risking breaking stuff
@@ -345,12 +345,12 @@
data["sensors"] = FALSE
if(istype(suit) && suit.has_sensor == 1)
data["sensors"] = TRUE
-
+
data["handcuffed"] = FALSE
if(H.handcuffed)
data["handcuffed"] = TRUE
data["handcuffedParams"] = list("slot" = slot_handcuffed)
-
+
data["legcuffed"] = FALSE
if(H.legcuffed)
data["legcuffed"] = TRUE
@@ -360,4 +360,4 @@
if(suit && LAZYLEN(suit.accessories))
data["accessory"] = TRUE
- return data
\ No newline at end of file
+ return data
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 311682f0566..aae66646cac 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1258,7 +1258,7 @@
/datum/component/character_setup/RegisterWithParent()
. = ..()
- RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, .proc/create_mob_button)
+ RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, PROC_REF(create_mob_button))
var/mob/owner = parent
if(owner.client)
create_mob_button(parent)
@@ -1276,7 +1276,7 @@
var/datum/hud/HUD = user.hud_used
if(!screen_icon)
screen_icon = new()
- RegisterSignal(screen_icon, COMSIG_CLICK, .proc/character_setup_click)
+ RegisterSignal(screen_icon, COMSIG_CLICK, PROC_REF(character_setup_click))
if(ispAI(user))
screen_icon.icon = 'icons/mob/pai_hud.dmi'
screen_icon.screen_loc = ui_acti
diff --git a/code/modules/mob/living/silicon/robot/robot_animation_vr.dm b/code/modules/mob/living/silicon/robot/robot_animation_vr.dm
index f69b1049cd9..6d1c66be63c 100644
--- a/code/modules/mob/living/silicon/robot/robot_animation_vr.dm
+++ b/code/modules/mob/living/silicon/robot/robot_animation_vr.dm
@@ -1,5 +1,5 @@
/mob/living/silicon/robot/proc/transform_with_anim()
- INVOKE_ASYNC(src, .proc/do_transform_animation)
+ INVOKE_ASYNC(src, PROC_REF(do_transform_animation))
/mob/living/silicon/robot/proc/do_transform_animation()
notransform = TRUE
@@ -19,4 +19,4 @@
if(!prev_lockcharge)
SetLockdown(0)
anchored = FALSE
- notransform = FALSE
\ No newline at end of file
+ notransform = FALSE
diff --git a/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_interactions.dm b/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_interactions.dm
index cc4ca44253e..87b23bf457a 100644
--- a/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_interactions.dm
+++ b/code/modules/mob/living/silicon/robot/subtypes/thinktank/thinktank_interactions.dm
@@ -65,7 +65,7 @@
if(key != user.key)
key = user.key
SetName("[modtype] [braintype]-[rand(100,999)]")
- addtimer(CALLBACK(src, .proc/welcome_client), 1)
+ addtimer(CALLBACK(src, PROC_REF(welcome_client)), 1)
qdel(user)
/mob/living/silicon/robot/platform/proc/welcome_client()
diff --git a/code/modules/mob/living/simple_mob/overmap_mob_vr.dm b/code/modules/mob/living/simple_mob/overmap_mob_vr.dm
index d9b544cc735..8a998d48eae 100644
--- a/code/modules/mob/living/simple_mob/overmap_mob_vr.dm
+++ b/code/modules/mob/living/simple_mob/overmap_mob_vr.dm
@@ -8,7 +8,7 @@
//The MOB being invisible presents some problems though, which I am not entirely sure how to resolve
//Such as, being unable to be attacked by other mobs, and possibly unable to be attacked by players.
-//This does not at all prevent the mob from attacking other things though
+//This does not at all prevent the mob from attacking other things though
//so in general, please ensure that you never spawn these where players can ordinarily access them.
//The mob was made invisible though, because the sensors can't detect invisible objects, so when the /visitable/simplemob was made invisible
@@ -47,7 +47,7 @@
/obj/effect/overmap/visitable/simplemob/proc/om_mob_event_setup()
scanner_desc = parent.scanner_desc
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_parent_moved)
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_moved))
skybox_pixel_x = rand(-100,100)
if(known)
name = initial(parent.name)
@@ -109,4 +109,3 @@
/mob/living/simple_mob/vore/overmap/Destroy()
qdel_null(child_om_marker)
return ..()
-
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm
index 6fea80f6260..6b4b514e283 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm
@@ -242,7 +242,7 @@
else if(prob(0.5))
holder.lay_down()
go_sleep()
- addtimer(CALLBACK(src, .proc/consider_awakening), rand(1 MINUTE, 5 MINUTES), TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE)
+ addtimer(CALLBACK(src, PROC_REF(consider_awakening)), rand(1 MINUTE, 5 MINUTES), TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE)
else
return ..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm
index 9346ecd9ac2..a59560f2e1e 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spookyghost.dm
@@ -192,7 +192,7 @@
. = ..()
icon_living = "spookyghost-[rand(1,2)]"
icon_state = icon_living
- addtimer(CALLBACK(src, .proc/death), 35 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(death)), 35 SECONDS)
update_icon()
/datum/ai_holder/simple_mob/melee/space_ghost
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother_spawn.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother_spawn.dm
index 8d07077f1a0..5ebb7df0d7c 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother_spawn.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother_spawn.dm
@@ -10,7 +10,7 @@
/mob/living/simple_mob/animal/giant_spider/frost/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/frost/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -28,7 +28,7 @@
/mob/living/simple_mob/animal/giant_spider/electric/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/electric/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -43,7 +43,7 @@
/mob/living/simple_mob/animal/giant_spider/hunter/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/hunter/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -58,7 +58,7 @@
/mob/living/simple_mob/animal/giant_spider/lurker/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/lurker/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -74,7 +74,7 @@
/mob/living/simple_mob/animal/giant_spider/nurse/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/nurse/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -89,7 +89,7 @@
/mob/living/simple_mob/animal/giant_spider/pepper/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/pepper/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -107,7 +107,7 @@
/mob/living/simple_mob/animal/giant_spider/thermic/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/thermic/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -122,7 +122,7 @@
/mob/living/simple_mob/animal/giant_spider/tunneler/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/tunneler/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -139,7 +139,7 @@
/mob/living/simple_mob/animal/giant_spider/webslinger/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/webslinger/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
@@ -157,7 +157,7 @@
/mob/living/simple_mob/animal/giant_spider/broodling/Initialize()
. = ..()
adjust_scale(0.75)
- addtimer(CALLBACK(src, .proc/death), 2 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(death)), 2 MINUTES)
/mob/living/simple_mob/animal/giant_spider/broodling/death()
new /obj/effect/decal/cleanable/spiderling_remains(src.loc)
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm
index 27bd772e250..b9297da8527 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/possum.dm
@@ -88,7 +88,7 @@
/datum/ai_holder/simple_mob/passive/possum/poppy/on_hear_say(mob/living/speaker, message)
. = ..()
- addtimer(CALLBACK(src, .proc/check_keywords, message), rand(1 SECOND, 3 SECONDS))
+ addtimer(CALLBACK(src, PROC_REF(check_keywords), message), rand(1 SECOND, 3 SECONDS))
/datum/ai_holder/simple_mob/passive/possum/poppy/proc/check_keywords(var/message)
var/mob/living/simple_mob/animal/passive/opossum/poss = holder
@@ -205,4 +205,4 @@
hit_zones = list("head", "body", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "pouch")
/decl/mob_organ_names/poppy
- hit_zones = list("head", "body", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "pouch", "cute little jacket")
\ No newline at end of file
+ hit_zones = list("head", "body", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "pouch", "cute little jacket")
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm
index ae1a90f303a..6b6cc5a1924 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm
@@ -733,7 +733,7 @@ I think I covered everything.
var/atom/movable/AM = am
if(AM == src || AM.anchored)
continue
- addtimer(CALLBACK(src, .proc/yeet, am), 1)
+ addtimer(CALLBACK(src, PROC_REF(yeet), am), 1)
playsound(src, "sound/weapons/punchmiss.ogg", 50, 1)
//Split repulse into two parts so I can recycle this later
@@ -766,7 +766,7 @@ I think I covered everything.
do_windup_animation(A, charge_warmup)
//callbacks are more reliable than byond's process scheduler
- addtimer(CALLBACK(src, .proc/chargeend, A), charge_warmup)
+ addtimer(CALLBACK(src, PROC_REF(chargeend), A), charge_warmup)
/mob/living/simple_mob/vore/bigdragon/proc/chargeend(var/atom/A, var/explicit = 0, var/gentle = 0)
@@ -804,7 +804,7 @@ I think I covered everything.
set_AI_busy(TRUE)
flames = 1
build_icons()
- addtimer(CALLBACK(src, .proc/firebreathend, A), charge_warmup)
+ addtimer(CALLBACK(src, PROC_REF(firebreathend), A), charge_warmup)
playsound(src, "sound/magic/Fireball.ogg", 50, 1)
/mob/living/simple_mob/vore/bigdragon/proc/firebreathend(var/atom/A)
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm
index 0b6e6e5607c..8cbf335e3ad 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm
@@ -44,8 +44,8 @@
/mob/living/dominated_brain/proc/lets_register_our_signals()
if(prey_body)
- RegisterSignal(prey_body, COMSIG_PARENT_QDELETING, .proc/prey_was_deleted, TRUE)
- RegisterSignal(pred_body, COMSIG_PARENT_QDELETING, .proc/pred_was_deleted, TRUE)
+ RegisterSignal(prey_body, COMSIG_PARENT_QDELETING, PROC_REF(prey_was_deleted), TRUE)
+ RegisterSignal(pred_body, COMSIG_PARENT_QDELETING, PROC_REF(pred_was_deleted), TRUE)
/mob/living/dominated_brain/proc/lets_unregister_our_signals()
prey_was_deleted()
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm
index a3b76c282b3..dfa3bfe5419 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm
@@ -54,7 +54,7 @@
/mob/living/simple_mob/vore/aggressive/frog/do_special_attack(atom/A)
set_AI_busy(TRUE)
do_windup_animation(A, 20)
- addtimer(CALLBACK(src, .proc/chargeend, A), 20)
+ addtimer(CALLBACK(src, PROC_REF(chargeend), A), 20)
/mob/living/simple_mob/vore/aggressive/frog/proc/chargeend(atom/A)
if(stat) //you are dead
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm b/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm
index 99720acb242..02f2fa025db 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm
@@ -130,7 +130,7 @@
/mob/living/simple_mob/vore/pakkun/on_throw_vore_special(var/pred, var/mob/living/target)
if(pred && !extra_posessive && !(LAZYFIND(prey_excludes, target)))
LAZYSET(prey_excludes, target, world.time)
- addtimer(CALLBACK(src, .proc/removeMobFromPreyExcludes, WEAKREF(target)), 5 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(removeMobFromPreyExcludes), WEAKREF(target)), 5 MINUTES)
if(ai_holder)
ai_holder.remove_target()
@@ -155,7 +155,7 @@
for(var/mob/living/L in living_mobs(0))
if(!(LAZYFIND(prey_excludes, L)))
LAZYSET(prey_excludes, L, world.time)
- addtimer(CALLBACK(src, .proc/removeMobFromPreyExcludes, WEAKREF(L)), 5 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(removeMobFromPreyExcludes), WEAKREF(L)), 5 MINUTES)
else
..()
diff --git a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
index 28efe9b94ae..c3fa0a98cee 100644
--- a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm
@@ -984,11 +984,26 @@
color_blend_mode = ICON_MULTIPLY
extra_overlay = "shark_fin"
-/datum/sprite_accessory/ears/sharklowhboth
+/datum/sprite_accessory/ears/sharkhighbothalt
+ name = "shark upper ears and fin alt style (Colorable)"
+ desc = ""
+ icon_state = "shark_ears_upper"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "shark_fin_alt"
+
+/datum/sprite_accessory/ears/sharklowboth
+ name = "shark lower ears and fin (Colorable)"
+ desc = ""
+ icon_state = "shark_ears_lower"
+ do_colouration = 1
+ color_blend_mode = ICON_MULTIPLY
+ extra_overlay = "shark_fin"
+
+/datum/sprite_accessory/ears/sharklowbothalt
name = "shark lower ears and fin alt style (Colorable)"
desc = ""
icon_state = "shark_ears_lower"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "shark_fin_alt"
-
diff --git a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm
index 2a290f488dd..99f9b427c7e 100644
--- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm
+++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm
@@ -657,6 +657,45 @@
msg_prey_stepunder = "You jump over %prey's thick tail."
msg_owner_stepunder = "%owner bounds over your tail."
+/datum/sprite_accessory/tail/taur/altmermaid
+ name = "Mermaid Alt. (Taur)"
+ icon_state = "altmermaid_s"
+ can_ride = 0
+ icon_sprite_tag = "altmermaid"
+
+ msg_owner_help_walk = "You carefully slither around %prey."
+ msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
+
+ msg_owner_help_run = "You carefully slither around %prey."
+ msg_prey_help_run = "%owner's huge tail slithers past beside you!"
+
+ msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!"
+ msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!"
+
+ msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!"
+ msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!"
+
+ msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!"
+ msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!"
+
+ msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!"
+ msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!"
+
+ msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!"
+ msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!"
+
+ msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!"
+ msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!"
+
+ msg_prey_stepunder = "You jump over %prey's thick tail."
+ msg_owner_stepunder = "%owner bounds over your tail."
+
+/datum/sprite_accessory/tail/taur/altmermaid/marked
+ name = "Mermaid Koi (Taur)"
+ icon_state = "altmermaid_s"
+ extra_overlay = "altmermaid_markings"
+ extra_overlay2 = "altmermaid_markings2"
+
/datum/sprite_accessory/tail/taur/pawcow // this grabs suit sprites from the normal cow, the outline is the same
name = "Cow w/ paws (Taur)"
icon_state = "pawcow_s"
@@ -962,3 +1001,4 @@
name = "Naga (Taur, Fat, dual color)"
icon_state = "fatnaga_s"
extra_overlay = "fatnaga_markings"
+
diff --git a/code/modules/nifsoft/nif_tgui.dm b/code/modules/nifsoft/nif_tgui.dm
index 203e0bb8587..b3f21c39e5d 100644
--- a/code/modules/nifsoft/nif_tgui.dm
+++ b/code/modules/nifsoft/nif_tgui.dm
@@ -31,7 +31,7 @@
/datum/component/nif_menu/RegisterWithParent()
. = ..()
- RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, .proc/create_mob_button)
+ RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, PROC_REF(create_mob_button))
var/mob/owner = parent
if(owner.client)
create_mob_button(parent)
@@ -53,7 +53,7 @@
var/datum/hud/HUD = user.hud_used
if(!screen_icon)
screen_icon = new()
- RegisterSignal(screen_icon, COMSIG_CLICK, .proc/nif_menu_click)
+ RegisterSignal(screen_icon, COMSIG_CLICK, PROC_REF(nif_menu_click))
screen_icon.icon = HUD.ui_style
screen_icon.color = HUD.ui_color
screen_icon.alpha = HUD.ui_alpha
@@ -65,7 +65,7 @@
/datum/component/nif_menu/proc/nif_menu_click(source, location, control, params, user)
var/mob/living/carbon/human/H = user
if(istype(H) && H.nif)
- INVOKE_ASYNC(H.nif, .proc/tgui_interact, user)
+ INVOKE_ASYNC(H.nif, PROC_REF(tgui_interact), user)
/**
* Screen object for NIF menu access
diff --git a/code/modules/overmap/disperser/disperser_console.dm b/code/modules/overmap/disperser/disperser_console.dm
index d67bb87c5cf..a173163c17e 100644
--- a/code/modules/overmap/disperser/disperser_console.dm
+++ b/code/modules/overmap/disperser/disperser_console.dm
@@ -55,9 +55,9 @@
middle = M
back = B
if(is_valid_setup())
- GLOB.destroyed_event.register(F, src, .proc/release_links)
- GLOB.destroyed_event.register(M, src, .proc/release_links)
- GLOB.destroyed_event.register(B, src, .proc/release_links)
+ GLOB.destroyed_event.register(F, src, PROC_REF(release_links))
+ GLOB.destroyed_event.register(M, src, PROC_REF(release_links))
+ GLOB.destroyed_event.register(B, src, PROC_REF(release_links))
return TRUE
return FALSE
@@ -69,9 +69,9 @@
return FALSE
/obj/machinery/computer/ship/disperser/proc/release_links()
- GLOB.destroyed_event.unregister(front, src, .proc/release_links)
- GLOB.destroyed_event.unregister(middle, src, .proc/release_links)
- GLOB.destroyed_event.unregister(back, src, .proc/release_links)
+ GLOB.destroyed_event.unregister(front, src, PROC_REF(release_links))
+ GLOB.destroyed_event.unregister(middle, src, PROC_REF(release_links))
+ GLOB.destroyed_event.unregister(back, src, PROC_REF(release_links))
front = null
middle = null
back = null
@@ -207,4 +207,4 @@
. = TRUE
if(. && !issilicon(usr))
- playsound(src, "terminal_type", 50, 1)
\ No newline at end of file
+ playsound(src, "terminal_type", 50, 1)
diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm
index d3da39a343e..285d1e3a1b4 100644
--- a/code/modules/overmap/sectors.dm
+++ b/code/modules/overmap/sectors.dm
@@ -268,7 +268,7 @@
I.appearance_flags = KEEP_APART|RESET_TRANSFORM|RESET_COLOR
add_overlay(I)
- addtimer(CALLBACK(src, .proc/distress_update), 5 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(distress_update)), 5 MINUTES)
return TRUE
/obj/effect/overmap/visitable/proc/get_distress_info()
diff --git a/code/modules/overmap/ships/landable.dm b/code/modules/overmap/ships/landable.dm
index a76a39b60e6..45c8386da53 100644
--- a/code/modules/overmap/ships/landable.dm
+++ b/code/modules/overmap/ships/landable.dm
@@ -71,8 +71,8 @@
if(istype(shuttle_datum,/datum/shuttle/autodock/overmap))
var/datum/shuttle/autodock/overmap/oms = shuttle_datum
oms.myship = src
- GLOB.shuttle_pre_move_event.register(shuttle_datum, src, .proc/pre_shuttle_jump)
- GLOB.shuttle_moved_event.register(shuttle_datum, src, .proc/on_shuttle_jump)
+ GLOB.shuttle_pre_move_event.register(shuttle_datum, src, PROC_REF(pre_shuttle_jump))
+ GLOB.shuttle_moved_event.register(shuttle_datum, src, PROC_REF(on_shuttle_jump))
on_landing(landmark, shuttle_datum.current_location) // We "land" at round start to properly place ourselves on the overmap.
@@ -144,7 +144,7 @@
/obj/effect/shuttle_landmark/visiting_shuttle/shuttle_arrived(datum/shuttle/shuttle)
LAZYSET(core_landmark.visitors, src, shuttle)
- GLOB.shuttle_moved_event.register(shuttle, src, .proc/shuttle_left)
+ GLOB.shuttle_moved_event.register(shuttle, src, PROC_REF(shuttle_left))
/obj/effect/shuttle_landmark/visiting_shuttle/proc/shuttle_left(datum/shuttle/shuttle, obj/effect/shuttle_landmark/old_landmark, obj/effect/shuttle_landmark/new_landmark)
if(old_landmark == src)
@@ -206,4 +206,4 @@
if(SHIP_STATUS_TRANSIT)
return "Maneuvering under secondary thrust."
if(SHIP_STATUS_OVERMAP)
- return "In open space."
\ No newline at end of file
+ return "In open space."
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 708fe7fca4f..ae9bb2f509c 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -61,7 +61,7 @@
switch(action)
if("make_copy")
- addtimer(CALLBACK(src, .proc/copy_operation, usr), 0)
+ addtimer(CALLBACK(src, PROC_REF(copy_operation), usr), 0)
. = TRUE
if("remove")
if(copyitem)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index f206259e424..8c0d3e90202 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -975,7 +975,7 @@ GLOBAL_LIST_EMPTY(apcs)
for(var/obj/machinery/light/L in area)
if(!initial(L.no_emergency)) //If there was an override set on creation, keep that override
L.no_emergency = emergency_lights
- INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE)
+ INVOKE_ASYNC(L, TYPE_PROC_REF(/obj/machinery/light, update), FALSE)
CHECK_TICK
if("overload")
if(locked_exception) // Reusing for simplicity!
@@ -1372,4 +1372,4 @@ GLOBAL_LIST_EMPTY(apcs)
#undef APC_HAS_ELECTRONICS_NONE
#undef APC_HAS_ELECTRONICS_WIRED
-#undef APC_HAS_ELECTRONICS_SECURED
\ No newline at end of file
+#undef APC_HAS_ELECTRONICS_SECURED
diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm
index 6296d3c9b4a..61341a92cdd 100644
--- a/code/modules/power/port_gen_vr.dm
+++ b/code/modules/power/port_gen_vr.dm
@@ -156,7 +156,7 @@
"You hear a loud electrical crack!")
playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5)
tesla_zap(src, 5, power_gen * 0.05)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion.
+ addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(explosion), get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion.
/obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj)
. = ..()
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index 33caa542a49..e36a1f1dc31 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -83,7 +83,7 @@
flick("coilhit", src)
playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5)
tesla_zap(src, 5, power_produced)
- //addtimer(CALLBACK(src, .proc/reset_shocked), 10)
+ //addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10)
spawn(10) reset_shocked()
else
..()
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index 6163b3a8a11..a3530f8e411 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -101,7 +101,7 @@
energy_to_raise = energy_to_raise * 1.25
playsound(src, 'sound/effects/lightning_chargeup.ogg', 100, 1, extrarange = 30)
- //addtimer(CALLBACK(src, .proc/new_mini_ball), 100)
+ //addtimer(CALLBACK(src, PROC_REF(new_mini_ball)), 100)
spawn(100) new_mini_ball()
else if(energy < energy_to_lower && orbiting_balls.len)
diff --git a/code/modules/power/tesla/tesla_act.dm b/code/modules/power/tesla/tesla_act.dm
index 01b58f8a809..8111d1e4d11 100644
--- a/code/modules/power/tesla/tesla_act.dm
+++ b/code/modules/power/tesla/tesla_act.dm
@@ -9,8 +9,8 @@
being_shocked = TRUE
var/power_bounced = power / 2
tesla_zap(src, 3, power_bounced)
- //addtimer(CALLBACK(src, .proc/reset_shocked), 10)
- //schedule_task_with_source_in(10, src, .proc/reset_shocked)
+ //addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10)
+ //schedule_task_with_source_in(10, src, PROC_REF(reset_shocked))
spawn(10) reset_shocked()
/obj/proc/reset_shocked()
@@ -63,12 +63,3 @@
/obj/mecha/tesla_act(power)
..()
take_damage(power / 200, "energy") // A surface lightning strike will do 100 damage.
-
-
-
-
-
-
-
-
-
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm
index 8792b0feb1c..689be8359d9 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator_vr.dm
@@ -182,7 +182,7 @@
if(!QDELING(src) && !holds_charge)
// Put it on a delay because moving item from slot to hand
// calls dropped().
- addtimer(CALLBACK(src, .proc/empty_if_not_held), 2)
+ addtimer(CALLBACK(src, PROC_REF(empty_if_not_held)), 2)
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/empty_if_not_held()
if(!ismob(loc) && !istype(loc, /obj/item/integrated_circuit))
@@ -206,7 +206,7 @@
var/carried = max(1, loc.ConflictElementCount(CONFLICT_ELEMENT_KA))
deltimer(recharge_timerid)
- recharge_timerid = addtimer(CALLBACK(src, .proc/reload), recharge_time * carried, TIMER_STOPPABLE)
+ recharge_timerid = addtimer(CALLBACK(src, PROC_REF(reload)), recharge_time * carried, TIMER_STOPPABLE)
/obj/item/weapon/gun/energy/kinetic_accelerator/emp_act(severity)
return
diff --git a/code/modules/projectiles/guns/projectile/smartgun.dm b/code/modules/projectiles/guns/projectile/smartgun.dm
index c74f1b6122d..ba13558160c 100644
--- a/code/modules/projectiles/guns/projectile/smartgun.dm
+++ b/code/modules/projectiles/guns/projectile/smartgun.dm
@@ -34,7 +34,7 @@
var/image/I = ..()
if(I)
I.pixel_x = -16
- return I
+ return I
/obj/item/weapon/gun/projectile/smartgun/loaded
magazine_type = /obj/item/ammo_magazine/smartgun
@@ -68,7 +68,7 @@
return
cycling = TRUE
-
+
if(closed)
icon_state = "[initial(icon_state)]_open"
playsound(src, 'sound/weapons/smartgunopen.ogg', 75, 0)
@@ -77,7 +77,7 @@
icon_state = "[initial(icon_state)]_closed"
playsound(src, 'sound/weapons/smartgunclose.ogg', 75, 0)
to_chat(user, "You ready [src] so that it can be fired.")
- addtimer(CALLBACK(src, .proc/toggle_real_state), 2 SECONDS, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(toggle_real_state)), 2 SECONDS, TIMER_UNIQUE)
/obj/item/weapon/gun/projectile/smartgun/proc/toggle_real_state()
cycling = FALSE
@@ -147,4 +147,3 @@
max_ammo = 5
ammo_type = /obj/item/ammo_casing/smartgun
multiple_sprites = TRUE
-
diff --git a/code/modules/random_map/drop/droppod_doors.dm b/code/modules/random_map/drop/droppod_doors.dm
index c19aba40fd5..78df7a66995 100644
--- a/code/modules/random_map/drop/droppod_doors.dm
+++ b/code/modules/random_map/drop/droppod_doors.dm
@@ -13,7 +13,7 @@
/obj/structure/droppod_door/Initialize(var/mapload, var/autoopen)
. = ..()
if(autoopen)
- addtimer(CALLBACK(src, .proc/deploy), 10 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(deploy)), 10 SECONDS)
/obj/structure/droppod_door/attack_ai(var/mob/user)
if(!user.Adjacent(src))
@@ -76,4 +76,4 @@
door_bottom.density = FALSE
door_bottom.set_opacity(0)
door_bottom.dir = src.dir
- door_bottom.icon_state = "rampbottom"
\ No newline at end of file
+ door_bottom.icon_state = "rampbottom"
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index a69a57015e1..5bf3d94fffc 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -110,7 +110,7 @@ Note: Must be placed within 3 tiles of the R&D Console
qdel(B)
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
rped_recycler_ready = FALSE
- addtimer(CALLBACK(src, .proc/rped_ready), 5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(rped_ready)), 5 SECONDS)
to_chat(user, "You deconstruct all the parts of rating [lowest_rating] in [replacer] with [src].")
return 1
else
@@ -118,4 +118,4 @@ Note: Must be placed within 3 tiles of the R&D Console
/obj/machinery/r_n_d/destructive_analyzer/proc/rped_ready()
rped_recycler_ready = TRUE
- playsound(get_turf(src), 'sound/machines/chime.ogg', 50, 1)
\ No newline at end of file
+ playsound(get_turf(src), 'sound/machines/chime.ogg', 50, 1)
diff --git a/code/modules/research/rdconsole_tgui.dm b/code/modules/research/rdconsole_tgui.dm
index bbd340fd0a8..b9683c0f435 100644
--- a/code/modules/research/rdconsole_tgui.dm
+++ b/code/modules/research/rdconsole_tgui.dm
@@ -242,7 +242,7 @@
"chem_list" = chem_list,
)))
- data = sortTim(data, /proc/cmp_designs_rdconsole, FALSE)
+ data = sortTim(data, GLOBAL_PROC_REF(cmp_designs_rdconsole), FALSE)
if(LAZYLEN(data) > ENTRIES_PER_RDPAGE)
var/first_index = clamp(ENTRIES_PER_RDPAGE * page, 1, LAZYLEN(data))
var/last_index = min((ENTRIES_PER_RDPAGE * page) + ENTRIES_PER_RDPAGE, LAZYLEN(data) + 1)
@@ -280,7 +280,7 @@
"chem_list" = chem_list,
)))
- data = sortTim(data, /proc/cmp_designs_rdconsole, FALSE)
+ data = sortTim(data, GLOBAL_PROC_REF(cmp_designs_rdconsole), FALSE)
if(LAZYLEN(data) > ENTRIES_PER_RDPAGE)
var/first_index = clamp(ENTRIES_PER_RDPAGE * page, 1, LAZYLEN(data))
var/last_index = min((ENTRIES_PER_RDPAGE * page) + ENTRIES_PER_RDPAGE, LAZYLEN(data) + 1)
@@ -303,7 +303,7 @@
"id" = D.id,
)))
- data = sortTim(data, /proc/cmp_designs_rdconsole, FALSE)
+ data = sortTim(data, GLOBAL_PROC_REF(cmp_designs_rdconsole), FALSE)
if(LAZYLEN(data) > ENTRIES_PER_RDPAGE)
var/first_index = clamp(ENTRIES_PER_RDPAGE * page, 1, LAZYLEN(data))
var/last_index = clamp((ENTRIES_PER_RDPAGE * page) + ENTRIES_PER_RDPAGE, 1, LAZYLEN(data) + 1)
@@ -637,4 +637,4 @@
PR.info_links = PR.info
PR.icon_state = "paper_words"
PR.forceMove(loc)
- busy_msg = null
\ No newline at end of file
+ busy_msg = null
diff --git a/code/modules/scripting/Implementations/Telecomms.dm b/code/modules/scripting/Implementations/Telecomms.dm
index 9f83cdf933a..e486197b843 100644
--- a/code/modules/scripting/Implementations/Telecomms.dm
+++ b/code/modules/scripting/Implementations/Telecomms.dm
@@ -116,7 +116,7 @@
@param time: time to sleep in deciseconds (1/10th second)
*/
- interpreter.SetProc("sleep", /proc/delay)
+ interpreter.SetProc("sleep", GLOBAL_PROC_REF(delay))
/*
-> Replaces a string with another string
@@ -127,7 +127,7 @@
@param replacestring: the string to replace the substring with
*/
- interpreter.SetProc("replace", /proc/string_replacetext)
+ interpreter.SetProc("replace", GLOBAL_PROC_REF(string_replacetext))
/*
-> Locates an element/substring inside of a list or string
@@ -139,7 +139,7 @@
@param end: the position to end in
*/
- interpreter.SetProc("find", /proc/smartfind)
+ interpreter.SetProc("find", GLOBAL_PROC_REF(smartfind))
/*
-> Finds the length of a string or list
@@ -148,42 +148,42 @@
@param container: the list or container to measure
*/
- interpreter.SetProc("length", /proc/smartlength)
+ interpreter.SetProc("length", GLOBAL_PROC_REF(smartlength))
/* -- Clone functions, carried from default BYOND procs --- */
// vector namespace
- interpreter.SetProc("vector", /proc/n_list)
- interpreter.SetProc("at", /proc/n_listpos)
- interpreter.SetProc("copy", /proc/n_listcopy)
- interpreter.SetProc("push_back", /proc/n_listadd)
- interpreter.SetProc("remove", /proc/n_listremove)
- interpreter.SetProc("cut", /proc/n_listcut)
- interpreter.SetProc("swap", /proc/n_listswap)
- interpreter.SetProc("insert", /proc/n_listinsert)
+ interpreter.SetProc("vector", GLOBAL_PROC_REF(n_list))
+ interpreter.SetProc("at", GLOBAL_PROC_REF(n_listpos))
+ interpreter.SetProc("copy", GLOBAL_PROC_REF(n_listcopy))
+ interpreter.SetProc("push_back", GLOBAL_PROC_REF(n_listadd))
+ interpreter.SetProc("remove", GLOBAL_PROC_REF(n_listremove))
+ interpreter.SetProc("cut", GLOBAL_PROC_REF(n_listcut))
+ interpreter.SetProc("swap", GLOBAL_PROC_REF(n_listswap))
+ interpreter.SetProc("insert", GLOBAL_PROC_REF(n_listinsert))
- interpreter.SetProc("pick", /proc/n_pick)
- interpreter.SetProc("prob", /proc/prob_chance)
- interpreter.SetProc("substr", /proc/docopytext)
+ interpreter.SetProc("pick", GLOBAL_PROC_REF(n_pick))
+ interpreter.SetProc("prob", GLOBAL_PROC_REF(prob_chance))
+ interpreter.SetProc("substr", GLOBAL_PROC_REF(docopytext))
// Donkie~
// Strings
- interpreter.SetProc("lower", /proc/n_lower)
- interpreter.SetProc("upper", /proc/n_upper)
- interpreter.SetProc("explode", /proc/string_explode)
- interpreter.SetProc("repeat", /proc/n_repeat)
- interpreter.SetProc("reverse", /proc/n_reverse)
- interpreter.SetProc("tonum", /proc/n_str2num)
+ interpreter.SetProc("lower", GLOBAL_PROC_REF(n_lower))
+ interpreter.SetProc("upper", GLOBAL_PROC_REF(n_upper))
+ interpreter.SetProc("explode", GLOBAL_PROC_REF(string_explode))
+ interpreter.SetProc("repeat", GLOBAL_PROC_REF(n_repeat))
+ interpreter.SetProc("reverse", GLOBAL_PROC_REF(n_reverse))
+ interpreter.SetProc("tonum", GLOBAL_PROC_REF(n_str2num))
// Numbers
- interpreter.SetProc("tostring", /proc/n_num2str)
- interpreter.SetProc("sqrt", /proc/n_sqrt)
- interpreter.SetProc("abs", /proc/n_abs)
- interpreter.SetProc("floor", /proc/n_floor)
- interpreter.SetProc("ceil", /proc/n_ceil)
- interpreter.SetProc("round", /proc/n_round)
- interpreter.SetProc("clamp", /proc/n_clamp)
- interpreter.SetProc("inrange", /proc/n_inrange)
+ interpreter.SetProc("tostring", GLOBAL_PROC_REF(n_num2str))
+ interpreter.SetProc("sqrt", GLOBAL_PROC_REF(n_sqrt))
+ interpreter.SetProc("abs", GLOBAL_PROC_REF(n_abs))
+ interpreter.SetProc("floor", GLOBAL_PROC_REF(n_floor))
+ interpreter.SetProc("ceil", GLOBAL_PROC_REF(n_ceil))
+ interpreter.SetProc("round", GLOBAL_PROC_REF(n_round))
+ interpreter.SetProc("clamp", GLOBAL_PROC_REF(n_clamp))
+ interpreter.SetProc("inrange", GLOBAL_PROC_REF(n_inrange))
// End of Donkie~
@@ -278,4 +278,3 @@
var/pass = S.relay_information(newsign, /obj/machinery/telecomms/hub)
if(!pass)
S.relay_information(newsign, /obj/machinery/telecomms/broadcaster) // send this simple message to broadcasters
-
diff --git a/code/modules/shieldgen/directional_shield.dm b/code/modules/shieldgen/directional_shield.dm
index b298e028a72..6754878674f 100644
--- a/code/modules/shieldgen/directional_shield.dm
+++ b/code/modules/shieldgen/directional_shield.dm
@@ -102,13 +102,13 @@
START_PROCESSING(SSobj, src)
if(always_on)
create_shields()
- GLOB.moved_event.register(src, src, .proc/moved_event)
+ GLOB.moved_event.register(src, src, PROC_REF(moved_event))
return ..()
/obj/item/shield_projector/Destroy()
destroy_shields()
STOP_PROCESSING(SSobj, src)
- GLOB.moved_event.unregister(src, src, .proc/moved_event)
+ GLOB.moved_event.unregister(src, src, PROC_REF(moved_event))
return ..()
/obj/item/shield_projector/proc/moved_event()
diff --git a/code/modules/shieldgen/energy_shield.dm b/code/modules/shieldgen/energy_shield.dm
index 0982b2d3b80..68c03ff1fef 100644
--- a/code/modules/shieldgen/energy_shield.dm
+++ b/code/modules/shieldgen/energy_shield.dm
@@ -147,7 +147,7 @@
continue
// Note: Range is a non-exact aproximation of the spread effect. If it doesn't look good
// we'll need to switch to actually walking along the shields to get exact number of steps away.
- addtimer(CALLBACK(S, .proc/impact_flash), get_dist(src, S) * 2)
+ addtimer(CALLBACK(S, PROC_REF(impact_flash)), get_dist(src, S) * 2)
impact_flash()
// Small visual effect, makes the shield tiles brighten up by becoming more opaque for a moment
diff --git a/code/modules/shuttles/shuttles_web.dm b/code/modules/shuttles/shuttles_web.dm
index 1051ba6c2d9..6cfe6ba6a37 100644
--- a/code/modules/shuttles/shuttles_web.dm
+++ b/code/modules/shuttles/shuttles_web.dm
@@ -208,7 +208,7 @@
/obj/machinery/computer/shuttle_control/web/tgui_data(mob/user)
var/list/data = list()
-
+
var/list/routes[0]
var/datum/shuttle/autodock/web_shuttle/shuttle = SSshuttles.shuttles[shuttle_tag]
if(!istype(shuttle))
@@ -409,10 +409,10 @@
/obj/shuttle_connector/Initialize()
. = ..()
- GLOB.shuttle_added.register_global(src, .proc/setup_routes)
+ GLOB.shuttle_added.register_global(src, PROC_REF(setup_routes))
/obj/shuttle_connector/Destroy()
- GLOB.shuttle_added.unregister_global(src, .proc/setup_routes)
+ GLOB.shuttle_added.unregister_global(src, PROC_REF(setup_routes))
. = ..()
// This is called whenever a shuttle is initialized. If its our shuttle, do our thing!
diff --git a/code/modules/tgs/v3210/api.dm b/code/modules/tgs/v3210/api.dm
index 0fc0076c8ba..904a3d8518f 100644
--- a/code/modules/tgs/v3210/api.dm
+++ b/code/modules/tgs/v3210/api.dm
@@ -92,7 +92,7 @@
if(skip_compat_check && !fexists(SERVICE_INTERFACE_DLL))
TGS_ERROR_LOG("Service parameter present but no interface DLL detected. This is symptomatic of running a service less than version 3.1! Please upgrade.")
return
- call(SERVICE_INTERFACE_DLL, SERVICE_INTERFACE_FUNCTION)(instance_name, command) //trust no retval
+ LIBCALL(SERVICE_INTERFACE_DLL, SERVICE_INTERFACE_FUNCTION)(instance_name, command) //trust no retval
return TRUE
/datum/tgs_api/v3210/OnTopic(T)
diff --git a/code/modules/tgui/modules/appearance_changer.dm b/code/modules/tgui/modules/appearance_changer.dm
index a90d69689ba..169cd5a3da8 100644
--- a/code/modules/tgui/modules/appearance_changer.dm
+++ b/code/modules/tgui/modules/appearance_changer.dm
@@ -65,13 +65,13 @@
owner = H
if(owner)
- GLOB.moved_event.register(owner, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.register(owner, src, PROC_REF(update_active_camera_screen))
check_whitelist = check_species_whitelist
whitelist = species_whitelist
blacklist = species_blacklist
/datum/tgui_module/appearance_changer/Destroy()
- GLOB.moved_event.unregister(owner, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.unregister(owner, src, PROC_REF(update_active_camera_screen))
last_camera_turf = null
qdel(cam_screen)
QDEL_LIST(cam_plane_masters)
diff --git a/code/modules/tgui/modules/camera.dm b/code/modules/tgui/modules/camera.dm
index fa67030d557..5a4551f260b 100644
--- a/code/modules/tgui/modules/camera.dm
+++ b/code/modules/tgui/modules/camera.dm
@@ -34,7 +34,7 @@
cam_screen.assigned_map = map_name
cam_screen.del_on_map_removal = FALSE
cam_screen.screen_loc = "[map_name]:1,1"
-
+
cam_plane_masters = get_tgui_plane_masters()
for(var/obj/screen/instance as anything in cam_plane_masters)
@@ -68,7 +68,7 @@
/datum/tgui_module/camera/Destroy()
if(active_camera)
- GLOB.moved_event.unregister(active_camera, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.unregister(active_camera, src, PROC_REF(update_active_camera_screen))
active_camera = null
last_camera_turf = null
qdel(cam_screen)
@@ -131,7 +131,7 @@
/datum/tgui_module/camera/tgui_act(action, params)
if(..())
return TRUE
-
+
if(action && !issilicon(usr))
playsound(tgui_host(), "terminal_type", 50, 1)
@@ -140,9 +140,9 @@
var/list/cameras = get_available_cameras(usr)
var/obj/machinery/camera/C = cameras["[ckey(c_tag)]"]
if(active_camera)
- GLOB.moved_event.unregister(active_camera, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.unregister(active_camera, src, PROC_REF(update_active_camera_screen))
active_camera = C
- GLOB.moved_event.register(active_camera, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.register(active_camera, src, PROC_REF(update_active_camera_screen))
playsound(tgui_host(), get_sfx("terminal_type"), 25, FALSE)
update_active_camera_screen()
return TRUE
@@ -167,9 +167,9 @@
if(target)
if(active_camera)
- GLOB.moved_event.unregister(active_camera, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.unregister(active_camera, src, PROC_REF(update_active_camera_screen))
active_camera = target
- GLOB.moved_event.register(active_camera, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.register(active_camera, src, PROC_REF(update_active_camera_screen))
playsound(tgui_host(), get_sfx("terminal_type"), 25, FALSE)
update_active_camera_screen()
. = TRUE
@@ -273,7 +273,7 @@
// Turn off the console
if(length(concurrent_users) == 0 && is_living)
if(active_camera)
- GLOB.moved_event.unregister(active_camera, src, .proc/update_active_camera_screen)
+ GLOB.moved_event.unregister(active_camera, src, PROC_REF(update_active_camera_screen))
active_camera = null
playsound(tgui_host(), 'sound/machines/terminal_off.ogg', 25, FALSE)
@@ -298,4 +298,3 @@
/datum/tgui_module/camera/bigscreen/tgui_state(mob/user)
return GLOB.tgui_physical_state_bigscreen
-
\ No newline at end of file
diff --git a/code/modules/tgui/modules/ntos-only/uav.dm b/code/modules/tgui/modules/ntos-only/uav.dm
index 252c19d2288..eec4a420789 100644
--- a/code/modules/tgui/modules/ntos-only/uav.dm
+++ b/code/modules/tgui/modules/ntos-only/uav.dm
@@ -94,7 +94,7 @@
signal_strength = 0
current_uav = U
- RegisterSignal(U, COMSIG_MOVABLE_Z_CHANGED, .proc/current_uav_changed_z)
+ RegisterSignal(U, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(current_uav_changed_z))
if(LAZYLEN(viewers))
for(var/datum/weakref/W in viewers)
diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm
index 39835cc8c7a..5c39c756adf 100644
--- a/code/modules/tgui/tgui.dm
+++ b/code/modules/tgui/tgui.dm
@@ -197,7 +197,7 @@
return
//if(!COOLDOWN_FINISHED(src, refresh_cooldown))
//refreshing = TRUE
- //addtimer(CALLBACK(src, .proc/send_full_update), TGUI_REFRESH_FULL_UPDATE_COOLDOWN, TIMER_UNIQUE)
+ //addtimer(CALLBACK(src, PROC_REF(send_full_update)), TGUI_REFRESH_FULL_UPDATE_COOLDOWN, TIMER_UNIQUE)
//return
//refreshing = FALSE
var/should_update_data = force || status >= STATUS_UPDATE
diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm
index 77570c686cb..d2cf51e6328 100644
--- a/code/modules/tooltip/tooltip.dm
+++ b/code/modules/tooltip/tooltip.dm
@@ -89,7 +89,7 @@ Notes:
/datum/tooltip/proc/hide()
if (queueHide)
- addtimer(CALLBACK(src, .proc/do_hide), 1)
+ addtimer(CALLBACK(src, PROC_REF(do_hide)), 1)
else
do_hide()
diff --git a/code/modules/vchat/vchat_client.dm b/code/modules/vchat/vchat_client.dm
index 3fc8e0c98bf..3ef89ec260d 100644
--- a/code/modules/vchat/vchat_client.dm
+++ b/code/modules/vchat/vchat_client.dm
@@ -310,7 +310,7 @@ GLOBAL_LIST_EMPTY(bicon_cache) // Cache of the
tag results, not the icons
base64 = icon2base64(A.examine_icon(), key)
GLOB.bicon_cache[key] = base64
if(changes_often)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/expire_bicon_cache, key), 50 SECONDS, TIMER_UNIQUE)
+ addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(expire_bicon_cache), key), 50 SECONDS, TIMER_UNIQUE)
// May add a class to the img tag created by bicon
if(use_class)
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 02960e0a4bd..b434dd6ffbe 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -298,7 +298,7 @@
// Intended for simple mobs
if(!owner.client && autotransferlocation && autotransferchance > 0)
- addtimer(CALLBACK(src, /obj/belly/.proc/check_autotransfer, thing, autotransferlocation), autotransferwait)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/belly, check_autotransfer), thing, autotransferlocation), autotransferwait)
// Called whenever an atom leaves this belly
/obj/belly/Exited(atom/movable/thing, atom/OldLoc)
@@ -1159,7 +1159,7 @@
else
// Didn't transfer, so wait before retrying
// I feel like there's a way to make this timer looping using the normal looping thing, but pass in the ID and cancel it if we aren't looping again
- addtimer(CALLBACK(src, .proc/check_autotransfer, prey, autotransferlocation), autotransferwait)
+ addtimer(CALLBACK(src, PROC_REF(check_autotransfer), prey, autotransferlocation), autotransferwait)
// Belly copies and then returns the copy
// Needs to be updated for any var changes
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 66739c747b6..dcd06ea333e 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -1193,7 +1193,7 @@
/datum/component/vore_panel/RegisterWithParent()
. = ..()
- RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, .proc/create_mob_button)
+ RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, PROC_REF(create_mob_button))
var/mob/living/owner = parent
if(owner.client)
create_mob_button(parent)
@@ -1215,7 +1215,7 @@
var/datum/hud/HUD = user.hud_used
if(!screen_icon)
screen_icon = new()
- RegisterSignal(screen_icon, COMSIG_CLICK, .proc/vore_panel_click)
+ RegisterSignal(screen_icon, COMSIG_CLICK, PROC_REF(vore_panel_click))
if(ispAI(user))
screen_icon.icon = 'icons/mob/pai_hud.dmi'
screen_icon.screen_loc = ui_acti
@@ -1229,7 +1229,7 @@
/datum/component/vore_panel/proc/vore_panel_click(source, location, control, params, user)
var/mob/living/owner = user
if(istype(owner) && owner.vorePanel)
- INVOKE_ASYNC(owner.vorePanel, .proc/tgui_interact, user)
+ INVOKE_ASYNC(owner.vorePanel, PROC_REF(tgui_interact), user)
/**
* Screen object for vore panel
diff --git a/code/modules/vore/eating/simple_animal_vr.dm b/code/modules/vore/eating/simple_animal_vr.dm
index 243fbbd863d..e18d93fe360 100644
--- a/code/modules/vore/eating/simple_animal_vr.dm
+++ b/code/modules/vore/eating/simple_animal_vr.dm
@@ -88,7 +88,7 @@
for(var/mob/living/L in living_mobs(0)) //add everyone on the tile to the do-not-eat list for a while
if(!(LAZYFIND(prey_excludes, L))) // Unless they're already on it, just to avoid fuckery.
LAZYSET(prey_excludes, L, world.time)
- addtimer(CALLBACK(src, .proc/removeMobFromPreyExcludes, WEAKREF(L)), 5 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(removeMobFromPreyExcludes), WEAKREF(L)), 5 MINUTES)
else if(istype(O, /obj/item/device/healthanalyzer))
var/healthpercent = health/maxHealth*100
to_chat(user, "[src] seems to be [healthpercent]% healthy.")
diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm
index f09077ee4b8..4088c22aed8 100644
--- a/code/modules/vore/resizing/sizegun_vr.dm
+++ b/code/modules/vore/resizing/sizegun_vr.dm
@@ -25,7 +25,7 @@
/obj/item/weapon/gun/energy/sizegun/New()
..()
- verbs += .proc/select_size
+ verbs += PROC_REF(select_size)
/obj/item/weapon/gun/energy/sizegun/attack_self(mob/user)
. = ..()
@@ -192,4 +192,4 @@
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
tracer_type = /obj/effect/projectile/tracer/darkmatter
- impact_type = /obj/effect/projectile/impact/darkmatter
\ No newline at end of file
+ impact_type = /obj/effect/projectile/impact/darkmatter
diff --git a/code/modules/webhooks/_webhook.dm b/code/modules/webhooks/_webhook.dm
index e7cfb646cd7..f1cf4841c48 100644
--- a/code/modules/webhooks/_webhook.dm
+++ b/code/modules/webhooks/_webhook.dm
@@ -10,7 +10,7 @@
if (!target_url)
return -1
- var/result = call(HTTP_POST_DLL_LOCATION, "send_post_request")(target_url, payload, json_encode(list("Content-Type" = "application/json")))
+ var/result = LIBCALL(HTTP_POST_DLL_LOCATION, "send_post_request")(target_url, payload, json_encode(list("Content-Type" = "application/json")))
result = cached_json_decode(result)
if (result["error_code"])
diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt
index 440e35dbf25..ab8ff272aea 100644
--- a/config/alienwhitelist.txt
+++ b/config/alienwhitelist.txt
@@ -105,6 +105,7 @@ oreganovulgaris - Xenochimera
owwy - Black-Eyed Shadekin
oxenfree - Protean
ozyton - Black-Eyed Shadekin
+pandora029 - Protean
paradoxspace - Xenochimera
pastelprincedan - Black-Eyed Shadekin
pastelprincedan - Protean
diff --git a/icons/inventory/uniform/mob.dmi b/icons/inventory/uniform/mob.dmi
index 5d36de239b8..5d096791cc4 100644
Binary files a/icons/inventory/uniform/mob.dmi and b/icons/inventory/uniform/mob.dmi differ
diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi
index e6d8d921bf4..2d3a62066d7 100644
Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ
diff --git a/icons/mob/vore/taurs_vr.dmi b/icons/mob/vore/taurs_vr.dmi
index 99c6e7debea..c228fcd28ad 100644
Binary files a/icons/mob/vore/taurs_vr.dmi and b/icons/mob/vore/taurs_vr.dmi differ
diff --git a/maps/atoll/atoll_objs.dm b/maps/atoll/atoll_objs.dm
index 32ab2c07f9b..3f04c540d3a 100644
--- a/maps/atoll/atoll_objs.dm
+++ b/maps/atoll/atoll_objs.dm
@@ -255,7 +255,7 @@
name = "Falls Monolith - The Song"
desc = "Her song cannot end. If her song ends, then we end. We cannot outlive a missing song. We cannot \
live with the mourning of our fell makers. We will die. But the life on this wanderstar will go on. \
- Who will it live for then? We primaries are the only ones with the lorehalldeals to acknowledge it's beauty."
+ Who will it live for then? We primaries are the only ones with the mindset to acknowledge it's beauty."
value = CATALOGUER_REWARD_TRIVIAL
/datum/category_item/catalogue/anomalous/mono5
diff --git a/maps/atoll/atoll_turfs.dm b/maps/atoll/atoll_turfs.dm
index 26bdc3419f7..c7aa914aa72 100644
--- a/maps/atoll/atoll_turfs.dm
+++ b/maps/atoll/atoll_turfs.dm
@@ -26,7 +26,7 @@
/turf/simulated/floor/water/atoll
name = "shallow water"
- desc = "This water looks pretty shallow and calm. You'd almost feel bad for hopping in and disturbing it's serene flatness."
+ desc = "This water looks pretty shallow and calm. You'd almost feel bad for hopping in and disturbing its serene flatness."
icon = 'maps/atoll/icons/turfs/water.dmi'
icon_state = "shallow"
under_state = "shallow"
diff --git a/maps/atoll/falls.dmm b/maps/atoll/falls.dmm
index 81d4a63efdb..12ffc41bc6b 100644
--- a/maps/atoll/falls.dmm
+++ b/maps/atoll/falls.dmm
@@ -6,6 +6,7 @@
"aD" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang,/obj/structure/flora/tree/atoll/mangrove{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"aE" = (/obj/structure/canopy_corner{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"aJ" = (/obj/effect/floor_decal/atoll/border{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"aM" = (/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"aN" = (/obj/structure/flora/tree/atoll/mangrove,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"aO" = (/obj/structure/canopy/edge/north,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"aP" = (/obj/effect/floor_decal/atoll/bronze{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -33,7 +34,7 @@
"cz" = (/obj/structure/canopy,/obj/structure/aqueduct/corner{dir = 9},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"cA" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang,/obj/effect/decal/shadow/silhouette/support,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"cE" = (/obj/structure/waterfall,/obj/structure/canopy/edge,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
-"cG" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"cG" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 8},/obj/effect/floor_decal/atoll/border{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"cH" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"cS" = (/obj/structure/aqueduct/pillar,/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"cU" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -60,11 +61,13 @@
"ev" = (/obj/machinery/gateway{dir = 8},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"ey" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"eA" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"eC" = (/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"eG" = (/obj/structure/waterfall,/obj/structure/railing/overhang/waterless,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"eJ" = (/obj/effect/floor_decal/atoll/border{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"eN" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"eX" = (/obj/structure/canopy/edge/south,/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"fj" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"fq" = (/obj/effect/floor_decal/atoll/bronze{dir = 5},/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"fu" = (/obj/structure/waterfall,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/waterfall/mist,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"fG" = (/obj/structure/railing/overhang,/obj/effect/decal/shadow/silhouette/support,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"fH" = (/obj/effect/floor_decal/atoll/power,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -75,6 +78,7 @@
"go" = (/obj/structure/canopy,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"gs" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"gv" = (/obj/structure/canopy,/obj/effect/blocker,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"gw" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"gx" = (/obj/structure/canopy/edge,/obj/effect/decal/godray{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"gy" = (/obj/effect/floor_decal/atoll/border{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"gz" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 40; teleport_y = 50},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -96,7 +100,7 @@
"hz" = (/obj/structure/canopy,/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"hI" = (/obj/structure/canopy,/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"hQ" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border/invert{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
-"hV" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"hV" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"hW" = (/obj/structure/canopy/edge/south,/obj/structure/canopy/edge/north,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"hX" = (/obj/structure/flora/tree/atoll/mangrove{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"ic" = (/obj/structure/waterfall,/obj/effect/blocker,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -107,7 +111,9 @@
"il" = (/obj/structure/canopy/edge/north,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"ir" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"it" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang,/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"iy" = (/obj/structure/aqueduct,/obj/structure/canopy_corner{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"iz" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"iF" = (/obj/effect/blocker,/obj/effect/decal/shadow,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"iJ" = (/obj/structure/canopy,/obj/structure/aqueduct/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"iN" = (/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"iS" = (/obj/effect/decal/shadow,/obj/effect/floor_decal/atoll/stairs,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -117,15 +123,18 @@
"jx" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"jD" = (/obj/effect/floor_decal/atoll/border{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"jE" = (/obj/effect/decal/godray{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"jF" = (/obj/structure/aqueduct{dir = 1},/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"jK" = (/obj/structure/waterfall,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"jM" = (/obj/effect/decal/shadow/floor,/obj/structure/waterfall,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"jO" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"jP" = (/obj/structure/canopy/edge/south,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
-"jW" = (/obj/structure/canopy/edge/south,/obj/vehicle/boat{icon_state = "boat"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"jT" = (/obj/structure/canopy/edge/north,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"jW" = (/obj/structure/canopy/edge/south,/obj/vehicle/boat{icon_state = "boat"; dir = 8},/obj/item/weapon/oar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"jX" = (/obj/structure/railing/overhang/waterless,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"jZ" = (/obj/structure/canopy/edge/north,/obj/structure/temple,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"ka" = (/obj/structure/waterfall,/obj/structure/canopy_corner,/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"kh" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"km" = (/obj/effect/blocker,/obj/structure/canopy,/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"ko" = (/obj/effect/blocker,/obj/structure/canopy_corner{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"kO" = (/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/border/invert{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"kQ" = (/obj/structure/canopy/edge/north,/obj/effect/decal/godray{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -134,6 +143,8 @@
"ld" = (/obj/structure/canopy/edge/north,/obj/effect/decal/godray,/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
"lh" = (/obj/effect/floor_decal/atoll/border{dir = 4},/obj/structure/aqueduct,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"ll" = (/obj/structure/railing/overhang/waterless,/obj/structure/flora/tree/atoll/mangrove{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"lq" = (/obj/effect/floor_decal/atoll/bronze{dir = 9},/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"lu" = (/obj/structure/canopy/edge/north,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"lv" = (/obj/effect/blocker,/obj/structure/canopy,/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"lH" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"lI" = (/obj/structure/canopy/edge/north,/obj/effect/decal/godray,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -147,6 +158,7 @@
"lX" = (/obj/structure/waterfall/top,/obj/structure/canopy/edge,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"mh" = (/obj/effect/decal/shadow/silhouette/support,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"mo" = (/obj/structure/canopy/edge,/obj/effect/decal/godray,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"ms" = (/obj/effect/blocker,/obj/effect/floor_decal/atoll/bronze{dir = 9},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"mv" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"mC" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/structure/canopy/edge/right,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"mL" = (/obj/effect/blocker,/obj/structure/canopy/edge/north,/obj/structure/flora/tree/atoll/mangrove{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -166,6 +178,7 @@
"nX" = (/obj/structure/canopy,/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"nY" = (/obj/structure/canopy/edge/north,/obj/effect/decal/godray{dir = 8},/obj/structure/bed/chair/sofa/bench/marble{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"ob" = (/obj/structure/monolith/fifth,/obj/effect/decal/godray,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"of" = (/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"oi" = (/obj/structure/railing/overhang/waterless/under{dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"or" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 44; teleport_y = 50},/obj/effect/floor_decal/atoll/border{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"ov" = (/obj/effect/decal/shadow/silhouette,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -175,7 +188,8 @@
"oF" = (/obj/effect/floor_decal/atoll/border{dir = 5},/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"oK" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"oR" = (/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
-"oV" = (/obj/effect/floor_decal/atoll/bronze{dir = 6},/obj/effect/floor_decal/atoll/border/invert{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"oV" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"oW" = (/obj/effect/floor_decal/atoll/bronze{dir = 10},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"pb" = (/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/structure/bed/chair/sofa/bench/marble{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"pj" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/effect/decal/shadow,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"pl" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -184,6 +198,7 @@
"pA" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 15; teleport_y = 116},/obj/effect/floor_decal/atoll/border{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"pV" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/canopy_corner{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"pX" = (/obj/effect/decal/shadow/silhouette,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"qa" = (/obj/structure/aqueduct{dir = 1},/obj/structure/canopy_corner{dir = 1},/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"qb" = (/obj/structure/monolith/fourth,/obj/effect/decal/godray,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"qk" = (/obj/effect/floor_decal/atoll/border{dir = 6},/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"ql" = (/obj/structure/canopy/edge,/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
@@ -195,8 +210,9 @@
"qK" = (/obj/effect/floor_decal/atoll/border{dir = 6},/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/step_trigger/teleporter/atoll{teleport_x = 32; teleport_y = 117},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"qS" = (/obj/structure/aqueduct/pillar{dir = 4},/obj/structure/canopy_corner{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"qW" = (/obj/structure/canopy_corner,/obj/structure/flora/tree/atoll/mangrove,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
-"qY" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"qY" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"rb" = (/obj/structure/canopy,/obj/effect/decal/godray{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"rc" = (/obj/structure/aqueduct,/obj/structure/aqueduct/pillar{dir = 1},/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"rg" = (/obj/effect/decal/shadow/floor,/obj/effect/decal/shadow/silhouette,/obj/structure/waterfall,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"ri" = (/obj/structure/canopy,/obj/effect/decal/godray{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"rj" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -204,6 +220,7 @@
"rs" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"ru" = (/obj/effect/blocker,/obj/structure/canopy,/obj/structure/temple,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"ry" = (/obj/structure/canopy/edge/south,/obj/structure/railing/overhang,/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"rB" = (/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"rE" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"rH" = (/obj/effect/decal/shadow/silhouette,/obj/structure/railing/overhang/waterless,/obj/structure/flora/tree/atoll/mangrove{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"rK" = (/obj/effect/floor_decal/atoll{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -213,28 +230,36 @@
"so" = (/obj/structure/railing/overhang/waterless,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"sr" = (/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"sE" = (/obj/effect/decal/shadow/floor,/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
+"sH" = (/obj/vehicle/boat{icon_state = "boat"; dir = 4},/obj/item/weapon/oar,/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
"sI" = (/obj/structure/aqueduct,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"sN" = (/obj/structure/waterfall,/obj/structure/railing/overhang/waterless,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"sU" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang,/obj/effect/decal/shadow/silhouette/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"sV" = (/obj/structure/canopy,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"sX" = (/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"sY" = (/obj/structure/waterfall/top,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"sZ" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"tf" = (/obj/structure/canopy_corner{dir = 1},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"tl" = (/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/border{dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"to" = (/obj/structure/canopy/edge/south,/obj/structure/aqueduct/pillar{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"tr" = (/obj/structure/waterfall/mist,/obj/structure/waterfall,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"tt" = (/obj/effect/floor_decal/atoll/bronze{dir = 10},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"tu" = (/obj/effect/decal/shadow/floor,/obj/structure/waterfall,/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"tz" = (/obj/structure/aqueduct{dir = 1},/obj/structure/canopy_corner,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"tB" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"tD" = (/obj/effect/decal/shadow/silhouette/pillar,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"tJ" = (/obj/structure/canopy_corner{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"tM" = (/obj/structure/canopy/edge/right,/obj/structure/canopy/edge,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"tP" = (/obj/structure/canopy/edge/north,/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"tS" = (/obj/structure/canopy/edge/right,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"tT" = (/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"tV" = (/obj/structure/aqueduct,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"tX" = (/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
"tY" = (/obj/effect/floor_decal/atoll,/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"ub" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"ud" = (/obj/structure/canopy_corner{dir = 4},/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"ug" = (/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"ui" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/border{dir = 1},/obj/effect/landmark,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"uj" = (/obj/effect/blocker,/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"uo" = (/obj/structure/waterfall,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"uv" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"uA" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
@@ -246,9 +271,11 @@
"vl" = (/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"vm" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"vn" = (/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"vp" = (/obj/effect/blocker,/obj/structure/aqueduct,/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"vy" = (/obj/structure/waterfall/top,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"vI" = (/obj/structure/waterfall/top,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/canopy/edge,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"vK" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
+"vM" = (/obj/structure/aqueduct/pillar{dir = 4},/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"vQ" = (/obj/structure/canopy,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"vT" = (/obj/effect/decal/shadow/silhouette,/obj/structure/canopy/edge/right,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"vW" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -286,12 +313,14 @@
"yz" = (/obj/structure/waterfall/top,/obj/structure/aqueduct{dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"yD" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"yE" = (/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/landmark,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"yF" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/obj/effect/floor_decal/atoll/border{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"yI" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/border{dir = 9},/obj/effect/step_trigger/teleporter/atoll{teleport_x = 17; teleport_y = 124},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"yJ" = (/obj/effect/floor_decal/atoll/border{dir = 8},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"yM" = (/obj/structure/canopy,/obj/effect/blocker,/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"yW" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 73; teleport_y = 50},/obj/effect/floor_decal/atoll/border{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"zb" = (/obj/structure/waterfall/top,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"zc" = (/obj/machinery/gateway{dir = 5},/obj/effect/floor_decal/atoll/border{dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"zd" = (/obj/effect/floor_decal/atoll/bronze{dir = 10},/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"zh" = (/obj/structure/canopy/edge,/obj/structure/canopy/edge/right,/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"zk" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"zt" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -301,6 +330,7 @@
"zE" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"zN" = (/obj/structure/aqueduct/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"zO" = (/obj/structure/aqueduct/pillar,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"zR" = (/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"zU" = (/obj/effect/blocker,/obj/structure/canopy/edge/north,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"zY" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ae" = (/obj/effect/floor_decal/atoll/border,/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -322,10 +352,11 @@
"Bh" = (/obj/structure/railing/overhang,/obj/structure/flora/tree/atoll/mangrove,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Bo" = (/obj/structure/canopy/edge/south,/obj/effect/decal/godray{dir = 1},/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
"Bq" = (/obj/structure/waterfall,/obj/structure/canopy/edge,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
+"BA" = (/obj/structure/aqueduct,/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"BB" = (/obj/effect/floor_decal/atoll/stairs,/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"BF" = (/obj/effect/floor_decal/atoll/border,/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/landmark,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"BH" = (/obj/structure/canopy,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
-"BL" = (/obj/structure/bed/chair/sofa/bench/marble,/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"BL" = (/obj/structure/bed/chair/sofa/bench/marble,/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Cb" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Cd" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Ce" = (/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -335,6 +366,7 @@
"Cr" = (/obj/structure/railing/overhang/waterless/under{dir = 1},/obj/structure/railing/overhang/waterless/under{dir = 4},/obj/structure/waterfall,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"Cs" = (/obj/structure/railing/overhang/waterless/under{dir = 1},/obj/structure/waterfall,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"Cw" = (/obj/effect/landmark,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"Cz" = (/obj/structure/aqueduct,/obj/structure/aqueduct/pillar{dir = 1},/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"CH" = (/obj/effect/floor_decal/atoll/bronze{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"CL" = (/obj/structure/canopy_corner,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"CM" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
@@ -346,6 +378,7 @@
"Dl" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Do" = (/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border{dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Dp" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"Dq" = (/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Du" = (/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Dw" = (/obj/structure/canopy_corner,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Dy" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 12; teleport_y = 50},/obj/effect/floor_decal/atoll/border{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -354,12 +387,13 @@
"DI" = (/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/structure/bed/chair/sofa/bench/marble{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"DJ" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"DM" = (/obj/structure/lightpost/atoll,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"DO" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"DV" = (/obj/structure/railing/overhang/waterless/under{dir = 1},/obj/structure/railing/overhang/waterless/under{dir = 8},/obj/structure/waterfall,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"Eb" = (/obj/effect/blocker,/obj/structure/canopy/edge,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ej" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/structure/canopy/edge/north,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Em" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ep" = (/obj/structure/canopy_corner{dir = 1},/obj/structure/flora/tree/atoll/mangrove,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
-"Eq" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/vehicle/boat{icon_state = "boat"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"Eq" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/vehicle/boat{icon_state = "boat"; dir = 8},/obj/item/weapon/oar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Er" = (/obj/structure/bed/chair/sofa/bench/marble,/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Et" = (/obj/structure/railing/overhang,/obj/structure/flora/tree/atoll/mangrove{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ev" = (/obj/effect/floor_decal/atoll/border{dir = 8},/obj/structure/aqueduct,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -372,6 +406,7 @@
"EW" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze,/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"EY" = (/obj/effect/blocker,/obj/structure/canopy,/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Fb" = (/obj/structure/canopy/edge/north,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"Ff" = (/obj/vehicle/boat{icon_state = "boat"; dir = 8},/obj/item/weapon/oar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Fg" = (/obj/effect/floor_decal/atoll{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Fr" = (/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Fw" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/effect/decal/shadow/silhouette/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -399,6 +434,7 @@
"GG" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"GL" = (/obj/effect/floor_decal/atoll,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"GO" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
+"GP" = (/obj/structure/canopy,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ha" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Hb" = (/obj/structure/canopy_corner{dir = 4},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Hi" = (/obj/structure/waterfall,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
@@ -440,6 +476,7 @@
"Kx" = (/obj/structure/canopy/edge/south,/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"KD" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 71; teleport_y = 82},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"KG" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"KL" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/obj/structure/canopy_corner{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"KM" = (/obj/structure/temple,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"KN" = (/obj/structure/monolith/first,/obj/effect/decal/godray,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"KT" = (/obj/effect/blocker,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/waterfall,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -447,6 +484,7 @@
"KZ" = (/obj/structure/aqueduct{dir = 8},/obj/structure/canopy/edge,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Lb" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"Lc" = (/obj/structure/waterfall,/obj/effect/decal/shadow/floor,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"Lg" = (/obj/effect/floor_decal/atoll/bronze{dir = 6},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Lj" = (/obj/structure/canopy,/obj/structure/aqueduct{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Lr" = (/obj/structure/canopy/edge/south,/obj/structure/canopy_corner{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ls" = (/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -472,7 +510,9 @@
"My" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"MD" = (/obj/effect/decal/godray{dir = 4},/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
"MM" = (/obj/effect/floor_decal/atoll/border{dir = 5},/obj/effect/floor_decal/atoll/bronze{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"MR" = (/obj/effect/blocker,/obj/structure/canopy_corner,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Nf" = (/obj/effect/decal/shadow,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/obj/structure/railing/overhang/waterless,/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
+"Nh" = (/obj/effect/blocker,/obj/effect/floor_decal/atoll/bronze{dir = 10},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Nn" = (/obj/effect/floor_decal/atoll/stairs,/obj/effect/decal/shadow,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"No" = (/obj/effect/decal/shadow/silhouette,/obj/structure/canopy,/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ns" = (/obj/structure/canopy/edge/north,/obj/structure/canopy/edge/south,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -492,6 +532,7 @@
"OH" = (/obj/structure/canopy_corner{dir = 4},/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"OI" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Pd" = (/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"Pe" = (/obj/structure/canopy_corner,/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Pk" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 100; teleport_y = 50},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border/invert{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Pm" = (/obj/effect/floor_decal/atoll/bronze{dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Pn" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -520,14 +561,16 @@
"Rd" = (/obj/effect/decal/shadow,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/obj/structure/railing/overhang/waterless,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"Rf" = (/obj/structure/aqueduct/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Rg" = (/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/landmark,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"Rl" = (/obj/structure/aqueduct{dir = 1},/obj/structure/canopy/edge/right,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Rn" = (/obj/structure/canopy_corner{dir = 4},/obj/structure/aqueduct{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Rw" = (/obj/structure/waterfall/top,/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"RE" = (/obj/effect/decal/shadow,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
-"RF" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"RF" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"RG" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/godray{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"RR" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"RS" = (/obj/structure/canopy_corner,/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls)
"RV" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/effect/blocker,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"RW" = (/obj/structure/aqueduct/pillar{dir = 1},/obj/structure/canopy_corner{dir = 8},/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Si" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/canopy/edge/north,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Sk" = (/obj/effect/floor_decal/atoll/border/invert,/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Sn" = (/obj/structure/canopy/edge/north,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -540,6 +583,7 @@
"SN" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"SO" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/effect/decal/shadow/silhouette,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"SR" = (/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/decal/godray,/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"Tb" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/border{dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Td" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Tg" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ti" = (/obj/structure/waterfall/top,/obj/structure/canopy/edge/south,/obj/structure/aqueduct{dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
@@ -549,6 +593,7 @@
"TA" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"TD" = (/obj/structure/temple,/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"TF" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/canopy/edge/north,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"TH" = (/obj/structure/aqueduct{dir = 1},/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"TI" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"TM" = (/obj/structure/waterfall,/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"TR" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 83; teleport_y = 50},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -565,28 +610,31 @@
"Vb" = (/obj/machinery/gateway,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Vc" = (/obj/effect/floor_decal/atoll/bronze{dir = 6},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Vd" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/border{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
-"Ve" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/vehicle/boat{icon_state = "boat"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"Ve" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/vehicle/boat{icon_state = "boat"; dir = 4},/obj/item/weapon/oar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Vg" = (/obj/effect/blocker,/obj/structure/canopy/edge/south,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Vk" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll{dir = 8},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"Vn" = (/obj/structure/aqueduct/pillar{dir = 4},/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Vp" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border{dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Vs" = (/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Vx" = (/obj/effect/blocker,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"VM" = (/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"VQ" = (/obj/structure/canopy/edge,/obj/structure/canopy/edge/right,/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
-"VT" = (/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"VT" = (/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"VZ" = (/obj/structure/canopy_corner{dir = 1},/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Wc" = (/obj/effect/decal/shadow/silhouette,/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Wj" = (/obj/structure/canopy,/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Wk" = (/obj/structure/waterfall/top,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
+"Wm" = (/obj/effect/blocker,/obj/structure/aqueduct{dir = 1},/obj/structure/canopy,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Wp" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Ww" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/border{dir = 1},/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"WA" = (/obj/effect/floor_decal/atoll{dir = 4},/obj/structure/bed/chair/sofa/bench/marble{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"WK" = (/obj/effect/floor_decal/atoll/stairs,/obj/effect/decal/shadow,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"WM" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
-"WP" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/vehicle/boat{icon_state = "boat"; dir = 4},/obj/effect/decal/godray{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"WO" = (/obj/structure/canopy_corner{dir = 8},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"WP" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/vehicle/boat{icon_state = "boat"; dir = 4},/obj/effect/decal/godray{dir = 1},/obj/item/weapon/oar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"WQ" = (/obj/structure/canopy_corner,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"WS" = (/obj/effect/floor_decal/atoll/border{dir = 6},/obj/structure/bed/chair/sofa/bench/marble{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
-"WV" = (/obj/vehicle/boat{icon_state = "boat"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"WV" = (/obj/vehicle/boat{icon_state = "boat"; dir = 4},/obj/item/weapon/oar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"WW" = (/obj/effect/floor_decal/atoll/border{dir = 4},/obj/effect/floor_decal/atoll/border{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"WX" = (/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Xa" = (/obj/effect/floor_decal/atoll/border{dir = 10},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
@@ -603,14 +651,18 @@
"XR" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 14; teleport_y = 117},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"XX" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/canopy/edge,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ya" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/canopy/edge/north,/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"Yb" = (/obj/structure/canopy_corner{dir = 8},/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Ym" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/border{dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Yn" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/effect/decal/shadow/silhouette/support,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Yv" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 57; teleport_y = 50},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
"Yw" = (/obj/structure/waterfall,/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
+"Yy" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/obj/structure/canopy/edge/right,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"YC" = (/obj/structure/waterfall,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
+"YE" = (/obj/effect/decal/shadow/silhouette/support,/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"YG" = (/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"YH" = (/obj/structure/canopy/edge/north,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette/support,/obj/effect/decal/godray{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"YK" = (/obj/machinery/gateway{dir = 9},/obj/effect/floor_decal/atoll/border{dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"YL" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/canopy_corner{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Za" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Zb" = (/obj/structure/flora/tree/atoll/mangrove{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"Zf" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
@@ -625,7 +677,8 @@
"ZM" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/obj/structure/railing/overhang/waterless,/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls)
"ZN" = (/obj/structure/aqueduct/pillar{dir = 4},/obj/structure/canopy_corner{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
"ZP" = (/obj/structure/waterfall,/obj/structure/aqueduct{dir = 8},/obj/structure/waterfall/mist,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
-"ZQ" = (/obj/effect/floor_decal/atoll/bronze{dir = 10},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"ZQ" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/bronze{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll/falls)
+"ZX" = (/obj/structure/canopy_corner{dir = 1},/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls)
(1,1,1) = {"
FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrWQqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqn
@@ -641,56 +694,56 @@ FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrBqHiHiHiHiHiHiHiHiHiGoHiHiHiHiHi
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrvcHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoZoqyhjVMVMVMGhhpsNGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiKcGoHiHiHiHiHi
WjWjWjWjWjWjNuWjWjWjWjWjWjWjWjWjWjFrFrFrFrFrFrFrFrcEjKjKjKjKjKjKjKjKGoHiHiHiHiHiHiHiHiHiGojKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKGOqyFgciGqGqGqFgcihpxsjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKGoHiHiHiHiHiHiHiHiHiGojKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKGoHiHiHiHiHiHiHiHiKcGojKjKjKjKjK
nXnXnXnXnXnXEYnXGvnXnXnXGvnXnXnXGvczFrFrFrFrFrFrFrAhwrwrwrwrwrwrwrwrGoHiHiHiHiHiHiHiHiHiGowrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrGOaWGLxogditgdgSrKaJxstrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrGoHiHiHiHiHiHiHiHiHiGowrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrGoHiHiHiHiHiHiHiHiKcGowrwrwrwrwr
-FrFrFrFrFrFrlPFriJFrFrFriJFrFrFriJFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGOaWWWPnlaKNPnHaWWaJxsqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiKcGoqnqnqnqnqn
-FrFrFrFrFrFrlPFriJFrLTaEiJFrFrFrHshIhIFrFrFrFrFrFrzCtXtXqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGOaWFgaDgIsUgIPHciaJxsqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiKcGoqnqnqnqnqn
-FrFrFrFrFrFrlPLTQoLrWQqntoaEFrBHXRWwkOaRFrFrFrFrFrzCjxjxqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiHiUZqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnHDaWGLrKGqGqGqGLrKaJpjqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiHiUZqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiKcUZqnqnqnqnqn
-FrFrFrFrFrFrlPzCmhFrFrWQFVhuFrBHSKLMHQaRFrFrFrFrLTqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKjKCMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnubaWiNjDjDjDjDjDvmaJnDqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKjKCMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKicCMqnqnqnqnqn
-FrFrFrFrFrFrlPWQhuFrFrFrFrFrFrBHHMAuvWaRFxLyaEFrzCqnqntXtXqnqnqnqnqnVswrwrwrwrwrwrwrwrwrVsqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnpXGfDbaAdGVMaAdGGfDbovqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnVswrwrwrwrwrwrwrwrwrVsqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnVswrwrwrwrwrwrwrwrGEVsqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrLTUrUrUraEBHpmtfFrzCqnqnjxsoqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnqnqngIgIgIgIgIqnqnqnqnqnqnqnqnqnjxREREWKiSREiSWKREREjxqnqnqnqnqnqnqnqnqngIgIgIgIgIqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnozjxqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrhIhIFrFrFrFrzCGoGoGohuFrQmFrFrzCqnqngActMtqnqnqnqnqnqnTvqntXqnqnqnqnqnqnqnqnqnqnladjDuDuDuoFmvgIgIgIgIgIgIgIgIgICMCMBBxHCMxHBBCMCMgIgIgIgIgIgIgIgIgIPddjDuDuDuoFPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrBHFgciaRFrFrFrzCUZUZUZFrFrCMaEFrzCqnYGqnREqnqnZbqnqnqnlRfHEjjxqnqnqnqnqnqnqnqnqnqnlaaWZEQqIJGhDuhjRRvlvlvlvlErLDVMhchctBWMXqkhCbhchcVMRRErvlvlvlvlLDGhDuhjZEQqIJaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrBHGLrKaRFrFrFrWQCMCMCMaEFrbJhuFrzCqnTvTvVsqnTvTvTvTvhuFrUrFrzCqnqnqnqnqnqnqnqnqnqnlaaWCexIWpVMVMVMVMVMVMVMVMVMVMVMVMVMVMaJxzaWVMVMVMVMVMVMVMVMVMVMVMVMVMVMCeQeWpaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrREREFrhIhIhIhINTNTbJhuFrUcFrLTqngAFgcismgAdRgsxvMjaRFrUZFrWQqnqnqntXqnqnqnqnqnqnlaaWCHJkPmiNjDvmtTJkJkJkJkJkaPVMVMVMVMGhDuhjVMVMVMVMtTeNeNeNeNeNaPiNjDvmCHJkPmaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnKMqnqnYGqnqnaNqnqnqnjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrLTCMCMBHyIESGDMMUQUcUcFrFrFrFrzCqngAGLrKMtgApARgyEgUaRFrCMFrFrzCqnqnjxqnqnqnqnqnqnlaGfvmVMiNDbZfPCPCPCPCPCPCPCPCPCwFCHVMVMVMVMVMPmnAPCPCPCPCPCPCPCPCPCOIGfvmVMiNDbPnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrWQOuagBHVdBauiqKaRhIFrFrFrFrFrzCqnqnREREqngAXadwvnWSxFFrNohIFrzCqnqnqnqnqnqnqnqnqngIVTaWVMaJZfqnqnqnqnqnqnqnqnqnqnqnPCwFVMVMVMnAPCqnqnqnqnqnqnqnqnqnqnqnOIaWVMaJqYgIqnqnqnqnZbqnqnqnqnKMqnqnqnqnqnqnqnqnqntXtXqnqnqnqnqntXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrUcUcFrREREREREBHfHaRFrFrFrLTqnqnqnVsFUllqnUrUrUrUrrbHbNCXuaRzCqnqnqnqnqnqnqnqntXVMGhhjVMGhPnqnqnqnqnqnqnRfqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnRfqnqnqnqnqnqnlahjVMGhhjVMtXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxjxqnqnqnqnqnjxqnqnKMqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrNTNTniagFrQmaEFrFxFrzCqnqnqnzkDIEWMtUZUZUZUZFrDwZIVcaRzCqnqnqnqnqntXtXtXEyCwVMVMVMVMPnqnqnqnqnqnqnzNqnqnqnqnqnqnsEVMVMPnqnqnqnqnqnzNqnqnqnqnqnqnlaVMVMVMVMVMVMtXtXtXtXtXtXtXtXtXtXtXqntXqnqntXqntXqnqnqnqnqnqnhXqnqnqntXqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrUcUcUcUcFrwfhuFxFxFrzCqnqnqnqnUrUrqwCMCMCMCMFrFrREREFrzCKMqnqnqnqntXtXtXsEVMVMVMVMVMPnqnqnqnqnqnqnzNqnqnqnqnqnqntXsEVMPnqnqnqnqnqnzNqnqnqnqnqnqnlaVMVMVMVMVMsEtXjxtXtXtXtXtXtXtXtXjxqnjxtXqnjxqnjxtXqnqnqnqnqnqnqnqnqnjxqnqntXqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrLTjxFrFxFxLTqnqnaNqnqnUZUZFrnbniWcagFrFrCMCMFrzCqnqnqntXqnjxjxjxjxPCOIvmVMiNPnqnqnqnqnqnqnKuqnqnqnqnqnlaVMtXsEqnqnqnqnqnqnKuqnqnqnqnqnqnlavmVMiNZfPCjxjxhXjxjxjxjxjxjxjxjxqnqnqnjxqnqnqnZbjxqnqnqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrWQhuFrFrLTqnqnqnqnqnqnCMCMFrDpDpDpDpFrFrniagFrzCYGqnqnjxqnqnqnqnqngIPHaWVMaJmvgIqnqnqnqnqnmhqnqnqnqnqnqnsETgtXhXqnqnqnqnqnmhqnqnqnqnqngIPHaWVMaJmvgIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqnqnaNKMqnqnqnqnqnXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXLXFXFXFXFXFXF
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnVsvTFrFrFrFrFrFrFrDpDpFrzCqntXtXqnqnqnqnqnladRDuhjVMGhDumNPnqnqnqnqnqnqnKMqnZbqnqntXtXtXqnKMqnqnqnqnqnqnqnqnqnladRDuhjVMGhDumNPnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnYGMrqnsXJSsXsXsXsXsXsXJSsXsXsXsXsXsXJSQSsXsXsXsXsXJS
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFxLTqnqnqnqnqnqntXqnjxjxjPaEFrFrFrFrFrFrFrLTqnqntXtXqnqnqnqnqnlaaWtTeNeNeNaPaJPnqnqnqnqnqnqnqnqnqnqnlaVMtXjxqnqnqnqnqnqnqnqnqnqnqnlaaWtTeNeNeNaPaJPnqnqnqnZbqnqnqnqnqnqnqnqnqnqnjxtXqnqnqnqntXqnqntXxOeeKMKuqnqnqnqnqnqnKuqnqnqnqnqnqnKuozqnqnqnqnqnKu
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrLTjPqnqnqnqnqnqnqnjxqntXqnqnqnjPjPjPjPjPjPjPqnqnqnjxjxqnqnqnqnqnlaaWQzxogdgSbVaJPnqnqnqnqnqnqnqntXtXtXtXsEVMtXqnqntXtXtXqnqnqnqnqnqnlaaWQzxogdgSbVaJPnqnqnqnqnqnqnqnqnqnKMqnqnqnaNqntXqnqnqnqnjxqntXjxxOeeqnmhqnqnqnqnqnqnmhqnqnqnqnqnqnmhozqnqnqnqnqnmh
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqntXqnqnqntXqnqnqnqnqnqnlaaWQzPnhXlabVaJPnqnqnqnqnqnqnqnjxtXtXtXjxsEVMtXtXVMtXjxqnYGqnqnqnqnlaaWQzPnZblabVaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqntXjxqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFruKqnqnqnqnqnqnqnqnqnqnqnqnaNqngIqnqntXqnqnjxqnqnqnjxqnqnqnqnqnqnlaaWQzmvgIPHbVaJPnqnqnqnqngIqnqnqnjxjxgPqnZHgdjxjxgdjxqnqngIqnqnqnqnlaaWQzmvgIPHbVaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnjxqnqnxOeeqnqnqnqngIqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrpVVMPnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnjxqnqnqnqnqnqnqntXqnqnqnqnqnlaaWRRvlvlvlLDaJPnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnlaaWRRvlvlvlLDaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnxOeeqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrLTlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnaNqnqnqnjxqnqnqnqnqnlaXajDvmVMiNjDWSPnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnlaXajDvmVMiNjDWSvYqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnxOeeqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrWQlaVMsYwMwMwMwMwMwMwMwMwMwMwMwMWkVMPnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnTzJOaWVMaJvywuwMwMwMwMWkVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMsYwMwMwMwMwuzbaWVMaJaUzYqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnlaVMsYwMwMwMwMwMwMwMyzRwwMwMwMWkVMPnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrPUVMbwHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlahjVMGhbwHiHiHiHiHimYVMsYwMwMwMwMwMWkVMsYwMwMwMwMwMWkVMbwHiHiHiHiHimYhjVMGhPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHixpYwHiHiHimYVMPnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrPUVMyDwrwrwrwrwrwrwrwrwrwrwrwrrEVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMyDwrwrwrwrwrrEVMbwHiHiHiHiHimYVMbwHiHiHiHiHimYVMyDwrwrwrwrwrrEVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMyDwrwrwrwrwrwrwrZPblwrwrwrrEVMPnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
+FrFrFrFrFrFrlPFriJFrFrFriJFrFrFriJFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGOaWWWPnlaKNPnHaWWaJxsqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiKcGoqnqnqnqnqw
+FrFrFrFrFrFrlPFriJFrLTaEiJFrFrFrHshIhIFrFrFrFrFrFrzCtXtXqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGOaWFgaDgIsUgIPHciaJxsqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnqnGoHiHiHiHiHiHiHiHiKcGoqnqnqnhuFr
+FrFrFrFrFrFrlPLTQoLrWQqntoaEFrBHXRWwkOaRFrFrFrFrFrzCjxjxqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiHiUZqnqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnHDaWGLrKGqGqGqGLrKaJpjqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiHiUZqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiKcUZqnqnhuFrFr
+FrFrFrFrFrFrlPzCmhFrFrWQFVhuFrBHSKLMHQaRFrFrFrFrLTqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKjKCMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnubaWiNjDjDjDjDjDvmaJnDqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKjKCMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKicCMqndsFrFrFr
+FrFrFrFrFrFrlPWQhuFrFrFrFrFrFrBHHMAuvWaRFrLyaEFrzCqnqntXtXqnqnqnqnqnVswrwrwrwrwrwrwrwrwrVsqnqnqnqnqnqnqnFfqnqnqnqnqnqnZbqnqnqnqnpXGfDbaAdGVMaAdGGfDbovqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnVswrwrwrwrwrwrwrwrwrVsqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnVswrwrwrwrwrwrwrwrGEVsqndsFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrLTUrUrUraEBHpmtfFrzCqnqnjxsoqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnaNqngIgIgIgIgIqnqnqnqnqnqnqnqnqnjxREREWKiSREiSWKREREjxqnqnhXqnqnqnqnqnqngIgIgIgIgIqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqwqwqwqnqnqnqnqnozSiqwhuFrFrFr
+FrFrFrFrFrFrlPFrFrhIhIFrFrFrFrzCGoGoGohuFrQmFrFrzCqnqngActMtqnqnqnqnqnqnTvqntXqnqnqnqnqnqnqnqnqnqnladjDuDuDuoFmvgIgIgIgIgIgIgIgIgICMCMBBxHCMxHBBCMCMgIgIgIgIgIgIgIgIgIPddjDuDuDuoFPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrWQqnqnqnqwiiFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrBHFgciaRFrFrFrzCUZUZUZFrFrCMaEFrzCqnYGqnREqnqnZbqnqnqnlRfHEjjxqnqnqnqnqnqnqnqnqnqnlaaWZEQqIJGhDuhjRRvlvlvlvlErLDVMhchctBWMXqkhCbhchcVMRRErvlvlvlvlLDGhDuhjZEQqIJaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrFrFrPeqwhuFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrBHGLrKaRFrFrFrWQCMCMCMaEFrbJhuFrzCqnTvTvVsqnTvTvTvTvhuFrUrFrzCqnqnqnqnqnqnqnqnqnqnlaaWCexIWpVMVMVMVMVMVMVMVMVMVMVMVMVMVMaJxzaWVMVMVMVMVMVMVMVMVMVMVMVMVMVMCeQeWpaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqndsFrLTaEFrFrBHLgaRFrFrkmhIhIFrFrFrFr
+FrFrFrFrFrFrlPFrFrREREFrhIhIhIhINTNTbJhuFrUcFrLTqngAFgcismgAdRgsxvMjaRFrUZFrWQqnqnqntXqnqnqnqnqnqnlaaWCHJkPmiNjDvmtTJkJkJkJkJkaPVMVMVMVMGhDuhjVMVMVMVMtTeNeNeNeNeNaPiNjDvmCHJkPmaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnKMqnqnYGqnqnaNqnqnqnjxqnqnqndsFrWQqnjPaELTQmhIhIBHmsrBXuaRFrFrFr
+FrFrFrFrFrFrlPFrLTCMCMBHyIESGDMMUQUcUcFrFrFrFrzCqngAGLrKMtgApARgyEgUaRFrCMFrFrzCqnqnjxhXqnqnqnqnqnlaGfvmVMiNDbZfPCTzgdgdgdgdgdzYPCwFCHVMVMVMVMVMPmnAPCTzgdgdgdgdgdzYPCOIGfvmVMiNDbPnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrWQqndsWQgwDqzRGPNhaMVcaRFrFrFr
+FrFrFrFrFrFrlPFrWQOuagBHVdBauiqKaRhIFrFrFrFrFrzCqnqnREREqngAXadwvnWSxFFrNohIFrzCqnqnqnqnqnqnqnqnqngIVTaWVMaJztqnqnqnqnqnqnqnqnqnqnqnPCwFVMVMVMnAPCqnqnqnqnqnqnqnqnqnqnqnSJaWVMaJqYgIqnqnqnqnZbqnqnqnqnKMqnqnqnqnqnqnqnqnqntXtXqnqnqnqnqntXqnqnqnqnqnqnaEFrFrWQqnaEUcQmQmFrwBUrUrFrFrFrFr
+FrFrFrFrFrFrlPFrFrUcUcFrREREREREBHfHaRFrFrFrLTqnqnqnVsFUllqnUrUrUrUrrbHbNCXuaRzCqnqnqnqnqnqnqnqntXVMGhhjVMGhPnqnqnqnqnqnqnRfqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnRfqnqnqnqnqnqnlahjVMGhhjVMtXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxjxqnqnqnqnqnjxqnqnKMqnqnqnqnaEFrFrWQhuFrCMCMFreCGoGoFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrNTNTniagFrQmaEFrFxFrzCqnqnqnzkDIEWMtUZUZUZUZFrDwZIVcaRzCqnqnqnqnqntXtXtXEyCwVMVMVMVMPnqnqnqnqnqnqnzNqnqnqnqnqnqnsEVMVMPnqnqnqnqnqnzNqnqnqnqnqnqnlaVMVMVMVMVMVMtXtXtXtXtXtXtXtXtXtXtXqntXqnqntXqntXqnqnqnqnqnqnhXqnqnqntXqnqnqnqnTvYbFrFrFrLTVstSFriFUZUZFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrUcUcUcUcFrwfhuFxFxFrzCqnqnqnqnUrUrqwCMCMCMCMFrFrREREFrzCKMqnqnqnqntXtXtXsEVMVMVMVMVMPnqnqnqnqnqnqnzNqnqnqnqnqnqntXsEVMPnqnqnqnqnqnzNqnqnqnqnqnqnlaVMVMVMVMVMsEtXjxtXtXtXtXtXtXsHtXjxqnjxtXqnjxqnjxtXqnqnqnqnqnqnqnqnqnjxqnqntXgAzdLgWOFrFrWQaOZXFrujCMCMFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrLTjxFrFxFxLTqnqnaNqnqnUZUZFrnbniWcagFrFrCMCMFrzCqnqnqntXqnjxjxjxjxPCOIvmVMiNPnqnqnqnqnqnqnKuqnqnqnqnqnlaVMtXsEqnqnqnqnqnqnKuqnqnqnqnqnqnlavmVMiNZfPCjxjxhXjxjxjxjxjxjxjxjxqnqnqnjxqnqnqnZbjxqnqnqnqnqnqnqnqnqnqnqnqnjxqnQmQmqnjPaEFrFrFrFrMRVstSFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrWQhuFrFrLTqnqnqnqnqnqnCMCMFrDpDpDpDpFrFrniagFrzCYGqnqnjxqnqnqnqnqngIPHaWVMaJmvgIqnqnqnqnqnmhqnqnqnqnqnqnsETgtXhXqnqnqnqnqnmhqnqnqnqnqngIPHaWVMaJmvgIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqnqnaNKMqnqnqnqnqnXFXFXFXFXFXFXFjFjFXFXFRlTHOHIRWjWmtzqaTHTHTHTH
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnVsvTFrFrFrFrFrFrFrDpDpFrzCqntXtXqnqnqnqnqnladRDuhjVMGhDumNPnqnqnqnqnqnqnKMqnZbqnqntXtXtXqnKMqnqnqnqnqnqnqnqnqnladRDuhjVMGhDumNPnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnYGMrqnsXJSsXsXsXsXsXtVrcsXsXiyBAycsXRWvpBABABABABACz
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFxLTqnqnqnqnqnqntXqnjxjxjPaEFrFrFrFrFrFrFrLTqnqntXtXqnqnqnqnqnlaaWtTeNeNeNaPaJPnqnqnqnqnqnqnqnqnqnqnlajaVMjxqnqnqnqnqnqnqnqnqnqnqnlaaWtTeNeNeNaPaJPnqnqnqnZbqnqnqnqnqnqnqnqnqnqnjxtXqnqnqnqntXqnqntXxOeeKMKuqnqnqnqnqnjxVnqndsFrFrzCqnKuPAFrFrFrFrFrvM
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrLTjPqnqnqnqnqnqnqnjxqntXqnqnqnjPjPjPjPjPjPjPqnqnqnjxjxqnqnqnqnqnlaaWQzxogdgSbVaJPnqnqnqnqnqnqnqntXtXtXtXsEVMtXqnqntXtXtXqnqnqnqnqnqnlaaWQzxogdgSbVaJPnqnqnqnqnqnqnqnqnqnKMqnqnqnaNqntXqnqnqnqnjxqntXjxxOeeqnmhqnqnqnqnqnqnmhqndsFrFrWQqnmhiiFrFrFrFrFrYE
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqntXqnqnqntXqnqnqnqnqnqnlaaWQzPnhXlabVaJPnqnqnqnqnqnqnqnjxtXtXtXjxsEVMtXtXVMtXjxqnYGqnqnqnqnlaaWQzPnZblabVaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqntXjxqnxOeeqnqnqnqnqnqnqnqnqnqndsFrFrFrWQhulPFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFruKqnqnqnqnqnqnqnqnqnqnqnqnaNqngIqnqntXqnqnjxqnqnqnjxqnqnqnqnqnqnlaaWQzmvgIPHbVaJPnqnqnqnqngIqnqnqnjxjxgPqnZHgdjxjxgdjxqnqngIqnqnqnqnlaaWQzmvgIPHbVaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnjxqnqnxOeeqnqnqnqngIqnqnqnqnqnqnaEFrFrFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrpVVMPnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnjxqnqnqnqnqnqnqntXqnqnqnqnqnlaaWRRvlvlvlLDaJPnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnlaaWRRvlvlvlLDaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnxOeeqnqnqnlaVMPnqnqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrLTlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnaNqnqnqnjxqnqnqnqnqnlaXajDvmVMiNjDWSPnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnlaXajDvmVMiNjDWSvYqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnxOeeqnqnqnlaVMPnqnqnqnqnqnqnaEFrFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrWQlaVMsYwMwMwMwMwMwMwMwMwMwMwMwMWkVMPnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnTzJOaWVMaJvywuwMwMwMwMWkVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMsYwMwMwMwMwuzbaWVMaJaUzYqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnlaVMsYwMwMwMwMwMwMwMyzRwwMwMwMWkVMPnqnqnqnqnqnqnqnjPjPaElPFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrPUVMbwHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlahjVMGhbwHiHiHiHiHimYVMsYwMwMwMwMwMWkVMsYwMwMwMwMwMWkVMbwHiHiHiHiHimYhjVMGhPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHixpYwHiHiHimYVMPnqnqnqnqnqnqnqnqnqndslPFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrPUVMyDwrwrwrwrwrwrwrwrwrwrwrwrrEVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMyDwrwrwrwrwrrEVMbwHiHiHiHiHimYVMbwHiHiHiHiHimYVMyDwrwrwrwrwrrEVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMyDwrwrwrwrwrwrwrZPblwrwrwrrEVMPnqnqnqnqnqnqnqnqnqnqnVgjPjPjPjPjPjP
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrvIVMMtqnqnqnqnqnqnqnqnqnqnqnqngAVMsYwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMdGVMaAqnqnqnqnqnqngAVMyDwrwrwrwrwrrEVMyDwrwrwrwrwrrEVMMtqnqnqnqnqnqndGVMaAwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMWkVMMtqnqnqnqnqnqnqnxOeeqnqnqngAVMsYwMwMwMwMwMwMwMwMwMwMGawMwMwMwMwMwM
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrBqREqnqnqnqnqnqnqnqnqnqnqnqnqnqnREHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiuWQmuWqnqnqnqnqnqnqnQmqnqnqnqnqnqnqnQmqnqnqnqnqnqnqnQmqnqnqnqnZbqnqnuWQmuWHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiREqnqnqnqnqnqnqnqnxOeeqnqnqnqnREHiHiHiHiHiHiHiHiHiHiHiPNHiHiHiHiHiHi
FrFrFrFrFrFrlPFrFrFrFrFxFxFrFrAhCMqnqwqwqnqnqnqnqnqnqnqnqnqnqnCMwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrZFuWCMuWPnqnhXqnqnqnqnCMqnqnqnqnZbqnqnCMqnqnqnqnqnqnqnCMqnqnqnqnqnqnlauWCMuWTdwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrCMqnqnqnqnqnqnqnqnxOeeqnqnqnqnCMwrwrwrwrwrwrwrwrwrwrwrGEwrwrwrwrwrwr
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrzCVshuFrFrWQqwqnqnqnqnqnqnqnqnqnVsqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMXqVMPnqnqnqnqnqnqnVsqnqnqnqnqnqnqnVsqnqnqnqnhXqnqnVsqnqnqnqnqnqnlaVMXqVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnVsqnqnqnqnqnqnqnqnxOeeqnqnqnqnVsqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
FrFrFrFrFrFrlPFrFrFrFrFrFrFrLTqnAXFrFrFrFrFrWQqwqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMlNVMPnqnqnqnqnqnqnjxqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnjxqnqnqnqnqnqnlaVMlNVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnxOeeqnqnqnqnjxqnqnqnqnqnqnqnqnqnqnqnzUqnqnqnqnqwhu
FrFrFrFrFrFrlPFrFrFrFrFrFrLTqndsFrFrLTaEFrFrFrFrWQqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMLsVMPnqnZbqnqnqnqnqnqnqnqnqnqnqngIgIgIhXqnqnqnqnqnqnqnqnqnqnqnqnlaVMfjVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhulPWQqnqnhuFrFr
-FrFrFrFrFrFrlPFrFrFrFrFrFrzCqndsFrFrWQqwjPaEFrFrFrzCqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnPdtTBLaPieqnqnqnqnqnaNqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnqnqnqnqnhXqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrlPFrWQhuFrFrFr
-FrFrFrFrFrFrgvFrFrFrFrFrLTqnqndsFrFrFrFrWQhuFrFrFrzCqnqnqnqnqnqntXjxtXqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnYGPdtTPmxaCHaPieqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrFrFrLTqnqnqnqnaEFrFrFrFrFrFrFrLTqnqnKMqnqnqnqwaOqwaOqwqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnhXqnqnlaVMWpwPqnQtCeVMPnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnKMqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnaEFrFrFrLTjPjPqnqnqnqnqnqnhuFrFxFrFrFrWQqnqnqnqnqnhXqnqnqnqnqnqnqnlaVMVMtTPnqnYGqnqnqnqnqnqnqnqnlaVMWpPnqnlaCeVMPnqnZbqnqnqnqnqnqnqnqnlaaPVMVMPnqnaNqnqnqnqnqnqnqnhXqnqnqnqnqwqwqwqnqnqnqnqnaNqnqnqnxOeeqnhXqnqnqnqnqnqnqnqnqnqnqnhuFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnqnjPjPjPqnqnqnqnYGqnqnqnhuFrFxFxFrFrFrFrWQqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMWpieqnqnqnqnqnqnqnqnqnqnlaVMWpPnyvlaCeVMPnqnqnqnqnqnqnqnqnqnqnPdCeVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrWQqnqnqnqnqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqndsFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqnlaaPVMRRIJiegIgIgIgIgIgIgIgIEtPdjaWpmvqnPHCecGiegIgIgIgIgIgIgIAKgIPdZELDVMtTPnqnqnqnqnqnqnqnqnqwqwqwqwhuFrFrFrFrFrWQqwqwqnqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqnhuFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqnlabVVMVMRRvlLDVMVMiNjDvmVMVMVMVMVMRRIJfjZELDVMVMVMVMVMiNjDvmVMVMRRvlLDVMVMWpPnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnxOeeqnqnqnqnqntXjxqnhXqnqndsFrFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrFrzCqnqnqnqnqnqnqnqnaNqnqnqwqwqnqnqwqwqnaEFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnlaWXaPVMVMVMVMVMVMaJfHaWVMVMVMVMVMVMRRQqLDVMVMVMVMVMVMaJfHaWVMVMVMVMVMVMVMdKPnqnqnqnqnhXqnqnhuFrFrFrFrFrFrLTaEFrFrFrFrFrWQqnqnqnqnxOeeqnZbqnqnqntXqnqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrLTqnqnqnqnqnqnqnqnqnqwqwhuFrFrWQhuFrFrWQqnjPaEFrFrFrLTjPqnqnqnqnqnqnqnqnqnqnqnqnqnqnwFNxeNaPVMVMVMVMGhDuhjVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMGhDuhjVMVMVMVMtTJkdKZfqnqnqnqnqnqnqndsFrFrFrFrLTjPjPqnqnaEFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqnjxqnqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqnqnhuFrFrFrFrFrFrFrFrFrFrWQqnqnjPjPjPqnqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCwFVMVMVMnAPCPCPCPCPCPCPCPCPCPCPCPCPCPCPCqnqnqnqnqnqnqnqnhuFrFrFrFrWQqnqnYGqndsFrFrFrFrFrzCYGqnqnxOeeqnqnqnqnqntXtXqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqntXjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPHVMVMVMmvqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrWQaNqnqndsFrFrFrFrFrzCqnqnqnxOeeqnqnaNqnqntXtXqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqntXtXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnPHVMVMVMVMVMmvqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnZbqnqnqndsFrFrFrFrFrFrFrmMqwqwhuFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqntXjxqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnaNqnqnqnjxjxqnKMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMMhEmCwVMVMPnqnqnqnqnqnqnqnqnqwqwqwqnqnqnqnqnqnqnqnqnqnaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqnaEFrFrFrlPFrFrFrFrFrFr
-FrFrFrFrFrFrgvFrLTqnqnqnqnqnqnqnqnqnaEFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqwqwqwqnqnqwqwqnqnqngIlaFgxozYgITzgSciPngIaNqnqnqnqnqndsFrFrFrWQqnqnqnqnqnqnqnZbqnqnaEFrFrFrFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqndsFrFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrzCqndsFrFrWQqwjPaEFrFrFrzCqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnqnqnqnqnqnFfqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnPdTbBLtlieqnqnqnqnqnaNqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnqnqnqnqnhXqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrlPFrWQhuFrFrFr
+FrFrFrFrFrFrgvFrFrFrFrFrLTqnqndsFrFrFrFrWQhuFrFrFrzCqnqnqnqnqnqntXjxtXqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnYGPdTbVcxaoWtlieqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrgvFrFrFrFrLTqnqnqnqnaEFrFrFrFrFrFrFrLTqnqnKMqnqnqnqwaOqwaOqwqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnhXqnqnlaqyDOwPqnQtofhpPnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnKMqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnaEFrFrFrLTjPjPqnqnqnqnqnqnhuFrFxFrFrFrWQqnqnqnqnqnhXqnqnqnqnqnqnqnlaVMVMtTPnqnYGqnqnqnqnqnqnqnqnlaaWWpPnqnlaCeaJPnqnZbqnqnqnqnqnqnqnqnlaaPVMVMPnqnaNqnqnqnqnqnqnqnhXqnqnqnqnqwqwqwqnqnqnqnqnaNqnqnqnxOeeqnhXqnqnqnqnqnqnqnqnqnqnqnhuFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnqnjPjPjPqnqnqnqnYGqnqnqnhuFrFxFxFrFrFrFrWQqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMWpieqnqnqnqnqnqnqnqnqnqnlaaWWpPnyvlaCeaJPnqnqnqnqnqnqnqnqnqnqnPdCeVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrWQqnqnqnqnqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqndsFrFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqnlaaPVMRRfqiegIgIgIgIgIgIgIgIEtPdyFWpmvqnPHCecGiegIgIgIgIgIgIgIAKgIPdlqLDVMtTPnqnWVqnqnqnqnqnqnqwqwqwqwhuFrFrFrFrFrWQqwqwqnqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqnhuFrFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrgvFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqngIqnlabVVMVMRRvlLDVMVMVpdyYmVMVMVMGhhjRRIJfjZELDGhhjVMVMVMVpdyYmVMVMRRvlLDVMVMWpPnqngIqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnxOeeqnqnqnqnqntXjxqnhXqnqndsFrFrFrFrlPFrFrLTaEFrFr
+FrFrFrFrFrFrgvFrFrFrzCqnqnqnqnqnqnqnqnaNqnqnqwqwqnqnqwqwqnaEFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnqnqnlaDMPnlaWXaPVMVMVMVMVMVMWWfHXmVMVMVMVMVMVMRRQqLDVMVMVMVMVMVMWWfHXmVMVMVMVMVMVMVMdKPnlaDMPnqnhXqnqnhuFrFrFrFrFrFrLTaEFrFrFrFrFrWQqnqnqnqnxOeeqnZbqnqnqntXqnqnqnqnqndsFrFrFrFrlPFrLTqndsFrFr
+FrFrFrFrFrFrgvFrFrLTqnqnqnqnqnqnqnqnqnqwqwhuFrFrWQhuFrFrWQqnjPaEFrFrFrLTjPqnqnqnqnqnqnqnqnqnqnqnirqnqnQtNxeNaPVMVMVMVMJiGqDoVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMJiGqDoVMVMVMVMtTJkdKztqnqnirqnqnqnqndsFrFrFrFrLTjPjPqnqnaEFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqnjxqnqnqnqnqndsFrFrLTaElPFrzCqnhuFrFr
+FrFrFrFrFrFrgvFrFrzCqnqnqnhXqnqnqnqnhuFrFrFrFrFrFrFrFrFrFrWQqnqnjPjPjPqnqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnPCPCPCPCPCTzgdgdgdgdgdzYPCPCPCwFVMVMVMnAPCPCPCTzgdgdgdgdgdzYPCPCPCPCPCqnqnqnqnqnqnqnqnhuFrFrFrFrWQqnqnYGqndsFrFrFrFrFrzCYGqnqnxOeeqnqnqnqnqntXtXqnqnqnqndsFrFrWQdslPLTqndsFrFrFr
+FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqntXjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPHVMVMVMmvqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrWQaNqnqndsFrFrFrFrFrzCqnqnqnxOeeqnqnaNqnqntXtXqnqnqnqndsFrFrFrzCVgqnqndsFrFrFr
+FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqntXtXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnPHVMVMVMVMVMmvqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnZbqnqnqndsFrFrFrFrFrFrFrmMqwqwhuFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqntXjxqnqnqnqndsFrFrFrWQzUqwqwhuFrFrFr
+FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnaNqnqnqnjxjxFfKMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMMhEmCwVMVMPnqnqnqnqnqnqnqnqnqwqwqwqnqnqnqnqnqnqnqnqnqnaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqnaEFrFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrgvFrLTqnqnqnqnqnZbqnqnqnaEFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqwqwqwqnqnqwqwqnqnqngIlaFgxozYgITzgSciPngIaNqnqnqnqnqndsFrFrFrWQqnqnqnqnqnqnqnZbqnqnaEFrFrFrFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqndsFrFrFrlPFrFrFrFrFrFr
FrFrFrFrFrFrgvFrzCqnqnqnqnqnqnqnqnqnqnjPaEFrFrFrFrFrFrLTjPqnqntXqnqnqntXtXqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnqnhuFrFrFrWQhuFrFrWQqnlaDMPndWqnlafHPnqndWlaDMPnqnqnqnqnqwhuFrFrFrFrzCqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnZbqnqnxOeeqnqnqnqnqnjxtXqnqnZbqnqnqnaEFrFrlPFrFrFrFrFrFr
-FrFxFrFrFrFrlPLTqnqnqnqnqnqnqnqnqnqnqnqnqnaEFrFrFrFrLTqnqnqntXjxtXtXtXtXtXtXqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnirlaGLmvgIirgIPHrKPnirqnqnqnighuFrFrFrFrFrFrzCYGqnqnqnqnqnqnqnqnqnjPjPjPaEFrFrFrFrFrFrLTjPjPqnqnqnqnqnxOeeqnqnqnqnqnqnjxqnqnqnqnqnqndsFrFrlPFrFrFrFrFrFr
-FrFxFrFrFxFrkoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaEFrFrLTqnqnqnqnjxqnjxjxjxjxjxjxqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnaEFrFrFrFrFrFrFrFrzCqnqnlaGfvmCwfjKDiNDbPnqnqnqndsFrFrFrFrFrFrLTjPqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjPaEFrFrLTjPqnqnqnqnqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqnaEFrlPFrFrFrFrFrFr
+FrFxFrFrFrFrlPLTqnqnqnqnYGqnqnqnqnqnqnqnqnaEFrFrFrFrLTqnqnqntXjxtXtXtXtXtXtXqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnirlaGLmvgIirgIPHrKPnirqnqnqnighuFrFrFrFrFrFrzCYGqnqnqnqnqnqnqnqnqnjPjPjPaEFrFrFrFrFrFrLTjPjPqnqnqnqnqnxOeeqnqnqnqnqnqnjxqnqnqnqnqnqndsFrFrlPFrFrFrFrFrFr
+FrFxFrFrFxFrkoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaEFrFrLTqnqnqnqnjxqnjxjxjxjxjxjxqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnaEFrFrFrFrFrFrFrFrzCqnqnlaGfvmCwfjKDiNDbPnqnqnWVdsFrFrFrFrFrFrLTjPqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjPaEFrFrLTjPqnqnqnqnqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqnaEFrlPFrFrFrFrFrFr
WjPPWjWjWjOHXLXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFeXeXXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFeXIRWjWjWjOHeXeXXFXFXFXFIcLEizANSkqkqEXFXFXFXFoBWjWjWjWjWjWjSFXFXFXFXFXFXFXFXFXFXFEwXFXFXFXFXFXFXFeXeXXFXFXFXFXFXFXFXFXFXFqnKMqnhXqnqnqnqnYGqnqnqnqnaNqnqndsFrlPFrFrFrFrFrFr
nXIZnXcjnXycQSsXJSsXsXsXsXsXsXsXJSsXsXsXsXsXsXJSsXsXsXsXsXsXJSsXsXsXsXsXsXJSsXsXsXsXsXsXJSsXsXsXsXsXsXJSsXsXsXsXFFFFZBsXsXsXsXsXsXJSsXGGEvsIlhzEsXJSsXsXsXsXQsnXnXudFFFFsXJSsXsXsXsXsXsXJSsXsXsXsXsXsXJSsXsXsXsXsXsXJSsXsXsXsXsXsXJSsXdgqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaElPFrFrFrFrFrFr
FriJFrFrLTqnozqnzNqnqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnPHaWVMaJmvqnzNqnqnqnqnzNjPjPqnqnqnZbzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnzNqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndslPFrFrFrFrFrFr
@@ -712,23 +765,23 @@ HiHiHiHiHiHiPNHiUZGoGoGoUZHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHi
HiHiHiHiHiHiPNHiCMUZUZUZCMHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiCMCMCMCMCMHiHiHiHiHiHiHiHiBBBBBBGoBBBBBBHiHiHiHiHiHiHiHiCMCMCMCMCMHiHiHiHiHiHiHiHiHiHiHiHimWmWmWHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiCMUZUZUZCMHiPNHiHiHiHiHiHi
mWmWmWuojKjKdkjMhcCMCMCMhcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLchchchchchcLcLcLcLcLcLcLcLcFBhcXMUZlHhcSLLcLcjMjMjMjMLcLchchchchchcLcLcLcLcLcLcLcLcLcLcLcLcmWmWmWLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcjMhcCMCMCMhcLcKTjKjKYCmWmWmW
fufufuwrwrwrGEUsVMhchchcVMZaSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMPCPCPCPCPCSMSMSMSMSMSMSMADARVMAyCMgyVMeJZaSMSMSMSMSMSMSMPCPCPCPCPCSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMUsVMhchchcVMZaGEwrwrwrSMSMSM
-WQqnqnqnqnqnozqnPCPCPCPCPCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaARVMAyFQgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPCPCPCPCPCqnozqnqnqnqnqnqn
-FrzCqnqnqnqnozqngIgIqnqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaARVMAyNzgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqnqngIgIqnqnozqnqnqnqnqnqn
-FrWQqnqnqnqnozlaFgciPnqnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaARVMAyLsgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnYGqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnZbqnlaFgciPnqnozqnqnqnqnqnqn
-FrFrWQqnqnqnozlaGLrKPnqnqnaNqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqngIEtgIqnqnqnqnqnqnqnqnqnqngIgIgIgIqnqnqnqnqnqnqnqnlaARVMMgAebqVMeJPnqnqnqnqnqnqnqnqngIgIgIgIYGqnqnqnqnqnqnqnqnqngIgIgIqnirqnqnqnaNqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnlaGLrKPnqnozqnqnqnqnqnqn
-FrFrFrWQqnqnozqnTzzYgIgIqnqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnaNqnqnKMqnqnqnqngIPdcUvlnQiegIqnqnqnqnqnqnqnlaFgqyDuhpieqnqnqnqnqnqnqnPHVdApcfdTApdThwmvqnqnqnqnqnqnqnPHqyDuhpciPnqnqnqnqnqnqnqngIPHcUvlnQmvgIqnKMqnqnqnqnqnqnKMqnqnqnYGqnqnKMqnqnqnqnqnqnqnqnqnqngIgITzzYqnqnozqnqnqnqnqnqn
-FrFrFrFrzCqnozqnqnPdvlvlieqnqnqnqnqnqntXqnqnqnqnqnqntXqnqnqnqnqnqnqnqnqnqnlaqyDuDuDuDuDuhpPnqnqnqnqnqnqnqnQtaWVMGhhpPnqnqngIqnqnlaZEVMiNDbIkGfvmVMIJPnqnqngIqnqnlaqyhjVMaJwPqnqnqnqnqnqntXlaqyDuDuDuDuDuhpPnqnZbqnqnhXqnqnqntXtXtXqnqnqnqnqnZbqnqnhXqnqnaNqnPHqyhpmvqnqnqnozqnqnqnqnqnqn
-FrFrFrFrzCqnozqnlaVMQzwLgzPnqnqnqnqnqntXtXqnqnqntXqnjxqnqnqnqnqntXqnqnqnqnlaDyCwVMVMVMCwQpPntXqnqnqnqnqnqnHaorCwCweaPnqnlafHPnqnlaYvCwaJwPqnQtaWCwTRPnqnlafHPnqnlayWCwCwajPnqnqnqnqnqnZbjxlahdCwVMVMVMCwboPnqntXqntXqnqnqnqnjxtXjxaNqnqntXqnqntXqnqnqnqnqnlaPkPpSNDzPnqnqnozqnqnqnqnqnqn
-FrFrFrLTqnqnozqnqnrjeNeNFwqnqnqnqnqnqnjxjxqnqnqntXqnYGqnqnqnqnqnjxqntXqnqnlaGfjDjDjDjDjDDbPnjxqnqnqnqnqnqnPHaWVMiNDbPnqnqnirqnqnlaZQvmaJmvqnPHaWiNoVPnqnqnirqnqnlaGfvmVMaJmvqnqnqnqnqnqnqnlaGfjDjDjDjDjDDbPnqntXtXjxqnqntXqnhXjxqntXqntXjxtXqnjxqnqnqnqnqnqncHGfDbCnqnqnqnozqnqnqnqnqnqn
-FrFrLTqnqnqnozqngIgIIFPCqnqnKMqnqnqnqnqnqnZbqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnTzuveAJkduMuzYqnqnqnKMqnqnqnlaGLGfjDDbnAqnqnqnqnqnqnqnSJaWGhoFfjdjhjaJztqnqnqnqnqnqnqnOIGfjDDbrKPnKMqnqnqnqnqnqnTzJOeAJkduaUzYqnqngPjxqnqnqnjxqnqnqnqnjxqnjxqnjxqnqnqnKMqnqnqnhXqnPCPCgIgIgIqnozqnqnqnqnqnqn
-FrFrWQqnqnqnozlaVpdyYmPnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIZbqnqnqnqnqngIqnPCPCPCqnqnqnqnqnqnqnqnqnqnTzgdgdzYqnqnqnqnqnqnqnqnlaaWVMGhDuhjVMaJPnqnqnqnqnqnqnqnqnTzgdgdzYqnqnqnqnqnqnqnqnqnZbPCPCPCqngIqnqnqnqnqnqngIqnqnqnqnZbqngIqnqnqnqnqnqngIqnqnqnqnqnqnlatTJkaPPnozqnqnqnqnqnqn
-FrFrFrzCqnqnozlaWWXKXmPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWtTJkVMJkaPaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnqnlaWpDMCePnozqnqnqnqnqnqn
-FrFrFrzCqnqnozlaJiGqDoPnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWWpoKQqoKCeaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnqnqnqnqnirqnqnaNqnqnqnirqnqnqnqnqnqnirqnqnYGqnqnqnirqnqnqnqnqnqnlaRRQqLDPnozqnqnqnqnqnqn
-FrFrLTqnqnqnozqnTzgdzYqnqnqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWWpmvirPHCeaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnTDqnqnqnqnqnqnKMqnaNqnqnqnqnKMqnqnqnqnqnqnqnqnqnhXqnqnTzgdzYqnozqnqnqnqnqnqn
-FrFrzCqnqnqnozqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWVMpbDFEWVMaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrFrzCqnqnqnozqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPdaWWpztgISJCeaJieqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-FrLTqnqnqnqnozqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPdMghjWpeyeNeyCeGhItieqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
-LTqnqnqnqnqnozqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlabVVMVMRRQqVMQqLDVMVMWpPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnozqnqnqnqnqnqn
+qwqwqnqnqwqwozqnPCPCPCPCPCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaARVMAyFQgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPCPCPCPCPCqnozqwqwqwqwqwqw
+FrFrWQhuFrFrihqngIgIqnqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnFflaARVMAyNzgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqnqngIgIqnqwiiFrFrFrFrFrFr
+FrFrFrFrFrFrlPPUFgciPnqnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaARVMAyLsgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnYGqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnZbqnlaFgciNUFrlPFrFrLTaEFrFr
+FrFrFrFrFrFrlPPUGLrKPnqnqnaNqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqngIEtgIqnqnqnqnqnqnqnqnqnqngIgIgIgIqnqnqnqnqnqnqnqnlaARVMMgAebqVMeJPnqnqnqnqnqnqnqnqngIgIgIgIYGqnqnqnqnqnqnqnqnqngIgIgIqnirqnqnqnaNqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnlaGLrKYLFrlPLTjPqndsFrFr
+FrFrFrFrFrFrlPWQTzzYgIgIqnqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnaNqnqnKMqnqnqnqngIPdcUvlnQiegIqnqnqnqnqnqnqnlaFgqyDuhpieqnqnqnqnqnqnqnPHVdApcfdTApdThwmvqnqnqnqnqnqnqnPHqyDuhpciPnqnqnqnqnqnqnqngIPHcUvlnQmvgIqnKMqnqnqnqnqnqnKMqnqnqnYGqnqnKMqnqnqnqnqnqnqnqnqnqngIgITzYyFrFrlPzCqnqnhuFrFr
+FrFrFrLTaEFrlPFrzCPdvlvlieqnqnqnqnqnqntXqnqnqnqnqnqntXqnqnqnqnqnqnqnqnqnqnlaqyDuDuDuDuDuhpPnqnqnqnqnqnqnqnQtaWVMGhhpPnqnqngIFfqnlaZEVMiNDbIkGfvmVMIJPnqnqngIqnqnlaqyhjVMaJwPqnqnqnqnqnqntXlaqyDuDuDuDuDuhpPnqnZbqnqnhXqnqnqntXtXtXqnqnqnqnqnZbqnqnhXqnqnaNqnPHqyhpmvdsFrFrkoqnqndsFrFrFr
+FrFrFrzCqnaElPFrPUVMQzwLgzPnqnqnqnqnqntXtXqnqnqntXqnjxqnqnqnqnqntXqnqnqnqnlaDyCwVMVMVMCwQpPntXqnqnqnqnqnqnHaorCwCweaPnqnlafHPnqnlaYvCwaJwPqnQtaWCwTRPnqnlafHPnqnlayWCwCwajPnqnqnqnqnqnZbjxlahdCwVMVMVMCwboPnqntXqntXqnqnqnqnjxtXjxaNqnqntXqnqntXqnqnqnqnqnlaPkPpSNDzNUFrFrihqnqndsFrFrFr
+FrFrFrzCqnhulPFrzCrjeNeNFwqnqnqnqnqnqnjxjxqnqnqntXqnYGqnqnqnqnqnjxqntXqnqnlaGfjDjDjDjDjDDbPnjxqnqnqnqnqnqnPHaWVMiNDbPnqnqnirqnqnlaZQvmaJmvqnPHaWiNoVPnqnqnirqnqnlaGfvmVMaJmvqnqnqnqnqnqnqnlaGfjDjDjDjDjDDbPnqntXtXjxqnqntXqnhXjxqntXqntXjxtXqnjxqnqnqnqnqnqncHGfDbCnqnaEFrlPWQqnqnaEFrFr
+FrFrFrWQhuFrlPLTgIgIIFPCqnqnKMqnqnqnqnqnqnZbqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnTzuveAJkduMuzYqnqnqnKMqnqnqnlaGLGfjDDbnAqnqnqnqnqnqnqnSJaWGhoFfjdjhjaJztqnqnqnqnqnqnqnOIGfjDDbrKPnKMqnqnqnqnqnqnTzJOeAJkduaUzYqnqngPjxqnqnqnjxqnqnqnqnjxqnjxqnjxqnqnqnKMqnqnqnhXqnPCPCgIgIgIaEruFrzCqnqnaEFr
+FrFrFrFrFrFrlPPUVpdyYmPnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIZbqnqnqnqnqngIqnPCPCPCqnqnqnqnqnqnqnqnqnqnTzgdgdzYqnqnqnqnqnqnqnqnlaaWVMGhDuhjVMaJPnqnqnqnqnqnqnqnqnTzgdgdzYqnqnqnqnqnqnqnqnqnZbPCPCPCqngIWVqnqnqnqnqngIqnqnqnqnZbqngIqnqnqnqnqnqngIqnqnqnqnqnqnlatTJkaPNUlPFrzCqnqnhuFr
+FrFrFrFrFrFrkolaWWXKXmPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWtTJkVMJkaPaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnqnlaWpDMCeNUlPFrWQqwhuFrFr
+FrFrFrFrFrFrihlaJiGqDoPnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWWpoKQqoKCeaJPnqnWVqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnqnqnqnqnirqnqnaNqnqnqnirqnqnqnqnqnqnirqnqnYGqnqnqnirqnqnqnqnqnqnlaRRQqLDYLlPFrFrFrFrFrFr
+FrFrLTaEFrFrlPzCTzgdzYqnqnqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWWpmvirPHCeaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnTDqnqnqnqnqnqnKMqnaNqnqnqnqnKMqnqnqnqnqnqnqnqnqnhXqnqnTzgdKLFrlPFrFrFrFrFrFr
+FrFrWQqnaEFrlPzCqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWVMpbDFEWVMaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnqnqnqnqnqnhuFrFrlPFrFrFrFrFrFr
+FrFrFrWQhuFrlPzCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPdaWWpztgISJCeaJieqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrlPFrFrFrFrFrFr
+FrFrFrFrFrFrkoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPdMghjWpeyeNeyCeGhItieqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr
+jPjPjPjPjPjPozqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlabVVMVMRRQqVMQqLDVMVMWpPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjPjPjPjPVgjPjPjPjPjPjP
wMwMwMwMwMwMGawMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwEJkGlNneNeNeNGlNnJkvKwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMGawMwMwMwMwMwM
HiHiHiHiHiHiPNHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoREBBBBREREREBBBBREGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiPNHiHiHiHiHiHi
HiHiHiHiHiHiPNHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGOVkhcTIdYdYdYhQhcafxsHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiPNHiHiHiHiHiHi
@@ -743,23 +796,23 @@ FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrFrFrLTjPjPjPjPjPjPjPjPqnqnqnaEFrFrFrLTjPjP
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrLTjPjPjPjPqnqnqnqnqnqwqwqwqnqnqnqnhuFrFrFrzCqnqwqwqnqndsFrFrFrFrzCqnhuFrFrFrFrzCqnqnEpFrFrFrFrOaaWaJPnqnlaDMPnqnlaaWaJNUFrFrFrWQchqwqndsFrFrFrFrLTjPjPjPqnqnqntXtXqnqndsFrFrFrFrFrWQhuFrLTjPjPjPqwqwqngAVxVxVxVMVMMtllFTFTFTTvgAVMVMVxVxVxRVqnaEFrFrFrFr
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrzCqwqwqnqnqwqwqnqnhuFrFrFrWQqnqndsFrFrFrFrgxdsFrFrWQqndsFrFrFrFrzCdsFrFrFrFrFrzCqnhuFrFrFrFrFrOaaWaJPnqnqntDqnqnlaaWaJNUFrFrFrFryqFrWQdsFrFrFrFrzCqntXqnqwcuqwaOtXqnqndsFrFrFrFrFrFrFrLTqnqnqndsFrFrzCjXVxMbREREREgAFgGqGqGqciMtREREREAAVxPRqnhuFrFrFrFr
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrLTdsFrFrWQbWFrFrzChuFrFrFrFryqzCqndsFrFrFrLTlTdsFrFrFrzCdsFrLTBojPqndsFrFrFrFrLTqndsFrFrFrFrFrFrOaaWaJPnqnqnqnqnqnlaaWaJNUFrFrFrFrFrFrFrzCjPjPjPjPqntXjxhuFrHPFrFrKYqnqndsFrFrFrFrFrFrFrzCqnqnqndsFrFrXXVxVxUkCMGxCMgAWWMbNfAAWWMtCMGxCMsZVxVxmCFrFrFrFrFr
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrzCdsFrFrFrFrFrFrEKFrFrFrFrFrLTqntXqnjPaEFrWQqndsFrFrLTqnqnjPqnMDtXqndsFrFrFrFrzCqndsFrFrLTClClClPHaWaJPnqnqnqnqnqnlaaWaJmvJEJEJEaEFrFrFrzCqnqnqnqnqnjxqnFrFrEKFrFrWQtXqndsFrFrFrFrFrFrFrWQqnqnqnhuFrFrXXVxMbVspXDMovgAWWSOobLLWWMtpXDMovVsAAVxmCFrLTaEFrFr
-FrFrFrFrFrLTPAFrLTaEFrFrFrFrFrzCdsFrFrFrFrFrFrEKFrFrFrFrFrzCqnjxqnqndsFrFrzCqnaEFrWQqwqwqnqnjxjxqwhuFrFrFrFrzCqnqnjPjWlaCeiNjDdqhjaJPnqnqngIqnqnlaaWGhCdjDvmQzVejPjPjPqnqntXqnqntXqnhuFrFrEKFrFrFrCLqndsFrFrFrFrFrFrFrFrWQqwhuFrFrFrXXVxDejxjxREjxgAWWsmJUzkWWMtjxREjxjxNLVxmCFrzCdsFrFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrzCdsFrFrFrFrFrFrEKFrFrFrFrFrLTqntXqnjPaEFrWQqndsFrFrLTqnqnjPqnMDtXqndsFrFrFrFrzCqndsFrFrLTClClClPHaWaJPnqnqnqnqnqnlaaWaJmvJEJEJEaEFrFrFrzCqnqnqnqnqnjxdsFrFrEKFrFrWQtXqndsFrFrFrFrFrFrFrWQqnqnqnhuFrFrXXVxMbVspXDMovgAWWSOobLLWWMtpXDMovVsAAVxmCFrLTaEFrFr
+FrFrFrFrFrLTPAFrLTaEFrFrFrFrFrzCdsFrFrFrFrFrFrEKFrFrFrFrFrzCqnjxqnqndsFrFrzCqnaEFrWQqwqwqnqnjxjxqwhuFrFrFrFrzCqnqnjPjWlaCeiNjDdqhjaJPnqnqngIqnqnlaaWGhCdjDvmQzVejPjPjPqnqntXqnqntXqwhuFrFrEKFrFrFrCLqndsFrFrFrFrFrFrFrFrWQqwhuFrFrFrXXVxDejxjxREjxgAWWsmJUzkWWMtjxREjxjxNLVxmCFrzCdsFrFr
FrFrFrFrFrWQozryqndsFrFrFrFrFrWQdsFrFrFrFrFrFrEKFrFrFrFrFrzCqnqntXqndsFrFrzCqndsFrFrFrFrWQqnqndsFrFrFrLTjPjPqnsrqnqnqnEqCeaJfHaWVMaJPnqnlaDMPnqnlaaWVMaJfHaWQzWPsrqnqnqnqnjxtXqnUiFrFrFruUeoFrFrFrFrzCtXaEFrFrFrFrFrFrFrFrFrFrFrFrLTgAVxVMMtqnVsqngAWWgWrHjXWWMtqnVsqngAVMVxMtjPqndsFrFx
FrFrFrFrFrhzEbqbPnqnhWaEFrFrriFrEKFrFrFrLTNsNshuFrFrFrLTjPgIPdbVjxqndsFrFrWQqndsFrFrFrFrFrWQjphuFrFrFrWQqnqnqnqnqnqwqwEqCeGhDuoRvmaJPnqnqntDqnqnlaaWiNwxDuhjQzVeJqqwqwRcqntXtXqndsFrFrFrRSeoFrFrFrFrWQjxtXjPjPjPjPaEFrFrFrFrFrFrLTqnqnAGVMMtaNjxqngAGLGqGqGqrKMtqnjxqngAVMRdqnqnqwqnaEFr
FrFrFrFrFrLTozOiqndsFrzCjPaEFrLTdsFrFrFrVQFrFrFrFrFrFrWQlaZEQqsEjEqnqnaEFrFrzCdsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqndsFrFrWQFbgCJuuvaWaJPnqnqnqnqnqnlaaWaJaUgdYaTFhuFrFrFrzCqnjxtXqndsFrFrFrUcMkFrFrFrFrFrzCtXtXtXtXqndsFrFrFrFrFrFrWQqngAVxVMMtqnqnqnqnREuWuWuWREqnqnqnqngAVMVxMtdsFrzCdsFr
FrFrFrFrFrWQiiFrWQhuFrWQqwqwdaqwhuFrFrFrEKFrFrFrFrFrFrFrOatteNtXMDsrtXqnrRrRqndsFrFrFrFrFrFrFrFrFrFrFrFrWQjZqnqndsFrFrFrFrFrFrOaaWaJPnqnqnqnqnqnlaaWaJPndsFrFrFrFrFrFrWQqnqwaOqndsFrFrFrFrzCjPjPaEFrFrWQaOaOaOlWqndsFrFrFrFrFrFrFrFrXXVxMbqnqnqnqnqnVsuWuWuWVsqnqnqnqnqnAAVxMtqnjPqndsFr
-FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrrbEKFrFrFrFrFrFrFrWQgCgdtXtXtXjxdsUcUczCdsFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqndsFrFrLTaEFrFrOaaWaJPnqnqngIqnqnlaaWaJPnhuFrFrFrFrFrFrFrEKFrFrzCqnNsrRrRrRqnqnqnqnaEFrFrFrFrFrUcWQqnjPjPjPjPjPjPjPjPgAVxDeqnqnqnqnqnplhVjDRFjOqnqnqnqnqnNLVxMtqnqnqnhuFr
+FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrrbEKFrFrFrFrFrFrFrWQgCgdtXtXtXjxdsUcUczCdsFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqndsFrFrLTaEFrFrOaaWaJPnqnqngIqnqnlaaWaJPnhuFrFrFrFrFrFrFrEKFrFrzCqnNsrRrRrRqnqnqnqnaEFrFrFrFrFrUcWQqnjPjPjPjPjPjPjPjPgAVxDeqnqnqnqnqnplhVApRFjOqnqnqnqnqnNLVxMtqnqnqnhuFr
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrrbWQhWaEFrFrFrFrFrFrFrqWjxjxtXqnqnaEFrzCdsFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnjPjPqndsFrFrOaaWaJPnqnlaDMPnqnlaaWaJNUFrFrFrFrFrFrFrFrEKFrFrzCdsFrUcUcUczCqnRcqnqnaEFrFrFrFrFrFrzCqnqnqntXtXqnqntXgAVxVMMtKMqnqnqnlaeJfHgyPnKMqnqnqngAVMVxMtqnqnhuFrFr
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrhzFrriEKFrFrFrFrFrFrFrFrWQqnjxqwqwhuFrzCdsFrFrLTaEFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnjphuFrLTlaaWaJmvqnqntDqnqnPHaWaJNUFrFrFrFrFrFrFrFrEKFrFrWQdsFrFrFrFrWQqnjEqnqndsFrFrFrFrFrLTqnqnqnqnjxlWlWlWaOqnAGVMMtqnqnqnqnRGPBBFHmPnqnqnqnqngAVMRdqnqnhuFrFrFx
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrEKFrFrFrFrFrFrFrFrFrzCdsFrFrFrFrzCdsFrLTqndsFrFrFrFrFrFrFrFrFrFrWQqwtXqndsFrFrFrWQlayJaJcimvgIgIgIPHFgaWJgNUFrFrFrFrFrFrLTjPdsFrFrFrzCaEFrFrFrFryuqnqnqwhuFrFrFrFrFrzCsrqnqwqwhuUcUcUcFrXXVxVMMtqngIqnqnlaGBsaNDPnqnqngIqngAVMVxMthuFrFrFrFr
FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrFrLTNshuFrFrFrFrFrFrFrFrFrzCdsFrFrLTjPqnqnJztXqnqnjPjPjPjPjPJzaEFrFrFrFrFrKYtXeoFrFrFrFrOaaWGhDuDuhpfHqyDuDuhjaJPnaEFrFrFrFrFrzCqnhuFrFrFrzCqnaEFrFrFrWQlWhuFrFrFrFrFrLTjPqnRcUJFrFrFrFrFrFrLTgAVxMbqnlaDMPnqnlanWSRLzPnqnlaDMPnqnAAVxmCFrFrFrFrFr
WjWjWjWjWjWjNuWjOHeXeXIRWjWjWjWjWjWjWjWjzhWjWjWjWjWjWjWjWjWjFrFrgxqnhWhWqwqwqwqwldtXqnqwqwlWchqwqwjxdsFrFrFrFrFrzCjxUiFrFrFrLTlaGfjDjDjDdwGqvnjDjDjDDbPndsFrFrFrFrFrzCdsFrFrFrFrWQqnqnaEFrFrFrUcFrFrFrFrFrFrzCqnqnqwhuFrFrFrFrFrLTqngAVxDeTvTvtDTvTvTvAWKGbKTvOxTvtDTvTvNLVxmCFrFrFrFrFr
nXnXGvnXnXnXEYnXMisXsXVZnXnXnXGvnXnXnXnXzuGvnXnXnXnXnXnXGvnXEzFrmodsFrFrFrFrFrFrUcKYdsFrFrUcFrFrFrzCdsFrFrFrFrFrzCqndsFrFrFrWQqnPCPCPCPCPCPCPCPCPCPCPCqnhuFrFrFrFrFresdsFrFrFrFrFrzCqnqnjPjPjPaEFrFrFrLTjPjPqnqndsFrFrFrFrFrFrFrqnqnuAVxVxVxVxxRVxVxVxVxxRVxVxVxVxxRVxVxVxVxmCFrFrFrFrFr
-FrFrcSFrFrFrlPFrFKaNdsFrLTClClxKClClaEFrEKiJFrFrFrLTClaEiJFrRnKxjEdsFrFrFrFrFrFrFrzCdsFrFrFrFrFrFrzCqnaEFrFrLTjPqnqndsFrFrFrFrzCqnqwqwqnqnWVqnqwqwqwqwhuFrFrFrFrFrFrXzdsFrFrFrFrFrWQqntXtXtXjEqnJzJzJzqnqnqnqwqwhuFrFrFrFrFrFrLTqnqwtXUrUrUrPJTvPJUrUrPJTvPJUrUrPJTvPJUrUrIeqnaEFrFrFrFr
-FrLTICaEFrFrlPLTzNqnhuFrOaugVMzOVMAPbbFrzCDfFrFrFrOafHNUiJFrKZeeqnqnaEFrFrLTjPjPjPqnhuFrFrLTjPjPjPqnqnqnjPjPqnqnqnqndsFrFrLTjPqnhuFrFrWQqnqndsFrFrFrFrFrFrFrFrFrFrFrFrEKFrLTjPaEFrFrWQaOaOlWHXlWlWlWaOqwqwhuFrFrFrFrFrLTaEFrLTqnhuFrqlUZUZfTVxVxVxCjfTVxVxVxCjfTVxVxVxCjUZHUqnqnaEFrFrFr
-FrzCKuhuFrFrlPWQKudsFrFrOabVVMMvVMWpPnNsqnKujPNsNschSnqnZNFrmSeeqnqnqnjPjPqnqnqnqndsFrFrLTqnqwqwqwqwqwqwqwqwqwqwqwqwhuFrFrzCqnhuFrFrFrOfzCqnqnjPjPjPjPjPjPjPJzCPFrFrFrEKFrgxqndsFrFrFrFrFrUcUcUcUcUcFrFrFrFrFrLTaEFrFrWQqnjPtXdsFrFrqlCMCMCMUrUrUrCMCMUrUrUrCMCMUrUrUrCMCMLbqnqnqnaEFrFr
-FrWQlKFrFrFrlPFrwidsFrFrWQartPYHnYilhuFrWQFVhuFrFrFrFrbBlKyqLjzDqwqwlWlWlIqwjpqwqwhuFrFrWQEpFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrzChuFrFrFrFrFrWQqwqnqnqwqnqnqnqnqwaOlWrRrRrRlWrRkQqwhuFrFrFrFrFrFrFrLTjPaEFrFrFrFrLTqnqnaEFrFrWQqnjxdsFrFrKYVsVsVsGoGoGoVsVsGoGoGoVsVsGoGoGoVsVsnsqnqnqnqnaEFr
+FrFrcSFrFrFrlPFrFKaNdsFrLTClClxKClClaEFrEKiJFrFrFrLTClaEiJFrRnKxjEdsFrFrFrFrFrFrFrzCdsFrFrFrFrFrFrzCqnaEFrFrLTjPqnqndsFrFrFrFrzCqnqwqwqnqnWVqnqwqwqwqwhuFrFrFrFrFrFrXzdsFrFrFrFrFrWQqntXtXtXjEqnJzJzJzqngIgIqwqwhuFrFrFrFrFrFrLTqnqwtXUrUrUrPJTvPJUrUrPJTvPJUrUrPJTvPJUrUrIeqnaEFrFrFrFr
+FrLTICaEFrFrlPLTzNqnhuFrOaugVMzOVMAPbbFrzCDfFrFrFrOafHNUiJFrKZeeqnqnaEFrFrLTjPjPjPqnhuFrFrLTjPjPjPqnqntXjPjPqnqnqnqndsFrFrLTjPqnhuFrFrWQqnqndsFrFrFrFrFrFrFrFrFrFrFrFrEKFrLTjPaEFrFrWQaOaOlWHXlWlWlWaOlujTtJsVFrFrFrFrLTaEFrLTqnhuFrqlUZUZfTVxVxVxCjfTVxVxVxCjfTVxVxVxCjUZHUqnqnaEFrFrFr
+FrzCKuhuFrFrlPWQKudsFrFrOabVVMMvVMWpPnNsqnKujPNsNschSnqnZNFrmSeeqnqnqnjPjPqnqnqnqndsFrFrLTqnqwqwqwqwqwaOlWqwqwqwqwqwhuFrFrzCqnhuFrFrFrOfzCqnqnjPjPjPjPjPjPjPJzCPFrFrFrEKFrgxqndsFrFrFrFrFrUcUcUcUcUcFrFrgovQFrLTaEFrFrWQqnjPtXdsFrFrqlCMCMCMUrUrUrCMCMUrUrUrCMCMUrUrUrCMCMLbqnqnqnaEFrFr
+FrWQlKFrFrFrlPFrwidsFrFrWQartPYHnYilhuFrWQFVhuFrFrFrFrbBlKyqLjzDqwqwlWlWlIqwjpqwqwhuFrFrWQEpFrFrFrFrFrFrUcFrFrFrFrFrFrFrFrzChuFrFryqFrFrWQqwKMqnqwqnqnqnqnqwaOlWrRrRrRlWrRkQqwhuFrFrFrFrFrFrFrLTjPaEFrFrFrFrLTqnqnaEFrFrWQqnjxdsFrFrKYVsVsVsGoGoGoVsVsGoGoGoVsVsGoGoGoVsVsnsqnqnqnqnaEFr
FrFrFrFrFrFrlPLTqnqnaEFrFrFrgoFOvQFrFrLTaEFrFrFrFrFrFrFrFrFrLjhhFrFrUcUcFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLTdsFrFrFrFrFrFrFrFrWQhuFrWQlIqwhuFrFrUcUcUcUcUcUcFrFrFrFrFrFrFrFrFrFrWQqwqwjPaEFrFrWQlIqwqnaEFrFrWQqwhuFrFrWQSiSiSijujujuSiSijujujuSiSijujujuSiSiqCqwqwqwqwhuFr
FrFrFrFrFrFrlPihmLzUiilPlPlPlPlPlPkoVgoziilPlPlPlPlPlPlPlPlPAilvlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPihiilPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPihozlPlPrulPlPihJalPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPFrFrFrFrFrFr
FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrWQqwhuFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLTjPaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrtMFrFrFrFrFrFrzCjPjPjPaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFr
diff --git a/maps/atoll/icons/objs/bronze_overhang.dmi b/maps/atoll/icons/objs/bronze_overhang.dmi
index 155f011dc21..dbab2ba8a80 100644
Binary files a/maps/atoll/icons/objs/bronze_overhang.dmi and b/maps/atoll/icons/objs/bronze_overhang.dmi differ
diff --git a/maps/atoll/sounds/lakeamb.ogg b/maps/atoll/sounds/lakeamb.ogg
index 61b49f566db..63492ec254e 100644
Binary files a/maps/atoll/sounds/lakeamb.ogg and b/maps/atoll/sounds/lakeamb.ogg differ
diff --git a/maps/groundbase/groundbase_defines.dm b/maps/groundbase/groundbase_defines.dm
index dabb1bb2a49..2ad85dbff97 100644
--- a/maps/groundbase/groundbase_defines.dm
+++ b/maps/groundbase/groundbase_defines.dm
@@ -70,12 +70,12 @@
shuttle_docked_message = "The scheduled shuttle to the %dock_name% has arrived. It will depart in approximately %ETD%."
shuttle_leaving_dock = "The shuttle has departed. Estimate %ETA% until arrival at %dock_name%."
- shuttle_called_message = "A scheduled crew transfer to the %dock_name% is occuring. The shuttle will arrive shortly. Those departing should proceed to deck three, aft within %ETA%."
+ shuttle_called_message = "A scheduled crew transfer to the %dock_name% is occuring. The shuttle will arrive shortly. Those departing should proceed to the upper level on the west side of the main facility within %ETA%."
shuttle_recall_message = "The scheduled crew transfer has been cancelled."
shuttle_name = "Crew Transport"
emergency_shuttle_docked_message = "The evacuation shuttle has arrived. You have approximately %ETD% to board the shuttle."
emergency_shuttle_leaving_dock = "The emergency shuttle has departed. Estimate %ETA% until arrival at %dock_name%."
- emergency_shuttle_called_message = "An emergency evacuation has begun, and an off-schedule shuttle has been called. It will arrive at deck three, aft in approximately %ETA%."
+ emergency_shuttle_called_message = "An emergency evacuation has begun, and an off-schedule shuttle has been called. It will arrive at the upper level on the west side of the main facility in approximately %ETA%."
emergency_shuttle_recall_message = "The evacuation shuttle has been recalled."
station_networks = list(
diff --git a/maps/stellar_delight/stellar_delight1.dmm b/maps/stellar_delight/stellar_delight1.dmm
index 9b433defd3d..569d141810f 100644
--- a/maps/stellar_delight/stellar_delight1.dmm
+++ b/maps/stellar_delight/stellar_delight1.dmm
@@ -296,10 +296,10 @@
dir = 8;
icon_state = "pipe-c"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
+/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
},
/turf/simulated/floor/tiled/milspec,
@@ -2461,13 +2461,6 @@
},
/turf/simulated/floor,
/area/maintenance/stellardelight/substation/exploration)
-"ey" = (
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "1-2"
- },
-/turf/simulated/wall/bay/purple,
-/area/stellardelight/deck1/exploration)
"ez" = (
/obj/structure/table/reinforced,
/obj/item/clothing/gloves/sterile/latex,
@@ -3526,30 +3519,6 @@
"gQ" = (
/turf/simulated/wall/bay/brown,
/area/stellardelight/deck1/oreprocessing)
-"gS" = (
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "1-8"
- },
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "4-8"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/obj/effect/floor_decal/steeldecal/steel_decals4{
- dir = 6
- },
-/obj/effect/floor_decal/steeldecal/steel_decals4{
- dir = 1
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/explobriefing)
"gT" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -5139,19 +5108,21 @@
"jZ" = (
/obj/structure/cable/green{
color = "#42038a";
- icon_state = "4-8"
+ icon_state = "2-4"
},
/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 8
+ dir = 4;
+ icon_state = "pipe-c"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+ dir = 6
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals6,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
},
/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/area/stellardelight/deck1/explobriefing)
"ka" = (
/obj/machinery/portable_atmospherics/canister/nitrogen,
/obj/effect/floor_decal/industrial/warning{
@@ -6080,15 +6051,6 @@
},
/turf/simulated/floor/tiled/monotile,
/area/janitor)
-"md" = (
-/obj/machinery/light{
- dir = 4
- },
-/obj/structure/bed/chair/backed_red{
- dir = 8
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
"me" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -6403,18 +6365,6 @@
},
/turf/simulated/floor/reinforced,
/area/stellardelight/deck1/shuttlebay)
-"mH" = (
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
-/obj/structure/bed/chair/backed_red{
- dir = 4
- },
-/obj/machinery/firealarm/angled{
- dir = 8
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
"mI" = (
/obj/machinery/door/firedoor/glass/hidden/steel{
dir = 1
@@ -6468,12 +6418,11 @@
/turf/simulated/floor/tiled/techmaint,
/area/stellardelight/deck1/fore)
"mP" = (
-/obj/machinery/computer/ship/navigation/telescreen{
- pixel_x = -32
+/obj/machinery/light/small{
+ dir = 8
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/explobriefing)
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"mQ" = (
/obj/machinery/door/firedoor/glass/hidden/steel{
dir = 8
@@ -7161,20 +7110,12 @@
/turf/simulated/floor/tiled/white,
/area/medical/patient_wing)
"oq" = (
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "4-8"
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/computer/ship/navigation/telescreen{
+ pixel_x = -32
},
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "1-8"
- },
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "1-4"
- },
-/turf/simulated/floor/airless,
-/area/stellardelight/deck1/exterior)
+/turf/simulated/floor/tiled/milspec,
+/area/stellardelight/deck1/explobriefing)
"or" = (
/obj/structure/window/reinforced/full,
/obj/structure/window/reinforced{
@@ -7516,11 +7457,14 @@
/turf/simulated/floor/tiled/dark,
/area/security/armoury)
"pd" = (
-/obj/machinery/computer/ship/navigation/telescreen{
- pixel_x = -64
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/obj/structure/closet,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/obj/random/maintenance/clean,
+/obj/random/maintenance/clean,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"pe" = (
/turf/simulated/floor/tiled/eris/steel/brown_platform,
/area/stellardelight/deck1/miningshuttle)
@@ -8074,10 +8018,9 @@
/area/stellardelight/deck1/explobriefing)
"ql" = (
/obj/structure/table/woodentable,
-/obj/machinery/light{
- dir = 1
+/obj/machinery/microwave{
+ pixel_y = 7
},
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/explobriefing)
"qm" = (
@@ -8646,14 +8589,24 @@
"rB" = (
/obj/structure/cable/green{
color = "#42038a";
- icon_state = "1-2"
+ icon_state = "4-8"
},
-/obj/machinery/light/small{
+/obj/structure/disposalpipe/segment{
dir = 4
},
-/obj/structure/disposalpipe/segment,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/door/airlock/angled_bay/hatch{
+ dir = 4;
+ door_color = "#ffffff";
+ name = "maintenance access";
+ req_one_access = null;
+ stripe_color = "#5a19a8"
+ },
/turf/simulated/floor,
/area/maintenance/stellardelight/deck1/exploration)
"rC" = (
@@ -8745,12 +8698,20 @@
/turf/simulated/floor/tiled/steel_ridged,
/area/medical/morgue)
"rM" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
+/obj/structure/cable/green{
+ color = "#42038a";
+ icon_state = "4-8"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/obj/structure/cable/green{
+ color = "#42038a";
+ icon_state = "1-4"
+ },
+/obj/structure/cable/green{
+ color = "#42038a";
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/airless,
+/area/stellardelight/deck1/exterior)
"rN" = (
/obj/structure/cable/green{
icon_state = "1-2"
@@ -9458,10 +9419,8 @@
/turf/simulated/floor/airless,
/area/stellardelight/deck1/exterior)
"tm" = (
-/obj/structure/dogbed,
-/mob/living/simple_mob/animal/passive/tindalos/twigs,
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/turf/simulated/wall/bay/r_wall/purple,
+/area/maintenance/stellardelight/deck1/exploration)
"tn" = (
/obj/machinery/light{
dir = 4
@@ -9838,12 +9797,6 @@
},
/turf/simulated/floor/tiled/techmaint,
/area/stellardelight/deck1/port)
-"uf" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
"ug" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
@@ -9970,11 +9923,6 @@
"uw" = (
/turf/space/internal_edge/left,
/area/stellardelight/deck1/starboard)
-"ux" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
"uy" = (
/obj/structure/table/rack/shelf/steel,
/obj/item/weapon/gun/energy/ionrifle/pistol,
@@ -10289,11 +10237,9 @@
/turf/simulated/floor/tiled/white,
/area/crew_quarters/toilet)
"ve" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/obj/structure/closet/emcloset,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"vf" = (
/obj/machinery/door/firedoor/glass,
/obj/structure/cable/yellow{
@@ -10777,9 +10723,12 @@
"wk" = (
/obj/structure/cable/green{
color = "#42038a";
- icon_state = "1-2"
+ icon_state = "0-2"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/power/apc/angled{
+ dir = 8
+ },
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/explobriefing)
"wm" = (
@@ -10813,12 +10762,13 @@
/turf/simulated/floor/tiled/eris/steel/cargo,
/area/stellardelight/deck1/mining)
"wq" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/alarm/angled{
- dir = 4
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/explobriefing)
+/obj/structure/table/rack,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/clean,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"ws" = (
/obj/structure/cable/pink{
icon_state = "4-8"
@@ -13197,12 +13147,6 @@
/obj/effect/landmark/start/visitor,
/turf/simulated/floor/wood,
/area/library)
-"By" = (
-/obj/machinery/light{
- dir = 1
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
"Bz" = (
/obj/structure/cable/green{
icon_state = "1-4"
@@ -13570,15 +13514,13 @@
/turf/simulated/floor/wood,
/area/library)
"Cl" = (
-/obj/machinery/light{
- dir = 1
- },
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/machinery/camera/network/command{
- dir = 4
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/explobriefing)
+/obj/structure/table/rack/shelf,
+/obj/random/contraband,
+/obj/random/maintenance/research,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"Cm" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/disposalpipe/up{
@@ -13782,13 +13724,12 @@
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/medical/virology)
"CK" = (
-/obj/machinery/button/remote/blast_door{
- id = "explowindowlockdown";
- name = "Window Lockdown";
- pixel_y = 25
+/obj/item/device/radio/intercom{
+ dir = 1;
+ pixel_y = 24
},
/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/area/stellardelight/deck1/explobriefing)
"CL" = (
/obj/structure/stairs/spawner/north,
/obj/structure/window/reinforced{
@@ -13869,24 +13810,6 @@
},
/turf/simulated/floor/tiled/techmaint,
/area/stellardelight/deck1/aft)
-"CW" = (
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "2-4"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4;
- icon_state = "pipe-c"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 8
- },
-/obj/effect/floor_decal/steeldecal/steel_decals6,
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/explobriefing)
"CX" = (
/obj/effect/floor_decal/chapel{
dir = 1
@@ -14314,6 +14237,14 @@
},
/turf/simulated/floor/tiled/techfloor,
/area/rnd/workshop)
+"DX" = (
+/obj/structure/closet/crate,
+/obj/random/maintenance/clean,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"DY" = (
/obj/structure/railing/grey{
dir = 4
@@ -14974,12 +14905,12 @@
"Fy" = (
/obj/structure/flora/pottedplant/orientaltree,
/obj/machinery/light,
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 1
- },
/obj/machinery/camera/network/command{
dir = 9
},
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/explobriefing)
"Fz" = (
@@ -15634,18 +15565,11 @@
/turf/simulated/floor,
/area/stellardelight/deck1/explobriefing)
"Hf" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 4
- },
-/obj/structure/bed/chair/backed_red{
- dir = 4
- },
-/obj/item/device/radio/intercom{
- dir = 8;
- pixel_x = -24
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/obj/structure/table/rack/shelf,
+/obj/random/maintenance/research,
+/obj/random/maintenance,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"Hg" = (
/obj/structure/cable/green{
icon_state = "4-8"
@@ -15883,11 +15807,16 @@
/turf/simulated/floor/tiled/dark,
/area/security/lobby)
"HG" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
+/obj/structure/table/woodentable,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/machinery/camera/network/command{
+ dir = 4
},
/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/area/stellardelight/deck1/explobriefing)
"HH" = (
/obj/machinery/door/firedoor/glass,
/obj/structure/window/bay/reinforced,
@@ -15964,13 +15893,26 @@
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/medical/exam_room)
"HS" = (
-/obj/structure/table/woodentable,
-/obj/machinery/microwave{
- pixel_y = 7
+/obj/structure/cable/green{
+ color = "#42038a";
+ icon_state = "1-8"
},
-/obj/item/device/radio/intercom{
- dir = 1;
- pixel_y = 24
+/obj/structure/cable/green{
+ color = "#42038a";
+ icon_state = "4-8"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/effect/floor_decal/steeldecal/steel_decals4{
+ dir = 6
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals4{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 8
},
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/explobriefing)
@@ -16767,11 +16709,15 @@
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/stellardelight/deck1/lowermed)
"Jz" = (
-/obj/machinery/newscaster{
- pixel_y = 28
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/obj/structure/closet,
+/obj/random/contraband,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/research,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"JA" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -17554,16 +17500,16 @@
/turf/simulated/floor/tiled/techmaint,
/area/stellardelight/deck1/starboard)
"Lp" = (
-/obj/machinery/power/apc/angled{
- dir = 8
- },
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "0-2"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/explobriefing)
+/obj/structure/closet,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/obj/random/maintenance,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/research,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"Lq" = (
/obj/structure/cable/green{
color = "#42038a";
@@ -17807,25 +17753,11 @@
/turf/simulated/floor/tiled/dark,
/area/security/security_cell_hallway)
"LO" = (
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "4-8"
- },
-/obj/structure/disposalpipe/segment{
+/obj/machinery/light/small{
dir = 4
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "2-8"
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"LP" = (
/obj/structure/table/standard,
/obj/machinery/cell_charger,
@@ -18832,12 +18764,15 @@
/turf/simulated/floor/tiled/dark,
/area/rnd/xenobiology)
"NY" = (
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "1-2"
+/obj/machinery/door/airlock/angled_bay/hatch{
+ dir = 4;
+ door_color = "#e6ab22";
+ name = "Exploration Substation";
+ req_one_access = list(10);
+ stripe_color = "#e6ab22"
},
-/turf/simulated/wall/bay/r_wall/steel,
-/area/stellardelight/deck1/exploration)
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"NZ" = (
/obj/effect/floor_decal/steeldecal/steel_decals4{
dir = 5
@@ -19499,9 +19434,14 @@
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/exploration)
"PE" = (
-/obj/machinery/alarm/angled,
+/obj/effect/floor_decal/steeldecal/steel_decals6{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/area/stellardelight/deck1/explobriefing)
"PF" = (
/obj/structure/cable/green{
icon_state = "4-8"
@@ -20604,8 +20544,8 @@
/turf/simulated/floor/tiled/eris,
/area/rnd/xenobiology/xenoflora)
"RS" = (
-/turf/simulated/wall/bay/purple,
-/area/stellardelight/deck1/explobriefing)
+/turf/simulated/wall/bay/steel,
+/area/maintenance/stellardelight/deck1/exploration)
"RT" = (
/obj/machinery/door/firedoor/glass,
/obj/structure/cable/white{
@@ -20833,11 +20773,13 @@
/turf/simulated/floor,
/area/maintenance/stellardelight/substation/security)
"Sn" = (
-/obj/structure/flora/pottedplant/orientaltree,
-/obj/machinery/light,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
+/obj/structure/dogbed,
+/mob/living/simple_mob/animal/passive/tindalos/twigs,
+/obj/structure/cable/green{
+ color = "#42038a";
+ icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/explobriefing)
"Sq" = (
@@ -21422,27 +21364,10 @@
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/explobriefing)
"TD" = (
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "4-8"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 1
- },
-/obj/effect/floor_decal/steeldecal/steel_decals4{
- dir = 8
- },
-/obj/effect/floor_decal/steeldecal/steel_decals4{
- dir = 5
- },
+/obj/structure/flora/pottedplant/orientaltree,
+/obj/machinery/light,
/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/area/stellardelight/deck1/explobriefing)
"TE" = (
/obj/effect/floor_decal/milspec/color/orange/half,
/turf/simulated/floor/tiled/dark,
@@ -21545,13 +21470,6 @@
},
/turf/simulated/floor/tiled/techmaint,
/area/stellardelight/deck1/aft)
-"TP" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/floor_decal/steeldecal/steel_decals6{
- dir = 4
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/explobriefing)
"TQ" = (
/obj/structure/cable/green{
icon_state = "1-8"
@@ -21568,24 +21486,13 @@
/turf/simulated/floor,
/area/maintenance/stellardelight/deck1/starboardcent)
"TR" = (
-/obj/structure/cable/green{
- color = "#42038a";
- icon_state = "4-8"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/floor_decal/steeldecal/steel_decals6{
- dir = 8
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/obj/structure/table/rack,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/clean,
+/obj/random/maintenance/clean,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"TS" = (
/obj/random/maintenance/security,
/obj/random/maintenance/security,
@@ -21834,11 +21741,12 @@
/turf/simulated/floor/tiled/milspec,
/area/stellardelight/deck1/explobriefing)
"Up" = (
-/obj/machinery/status_display{
- pixel_y = 32
- },
-/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/explobriefing)
+/obj/structure/table/rack/shelf,
+/obj/random/medical,
+/obj/random/medical,
+/obj/random/maintenance,
+/turf/simulated/floor,
+/area/maintenance/stellardelight/deck1/exploration)
"Uq" = (
/obj/structure/cable/pink{
icon_state = "1-2"
@@ -23491,14 +23399,9 @@
/turf/simulated/floor/tiled/techfloor,
/area/stellardelight/deck1/researchserver)
"XH" = (
-/obj/machinery/status_display{
- pixel_y = 32
- },
-/obj/effect/floor_decal/steeldecal/steel_decals6{
- dir = 1
- },
+/obj/machinery/alarm/angled,
/turf/simulated/floor/tiled/milspec,
-/area/stellardelight/deck1/exploration)
+/area/stellardelight/deck1/explobriefing)
"XJ" = (
/obj/structure/disposalpipe/segment,
/obj/effect/floor_decal/milspec/color/emerald/half{
@@ -30669,7 +30572,7 @@ iU
iU
iU
KZ
-vT
+mP
tE
Jo
BP
@@ -30677,7 +30580,7 @@ Cc
gw
xw
vT
-Gy
+DX
ra
bD
vF
@@ -30813,13 +30716,13 @@ um
In
wm
Ag
+wm
Ly
wm
wm
-rB
wm
Np
-Oz
+vT
ra
RF
vF
@@ -30953,16 +30856,16 @@ KD
KP
um
if
-WM
-WM
-WM
-WM
-WM
-WM
-WM
-XD
-WM
-nk
+RS
+RS
+NY
+RS
+RS
+RS
+RS
+rB
+RS
+ra
RF
vF
bD
@@ -31095,16 +30998,16 @@ ng
cC
um
if
-WM
+RS
Cl
-wq
+vT
mP
Lp
-wk
-sT
-gS
-Sn
-nk
+RS
+wq
+if
+Gy
+ra
bD
hE
JE
@@ -31237,18 +31140,18 @@ um
Jp
um
if
-WM
-Rz
-Rz
-Uo
-kg
-kg
-kg
-ji
-kO
-He
-JE
-en
+RS
+Hf
+vT
+vT
+Jz
+RS
+TR
+if
+ve
+ra
+RF
+vF
uq
RF
vF
@@ -31379,16 +31282,16 @@ Mn
PL
DQ
XM
-WM
+RS
Up
-Rz
-TC
-zZ
-yP
-zZ
-OB
-Rz
-ny
+vT
+vT
+pd
+RS
+LO
+if
+pd
+ra
bD
vF
uq
@@ -31521,16 +31424,16 @@ Ua
Ua
Ua
Ec
+RS
+tm
WM
-HS
-Rz
-TC
-oZ
-Zh
-rt
-OB
-Rz
-ny
+WM
+WM
+WM
+WM
+XD
+WM
+nk
uq
vF
uq
@@ -31663,16 +31566,16 @@ ex
Pu
Ua
Ec
-WM
-Rz
-Rz
-NA
-An
-An
-An
-sN
-Rz
-ny
+Jz
+tm
+HG
+oq
+wk
+Sn
+sT
+HS
+TD
+nk
bD
vF
uq
@@ -31805,16 +31708,16 @@ fQ
nl
MV
gt
-WM
+Oz
+tm
ql
-TP
-CW
-Fx
-fe
-qk
-aC
-Fy
-nk
+Rz
+Rz
+Rz
+Rz
+sN
+Rz
+ny
bD
vF
uq
@@ -31949,16 +31852,16 @@ pC
pC
pC
pC
-vy
-mW
-RS
-RS
-RS
-RS
-RS
-nk
-RF
-vF
+Rz
+Uo
+kg
+kg
+kg
+ji
+kO
+He
+JE
+rM
uq
RF
vF
@@ -32092,13 +31995,13 @@ nd
Nx
pC
XH
-TR
-WH
-mH
-WH
-WH
-Hf
-LZ
+TC
+zZ
+yP
+zZ
+OB
+Rz
+nk
bD
hE
JE
@@ -32234,13 +32137,13 @@ ZQ
sO
pC
CK
-jZ
-DO
-uf
-DO
-pd
-ve
-uB
+TC
+oZ
+Zh
+rt
+OB
+Rz
+ny
uq
vF
bD
@@ -32375,14 +32278,14 @@ tY
tY
zK
pC
-By
-TD
-ux
-rM
-Qt
-Qt
-HG
-uB
+Rz
+NA
+An
+An
+An
+sN
+Rz
+ny
uq
vF
uq
@@ -32519,12 +32422,12 @@ eJ
pC
PE
jZ
-PC
-PC
-PC
-md
-tm
-LZ
+Fx
+fe
+qk
+aC
+Fy
+nk
bD
vF
uq
@@ -32659,16 +32562,16 @@ AD
UR
xk
pC
-Jz
-LO
-ey
-ey
-ey
-ey
-ey
-NY
-JE
-oq
+vy
+mW
+WM
+WM
+WM
+WM
+WM
+nk
+RF
+vF
uq
uq
uq
@@ -32803,10 +32706,10 @@ tu
pC
zL
SE
+Dt
vz
WH
WH
-WH
gh
uB
bD
@@ -33087,7 +32990,7 @@ Pw
DO
iQ
KU
-PC
+DO
PC
lw
PC
diff --git a/tgui/docs/tgui-for-custom-html-popups.md b/tgui/docs/tgui-for-custom-html-popups.md
index f25060e9fa0..f7efffbe081 100644
--- a/tgui/docs/tgui-for-custom-html-popups.md
+++ b/tgui/docs/tgui-for-custom-html-popups.md
@@ -193,7 +193,7 @@ To receive it in DM, you must register a delegate proc (callback) that will rece
```dm
/datum/my_object/proc/initialize()
// ...
- window.subscribe(src, .proc/on_message)
+ window.subscribe(src, PROC_REF(on_message))
/datum/my_object/proc/on_message(type, payload)
if (type == "click")
process_button_click(payload["button"])
diff --git a/tgui/packages/tgui/hotkeys.ts b/tgui/packages/tgui/hotkeys.ts
index f7176bd0030..6e945cf4ebd 100644
--- a/tgui/packages/tgui/hotkeys.ts
+++ b/tgui/packages/tgui/hotkeys.ts
@@ -103,14 +103,14 @@ const handlePassthrough = (key: KeyEvent) => {
// KeyDown
if (key.isDown() && !keyState[byondKeyCode]) {
keyState[byondKeyCode] = true;
- const command = `KeyDown "${byondKeyCode}"`;
+ const command = `TguiKeyDown "${byondKeyCode}"`;
logger.debug(command);
return Byond.command(command);
}
// KeyUp
if (key.isUp() && keyState[byondKeyCode]) {
keyState[byondKeyCode] = false;
- const command = `KeyUp "${byondKeyCode}"`;
+ const command = `TguiKeyUp "${byondKeyCode}"`;
logger.debug(command);
return Byond.command(command);
}
@@ -139,7 +139,7 @@ export const releaseHeldKeys = () => {
if (keyState[byondKeyCode]) {
keyState[byondKeyCode] = false;
logger.log(`releasing key "${byondKeyCode}"`);
- Byond.command(`KeyUp "${byondKeyCode}"`);
+ Byond.command(`TguiKeyUp "${byondKeyCode}"`);
}
}
};
diff --git a/tgui/packages/tgui/interfaces/MobSpawner.tsx b/tgui/packages/tgui/interfaces/MobSpawner.tsx
index 1f98c55570c..87abe395652 100644
--- a/tgui/packages/tgui/interfaces/MobSpawner.tsx
+++ b/tgui/packages/tgui/interfaces/MobSpawner.tsx
@@ -1,6 +1,6 @@
import { BooleanLike } from '../../common/react';
import { useBackend, useLocalState } from '../backend';
-import { Button, Dropdown, Flex, Input, Knob, LabeledList, NumberInput, Section, Tabs, TextArea } from '../components';
+import { Button, Flex, Input, Knob, LabeledList, NumberInput, Section, Tabs, TextArea } from '../components';
import { Window } from '../layouts';
type Data = {
@@ -12,8 +12,6 @@ type Data = {
default_speak_emotes: string[];
- mob_paths: string[];
-
loc_lock: BooleanLike;
loc_x: number;
loc_y: number;
@@ -91,11 +89,10 @@ const GeneralMobSettings = (props, context) => {
/>
- act('select_path', { path: val })}
+ content={data.path || 'Select Path'}
+ onClick={(val) => act('select_path')}
/>
@@ -182,9 +179,9 @@ const GeneralMobSettings = (props, context) => {
onCLick={() =>
act('start_spawn', {
amount: amount,
- name: name,
- desc: desc,
- flavor_text: flavorText,
+ name: name || data.default_path_name,
+ desc: desc || data.default_desc,
+ flavor_text: flavorText || data.default_flavor_text,
size_multiplier: sizeMultiplier * 0.01,
x: data.loc_lock ? data.loc_x : x,
y: data.loc_lock ? data.loc_y : y,
diff --git a/tgui/packages/tgui/interfaces/TraitTutorial.tsx b/tgui/packages/tgui/interfaces/TraitTutorial.tsx
index 17c243b5f37..a89ae620934 100644
--- a/tgui/packages/tgui/interfaces/TraitTutorial.tsx
+++ b/tgui/packages/tgui/interfaces/TraitTutorial.tsx
@@ -1,6 +1,6 @@
/* eslint-disable react/no-danger */
import { useBackend } from '../backend';
-import { Flex, Tabs, Section, Box, Divider } from '../components';
+import { Stack, Tabs, Section, Box } from '../components';
import { Window } from '../layouts';
type data = {
@@ -15,9 +15,9 @@ type data = {
export const TraitTutorial = (props, context) => {
const { act, data } = useBackend(context);
return (
-
+
-
@@ -31,10 +31,10 @@ export const TraitSelection = (props, context) => {
const { names, selection } = data;
return (
-
-
-
-
+
+
+
+
{names.map((name) => (
{
))}
-
-
-
-
-
+
+
{selection && (
-
-
+
+
);
};
@@ -67,7 +64,7 @@ export const TraitDescription = (props, context) => {
const { descriptions, categories, tutorials } = data;
return (
-
+
Name: {name}
Category: {categories[name]}