diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml
index 53a293e71c3..235eb97fc54 100644
--- a/SpacemanDMM.toml
+++ b/SpacemanDMM.toml
@@ -1,12 +1,14 @@
+environment = "fortune13.dme"
+
[langserver]
dreamchecker = true
-[debugger]
-engine = "auxtools"
-
-#[code_standards]
+[code_standards]
disallow_relative_type_definitions = true
disallow_relative_proc_definitions = true
[dmdoc]
use_typepath_names = true
+
+[debugger]
+engine = "auxtools"
diff --git a/arfsuits.dm b/arfsuits.dm
index 7d86e13cc59..614184e9ffa 100644
--- a/arfsuits.dm
+++ b/arfsuits.dm
@@ -4831,7 +4831,7 @@
emped = TRUE
slowdown += induced_slowdown
L.update_equipment_speed_mods()
- addtimer(CALLBACK(src, .proc/end_emp_effect, induced_slowdown), 50)
+ addtimer(CALLBACK(src, PROC_REF(end_emp_effect), induced_slowdown), 50)
return
/obj/item/clothing/suit/armor/power_armor/proc/end_emp_effect(slowdown_induced)
diff --git a/code/__DEFINES/callbacks.dm b/code/__DEFINES/callbacks.dm
index f25dfdf1500..21e8863458b 100644
--- a/code/__DEFINES/callbacks.dm
+++ b/code/__DEFINES/callbacks.dm
@@ -2,4 +2,4 @@
/// A shorthand for the callback datum, [documented here](datum/callback.html)
#define CALLBACK new /datum/callback
#define INVOKE_ASYNC world.ImmediateInvokeAsync
-#define CALLBACK_NEW(typepath, args) CALLBACK(GLOBAL_PROC, /proc/___callbacknew, typepath, args)
+#define CALLBACK_NEW(typepath, args) CALLBACK(usr, GLOBAL_PROC_REF(___callbacknew), typepath, args)
diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm
index f1d0e677ba3..c5852252205 100644
--- a/code/__DEFINES/cooldowns.dm
+++ b/code/__DEFINES/cooldowns.dm
@@ -34,7 +34,7 @@
#define COMSIG_CD_STOP(cd_index) "cooldown_[cd_index]"
#define COMSIG_CD_RESET(cd_index) "cd_reset_[cd_index]"
-#define TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, /proc/end_cooldown, cd_source, cd_index), cd_time))
+#define TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(usr, GLOBAL_PROC_REF(end_cooldown), cd_source, cd_index), cd_time))
#define TIMER_COOLDOWN_CHECK(cd_source, cd_index) LAZYACCESS(cd_source.cooldowns, cd_index)
@@ -47,7 +47,7 @@
* A bit more expensive than the regular timers, but can be reset before they end and the time left can be checked.
*/
-#define S_TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, /proc/end_cooldown, cd_source, cd_index), cd_time, TIMER_STOPPABLE))
+#define S_TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(usr, GLOBAL_PROC_REF(end_cooldown), cd_source, cd_index), cd_time, TIMER_STOPPABLE))
#define S_TIMER_COOLDOWN_RESET(cd_source, cd_index) reset_cooldown(cd_source, cd_index)
diff --git a/code/__DEFINES/qdel.dm b/code/__DEFINES/qdel.dm
index 2ba41bc47cd..baf66055524 100644
--- a/code/__DEFINES/qdel.dm
+++ b/code/__DEFINES/qdel.dm
@@ -47,11 +47,11 @@
#define QDELETED(X) (!X || QDELING(X))
#define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
-#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, (time) > GC_FILTER_QUEUE ? WEAKREF(item) : 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(usr, GLOBAL_PROC_REF(qdel), (time) > GC_FILTER_QUEUE ? WEAKREF(item) : item), time, TIMER_STOPPABLE)
+#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(usr, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
#define QDEL_NULL(item) qdel(item); item = 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(usr, 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 4b2ac79d8fd..5aa1f07d6a0 100644
--- a/code/__DEFINES/rust_g.dm
+++ b/code/__DEFINES/rust_g.dm
@@ -39,31 +39,31 @@
#endif
/// Gets the version of rust_g
-/proc/rustg_get_version() return call(RUST_G, "get_version")()
+/proc/rustg_get_version() return LIBCALL(RUST_G, "get_version")()
/**
* Sets up the Aho-Corasick automaton with its default options.
*
- * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call
+ * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace LIBCALL
* Arguments:
- * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls
+ * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements LIBCALLs
* * patterns - A non-associative list of strings to search for
* * replacements - Default replacements for this automaton, used with rustg_acreplace
*/
-#define rustg_setup_acreplace(key, patterns, replacements) call(RUST_G, "setup_acreplace")(key, json_encode(patterns), json_encode(replacements))
+#define rustg_setup_acreplace(key, patterns, replacements) LIBCALL(RUST_G, "setup_acreplace")(key, json_encode(patterns), json_encode(replacements))
/**
* Sets up the Aho-Corasick automaton using supplied options.
*
- * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace call
+ * The search patterns list and the replacements must be of the same length when replace is run, but an empty replacements list is allowed if replacements are supplied with the replace LIBCALL
* Arguments:
- * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements calls
- * * options - An associative list like list("anchored" = 0, "ascii_case_insensitive" = 0, "match_kind" = "Standard"). The values shown on the example are the defaults, and default values may be omitted. See the identically named methods at https://docs.rs/aho-corasick/latest/aho_corasick/struct.AhoCorasickBuilder.html to see what the options do.
+ * * key - The key for the automaton, to be used with subsequent rustg_acreplace/rustg_acreplace_with_replacements LIBCALLs
+ * * options - An associative list like list("anchored" = 0, "ascii_case_insensitive" = 0, "match_kind" = "Standard"). The values shown on the example are the defaults, and default values may be omitted. See the identiLIBCALLy named methods at https://docs.rs/aho-corasick/latest/aho_corasick/struct.AhoCorasickBuilder.html to see what the options do.
* * patterns - A non-associative list of strings to search for
* * replacements - Default replacements for this automaton, used with rustg_acreplace
*/
-#define rustg_setup_acreplace_with_options(key, options, patterns, replacements) call(RUST_G, "setup_acreplace")(key, json_encode(options), json_encode(patterns), json_encode(replacements))
+#define rustg_setup_acreplace_with_options(key, options, patterns, replacements) LIBCALL(RUST_G, "setup_acreplace")(key, json_encode(options), json_encode(patterns), json_encode(replacements))
/**
* Run the specified replacement engine with the provided haystack text to replace, returning replaced text.
@@ -72,7 +72,7 @@
* * key - The key for the automaton
* * text - Text to run replacements on
*/
-#define rustg_acreplace(key, text) call(RUST_G, "acreplace")(key, text)
+#define rustg_acreplace(key, text) LIBCALL(RUST_G, "acreplace")(key, text)
/**
* Run the specified replacement engine with the provided haystack text to replace, returning replaced text.
@@ -80,9 +80,9 @@
* Arguments:
* * key - The key for the automaton
* * text - Text to run replacements on
- * * replacements - Replacements for this call. Must be the same length as the set-up patterns
+ * * replacements - Replacements for this LIBCALL. Must be the same length as the set-up patterns
*/
-#define rustg_acreplace_with_replacements(key, text, replacements) call(RUST_G, "acreplace_with_replacements")(key, text, json_encode(replacements))
+#define rustg_acreplace_with_replacements(key, text, replacements) LIBCALL(RUST_G, "acreplace_with_replacements")(key, text, json_encode(replacements))
/**
* This proc generates a cellular automata noise grid which can be used in procedural generation methods.
@@ -98,26 +98,26 @@
* * height: The height of the grid.
*/
#define rustg_cnoise_generate(percentage, smoothing_iterations, birth_limit, death_limit, width, height) \
- call(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height)
+ LIBCALL(RUST_G, "cnoise_generate")(percentage, smoothing_iterations, birth_limit, death_limit, width, height)
-#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_resize_png(path, width, height, resizetype) call(RUST_G, "dmi_resize_png")(path, width, height, resizetype)
+#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_dmi_resize_png(path, width, height, resizetype) LIBCALL(RUST_G, "dmi_resize_png")(path, width, height, resizetype)
-#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_get_line_count(fname) text2num(call(RUST_G, "file_get_line_count")(fname))
-#define rustg_file_seek_line(fname, line) call(RUST_G, "file_seek_line")(fname, "[line]")
+#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)
+#define rustg_file_get_line_count(fname) text2num(LIBCALL(RUST_G, "file_get_line_count")(fname))
+#define rustg_file_seek_line(fname, line) LIBCALL(RUST_G, "file_seek_line")(fname, "[line]")
#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_HTTP_METHOD_GET "get"
#define RUSTG_HTTP_METHOD_PUT "put"
@@ -125,36 +125,36 @@
#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, options) call(RUST_G, "http_request_blocking")(method, url, body, headers, options)
-#define rustg_http_request_async(method, url, body, headers, options) call(RUST_G, "http_request_async")(method, url, body, headers, options)
-#define rustg_http_check_request(req_id) call(RUST_G, "http_check_request")(req_id)
+#define rustg_http_request_blocking(method, url, body, headers, options) LIBCALL(RUST_G, "http_request_blocking")(method, url, body, headers, options)
+#define rustg_http_request_async(method, url, body, headers, options) LIBCALL(RUST_G, "http_request_async")(method, url, body, headers, options)
+#define rustg_http_check_request(req_id) LIBCALL(RUST_G, "http_check_request")(req_id)
#define RUSTG_JOB_NO_RESULTS_YET "NO RESULTS YET"
#define RUSTG_JOB_NO_SUCH_JOB "NO SUCH JOB"
#define RUSTG_JOB_ERROR "JOB PANICKED"
-#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_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_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]")
-#define rustg_time_microseconds(id) text2num(call(RUST_G, "time_microseconds")(id))
-#define rustg_time_milliseconds(id) text2num(call(RUST_G, "time_milliseconds")(id))
-#define rustg_time_reset(id) call(RUST_G, "time_reset")(id)
+#define rustg_time_microseconds(id) text2num(LIBCALL(RUST_G, "time_microseconds")(id))
+#define rustg_time_milliseconds(id) text2num(LIBCALL(RUST_G, "time_milliseconds")(id))
+#define rustg_time_reset(id) LIBCALL(RUST_G, "time_reset")(id)
-#define rustg_read_toml_file(path) json_decode(call(RUST_G, "toml_file_to_json")(path) || "null")
+#define rustg_read_toml_file(path) json_decode(LIBCALL(RUST_G, "toml_file_to_json")(path) || "null")
-#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)
diff --git a/code/__DEFINES/skills/helpers.dm b/code/__DEFINES/skills/helpers.dm
index e52179b554f..fc56ea1b0de 100644
--- a/code/__DEFINES/skills/helpers.dm
+++ b/code/__DEFINES/skills/helpers.dm
@@ -27,7 +27,7 @@
if(body.mind){\
body.mind.add_skill_modifier(prototype.identifier)\
} else {\
- prototype.RegisterSignal(body, COMSIG_MOB_ON_NEW_MIND, /datum/skill_modifier.proc/on_mob_new_mind, TRUE)\
+ prototype.RegisterSignal(body, COMSIG_MOB_ON_NEW_MIND, TYPE_PROC_REF(/datum/skill_modifier,on_mob_new_mind), TRUE)\
}
/// Same as above but to remove the skill modifier.
diff --git a/code/__DEFINES/spaceman_dmm.dm b/code/__DEFINES/spaceman_dmm.dm
index 9e1e7fa482d..cabb02fd49c 100644
--- a/code/__DEFINES/spaceman_dmm.dm
+++ b/code/__DEFINES/spaceman_dmm.dm
@@ -3,30 +3,72 @@
// The SPACEMAN_DMM define is set by the linter and other tooling when it runs.
#ifdef SPACEMAN_DMM
+ /**
+ * Sets a return type expression for a proc. The return type can take the forms:
+
+ * `/typepath` - a raw typepath. The return type of the proc is the type named.
+
+ * `param` - a typepath given as a parameter, for procs which return an instance of the passed-in type.
+
+ * `param.type` - the static type of a passed-in parameter, for procs which
+ * return their input or otherwise another value of the same type.
+
+ * `param[_].type` - the static type of a passed-in parameter, with one level
+ * of `/list` stripped, for procs which select one item from a list. The `[_]`
+ * may be repeated to strip more levels of `/list`.
+ */
#define RETURN_TYPE(X) set SpacemanDMM_return_type = X
+ /**
+ * If set, will enable a diagnostic on children of the proc it is set on which do
+ * not contain any `..()` parent calls. This can help with finding situations
+ * where a signal or other important handling in the parent proc is being skipped.
+ * Child procs may set this setting to `0` instead to override the check.
+ */
#define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X
- #define UNLINT(X) SpacemanDMM_unlint(X)
+ /**
+ * If set, raise a warning for any child procs that override this one,
+ * regardless of if it calls parent or not.
+ * This functions in a similar way to the `final` keyword in some languages.
+ * This cannot be disabled by child overrides.
+ */
#define SHOULD_NOT_OVERRIDE(X) set SpacemanDMM_should_not_override = X
+ /**
+ * If set, raise a warning if the proc or one of the sub-procs it calls
+ * uses a blocking call, such as `sleep()` or `input()` without using `set waitfor = 0`
+ * This cannot be disabled by child overrides.
+ */
#define SHOULD_NOT_SLEEP(X) set SpacemanDMM_should_not_sleep = X
+ /**
+ * If set, ensure a proc is 'pure', such that it does not make any changes
+ * outside itself or output. This also checks to make sure anything using
+ * this proc doesn't invoke it without making use of the return value.
+ * This cannot be disabled by child overrides.
+ */
#define SHOULD_BE_PURE(X) set SpacemanDMM_should_be_pure = X
+ ///Private procs can only be called by things of exactly the same type.
#define PRIVATE_PROC(X) set SpacemanDMM_private_proc = X
+ ///Protected procs can only be call by things of the same type *or subtypes*.
#define PROTECTED_PROC(X) set SpacemanDMM_protected_proc = X
+ ///If set, will not lint.
+ #define UNLINT(X) SpacemanDMM_unlint(X)
+
+ ///If set, overriding their value isn't permitted by types that inherit it.
#define VAR_FINAL var/SpacemanDMM_final
+ ///Private vars can only be called by things of exactly the same type.
#define VAR_PRIVATE var/SpacemanDMM_private
+ ///Protected vars can only be called by things of the same type *or subtypes*.
#define VAR_PROTECTED var/SpacemanDMM_protected
#else
#define RETURN_TYPE(X)
#define SHOULD_CALL_PARENT(X)
- #define UNLINT(X) X
#define SHOULD_NOT_OVERRIDE(X)
#define SHOULD_NOT_SLEEP(X)
#define SHOULD_BE_PURE(X)
#define PRIVATE_PROC(X)
#define PROTECTED_PROC(X)
+ #define UNLINT(X) X
+
#define VAR_FINAL var
#define VAR_PRIVATE var
#define VAR_PROTECTED var
#endif
-
-/proc/enable_debugging()
- CRASH("Auxtools not found")
diff --git a/code/__HELPERS/_extools_api.dm b/code/__HELPERS/_extools_api.dm
index ab88131d96f..ba7a4047f4a 100644
--- a/code/__HELPERS/_extools_api.dm
+++ b/code/__HELPERS/_extools_api.dm
@@ -16,7 +16,7 @@ GLOBAL_LIST_EMPTY(auxtools_initialized)
#define AUXTOOLS_CHECK(LIB)\
if (!GLOB.auxtools_initialized[LIB]) {\
if (fexists(LIB)) {\
- var/string = call(LIB,"auxtools_init")();\
+ var/string = LIBCALL(LIB,"auxtools_init")();\
if(findtext(string, "SUCCESS")) {\
GLOB.auxtools_initialized[LIB] = TRUE;\
} else {\
@@ -29,6 +29,9 @@ GLOBAL_LIST_EMPTY(auxtools_initialized)
#define AUXTOOLS_SHUTDOWN(LIB)\
if (GLOB.auxtools_initialized[LIB] && fexists(LIB)){\
- call(LIB,"auxtools_shutdown")();\
+ LIBCALL(LIB,"auxtools_shutdown")();\
GLOB.auxtools_initialized[LIB] = FALSE;\
}\
+
+/proc/enable_debugging()
+ CRASH("Auxtools not found")
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index 13c2ec265c0..d3f61b0e669 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -575,16 +575,16 @@
///uses sort_list() but uses the var's name specifically. This should probably be using mergeAtom() instead
/proc/sort_names(list/list_to_sort, order=1)
- return sortTim(list_to_sort.Copy(), order >= 0 ? /proc/cmp_name_asc : /proc/cmp_name_dsc)
+ return sortTim(list_to_sort.Copy(), order >= 0 ? GLOBAL_PROC_REF(cmp_name_asc) : GLOBAL_PROC_REF(cmp_name_dsc))
//for sorting clients or mobs by ckey
/proc/sortKey(list/L, order=1)
- return sortTim(L, order >= 0 ? /proc/cmp_ckey_asc : /proc/cmp_ckey_dsc)
+ return sortTim(L, order >= 0 ? GLOBAL_PROC_REF(cmp_ckey_asc) : GLOBAL_PROC_REF(cmp_ckey_dsc))
//Specifically for record datums in a list.
/proc/sortRecord(list/L, field = "name", order = 1)
GLOB.cmp_field = field
- return sortTim(L, order >= 0 ? /proc/cmp_records_asc : /proc/cmp_records_dsc)
+ return sortTim(L, order >= 0 ? GLOBAL_PROC_REF(cmp_records_asc) : GLOBAL_PROC_REF(cmp_records_dsc))
//any value in a list
/proc/sortList(list/L, cmp=/proc/cmp_text_asc)
@@ -592,11 +592,11 @@
//uses sortList() but uses the var's name specifically. This should probably be using mergeAtom() instead
/proc/sortNames(list/L, order=1)
- return sortTim(L, order >= 0 ? /proc/cmp_name_asc : /proc/cmp_name_dsc)
+ return sortTim(L, order >= 0 ? GLOBAL_PROC_REF(cmp_name_asc) : GLOBAL_PROC_REF(cmp_name_dsc))
//uses sortList() but uses the mob's ckey specifically!
/proc/sortCkeys(list/L, order=1)
- return sortTim(L, order >= 0 ? /proc/cmp_ckey_mob_asc : /proc/cmp_ckey_mob_dsc)
+ return sortTim(L, order >= 0 ? GLOBAL_PROC_REF(cmp_ckey_mob_asc) : GLOBAL_PROC_REF(cmp_ckey_mob_dsc))
//Converts a bitfield to a list of numbers (or words if a wordlist is provided)
/proc/bitfield2list(bitfield = 0, list/wordlist)
diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm
index b112ab1ee04..47f6f209867 100644
--- a/code/__HELPERS/areas.dm
+++ b/code/__HELPERS/areas.dm
@@ -12,11 +12,11 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(/area/engine/eng
for(var/area/A in world)
GLOB.sortedAreas.Add(A)
- sortTim(GLOB.sortedAreas, /proc/cmp_name_asc)
+ sortTim(GLOB.sortedAreas, GLOBAL_PROC_REF(cmp_name_asc))
/area/proc/addSorted()
GLOB.sortedAreas.Add(src)
- sortTim(GLOB.sortedAreas, /proc/cmp_name_asc)
+ sortTim(GLOB.sortedAreas, GLOBAL_PROC_REF(cmp_name_asc))
//Takes: Area type as a text string from a variable.
//Returns: Instance for the area in the world.
diff --git a/code/__HELPERS/files.dm b/code/__HELPERS/files.dm
index 8cc54cd8641..976cf6b04fd 100644
--- a/code/__HELPERS/files.dm
+++ b/code/__HELPERS/files.dm
@@ -31,7 +31,7 @@
for(var/i=0, i ", CONFIG_GET(string/discord_channel_serverstatus))
world.TgsTargetedChatBroadcast("The current round has ended. Please standby for your [pick(publisher)] report!", FALSE)
//lonestar edit. i'm adding a timer here because i'm tired of the messages being sent out of order
- addtimer(CALLBACK(src, .proc/send_roundinfo), 3 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(send_roundinfo)), 3 SECONDS)
CHECK_TICK
@@ -253,7 +253,7 @@
end_of_round_deathmatch()
var/time_to_end = CONFIG_GET(number/eorg_period)
to_chat(world, "EORD in progress, game end delayed by [time_to_end * 0.1] seconds!")
- addtimer(CALLBACK(src, .proc/standard_reboot), time_to_end)
+ addtimer(CALLBACK(src,PROC_REF(standard_reboot)), time_to_end)
/datum/controller/subsystem/ticker/proc/standard_reboot()
@@ -522,7 +522,7 @@
var/currrent_category
var/datum/antagonist/previous_category
- sortTim(all_antagonists, /proc/cmp_antag_category)
+ sortTim(all_antagonists, GLOBAL_PROC_REF(cmp_antag_category))
for(var/datum/antagonist/A in all_antagonists)
if(!A.show_in_roundend)
diff --git a/code/__HELPERS/sorts/__main.dm b/code/__HELPERS/sorts/__main.dm
index 2e64d8787d4..a636ed47654 100644
--- a/code/__HELPERS/sorts/__main.dm
+++ b/code/__HELPERS/sorts/__main.dm
@@ -15,7 +15,7 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new())
var/list/L
//The comparator proc-reference
- var/cmp = /proc/cmp_numeric_asc
+ var/cmp = GLOBAL_PROC_REF(cmp_numeric_asc)
//whether we are sorting list keys (0: L[i]) or associated values (1: L[L[i]])
var/associative = 0
diff --git a/code/__HELPERS/stat_tracking.dm b/code/__HELPERS/stat_tracking.dm
index 007cd2695d0..872a61ea3b1 100644
--- a/code/__HELPERS/stat_tracking.dm
+++ b/code/__HELPERS/stat_tracking.dm
@@ -1,4 +1,4 @@
-/proc/render_stats(list/stats, user, sort = /proc/cmp_generic_stat_item_time)
+/proc/render_stats(list/stats, user, sort=/proc/cmp_generic_stat_item_time)
sortTim(stats, sort, TRUE)
var/list/lines = list()
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 0fdb53e702f..3437dc827f6 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -24,7 +24,7 @@ Location where the teleport begins, target that will teleport, distance to go, d
Random error in tile placement x, error in tile placement y, and block offset.
Block offset tells the proc how to place the box. Behind teleport location, relative to starting location, forward, etc.
Negative values for offset are accepted, think of it in relation to North, -x is west, -y is south. Error defaults to positive.
-Turf and target are separate in case you want to teleport some distance from a turf the target is not standing on or something.
+/turf and target are separate in case you want to teleport some distance from a turf the target is not standing on or something.
*/
var/dirx = 0//Generic location finding variable.
@@ -1075,7 +1075,7 @@ rough example of the "cone" made by the 3 dirs checked
return closest_atom
-proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
+/proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
if (value == FALSE) //nothing should be calling us with a number, so this is safe
value = input("Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text
if (isnull(value))
@@ -1357,12 +1357,25 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
if(is_servant_of_ratvar(V) || isobserver(V))
. += V*/
-//datum may be null, but it does need to be a typed var
+/**
+ * NAMEOF: Compile time checked variable name to string conversion
+ * evaluates to a string equal to "X", but compile errors if X isn't a var on datum.
+ * 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)
+/**
+ * NAMEOF that actually works in static definitions because src::type requires src to be defined
+ */
+#if DM_VERSION >= 515
+#define NAMEOF_STATIC(datum, X) (nameof(type::##X))
+#else
+#define NAMEOF_STATIC(datum, X) (#X || ##datum.##X)
+#endif
+
+#define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(usr, 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(usr, GLOBAL_PROC_REF(___callbackvarset), ##datum, NAMEOF(##datum, ##var), ##var_value)
/proc/___callbackvarset(list_or_datum, var_name, var_value)
if(length(list_or_datum))
@@ -1374,8 +1387,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
else
D.vars[var_name] = var_value
-#define TRAIT_CALLBACK_ADD(target, trait, source) CALLBACK(GLOBAL_PROC, /proc/___TraitAdd, ##target, ##trait, ##source)
-#define TRAIT_CALLBACK_REMOVE(target, trait, source) CALLBACK(GLOBAL_PROC, /proc/___TraitRemove, ##target, ##trait, ##source)
+#define TRAIT_CALLBACK_ADD(target, trait, source) CALLBACK(usr, GLOBAL_PROC_REF(___TraitAdd), ##target, ##trait, ##source)
+#define TRAIT_CALLBACK_REMOVE(target, trait, source) CALLBACK(usr, GLOBAL_PROC_REF(___TraitRemove), ##target, ##trait, ##source)
///DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
/proc/___TraitAdd(target,trait,source)
diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm
new file mode 100644
index 00000000000..c65279d8dd8
--- /dev/null
+++ b/code/__byond_version_compat.dm
@@ -0,0 +1,75 @@
+// This file contains defines allowing targeting byond versions newer than the supported
+
+//Update this whenever you need to take advantage of more recent byond features
+#define MIN_COMPILER_VERSION 514
+#define MIN_COMPILER_BUILD 1589
+#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM)
+//Don't forget to update this part
+#error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update.
+#error You need version 514.1556 or higher
+#endif
+
+#if (DM_VERSION == 514 && DM_BUILD > 1575 && DM_BUILD <= 1577)
+#error Your version of BYOND currently has a crashing issue that will prevent you from running Dream Daemon test servers.
+#error We require developers to test their content, so an inability to test means we cannot allow the compile.
+#error Please consider downgrading to 514.1575 or lower.
+#endif
+
+// Keep savefile compatibilty at minimum supported level
+#if DM_VERSION >= 515
+/savefile/byond_version = MIN_COMPILER_VERSION
+#endif
+
+// 515 split call for external libraries into call_ext
+#if DM_VERSION < 515
+#define LIBCALL call
+#else
+#define LIBCALL call_ext
+#endif
+
+// So we want to have compile time guarantees these methods exist on local type, unfortunately 515 killed the .proc/procname and .verb/verbname syntax so we have to use nameof()
+// For the record: GLOBAL_VERB_REF would be useless as verbs can't be global.
+
+#if DM_VERSION < 515
+
+/// Call by name proc references, checks if the proc exists on either this type or as a global proc.
+#define PROC_REF(X) (.proc/##X)
+/// Call by name verb references, checks if the verb exists on either this type or as a global verb.
+#define VERB_REF(X) (.verb/##X)
+
+/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc
+#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X)
+/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb
+#define TYPE_VERB_REF(TYPE, X) (##TYPE.verb/##X)
+
+/// Call by name proc reference, checks if the proc is an existing global proc
+#define GLOBAL_PROC_REF(X) (/proc/##X)
+
+#else
+
+/// Call by name proc references, checks if the proc exists on either this type or as a global proc.
+#define PROC_REF(X) (nameof(.proc/##X))
+/// Call by name verb references, checks if the verb exists on either this type or as a global verb.
+#define VERB_REF(X) (nameof(.verb/##X))
+
+/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc
+#define TYPE_PROC_REF(TYPE, X) (nameof(##TYPE.proc/##X))
+/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb
+#define TYPE_VERB_REF(TYPE, X) (nameof(##TYPE.verb/##X))
+
+/// Call by name proc reference, checks if the proc is an existing global proc
+#define GLOBAL_PROC_REF(X) (/proc/##X)
+
+#endif
+
+#if (DM_VERSION == 515)
+/// fcopy will crash on 515 linux if given a non-existant file, instead of returning 0 like on 514 linux or 515 windows
+/// var case matches documentation for fcopy.
+/world/proc/__fcopy(Src, Dst)
+ if (istext(Src) && !fexists(Src))
+ return 0
+ return fcopy(Src, Dst)
+
+#define fcopy(Src, Dst) world.__fcopy(Src, Dst)
+
+#endif
diff --git a/code/_compile_options.dm b/code/_compile_options.dm
index e8916779641..56b506d013d 100644
--- a/code/_compile_options.dm
+++ b/code/_compile_options.dm
@@ -64,7 +64,7 @@
#ifdef LOWMEMORYMODE
#define FORCE_MAP "_maps/runtimestation.json"
#endif
-
+/*
//Update this whenever you need to take advantage of more recent byond features
#define MIN_COMPILER_VERSION 513
#define MIN_COMPILER_BUILD 1514
@@ -73,7 +73,7 @@
#error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update.
#error You need version 513.1508 or higher
#endif
-
+*/
//Additional code for the above flags.
#ifdef TESTING
#warn compiling in TESTING mode. testing() debug messages will be visible.
diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm
index 60006ddbcc7..273b31f4ff5 100644
--- a/code/_onclick/ai.dm
+++ b/code/_onclick/ai.dm
@@ -75,11 +75,11 @@
if(aicamera.in_camera_mode)
aicamera.camera_mode_off()
- INVOKE_ASYNC(aicamera, /obj/item/camera.proc/captureimage, pixel_turf, usr)
+ INVOKE_ASYNC(aicamera, TYPE_PROC_REF(/obj/item/camera,captureimage), pixel_turf, usr)
return
if(waypoint_mode)
waypoint_mode = FALSE
- INVOKE_ASYNC(src, .proc/set_waypoint, A)
+ INVOKE_ASYNC(src,PROC_REF(set_waypoint), A)
return
A.attack_ai(src)
diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm
index e30b1836805..0726c052d13 100644
--- a/code/_onclick/cyborg.dm
+++ b/code/_onclick/cyborg.dm
@@ -40,7 +40,7 @@
*/
if(aicamera.in_camera_mode) //Cyborg picture taking
aicamera.camera_mode_off()
- INVOKE_ASYNC(aicamera, /obj/item/camera.proc/captureimage, A, usr)
+ INVOKE_ASYNC(aicamera, TYPE_PROC_REF(/obj/item/camera,captureimage), A, usr)
return
var/obj/item/W = get_active_held_item()
@@ -48,7 +48,7 @@
if(!W && A.Adjacent(src) && (isobj(A) || ismob(A)))
var/atom/movable/C = A
if(C.can_buckle && C.has_buckled_mobs())
- INVOKE_ASYNC(C, /atom/movable.proc/precise_user_unbuckle_mob, src)
+ INVOKE_ASYNC(C, TYPE_PROC_REF(/atom/movable,precise_user_unbuckle_mob), src)
return
if(!W && (get_dist(src,A) <= interaction_range))
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index dd96abee1df..49f671cc261 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -65,7 +65,7 @@
animate(thealert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
if(thealert.timeout)
- addtimer(CALLBACK(src, .proc/alert_timeout, thealert, category), thealert.timeout)
+ addtimer(CALLBACK(src,PROC_REF(alert_timeout), thealert, category), thealert.timeout)
thealert.timeout = world.time + thealert.timeout - world.tick_lag
return thealert
diff --git a/code/_onclick/hud/credits.dm b/code/_onclick/hud/credits.dm
index 974f1583236..35daf401d09 100644
--- a/code/_onclick/hud/credits.dm
+++ b/code/_onclick/hud/credits.dm
@@ -53,7 +53,7 @@
animate(src, transform = M, time = CREDIT_ROLL_SPEED)
target = M
animate(src, alpha = 255, time = CREDIT_EASE_DURATION, flags = ANIMATION_PARALLEL)
- addtimer(CALLBACK(src, .proc/FadeOut), CREDIT_ROLL_SPEED - CREDIT_EASE_DURATION)
+ addtimer(CALLBACK(src,PROC_REF(FadeOut)), CREDIT_ROLL_SPEED - CREDIT_EASE_DURATION)
QDEL_IN(src, CREDIT_ROLL_SPEED)
P.screen += src
diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm
index 67f48907419..5ab9a49af6c 100644
--- a/code/_onclick/hud/fullscreen.dm
+++ b/code/_onclick/hud/fullscreen.dm
@@ -25,7 +25,7 @@
if(animated)
animate(screen, alpha = 0, time = animated)
- addtimer(CALLBACK(src, .proc/clear_fullscreen_after_animate, screen), animated, TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(src,PROC_REF(clear_fullscreen_after_animate), screen), animated, TIMER_CLIENT_TIME)
else
if(client)
client.screen -= screen
diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm
index d684a841e27..b35ecb43ce3 100755
--- a/code/_onclick/hud/parallax.dm
+++ b/code/_onclick/hud/parallax.dm
@@ -130,7 +130,7 @@
C.parallax_movedir = new_parallax_movedir
if (C.parallax_animate_timer)
deltimer(C.parallax_animate_timer)
- var/datum/callback/CB = CALLBACK(src, .proc/update_parallax_motionblur, C, animatedir, new_parallax_movedir, newtransform)
+ var/datum/callback/CB = CALLBACK(src,PROC_REF(update_parallax_motionblur), C, animatedir, new_parallax_movedir, newtransform)
if(skip_windups)
CB.InvokeAsync()
else
diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm
index f6551dfba2b..d299a22acc5 100644
--- a/code/_onclick/hud/radial.dm
+++ b/code/_onclick/hud/radial.dm
@@ -14,7 +14,7 @@ GLOBAL_LIST_EMPTY(radial_menus)
UnregisterSignal(parent, COMSIG_PARENT_QDELETING)
parent = new_value
if(parent)
- RegisterSignal(parent, COMSIG_PARENT_QDELETING, .proc/handle_parent_del)
+ RegisterSignal(parent, COMSIG_PARENT_QDELETING,PROC_REF(handle_parent_del))
/atom/movable/screen/radial/proc/handle_parent_del()
SIGNAL_HANDLER
diff --git a/code/_onclick/hud/screen_objects/storage.dm b/code/_onclick/hud/screen_objects/storage.dm
index 9a0f30ad7e0..39521cd0e66 100644
--- a/code/_onclick/hud/screen_objects/storage.dm
+++ b/code/_onclick/hud/screen_objects/storage.dm
@@ -57,8 +57,8 @@
/atom/movable/screen/storage/volumetric_box/Initialize(mapload, new_master, obj/item/our_item)
src.our_item = our_item
- RegisterSignal(our_item, COMSIG_ITEM_MOUSE_ENTER, .proc/on_item_mouse_enter)
- RegisterSignal(our_item, COMSIG_ITEM_MOUSE_EXIT, .proc/on_item_mouse_exit)
+ RegisterSignal(our_item, COMSIG_ITEM_MOUSE_ENTER,PROC_REF(on_item_mouse_enter))
+ RegisterSignal(our_item, COMSIG_ITEM_MOUSE_EXIT,PROC_REF(on_item_mouse_exit))
return ..()
/atom/movable/screen/storage/volumetric_box/Destroy()
diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index e9bc47f710e..1de3c792f15 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -47,7 +47,7 @@
return
if(interaction_flags_atom & INTERACT_ATOM_ATTACK_HAND)
. = _try_interact(user)
- INVOKE_ASYNC(src, .proc/on_attack_hand, user, act_intent, .)
+ INVOKE_ASYNC(src,PROC_REF(on_attack_hand), user, act_intent, .)
if(!(. & ATTACK_IGNORE_ACTION))
if(attack_hand_unwieldlyness)
user.DelayNextAction(attack_hand_unwieldlyness, considered_action = attack_hand_is_action)
diff --git a/code/controllers/admin.dm b/code/controllers/admin.dm
index 2e6b1f3a598..31a0811b59c 100644
--- a/code/controllers/admin.dm
+++ b/code/controllers/admin.dm
@@ -11,7 +11,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick)
name = text
src.target = target
if(istype(target, /datum)) //Harddel man bad
- RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/cleanup)
+ RegisterSignal(target, COMSIG_PARENT_QDELETING,PROC_REF(cleanup))
/obj/effect/statclick/Destroy()
target = null
diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm
index 259082a6ba9..8e7857e9e83 100644
--- a/code/controllers/configuration/config_entry.dm
+++ b/code/controllers/configuration/config_entry.dm
@@ -44,7 +44,7 @@
. &= !(protection & CONFIG_ENTRY_HIDDEN)
/datum/config_entry/vv_edit_var(var_name, var_value)
- var/static/list/banned_edits = list(NAMEOF(src, name), NAMEOF(src, vv_VAS), NAMEOF(src, default), NAMEOF(src, resident_file), NAMEOF(src, protection), NAMEOF(src, abstract_type), NAMEOF(src, modified), NAMEOF(src, dupes_allowed))
+ var/static/list/banned_edits = list(NAMEOF_STATIC(src, name), NAMEOF_STATIC(src, vv_VAS), NAMEOF_STATIC(src, default), NAMEOF_STATIC(src, resident_file), NAMEOF_STATIC(src, protection), NAMEOF_STATIC(src, abstract_type), NAMEOF_STATIC(src, modified), NAMEOF_STATIC(src, dupes_allowed))
if(var_name == NAMEOF(src, config_entry_value))
if(protection & CONFIG_ENTRY_LOCKED)
return FALSE
@@ -110,7 +110,7 @@
return FALSE
/datum/config_entry/number/vv_edit_var(var_name, var_value)
- var/static/list/banned_edits = list(NAMEOF(src, max_val), NAMEOF(src, min_val), NAMEOF(src, integer))
+ var/static/list/banned_edits = list(NAMEOF_STATIC(src, max_val), NAMEOF_STATIC(src, min_val), NAMEOF_STATIC(src, integer))
return !(var_name in banned_edits) && ..()
/datum/config_entry/flag
diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm
index 2a6e80275f0..256dd871672 100644
--- a/code/controllers/configuration/configuration.dm
+++ b/code/controllers/configuration/configuration.dm
@@ -460,4 +460,4 @@ Example config:
//Message admins when you can.
/datum/controller/configuration/proc/DelayedMessageAdmins(text)
- addtimer(CALLBACK(GLOBAL_PROC, /proc/message_admins, text), 0)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(message_admins), text), 0)
diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm
index 73b50b17729..f080c0c3b1f 100644
--- a/code/controllers/failsafe.dm
+++ b/code/controllers/failsafe.dm
@@ -147,7 +147,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe)
/proc/recover_all_SS_and_recreate_master()
del(Master)
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)
new I
. = Recreate_MC()
diff --git a/code/controllers/master.dm b/code/controllers/master.dm
index b17fc109cc0..ede5a8724f6 100644
--- a/code/controllers/master.dm
+++ b/code/controllers/master.dm
@@ -97,7 +97,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
//Code used for first master on game boot or if existing master got deleted
Master = src
var/list/subsytem_types = subtypesof(/datum/controller/subsystem)
- sortTim(subsytem_types, /proc/cmp_subsystem_init)
+ sortTim(subsytem_types, GLOBAL_PROC_REF(cmp_subsystem_init))
//Find any abandoned subsystem from the previous master (if there was any)
var/list/existing_subsystems = list()
for(var/global_var in global.vars)
@@ -121,7 +121,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...")
@@ -205,7 +205,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
to_chat(world, span_boldannounce("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.
@@ -228,7 +228,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
SetRunLevel(1)
// 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.
world.fps = CONFIG_GET(number/fps)
var/initialized_tod = REALTIMEOFDAY
@@ -313,9 +313,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(I, GLOBAL_PROC_REF(cmp_subsystem_priority))
I += tickersubsystems
var/cached_runlevel = current_runlevel
diff --git a/code/controllers/subsystem/artifacts.dm b/code/controllers/subsystem/artifacts.dm
index d74bd413c53..e00cc491bf5 100644
--- a/code/controllers/subsystem/artifacts.dm
+++ b/code/controllers/subsystem/artifacts.dm
@@ -500,7 +500,7 @@ PROCESSING_SUBSYSTEM_DEF(artifacts)
/datum/controller/subsystem/processing/artifacts/fire(resumed = 0)
if(prob(spawn_chance))
- INVOKE_ASYNC(src, .proc/spawn_random_artifact)
+ INVOKE_ASYNC(src,PROC_REF(spawn_random_artifact))
if (!resumed)
currentrun = processing.Copy()
//cache for sanic speed (lists are references anyways)
@@ -745,7 +745,7 @@ PROCESSING_SUBSYSTEM_DEF(artifacts)
rare_artifacts |= WEAKREF(thing)
/datum/controller/subsystem/processing/artifacts/proc/sig_reg(obj/item/thing)
- RegisterSignal(thing, COMSIG_PARENT_PREQDELETED, .proc/artifact_deleted, TRUE)
+ RegisterSignal(thing, COMSIG_PARENT_PREQDELETED,PROC_REF(artifact_deleted), TRUE)
/datum/controller/subsystem/processing/artifacts/proc/artifact_deleted(obj/item/thing)
if(!isitem(thing))
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index 3b0695fc035..cb34e923c48 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -630,7 +630,7 @@ SUBSYSTEM_DEF(job)
var/oldjobs = SSjob.occupations
sleep(20)
for (var/datum/job/J in oldjobs)
- INVOKE_ASYNC(src, .proc/RecoverJob, J)
+ INVOKE_ASYNC(src,PROC_REF(RecoverJob), J)
/datum/controller/subsystem/job/proc/RecoverJob(datum/job/J)
var/datum/job/newjob = GetJob(J.title)
diff --git a/code/controllers/subsystem/listbank.dm b/code/controllers/subsystem/listbank.dm
index de474bd29f4..ecd70128500 100644
--- a/code/controllers/subsystem/listbank.dm
+++ b/code/controllers/subsystem/listbank.dm
@@ -342,7 +342,7 @@ SUBSYSTEM_DEF(listbank)
for(var/entry in aaa_debug_list_tally)
var/datum/list_tally/LT = LAZYACCESS(aaa_debug_list_tally, entry)
rawtallies += LT
- rawtallies = sortTim(rawtallies.Copy(), /proc/cmp_list_tally_dec)
+ rawtallies = sortTim(rawtallies.Copy(), GLOBAL_PROC_REF(cmp_list_tally_dec))
var/list/tallies = list()
for(var/i in 1 to num2get)
var/datum/list_tally/LT = LAZYACCESS(rawtallies, i)
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index bde22e12d0f..3dbd99880c2 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -165,7 +165,7 @@ SUBSYSTEM_DEF(mapping)
message_admins("Shuttles in transit detected. Attempting to fast travel. Timeout is [wipe_safety_delay/10] seconds.")
var/list/cleared = list()
for(var/i in in_transit)
- INVOKE_ASYNC(src, .proc/safety_clear_transit_dock, i, in_transit[i], cleared)
+ INVOKE_ASYNC(src,PROC_REF(safety_clear_transit_dock), i, in_transit[i], cleared)
UNTIL((go_ahead < world.time) || (cleared.len == in_transit.len))
do_wipe_turf_reservations()
clearing_reserved_turfs = FALSE
@@ -420,7 +420,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
banned += generateMapList("[global.config.directory]/iceruinblacklist.txt")
banned += generateMapList("[global.config.directory]/stationruinblacklist.txt")
- for(var/item in sortList(subtypesof(/datum/map_template/ruin), /proc/cmp_ruincost_priority))
+ for(var/item in sortList(subtypesof(/datum/map_template/ruin), GLOBAL_PROC_REF(cmp_ruincost_priority)))
var/datum/map_template/ruin/ruin_type = item
// screen out the abstract subtypes
if(!initial(ruin_type.id))
diff --git a/code/controllers/subsystem/matchmaking.dm b/code/controllers/subsystem/matchmaking.dm
index 1e98202224e..139c79dc7ad 100644
--- a/code/controllers/subsystem/matchmaking.dm
+++ b/code/controllers/subsystem/matchmaking.dm
@@ -20,8 +20,8 @@ SUBSYSTEM_DEF(matchmaking)
/datum/controller/subsystem/matchmaking/proc/add_candidate_aspiration(mob/living/candidate, datum/matchmaking_pref/aspiration)
if(!bachelors[candidate])
- RegisterSignal(candidate, COMSIG_PARENT_QDELETING, .proc/on_candidate_qdel)
- RegisterSignal(candidate, COMSIG_MOB_CLIENT_LOGOUT, .proc/on_candidate_logout)
+ RegisterSignal(candidate, COMSIG_PARENT_QDELETING,PROC_REF(on_candidate_qdel))
+ RegisterSignal(candidate, COMSIG_MOB_CLIENT_LOGOUT,PROC_REF(on_candidate_logout))
LAZYADD(bachelors[candidate], aspiration)
@@ -89,7 +89,7 @@ SUBSYSTEM_DEF(matchmaking)
CRASH("Matchmaking pref created without a holder.")
if(matches_aimed <= 0)
CRASH("Matchmaking pref created with invalid matches_aimed value: [matches_aimed]")
- RegisterSignal(pref_holder, COMSIG_PARENT_QDELETING, .proc/on_candidate_qdel)
+ RegisterSignal(pref_holder, COMSIG_PARENT_QDELETING,PROC_REF(on_candidate_qdel))
src.pref_holder = pref_holder
src.matches_aimed = clamp(matches_aimed, 0, max_matches)
SSmatchmaking.add_candidate_aspiration(pref_holder, src)
@@ -161,7 +161,7 @@ SUBSYSTEM_DEF(matchmaking)
/datum/matchmaking_pref/proc/enact_match(mob/living/target)
matches_found++
if(spawn_time > 0)
- addtimer(CALLBACK(src, .proc/do_enact_match, WEAKREF(target)), spawn_time)
+ addtimer(CALLBACK(src,PROC_REF(do_enact_match), WEAKREF(target)), spawn_time)
else
do_enact_match(target)
if(matches_found >= matches_aimed)
diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm
index e6b4fd30a83..42472558316 100644
--- a/code/controllers/subsystem/materials.dm
+++ b/code/controllers/subsystem/materials.dm
@@ -47,7 +47,7 @@ SUBSYSTEM_DEF(materials)
var/datum/material/mat = x
var/path_name = ispath(mat) ? "[mat]" : "[mat.type]"
combo_params += "[path_name]=[materials_declaration[mat] * multiplier]"
- sortTim(combo_params, /proc/cmp_text_asc) // We have to sort now in case the declaration was not in order
+ sortTim(combo_params, GLOBAL_PROC_REF(cmp_text_asc)) // We have to sort now in case the declaration was not in order
var/combo_index = combo_params.Join("-")
var/list/combo = material_combos[combo_index]
if(!combo)
diff --git a/code/controllers/subsystem/monster_wave.dm b/code/controllers/subsystem/monster_wave.dm
index 1ceccc477ac..405a170e2ce 100644
--- a/code/controllers/subsystem/monster_wave.dm
+++ b/code/controllers/subsystem/monster_wave.dm
@@ -24,7 +24,7 @@ SUBSYSTEM_DEF(monster_wave)
if(prob(chance_of_fire))
return // It fires, fuck you lmfaooo
successful_firing++
- addtimer(CALLBACK(src, .proc/spawn_monsterwave), 10 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(spawn_monsterwave)), 10 SECONDS)
for(var/M in GLOB.player_list)
to_chat(M, span_notice("You feel the ground tremor subtly beneath your feet. Something far off in the distance has emerged to the surface."))
diff --git a/code/controllers/subsystem/movement/movement_types.dm b/code/controllers/subsystem/movement/movement_types.dm
index 5f6b05ceb88..a2351a22775 100644
--- a/code/controllers/subsystem/movement/movement_types.dm
+++ b/code/controllers/subsystem/movement/movement_types.dm
@@ -31,7 +31,7 @@
src.controller = controller
src.extra_info = extra_info
if(extra_info)
- RegisterSignal(extra_info, COMSIG_PARENT_QDELETING, .proc/info_deleted)
+ RegisterSignal(extra_info, COMSIG_PARENT_QDELETING,PROC_REF(info_deleted))
src.moving = moving
src.priority = priority
src.flags = flags
@@ -240,7 +240,7 @@
target = chasing
if(!isturf(target))
- RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/handle_no_target) //Don't do this for turfs, because we don't care
+ RegisterSignal(target, COMSIG_PARENT_QDELETING,PROC_REF(handle_no_target)) //Don't do this for turfs, because we don't care
/datum/move_loop/has_target/compare_loops(datum/move_loop/loop_type, priority, flags, extra_info, delay, timeout, atom/chasing)
if(..() && chasing == target)
@@ -369,7 +369,7 @@
src.avoid = avoid
src.skip_first = skip_first
if(istype(id, /obj/item/card/id))
- RegisterSignal(id, COMSIG_PARENT_QDELETING, .proc/handle_no_id) //I prefer erroring to harddels. If this breaks anything consider making id info into a datum or something
+ RegisterSignal(id, COMSIG_PARENT_QDELETING,PROC_REF(handle_no_id)) //I prefer erroring to harddels. If this breaks anything consider making id info into a datum or something
/datum/move_loop/has_target/jps/compare_loops(datum/move_loop/loop_type, priority, flags, extra_info, delay, timeout, atom/chasing, repath_delay, max_path_length, minimum_distance, obj/item/card/id/id, simulated_only, turf/avoid, skip_first)
if(..() && repath_delay == src.repath_delay && max_path_length == src.max_path_length && minimum_distance == src.minimum_distance && id == src.id && simulated_only == src.simulated_only && avoid == src.avoid)
@@ -378,7 +378,7 @@
/datum/move_loop/has_target/jps/start_loop()
. = ..()
- INVOKE_ASYNC(src, .proc/recalculate_path)
+ INVOKE_ASYNC(src,PROC_REF(recalculate_path))
/datum/move_loop/has_target/jps/Destroy()
id = null //Kill me
@@ -399,7 +399,7 @@
/datum/move_loop/has_target/jps/move()
if(!length(movement_path))
- INVOKE_ASYNC(src, .proc/recalculate_path)
+ INVOKE_ASYNC(src,PROC_REF(recalculate_path))
if(!length(movement_path))
return FALSE
@@ -413,7 +413,7 @@
if(get_turf(moving) == next_step)
movement_path.Cut(1,2)
else
- INVOKE_ASYNC(src, .proc/recalculate_path)
+ INVOKE_ASYNC(src,PROC_REF(recalculate_path))
return FALSE
@@ -572,8 +572,8 @@
if(home)
if(ismovable(target))
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/update_slope) //If it can move, update your slope when it does
- RegisterSignal(moving, COMSIG_MOVABLE_MOVED, .proc/handle_move)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED,PROC_REF(update_slope)) //If it can move, update your slope when it does
+ RegisterSignal(moving, COMSIG_MOVABLE_MOVED,PROC_REF(handle_move))
update_slope()
/datum/move_loop/has_target/move_towards/compare_loops(datum/move_loop/loop_type, priority, flags, extra_info, delay, timeout, atom/chasing, home = FALSE)
diff --git a/code/controllers/subsystem/nightcycle.dm b/code/controllers/subsystem/nightcycle.dm
index 2d9d27c436f..e13f30a5ddc 100644
--- a/code/controllers/subsystem/nightcycle.dm
+++ b/code/controllers/subsystem/nightcycle.dm
@@ -146,7 +146,7 @@ SUBSYSTEM_DEF(nightcycle)
CRASH("Invalid new_time returned from STATION_TIME()")
current_time = new_time
- INVOKE_ASYNC(src, .proc/AnimateTransition)
+ INVOKE_ASYNC(src,PROC_REF(AnimateTransition))
CHECK_TICK
/datum/controller/subsystem/nightcycle/proc/AnimateTransition()
diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm
index d03ec2d141a..ff41d0bba2a 100644
--- a/code/controllers/subsystem/pai.dm
+++ b/code/controllers/subsystem/pai.dm
@@ -155,7 +155,7 @@ SUBSYSTEM_DEF(pai)
if(!G.can_reenter_round()) // this should use notify_ghosts() instead one day.
return FALSE
to_chat(G, span_ghostalert("[user] is requesting a pAI personality! Use the pAI button to submit yourself as one."))
- addtimer(CALLBACK(src, .proc/spam_again), spam_delay)
+ addtimer(CALLBACK(src,PROC_REF(spam_again)), spam_delay)
var/list/available = list()
for(var/datum/paiCandidate/c in SSpai.candidates)
available.Add(check_ready(c))
diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm
index ccbea793066..2ed77541c90 100644
--- a/code/controllers/subsystem/pathfinder.dm
+++ b/code/controllers/subsystem/pathfinder.dm
@@ -31,7 +31,7 @@ SUBSYSTEM_DEF(pathfinder)
while(flow[free])
CHECK_TICK
free = (free % lcount) + 1
- var/t = addtimer(CALLBACK(src, /datum/flowcache.proc/toolong, free), 150, TIMER_STOPPABLE)
+ var/t = addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/flowcache,toolong), free), 150, TIMER_STOPPABLE)
flow[free] = t
flow[t] = M
return free
diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm
index 12c4ca158a7..290e883f413 100644
--- a/code/controllers/subsystem/processing/quirks.dm
+++ b/code/controllers/subsystem/processing/quirks.dm
@@ -45,7 +45,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
/datum/controller/subsystem/processing/quirks/proc/SetupQuirks()
/// Will give us a list of all quirks, sorted by point value, then name
/// Will solve a lot of sorting issues later, i swear
- var/list/quirk_list = sortList(subtypesof(/datum/quirk), /proc/cmp_quirk_asc)
+ var/list/quirk_list = sortList(subtypesof(/datum/quirk), GLOBAL_PROC_REF(cmp_quirk_asc))
for(var/V in quirk_list)
var/datum/quirk/T = new V(src) // They'll be fiiiiiine
@@ -132,7 +132,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
/datum/controller/subsystem/processing/quirks/ui_close(mob/user)
. = ..()
SaveUserPreferences(user)
- //INVOKE_ASYNC(src, .proc/UpdateTheWretchedPrefMenu, user)
+ //INVOKE_ASYNC(src,PROC_REF(UpdateTheWretchedPrefMenu), user)
/datum/controller/subsystem/processing/quirks/ui_static_data(mob/user)
var/list/data = list()
@@ -204,7 +204,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
. = TRUE
if("ClearQuirks") // Nuke the quirks! (gotta nuke something)
. = TRUE
- INVOKE_ASYNC(src, .proc/ConfirmClear, user)
+ INVOKE_ASYNC(src,PROC_REF(ConfirmClear), user)
/// returns a list of ckey'd quirk names
/datum/controller/subsystem/processing/quirks/proc/QuirkList2TGUI(mob/user)
@@ -426,7 +426,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
to_prune[Q2] = Q2.value
num_good_quirks++
// Now, lets sort the list by value, descending
- to_prune = sortList(to_prune, /proc/cmp_quirk_asc) // only got the asc, so just flip it
+ to_prune = sortList(to_prune, GLOBAL_PROC_REF(cmp_quirk_asc)) // only got the asc, so just flip it
to_prune = reverseList(to_prune)
for(var/datum/quirk/Q3 in to_prune)
RemoveQuirkFromPrefs(P, Q3)
@@ -656,7 +656,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
failures += quirkname
continue
quirkthing += Q.type
- quirkthing = sortList(quirkthing, /proc/cmp_quirk_asc)
+ quirkthing = sortList(quirkthing, GLOBAL_PROC_REF(cmp_quirk_asc))
quirkthing = reverseList(quirkthing) // yeah i dont wanna make another cmp
/// remove all this current quirks
P.char_quirks = list()
diff --git a/code/controllers/subsystem/processing/weather.dm b/code/controllers/subsystem/processing/weather.dm
index c889a034338..d127523a5ff 100644
--- a/code/controllers/subsystem/processing/weather.dm
+++ b/code/controllers/subsystem/processing/weather.dm
@@ -38,7 +38,7 @@ PROCESSING_SUBSYSTEM_DEF(weather)
return FALSE
var/datum/weather/W = pickweight(weather_rolls)
var/randTime = rand(WEATHER_WAIT_MIN, WEATHER_WAIT_MAX)
- timerid = addtimer(CALLBACK(src, .proc/run_weather, W), randTime + initial(W.weather_duration_upper), TIMER_UNIQUE | TIMER_STOPPABLE) //Around 25-30 minutes between weathers
+ timerid = addtimer(CALLBACK(src,PROC_REF(run_weather), W), randTime + initial(W.weather_duration_upper), TIMER_UNIQUE | TIMER_STOPPABLE) //Around 25-30 minutes between weathers
next_hit_by_zlevel = world.time + randTime + initial(W.telegraph_duration)
weather_queued = TRUE // weather'll set this to FALSE when it ends
diff --git a/code/controllers/subsystem/progress_bars.dm b/code/controllers/subsystem/progress_bars.dm
index 0422c2f567d..cccacd6bfec 100644
--- a/code/controllers/subsystem/progress_bars.dm
+++ b/code/controllers/subsystem/progress_bars.dm
@@ -24,19 +24,19 @@ PROCESSING_SUBSYSTEM_DEF(progress_bars)
var/datum/progressbar/bar = new(owner, can_see, duration, automatic, auto_remove)
register_bar(owner, bar)
. = bar.bar_id
- INVOKE_ASYNC(bar, /datum/progressbar.proc/start)
+ INVOKE_ASYNC(bar, TYPE_PROC_REF(/datum/progressbar,start))
/datum/controller/subsystem/processing/progress_bars/proc/remove_bar(bar_id)
var/datum/progressbar/bar = LAZYACCESS(progbars, bar_id)
if(!istype(bar))
return
- INVOKE_ASYNC(bar, /datum/progressbar.proc/stop)
+ INVOKE_ASYNC(bar, TYPE_PROC_REF(/datum/progressbar,stop))
/datum/controller/subsystem/processing/progress_bars/proc/update_bar(bar_id, number)
var/datum/progressbar/bar = LAZYACCESS(progbars, bar_id)
if(!istype(bar))
return FALSE
- INVOKE_ASYNC(bar, /datum/progressbar.proc/update, number)
+ INVOKE_ASYNC(bar, TYPE_PROC_REF(/datum/progressbar,update), number)
return number
/datum/controller/subsystem/processing/progress_bars/proc/check_bar(bar_id)
@@ -92,7 +92,7 @@ PROCESSING_SUBSYSTEM_DEF(progress_bars)
return
for(var/datum/weakref/weakbar in ckey_proglist[the_ckey])
var/datum/progressbar/bar = RESOLVEWEAKREF(weakbar)
- INVOKE_ASYNC(bar, /datum/progressbar.proc/show_bar)
+ INVOKE_ASYNC(bar, TYPE_PROC_REF(/datum/progressbar,show_bar))
return TRUE
/// When a client who is supposed to see this connects, we need to show it to their client
@@ -120,7 +120,7 @@ PROCESSING_SUBSYSTEM_DEF(progress_bars)
var/datum/progressbar/bar = LAZYACCESS(progbars, barid)
if(!bar)
continue
- INVOKE_ASYNC(bar, /datum/progressbar.proc/update_position, get_bar_index(owner, barid))
+ INVOKE_ASYNC(bar, TYPE_PROC_REF(/datum/progressbar,update_position), get_bar_index(owner, barid))
#define BAR_MASTER var/atom/master = display_loc?.resolve();if(!master ||(master && QDELETED(master))){master_deleted(); return}
#define PROGRESSBAR_HEIGHT 6
@@ -165,7 +165,7 @@ PROCESSING_SUBSYSTEM_DEF(progress_bars)
display_loc = WEAKREF(location)
generate_bar_id()
register_visibility(can_see)
- RegisterSignal(location, COMSIG_PARENT_QDELETING, .proc/master_deleted)
+ RegisterSignal(location, COMSIG_PARENT_QDELETING,PROC_REF(master_deleted))
/datum/progressbar/proc/register_visibility(list/can_see)
if(!LAZYLEN(can_see) || SSprogress_bars.debug_make_visible_to_everyone) // heh
@@ -267,7 +267,7 @@ PROCESSING_SUBSYSTEM_DEF(progress_bars)
// var/turf/right_here = get_turf(master)
// display_loc = WEAKREF(right_here)
// bar.loc = right_here
- INVOKE_ASYNC(src, .proc/stop)
+ INVOKE_ASYNC(src,PROC_REF(stop))
/// Generates a unique ID for the progress bar.
/// I mean the time of day is unique enough, but I like big dumb numbers
diff --git a/code/controllers/subsystem/radturf.dm b/code/controllers/subsystem/radturf.dm
index e628fcd736e..fdccdbc5f14 100644
--- a/code/controllers/subsystem/radturf.dm
+++ b/code/controllers/subsystem/radturf.dm
@@ -28,7 +28,7 @@ SUBSYSTEM_DEF(radturf)
/// the irradiated tile got changed and its component deleted, check back in a split second and apply a new one there
/datum/controller/subsystem/radturf/proc/tile_got_changed(turf_coords, list/puddles, new_rads)
- addtimer(CALLBACK(src, .proc/add_radtile, turf_coords, puddles, new_rads, 5), 2, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain //*doublepain
+ addtimer(CALLBACK(src,PROC_REF(add_radtile), turf_coords, puddles, new_rads, 5), 2, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain //*doublepain
/datum/controller/subsystem/radturf/proc/add_radtile(turf_coords, list/puddles, new_rads, tries = 5)
if(new_rads <= 0) // idk
@@ -37,7 +37,7 @@ SUBSYSTEM_DEF(radturf)
/// the new turf either doesnt exist, or is still being replaced, check back in another split second
if(!new_turf || QDELETED(new_turf))
if(tries)
- addtimer(CALLBACK(src, .proc/add_radtile, turf_coords, puddles, new_rads, tries - 1), 2, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain //*doublepain
+ addtimer(CALLBACK(src,PROC_REF(add_radtile), turf_coords, puddles, new_rads, tries - 1), 2, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain //*doublepain
return // okay fine, there's a hole to nothing right here, fucking, cool.
// the component itself will figure out of its puddles are still good or not at some point, not our concern
if(SEND_SIGNAL(new_turf, COMSIG_TURF_CHECK_RADIATION)) // okay check if there's still a component there first
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index 1e147b0f7b8..c2d1e037948 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -172,7 +172,7 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/proc/block_recall(lockout_timer)
emergencyNoRecall = TRUE
- addtimer(CALLBACK(src, .proc/unblock_recall), lockout_timer)
+ addtimer(CALLBACK(src,PROC_REF(unblock_recall)), lockout_timer)
/datum/controller/subsystem/shuttle/proc/unblock_recall()
emergencyNoRecall = FALSE
diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm
index a3176b42db1..8fde3b0a8e9 100644
--- a/code/controllers/subsystem/statpanel.dm
+++ b/code/controllers/subsystem/statpanel.dm
@@ -150,7 +150,7 @@ SUBSYSTEM_DEF(statpanels)
if(length(turfitems) < 30) // only create images for the first 30 items on the turf, for performance reasons
if(!(REF(turf_content) in cached_images))
cached_images += REF(turf_content)
- turf_content.RegisterSignal(turf_content, COMSIG_PARENT_QDELETING, /atom/.proc/remove_from_cache) // we reset cache if anything in it gets deleted
+ turf_content.RegisterSignal(turf_content, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/atom/movable, remove_from_cache)) // we reset cache if anything in it gets deleted
if(ismob(turf_content) || length(turf_content.overlays) > 2)
turfitems[++turfitems.len] = list("[turf_content.name]", REF(turf_content), costly_icon2html(turf_content, target, sourceonly=TRUE))
else
diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm
index 7f3770e4c87..108feecae60 100644
--- a/code/controllers/subsystem/throwing.dm
+++ b/code/controllers/subsystem/throwing.dm
@@ -92,7 +92,7 @@ SUBSYSTEM_DEF(throwing)
/datum/thrownthing/New(thrownthing, target, init_dir, maxrange, speed, thrower, diagonals_first, force, gentle, callback, target_zone)
. = ..()
src.thrownthing = thrownthing
- RegisterSignal(thrownthing, COMSIG_PARENT_QDELETING, .proc/on_thrownthing_qdel)
+ RegisterSignal(thrownthing, COMSIG_PARENT_QDELETING,PROC_REF(on_thrownthing_qdel))
src.target_turf = get_turf(target)
if(target_turf != target)
src.initial_target = WEAKREF(target)
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 5e27e53ac36..4a279ec5e4e 100755
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -202,7 +202,7 @@ SUBSYSTEM_DEF(ticker)
for(var/client/C in SSvote.voting)
C << browse(null, "window=vote;can_close=0")
SSvote.reset()
- addtimer(CALLBACK(src, .proc/send_midround_tip), 1 MINUTES)//Send out first tip
+ addtimer(CALLBACK(src, PROC_REF(send_midround_tip)), 1 MINUTES)//Send out first tip
current_state = GAME_STATE_SETTING_UP
Master.SetRunLevel(RUNLEVEL_SETUP)
if(start_immediately)
@@ -418,7 +418,7 @@ SUBSYSTEM_DEF(ticker)
livings += living
if(livings.len)
- addtimer(CALLBACK(src, .proc/release_characters, livings), 30, TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(src,PROC_REF(release_characters), livings), 30, TIMER_CLIENT_TIME)
SSmatchmaking.matchmake()
@@ -458,7 +458,7 @@ SUBSYSTEM_DEF(ticker)
to_chat(world, "Tip: [html_encode(m)]")
// Queue up the next tip even if it didn't send one so long as it was an organic tip that wasn't sent by an admin.
if(isnull(override))
- addtimer(CALLBACK(src, .proc/send_midround_tip), midround_tip_interval*(rand(5,15)*0.1))//Random tip interval of +- 50% the average
+ addtimer(CALLBACK(src,PROC_REF(send_midround_tip)), midround_tip_interval*(rand(5,15)*0.1))//Random tip interval of +- 50% the average
/datum/controller/subsystem/ticker/proc/check_queue()
var/hpc = CONFIG_GET(number/hard_popcap)
@@ -497,7 +497,7 @@ SUBSYSTEM_DEF(ticker)
if (!prob((world.time/600)*CONFIG_GET(number/maprotatechancedelta)) && CONFIG_GET(flag/tgstyle_maprotation))
return
if(CONFIG_GET(flag/tgstyle_maprotation))
- INVOKE_ASYNC(SSmapping, /datum/controller/subsystem/mapping/.proc/maprotate)
+ INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping/,maprotate))
else
var/vote_type = CONFIG_GET(string/map_vote_type)
switch(vote_type)
@@ -660,7 +660,7 @@ SUBSYSTEM_DEF(ticker)
for(var/mob/dead/new_player/player in GLOB.player_list)
if(player.ready == PLAYER_READY_TO_OBSERVE && player.mind)
//Break chain since this has a sleep input in it
- addtimer(CALLBACK(player, /mob/dead/new_player.proc/make_me_an_observer), 1)
+ addtimer(CALLBACK(player, TYPE_PROC_REF(/mob/dead/new_player,make_me_an_observer)), 1)
/datum/controller/subsystem/ticker/proc/load_mode()
var/mode = trim(file2text("data/mode.txt"))
diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm
index adc4b65091f..c5ea98f07cb 100644
--- a/code/controllers/subsystem/timer.dm
+++ b/code/controllers/subsystem/timer.dm
@@ -273,7 +273,7 @@ SUBSYSTEM_DEF(timer)
return
// Sort all timers by time to run
- sortTim(alltimers, .proc/cmp_timer)
+ sortTim(alltimers,PROC_REF(cmp_timer))
// Get the earliest timer, and if the TTR is earlier than the current world.time,
// then set the head offset appropriately to be the earliest time tracked by the
diff --git a/code/controllers/subsystem/validball_spawner.dm b/code/controllers/subsystem/validball_spawner.dm
index 66fb5a9d1f8..813c88be3dd 100644
--- a/code/controllers/subsystem/validball_spawner.dm
+++ b/code/controllers/subsystem/validball_spawner.dm
@@ -26,7 +26,7 @@ SUBSYSTEM_DEF(validball)
message_admins("Validball failed to spawn after [initial(tries_left)] tries! Validball is not go!")
return
message_admins("Validball couldn't spawn, trying again in 1 second. [tries_left] tries left!")
- addtimer(CALLBACK(src, .proc/spawn_validballs), 1 SECONDS) // try again later
+ addtimer(CALLBACK(src,PROC_REF(spawn_validballs)), 1 SECONDS) // try again later
return
if(num_to_spawn > LAZYLEN(valid_ball_spawners))
message_admins("Uh oh, config wants more validballs than there are available spawners! Validball is still go, but every validball spawner will spawn a validball. Have fun!")
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 21a2d8f0205..8cec2583381 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -29,7 +29,7 @@
/datum/action/proc/link_to(Target)
target = Target
- RegisterSignal(Target, COMSIG_ATOM_UPDATED_ICON, .proc/OnUpdatedIcon)
+ RegisterSignal(Target, COMSIG_ATOM_UPDATED_ICON,PROC_REF(OnUpdatedIcon))
/datum/action/Destroy()
if(owner)
diff --git a/code/datums/beam.dm b/code/datums/beam.dm
index 6a9878e086d..3b3bbd33849 100644
--- a/code/datums/beam.dm
+++ b/code/datums/beam.dm
@@ -30,7 +30,7 @@
icon_state = beam_icon_state
beam_type = btype
if(time < INFINITY)
- addtimer(CALLBACK(src,.proc/End), time)
+ addtimer(CALLBACK(src,PROC_REF(End)), time)
/datum/beam/proc/Start()
Draw()
@@ -66,13 +66,13 @@
if(timing_id)
deltimer(timing_id)
if(!finished)
- timing_id = addtimer(CALLBACK(src, .proc/recalculate), time, TIMER_STOPPABLE)
+ timing_id = addtimer(CALLBACK(src,PROC_REF(recalculate)), time, TIMER_STOPPABLE)
/datum/beam/proc/after_calculate()
if((sleep_time == null) || finished) //Does not automatically recalculate.
return
if(isnull(timing_id))
- timing_id = addtimer(CALLBACK(src, .proc/recalculate), sleep_time, TIMER_STOPPABLE)
+ timing_id = addtimer(CALLBACK(src,PROC_REF(recalculate)), sleep_time, TIMER_STOPPABLE)
/datum/beam/proc/End(destroy_self = TRUE)
finished = TRUE
@@ -167,5 +167,5 @@
/atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time = 3)
var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type,beam_sleep_time)
- INVOKE_ASYNC(newbeam, /datum/beam/.proc/Start)
+ INVOKE_ASYNC(newbeam, TYPE_PROC_REF(/datum/beam/,Start))
return newbeam
diff --git a/code/datums/brain_damage/brain_trauma.dm b/code/datums/brain_damage/brain_trauma.dm
index 5a4703f99f4..866b79f3df4 100644
--- a/code/datums/brain_damage/brain_trauma.dm
+++ b/code/datums/brain_damage/brain_trauma.dm
@@ -40,8 +40,8 @@
//Called when given to a mob
/datum/brain_trauma/proc/on_gain()
to_chat(owner, gain_text)
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
- RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
+ RegisterSignal(owner, COMSIG_MOB_SAY,PROC_REF(handle_speech))
+ RegisterSignal(owner, COMSIG_MOVABLE_HEAR,PROC_REF(handle_hearing))
//Called when removed from a mob
/datum/brain_trauma/proc/on_lose(silent)
diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm
index b465eefaef7..07ac95e2fa0 100644
--- a/code/datums/brain_damage/imaginary_friend.dm
+++ b/code/datums/brain_damage/imaginary_friend.dm
@@ -24,7 +24,7 @@
qdel(src)
return
if(!friend.client && friend_initialized)
- addtimer(CALLBACK(src, .proc/reroll_friend), 600)
+ addtimer(CALLBACK(src,PROC_REF(reroll_friend)), 600)
/datum/brain_trauma/special/imaginary_friend/on_death()
..()
@@ -93,7 +93,7 @@
trauma = _trauma
owner = trauma.owner
- INVOKE_ASYNC(src, .proc/setup_friend)
+ INVOKE_ASYNC(src,PROC_REF(setup_friend))
join = new
join.Grant(src)
@@ -172,7 +172,7 @@
if(owner.client)
var/mutable_appearance/MA = mutable_appearance('icons/mob/talk.dmi', src, "default[say_test(message)]", FLY_LAYER)
MA.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
- INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, MA, list(owner.client), 30)
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), MA, list(owner.client), 30)
for(var/mob/M in GLOB.dead_mob_list)
var/link = FOLLOW_LINK(M, owner)
diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm
index 42d756fc675..c0b20296b69 100644
--- a/code/datums/brain_damage/mild.dm
+++ b/code/datums/brain_damage/mild.dm
@@ -160,8 +160,8 @@
to_chat(owner, "[pick("You have a coughing fit!", "You can't stop coughing!")]")
owner.Stun(20)
owner.emote("cough")
- addtimer(CALLBACK(owner, /mob/.proc/emote, "cough"), 6)
- addtimer(CALLBACK(owner, /mob/.proc/emote, "cough"), 12)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/,emote), "cough"), 6)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/,emote), "cough"), 12)
owner.emote("cough")
..()
diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm
index 343c2f8760d..42cb8f8e0e7 100644
--- a/code/datums/brain_damage/phobia.dm
+++ b/code/datums/brain_damage/phobia.dm
@@ -98,7 +98,7 @@
var/regex/reg = regex("(\\b|\\A)[REGEX_QUOTE(word)]'?s*(\\b|\\Z)", "i")
if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg))
- addtimer(CALLBACK(src, .proc/freak_out, null, word), 10) //to react AFTER the chat message
+ addtimer(CALLBACK(src,PROC_REF(freak_out), null, word), 10) //to react AFTER the chat message
//hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], span_phobia("$1"))
break
@@ -126,7 +126,7 @@
owner.stuttering += 5
ADD_TRAIT(owner, TRAIT_PHOBIC, TRAIT_GENERIC) // Generic phobia trait for applying general non-mood debuffs to people
if(!timer_active)
- addtimer(CALLBACK(src, .proc/RemoveTrait), 3 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(RemoveTrait)), 3 MINUTES)
timer_active = 1
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "phobia", /datum/mood_event/phobia) //Always apply the phobia mood debuff
diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm
index 4af4024b0b9..3689da0ab78 100644
--- a/code/datums/brain_damage/severe.dm
+++ b/code/datums/brain_damage/severe.dm
@@ -206,7 +206,7 @@
to_chat(owner, span_warning("You feel sick..."))
else
to_chat(owner, span_warning("You feel really sick at the thought of being alone!"))
- addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living/carbon,vomit), high_stress), 50) //blood vomit if high stress
if(2)
if(!high_stress)
to_chat(owner, span_warning("You can't stop shaking..."))
@@ -307,7 +307,7 @@
var/regex/reg = new("(\\b[REGEX_QUOTE(trigger_phrase)]\\b)","ig")
if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg))
- addtimer(CALLBACK(src, .proc/hypnotrigger), 10) //to react AFTER the chat message
+ addtimer(CALLBACK(src,PROC_REF(hypnotrigger)), 10) //to react AFTER the chat message
hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], span_hypnophrase("*********"))
/datum/brain_trauma/severe/hypnotic_trigger/proc/hypnotrigger()
diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm
index 04d09c3988d..9221bf22ddd 100644
--- a/code/datums/brain_damage/special.dm
+++ b/code/datums/brain_damage/special.dm
@@ -67,7 +67,7 @@
/datum/brain_trauma/special/death_whispers/proc/whispering()
ADD_TRAIT(owner, TRAIT_SIXTHSENSE, TRAUMA_TRAIT)
active = TRUE
- addtimer(CALLBACK(src, .proc/cease_whispering), rand(50, 300))
+ addtimer(CALLBACK(src,PROC_REF(cease_whispering)), rand(50, 300))
/datum/brain_trauma/special/death_whispers/proc/cease_whispering()
REMOVE_TRAIT(owner, TRAIT_SIXTHSENSE, TRAUMA_TRAIT)
@@ -111,7 +111,7 @@
var/atom/movable/AM = thing
SEND_SIGNAL(AM, COMSIG_MOVABLE_SECLUDED_LOCATION)
next_crisis = world.time + 600
- addtimer(CALLBACK(src, .proc/fade_in), duration)
+ addtimer(CALLBACK(src,PROC_REF(fade_in)), duration)
/datum/brain_trauma/special/existential_crisis/proc/fade_in()
QDEL_NULL(veil)
diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index acf4dd01a11..da2f64f5c42 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -18,7 +18,7 @@
/datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/nref = null)
user = nuser
- RegisterSignal(user, COMSIG_PARENT_QDELETING, .proc/user_deleted)
+ RegisterSignal(user, COMSIG_PARENT_QDELETING,PROC_REF(user_deleted))
window_id = nwindow_id
if (ntitle)
title = format_text(ntitle)
@@ -230,7 +230,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/callback.dm b/code/datums/callback.dm
index 3d2ae04e161..1f2396d4894 100644
--- a/code/datums/callback.dm
+++ b/code/datums/callback.dm
@@ -39,7 +39,7 @@
* ### when the above doesn't apply:
*.proc/procname
*
- * `CALLBACK(src, .proc/some_proc_here)`
+ * `CALLBACK(src,PROC_REF(some_proc_here))`
*
*
* proc defined on a parent of a some type
diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm
index 3b6722d2380..b9f2b4b78da 100644
--- a/code/datums/chatmessage.dm
+++ b/code/datums/chatmessage.dm
@@ -42,7 +42,7 @@
stack_trace("/datum/chatmessage created with [isnull(owner) ? "null" : "invalid"] mob owner")
qdel(src)
return
- INVOKE_ASYNC(src, .proc/generate_image, text, target, owner, extra_classes, lifespan)
+ INVOKE_ASYNC(src,PROC_REF(generate_image), text, target, owner, extra_classes, lifespan)
/datum/chatmessage/Destroy()
if (owned_by)
@@ -73,7 +73,7 @@
/datum/chatmessage/proc/generate_image(text, atom/target, mob/owner, list/extra_classes, lifespan)
// Register client who owns this message
owned_by = owner.client
- RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, .proc/on_parent_qdel)
+ RegisterSignal(owned_by, COMSIG_PARENT_QDELETING,PROC_REF(on_parent_qdel))
// Clip message
var/maxlen = owned_by.prefs.max_chat_length
@@ -152,7 +152,7 @@
if (sched_remaining > CHAT_MESSAGE_SPAWN_TIME)
var/remaining_time = (sched_remaining) * (CHAT_MESSAGE_EXP_DECAY ** idx++) * (CHAT_MESSAGE_HEIGHT_DECAY ** combined_height)
m.scheduled_destruction = world.time + remaining_time
- addtimer(CALLBACK(m, .proc/end_of_life), remaining_time, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(m,PROC_REF(end_of_life)), remaining_time, TIMER_UNIQUE|TIMER_OVERRIDE)
// Build message image
message = image(loc = message_loc, layer = CHAT_LAYER)
@@ -173,7 +173,7 @@
// Prepare for destruction
scheduled_destruction = world.time + (lifespan - CHAT_MESSAGE_EOL_FADE)
- addtimer(CALLBACK(src, .proc/end_of_life), lifespan - CHAT_MESSAGE_EOL_FADE, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(end_of_life)), lifespan - CHAT_MESSAGE_EOL_FADE, TIMER_UNIQUE|TIMER_OVERRIDE)
/**
* Applies final animations to overlay CHAT_MESSAGE_EOL_FADE deciseconds prior to message deletion
diff --git a/code/datums/cinematic.dm b/code/datums/cinematic.dm
index fc3f13e94eb..cf489ed0a59 100644
--- a/code/datums/cinematic.dm
+++ b/code/datums/cinematic.dm
@@ -66,7 +66,7 @@
//We are now playing this cinematic
//Handle what happens when a different cinematic tries to play over us
- RegisterSignal(SSdcs, COMSIG_GLOB_PLAY_CINEMATIC, .proc/replacement_cinematic)
+ RegisterSignal(SSdcs, COMSIG_GLOB_PLAY_CINEMATIC,PROC_REF(replacement_cinematic))
//Pause OOC
var/ooc_toggled = FALSE
@@ -78,7 +78,7 @@
for(var/MM in watchers)
var/mob/M = MM
show_to(M, M.client)
- RegisterSignal(M, COMSIG_MOB_CLIENT_LOGIN, .proc/show_to)
+ RegisterSignal(M, COMSIG_MOB_CLIENT_LOGIN,PROC_REF(show_to))
//Close watcher ui's
SStgui.close_user_uis(M)
diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm
index f132dfc4576..a21488376f8 100644
--- a/code/datums/components/anti_magic.dm
+++ b/code/datums/components/anti_magic.dm
@@ -10,10 +10,10 @@
/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE, _psychic = FALSE, _allowed_slots, _charges, _blocks_self = TRUE, datum/callback/_reaction, datum/callback/_expire)
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
else if(ismob(parent))
- RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect)
+ RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC,PROC_REF(protect))
else
return COMPONENT_INCOMPATIBLE
@@ -32,7 +32,7 @@
if(!CHECK_BITFIELD(allowed_slots, slotdefine2slotbit(slot))) //Check that the slot is valid for antimagic
UnregisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC)
return
- RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE)
+ RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC,PROC_REF(protect), TRUE)
/datum/component/anti_magic/proc/on_drop(datum/source, mob/user)
UnregisterSignal(user, COMSIG_MOB_RECEIVE_MAGIC)
diff --git a/code/datums/components/archaeology.dm b/code/datums/components/archaeology.dm
index 46936d977f3..8df4f5d640b 100644
--- a/code/datums/components/archaeology.dm
+++ b/code/datums/components/archaeology.dm
@@ -15,9 +15,9 @@
archdrops[i][ARCH_PROB] = 100
stack_trace("ARCHAEOLOGY WARNING: [parent] contained a null probability value in [i].")
callback = _callback
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/Dig)
- RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/BombDig)
- RegisterSignal(parent, COMSIG_ATOM_SING_PULL, .proc/SingDig)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(Dig))
+ RegisterSignal(parent, COMSIG_ATOM_EX_ACT,PROC_REF(BombDig))
+ RegisterSignal(parent, COMSIG_ATOM_SING_PULL,PROC_REF(SingDig))
/datum/component/archaeology/InheritComponent(datum/component/archaeology/A, i_am_original)
var/list/other_archdrops = A.archdrops
diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm
index e3e4de32650..f583424ebcd 100644
--- a/code/datums/components/armor_plate.dm
+++ b/code/datums/components/armor_plate.dm
@@ -9,11 +9,11 @@
if(!isobj(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/applyplate)
- RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/dropplates)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(examine))
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(applyplate))
+ RegisterSignal(parent, COMSIG_PARENT_PREQDELETED,PROC_REF(dropplates))
if(istype(parent, /obj/mecha/working/ripley))
- RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_mech_overlays)
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS,PROC_REF(apply_mech_overlays))
if(_maxamount)
maxamount = _maxamount
diff --git a/code/datums/components/artifacts.dm b/code/datums/components/artifacts.dm
index bfc3a6a7b8b..3a5091f5113 100644
--- a/code/datums/components/artifacts.dm
+++ b/code/datums/components/artifacts.dm
@@ -44,25 +44,25 @@
/datum/component/artifact/Initialize(rarity = ART_RARITY_COMMON)
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_GET_EFFECTS, .proc/get_effects)
- RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_EXISTS, .proc/hi)
- RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_MAKE_UNIQUE, .proc/make_unique)
- RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_IDENTIFIED, .proc/is_identified)
- RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_ADD_EFFECT, .proc/add_effect)
- RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_READ_PARAMETERS, .proc/read_parameters)
- RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_FINALIZE, .proc/finalize)
- RegisterSignal(parent, COMSIG_ITEM_WELLABLE, .proc/tabulate_wellability)
- RegisterSignal(parent, COMSIG_ATOM_GET_VALUE, .proc/tabulate_value)
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/update_everything)
- // RegisterSignal(parent, COMSIG_ITEM_CLICKED, .proc/on_clicked)
- // RegisterSignal(parent, COMSIG_ITEM_MICROWAVE_ACT, .proc/on_microwave) //c:
- RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_name)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/get_description)
+ RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_GET_EFFECTS,PROC_REF(get_effects))
+ RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_EXISTS,PROC_REF(hi))
+ RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_MAKE_UNIQUE,PROC_REF(make_unique))
+ RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_IDENTIFIED,PROC_REF(is_identified))
+ RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_ADD_EFFECT,PROC_REF(add_effect))
+ RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_READ_PARAMETERS,PROC_REF(read_parameters))
+ RegisterSignal(parent, COMSIG_ITEM_ARTIFACT_FINALIZE,PROC_REF(finalize))
+ RegisterSignal(parent, COMSIG_ITEM_WELLABLE,PROC_REF(tabulate_wellability))
+ RegisterSignal(parent, COMSIG_ATOM_GET_VALUE,PROC_REF(tabulate_value))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(update_everything))
+ // RegisterSignal(parent, COMSIG_ITEM_CLICKED,PROC_REF(on_clicked))
+ // RegisterSignal(parent, COMSIG_ITEM_MICROWAVE_ACT,PROC_REF(on_microwave)) //c:
+ RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME,PROC_REF(get_name))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(get_description))
src.rarity = rarity
/// Runs the artifact's main loop. starts when touched by a mob, stops when it doesnt have anything to do
/datum/component/artifact/process()
- INVOKE_ASYNC(src, .proc/mainloop)
+ INVOKE_ASYNC(src,PROC_REF(mainloop))
/datum/component/artifact/proc/mainloop(force_flags)
ART_MASTER
@@ -181,8 +181,8 @@
/datum/component/artifact/proc/register_mob_signals(mob/living/newbie)
return // todo: this
- //RegisterSignal(newbie, COMSIG_MOB_APPLY_DAMAGE, .proc/on_mob_damage)
- //RegisterSignal(newbie, COMSIG_CARBON_GET_BLEED_MOD, .proc/on_bleed)
+ //RegisterSignal(newbie, COMSIG_MOB_APPLY_DAMAGE,PROC_REF(on_mob_damage))
+ //RegisterSignal(newbie, COMSIG_CARBON_GET_BLEED_MOD,PROC_REF(on_bleed))
/datum/component/artifact/proc/unregister_mob_signals(mob/living/current)
return // todo: this
@@ -394,7 +394,7 @@
ART_MASTER
update_color()
//update_scanner_name()
- INVOKE_ASYNC(src, .proc/floatycool)
+ INVOKE_ASYNC(src,PROC_REF(floatycool))
/datum/component/artifact/proc/floatycool()
fade_in()
@@ -544,7 +544,7 @@
my_parent = WEAKREF(parent)
apply_parameters(parameters)
generate_trait()
- RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/on_effect_deleted, TRUE)
+ RegisterSignal(parent, COMSIG_PARENT_PREQDELETED,PROC_REF(on_effect_deleted), TRUE)
/datum/artifact_effect/Del()
cleanup(TRUE)
diff --git a/code/datums/components/bane.dm b/code/datums/components/bane.dm
index bdfcfed5175..efb147b9541 100644
--- a/code/datums/components/bane.dm
+++ b/code/datums/components/bane.dm
@@ -21,9 +21,9 @@
/datum/component/bane/RegisterWithParent()
. = ..()
if(speciestype)
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/speciesCheck)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK,PROC_REF(speciesCheck))
else
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/mobCheck)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK,PROC_REF(mobCheck))
/datum/component/bane/UnregisterFromParent()
. = ..()
diff --git a/code/datums/components/bouncy.dm b/code/datums/components/bouncy.dm
index fed603410ea..d1ba146397e 100644
--- a/code/datums/components/bouncy.dm
+++ b/code/datums/components/bouncy.dm
@@ -18,11 +18,11 @@
var/list/diff_bounces = difflist(bounce_signals, _bounce_signals, TRUE)
for(var/bounce in diff_bounces)
bounce_signals += bounce
- RegisterSignal(parent, bounce, .proc/bounce_up)
+ RegisterSignal(parent, bounce,PROC_REF(bounce_up))
/datum/component/bouncy/RegisterWithParent()
. = ..()
- RegisterSignal(parent, bounce_signals, .proc/bounce_up)
+ RegisterSignal(parent, bounce_signals,PROC_REF(bounce_up))
/datum/component/bouncy/UnregisterFromParent()
. = ..()
diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm
index 1ddf047c0d3..540e8816875 100644
--- a/code/datums/components/butchering.dm
+++ b/code/datums/components/butchering.dm
@@ -20,14 +20,14 @@
if(_can_be_blunt)
can_be_blunt = _can_be_blunt
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/onItemAttack)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK,PROC_REF(onItemAttack))
/datum/component/butchering/proc/onItemAttack(obj/item/source, mob/living/M, mob/living/user)
if(user.a_intent != INTENT_HARM)
return
if(M.stat == DEAD && (M.butcher_results || M.guaranteed_butcher_results)) //can we butcher it?
if(butchering_enabled && (can_be_blunt || source.get_sharpness()))
- INVOKE_ASYNC(src, .proc/startButcher, source, M, user)
+ INVOKE_ASYNC(src,PROC_REF(startButcher), source, M, user)
return COMPONENT_ITEM_NO_ATTACK
if(ishuman(M) && source.force && source.get_sharpness())
@@ -37,7 +37,7 @@
user.show_message(span_warning("[H]'s neck has already been already cut, you can't make the bleeding any worse!"), 1, \
span_warning("Their neck has already been already cut, you can't make the bleeding any worse!"))
return COMPONENT_ITEM_NO_ATTACK
- INVOKE_ASYNC(src, .proc/startNeckSlice, source, H, user)
+ INVOKE_ASYNC(src,PROC_REF(startNeckSlice), source, H, user)
return COMPONENT_ITEM_NO_ATTACK
/datum/component/butchering/proc/startButcher(obj/item/source, mob/living/M, mob/living/user)
@@ -132,7 +132,7 @@
. = ..()
if(. == COMPONENT_INCOMPATIBLE)
return
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/onCrossed)
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED,PROC_REF(onCrossed))
/datum/component/butchering/recycler/proc/onCrossed(datum/source, mob/living/L)
if(!istype(L))
diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm
index b89154de4ac..900334691d5 100644
--- a/code/datums/components/caltrop.dm
+++ b/code/datums/components/caltrop.dm
@@ -21,7 +21,7 @@
///given to connect_loc to listen for something moving over target
var/static/list/crossed_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
///So we can update ant damage
@@ -41,7 +41,7 @@
if(ismovable(parent))
AddComponent(/datum/component/connect_loc_behalf, parent, crossed_connections)
else
- RegisterSignal(get_turf(parent), COMSIG_ATOM_ENTERED, .proc/on_entered)
+ RegisterSignal(get_turf(parent), COMSIG_ATOM_ENTERED,PROC_REF(on_entered))
// Inherit the new values passed to the component
/datum/component/caltrop/InheritComponent(datum/component/caltrop/new_comp, original, min_damage, max_damage, probability, flags, soundfile)
@@ -108,7 +108,7 @@
span_userdanger("You step on [parent]!")
)
- INVOKE_ASYNC(H, /mob/living/carbon/human/.proc/apply_damage, damage, BRUTE, picked_def_zone, FALSE, FALSE, FALSE, CANT_WOUND)
+ INVOKE_ASYNC(H, TYPE_PROC_REF(/mob/living/carbon/human/,apply_damage), damage, BRUTE, picked_def_zone, FALSE, FALSE, FALSE, CANT_WOUND)
if(!(flags & CALTROP_NOSTUN)) // Won't set off the paralysis.
H.Paralyze(60)
diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm
index 87563582017..4fa480b4306 100644
--- a/code/datums/components/chasm.dm
+++ b/code/datums/components/chasm.dm
@@ -24,7 +24,7 @@
))
/datum/component/chasm/Initialize(turf/target)
- RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Entered)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED),PROC_REF(Entered))
target_turf = target
START_PROCESSING(SSobj, src) // process on create, in case stuff is still there
@@ -57,7 +57,7 @@
for (var/thing in to_check)
if (droppable(thing))
. = 1
- INVOKE_ASYNC(src, .proc/drop, thing)
+ INVOKE_ASYNC(src,PROC_REF(drop), thing)
/datum/component/chasm/proc/droppable(atom/movable/AM)
// avoid an infinite loop, but allow falling a large distance
diff --git a/code/datums/components/cleaning.dm b/code/datums/components/cleaning.dm
index 72213eb74d9..850700072b3 100644
--- a/code/datums/components/cleaning.dm
+++ b/code/datums/components/cleaning.dm
@@ -4,7 +4,7 @@
/datum/component/cleaning/Initialize()
if(!ismovableatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Clean)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED),PROC_REF(Clean))
/datum/component/cleaning/proc/Clean()
var/atom/movable/AM = parent
diff --git a/code/datums/components/combat_mode.dm b/code/datums/components/combat_mode.dm
index 185698123ee..22d54135105 100644
--- a/code/datums/components/combat_mode.dm
+++ b/code/datums/components/combat_mode.dm
@@ -16,14 +16,14 @@
src.hud_loc = hud_loc
- RegisterSignal(L, list(SIGNAL_ADDTRAIT(TRAIT_COMBAT_MODE_LOCKED), SIGNAL_REMOVETRAIT(TRAIT_COMBAT_MODE_LOCKED)), .proc/update_combat_lock)
- RegisterSignal(L, COMSIG_TOGGLE_COMBAT_MODE, .proc/user_toggle_intentional_combat_mode)
- RegisterSignal(L, COMSIG_DISABLE_COMBAT_MODE, .proc/safe_disable_combat_mode)
- RegisterSignal(L, COMSIG_ENABLE_COMBAT_MODE, .proc/safe_enable_combat_mode)
- RegisterSignal(L, COMSIG_MOB_DEATH, .proc/on_death)
- RegisterSignal(L, COMSIG_MOB_CLIENT_LOGOUT, .proc/on_logout)
- RegisterSignal(L, COMSIG_MOB_HUD_CREATED, .proc/on_mob_hud_created)
- RegisterSignal(L, COMSIG_COMBAT_MODE_CHECK, .proc/check_flags)
+ RegisterSignal(L, list(SIGNAL_ADDTRAIT(TRAIT_COMBAT_MODE_LOCKED), SIGNAL_REMOVETRAIT(TRAIT_COMBAT_MODE_LOCKED)),PROC_REF(update_combat_lock))
+ RegisterSignal(L, COMSIG_TOGGLE_COMBAT_MODE,PROC_REF(user_toggle_intentional_combat_mode))
+ RegisterSignal(L, COMSIG_DISABLE_COMBAT_MODE,PROC_REF(safe_disable_combat_mode))
+ RegisterSignal(L, COMSIG_ENABLE_COMBAT_MODE,PROC_REF(safe_enable_combat_mode))
+ RegisterSignal(L, COMSIG_MOB_DEATH,PROC_REF(on_death))
+ RegisterSignal(L, COMSIG_MOB_CLIENT_LOGOUT,PROC_REF(on_logout))
+ RegisterSignal(L, COMSIG_MOB_HUD_CREATED,PROC_REF(on_mob_hud_created))
+ RegisterSignal(L, COMSIG_COMBAT_MODE_CHECK,PROC_REF(check_flags))
update_combat_lock()
@@ -87,8 +87,8 @@
to_chat(source, self_message)
if(playsound)
source.playsound_local(source, 'sound/misc/ui_toggle_vats.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay!
- RegisterSignal(source, COMSIG_MOB_CLIENT_MOUSEMOVE, .proc/onMouseMove)
- RegisterSignal(source, COMSIG_MOVABLE_MOVED, .proc/on_move)
+ RegisterSignal(source, COMSIG_MOB_CLIENT_MOUSEMOVE,PROC_REF(onMouseMove))
+ RegisterSignal(source, COMSIG_MOVABLE_MOVED,PROC_REF(on_move))
if(hud_icon)
hud_icon.combat_on = TRUE
hud_icon.update_icon()
diff --git a/code/datums/components/connect_containers.dm b/code/datums/components/connect_containers.dm
index c386a096410..33a2fe5f1a0 100644
--- a/code/datums/components/connect_containers.dm
+++ b/code/datums/components/connect_containers.dm
@@ -37,8 +37,8 @@
tracked = new_tracked
if(!tracked)
return
- RegisterSignal(tracked, COMSIG_MOVABLE_MOVED, .proc/on_moved)
- RegisterSignal(tracked, COMSIG_PARENT_QDELETING, .proc/handle_tracked_qdel)
+ RegisterSignal(tracked, COMSIG_MOVABLE_MOVED,PROC_REF(on_moved))
+ RegisterSignal(tracked, COMSIG_PARENT_QDELETING,PROC_REF(handle_tracked_qdel))
update_signals(tracked)
/datum/component/connect_containers/proc/handle_tracked_qdel()
@@ -50,7 +50,7 @@
return
for(var/atom/movable/container as anything in get_nested_locs(listener))
- RegisterSignal(container, COMSIG_MOVABLE_MOVED, .proc/on_moved)
+ RegisterSignal(container, COMSIG_MOVABLE_MOVED,PROC_REF(on_moved))
for(var/signal in connections)
parent.RegisterSignal(container, signal, connections[signal])
diff --git a/code/datums/components/connect_loc_behalf.dm b/code/datums/components/connect_loc_behalf.dm
index b758b6ad5f3..2a4c731f989 100644
--- a/code/datums/components/connect_loc_behalf.dm
+++ b/code/datums/components/connect_loc_behalf.dm
@@ -20,8 +20,8 @@
src.tracked = tracked
/datum/component/connect_loc_behalf/RegisterWithParent()
- RegisterSignal(tracked, COMSIG_MOVABLE_MOVED, .proc/on_moved)
- RegisterSignal(tracked, COMSIG_PARENT_QDELETING, .proc/handle_tracked_qdel)
+ RegisterSignal(tracked, COMSIG_MOVABLE_MOVED,PROC_REF(on_moved))
+ RegisterSignal(tracked, COMSIG_PARENT_QDELETING,PROC_REF(handle_tracked_qdel))
update_signals()
/datum/component/connect_loc_behalf/UnregisterFromParent()
diff --git a/code/datums/components/construction.dm b/code/datums/components/construction.dm
index 01df44752c9..cd9d2846499 100644
--- a/code/datums/components/construction.dm
+++ b/code/datums/components/construction.dm
@@ -15,8 +15,8 @@
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/action)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(examine))
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(action))
update_parent(index)
/datum/component/construction/proc/examine(datum/source, mob/user, list/examine_list)
diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm
index de6e73fd160..e32b44249d2 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)
var/datum/hud/H = user.hud_used
@@ -8,7 +8,7 @@
C.icon = H.ui_style
H.static_inventory += 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
diff --git a/code/datums/components/crafting/recipes/recipes_tailoring.dm b/code/datums/components/crafting/recipes/recipes_tailoring.dm
index 83e2d1950eb..dcc45bbe78f 100644
--- a/code/datums/components/crafting/recipes/recipes_tailoring.dm
+++ b/code/datums/components/crafting/recipes/recipes_tailoring.dm
@@ -166,7 +166,7 @@
category = CAT_CLOTHING
subcategory = CAT_ARMOR
-datum/crafting_recipe/steelbib
+/datum/crafting_recipe/steelbib
name = "Steel Breastplate"
result = /obj/item/clothing/suit/armor/medium/vest/breastplate
reqs = list(/obj/item/stack/sheet/leather = 2,
@@ -178,7 +178,7 @@ datum/crafting_recipe/steelbib
category = CAT_CLOTHING
subcategory = CAT_ARMOR
-datum/crafting_recipe/steelbib/heavy
+/datum/crafting_recipe/steelbib/heavy
name = "Reinforced Steel Breastplate"
result = /obj/item/clothing/suit/armor/medium/vest/breastplate/reinforced
reqs = list(/obj/item/clothing/suit/armor/medium/vest/breastplate = 1,
@@ -190,7 +190,7 @@ datum/crafting_recipe/steelbib/heavy
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/combathazardsuit // sec biosuit
+/datum/crafting_recipe/combathazardsuit // sec biosuit
name = "Reinforced CBRN Suit"
result = /obj/item/clothing/suit/bio_suit/security
reqs = list(/obj/item/clothing/suit/radiation = 1,
@@ -202,7 +202,7 @@ datum/crafting_recipe/combathazardsuit // sec biosuit
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/combathazardhood // sec biohood
+/datum/crafting_recipe/combathazardhood // sec biohood
name = "Reinforced CBRN Hood"
result = /obj/item/clothing/head/bio_hood/security
reqs = list(/obj/item/clothing/head/helmet/armyhelmet = 1,
@@ -1486,7 +1486,7 @@ datum/crafting_recipe/combathazardhood // sec biohood
subcategory = CAT_GENCLOTHES
*/
-datum/crafting_recipe/polis
+/datum/crafting_recipe/polis
name = "Police Officer's Uniform"
result = /obj/item/clothing/under/f13/police/officer
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1497,7 +1497,7 @@ datum/crafting_recipe/polis
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/polislt
+/datum/crafting_recipe/polislt
name = "Police Lieutenant's Uniform"
result = /obj/item/clothing/under/f13/police/lieutenant
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1509,7 +1509,7 @@ datum/crafting_recipe/polislt
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/polischief
+/datum/crafting_recipe/polischief
name = "Police Chief's Uniform"
result = /obj/item/clothing/under/f13/police/chief
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1521,7 +1521,7 @@ datum/crafting_recipe/polischief
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/polissnr
+/datum/crafting_recipe/polissnr
name = "Police Search and Rescue Uniform"
result = /obj/item/clothing/under/f13/police/snr
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1532,7 +1532,7 @@ datum/crafting_recipe/polissnr
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/poliscoat
+/datum/crafting_recipe/poliscoat
name = "Police Officer's Jacket"
result = /obj/item/clothing/suit/armor/medium/vest/polis
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1544,7 +1544,7 @@ datum/crafting_recipe/poliscoat
always_available = FALSE
-datum/crafting_recipe/polisltcoat
+/datum/crafting_recipe/polisltcoat
name = "Police Lieutenant's Jacket"
result = /obj/item/clothing/suit/armor/medium/vest/polislt
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1556,7 +1556,7 @@ datum/crafting_recipe/polisltcoat
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/polischiefcoat
+/datum/crafting_recipe/polischiefcoat
name = "Police Chief's Jacket"
result = /obj/item/clothing/suit/armor/medium/vest/polischief
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1568,7 +1568,7 @@ datum/crafting_recipe/polischiefcoat
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/polissnrcoat
+/datum/crafting_recipe/polissnrcoat
name = "Police Search and Rescue Jacket"
result = /obj/item/clothing/suit/armor/medium/vest/polissnr
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1579,7 +1579,7 @@ datum/crafting_recipe/polissnrcoat
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/polishat
+/datum/crafting_recipe/polishat
name = "Police Officer's Hat"
result = /obj/item/clothing/head/hat/polis
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1591,7 +1591,7 @@ datum/crafting_recipe/polishat
always_available = FALSE
-datum/crafting_recipe/polislthat
+/datum/crafting_recipe/polislthat
name = "Police Lieutenant's Hat"
result = /obj/item/clothing/head/hat/polislt
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1603,7 +1603,7 @@ datum/crafting_recipe/polislthat
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/polischiefhat
+/datum/crafting_recipe/polischiefhat
name = "Police Chief's Hat"
result = /obj/item/clothing/head/hat/polischief
reqs = list(/obj/item/stack/sheet/durathread = 10,
@@ -1615,7 +1615,7 @@ datum/crafting_recipe/polischiefhat
subcategory = CAT_ARMOR
always_available = FALSE
-datum/crafting_recipe/polissnrhat
+/datum/crafting_recipe/polissnrhat
name = "Police Search and Rescue Hat"
result = /obj/item/clothing/head/hat/polissnr
reqs = list(/obj/item/stack/sheet/durathread = 10,
diff --git a/code/datums/components/crafting/recipes/recipes_tribal.dm b/code/datums/components/crafting/recipes/recipes_tribal.dm
index 65c346e73e8..66a8a2ba770 100644
--- a/code/datums/components/crafting/recipes/recipes_tribal.dm
+++ b/code/datums/components/crafting/recipes/recipes_tribal.dm
@@ -411,7 +411,7 @@
//Bone Dancers
-datum/crafting_recipe/tribalwar/bone
+/datum/crafting_recipe/tribalwar/bone
category = CAT_PRIMAL
always_available = FALSE
diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm
index 6b5b486764c..62efecbba77 100644
--- a/code/datums/components/decal.dm
+++ b/code/datums/components/decal.dm
@@ -18,11 +18,11 @@
/datum/component/decal/RegisterWithParent()
if(first_dir)
- RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react)
+ RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE,PROC_REF(rotate_react))
if(cleanable)
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react)
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT,PROC_REF(clean_react))
if(description)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(examine))
/datum/component/decal/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_ATOM_DIR_CHANGE, COMSIG_COMPONENT_CLEAN_ACT, COMSIG_PARENT_EXAMINE))
@@ -51,13 +51,13 @@
var/atom/master = thing || parent
master.add_overlay(pic, TRUE)
if(isitem(master))
- addtimer(CALLBACK(master, /obj/item/.proc/update_slot_icon), 0, TIMER_UNIQUE)
+ addtimer(CALLBACK(master, TYPE_PROC_REF(/obj/item/,update_slot_icon)), 0, TIMER_UNIQUE)
/datum/component/decal/proc/remove(atom/thing)
var/atom/master = thing || parent
master.cut_overlay(pic, TRUE)
if(isitem(master))
- addtimer(CALLBACK(master, /obj/item/.proc/update_slot_icon), 0, TIMER_UNIQUE)
+ addtimer(CALLBACK(master, TYPE_PROC_REF(/obj/item/,update_slot_icon)), 0, TIMER_UNIQUE)
/datum/component/decal/proc/rotate_react(old_dir, new_dir)
if(old_dir == new_dir)
diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm
index 689ae0bca80..2d589c62503 100644
--- a/code/datums/components/decals/blood.dm
+++ b/code/datums/components/decals/blood.dm
@@ -5,7 +5,7 @@
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
. = ..()
- RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name)
+ RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME,PROC_REF(get_examine_name))
/datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color)
var/obj/item/I = parent
diff --git a/code/datums/components/dejavu.dm b/code/datums/components/dejavu.dm
index 19e41148d3b..b2a2cddf9c9 100644
--- a/code/datums/components/dejavu.dm
+++ b/code/datums/components/dejavu.dm
@@ -42,22 +42,22 @@
tox_loss = L.getToxLoss()
oxy_loss = L.getOxyLoss()
brain_loss = L.getOrganLoss(ORGAN_SLOT_BRAIN)
- rewind_type = .proc/rewind_living
+ rewind_type = PROC_REF(rewind_living)
if(iscarbon(parent))
var/mob/living/carbon/C = parent
saved_bodyparts = C.save_bodyparts()
- rewind_type = .proc/rewind_carbon
+ rewind_type = PROC_REF(rewind_carbon)
else if(isanimal(parent))
var/mob/living/simple_animal/M = parent
brute_loss = M.bruteloss
- rewind_type = .proc/rewind_animal
+ rewind_type = PROC_REF(rewind_animal)
else if(isobj(parent))
var/obj/O = parent
integrity = O.obj_integrity
- rewind_type = .proc/rewind_obj
+ rewind_type = PROC_REF(rewind_obj)
addtimer(CALLBACK(src, rewind_type), rewind_interval)
diff --git a/code/datums/components/drift.dm b/code/datums/components/drift.dm
index 4d509026a44..93174aa48ad 100644
--- a/code/datums/components/drift.dm
+++ b/code/datums/components/drift.dm
@@ -28,11 +28,11 @@
if(!drifting_loop) //Really want to qdel here but can't
return COMPONENT_INCOMPATIBLE
- RegisterSignal(drifting_loop, COMSIG_MOVELOOP_START, .proc/drifting_start)
- RegisterSignal(drifting_loop, COMSIG_MOVELOOP_STOP, .proc/drifting_stop)
- RegisterSignal(drifting_loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, .proc/before_move)
- RegisterSignal(drifting_loop, COMSIG_MOVELOOP_POSTPROCESS, .proc/after_move)
- RegisterSignal(drifting_loop, COMSIG_PARENT_QDELETING, .proc/loop_death)
+ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_START,PROC_REF(drifting_start))
+ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_STOP,PROC_REF(drifting_stop))
+ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_PREPROCESS_CHECK,PROC_REF(before_move))
+ RegisterSignal(drifting_loop, COMSIG_MOVELOOP_POSTPROCESS,PROC_REF(after_move))
+ RegisterSignal(drifting_loop, COMSIG_PARENT_QDELETING,PROC_REF(loop_death))
if(drifting_loop.running)
drifting_start(drifting_loop) // There's a good chance it'll autostart, gotta catch that
@@ -85,13 +85,13 @@
SIGNAL_HANDLER
var/atom/movable/movable_parent = parent
inertia_last_loc = movable_parent.loc
- RegisterSignal(movable_parent, COMSIG_MOVABLE_MOVED, .proc/handle_move)
- RegisterSignal(movable_parent, COMSIG_MOVABLE_NEWTONIAN_MOVE, .proc/newtonian_impulse)
+ RegisterSignal(movable_parent, COMSIG_MOVABLE_MOVED,PROC_REF(handle_move))
+ RegisterSignal(movable_parent, COMSIG_MOVABLE_NEWTONIAN_MOVE,PROC_REF(newtonian_impulse))
// We will use glide size to intuit how long to delay our loop's next move for
// This way you can't ride two movements at once while drifting, since that'd be dumb as fuck
- RegisterSignal(movable_parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, .proc/handle_glidesize_update)
+ RegisterSignal(movable_parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE,PROC_REF(handle_glidesize_update))
// If you stop pulling something mid drift, I want it to retain that momentum
- RegisterSignal(movable_parent, COMSIG_ATOM_NO_LONGER_PULLING, .proc/stopped_pulling)
+ RegisterSignal(movable_parent, COMSIG_ATOM_NO_LONGER_PULLING,PROC_REF(stopped_pulling))
/datum/component/drift/proc/drifting_stop()
SIGNAL_HANDLER
@@ -183,7 +183,7 @@
block_inputs_until = world.time + glide_for
QDEL_IN(src, glide_for + 1)
qdel(drifting_loop)
- RegisterSignal(parent, COMSIG_MOB_CLIENT_PRE_MOVE, .proc/allow_final_movement)
+ RegisterSignal(parent, COMSIG_MOB_CLIENT_PRE_MOVE,PROC_REF(allow_final_movement))
/datum/component/drift/proc/allow_final_movement(datum/source)
// Some things want to allow movement out of spacedrift, we should let them
diff --git a/code/datums/components/earhealing.dm b/code/datums/components/earhealing.dm
index 8fe6d2788e0..9fdef8cac34 100644
--- a/code/datums/components/earhealing.dm
+++ b/code/datums/components/earhealing.dm
@@ -7,7 +7,7 @@
/datum/component/earhealing/Initialize()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged)
+ RegisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED),PROC_REF(equippedChanged))
/datum/component/earhealing/proc/equippedChanged(mob/living/carbon/user, slot)
if (slot == SLOT_EARS && istype(user))
diff --git a/code/datums/components/earprotection.dm b/code/datums/components/earprotection.dm
index 9256c4310a7..6439e49b831 100644
--- a/code/datums/components/earprotection.dm
+++ b/code/datums/components/earprotection.dm
@@ -1,7 +1,7 @@
/datum/component/wearertargeting/earprotection
signals = list(COMSIG_CARBON_SOUNDBANG)
mobtype = /mob/living/carbon
- proctype = .proc/reducebang
+ proctype = PROC_REF(reducebang)
/datum/component/wearertargeting/earprotection/Initialize(_valid_slots)
. = ..()
diff --git a/code/datums/components/edible.dm b/code/datums/components/edible.dm
index 34292e613e5..c983dbc4d30 100644
--- a/code/datums/components/edible.dm
+++ b/code/datums/components/edible.dm
@@ -34,12 +34,12 @@ Behavior that's still missing from this component that original food items had t
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_ANIMAL, .proc/UseByAnimal)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(examine))
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_ANIMAL,PROC_REF(UseByAnimal))
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/UseFromHand)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK,PROC_REF(UseFromHand))
else if(isturf(parent))
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/TryToEatTurf)
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND,PROC_REF(TryToEatTurf))
src.bite_consumption = bite_consumption
src.food_flags = food_flags
@@ -156,7 +156,7 @@ Behavior that's still missing from this component that original food items had t
eater.visible_message(
span_notice("[eater] unwillingly [eatverb]s \the [parent]."),
span_notice("You unwillingly [eatverb] \the [parent]."))
- if((600 * (1 + eater.overeatduration / 1000)) to INFINITY)
+ if(650 to INFINITY)
if(HAS_TRAIT(eater, TRAIT_VORACIOUS))
eater.visible_message(
span_notice("[eater] gluttonously [eatverb]s \the [parent], cramming it down [eater.p_their()] throat!"),
diff --git a/code/datums/components/edit_complainer.dm b/code/datums/components/edit_complainer.dm
index e2cca2eb50c..a0570a27ee0 100644
--- a/code/datums/components/edit_complainer.dm
+++ b/code/datums/components/edit_complainer.dm
@@ -16,7 +16,7 @@
)
say_lines = text || default_lines
- RegisterSignal(SSdcs, COMSIG_GLOB_VAR_EDIT, .proc/var_edit_react)
+ RegisterSignal(SSdcs, COMSIG_GLOB_VAR_EDIT,PROC_REF(var_edit_react))
/datum/component/edit_complainer/proc/var_edit_react(datum/source, list/arguments)
var/atom/movable/master = parent
diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm
index 63d5a13b2ec..fcc30b70fbf 100644
--- a/code/datums/components/embedded.dm
+++ b/code/datums/components/embedded.dm
@@ -100,12 +100,12 @@
/datum/component/embedded/RegisterWithParent()
if(iscarbon(parent))
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/jostleCheck)
- RegisterSignal(parent, COMSIG_CARBON_EMBED_RIP, .proc/ripOutCarbon)
- RegisterSignal(parent, COMSIG_CARBON_EMBED_REMOVAL, .proc/safeRemoveCarbon)
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(jostleCheck))
+ RegisterSignal(parent, COMSIG_CARBON_EMBED_RIP,PROC_REF(ripOutCarbon))
+ RegisterSignal(parent, COMSIG_CARBON_EMBED_REMOVAL,PROC_REF(safeRemoveCarbon))
else if(isclosedturf(parent))
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examineTurf)
- RegisterSignal(parent, COMSIG_PARENT_QDELETING, .proc/itemMoved)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(examineTurf))
+ RegisterSignal(parent, COMSIG_PARENT_QDELETING,PROC_REF(itemMoved))
/datum/component/embedded/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_MOVABLE_MOVED, COMSIG_CARBON_EMBED_RIP, COMSIG_CARBON_EMBED_REMOVAL, COMSIG_PARENT_EXAMINE))
@@ -137,7 +137,7 @@
limb.embedded_objects |= weapon // on the inside... on the inside...
weapon.forceMove(victim)
- RegisterSignal(weapon, list(COMSIG_MOVABLE_MOVED, COMSIG_PARENT_QDELETING), .proc/byeItemCarbon)
+ RegisterSignal(weapon, list(COMSIG_MOVABLE_MOVED, COMSIG_PARENT_QDELETING),PROC_REF(byeItemCarbon))
var/damage = 0
if(harmful)
victim.visible_message(span_danger("[weapon] embeds itself in [victim]'s [limb.name]!"),ignored_mobs=victim)
@@ -303,7 +303,7 @@
// we can't store the item IN the turf (cause turfs are just kinda... there), so we fake it by making the item invisible and bailing if it moves due to a blast
weapon.forceMove(hit)
weapon.invisibility = INVISIBILITY_ABSTRACT
- RegisterSignal(weapon, COMSIG_MOVABLE_MOVED, .proc/itemMoved)
+ RegisterSignal(weapon, COMSIG_MOVABLE_MOVED,PROC_REF(itemMoved))
var/pixelX = rand(-2, 2)
var/pixelY = rand(-1, 3) // bias this upwards since in-hands are usually on the lower end of the sprite
@@ -326,7 +326,7 @@
var/matrix/M = matrix()
M.Translate(pixelX, pixelY)
overlay.transform = M
- RegisterSignal(hit,COMSIG_ATOM_UPDATE_OVERLAYS,.proc/apply_overlay)
+ RegisterSignal(hit,COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(apply_overlay))
hit.update_icon()
if(harmful)
diff --git a/code/datums/components/empprotection.dm b/code/datums/components/empprotection.dm
index df4c49040b6..9e3c8bb6ca9 100644
--- a/code/datums/components/empprotection.dm
+++ b/code/datums/components/empprotection.dm
@@ -5,7 +5,7 @@
if(!istype(parent, /atom))
return COMPONENT_INCOMPATIBLE
flags = _flags
- RegisterSignal(parent, list(COMSIG_ATOM_EMP_ACT), .proc/getEmpFlags)
+ RegisterSignal(parent, list(COMSIG_ATOM_EMP_ACT),PROC_REF(getEmpFlags))
/datum/component/empprotection/proc/getEmpFlags(severity)
return flags
diff --git a/code/datums/components/explodable.dm b/code/datums/components/explodable.dm
index 6e4be8497d1..e47acc73b83 100644
--- a/code/datums/components/explodable.dm
+++ b/code/datums/components/explodable.dm
@@ -10,16 +10,16 @@
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/explodable_attack)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/explodable_insert_item)
- RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/detonate)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(explodable_attack))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT,PROC_REF(explodable_insert_item))
+ RegisterSignal(parent, COMSIG_ATOM_EX_ACT,PROC_REF(detonate))
if(ismovable(parent))
- RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/explodable_impact)
- RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/explodable_bump)
+ RegisterSignal(parent, COMSIG_MOVABLE_IMPACT,PROC_REF(explodable_impact))
+ RegisterSignal(parent, COMSIG_MOVABLE_BUMP,PROC_REF(explodable_bump))
if(isitem(parent))
- RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/explodable_attack)
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT),PROC_REF(explodable_attack))
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
@@ -56,7 +56,7 @@
detonate()
/datum/component/explodable/proc/on_equip(datum/source, mob/equipper, slot)
- RegisterSignal(equipper, COMSIG_MOB_APPLY_DAMAGE, .proc/explodable_attack_zone, TRUE)
+ RegisterSignal(equipper, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(explodable_attack_zone), TRUE)
/datum/component/explodable/proc/on_drop(datum/source, mob/user)
UnregisterSignal(user, COMSIG_MOB_APPLY_DAMAGE)
diff --git a/code/datums/components/field_of_vision.dm b/code/datums/components/field_of_vision.dm
index 97d3141db62..0ffd7f3e3d3 100644
--- a/code/datums/components/field_of_vision.dm
+++ b/code/datums/components/field_of_vision.dm
@@ -82,14 +82,14 @@
var/mob/M = parent
if(M.client)
generate_fov_holder(M, angle)
- RegisterSignal(M, COMSIG_MOB_CLIENT_LOGIN, .proc/on_mob_login)
- RegisterSignal(M, COMSIG_MOB_CLIENT_LOGOUT, .proc/on_mob_logout)
- RegisterSignal(M, COMSIG_MOB_GET_VISIBLE_MESSAGE, .proc/on_visible_message)
- RegisterSignal(M, COMSIG_MOB_EXAMINATE, .proc/on_examinate)
- RegisterSignal(M, COMSIG_MOB_FOV_VIEW, .proc/on_fov_view)
- RegisterSignal(M, COMSIG_MOB_CLIENT_CHANGE_VIEW, .proc/on_change_view)
- RegisterSignal(M, COMSIG_MOB_RESET_PERSPECTIVE, .proc/on_reset_perspective)
- RegisterSignal(M, COMSIG_MOB_FOV_VIEWER, .proc/is_viewer)
+ RegisterSignal(M, COMSIG_MOB_CLIENT_LOGIN,PROC_REF(on_mob_login))
+ RegisterSignal(M, COMSIG_MOB_CLIENT_LOGOUT,PROC_REF(on_mob_logout))
+ RegisterSignal(M, COMSIG_MOB_GET_VISIBLE_MESSAGE,PROC_REF(on_visible_message))
+ RegisterSignal(M, COMSIG_MOB_EXAMINATE,PROC_REF(on_examinate))
+ RegisterSignal(M, COMSIG_MOB_FOV_VIEW,PROC_REF(on_fov_view))
+ RegisterSignal(M, COMSIG_MOB_CLIENT_CHANGE_VIEW,PROC_REF(on_change_view))
+ RegisterSignal(M, COMSIG_MOB_RESET_PERSPECTIVE,PROC_REF(on_reset_perspective))
+ RegisterSignal(M, COMSIG_MOB_FOV_VIEWER,PROC_REF(is_viewer))
/datum/component/field_of_vision/UnregisterFromParent()
. = ..()
@@ -134,14 +134,14 @@
if(_angle)
rotate_shadow_cone(_angle)
fov.alpha = M.stat == DEAD ? 0 : 255
- RegisterSignal(M, COMSIG_MOB_DEATH, .proc/hide_fov)
- RegisterSignal(M, COMSIG_LIVING_REVIVE, .proc/show_fov)
- RegisterSignal(M, COMSIG_ATOM_DIR_CHANGE, .proc/on_dir_change)
- RegisterSignal(M, COMSIG_MOVABLE_MOVED, .proc/on_mob_moved)
- RegisterSignal(M, COMSIG_ROBOT_UPDATE_ICONS, .proc/manual_centered_render_source)
+ RegisterSignal(M, COMSIG_MOB_DEATH,PROC_REF(hide_fov))
+ RegisterSignal(M, COMSIG_LIVING_REVIVE,PROC_REF(show_fov))
+ RegisterSignal(M, COMSIG_ATOM_DIR_CHANGE,PROC_REF(on_dir_change))
+ RegisterSignal(M, COMSIG_MOVABLE_MOVED,PROC_REF(on_mob_moved))
+ RegisterSignal(M, COMSIG_ROBOT_UPDATE_ICONS,PROC_REF(manual_centered_render_source))
var/atom/A = M
if(M.loc && !isturf(M.loc))
- REGISTER_NESTED_LOCS(M, nested_locs, COMSIG_MOVABLE_MOVED, .proc/on_loc_moved)
+ REGISTER_NESTED_LOCS(M, nested_locs, COMSIG_MOVABLE_MOVED,PROC_REF(on_loc_moved))
A = nested_locs[nested_locs.len]
CENTERED_RENDER_SOURCE(owner_mask, A, src)
M.client.images += shadow_mask
@@ -213,7 +213,7 @@
var/turf/T
if(!isturf(source.loc)) //Recalculate all nested locations.
UNREGISTER_NESTED_LOCS( nested_locs, COMSIG_MOVABLE_MOVED, 1)
- REGISTER_NESTED_LOCS(source, nested_locs, COMSIG_MOVABLE_MOVED, .proc/on_loc_moved)
+ REGISTER_NESTED_LOCS(source, nested_locs, COMSIG_MOVABLE_MOVED,PROC_REF(on_loc_moved))
var/atom/movable/topmost = nested_locs[nested_locs.len]
T = topmost.loc
CENTERED_RENDER_SOURCE(owner_mask, topmost, src)
@@ -233,7 +233,7 @@
var/atom/movable/prev_topmost = nested_locs[nested_locs.len]
if(prev_topmost != source)
UNREGISTER_NESTED_LOCS(nested_locs, COMSIG_MOVABLE_MOVED, nested_locs.Find(source) + 1)
- REGISTER_NESTED_LOCS(source, nested_locs, COMSIG_MOVABLE_MOVED, .proc/on_loc_moved)
+ REGISTER_NESTED_LOCS(source, nested_locs, COMSIG_MOVABLE_MOVED,PROC_REF(on_loc_moved))
var/atom/movable/topmost = nested_locs[nested_locs.len]
if(topmost != prev_topmost)
CENTERED_RENDER_SOURCE(owner_mask, topmost, src)
diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm
index b00258762a7..fa7f72248ab 100644
--- a/code/datums/components/footstep.dm
+++ b/code/datums/components/footstep.dm
@@ -32,7 +32,7 @@
if(FOOTSTEP_MOB_HUMAN)
if(!ishuman(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/play_humanstep)
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(play_humanstep))
return
if(FOOTSTEP_MOB_CLAW)
footstep_sounds = GLOB.clawfootstep
@@ -48,7 +48,7 @@
footstep_sounds = 'sound/effects/footstep/crawl1.ogg'
if(FOOTSTEP_MOB_HOOF)
footstep_sounds = 'modular_coyote/sound/mobsounds/horsestep.ogg'
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/play_simplestep) //Note that this doesn't get called for humans.
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(play_simplestep)) //Note that this doesn't get called for humans.
///Prepares a footstep. Determines if it should get played. Returns the turf it should get played on. Note that it is always a /turf/open
/datum/component/footstep/proc/prepare_step()
diff --git a/code/datums/components/forced_gravity.dm b/code/datums/components/forced_gravity.dm
index 4512a4de55d..f46ae39f000 100644
--- a/code/datums/components/forced_gravity.dm
+++ b/code/datums/components/forced_gravity.dm
@@ -5,9 +5,9 @@
/datum/component/forced_gravity/Initialize(forced_value = 1)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(COMSIG_ATOM_HAS_GRAVITY, .proc/gravity_check)
+ RegisterSignal(COMSIG_ATOM_HAS_GRAVITY,PROC_REF(gravity_check))
if(isturf(parent))
- RegisterSignal(COMSIG_TURF_HAS_GRAVITY, .proc/turf_gravity_check)
+ RegisterSignal(COMSIG_TURF_HAS_GRAVITY,PROC_REF(turf_gravity_check))
gravity = forced_value
diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm
index 34cfb12af5d..f9ada4a5c31 100644
--- a/code/datums/components/forensics.dm
+++ b/code/datums/components/forensics.dm
@@ -21,7 +21,7 @@
blood_DNA = new_blood_DNA
fibers = new_fibers
check_blood()
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act)
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT,PROC_REF(clean_act))
/datum/component/forensics/proc/wipe_fingerprints()
fingerprints = null
diff --git a/code/datums/components/fried.dm b/code/datums/components/fried.dm
index d94905ebc74..707eb44e782 100644
--- a/code/datums/components/fried.dm
+++ b/code/datums/components/fried.dm
@@ -12,8 +12,8 @@
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/restore) //basically, unfry people who are being cleaned (badmemes fried someone)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(examine))
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT,PROC_REF(restore)) //basically, unfry people who are being cleaned (badmemes fried someone)
fry_power = frying_power
owner = parent
diff --git a/code/datums/components/glow_heal.dm b/code/datums/components/glow_heal.dm
index 026891ba83e..6cc9d16fc37 100644
--- a/code/datums/components/glow_heal.dm
+++ b/code/datums/components/glow_heal.dm
@@ -33,7 +33,7 @@
glow_color = color_glow
healing_types = type_healing
START_PROCESSING(SSobj, src)
- RegisterSignal(living_owner, COMSIG_LIVING_REVIVE, .proc/restart_process)
+ RegisterSignal(living_owner, COMSIG_LIVING_REVIVE,PROC_REF(restart_process))
/datum/component/glow_heal/proc/restart_process()
START_PROCESSING(SSobj, src)
diff --git a/code/datums/components/gps.dm b/code/datums/components/gps.dm
index 4f4ba21b70d..6db4260c658 100644
--- a/code/datums/components/gps.dm
+++ b/code/datums/components/gps.dm
@@ -28,11 +28,11 @@ GLOBAL_LIST_EMPTY(GPS_list)
var/atom/A = parent
A.add_overlay("working")
A.name = "[initial(A.name)] ([gpstag])"
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF,PROC_REF(interact))
if(!emp_proof)
- RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp_act)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
- RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_AltClick)
+ RegisterSignal(parent, COMSIG_ATOM_EMP_ACT,PROC_REF(on_emp_act))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(on_examine))
+ RegisterSignal(parent, COMSIG_CLICK_ALT,PROC_REF(on_AltClick))
///Called on COMSIG_ITEM_ATTACK_SELF
/datum/component/gps/item/proc/interact(datum/source, mob/user)
@@ -49,7 +49,7 @@ GLOBAL_LIST_EMPTY(GPS_list)
var/atom/A = parent
A.cut_overlay("working")
A.add_overlay("emp")
- addtimer(CALLBACK(src, .proc/reboot), 300, TIMER_UNIQUE|TIMER_OVERRIDE) //if a new EMP happens, remove the old timer so it doesn't reactivate early
+ addtimer(CALLBACK(src,PROC_REF(reboot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE) //if a new EMP happens, remove the old timer so it doesn't reactivate early
SStgui.close_uis(src) //Close the UI control if it is open.
///Restarts the GPS after getting turned off by an EMP.
diff --git a/code/datums/components/identification.dm b/code/datums/components/identification.dm
index 4e7a622a31b..07c83675aa3 100644
--- a/code/datums/components/identification.dm
+++ b/code/datums/components/identification.dm
@@ -24,11 +24,11 @@
identification_method_flags = id_method_flags
/datum/component/identification/RegisterWithParent()
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(on_examine))
if(identification_effect_flags & ID_COMPONENT_EFFECT_NO_ACTIONS)
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
if(identification_method_flags & ID_COMPONENT_IDENTIFY_WITH_DECONSTRUCTOR)
- RegisterSignal(parent, COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN, .proc/on_deconstructor_deepscan)
+ RegisterSignal(parent, COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN,PROC_REF(on_deconstructor_deepscan))
/datum/component/identification/UnregisterFromParent()
var/list/unregister = list(COMSIG_PARENT_EXAMINE)
diff --git a/code/datums/components/igniter.dm b/code/datums/components/igniter.dm
index 2f311db1668..d1a93475c72 100644
--- a/code/datums/components/igniter.dm
+++ b/code/datums/components/igniter.dm
@@ -11,11 +11,11 @@
/datum/component/igniter/RegisterWithParent()
. = ..()
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT,PROC_REF(projectile_hit))
else if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK,PROC_REF(item_afterattack))
else if(ishostile(parent))
- RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget)
+ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET,PROC_REF(hostile_attackingtarget))
/datum/component/igniter/UnregisterFromParent()
. = ..()
diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm
index 8d3c6ab81f0..d8d0a4421c0 100644
--- a/code/datums/components/infective.dm
+++ b/code/datums/components/infective.dm
@@ -15,19 +15,19 @@
if(!ismovable(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean)
- RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle)
- RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/try_infect_collide)
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/try_infect_crossed)
- RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE, .proc/try_infect_impact_zone)
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT,PROC_REF(clean))
+ RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE,PROC_REF(try_infect_buckle))
+ RegisterSignal(parent, COMSIG_MOVABLE_BUMP,PROC_REF(try_infect_collide))
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED,PROC_REF(try_infect_crossed))
+ RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE,PROC_REF(try_infect_impact_zone))
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/try_infect_attack)
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE,PROC_REF(try_infect_attack_zone))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK,PROC_REF(try_infect_attack))
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(try_infect_equipped))
if(istype(parent, /obj/item/reagent_containers/food/snacks))
- RegisterSignal(parent, COMSIG_FOOD_EATEN, .proc/try_infect_eat)
+ RegisterSignal(parent, COMSIG_FOOD_EATEN,PROC_REF(try_infect_eat))
else if(istype(parent, /obj/effect/decal/cleanable/blood/gibs))
- RegisterSignal(parent, COMSIG_GIBS_STREAK, .proc/try_infect_streak)
+ RegisterSignal(parent, COMSIG_GIBS_STREAK,PROC_REF(try_infect_streak))
/datum/component/infective/proc/try_infect_eat(datum/source, mob/living/eater, mob/living/feeder)
for(var/V in diseases)
diff --git a/code/datums/components/jousting.dm b/code/datums/components/jousting.dm
index 72aabb72c0b..1d5e0b6f93d 100644
--- a/code/datums/components/jousting.dm
+++ b/code/datums/components/jousting.dm
@@ -18,12 +18,12 @@
/datum/component/jousting/Initialize()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/on_attack)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK,PROC_REF(on_attack))
/datum/component/jousting/proc/on_equip(datum/source, mob/user, slot)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/mob_move, TRUE)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(mob_move), TRUE)
current_holder = user
/datum/component/jousting/proc/on_drop(datum/source, mob/user)
@@ -68,7 +68,7 @@
current_tile_charge++
if(current_timerid)
deltimer(current_timerid)
- current_timerid = addtimer(CALLBACK(src, .proc/reset_charge), movement_reset_tolerance, TIMER_STOPPABLE)
+ current_timerid = addtimer(CALLBACK(src,PROC_REF(reset_charge)), movement_reset_tolerance, TIMER_STOPPABLE)
/datum/component/jousting/proc/reset_charge()
current_tile_charge = 0
diff --git a/code/datums/components/killerqueen.dm b/code/datums/components/killerqueen.dm
index 6f6aa087dac..504fb9979fa 100644
--- a/code/datums/components/killerqueen.dm
+++ b/code/datums/components/killerqueen.dm
@@ -51,10 +51,10 @@
/datum/component/killerqueen/RegisterWithParent()
. = ..()
- RegisterSignal(parent, list(COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACK_PAW, COMSIG_ATOM_ATTACK_ANIMAL), .proc/touch_detonate)
- RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/bump_detonate)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby_detonate)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
+ RegisterSignal(parent, list(COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACK_PAW, COMSIG_ATOM_ATTACK_ANIMAL),PROC_REF(touch_detonate))
+ RegisterSignal(parent, COMSIG_MOVABLE_BUMP,PROC_REF(bump_detonate))
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(attackby_detonate))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(on_examine))
/datum/component/killerqueen/UnregisterFromParent()
. = ..()
diff --git a/code/datums/components/knockback.dm b/code/datums/components/knockback.dm
index aa1a48d9cf6..dea277db35f 100644
--- a/code/datums/components/knockback.dm
+++ b/code/datums/components/knockback.dm
@@ -17,11 +17,11 @@
/datum/component/knockback/RegisterWithParent()
. = ..()
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT,PROC_REF(projectile_hit))
else if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK,PROC_REF(item_afterattack))
else if(ishostile(parent))
- RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget)
+ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET,PROC_REF(hostile_attackingtarget))
/datum/component/knockback/UnregisterFromParent()
. = ..()
diff --git a/code/datums/components/knockoff.dm b/code/datums/components/knockoff.dm
index e769ec4e0b6..aa45473491b 100644
--- a/code/datums/components/knockoff.dm
+++ b/code/datums/components/knockoff.dm
@@ -7,8 +7,8 @@
/datum/component/knockoff/Initialize(knockoff_chance,zone_override,slots_knockoffable)
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,.proc/OnEquipped)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED,.proc/OnDropped)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(OnEquipped))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(OnDropped))
src.knockoff_chance = knockoff_chance
@@ -38,7 +38,7 @@
if(slots_knockoffable && !(slot in slots_knockoffable))
UnregisterSignal(H, COMSIG_HUMAN_DISARM_HIT)
return
- RegisterSignal(H, COMSIG_HUMAN_DISARM_HIT, .proc/Knockoff, TRUE)
+ RegisterSignal(H, COMSIG_HUMAN_DISARM_HIT,PROC_REF(Knockoff), TRUE)
/datum/component/knockoff/proc/OnDropped(datum/source, mob/living/M)
UnregisterSignal(M, COMSIG_HUMAN_DISARM_HIT)
diff --git a/code/datums/components/label.dm b/code/datums/components/label.dm
index d72aa6a38e1..a18bf5ec177 100644
--- a/code/datums/components/label.dm
+++ b/code/datums/components/label.dm
@@ -22,8 +22,8 @@
apply_label()
/datum/component/label/RegisterWithParent()
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackby)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/Examine)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(OnAttackby))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(Examine))
/datum/component/label/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_PARENT_ATTACKBY, COMSIG_PARENT_EXAMINE))
diff --git a/code/datums/components/largeobjecttransparency.dm b/code/datums/components/largeobjecttransparency.dm
index fed9eb26b94..063c86762c5 100644
--- a/code/datums/components/largeobjecttransparency.dm
+++ b/code/datums/components/largeobjecttransparency.dm
@@ -57,7 +57,7 @@
return ..()
/datum/component/largetransparency/RegisterWithParent()
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/OnMove)
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(OnMove))
RegisterWithTurfs()
/datum/component/largetransparency/UnregisterFromParent()
@@ -75,9 +75,9 @@
for(var/regist_tu in registered_turfs)
if(!regist_tu)
continue
- RegisterSignal(regist_tu, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_CREATED), .proc/objectEnter)
- RegisterSignal(regist_tu, COMSIG_ATOM_EXITED, .proc/objectLeave)
- RegisterSignal(regist_tu, COMSIG_TURF_CHANGE, .proc/OnTurfChange)
+ RegisterSignal(regist_tu, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_CREATED),PROC_REF(objectEnter))
+ RegisterSignal(regist_tu, COMSIG_ATOM_EXITED,PROC_REF(objectLeave))
+ RegisterSignal(regist_tu, COMSIG_TURF_CHANGE,PROC_REF(OnTurfChange))
for(var/thing in regist_tu)
var/atom/check_atom = thing
if(!(check_atom.flags_1 & CRITICAL_ATOM_1))
@@ -101,7 +101,7 @@
/datum/component/largetransparency/proc/OnTurfChange()
SIGNAL_HANDLER
- addtimer(CALLBACK(src, .proc/OnMove), 1, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain
+ addtimer(CALLBACK(src,PROC_REF(OnMove)), 1, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain
/datum/component/largetransparency/proc/objectEnter(datum/source, atom/enterer)
SIGNAL_HANDLER
diff --git a/code/datums/components/lifesteal.dm b/code/datums/components/lifesteal.dm
index 9d62d328665..4e9a969e87b 100644
--- a/code/datums/components/lifesteal.dm
+++ b/code/datums/components/lifesteal.dm
@@ -12,11 +12,11 @@
/datum/component/lifesteal/RegisterWithParent()
. = ..()
if(isgun(parent))
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT,PROC_REF(projectile_hit))
else if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK,PROC_REF(item_afterattack))
else if(ishostile(parent))
- RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget)
+ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET,PROC_REF(hostile_attackingtarget))
/datum/component/lifesteal/UnregisterFromParent()
. = ..()
diff --git a/code/datums/components/lockon_aiming.dm b/code/datums/components/lockon_aiming.dm
index 4acdece7e5c..c189c4f7e86 100644
--- a/code/datums/components/lockon_aiming.dm
+++ b/code/datums/components/lockon_aiming.dm
@@ -26,7 +26,7 @@
if(target_callback)
can_target_callback = target_callback
else
- can_target_callback = CALLBACK(src, .proc/can_target)
+ can_target_callback = CALLBACK(src,PROC_REF(can_target))
if(range)
lock_cursor_range = range
if(typecache)
@@ -47,7 +47,7 @@
if(icon_state)
lock_icon_state = icon_state
generate_lock_visuals()
- RegisterSignal(parent, COMSIG_MOB_CLIENT_MOUSEMOVE, .proc/onMouseMove)
+ RegisterSignal(parent, COMSIG_MOB_CLIENT_MOUSEMOVE,PROC_REF(onMouseMove))
START_PROCESSING(SSfastprocess, src)
/datum/component/lockon_aiming/Destroy()
diff --git a/code/datums/components/lore_dump.dm b/code/datums/components/lore_dump.dm
index 8a73194446f..7f1094b5bca 100644
--- a/code/datums/components/lore_dump.dm
+++ b/code/datums/components/lore_dump.dm
@@ -10,11 +10,11 @@
/datum/component/lore/Initialize()
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_PARENT_EXAMINE_MORE), .proc/lore_dump)
+ RegisterSignal(parent, list(COMSIG_PARENT_EXAMINE_MORE),PROC_REF(lore_dump))
/datum/component/lore/proc/lore_dump(datum/source, mob/reader)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/dump_lore, reader)
+ INVOKE_ASYNC(src,PROC_REF(dump_lore), reader)
/datum/component/lore/proc/dump_lore(mob/reader)
if(!reader)
diff --git a/code/datums/components/magnetic_catch.dm b/code/datums/components/magnetic_catch.dm
index 20cd8e1d78f..67b8ec68509 100644
--- a/code/datums/components/magnetic_catch.dm
+++ b/code/datums/components/magnetic_catch.dm
@@ -1,31 +1,31 @@
/datum/component/magnetic_catch/Initialize()
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(examine))
if(ismovable(parent))
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/crossed_react)
- RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/uncrossed_react)
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED,PROC_REF(crossed_react))
+ RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED,PROC_REF(uncrossed_react))
for(var/i in get_turf(parent))
if(i == parent)
continue
- RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react)
+ RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW,PROC_REF(throw_react))
else
- RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/entered_react)
- RegisterSignal(parent, COMSIG_ATOM_EXITED, .proc/exited_react)
+ RegisterSignal(parent, COMSIG_ATOM_ENTERED,PROC_REF(entered_react))
+ RegisterSignal(parent, COMSIG_ATOM_EXITED,PROC_REF(exited_react))
for(var/i in parent)
- RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react)
+ RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW,PROC_REF(throw_react))
/datum/component/magnetic_catch/proc/examine(datum/source, mob/user, list/examine_list)
examine_list += "It has been installed with inertia dampening to prevent coffee spills."
/datum/component/magnetic_catch/proc/crossed_react(datum/source, atom/movable/thing)
- RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react, TRUE)
+ RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW,PROC_REF(throw_react), TRUE)
/datum/component/magnetic_catch/proc/uncrossed_react(datum/source, atom/movable/thing)
UnregisterSignal(thing, COMSIG_MOVABLE_PRE_THROW)
/datum/component/magnetic_catch/proc/entered_react(datum/source, atom/movable/thing, atom/oldloc)
- RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react, TRUE)
+ RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW,PROC_REF(throw_react), TRUE)
/datum/component/magnetic_catch/proc/exited_react(datum/source, atom/movable/thing, atom/newloc)
UnregisterSignal(thing, COMSIG_MOVABLE_PRE_THROW)
diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm
index f0efc5be809..5f3dbe5193f 100644
--- a/code/datums/components/material_container.dm
+++ b/code/datums/components/material_container.dm
@@ -38,9 +38,9 @@
precondition = _precondition
after_insert = _after_insert
- RegisterSignal(parent, COMSIG_PARENT_FORCEFEED, .proc/OnAttackBy)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine)
+ RegisterSignal(parent, COMSIG_PARENT_FORCEFEED,PROC_REF(OnAttackBy))
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(OnAttackBy))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(OnExamine))
for(var/mat in mat_list) //Make the assoc list ref | amount
var/datum/material/M = SSmaterials.GetMaterialRef(mat)
diff --git a/code/datums/components/melee_special.dm b/code/datums/components/melee_special.dm
index ae5efa0f393..9ebcd17b8b1 100644
--- a/code/datums/components/melee_special.dm
+++ b/code/datums/components/melee_special.dm
@@ -101,7 +101,7 @@
/datum/component/weapon_special/RegisterWithParent()
. = ..()
- RegisterSignal(parent, COMSIG_ITEM_ATTACKCHAIN, .proc/item_attackchain)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACKCHAIN,PROC_REF(item_attackchain))
/datum/component/weapon_special/UnregisterFromParent()
. = ..()
@@ -177,7 +177,7 @@
if(!target)
target = client_mouse_angle2turf(user.client, get_turf(user))
if(debug)
- INVOKE_ASYNC(src, .proc/debug_highlight, target)
+ INVOKE_ASYNC(src,PROC_REF(debug_highlight), target)
if(target && max_distance < 2 && user.can_reach(target, reach = max_distance))
return list(get_turf(target)) // we're close enough to just hit the target
// okay we clicked something out of range, so we need to find the turf at the edge of our range in the direction we clicked
@@ -193,7 +193,7 @@
if(!LAZYLEN(line_of_turfs)) // ^ hopefully in the right order
return // cool
if(debug)
- INVOKE_ASYNC(src, .proc/debug_highlight_line, user, line_of_turfs, target)
+ INVOKE_ASYNC(src,PROC_REF(debug_highlight_line), user, line_of_turfs, target)
return line_of_turfs
/datum/component/weapon_special/proc/sim_punch_laser(mob/user)
@@ -278,7 +278,7 @@
var/list/out = list("[just_one]" = atomstuff[just_one])
if(debug)
for(var/atom/movable/AM in out)
- INVOKE_ASYNC(src, .proc/debug_highlight_atom, AM, "#0000FF")
+ INVOKE_ASYNC(src,PROC_REF(debug_highlight_atom), AM, "#0000FF")
return out
if(WS_FURTHEST_POPULATED_TILE)
atomstuff = sort_list(atomstuff, cmp=/proc/cmp_text_dsc)
@@ -286,18 +286,18 @@
var/list/out = list("[just_one]" = atomstuff[just_one])
if(debug)
for(var/atom/movable/AM in out)
- INVOKE_ASYNC(src, .proc/debug_highlight_atom, AM, "#0000FF")
+ INVOKE_ASYNC(src,PROC_REF(debug_highlight_atom), AM, "#0000FF")
return out
if(WS_RANDOM_POPULATED_TILE)
var/just_one = pick(atomstuff)
var/list/out = list("[just_one]" = atomstuff[just_one])
if(debug)
for(var/atom/movable/AM in out)
- INVOKE_ASYNC(src, .proc/debug_highlight_atom, AM, "#0000FF")
+ INVOKE_ASYNC(src,PROC_REF(debug_highlight_atom), AM, "#0000FF")
return out
if(debug)
for(var/atom/movable/AM in atomstuff)
- INVOKE_ASYNC(src, .proc/debug_highlight_atom, AM, "#0000FF")
+ INVOKE_ASYNC(src,PROC_REF(debug_highlight_atom), AM, "#0000FF")
return atomstuff
/datum/component/weapon_special/proc/get_atoms_on_turf(turf/turfhere, mob/user)
@@ -398,7 +398,7 @@
WEAPON_MASTER
var/d_zone = user.zone_selected
if(debug)
- INVOKE_ASYNC(src, .proc/debug_highlight_atom, hit_this, "#ff0000")
+ INVOKE_ASYNC(src,PROC_REF(debug_highlight_atom), hit_this, "#ff0000")
for(var/dmge in damage_list)
if(QDELETED(hit_this))
return
diff --git a/code/datums/components/mirv.dm b/code/datums/components/mirv.dm
index 2a1663776c5..3ccaa37b102 100644
--- a/code/datums/components/mirv.dm
+++ b/code/datums/components/mirv.dm
@@ -16,7 +16,7 @@
/datum/component/mirv/RegisterWithParent()
. = ..()
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT,PROC_REF(projectile_hit))
/datum/component/mirv/UnregisterFromParent()
. = ..()
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index c5111290a2d..9907e7f7b7c 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -27,13 +27,13 @@
if(owner.stat != DEAD)
START_PROCESSING(SSobj, src)
- RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/add_event)
- RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event)
- RegisterSignal(parent, COMSIG_MODIFY_SANITY, .proc/modify_sanity)
- RegisterSignal(parent, COMSIG_LIVING_REVIVE, .proc/on_revive)
- RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, .proc/modify_hud)
- RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/stop_processing)
- RegisterSignal(parent, COMSIG_PARENT_QDELETING, .proc/clean_up)
+ RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT,PROC_REF(add_event))
+ RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT,PROC_REF(clear_event))
+ RegisterSignal(parent, COMSIG_MODIFY_SANITY,PROC_REF(modify_sanity))
+ RegisterSignal(parent, COMSIG_LIVING_REVIVE,PROC_REF(on_revive))
+ RegisterSignal(parent, COMSIG_MOB_HUD_CREATED,PROC_REF(modify_hud))
+ RegisterSignal(parent, COMSIG_MOB_DEATH,PROC_REF(stop_processing))
+ RegisterSignal(parent, COMSIG_PARENT_QDELETING,PROC_REF(clean_up))
if(owner.hud_used)
modify_hud()
@@ -245,7 +245,7 @@
if(master.mind)
master.mind.add_skill_modifier(malus.identifier)
else
- malus.RegisterSignal(master, COMSIG_MOB_ON_NEW_MIND, /datum/skill_modifier.proc/on_mob_new_mind, TRUE)
+ malus.RegisterSignal(master, COMSIG_MOB_ON_NEW_MIND, TYPE_PROC_REF(/datum/skill_modifier,on_mob_new_mind), TRUE)
malus.value_mod = malus.level_mod = 1 - (sanity_level - 3) * MOOD_INSANITY_MALUS
else if(malus)
if(master.mind)
@@ -281,7 +281,7 @@
clear_event(null, category)
else
if(the_event.timeout)
- addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(clear_event), null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
return 0 //Don't have to update the event.
the_event = new type(src, param)//This causes a runtime for some reason, was this me? No - there's an event floating around missing a definition.
@@ -289,7 +289,7 @@
update_mood()
if(the_event.timeout)
- addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(clear_event), null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
/datum/component/mood/proc/clear_event(datum/source, category)
var/datum/mood_event/event = mood_events[category]
@@ -314,8 +314,8 @@
var/datum/hud/hud = owner.hud_used
screen_obj = new
hud.infodisplay += screen_obj
- RegisterSignal(hud, COMSIG_PARENT_QDELETING, .proc/unmodify_hud)
- RegisterSignal(screen_obj, COMSIG_CLICK, .proc/hud_click)
+ RegisterSignal(hud, COMSIG_PARENT_QDELETING,PROC_REF(unmodify_hud))
+ RegisterSignal(screen_obj, COMSIG_CLICK,PROC_REF(hud_click))
/datum/component/mood/proc/unmodify_hud(datum/source)
if(!screen_obj || !parent)
diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm
index 2cc23657978..5bd4ea4e10e 100644
--- a/code/datums/components/nanites.dm
+++ b/code/datums/components/nanites.dm
@@ -42,31 +42,31 @@
cloud_sync()
/datum/component/nanites/RegisterWithParent()
- RegisterSignal(parent, COMSIG_HAS_NANITES, .proc/confirm_nanites)
- RegisterSignal(parent, COMSIG_NANITE_IS_STEALTHY, .proc/check_stealth)
- RegisterSignal(parent, COMSIG_NANITE_DELETE, .proc/delete_nanites)
- RegisterSignal(parent, COMSIG_NANITE_UI_DATA, .proc/nanite_ui_data)
- RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, .proc/get_programs)
- RegisterSignal(parent, COMSIG_NANITE_SET_VOLUME, .proc/set_volume)
- RegisterSignal(parent, COMSIG_NANITE_ADJUST_VOLUME, .proc/adjust_nanites)
- RegisterSignal(parent, COMSIG_NANITE_SET_MAX_VOLUME, .proc/set_max_volume)
- RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD, .proc/set_cloud)
- RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD_SYNC, .proc/set_cloud_sync)
- RegisterSignal(parent, COMSIG_NANITE_SET_SAFETY, .proc/set_safety)
- RegisterSignal(parent, COMSIG_NANITE_SET_REGEN, .proc/set_regen)
- RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM, .proc/add_program)
- RegisterSignal(parent, COMSIG_NANITE_SCAN, .proc/nanite_scan)
- RegisterSignal(parent, COMSIG_NANITE_SYNC, .proc/sync)
+ RegisterSignal(parent, COMSIG_HAS_NANITES,PROC_REF(confirm_nanites))
+ RegisterSignal(parent, COMSIG_NANITE_IS_STEALTHY,PROC_REF(check_stealth))
+ RegisterSignal(parent, COMSIG_NANITE_DELETE,PROC_REF(delete_nanites))
+ RegisterSignal(parent, COMSIG_NANITE_UI_DATA,PROC_REF(nanite_ui_data))
+ RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS,PROC_REF(get_programs))
+ RegisterSignal(parent, COMSIG_NANITE_SET_VOLUME,PROC_REF(set_volume))
+ RegisterSignal(parent, COMSIG_NANITE_ADJUST_VOLUME,PROC_REF(adjust_nanites))
+ RegisterSignal(parent, COMSIG_NANITE_SET_MAX_VOLUME,PROC_REF(set_max_volume))
+ RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD,PROC_REF(set_cloud))
+ RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD_SYNC,PROC_REF(set_cloud_sync))
+ RegisterSignal(parent, COMSIG_NANITE_SET_SAFETY,PROC_REF(set_safety))
+ RegisterSignal(parent, COMSIG_NANITE_SET_REGEN,PROC_REF(set_regen))
+ RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM,PROC_REF(add_program))
+ RegisterSignal(parent, COMSIG_NANITE_SCAN,PROC_REF(nanite_scan))
+ RegisterSignal(parent, COMSIG_NANITE_SYNC,PROC_REF(sync))
if(isliving(parent))
- RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp)
- RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/on_death)
- RegisterSignal(parent, COMSIG_MOB_ALLOWED, .proc/check_access)
- RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_shock)
- RegisterSignal(parent, COMSIG_LIVING_MINOR_SHOCK, .proc/on_minor_shock)
- RegisterSignal(parent, COMSIG_SPECIES_GAIN, .proc/check_viable_biotype)
- RegisterSignal(parent, COMSIG_NANITE_SIGNAL, .proc/receive_signal)
- RegisterSignal(parent, COMSIG_NANITE_COMM_SIGNAL, .proc/receive_comm_signal)
+ RegisterSignal(parent, COMSIG_ATOM_EMP_ACT,PROC_REF(on_emp))
+ RegisterSignal(parent, COMSIG_MOB_DEATH,PROC_REF(on_death))
+ RegisterSignal(parent, COMSIG_MOB_ALLOWED,PROC_REF(check_access))
+ RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT,PROC_REF(on_shock))
+ RegisterSignal(parent, COMSIG_LIVING_MINOR_SHOCK,PROC_REF(on_minor_shock))
+ RegisterSignal(parent, COMSIG_SPECIES_GAIN,PROC_REF(check_viable_biotype))
+ RegisterSignal(parent, COMSIG_NANITE_SIGNAL,PROC_REF(receive_signal))
+ RegisterSignal(parent, COMSIG_NANITE_COMM_SIGNAL,PROC_REF(receive_comm_signal))
/datum/component/nanites/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_HAS_NANITES,
diff --git a/code/datums/components/omen.dm b/code/datums/components/omen.dm
index f2d28be547e..cee0785239b 100644
--- a/code/datums/components/omen.dm
+++ b/code/datums/components/omen.dm
@@ -27,9 +27,9 @@
return ..()
/datum/component/omen/RegisterWithParent()
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/check_accident)
- RegisterSignal(parent, COMSIG_LIVING_STATUS_KNOCKDOWN, .proc/check_slip)
- RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/check_bless)
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(check_accident))
+ RegisterSignal(parent, COMSIG_LIVING_STATUS_KNOCKDOWN,PROC_REF(check_slip))
+ RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT,PROC_REF(check_bless))
/datum/component/omen/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_LIVING_STATUS_KNOCKDOWN, COMSIG_MOVABLE_MOVED, COMSIG_ADD_MOOD_EVENT))
diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm
index 8ba586f5f9c..35f812bb4b3 100644
--- a/code/datums/components/orbiter.dm
+++ b/code/datums/components/orbiter.dm
@@ -23,7 +23,7 @@
. = ..()
var/atom/target = parent
while(ismovable(target))
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED,PROC_REF(move_react))
target = target.loc
/datum/component/orbiter/UnregisterFromParent()
@@ -61,7 +61,7 @@
orbiter.orbiting.end_orbit(orbiter)
orbiters[orbiter] = TRUE
orbiter.orbiting = src
- RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED, .proc/orbiter_move_react)
+ RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED,PROC_REF(orbiter_move_react))
SEND_SIGNAL(parent, COMSIG_ATOM_ORBIT_BEGIN, orbiter)
@@ -135,7 +135,7 @@
if(orbited?.loc && orbited.loc != newturf) // We want to know when anything holding us moves too
var/atom/target = orbited.loc
while(ismovable(target))
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react, TRUE)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED,PROC_REF(move_react), TRUE)
target = target.loc
var/atom/curloc = master.loc
diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm
index 9ab436f5ee5..f6ce4506db6 100644
--- a/code/datums/components/overlay_lighting.dm
+++ b/code/datums/components/overlay_lighting.dm
@@ -105,14 +105,14 @@
/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_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))
var/atom/movable/movable_parent = parent
if(movable_parent.light_flags & LIGHT_ATTACHED)
overlay_lighting_flags |= LIGHTING_ATTACHED
@@ -214,13 +214,13 @@
var/atom/movable/old_parent_attached_to = .
UnregisterSignal(old_parent_attached_to, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED))
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_PARENT_QDELETING,PROC_REF(on_holder_qdel))
+ RegisterSignal(old_parent_attached_to, COMSIG_MOVABLE_MOVED,PROC_REF(on_holder_moved))
if(parent_attached_to)
if(parent_attached_to == current_holder)
UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED))
- 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_PARENT_QDELETING,PROC_REF(on_parent_attached_to_qdel))
+ RegisterSignal(parent_attached_to, COMSIG_MOVABLE_MOVED,PROC_REF(on_parent_attached_to_moved))
check_holder()
@@ -240,10 +240,10 @@
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_PARENT_QDELETING,PROC_REF(on_holder_qdel))
+ RegisterSignal(new_holder, COMSIG_MOVABLE_MOVED,PROC_REF(on_holder_moved))
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()
@@ -463,7 +463,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)
diff --git a/code/datums/components/paintable.dm b/code/datums/components/paintable.dm
index eb284f00463..1a8da30379d 100644
--- a/code/datums/components/paintable.dm
+++ b/code/datums/components/paintable.dm
@@ -2,7 +2,7 @@
var/current_paint
/datum/component/spraycan_paintable/Initialize()
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/Repaint)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(Repaint))
/datum/component/spraycan_paintable/Destroy()
RemoveCurrentCoat()
diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm
index c1673b95ce9..367d6d71e2b 100644
--- a/code/datums/components/pellet_cloud.dm
+++ b/code/datums/components/pellet_cloud.dm
@@ -78,14 +78,14 @@
return ..()
/datum/component/pellet_cloud/RegisterWithParent()
- RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/nullspace_parent)
+ RegisterSignal(parent, COMSIG_PARENT_PREQDELETED,PROC_REF(nullspace_parent))
if(isammocasing(parent))
- RegisterSignal(parent, COMSIG_PELLET_CLOUD_INIT, .proc/create_casing_pellets)
+ RegisterSignal(parent, COMSIG_PELLET_CLOUD_INIT,PROC_REF(create_casing_pellets))
else if(isgrenade(parent))
- RegisterSignal(parent, COMSIG_GRENADE_ARMED, .proc/grenade_armed)
- RegisterSignal(parent, COMSIG_GRENADE_PRIME, .proc/create_blast_pellets)
+ RegisterSignal(parent, COMSIG_GRENADE_ARMED,PROC_REF(grenade_armed))
+ RegisterSignal(parent, COMSIG_GRENADE_PRIME,PROC_REF(create_blast_pellets))
else if(islandmine(parent))
- RegisterSignal(parent, COMSIG_ITEM_MINE_TRIGGERED, .proc/create_blast_pellets)
+ RegisterSignal(parent, COMSIG_ITEM_MINE_TRIGGERED,PROC_REF(create_blast_pellets))
/datum/component/pellet_cloud/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_PARENT_PREQDELETED, COMSIG_PELLET_CLOUD_INIT, COMSIG_GRENADE_PRIME, COMSIG_GRENADE_ARMED, COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UNCROSSED, COMSIG_ITEM_MINE_TRIGGERED, COMSIG_ITEM_DROPPED))
@@ -112,8 +112,8 @@
else //Smart spread
angle_out = round((i / num_pellets - 0.5) * max(distro, 1))
- RegisterSignal(shell.BB, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/pellet_hit)
- RegisterSignal(shell.BB, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING), .proc/pellet_range)
+ RegisterSignal(shell.BB, COMSIG_PROJECTILE_SELF_ON_HIT,PROC_REF(pellet_hit))
+ RegisterSignal(shell.BB, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING),PROC_REF(pellet_range))
LAZYADD(pellets, shell.BB)
if(!shell.throw_proj(target, targloc, shooter, params, angle_out))
return
@@ -189,7 +189,7 @@
if(martyr.stat != DEAD && martyr.client)
LAZYADD(purple_hearts, martyr)
- RegisterSignal(martyr, COMSIG_PARENT_QDELETING, .proc/on_target_qdel, override=TRUE)
+ RegisterSignal(martyr, COMSIG_PARENT_QDELETING,PROC_REF(on_target_qdel), override=TRUE)
for(var/i in 1 to round(pellets_absorbed * 0.5))
pew(martyr)
@@ -221,7 +221,7 @@
if (targets_hit.Find(target))
targets_hit[target]++
if(targets_hit[target] == 1)
- RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/on_target_qdel, override=TRUE)
+ RegisterSignal(target, COMSIG_PARENT_QDELETING,PROC_REF(on_target_qdel), override=TRUE)
UnregisterSignal(P, list(COMSIG_PARENT_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT))
if(terminated == num_pellets)
finalize()
@@ -246,8 +246,8 @@
LAZYADD(P.permutated, parent) // don't hit the target we hit already with the flak
P.suppressed = SUPPRESSED_VERY // set the projectiles to make no message so we can do our own aggregate message
P.preparePixelProjectile(target, parent)
- RegisterSignal(P, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/pellet_hit)
- RegisterSignal(P, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING), .proc/pellet_range)
+ RegisterSignal(P, COMSIG_PROJECTILE_SELF_ON_HIT,PROC_REF(pellet_hit))
+ RegisterSignal(P, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING),PROC_REF(pellet_range))
LAZYADD(pellets, P)
P.fire()
@@ -286,9 +286,9 @@
if(ismob(nade.loc))
shooter = nade.loc
LAZYINITLIST(bodies)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/grenade_dropped)
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/grenade_moved)
- RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/grenade_uncrossed)
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(grenade_dropped))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(grenade_moved))
+ RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED,PROC_REF(grenade_uncrossed))
/// Someone dropped the grenade, so set them to the shooter in case they're on top of it when it goes off
/datum/component/pellet_cloud/proc/grenade_dropped(obj/item/nade, mob/living/slick_willy)
@@ -299,7 +299,7 @@
/datum/component/pellet_cloud/proc/grenade_moved()
LAZYCLEARLIST(bodies)
for(var/mob/living/L in get_turf(parent))
- RegisterSignal(L, COMSIG_PARENT_QDELETING, .proc/on_target_qdel, override=TRUE)
+ RegisterSignal(L, COMSIG_PARENT_QDELETING,PROC_REF(on_target_qdel), override=TRUE)
LAZYADD(bodies, L)
/// Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it
diff --git a/code/datums/components/phantomthief.dm b/code/datums/components/phantomthief.dm
index 6b7e7221c35..767d877151c 100644
--- a/code/datums/components/phantomthief.dm
+++ b/code/datums/components/phantomthief.dm
@@ -3,7 +3,7 @@
/datum/component/wearertargeting/phantomthief
dupe_mode = COMPONENT_DUPE_ALLOWED
signals = list(COMSIG_LIVING_COMBAT_ENABLED, COMSIG_LIVING_COMBAT_DISABLED)
- proctype = .proc/handlefilterstuff
+ proctype = PROC_REF(handlefilterstuff)
var/filter_x
var/filter_y
var/filter_size
diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm
index 91b86adeb51..7c312657186 100644
--- a/code/datums/components/plumbing/_plumbing.dm
+++ b/code/datums/components/plumbing/_plumbing.dm
@@ -25,8 +25,8 @@
reagents = AM.reagents
turn_connects = _turn_connects
- RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED,COMSIG_PARENT_PREQDELETED), .proc/disable)
- RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH), .proc/toggle_active)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED,COMSIG_PARENT_PREQDELETED),PROC_REF(disable))
+ RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH),PROC_REF(toggle_active))
if(start)
enable()
diff --git a/code/datums/components/rad_insulation.dm b/code/datums/components/rad_insulation.dm
index 73d8c29440c..c216350511f 100644
--- a/code/datums/components/rad_insulation.dm
+++ b/code/datums/components/rad_insulation.dm
@@ -6,11 +6,11 @@
return COMPONENT_INCOMPATIBLE
if(protects) // Does this protect things in its contents from being affected?
- RegisterSignal(parent, COMSIG_ATOM_RAD_PROBE, .proc/rad_probe_react)
+ RegisterSignal(parent, COMSIG_ATOM_RAD_PROBE,PROC_REF(rad_probe_react))
if(contamination_proof) // Can this object be contaminated?
- RegisterSignal(parent, COMSIG_ATOM_RAD_CONTAMINATING, .proc/rad_contaminating)
+ RegisterSignal(parent, COMSIG_ATOM_RAD_CONTAMINATING,PROC_REF(rad_contaminating))
if(_amount != 1) // If it's 1 it wont have any impact on radiation passing through anyway
- RegisterSignal(parent, COMSIG_ATOM_RAD_WAVE_PASSING, .proc/rad_pass)
+ RegisterSignal(parent, COMSIG_ATOM_RAD_WAVE_PASSING,PROC_REF(rad_pass))
amount = _amount
diff --git a/code/datums/components/radiation_area.dm b/code/datums/components/radiation_area.dm
index 7689bb7ff34..57b831ba8fd 100644
--- a/code/datums/components/radiation_area.dm
+++ b/code/datums/components/radiation_area.dm
@@ -8,8 +8,8 @@
return COMPONENT_INCOMPATIBLE
if(!isnull(rads_per_second))
rads = rads_per_second
- RegisterSignal(parent, list(COMSIG_AREA_ENTERED), .proc/AddMob)
- RegisterSignal(parent, list(COMSIG_AREA_EXITED), .proc/RemoveMob)
+ RegisterSignal(parent, list(COMSIG_AREA_ENTERED),PROC_REF(AddMob))
+ RegisterSignal(parent, list(COMSIG_AREA_EXITED),PROC_REF(RemoveMob))
/datum/component/radiation_area/proc/AddMob(area/the_area, mob/living/carbon/glowy)
if(!istype(glowy))
diff --git a/code/datums/components/radiation_turf.dm b/code/datums/components/radiation_turf.dm
index 5523feed9b7..d93e87abe20 100644
--- a/code/datums/components/radiation_turf.dm
+++ b/code/datums/components/radiation_turf.dm
@@ -23,12 +23,12 @@
radioactive_things[reff] = ref_n_type[reff]
var/turf/our_turf = parent
our_coordinates = "[our_turf.x]:[our_turf.y]:[our_turf.z]"
- RegisterSignal(parent, list(COMSIG_TURF_CHECK_RADIATION), .proc/im_still_here)
- RegisterSignal(parent, list(COMSIG_TURF_IRRADIATE), .proc/update_rads)
- RegisterSignal(parent, list(COMSIG_ATOM_ENTERED), .proc/AddMob)
- RegisterSignal(parent, list(COMSIG_ATOM_EXITED), .proc/RemoveMob)
- RegisterSignal(parent, list(COMSIG_TURF_CHANGE), .proc/on_turf_change)
- RegisterSignal(SSdcs, list(COMSIG_GLOB_RADIATION_SHOW), .proc/ping_rads)
+ RegisterSignal(parent, list(COMSIG_TURF_CHECK_RADIATION),PROC_REF(im_still_here))
+ RegisterSignal(parent, list(COMSIG_TURF_IRRADIATE),PROC_REF(update_rads))
+ RegisterSignal(parent, list(COMSIG_ATOM_ENTERED),PROC_REF(AddMob))
+ RegisterSignal(parent, list(COMSIG_ATOM_EXITED),PROC_REF(RemoveMob))
+ RegisterSignal(parent, list(COMSIG_TURF_CHANGE),PROC_REF(on_turf_change))
+ RegisterSignal(SSdcs, list(COMSIG_GLOB_RADIATION_SHOW),PROC_REF(ping_rads))
// from this point onwards, we cannot rely on our parent to be our turf.
// So, we'll have to sit here and treat whatever's at our coordinates *as* our parent
@@ -110,7 +110,7 @@
return
thingtoggle = TRUE
blinker.maptext = thingtoggle ? "[rads]" : initial(blinker.maptext)
- addtimer(CALLBACK(src, .proc/unping_rads), 2 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain //*doublepain
+ addtimer(CALLBACK(src,PROC_REF(unping_rads)), 2 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain //*doublepain
/datum/component/radiation_turf/proc/unping_rads()
var/turf/blinker = coords2turf(our_coordinates)
diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm
index 8afa4353b2f..ec8a007f746 100644
--- a/code/datums/components/radioactive.dm
+++ b/code/datums/components/radioactive.dm
@@ -19,10 +19,10 @@
can_contaminate = _can_contaminate
if(istype(parent, /atom))
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/rad_examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(rad_examine))
if(istype(parent, /obj/item))
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/rad_attack)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, .proc/rad_attack)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK,PROC_REF(rad_attack))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ,PROC_REF(rad_attack))
else
CRASH("Something that wasn't an atom was given /datum/component/radioactive")
@@ -33,7 +33,7 @@
//This relies on parent not being a turf or something. IF YOU CHANGE THAT, CHANGE THIS
var/atom/movable/master = parent
master.add_filter("rad_glow", 2, list("type" = "outline", "color" = "#39ff1430", "size" = 2))
- addtimer(CALLBACK(src, .proc/glow_loop, master), rand(1,19))//Things should look uneven
+ addtimer(CALLBACK(src,PROC_REF(glow_loop), master), rand(1,19))//Things should look uneven
START_PROCESSING(SSradiation, src)
diff --git a/code/datums/components/remote_materials.dm b/code/datums/components/remote_materials.dm
index f4b133a0e22..32268ee5bfd 100644
--- a/code/datums/components/remote_materials.dm
+++ b/code/datums/components/remote_materials.dm
@@ -25,11 +25,11 @@ handles linking back and forth.
src.allow_standalone = allow_standalone
after_insert = _after_insert
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(OnAttackBy))
var/turf/T = get_turf(parent)
if (force_connect || (mapload && is_station_level(T.z)))
- addtimer(CALLBACK(src, .proc/LateInitialize))
+ addtimer(CALLBACK(src,PROC_REF(LateInitialize)))
else if (allow_standalone)
_MakeLocal()
diff --git a/code/datums/components/reskin.dm b/code/datums/components/reskin.dm
index 7b7644d4d5f..040db7e0caa 100644
--- a/code/datums/components/reskin.dm
+++ b/code/datums/components/reskin.dm
@@ -30,10 +30,10 @@ GLOBAL_LIST_EMPTY(reskin_list)
if(LAZYLEN(skin_override))
skins = skin_override.Copy()
initialize_skins()
- RegisterSignal(parent, list(COMSIG_CLICK_CTRL_SHIFT), .proc/open_skin_picker)
- RegisterSignal(parent, list(COMSIG_ITEM_RESKINNABLE), .proc/is_reskinnable)
- RegisterSignal(parent, list(COMSIG_ITEM_UPDATE_RESKIN), .proc/update_skin)
- RegisterSignal(parent, list(COMSIG_ITEM_GET_CURRENT_RESKIN), .proc/get_current_skin)
+ RegisterSignal(parent, list(COMSIG_CLICK_CTRL_SHIFT),PROC_REF(open_skin_picker))
+ RegisterSignal(parent, list(COMSIG_ITEM_RESKINNABLE),PROC_REF(is_reskinnable))
+ RegisterSignal(parent, list(COMSIG_ITEM_UPDATE_RESKIN),PROC_REF(update_skin))
+ RegisterSignal(parent, list(COMSIG_ITEM_GET_CURRENT_RESKIN),PROC_REF(get_current_skin))
/datum/component/reskinnable/UnregisterFromParent()
skins = null
@@ -62,7 +62,7 @@ GLOBAL_LIST_EMPTY(reskin_list)
init_skins_if_they_havent_yet()
if(!can_reskin(src, user))
return
- INVOKE_ASYNC(src, .proc/actually_open_skin_picker, user)
+ INVOKE_ASYNC(src,PROC_REF(actually_open_skin_picker), user)
/datum/component/reskinnable/proc/actually_open_skin_picker(mob/user)
var/obj/item/master = parent
@@ -78,7 +78,7 @@ GLOBAL_LIST_EMPTY(reskin_list)
if(!the_icon)
the_icon = my_original_skin.icon
skinnies["[skine.skin]"] = skine.get_preview_image(master)
- var/choice = show_radial_menu(user, master, skinnies, custom_check = CALLBACK(src, .proc/can_reskin, src, user), radius = 40, require_near = TRUE, ultradense = (LAZYLEN(skins) > 7))
+ var/choice = show_radial_menu(user, master, skinnies, custom_check = CALLBACK(src,PROC_REF(can_reskin), src, user), radius = 40, require_near = TRUE, ultradense = (LAZYLEN(skins) > 7))
if(!choice)
return FALSE
if(QDELETED(master))
diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm
index 9cbbbeeb4ae..80ef59334cf 100644
--- a/code/datums/components/riding.dm
+++ b/code/datums/components/riding.dm
@@ -26,9 +26,9 @@
/datum/component/riding/Initialize()
if(!ismovable(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle)
- RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle)
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/vehicle_moved)
+ RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE,PROC_REF(vehicle_mob_buckle))
+ RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE,PROC_REF(vehicle_mob_unbuckle))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(vehicle_moved))
/datum/component/riding/proc/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
var/atom/movable/AM = parent
@@ -207,7 +207,7 @@
to_chat(user, span_notice("You'll need the keys in one of your hands to [drive_verb] [AM]."))
/datum/component/riding/proc/Unbuckle(atom/movable/M)
- addtimer(CALLBACK(parent, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE)
+ addtimer(CALLBACK(parent, TYPE_PROC_REF(/atom/movable/,unbuckle_mob), M), 0, TIMER_UNIQUE)
/datum/component/riding/proc/Process_Spacemove(direction)
var/atom/movable/AM = parent
@@ -229,7 +229,7 @@
/datum/component/riding/human/Initialize()
. = ..()
directional_vehicle_layers = list(TEXT_NORTH = MOB_LOWER_LAYER, TEXT_SOUTH = MOB_UPPER_LAYER, TEXT_EAST = MOB_UPPER_LAYER, TEXT_WEST = MOB_UPPER_LAYER)
- RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee)
+ RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK,PROC_REF(on_host_unarmed_melee))
/datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
var/mob/living/carbon/human/H = parent
diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm
index 9d207b01397..0cfc606af03 100644
--- a/code/datums/components/rotation.dm
+++ b/code/datums/components/rotation.dm
@@ -43,10 +43,10 @@
/datum/component/simple_rotation/proc/add_signals()
if(rotation_flags & ROTATION_ALTCLICK)
- RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/HandRot)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/ExamineMessage)
+ RegisterSignal(parent, COMSIG_CLICK_ALT,PROC_REF(HandRot))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(ExamineMessage))
if(rotation_flags & ROTATION_WRENCH)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/WrenchRot)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(WrenchRot))
/datum/component/simple_rotation/proc/add_verbs()
if(rotation_flags & ROTATION_VERBS)
diff --git a/code/datums/components/second_wind.dm b/code/datums/components/second_wind.dm
index 2396ba1751a..a0f6760307f 100644
--- a/code/datums/components/second_wind.dm
+++ b/code/datums/components/second_wind.dm
@@ -10,10 +10,10 @@
/datum/component/second_wind/Initialize()
if(!ismob(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_MOB_CLIENT_LOGIN), .proc/update_ckey)
- RegisterSignal(parent, list(COMSIG_SECOND_WIND), .proc/open_revive_menu)
- RegisterSignal(parent, list(COMSIG_SECOND_WIND_GRANT), .proc/grant_second_wind)
- RegisterSignal(parent, list(COMSIG_LIVING_BIOLOGICAL_LIFE), .proc/check_living)
+ RegisterSignal(parent, list(COMSIG_MOB_CLIENT_LOGIN),PROC_REF(update_ckey))
+ RegisterSignal(parent, list(COMSIG_SECOND_WIND),PROC_REF(open_revive_menu))
+ RegisterSignal(parent, list(COMSIG_SECOND_WIND_GRANT),PROC_REF(grant_second_wind))
+ RegisterSignal(parent, list(COMSIG_LIVING_BIOLOGICAL_LIFE),PROC_REF(check_living))
/datum/component/second_wind/proc/update_ckey(mob/my_mob, client/logged_in)
if(!isclient(logged_in))
diff --git a/code/datums/components/shielded.dm b/code/datums/components/shielded.dm
index e9dab0f8231..70add169d2c 100644
--- a/code/datums/components/shielded.dm
+++ b/code/datums/components/shielded.dm
@@ -40,11 +40,11 @@
/datum/component/shielded/RegisterWithParent()
. = ..()
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
else //it's a mob
var/mob/living/L = parent
- RegisterSignal(L, COMSIG_LIVING_RUN_BLOCK, .proc/living_block)
+ RegisterSignal(L, COMSIG_LIVING_RUN_BLOCK,PROC_REF(living_block))
holder = L
var/to_add = charges >= 1 ? shield_state : broken_state
if(to_add)
@@ -111,9 +111,9 @@
if(!(accepted_slots & slotdefine2slotbit(slot)))
return
holder = equipper
- RegisterSignal(parent, COMSIG_ITEM_RUN_BLOCK, .proc/on_run_block)
- RegisterSignal(parent, COMSIG_ITEM_CHECK_BLOCK, .proc/on_check_block)
- RegisterSignal(equipper, COMSIG_LIVING_GET_BLOCKING_ITEMS, .proc/include_shield)
+ RegisterSignal(parent, COMSIG_ITEM_RUN_BLOCK,PROC_REF(on_run_block))
+ RegisterSignal(parent, COMSIG_ITEM_CHECK_BLOCK,PROC_REF(on_check_block))
+ RegisterSignal(equipper, COMSIG_LIVING_GET_BLOCKING_ITEMS,PROC_REF(include_shield))
var/to_add = charges >= 1 ? shield_state : broken_state
if(to_add)
var/layer = (holder.layer > MOB_LAYER ? holder.layer : MOB_LAYER) + 0.01
diff --git a/code/datums/components/signal_redirect.dm b/code/datums/components/signal_redirect.dm
index 4de7e99a024..85cfc909e85 100644
--- a/code/datums/components/signal_redirect.dm
+++ b/code/datums/components/signal_redirect.dm
@@ -10,7 +10,7 @@
warning("signals are [list2params(signals)], callback is [_callback]]")
return COMPONENT_INCOMPATIBLE
if(flags & REDIRECT_TRANSFER_WITH_TURF && isturf(parent))
- RegisterSignal(parent, COMSIG_TURF_CHANGE, .proc/turf_change)
+ RegisterSignal(parent, COMSIG_TURF_CHANGE,PROC_REF(turf_change))
RegisterSignal(parent, signals, _callback)
/datum/component/redirect/proc/turf_change(path, new_baseturfs, flags, list/transfers)
diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm
index b2789bbcf1d..4a5aef05b66 100644
--- a/code/datums/components/slippery.dm
+++ b/code/datums/components/slippery.dm
@@ -17,12 +17,12 @@
var/list/slot_whitelist = list(INV_SLOTBIT_OCLOTHING, INV_SLOTBIT_ICLOTHING, INV_SLOTBIT_GLOVES, INV_SLOTBIT_FEET, INV_SLOTBIT_HEAD, INV_SLOTBIT_MASK, INV_SLOTBIT_BELT, INV_SLOTBIT_NECK)
///what we give to connect_loc by default, makes slippable mobs moving over us slip
var/static/list/default_connections = list(
- COMSIG_ATOM_ENTERED = .proc/Slip,
+ COMSIG_ATOM_ENTERED =PROC_REF(Slip),
)
///what we give to connect_loc if we're an item and get equipped by a mob. makes slippable mobs moving over our holder slip
var/static/list/holder_connections = list(
- COMSIG_ATOM_ENTERED = .proc/Slip_on_wearer,
+ COMSIG_ATOM_ENTERED =PROC_REF(Slip_on_wearer),
)
/// The connect_loc_behalf component for the holder_connections list.
@@ -40,10 +40,10 @@
add_connect_loc_behalf_to_parent()
if(ismovable(parent))
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
else
- RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/Slip)
+ RegisterSignal(parent, COMSIG_ATOM_ENTERED,PROC_REF(Slip))
/datum/component/slippery/proc/add_connect_loc_behalf_to_parent()
if(ismovable(parent))
@@ -77,7 +77,7 @@
return
var/mob/living/victim = arrived
if(!(victim.movement_type & (FLYING | FLOATING)) && victim.slip(knockdown_time, parent, lube_flags, paralyze_time, force_drop_items) && callback)
- INVOKE_ASYNC(callback, /datum/callback/.proc/Invoke, victim)
+ INVOKE_ASYNC(callback, TYPE_PROC_REF(/datum/callback/,Invoke), victim)
/*
* Gets called when COMSIG_ITEM_EQUIPPED is sent to parent.
@@ -95,7 +95,7 @@
holder = equipper
qdel(GetComponent(/datum/component/connect_loc_behalf))
AddComponent(/datum/component/connect_loc_behalf, holder, holder_connections)
- RegisterSignal(holder, COMSIG_PARENT_QDELETING, .proc/holder_deleted)
+ RegisterSignal(holder, COMSIG_PARENT_QDELETING,PROC_REF(holder_deleted))
/*
* Detects if the holder mob is deleted.
diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm
index e9e2b25f063..4e6e703bca3 100644
--- a/code/datums/components/spawner.dm
+++ b/code/datums/components/spawner.dm
@@ -107,19 +107,19 @@ GLOBAL_VAR_INIT(debug_spawner_turfs, FALSE)
var/coords = atom2coords(parent)
GLOB.nest_spawn_points -= coords // im here! honest
- RegisterSignal(parent, COMSIG_PARENT_QDELETING, .proc/nest_destroyed)
- RegisterSignal(parent, COMSIG_OBJ_ATTACK_GENERIC, .proc/on_attack_generic)
- RegisterSignal(parent, COMSIG_SPAWNER_COVERED, .proc/coverme)
- RegisterSignal(parent, COMSIG_SPAWNER_UNCOVERED, .proc/uncoverme)
- RegisterSignal(parent, COMSIG_SPAWNER_ABSORB_MOB, .proc/unbirth_mob)
- // RegisterSignal(parent, COMSIG_SPAWNER_EXISTS, .proc/has_spawner)
+ RegisterSignal(parent, COMSIG_PARENT_QDELETING,PROC_REF(nest_destroyed))
+ RegisterSignal(parent, COMSIG_OBJ_ATTACK_GENERIC,PROC_REF(on_attack_generic))
+ RegisterSignal(parent, COMSIG_SPAWNER_COVERED,PROC_REF(coverme))
+ RegisterSignal(parent, COMSIG_SPAWNER_UNCOVERED,PROC_REF(uncoverme))
+ RegisterSignal(parent, COMSIG_SPAWNER_ABSORB_MOB,PROC_REF(unbirth_mob))
+ // RegisterSignal(parent, COMSIG_SPAWNER_EXISTS,PROC_REF(has_spawner))
if(istype(parent, /obj/structure/nest))
var/obj/structure/nest/nest = parent
if(nest.spawned_by_ckey)
am_special = TRUE
if(istype(parent, /obj/structure/nest/special))
am_special = TRUE
- RegisterSignal(parent, COMSIG_SPAWNER_SPAWN_NOW, .proc/spawn_mob_special)
+ RegisterSignal(parent, COMSIG_SPAWNER_SPAWN_NOW,PROC_REF(spawn_mob_special))
// if(SSspawners.use_turf_registration)
// register_turfs()
// else
@@ -137,8 +137,8 @@ GLOBAL_VAR_INIT(debug_spawner_turfs, FALSE)
// /datum/component/spawner/proc/connect_to_turf(turf/trip, debug_color)
// my_turfs |= atom2coords(trip)
-// RegisterSignal(trip, COMSIG_ATOM_ENTERED, .proc/turf_trip)
-// RegisterSignal(trip, COMSIG_TURF_CHANGE, .proc/turf_changed)
+// RegisterSignal(trip, COMSIG_ATOM_ENTERED,PROC_REF(turf_trip))
+// RegisterSignal(trip, COMSIG_TURF_CHANGE,PROC_REF(turf_changed))
// if(SSspawners.debug_spawner_turfs && debug_color)
// trip.add_atom_colour(debug_color, ADMIN_COLOUR_PRIORITY)
diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm
index dfb6932ef74..084adb3ad46 100644
--- a/code/datums/components/spooky.dm
+++ b/code/datums/components/spooky.dm
@@ -2,7 +2,7 @@
var/too_spooky = TRUE //will it spawn a new instrument?
/datum/component/spooky/Initialize()
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/spectral_attack)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK,PROC_REF(spectral_attack))
/datum/component/spooky/proc/spectral_attack(datum/source, mob/living/carbon/C, mob/user)
if(ishuman(user)) //this weapon wasn't meant for mortals.
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index 300f04562bf..900ef8edcaf 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -22,19 +22,19 @@
/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak)
+ RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY),PROC_REF(play_squeak))
if(ismovable(parent))
- RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak)
- RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED), .proc/play_squeak_crossed)
- RegisterSignal(parent, COMSIG_CROSS_SQUEAKED, .proc/delay_squeak)
- RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT),PROC_REF(play_squeak))
+ RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED),PROC_REF(play_squeak_crossed))
+ RegisterSignal(parent, COMSIG_CROSS_SQUEAKED,PROC_REF(delay_squeak))
+ RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING,PROC_REF(disposing_react))
if(isitem(parent))
- RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/play_squeak)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak)
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT),PROC_REF(play_squeak))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF,PROC_REF(use_squeak))
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
if(istype(parent, /obj/item/clothing/shoes))
- RegisterSignal(parent, COMSIG_SHOES_STEP_ACTION, .proc/step_squeak)
+ RegisterSignal(parent, COMSIG_SHOES_STEP_ACTION,PROC_REF(step_squeak))
override_squeak_sounds = custom_sounds
if(chance_override)
@@ -92,7 +92,7 @@
last_squeak = world.time
/datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot)
- RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE)
+ RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING,PROC_REF(disposing_react), TRUE)
/datum/component/squeak/proc/on_drop(datum/source, mob/user)
UnregisterSignal(user, COMSIG_MOVABLE_DISPOSING)
@@ -100,7 +100,7 @@
// Disposal pipes related shit
/datum/component/squeak/proc/disposing_react(datum/source, obj/structure/disposalholder/holder, obj/machinery/disposal/source)
//We don't need to worry about unregistering this signal as it will happen for us automaticaly when the holder is qdeleted
- RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE, .proc/holder_dir_change)
+ RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE,PROC_REF(holder_dir_change))
/datum/component/squeak/proc/holder_dir_change(datum/source, old_dir, new_dir)
//If the dir changes it means we're going through a bend in the pipes, let's pretend we bumped the wall
diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm
index 143c1d70d34..5ac80dd8eb9 100644
--- a/code/datums/components/stationloving.dm
+++ b/code/datums/components/stationloving.dm
@@ -20,11 +20,11 @@
/datum/component/stationloving/Initialize(inform_admins = FALSE, allow_death = FALSE, put_somewhere_random = TRUE, allowed_z = VALIDBALL_Z_LEVELS)
if(!ismovable(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_MOVABLE_Z_CHANGED), .proc/check_in_bounds)
- RegisterSignal(parent, list(COMSIG_MOVABLE_SECLUDED_LOCATION), .proc/relocate)
- RegisterSignal(parent, list(COMSIG_PARENT_PREQDELETED), .proc/check_deletion)
- RegisterSignal(parent, list(COMSIG_ITEM_IMBUE_SOUL), .proc/check_soul_imbue)
- RegisterSignal(parent, list(COMSIG_ITEM_PROCESS), .proc/record_position)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_Z_CHANGED),PROC_REF(check_in_bounds))
+ RegisterSignal(parent, list(COMSIG_MOVABLE_SECLUDED_LOCATION),PROC_REF(relocate))
+ RegisterSignal(parent, list(COMSIG_PARENT_PREQDELETED),PROC_REF(check_deletion))
+ RegisterSignal(parent, list(COMSIG_ITEM_IMBUE_SOUL),PROC_REF(check_soul_imbue))
+ RegisterSignal(parent, list(COMSIG_ITEM_PROCESS),PROC_REF(record_position))
src.allowed_z = allowed_z
src.put_somewhere_random = put_somewhere_random
if(!put_somewhere_random)
diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm
index c81035e687c..76af8941c8b 100644
--- a/code/datums/components/storage/concrete/_concrete.dm
+++ b/code/datums/components/storage/concrete/_concrete.dm
@@ -17,9 +17,9 @@
/datum/component/storage/concrete/Initialize()
. = ..()
- RegisterSignal(parent, COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del)
- RegisterSignal(parent, COMSIG_OBJ_DECONSTRUCT, .proc/on_deconstruct)
- RegisterSignal(parent, COMSIG_OBJ_BREAK, .proc/on_break)
+ RegisterSignal(parent, COMSIG_ATOM_CONTENTS_DEL,PROC_REF(on_contents_del))
+ RegisterSignal(parent, COMSIG_OBJ_DECONSTRUCT,PROC_REF(on_deconstruct))
+ RegisterSignal(parent, COMSIG_OBJ_BREAK,PROC_REF(on_break))
/datum/component/storage/concrete/Destroy()
var/atom/real_location = real_location()
@@ -88,7 +88,7 @@
if(S == src)
return
if(!length(slaves))
- RegisterSignal(parent, COMSIG_ATOM_GET_LOCS, .proc/get_locs_react)
+ RegisterSignal(parent, COMSIG_ATOM_GET_LOCS,PROC_REF(get_locs_react))
slaves += S
diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm
index a503e8882af..ee0d5af43cb 100644
--- a/code/datums/components/storage/concrete/bag_of_holding.dm
+++ b/code/datums/components/storage/concrete/bag_of_holding.dm
@@ -10,7 +10,7 @@
var/list/obj/item/storage/backpack/holding/matching = typecache_filter_list(W.GetAllContents(), typecacheof(/obj/item/storage/backpack/holding))
matching -= A
if(istype(W, /obj/item/storage/backpack/holding) || matching.len)
- INVOKE_ASYNC(src, .proc/do_disaster, W, user)
+ INVOKE_ASYNC(src,PROC_REF(do_disaster), W, user)
. = ..()
/datum/component/storage/concrete/bluespace/bag_of_holding/proc/do_disaster(obj/item/W, mob/living/user)
diff --git a/code/datums/components/storage/concrete/emergency.dm b/code/datums/components/storage/concrete/emergency.dm
index faaeada13d8..5a602a09f4e 100644
--- a/code/datums/components/storage/concrete/emergency.dm
+++ b/code/datums/components/storage/concrete/emergency.dm
@@ -5,7 +5,7 @@
/datum/component/storage/concrete/emergency/Initialize()
. = ..()
- RegisterSignal(parent, COMSIG_ATOM_EMAG_ACT, .proc/unlock_me)
+ RegisterSignal(parent, COMSIG_ATOM_EMAG_ACT,PROC_REF(unlock_me))
/datum/component/storage/concrete/emergency/on_attack_hand(datum/source, mob/user)
var/atom/A = parent
diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm
index b357da95162..a32785d1c79 100644
--- a/code/datums/components/storage/storage.dm
+++ b/code/datums/components/storage/storage.dm
@@ -97,39 +97,39 @@
if(master)
change_master(master)
- RegisterSignal(parent, COMSIG_CONTAINS_STORAGE, .proc/on_check)
- RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED, .proc/check_locked)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW, .proc/signal_show_attempt)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/signal_insertion_attempt)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT, .proc/signal_can_insert)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE, .proc/signal_take_type)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE, .proc/signal_fill_type)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE, .proc/set_locked)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE, .proc/signal_take_obj)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY, .proc/signal_quick_empty)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM, .proc/signal_hide_attempt)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL, .proc/close_all)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY, .proc/signal_return_inv)
-
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby)
-
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand)
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW, .proc/on_attack_hand)
- RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/emp_act)
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, .proc/show_to_ghost)
- RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/refresh_mob_views)
- RegisterSignal(parent, COMSIG_ATOM_EXITED, .proc/_remove_and_refresh)
-
- RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/attack_self)
- RegisterSignal(parent, COMSIG_ITEM_PICKUP, .proc/signal_on_pickup)
-
- RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/close_all)
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/check_views)
-
- RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_alt_click)
- RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto)
- RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO, .proc/mousedrop_receive)
+ RegisterSignal(parent, COMSIG_CONTAINS_STORAGE,PROC_REF(on_check))
+ RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED,PROC_REF(check_locked))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW,PROC_REF(signal_show_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT,PROC_REF(signal_insertion_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT,PROC_REF(signal_can_insert))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE,PROC_REF(signal_take_type))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE,PROC_REF(signal_fill_type))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE,PROC_REF(set_locked))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE,PROC_REF(signal_take_obj))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY,PROC_REF(signal_quick_empty))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM,PROC_REF(signal_hide_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL,PROC_REF(close_all))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY,PROC_REF(signal_return_inv))
+
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(attackby))
+
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND,PROC_REF(on_attack_hand))
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW,PROC_REF(on_attack_hand))
+ RegisterSignal(parent, COMSIG_ATOM_EMP_ACT,PROC_REF(emp_act))
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST,PROC_REF(show_to_ghost))
+ RegisterSignal(parent, COMSIG_ATOM_ENTERED,PROC_REF(refresh_mob_views))
+ RegisterSignal(parent, COMSIG_ATOM_EXITED,PROC_REF(_remove_and_refresh))
+
+ RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK,PROC_REF(preattack_intercept))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF,PROC_REF(attack_self))
+ RegisterSignal(parent, COMSIG_ITEM_PICKUP,PROC_REF(signal_on_pickup))
+
+ RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW,PROC_REF(close_all))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(check_views))
+
+ RegisterSignal(parent, COMSIG_CLICK_ALT,PROC_REF(on_alt_click))
+ RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO,PROC_REF(mousedrop_onto))
+ RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO,PROC_REF(mousedrop_receive))
update_actions()
@@ -156,7 +156,7 @@
return
var/obj/item/I = parent
modeswitch_action = new(I)
- RegisterSignal(modeswitch_action, COMSIG_ACTION_TRIGGER, .proc/action_trigger)
+ RegisterSignal(modeswitch_action, COMSIG_ACTION_TRIGGER,PROC_REF(action_trigger))
if(I.obj_flags & IN_INVENTORY)
var/mob/M = I.loc
if(!istype(M))
@@ -226,7 +226,7 @@
return
var/my_bar = SSprogress_bars.add_bar(I.loc, list(), len, FALSE, FALSE)
var/list/rejections = list()
- while(do_after(M, 10, TRUE, parent, FALSE, CALLBACK(src, .proc/handle_mass_pickup, things, I.loc, rejections, my_bar)))
+ while(do_after(M, 10, TRUE, parent, FALSE, CALLBACK(src,PROC_REF(handle_mass_pickup), things, I.loc, rejections, my_bar)))
stoplag(1)
SSprogress_bars.remove_bar(my_bar)
to_chat(M, span_notice("You put everything you could [insert_preposition] [parent]."))
@@ -284,7 +284,7 @@
var/turf/T = get_turf(A)
var/list/things = get_quickempty_list()
var/my_bar = SSprogress_bars.add_bar(T, list(), length(things), FALSE, FALSE)
- while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, my_bar)))
+ while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src,PROC_REF(mass_remove_from_storage), T, things, my_bar)))
stoplag(1)
SSprogress_bars.remove_bar(my_bar)
A.do_squish(0.8, 1.2)
diff --git a/code/datums/components/storage/ui.dm b/code/datums/components/storage/ui.dm
index 8bd7d9b8b3b..20893acec6c 100644
--- a/code/datums/components/storage/ui.dm
+++ b/code/datums/components/storage/ui.dm
@@ -11,7 +11,7 @@
else
var/datum/numbered_display/ND = .[I.type]
ND.number++
- . = sortTim(., /proc/cmp_numbered_displays_name_asc, associative = TRUE)
+ . = sortTim(., GLOBAL_PROC_REF(cmp_numbered_displays_name_asc), associative = TRUE)
/**
* Orients all objects in legacy mode, and returns the objects to show to the user.
@@ -289,7 +289,7 @@
else if(current_maxscreensize)
maxallowedscreensize = current_maxscreensize
// we got screen size, register signal
- RegisterSignal(M, COMSIG_MOB_CLIENT_LOGOUT, .proc/on_logout, override = TRUE)
+ RegisterSignal(M, COMSIG_MOB_CLIENT_LOGOUT,PROC_REF(on_logout), override = TRUE)
if(M.active_storage != src)
if(M.active_storage)
M.active_storage.ui_hide(M)
diff --git a/code/datums/components/summoning.dm b/code/datums/components/summoning.dm
index 054acf62bae..4a49c6139a8 100644
--- a/code/datums/components/summoning.dm
+++ b/code/datums/components/summoning.dm
@@ -26,11 +26,11 @@
/datum/component/summoning/RegisterWithParent()
. = ..()
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT,PROC_REF(projectile_hit))
else if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK,PROC_REF(item_afterattack))
else if(ishostile(parent))
- RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget)
+ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET,PROC_REF(hostile_attackingtarget))
/datum/component/summoning/UnregisterFromParent()
. = ..()
@@ -63,7 +63,7 @@
spawned_mobs += L
if(faction != null)
L.faction = faction
- RegisterSignal(L, COMSIG_MOB_DEATH, .proc/on_spawned_death) // so we can remove them from the list, etc (for mobs with corpses)
+ RegisterSignal(L, COMSIG_MOB_DEATH,PROC_REF(on_spawned_death)) // so we can remove them from the list, etc (for mobs with corpses)
playsound(spawn_location,spawn_sound, 50, 1)
spawn_location.visible_message(span_danger("[L] [spawn_text]."))
diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm
index 5d9f5da833f..098e31e16ea 100644
--- a/code/datums/components/swarming.dm
+++ b/code/datums/components/swarming.dm
@@ -8,9 +8,9 @@
offset_x = rand(-max_x, max_x)
offset_y = rand(-max_y, max_y)
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/join_swarm)
- RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/leave_swarm)
- RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/leave_swarm)
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED,PROC_REF(join_swarm))
+ RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED,PROC_REF(leave_swarm))
+ RegisterSignal(parent, COMSIG_MOB_DEATH,PROC_REF(leave_swarm))
/datum/component/swarming/Destroy()
if(is_swarming)
diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 7230e72814b..21ff429acf5 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -51,7 +51,7 @@
var/mob/living/carbon/P = parent
to_chat(P, span_notice("You are now able to launch tackles! You can do so by activating throw intent, and clicking on your target with an empty hand."))
- addtimer(CALLBACK(src, .proc/resetTackle), max(base_knockdown, 3 SECONDS), TIMER_STOPPABLE)
+ addtimer(CALLBACK(src,PROC_REF(resetTackle)), max(base_knockdown, 3 SECONDS), TIMER_STOPPABLE)
/datum/component/tackler/Destroy()
var/mob/living/carbon/P = parent
@@ -60,9 +60,9 @@
..()
/datum/component/tackler/RegisterWithParent()
- RegisterSignal(parent, COMSIG_MOB_CLICKON, .proc/checkTackle)
- RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/sack)
- RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/registerTackle)
+ RegisterSignal(parent, COMSIG_MOB_CLICKON,PROC_REF(checkTackle))
+ RegisterSignal(parent, COMSIG_MOVABLE_IMPACT,PROC_REF(sack))
+ RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW,PROC_REF(registerTackle))
/datum/component/tackler/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_MOB_CLICKON, COMSIG_MOVABLE_IMPACT, COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_POST_THROW))
@@ -104,7 +104,7 @@
return
user.tackling = TRUE
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/checkObstacle, TRUE)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(checkObstacle), TRUE)
playsound(user, 'sound/weapons/thudswoosh.ogg', 40, TRUE, -1)
var/leap_word = iscatperson(user) ? "pounce" : "leap" ///If cat, "pounce" instead of "leap".
@@ -121,7 +121,7 @@
user.adjustStaminaLoss(stamina_cost)
user.throw_at(A, range, speed, user, TRUE)
user.toggle_throw_mode()
- addtimer(CALLBACK(src, .proc/resetTackle), max(base_knockdown, 3 SECONDS), TIMER_STOPPABLE)
+ addtimer(CALLBACK(src,PROC_REF(resetTackle)), max(base_knockdown, 3 SECONDS), TIMER_STOPPABLE)
return(COMSIG_MOB_CANCEL_CLICKON)
/**
diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm
index 251272ac2e9..d71280cfd62 100644
--- a/code/datums/components/thermite.dm
+++ b/code/datums/components/thermite.dm
@@ -34,9 +34,9 @@
overlay = mutable_appearance('icons/effects/effects.dmi', "thermite")
master.add_overlay(overlay)
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby_react)
- RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, .proc/flame_react)
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT,PROC_REF(clean_react))
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(attackby_react))
+ RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT,PROC_REF(flame_react))
/datum/component/thermite/Destroy()
var/turf/master = parent
diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm
index 21b24c57eb7..13ba65c07d4 100644
--- a/code/datums/components/twohanded.dm
+++ b/code/datums/components/twohanded.dm
@@ -69,13 +69,13 @@
// register signals withthe parent item
/datum/component/two_handed/RegisterWithParent()
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/on_attack_self)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/on_attack)
- RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, .proc/on_update_icon)
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_moved)
- RegisterSignal(parent, COMSIG_ITEM_SHARPEN_ACT, .proc/on_sharpen)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF,PROC_REF(on_attack_self))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK,PROC_REF(on_attack))
+ RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON,PROC_REF(on_update_icon))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED,PROC_REF(on_moved))
+ RegisterSignal(parent, COMSIG_ITEM_SHARPEN_ACT,PROC_REF(on_sharpen))
// Remove all siginals registered to the parent item
/datum/component/two_handed/UnregisterFromParent()
@@ -143,7 +143,7 @@
if(SEND_SIGNAL(parent, COMSIG_TWOHANDED_WIELD, user) & COMPONENT_TWOHANDED_BLOCK_WIELD)
return // blocked wield from item
wielded = TRUE
- RegisterSignal(user, COMSIG_MOB_SWAP_HANDS, .proc/on_swap_hands)
+ RegisterSignal(user, COMSIG_MOB_SWAP_HANDS,PROC_REF(on_swap_hands))
// update item stats and name
var/obj/item/parent_item = parent
@@ -170,7 +170,7 @@
offhand_item.name = "[parent_item.name] - offhand"
offhand_item.desc = "Your second grip on [parent_item]."
offhand_item.wielded = TRUE
- RegisterSignal(offhand_item, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(offhand_item, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
user.put_in_inactive_hand(offhand_item)
/**
diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm
index efdb6459056..5d9d2a9dc25 100644
--- a/code/datums/components/uplink.dm
+++ b/code/datums/components/uplink.dm
@@ -35,19 +35,19 @@ GLOBAL_LIST_EMPTY(uplinks)
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(OnAttackBy))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF,PROC_REF(interact))
if(istype(parent, /obj/item/implant))
- RegisterSignal(parent, COMSIG_IMPLANT_ACTIVATED, .proc/implant_activation)
- RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING, .proc/implanting)
- RegisterSignal(parent, COMSIG_IMPLANT_OTHER, .proc/old_implant)
- RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK, .proc/new_implant)
+ RegisterSignal(parent, COMSIG_IMPLANT_ACTIVATED,PROC_REF(implant_activation))
+ RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING,PROC_REF(implanting))
+ RegisterSignal(parent, COMSIG_IMPLANT_OTHER,PROC_REF(old_implant))
+ RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK,PROC_REF(new_implant))
else if(istype(parent, /obj/item/pda))
- RegisterSignal(parent, COMSIG_PDA_CHANGE_RINGTONE, .proc/new_ringtone)
+ RegisterSignal(parent, COMSIG_PDA_CHANGE_RINGTONE,PROC_REF(new_ringtone))
else if(istype(parent, /obj/item/radio))
- RegisterSignal(parent, COMSIG_RADIO_NEW_FREQUENCY, .proc/new_frequency)
+ RegisterSignal(parent, COMSIG_RADIO_NEW_FREQUENCY,PROC_REF(new_frequency))
else if(istype(parent, /obj/item/pen))
- RegisterSignal(parent, COMSIG_PEN_ROTATED, .proc/pen_rotation)
+ RegisterSignal(parent, COMSIG_PEN_ROTATED,PROC_REF(pen_rotation))
GLOB.uplinks += src
if(istype(traitor_class))
diff --git a/code/datums/components/virtual_reality.dm b/code/datums/components/virtual_reality.dm
index 072c6b3fa11..ef0c4f3de94 100644
--- a/code/datums/components/virtual_reality.dm
+++ b/code/datums/components/virtual_reality.dm
@@ -50,12 +50,12 @@
if(!quit_action)
quit_action = new
quit_action.Grant(M)
- RegisterSignal(quit_action, COMSIG_ACTION_TRIGGER, .proc/action_trigger)
- RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over)
- RegisterSignal(M, COMSIG_MOB_GHOSTIZE, .proc/be_a_quitter)
- RegisterSignal(M, COMSIG_MOB_KEY_CHANGE, .proc/on_player_transfer)
- RegisterSignal(current_mind, COMSIG_MIND_TRANSFER, .proc/on_player_transfer)
- RegisterSignal(current_mind, COMSIG_PRE_MIND_TRANSFER, .proc/pre_player_transfer)
+ RegisterSignal(quit_action, COMSIG_ACTION_TRIGGER,PROC_REF(action_trigger))
+ RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING),PROC_REF(game_over))
+ RegisterSignal(M, COMSIG_MOB_GHOSTIZE,PROC_REF(be_a_quitter))
+ RegisterSignal(M, COMSIG_MOB_KEY_CHANGE,PROC_REF(on_player_transfer))
+ RegisterSignal(current_mind, COMSIG_MIND_TRANSFER,PROC_REF(on_player_transfer))
+ RegisterSignal(current_mind, COMSIG_PRE_MIND_TRANSFER,PROC_REF(pre_player_transfer))
if(mastermind?.current)
mastermind.current.audiovisual_redirect = M
ADD_TRAIT(M, TRAIT_NO_MIDROUND_ANTAG, VIRTUAL_REALITY_TRAIT)
@@ -87,9 +87,9 @@
M.transfer_ckey(vr_M, FALSE)
mastermind = M.mind
mastermind.current.audiovisual_redirect = parent
- RegisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER, .proc/switch_player)
- RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over)
- RegisterSignal(M, COMSIG_MOB_PRE_PLAYER_CHANGE, .proc/player_hijacked)
+ RegisterSignal(mastermind, COMSIG_PRE_MIND_TRANSFER,PROC_REF(switch_player))
+ RegisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING),PROC_REF(game_over))
+ RegisterSignal(M, COMSIG_MOB_PRE_PLAYER_CHANGE,PROC_REF(player_hijacked))
SStgui.close_user_uis(vr_M, src)
session_paused = FALSE
return TRUE
@@ -114,8 +114,8 @@
quit()
return COMPONENT_STOP_MIND_TRANSFER
UnregisterSignal(old_mob, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING, COMSIG_MOB_PRE_PLAYER_CHANGE))
- RegisterSignal(new_mob, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING), .proc/game_over)
- RegisterSignal(new_mob, COMSIG_MOB_PRE_PLAYER_CHANGE, .proc/player_hijacked)
+ RegisterSignal(new_mob, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING),PROC_REF(game_over))
+ RegisterSignal(new_mob, COMSIG_MOB_PRE_PLAYER_CHANGE,PROC_REF(player_hijacked))
old_mob.audiovisual_redirect = null
new_mob.audiovisual_redirect = parent
diff --git a/code/datums/components/waddling.dm b/code/datums/components/waddling.dm
index 661ec32b2fd..fdc9e563f45 100644
--- a/code/datums/components/waddling.dm
+++ b/code/datums/components/waddling.dm
@@ -15,7 +15,7 @@
up_waddle_time = amount_to_bob_up
if(!isnull(amount_to_bob_side))
side_waddle_time = amount_to_bob_side
- RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Waddle)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED),PROC_REF(Waddle))
/datum/component/waddling/proc/UpdateFromPrefs(datum/preferences/P)
if(!isnull(P))
diff --git a/code/datums/components/wearertargeting.dm b/code/datums/components/wearertargeting.dm
index 4760757701f..1b37dbde200 100644
--- a/code/datums/components/wearertargeting.dm
+++ b/code/datums/components/wearertargeting.dm
@@ -3,14 +3,14 @@
/datum/component/wearertargeting
var/list/valid_slots = list()
var/list/signals = list()
- var/proctype = .proc/pass
+ var/proctype = PROC_REF(pass)
var/mobtype = /mob/living
/datum/component/wearertargeting/Initialize()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
/datum/component/wearertargeting/proc/on_equip(datum/source, mob/equipper, slot)
if((slot in valid_slots) && istype(equipper, mobtype))
diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm
index 6b3660edf0f..35eed97b26a 100644
--- a/code/datums/components/wet_floor.dm
+++ b/code/datums/components/wet_floor.dm
@@ -29,13 +29,13 @@
permanent = _permanent
if(!permanent)
START_PROCESSING(SSwet_floors, src)
- addtimer(CALLBACK(src, .proc/gc, TRUE), 1) //GC after initialization.
+ addtimer(CALLBACK(src,PROC_REF(gc), TRUE), 1) //GC after initialization.
last_process = world.time
/datum/component/wet_floor/RegisterWithParent()
. = ..()
- RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet)
- RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry)
+ RegisterSignal(parent, COMSIG_TURF_IS_WET,PROC_REF(is_wet))
+ RegisterSignal(parent, COMSIG_TURF_MAKE_DRY,PROC_REF(dry))
/datum/component/wet_floor/UnregisterFromParent()
. = ..()
@@ -96,7 +96,7 @@
qdel(parent.GetComponent(/datum/component/slippery))
return
- parent.LoadComponent(/datum/component/slippery, intensity, lube_flags, CALLBACK(src, .proc/AfterSlip))
+ parent.LoadComponent(/datum/component/slippery, intensity, lube_flags, CALLBACK(src,PROC_REF(AfterSlip)))
/datum/component/wet_floor/proc/dry(datum/source, strength = TURF_WET_WATER, immediate = FALSE, duration_decrease = INFINITY)
for(var/i in time_left_list)
diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm
index 406dca2b19a..a0eb1741887 100644
--- a/code/datums/dash_weapon.dm
+++ b/code/datums/dash_weapon.dm
@@ -39,7 +39,7 @@
spot1.Beam(spot2,beam_effect,time=20)
current_charges--
holder.update_action_buttons_icon()
- addtimer(CALLBACK(src, .proc/charge), charge_rate)
+ addtimer(CALLBACK(src,PROC_REF(charge)), charge_rate)
/datum/action/innate/dash/proc/charge()
current_charges = clamp(current_charges + 1, 0, max_charges)
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index 236fdc32d5b..d2d6babc112 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -98,7 +98,7 @@
advance_diseases += P
var/replace_num = advance_diseases.len + 1 - DISEASE_LIMIT //amount of diseases that need to be removed to fit this one
if(replace_num > 0)
- sortTim(advance_diseases, /proc/cmp_advdisease_resistance_asc)
+ sortTim(advance_diseases, GLOBAL_PROC_REF(cmp_advdisease_resistance_asc))
for(var/i in 1 to replace_num)
var/datum/disease/advance/competition = advance_diseases[i]
if(totalTransmittable() > competition.totalResistance())
diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm
index cf15ec407ac..55bb7ee563c 100644
--- a/code/datums/diseases/advance/symptoms/cough.dm
+++ b/code/datums/diseases/advance/symptoms/cough.dm
@@ -68,9 +68,9 @@ BONUS
to_chat(M, "[pick("You have a coughing fit!", "You can't stop coughing!")]")
M.Stun(20)
M.emote("cough")
- addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 6)
- addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 12)
- addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 18)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/,emote), "cough"), 6)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/,emote), "cough"), 12)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/,emote), "cough"), 18)
if(infective && M.CanSpreadAirborneDisease())
A.spread(1)
diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm
index 52234633cd7..ed91ed6ae81 100644
--- a/code/datums/diseases/advance/symptoms/heal.dm
+++ b/code/datums/diseases/advance/symptoms/heal.dm
@@ -274,15 +274,15 @@
else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma)
to_chat(M, span_warning("You feel yourself slip into a regenerative coma..."))
active_coma = TRUE
- addtimer(CALLBACK(src, .proc/coma, M), 60)
+ addtimer(CALLBACK(src,PROC_REF(coma), M), 60)
/datum/symptom/heal/coma/proc/coma(mob/living/M)
if(deathgasp)
- INVOKE_ASYNC(M, /mob/living.proc/emote, "deathgasp")
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/mob/living,emote), "deathgasp")
M.fakedeath("regenerative_coma", TRUE)
M.update_stat()
M.update_mobility()
- addtimer(CALLBACK(src, .proc/uncoma, M), 300)
+ addtimer(CALLBACK(src,PROC_REF(uncoma), M), 300)
/datum/symptom/heal/coma/proc/uncoma(mob/living/M)
if(!active_coma)
diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm
index 9e5cc3bc16a..6180e1442b7 100644
--- a/code/datums/diseases/advance/symptoms/shedding.dm
+++ b/code/datums/diseases/advance/symptoms/shedding.dm
@@ -40,11 +40,11 @@ BONUS
if(3, 4)
if(!(H.hair_style == "Bald") && !(H.hair_style == "Balding Hair"))
to_chat(H, span_warning("Your hair starts to fall out in clumps..."))
- addtimer(CALLBACK(src, .proc/Shed, H, FALSE), 50)
+ addtimer(CALLBACK(src,PROC_REF(Shed), H, FALSE), 50)
if(5)
if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald"))
to_chat(H, span_warning("Your hair starts to fall out in clumps..."))
- addtimer(CALLBACK(src, .proc/Shed, H, TRUE), 50)
+ addtimer(CALLBACK(src,PROC_REF(Shed), H, TRUE), 50)
/datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald)
if(fullbald)
diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm
index 323242a2b45..e025ac65e0a 100644
--- a/code/datums/diseases/pierrot_throat.dm
+++ b/code/datums/diseases/pierrot_throat.dm
@@ -28,7 +28,7 @@
affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) , forced = "pierrot's throat")
/datum/disease/pierrot_throat/after_add()
- RegisterSignal(affected_mob, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(affected_mob, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/disease/pierrot_throat/proc/handle_speech(datum/source, list/speech_args)
var/message = speech_args[SPEECH_MESSAGE]
diff --git a/code/datums/elements/_element.dm b/code/datums/elements/_element.dm
index fc469100074..9e8025af1da 100644
--- a/code/datums/elements/_element.dm
+++ b/code/datums/elements/_element.dm
@@ -21,7 +21,7 @@
return ELEMENT_INCOMPATIBLE
SEND_SIGNAL(target, COMSIG_ELEMENT_ATTACH, src)
if(element_flags & ELEMENT_DETACH)
- RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/Detach, override = TRUE)
+ RegisterSignal(target, COMSIG_PARENT_QDELETING,PROC_REF(Detach), override = TRUE)
/// Deactivates the functionality defines by the element on the given datum
/datum/element/proc/Detach(datum/source, force)
diff --git a/code/datums/elements/art.dm b/code/datums/elements/art.dm
index 70833225ea9..44d976e9224 100644
--- a/code/datums/elements/art.dm
+++ b/code/datums/elements/art.dm
@@ -14,13 +14,13 @@
return ELEMENT_INCOMPATIBLE
impressiveness = impress
if(isobj(target))
- RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_obj_examine)
+ RegisterSignal(target, COMSIG_PARENT_EXAMINE,PROC_REF(on_obj_examine))
if(isstructure(target))
- RegisterSignal(target, COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand)
+ RegisterSignal(target, COMSIG_ATOM_ATTACK_HAND,PROC_REF(on_attack_hand))
if(isitem(target))
- RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF, .proc/apply_moodlet)
+ RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF,PROC_REF(apply_moodlet))
else
- RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_other_examine)
+ RegisterSignal(target, COMSIG_PARENT_EXAMINE,PROC_REF(on_other_examine))
/datum/element/art/Detach(datum/target)
UnregisterSignal(target, list(COMSIG_PARENT_EXAMINE, COMSIG_ATOM_ATTACK_HAND, COMSIG_ITEM_ATTACK_SELF))
diff --git a/code/datums/elements/beauty.dm b/code/datums/elements/beauty.dm
index f54235f316d..83b82fe3a4a 100644
--- a/code/datums/elements/beauty.dm
+++ b/code/datums/elements/beauty.dm
@@ -12,8 +12,8 @@
beauty = beautyamount
if(ismovable(target))
- RegisterSignal(target, COMSIG_ENTER_AREA, .proc/enter_area, override = TRUE)
- RegisterSignal(target, COMSIG_EXIT_AREA, .proc/exit_area, override = TRUE)
+ RegisterSignal(target, COMSIG_ENTER_AREA,PROC_REF(enter_area), override = TRUE)
+ RegisterSignal(target, COMSIG_EXIT_AREA,PROC_REF(exit_area), override = TRUE)
var/area/A = get_area(target)
if(A)
diff --git a/code/datums/elements/bsa_blocker.dm b/code/datums/elements/bsa_blocker.dm
index 61140ad0ed5..c79960405e1 100644
--- a/code/datums/elements/bsa_blocker.dm
+++ b/code/datums/elements/bsa_blocker.dm
@@ -3,7 +3,7 @@
/datum/element/bsa_blocker/Attach(datum/target)
if(!isatom(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_ATOM_BSA_BEAM, .proc/block_bsa)
+ RegisterSignal(target, COMSIG_ATOM_BSA_BEAM,PROC_REF(block_bsa))
return ..()
/datum/element/bsa_blocker/proc/block_bsa()
diff --git a/code/datums/elements/cleaning.dm b/code/datums/elements/cleaning.dm
index 1c67d4ea068..c096f246bc7 100644
--- a/code/datums/elements/cleaning.dm
+++ b/code/datums/elements/cleaning.dm
@@ -2,7 +2,7 @@
. = ..()
if(!ismovable(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/Clean)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED,PROC_REF(Clean))
/datum/element/cleaning/Detach(datum/target)
. = ..()
diff --git a/code/datums/elements/connect_loc.dm b/code/datums/elements/connect_loc.dm
index fee9072f751..7590588a7db 100644
--- a/code/datums/elements/connect_loc.dm
+++ b/code/datums/elements/connect_loc.dm
@@ -14,7 +14,7 @@
src.connections = connections
- RegisterSignal(listener, COMSIG_MOVABLE_MOVED, .proc/on_moved, override = TRUE)
+ RegisterSignal(listener, COMSIG_MOVABLE_MOVED,PROC_REF(on_moved), override = TRUE)
update_signals(listener)
/datum/element/connect_loc/Detach(atom/movable/listener)
diff --git a/code/datums/elements/debris.dm b/code/datums/elements/debris.dm
index 993dc342562..29f89317b17 100644
--- a/code/datums/elements/debris.dm
+++ b/code/datums/elements/debris.dm
@@ -46,7 +46,7 @@
debris_velocity = _debris_velocity
debris_amount = _debris_amount
debris_scale = _debris_scale
- RegisterSignal(target, COMSIG_ATOM_BULLET_ACT,.proc/register_for_impact)
+ RegisterSignal(target, COMSIG_ATOM_BULLET_ACT, PROC_REF(register_for_impact))
/datum/element/debris/Detach(datum/source, force)
. = ..()
@@ -55,7 +55,7 @@
/datum/element/debris/proc/register_for_impact(datum/source, what_should_be_a_projectile) // WHY DOES THIS NOT FUCKING WORK, WHY CAN I NOT JUST FUCKING TELL THIS WHAT THE VARIABLE TYPE IS HERE
SIGNAL_HANDLER
var/obj/item/projectile/proj = what_should_be_a_projectile
- INVOKE_ASYNC(src, .proc/on_impact, source, proj)
+ INVOKE_ASYNC(src, PROC_REF(on_impact), source, proj)
/datum/element/debris/proc/on_impact(datum/source, obj/item/projectile/P)
var/angle = round(Get_Angle(P.starting, source), 1)
@@ -79,7 +79,7 @@
debris_visuals.particles.spawning = debris_amount
debris_visuals.particles.scale = debris_scale
smoke_visuals.layer = ABOVE_OBJ_LAYER + 0.01
- addtimer(CALLBACK(src, .proc/remove_ping, src, smoke_visuals, debris_visuals), 0.7 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(remove_ping), src, smoke_visuals, debris_visuals), 0.7 SECONDS)
/datum/element/debris/proc/remove_ping(hit, obj/effect/abstract/particle_holder/smoke_visuals, obj/effect/abstract/particle_holder/debris_visuals)
QDEL_NULL(smoke_visuals)
diff --git a/code/datums/elements/decal.dm b/code/datums/elements/decal.dm
index a20d46c813b..7cc9c42b7b5 100644
--- a/code/datums/elements/decal.dm
+++ b/code/datums/elements/decal.dm
@@ -27,12 +27,12 @@
if(!num_decals_per_atom[A])
if(first_dir)
- RegisterSignal(A, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react)
+ RegisterSignal(A, COMSIG_ATOM_DIR_CHANGE,PROC_REF(rotate_react))
if(cleanable)
- RegisterSignal(A, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react)
+ RegisterSignal(A, COMSIG_COMPONENT_CLEAN_ACT,PROC_REF(clean_react))
if(description)
- RegisterSignal(A, COMSIG_PARENT_EXAMINE, .proc/examine)
- RegisterSignal(A, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_overlay, TRUE)
+ RegisterSignal(A, COMSIG_PARENT_EXAMINE,PROC_REF(examine))
+ RegisterSignal(A, COMSIG_ATOM_UPDATE_OVERLAYS,PROC_REF(apply_overlay), TRUE)
num_decals_per_atom[A]++
apply(A)
@@ -51,9 +51,9 @@
if(target.flags_1 & INITIALIZED_1)
target.update_icon() //could use some queuing here now maybe.
else if(!QDELETED(target) && num_decals_per_atom[target] == 1)
- RegisterSignal(target, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE, .proc/late_update_icon)
+ RegisterSignal(target, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE,PROC_REF(late_update_icon))
if(isitem(target))
- addtimer(CALLBACK(target, /obj/item/.proc/update_slot_icon), 0, TIMER_UNIQUE)
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/obj/item/,update_slot_icon)), 0, TIMER_UNIQUE)
/datum/element/decal/proc/late_update_icon(atom/source)
source.update_icon()
diff --git a/code/datums/elements/drag_pickup.dm b/code/datums/elements/drag_pickup.dm
index 7501d552c47..480f65339d3 100644
--- a/code/datums/elements/drag_pickup.dm
+++ b/code/datums/elements/drag_pickup.dm
@@ -9,7 +9,7 @@
/datum/element/drag_pickup/Attach(datum/target)
if(!ismovable(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_MOUSEDROP_ONTO, .proc/pick_up)
+ RegisterSignal(target, COMSIG_MOUSEDROP_ONTO,PROC_REF(pick_up))
return ..()
/datum/element/drag_pickup/Detach(datum/source)
@@ -23,7 +23,7 @@
return
if(over == picker)
- INVOKE_ASYNC(picker, /mob/.proc/put_in_hands, source)
+ INVOKE_ASYNC(picker, TYPE_PROC_REF(/mob/,put_in_hands), source)
else if(istype(over, /atom/movable/screen/inventory/hand))
var/atom/movable/screen/inventory/hand/Selected_hand = over
picker.putItemFromInventoryInHandIfPossible(source, Selected_hand.held_index)
diff --git a/code/datums/elements/dusts_on_leaving_area.dm b/code/datums/elements/dusts_on_leaving_area.dm
index 7b1807a15c4..dd22542bfed 100644
--- a/code/datums/elements/dusts_on_leaving_area.dm
+++ b/code/datums/elements/dusts_on_leaving_area.dm
@@ -8,7 +8,7 @@
if(!ismob(target))
return ELEMENT_INCOMPATIBLE
area_types = types
- RegisterSignal(target,COMSIG_ENTER_AREA,.proc/check_dust)
+ RegisterSignal(target,COMSIG_ENTER_AREA, PROC_REF(check_dust))
/datum/element/dusts_on_leaving_area/Detach(mob/M)
. = ..()
diff --git a/code/datums/elements/dwarfism.dm b/code/datums/elements/dwarfism.dm
index fefbe4fbe79..edd00f690b3 100644
--- a/code/datums/elements/dwarfism.dm
+++ b/code/datums/elements/dwarfism.dm
@@ -21,7 +21,7 @@
else
L.transform = L.transform.Scale(1, SHORT)
attached_targets[target] = comsig_target
- RegisterSignal(target, comsig, .proc/check_loss) //Second arg of the signal will be checked against the comsig_target.
+ RegisterSignal(target, comsig,PROC_REF(check_loss)) //Second arg of the signal will be checked against the comsig_target.
/datum/element/dwarfism/proc/check_loss(mob/living/L, comsig_target)
if(attached_targets[L] == comsig_target)
diff --git a/code/datums/elements/earhealing.dm b/code/datums/elements/earhealing.dm
index 91c2120fc2c..4747d9765e8 100644
--- a/code/datums/elements/earhealing.dm
+++ b/code/datums/elements/earhealing.dm
@@ -11,7 +11,7 @@
if(!isitem(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged)
+ RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED),PROC_REF(equippedChanged))
/datum/element/earhealing/Detach(datum/target)
. = ..()
diff --git a/code/datums/elements/embed.dm b/code/datums/elements/embed.dm
index 1dc0c4fba4a..c2318f7a024 100644
--- a/code/datums/elements/embed.dm
+++ b/code/datums/elements/embed.dm
@@ -37,16 +37,16 @@
if(!isitem(target) && !isprojectile(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_ELEMENT_ATTACH, .proc/severancePackage)
+ RegisterSignal(target, COMSIG_ELEMENT_ATTACH,PROC_REF(severancePackage))
if(isprojectile(target))
payload_type = projectile_payload
- RegisterSignal(target, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/checkEmbedProjectile)
+ RegisterSignal(target, COMSIG_PROJECTILE_SELF_ON_HIT,PROC_REF(checkEmbedProjectile))
else if(isitem(target))
- RegisterSignal(target, COMSIG_MOVABLE_IMPACT_ZONE, .proc/checkEmbedMob)
- RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/checkEmbedOther)
- RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/examined)
- RegisterSignal(target, COMSIG_EMBED_TRY_FORCE, .proc/tryForceEmbed)
- RegisterSignal(target, COMSIG_ITEM_DISABLE_EMBED, .proc/detachFromWeapon)
+ RegisterSignal(target, COMSIG_MOVABLE_IMPACT_ZONE,PROC_REF(checkEmbedMob))
+ RegisterSignal(target, COMSIG_MOVABLE_IMPACT,PROC_REF(checkEmbedOther))
+ RegisterSignal(target, COMSIG_PARENT_EXAMINE,PROC_REF(examined))
+ RegisterSignal(target, COMSIG_EMBED_TRY_FORCE,PROC_REF(tryForceEmbed))
+ RegisterSignal(target, COMSIG_ITEM_DISABLE_EMBED,PROC_REF(detachFromWeapon))
if(!initialized)
src.embed_chance = embed_chance
src.fall_chance = fall_chance
diff --git a/code/datums/elements/empprotection.dm b/code/datums/elements/empprotection.dm
index c24914decb8..18fbe248caa 100644
--- a/code/datums/elements/empprotection.dm
+++ b/code/datums/elements/empprotection.dm
@@ -8,7 +8,7 @@
if(. == ELEMENT_INCOMPATIBLE || !isatom(target))
return ELEMENT_INCOMPATIBLE
flags = _flags
- RegisterSignal(target, COMSIG_ATOM_EMP_ACT, .proc/getEmpFlags)
+ RegisterSignal(target, COMSIG_ATOM_EMP_ACT,PROC_REF(getEmpFlags))
/datum/element/empprotection/Detach(atom/target)
UnregisterSignal(target, COMSIG_ATOM_EMP_ACT)
diff --git a/code/datums/elements/firestacker.dm b/code/datums/elements/firestacker.dm
index d074c8f6ed2..5807e8b5746 100644
--- a/code/datums/elements/firestacker.dm
+++ b/code/datums/elements/firestacker.dm
@@ -15,10 +15,10 @@
src.amount = amount
- RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/impact, override = TRUE)
+ RegisterSignal(target, COMSIG_MOVABLE_IMPACT,PROC_REF(impact), override = TRUE)
if(isitem(target))
- RegisterSignal(target, COMSIG_ITEM_ATTACK, .proc/item_attack, override = TRUE)
- RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF, .proc/item_attack_self, override = TRUE)
+ RegisterSignal(target, COMSIG_ITEM_ATTACK,PROC_REF(item_attack), override = TRUE)
+ RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF,PROC_REF(item_attack_self), override = TRUE)
/datum/element/firestacker/Detach(datum/source, force)
. = ..()
diff --git a/code/datums/elements/flavor_text.dm b/code/datums/elements/flavor_text.dm
index 4d33268f3c0..f1fe16d77a6 100644
--- a/code/datums/elements/flavor_text.dm
+++ b/code/datums/elements/flavor_text.dm
@@ -35,8 +35,8 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
save_key = _save_key
examine_no_preview = _examine_no_preview
- RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/show_flavor)
- RegisterSignal(target, COMSIG_FLIST, .proc/show_flist)
+ RegisterSignal(target, COMSIG_PARENT_EXAMINE,PROC_REF(show_flavor))
+ RegisterSignal(target, COMSIG_FLIST,PROC_REF(show_flist))
if(can_edit && ismob(target)) //but only mobs receive the proc/verb for the time being
var/mob/M = target
@@ -44,7 +44,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
M.verbs |= /mob/proc/manage_flavor_tests
if(save_key && ishuman(target))
- RegisterSignal(target, COMSIG_HUMAN_PREFS_COPIED_TO, .proc/update_prefs_flavor_text)
+ RegisterSignal(target, COMSIG_HUMAN_PREFS_COPIED_TO,PROC_REF(update_prefs_flavor_text))
/datum/element/flavor_text/Detach(atom/A)
. = ..()
@@ -106,7 +106,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
return
if(!reader)
return
- INVOKE_ASYNC(src, .proc/actually_show_flist, target, reader)
+ INVOKE_ASYNC(src, PROC_REF(actually_show_flist), target, reader)
return TRUE
/datum/element/flavor_text/proc/actually_show_flist(mob/living/carbon/human/H, mob/reader)
@@ -168,11 +168,11 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
. = ..()
if(. == ELEMENT_INCOMPATIBLE)
return
- RegisterSignal(target, COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, .proc/update_dna_flavor_text)
- RegisterSignal(target, COMSIG_MOB_ANTAG_ON_GAIN, .proc/on_antag_gain)
+ RegisterSignal(target, COMSIG_CARBON_IDENTITY_TRANSFERRED_TO,PROC_REF(update_dna_flavor_text))
+ RegisterSignal(target, COMSIG_MOB_ANTAG_ON_GAIN,PROC_REF(on_antag_gain))
if(ishuman(target))
- RegisterSignal(target, COMSIG_HUMAN_HARDSET_DNA, .proc/update_dna_flavor_text)
- RegisterSignal(target, COMSIG_HUMAN_ON_RANDOMIZE, .proc/unset_flavor)
+ RegisterSignal(target, COMSIG_HUMAN_HARDSET_DNA,PROC_REF(update_dna_flavor_text))
+ RegisterSignal(target, COMSIG_HUMAN_ON_RANDOMIZE,PROC_REF(unset_flavor))
/datum/element/flavor_text/carbon/Detach(mob/living/carbon/C)
. = ..()
diff --git a/code/datums/elements/forced_gravity.dm b/code/datums/elements/forced_gravity.dm
index 0b50df5b21f..d9055b2a717 100644
--- a/code/datums/elements/forced_gravity.dm
+++ b/code/datums/elements/forced_gravity.dm
@@ -12,9 +12,9 @@
src.gravity = gravity
src.ignore_space = ignore_space
- RegisterSignal(target, COMSIG_ATOM_HAS_GRAVITY, .proc/gravity_check)
+ RegisterSignal(target, COMSIG_ATOM_HAS_GRAVITY,PROC_REF(gravity_check))
if(isturf(target))
- RegisterSignal(target, COMSIG_TURF_HAS_GRAVITY, .proc/turf_gravity_check)
+ RegisterSignal(target, COMSIG_TURF_HAS_GRAVITY,PROC_REF(turf_gravity_check))
/datum/element/forced_gravity/Detach(datum/source, force)
. = ..()
diff --git a/code/datums/elements/ghost_role_eligibility.dm b/code/datums/elements/ghost_role_eligibility.dm
index 24c8bda7bd4..16949664fbd 100644
--- a/code/datums/elements/ghost_role_eligibility.dm
+++ b/code/datums/elements/ghost_role_eligibility.dm
@@ -17,7 +17,7 @@ GLOBAL_LIST_EMPTY(client_ghost_timeouts)
var/mob/M = target
if(!(M in GLOB.ghost_eligible_mobs))
GLOB.ghost_eligible_mobs += M
- RegisterSignal(M, COMSIG_MOB_GHOSTIZE, .proc/get_ghost_flags)
+ RegisterSignal(M, COMSIG_MOB_GHOSTIZE,PROC_REF(get_ghost_flags))
/datum/element/ghost_role_eligibility/Detach(mob/M)
. = ..()
diff --git a/code/datums/elements/light_blocking.dm b/code/datums/elements/light_blocking.dm
index df0f5f6f487..36a82dfd132 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))
return
diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm
index 5a326f719f5..b5577eed4fd 100644
--- a/code/datums/elements/mob_holder.dm
+++ b/code/datums/elements/mob_holder.dm
@@ -23,8 +23,8 @@
src.proctype = proctype
src.escape_on_find = escape_on_find
- RegisterSignal(target, COMSIG_CLICK_ALT, .proc/mob_try_pickup, override = TRUE)
- RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine, override = TRUE)
+ RegisterSignal(target, COMSIG_CLICK_ALT,PROC_REF(mob_try_pickup), override = TRUE)
+ RegisterSignal(target, COMSIG_PARENT_EXAMINE,PROC_REF(on_examine), override = TRUE)
/datum/element/mob_holder/Detach(datum/source, force)
. = ..()
@@ -118,11 +118,11 @@
/obj/item/clothing/head/mob_holder/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_VORE_ATOM_DEVOURED, .proc/release_into_belly)
- RegisterSignal(src, COMSIG_VORE_CAN_EAT, .proc/relay_caneat)
- RegisterSignal(src, COMSIG_VORE_CAN_BE_EATEN, .proc/relay_can_be_eaten)
- RegisterSignal(src, COMSIG_VORE_CAN_BE_FED_PREY, .proc/relay_can_be_fed)
- RegisterSignal(src, COMSIG_VORE_SNIFF_LIVING, .proc/relay_sniff)
+ RegisterSignal(src, COMSIG_VORE_ATOM_DEVOURED,PROC_REF(release_into_belly))
+ RegisterSignal(src, COMSIG_VORE_CAN_EAT,PROC_REF(relay_caneat))
+ RegisterSignal(src, COMSIG_VORE_CAN_BE_EATEN,PROC_REF(relay_can_be_eaten))
+ RegisterSignal(src, COMSIG_VORE_CAN_BE_FED_PREY,PROC_REF(relay_can_be_fed))
+ RegisterSignal(src, COMSIG_VORE_SNIFF_LIVING,PROC_REF(relay_sniff))
/obj/item/clothing/head/mob_holder/proc/relay_caneat()
return SEND_SIGNAL(held_mob, COMSIG_VORE_CAN_EAT)
@@ -189,11 +189,11 @@
if(!istype(grabber))
return
carrier = WEAKREF(grabber)
- RegisterSignal(grabber, COMSIG_MOB_APPLY_DAMAGE, .proc/pass_damage) // OUR APC IS UNDER ATTACK
- RegisterSignal(grabber, COMSIG_MOB_DEATH, .proc/release) // Oh no im dead
+ RegisterSignal(grabber, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(pass_damage)) // OUR APC IS UNDER ATTACK
+ RegisterSignal(grabber, COMSIG_MOB_DEATH, PROC_REF(release)) // Oh no im dead
if(!held_mob)
return
- RegisterSignal(held_mob, COMSIG_MOB_DEATH, .proc/release) // Oh no im dead 2
+ RegisterSignal(held_mob, COMSIG_MOB_DEATH, PROC_REF(release)) // Oh no im dead 2
/obj/item/clothing/head/mob_holder/dropped(mob/user)
. = ..()
diff --git a/code/datums/elements/polychromic.dm b/code/datums/elements/polychromic.dm
index 63d02264729..2428e66ec91 100644
--- a/code/datums/elements/polychromic.dm
+++ b/code/datums/elements/polychromic.dm
@@ -38,11 +38,11 @@
L += make_appearances ? mutable_appearance(mut_icon, overlays_states[I], color = col) : col
colors_by_atom[A] = L
- RegisterSignal(A, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_overlays)
+ RegisterSignal(A, COMSIG_ATOM_UPDATE_OVERLAYS,PROC_REF(apply_overlays))
if(_flags & POLYCHROMIC_ALTCLICK)
- RegisterSignal(A, COMSIG_PARENT_EXAMINE, .proc/on_examine)
- RegisterSignal(A, COMSIG_CLICK_ALT, .proc/set_color)
+ RegisterSignal(A, COMSIG_PARENT_EXAMINE,PROC_REF(on_examine))
+ RegisterSignal(A, COMSIG_CLICK_ALT,PROC_REF(set_color))
if(!overlays_names && names) //generate
overlays_names = names
@@ -55,16 +55,16 @@
if(isitem(A))
if(_flags & POLYCHROMIC_ACTION)
- RegisterSignal(A, COMSIG_ITEM_EQUIPPED, .proc/grant_user_action)
- RegisterSignal(A, COMSIG_ITEM_DROPPED, .proc/remove_user_action)
+ RegisterSignal(A, COMSIG_ITEM_EQUIPPED,PROC_REF(grant_user_action))
+ RegisterSignal(A, COMSIG_ITEM_DROPPED,PROC_REF(remove_user_action))
if(!(_flags & POLYCHROMIC_NO_WORN) || !(_flags & POLYCHROMIC_NO_HELD))
A.AddElement(/datum/element/update_icon_updates_onmob)
- RegisterSignal(A, COMSIG_ITEM_WORN_OVERLAYS, .proc/apply_worn_overlays)
+ RegisterSignal(A, COMSIG_ITEM_WORN_OVERLAYS,PROC_REF(apply_worn_overlays))
if(suits_with_helmet_typecache[A.type])
- RegisterSignal(A, COMSIG_SUIT_MADE_HELMET, .proc/register_helmet) //you better work now you slut
+ RegisterSignal(A, COMSIG_SUIT_MADE_HELMET,PROC_REF(register_helmet)) //you better work now you slut
else if(_flags & POLYCHROMIC_ACTION && ismob(A)) //in the event mob update icon procs are ever standarized.
var/datum/action/polychromic/P = new(A)
- RegisterSignal(P, COMSIG_ACTION_TRIGGER, .proc/activate_action)
+ RegisterSignal(P, COMSIG_ACTION_TRIGGER,PROC_REF(activate_action))
actions_by_atom[A] = P
P.Grant(A)
@@ -152,7 +152,7 @@
P.name = "Modify [source]'\s Colors"
actions_by_atom[source] = P
P.check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_CONSCIOUS
- RegisterSignal(P, COMSIG_ACTION_TRIGGER, .proc/activate_action)
+ RegisterSignal(P, COMSIG_ACTION_TRIGGER,PROC_REF(activate_action))
P.Grant(user)
/datum/element/polychromic/proc/remove_user_action(atom/source, mob/user)
@@ -178,9 +178,9 @@
suit_by_helmet[H] = source
helmet_by_suit[source] = H
colors_by_atom[H] = colors_by_atom[source]
- RegisterSignal(H, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_overlays)
- RegisterSignal(H, COMSIG_ITEM_WORN_OVERLAYS, .proc/apply_worn_overlays)
- RegisterSignal(H, COMSIG_PARENT_QDELETING, .proc/unregister_helmet)
+ RegisterSignal(H, COMSIG_ATOM_UPDATE_OVERLAYS,PROC_REF(apply_overlays))
+ RegisterSignal(H, COMSIG_ITEM_WORN_OVERLAYS,PROC_REF(apply_worn_overlays))
+ RegisterSignal(H, COMSIG_PARENT_QDELETING,PROC_REF(unregister_helmet))
/datum/element/polychromic/proc/unregister_helmet(atom/source)
var/obj/item/clothing/suit/S = suit_by_helmet[source]
diff --git a/code/datums/elements/scavenging.dm b/code/datums/elements/scavenging.dm
index 3db4455208d..1f48374c820 100644
--- a/code/datums/elements/scavenging.dm
+++ b/code/datums/elements/scavenging.dm
@@ -47,10 +47,10 @@
loot_restriction = restriction
maximum_loot_per_player = max_per_player
if(can_use_hands)
- RegisterSignal(target, list(COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACK_PAW), .proc/scavenge_barehanded)
+ RegisterSignal(target, list(COMSIG_ATOM_ATTACK_HAND, COMSIG_ATOM_ATTACK_PAW),PROC_REF(scavenge_barehanded))
if(tool_types)
- RegisterSignal(target, COMSIG_PARENT_ATTACKBY, .proc/scavenge_tool)
- RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine)
+ RegisterSignal(target, COMSIG_PARENT_ATTACKBY,PROC_REF(scavenge_tool))
+ RegisterSignal(target, COMSIG_PARENT_EXAMINE,PROC_REF(on_examine))
/datum/element/scavenging/Detach(atom/target)
. = ..()
@@ -98,7 +98,7 @@
if(len_messages >= 3)
msg_blind = span_italic("[search_texts[3]]")
user.visible_message(span_notice("[user] [search_texts[1]] [source]."), msg_first_person, msg_blind)
- if(do_after(user, scavenge_time * speed_multi, TRUE, source, TRUE, CALLBACK(src, .proc/set_progress, source, world.time), resume_time = progress_done * speed_multi))
+ if(do_after(user, scavenge_time * speed_multi, TRUE, source, TRUE, CALLBACK(src,PROC_REF(set_progress), source, world.time), resume_time = progress_done * speed_multi))
spawn_loot(source, user)
players_busy_scavenging -= user
diff --git a/code/datums/elements/spellcasting.dm b/code/datums/elements/spellcasting.dm
index 877bcdbcd37..8c206a60ecf 100644
--- a/code/datums/elements/spellcasting.dm
+++ b/code/datums/elements/spellcasting.dm
@@ -9,10 +9,10 @@
/datum/element/spellcasting/Attach(datum/target, _flags, _slots)
. = ..()
if(isitem(target))
- RegisterSignal(target, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(target, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(target, COMSIG_ITEM_EQUIPPED,PROC_REF(on_equip))
+ RegisterSignal(target, COMSIG_ITEM_DROPPED,PROC_REF(on_drop))
else if(ismob(target))
- RegisterSignal(target, COMSIG_MOB_SPELL_CAN_CAST, .proc/on_cast)
+ RegisterSignal(target, COMSIG_MOB_SPELL_CAN_CAST,PROC_REF(on_cast))
stacked_spellcasting_by_user[target]++
else
return ELEMENT_INCOMPATIBLE
@@ -38,7 +38,7 @@
return
users_by_item[source] = equipper
if(!stacked_spellcasting_by_user[equipper])
- RegisterSignal(equipper, COMSIG_MOB_SPELL_CAN_CAST, .proc/on_cast)
+ RegisterSignal(equipper, COMSIG_MOB_SPELL_CAN_CAST,PROC_REF(on_cast))
stacked_spellcasting_by_user[equipper]++
/datum/element/spellcasting/proc/on_drop(datum/source, mob/user)
diff --git a/code/datums/elements/squish.dm b/code/datums/elements/squish.dm
index 823d391e14c..2265be68e04 100644
--- a/code/datums/elements/squish.dm
+++ b/code/datums/elements/squish.dm
@@ -11,7 +11,7 @@
var/mob/living/carbon/C = target
var/was_lying = (C.lying != 0)
- addtimer(CALLBACK(src, .proc/Detach, C, was_lying), duration)
+ addtimer(CALLBACK(src,PROC_REF(Detach), C, was_lying), duration)
C.transform = C.transform.Scale(TALL, SHORT)
diff --git a/code/datums/elements/swimming.dm b/code/datums/elements/swimming.dm
index d16ef6625f0..ca0be4290eb 100644
--- a/code/datums/elements/swimming.dm
+++ b/code/datums/elements/swimming.dm
@@ -7,7 +7,7 @@
return
if(!isliving(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/check_valid)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED,PROC_REF(check_valid))
ADD_TRAIT(target, TRAIT_SWIMMING, TRAIT_SWIMMING) //seriously there's only one way to get this
/datum/element/swimming/Detach(datum/target)
diff --git a/code/datums/elements/sword_point.dm b/code/datums/elements/sword_point.dm
index 91ed4710685..8251f5cd468 100644
--- a/code/datums/elements/sword_point.dm
+++ b/code/datums/elements/sword_point.dm
@@ -7,7 +7,7 @@
return
if(!istype(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_ITEM_ALT_AFTERATTACK, .proc/point)
+ RegisterSignal(target, COMSIG_ITEM_ALT_AFTERATTACK,PROC_REF(point))
/datum/element/sword_point/Detach(datum/source)
. = ..()
diff --git a/code/datums/elements/tactical.dm b/code/datums/elements/tactical.dm
index 4b49552fbe5..d14f7fa8d64 100644
--- a/code/datums/elements/tactical.dm
+++ b/code/datums/elements/tactical.dm
@@ -9,8 +9,8 @@
return ELEMENT_INCOMPATIBLE
src.allowed_slot = allowed_slot
- RegisterSignal(target, COMSIG_ITEM_EQUIPPED, .proc/modify)
- RegisterSignal(target, COMSIG_ITEM_DROPPED, .proc/unmodify)
+ RegisterSignal(target, COMSIG_ITEM_EQUIPPED,PROC_REF(modify))
+ RegisterSignal(target, COMSIG_ITEM_DROPPED,PROC_REF(unmodify))
/datum/element/tactical/Detach(datum/target)
UnregisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
diff --git a/code/datums/elements/update_icon_blocker.dm b/code/datums/elements/update_icon_blocker.dm
index f52a712ebb5..9a300b7662a 100644
--- a/code/datums/elements/update_icon_blocker.dm
+++ b/code/datums/elements/update_icon_blocker.dm
@@ -4,7 +4,7 @@
. = ..()
if(!istype(target, /atom))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_ATOM_UPDATE_ICON, .proc/block_update_icon)
+ RegisterSignal(target, COMSIG_ATOM_UPDATE_ICON,PROC_REF(block_update_icon))
/datum/element/update_icon_blocker/proc/block_update_icon()
return COMSIG_ATOM_NO_UPDATE_ICON_STATE | COMSIG_ATOM_NO_UPDATE_OVERLAYS
diff --git a/code/datums/elements/update_icon_updates_onmob.dm b/code/datums/elements/update_icon_updates_onmob.dm
index 5c71547f624..37cdc4cc3f3 100644
--- a/code/datums/elements/update_icon_updates_onmob.dm
+++ b/code/datums/elements/update_icon_updates_onmob.dm
@@ -5,7 +5,7 @@
. = ..()
if(!istype(target, /obj/item))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, .proc/update_onmob, override = TRUE)
+ RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON,PROC_REF(update_onmob), override = TRUE)
/datum/element/update_icon_updates_onmob/proc/update_onmob(obj/item/target)
if(ismob(target.loc))
diff --git a/code/datums/elements/wuv.dm b/code/datums/elements/wuv.dm
index 6476a204cfe..751e7467190 100644
--- a/code/datums/elements/wuv.dm
+++ b/code/datums/elements/wuv.dm
@@ -28,7 +28,7 @@
pet_moodlet = pet_mood
punt_moodlet = punt_mood
- RegisterSignal(target, COMSIG_MOB_ATTACK_HAND, .proc/on_attack_hand)
+ RegisterSignal(target, COMSIG_MOB_ATTACK_HAND,PROC_REF(on_attack_hand))
/datum/element/wuv/Detach(datum/source, force)
. = ..()
@@ -42,9 +42,9 @@
//we want to delay the effect to be displayed after the mob is petted, not before.
switch(user.a_intent)
if(INTENT_HARM)
- addtimer(CALLBACK(src, .proc/kick_the_dog, source, user), 1)
+ addtimer(CALLBACK(src,PROC_REF(kick_the_dog), source, user), 1)
if(INTENT_HELP)
- addtimer(CALLBACK(src, .proc/pet_the_dog, source, user), 1)
+ addtimer(CALLBACK(src,PROC_REF(pet_the_dog), source, user), 1)
/datum/element/wuv/proc/pet_the_dog(mob/target, mob/user)
if(QDELETED(target) || QDELETED(user) || target.stat != CONSCIOUS)
diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm
index 8776b6b91ef..420e7f37cc4 100644
--- a/code/datums/explosion.dm
+++ b/code/datums/explosion.dm
@@ -405,7 +405,7 @@ GLOBAL_LIST_EMPTY(explosions)
else
continue
- addtimer(CALLBACK(GLOBAL_PROC, .proc/wipe_color_and_text, wipe_colours), 100)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(wipe_color_and_text), wipe_colours), 100)
/proc/wipe_color_and_text(list/atom/wiping)
for(var/i in wiping)
diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm
index 354af09cfbe..8b329927507 100644
--- a/code/datums/holocall.dm
+++ b/code/datums/holocall.dm
@@ -237,7 +237,7 @@
/obj/item/disk/holodisk/Initialize(mapload)
. = ..()
if(preset_record_text)
- INVOKE_ASYNC(src, .proc/build_record)
+ INVOKE_ASYNC(src,PROC_REF(build_record))
/obj/item/disk/holodisk/Destroy()
QDEL_NULL(record)
diff --git a/code/datums/hud.dm b/code/datums/hud.dm
index c1e5fad00b6..489162f7655 100644
--- a/code/datums/hud.dm
+++ b/code/datums/hud.dm
@@ -86,10 +86,10 @@ GLOBAL_LIST_INIT(huds, list(
return
if(!hudusers[M])
hudusers[M] = 1
- RegisterSignal(M, COMSIG_PARENT_QDELETING, .proc/unregister_mob)
+ RegisterSignal(M, COMSIG_PARENT_QDELETING,PROC_REF(unregister_mob))
if(next_time_allowed[M] > world.time)
if(!queued_to_see[M])
- addtimer(CALLBACK(src, .proc/show_hud_images_after_cooldown, M), next_time_allowed[M] - world.time)
+ addtimer(CALLBACK(src,PROC_REF(show_hud_images_after_cooldown), M), next_time_allowed[M] - world.time)
queued_to_see[M] = TRUE
else
next_time_allowed[M] = world.time + ADD_HUD_TO_COOLDOWN
diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm
index 03ae7b9a602..f4b1f2261d3 100644
--- a/code/datums/looping_sounds/_looping_sound.dm
+++ b/code/datums/looping_sounds/_looping_sound.dm
@@ -55,7 +55,7 @@
if(!istype(add_thing))
CRASH("looping sound [src] given [add_thing]. [add_thing] is not an atom!!!!!!!!!!!!!!!!!")
output_atoms |= add_thing
- RegisterSignal(add_thing, COMSIG_PARENT_PREQDELETED, .proc/remove_atom)
+ RegisterSignal(add_thing, COMSIG_PARENT_PREQDELETED,PROC_REF(remove_atom))
/datum/looping_sound/proc/remove_atom(atom/remove_thing)
UnregisterSignal(remove_thing, COMSIG_PARENT_PREQDELETED)
@@ -64,7 +64,7 @@
/datum/looping_sound/proc/start(atom/add_thing)
if(add_thing)
output_atoms |= add_thing
- RegisterSignal(add_thing, COMSIG_PARENT_PREQDELETED, .proc/remove_atom, override = TRUE)
+ RegisterSignal(add_thing, COMSIG_PARENT_PREQDELETED, PROC_REF(remove_atom), override = TRUE)
if(timerid || init_timerid) // already running, will pick them up on the next go
return
on_start()
@@ -106,7 +106,7 @@
play(sound_play)
mid_length = sound_play[SL_FILE_LENGTH]
if(!timerid)
- timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), mid_length + loop_delay, TIMER_CLIENT_TIME | TIMER_STOPPABLE | TIMER_LOOP)
+ timerid = addtimer(CALLBACK(src,PROC_REF(sound_loop), world.time), mid_length + loop_delay, TIMER_CLIENT_TIME | TIMER_STOPPABLE | TIMER_LOOP)
else
set_timer_wait(timerid, mid_length + loop_delay)
@@ -154,7 +154,7 @@
var/list/sound_start = pickweight(start_sound)
play(sound_start)
start_wait = sound_start[SL_FILE_LENGTH]
- init_timerid = addtimer(CALLBACK(src, .proc/sound_loop), start_wait, TIMER_CLIENT_TIME | TIMER_STOPPABLE)
+ init_timerid = addtimer(CALLBACK(src,PROC_REF(sound_loop)), start_wait, TIMER_CLIENT_TIME | TIMER_STOPPABLE)
/datum/looping_sound/proc/on_stop()
if(end_sound)
diff --git a/code/datums/looping_sounds/looping_sound.dm b/code/datums/looping_sounds/looping_sound.dm
index 59828fe24e6..4e1e7e9c8c5 100644
--- a/code/datums/looping_sounds/looping_sound.dm
+++ b/code/datums/looping_sounds/looping_sound.dm
@@ -80,7 +80,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
@@ -108,7 +108,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/martial/wrestling.dm b/code/datums/martial/wrestling.dm
index 2f22648a78c..65c4d2dbf7c 100644
--- a/code/datums/martial/wrestling.dm
+++ b/code/datums/martial/wrestling.dm
@@ -209,7 +209,7 @@
if (T && isturf(T))
if (!D.stat)
D.emote("scream")
- D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/DefaultCombatKnockdown, 20))
+ D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, TYPE_PROC_REF(/mob/living/carbon/human,DefaultCombatKnockdown), 20))
log_combat(A, D, "has thrown with wrestling")
return FALSE
@@ -350,7 +350,7 @@
A.setDir(turn(A.dir, 90))
A.forceMove(D.loc)
- addtimer(CALLBACK(src, .proc/CheckStrikeTurf, A, T), 4)
+ addtimer(CALLBACK(src,PROC_REF(CheckStrikeTurf), A, T), 4)
A.visible_message("[A] headbutts [D]!")
D.apply_damage(damage + 15, BRUTE)
diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm
index 6ab19334dba..831dc5e200b 100644
--- a/code/datums/materials/_material.dm
+++ b/code/datums/materials/_material.dm
@@ -54,7 +54,7 @@ Simple datum which is instanced once per type and is used for every object of sa
source.name = "[name] [source.name]"
if(beauty_modifier)
- addtimer(CALLBACK(source, /datum.proc/_AddElement, list(/datum/element/beauty, beauty_modifier * amount)), 0)
+ addtimer(CALLBACK(source, TYPE_PROC_REF(/datum,_AddElement), list(/datum/element/beauty, beauty_modifier * amount)), 0)
if(istype(source, /obj)) //objs
on_applied_obj(source, amount, material_flags)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 216eb31fb1b..aca14fac076 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -177,7 +177,7 @@
var/datum/team/antag_team = A.get_team()
if(antag_team)
antag_team.add_member(src)
- INVOKE_ASYNC(A, /datum/antagonist.proc/on_gain)
+ INVOKE_ASYNC(A, TYPE_PROC_REF(/datum/antagonist,on_gain))
return A
/datum/mind/proc/remove_antag_datum(datum_type)
@@ -734,7 +734,7 @@
continue
S.charge_counter = delay
S.updateButtonIcon()
- INVOKE_ASYNC(S, /obj/effect/proc_holder/spell.proc/start_recharge)
+ INVOKE_ASYNC(S, TYPE_PROC_REF(/obj/effect/proc_holder/spell,start_recharge))
/datum/mind/proc/get_ghost(even_if_they_cant_reenter)
for(var/mob/dead/observer/G in GLOB.dead_mob_list)
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index ca349d3b13d..d6c16a7bf81 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -91,7 +91,7 @@
var/mob/living/carbon/human/H = owner
if(iscatperson(H))
H.dna.species.start_wagging_tail(H)
- addtimer(CALLBACK(H.dna.species, /datum/species.proc/stop_wagging_tail, H), 30)
+ addtimer(CALLBACK(H.dna.species, TYPE_PROC_REF(/datum/species,stop_wagging_tail), H), 30)
description = span_nicegreen("They want to play on the table!")
mood_change = 2
diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm
index b77bc3f45c9..68e0f0381d0 100644
--- a/code/datums/mutations/_mutations.dm
+++ b/code/datums/mutations/_mutations.dm
@@ -48,7 +48,7 @@
. = ..()
class = class_
if(timer)
- addtimer(CALLBACK(src, .proc/remove), timer)
+ addtimer(CALLBACK(src,PROC_REF(remove)), timer)
timed = TRUE
if(copymut && istype(copymut, /datum/mutation/human))
copy_mutation(copymut)
@@ -86,7 +86,7 @@
grant_spell()
if(!modified)
- addtimer(CALLBACK(src, .proc/modify, 5)) //gonna want children calling ..() to run first
+ addtimer(CALLBACK(src,PROC_REF(modify), 5)) //gonna want children calling ..() to run first
/datum/mutation/human/proc/get_visual_indicator()
return
diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm
index 15f76f74c73..07e2256f8a9 100644
--- a/code/datums/mutations/actions.dm
+++ b/code/datums/mutations/actions.dm
@@ -418,7 +418,7 @@
/obj/item/hardened_spike/Initialize(mapload, firedby)
. = ..()
fired_by = firedby
- addtimer(CALLBACK(src, .proc/checkembedded), 5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(checkembedded)), 5 SECONDS)
/obj/item/hardened_spike/proc/checkembedded()
if(missed)
diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm
index 8ee005194f5..7f07ac96eec 100644
--- a/code/datums/mutations/body.dm
+++ b/code/datums/mutations/body.dm
@@ -15,7 +15,7 @@
owner.Unconscious(200 * GET_MUTATION_POWER(src))
owner.Jitter(1000 * GET_MUTATION_POWER(src))
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "epilepsy", /datum/mood_event/epilepsy)
- addtimer(CALLBACK(src, .proc/jitter_less), 90)
+ addtimer(CALLBACK(src,PROC_REF(jitter_less)), 90)
/datum/mutation/human/epilepsy/proc/jitter_less(mob/living/carbon/human/owner)
if(owner)
diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm
index c66f78fa51d..f9edb7944fc 100644
--- a/code/datums/mutations/hulk.dm
+++ b/code/datums/mutations/hulk.dm
@@ -17,7 +17,7 @@
ADD_TRAIT(owner, TRAIT_CHUNKYFINGERS, TRAIT_HULK)
owner.update_body_parts()
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk)
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/mutation/human/hulk/on_attack_hand(atom/target, proximity, act_intent, unarmed_attack_flags)
if(proximity && (act_intent == INTENT_HARM)) //no telekinetic hulk attack
diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm
index ad4b7b28ff0..a7778df3f3c 100644
--- a/code/datums/mutations/speech.dm
+++ b/code/datums/mutations/speech.dm
@@ -23,7 +23,7 @@
. = ..()
if(.)
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/mutation/human/wacky/on_losing(mob/living/carbon/human/owner)
. = ..()
@@ -65,7 +65,7 @@
. = ..()
if(.)
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/mutation/human/smile/on_losing(mob/living/carbon/human/owner)
. = ..()
@@ -114,7 +114,7 @@
. = ..()
if(.)
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/mutation/human/swedish/on_losing(mob/living/carbon/human/owner)
. = ..()
@@ -146,7 +146,7 @@
. = ..()
if(.)
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/mutation/human/chav/on_losing(mob/living/carbon/human/owner)
. = ..()
@@ -205,7 +205,7 @@
. = ..()
if(.)
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/mutation/human/elvis/on_losing(mob/living/carbon/human/owner)
. = ..()
diff --git a/code/datums/profiling.dm b/code/datums/profiling.dm
index 49a80d0eded..1eec8787116 100644
--- a/code/datums/profiling.dm
+++ b/code/datums/profiling.dm
@@ -6,7 +6,7 @@ GLOBAL_REAL_VAR(PROFILE_SLEEPCHECK)
GLOBAL_REAL_VAR(PROFILE_TIME)
-/proc/profile_show(user, sort = /proc/cmp_profile_avg_time_dsc)
+/proc/profile_show(user, sort = GLOBAL_PROC_REF(cmp_profile_avg_time_dsc))
sortTim(PROFILE_STORE, sort, TRUE)
var/list/lines = list()
diff --git a/code/datums/skills/_skill.dm b/code/datums/skills/_skill.dm
index 0346d956b1c..fd5ea0007c7 100644
--- a/code/datums/skills/_skill.dm
+++ b/code/datums/skills/_skill.dm
@@ -8,7 +8,7 @@ GLOBAL_LIST_INIT_TYPED(skill_datums, /datum/skill, init_skill_datums())
continue
S = new path
.[S.type] = S
- . = sortTim(., /proc/cmp_skill_categories, TRUE)
+ . = sortTim(., GLOBAL_PROC_REF(cmp_skill_categories), TRUE)
/**
* Skill datums
diff --git a/code/datums/skills/_skill_modifier.dm b/code/datums/skills/_skill_modifier.dm
index d785b2b5cfc..4792446bbf2 100644
--- a/code/datums/skills/_skill_modifier.dm
+++ b/code/datums/skills/_skill_modifier.dm
@@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(potential_mods_per_skill)
GLOB.potential_skills_per_mod[target_skills_key] = list(target_skills)
else //Should be a list.
var/list/T = target_skills
- T = sortTim(target_skills, /proc/cmp_text_asc) //Sort the list contents alphabetically.
+ T = sortTim(target_skills, GLOBAL_PROC_REF(cmp_text_asc)) //Sort the list contents alphabetically.
target_skills_key = T.Join("-")
var/list/L = GLOB.potential_skills_per_mod[target_skills_key]
if(!L)
@@ -115,9 +115,9 @@ GLOBAL_LIST_EMPTY(potential_mods_per_skill)
skill_holder.need_static_data_update = TRUE
if(M.modifier_flags & MODIFIER_SKILL_BODYBOUND)
- M.RegisterSignal(src, COMSIG_MIND_TRANSFER, /datum/skill_modifier.proc/on_mind_transfer)
- M.RegisterSignal(current, COMSIG_MOB_ON_NEW_MIND, /datum/skill_modifier.proc/on_mob_new_mind, TRUE)
- RegisterSignal(M, COMSIG_PARENT_PREQDELETED, .proc/on_skill_modifier_deletion)
+ M.RegisterSignal(src, COMSIG_MIND_TRANSFER, TYPE_PROC_REF(/datum/skill_modifier,on_mind_transfer))
+ M.RegisterSignal(current, COMSIG_MOB_ON_NEW_MIND, TYPE_PROC_REF(/datum/skill_modifier,on_mob_new_mind), TRUE)
+ RegisterSignal(M, COMSIG_PARENT_PREQDELETED,PROC_REF(on_skill_modifier_deletion))
#undef ADD_MOD_STEP
@@ -201,4 +201,4 @@ GLOBAL_LIST_EMPTY(potential_mods_per_skill)
/datum/skill_modifier/proc/on_mob_new_mind(mob/source)
source.mind.add_skill_modifier(identifier)
- RegisterSignal(source.mind, COMSIG_MIND_TRANSFER, /datum/skill_modifier.proc/on_mind_transfer)
+ RegisterSignal(source.mind, COMSIG_MIND_TRANSFER, TYPE_PROC_REF(/datum/skill_modifier,on_mind_transfer))
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index d10b976540e..7cded411ea7 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -943,7 +943,7 @@
L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND)
-datum/status_effect/pacify
+/datum/status_effect/pacify
id = "pacify"
status_type = STATUS_EFFECT_REPLACE
tick_interval = 1
@@ -986,7 +986,7 @@ datum/status_effect/pacify
. = ..()
if(!iscarbon(owner))
return FALSE
- RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/hypnotize)
+ RegisterSignal(owner, COMSIG_MOVABLE_HEAR,PROC_REF(hypnotize))
ADD_TRAIT(owner, TRAIT_MUTE, "trance")
owner.add_client_colour(/datum/client_colour/monochrome/trance)
owner.visible_message("[stun ? span_warning("[owner] stands still as [owner.p_their()] eyes seem to focus on a distant point.") : ""]", \
@@ -1014,8 +1014,8 @@ datum/status_effect/pacify
var/mob/living/carbon/C = owner
var/hypnomsg = uncostumize_say(hearing_args[HEARING_RAW_MESSAGE], hearing_args[HEARING_MESSAGE_MODE])
C.cure_trauma_type(/datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY) //clear previous hypnosis
- addtimer(CALLBACK(C, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hypnomsg), 10)
- addtimer(CALLBACK(C, /mob/living.proc/Stun, 60, TRUE, TRUE), 15) //Take some time to think about it
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon,gain_trauma), /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hypnomsg), 10)
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living,Stun), 60, TRUE, TRUE), 15) //Take some time to think about it
qdel(src)
/datum/status_effect/spasms
diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm
index eebd013f6e0..b7232850c72 100644
--- a/code/datums/status_effects/gas.dm
+++ b/code/datums/status_effects/gas.dm
@@ -12,7 +12,7 @@
icon_state = "frozen"
/datum/status_effect/freon/on_apply()
- RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist)
+ RegisterSignal(owner, COMSIG_LIVING_RESIST,PROC_REF(owner_resist))
if(!owner.stat)
to_chat(owner, span_userdanger("You become frozen in a cube!"))
cube = icon('icons/effects/freeze.dmi', "ice_cube")
diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm
index 987d013e436..dde1b74fca9 100644
--- a/code/datums/status_effects/wound_effects.dm
+++ b/code/datums/status_effects/wound_effects.dm
@@ -41,8 +41,8 @@
left = C.get_bodypart(BODY_ZONE_L_LEG)
right = C.get_bodypart(BODY_ZONE_R_LEG)
update_limp()
- RegisterSignal(C, COMSIG_MOVABLE_MOVED, .proc/check_step)
- RegisterSignal(C, list(COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB), .proc/update_limp)
+ RegisterSignal(C, COMSIG_MOVABLE_MOVED,PROC_REF(check_step))
+ RegisterSignal(C, list(COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB),PROC_REF(update_limp))
return ..()
/datum/status_effect/limp/on_remove()
@@ -129,7 +129,7 @@
/datum/status_effect/wound/on_apply()
if(!iscarbon(owner))
return FALSE
- RegisterSignal(owner, COMSIG_CARBON_LOSE_WOUND, .proc/check_remove)
+ RegisterSignal(owner, COMSIG_CARBON_LOSE_WOUND,PROC_REF(check_remove))
return ..()
/// check if the wound getting removed is the wound we're tied to
diff --git a/code/datums/tattoo.dm b/code/datums/tattoo.dm
index d0ba2fdddab..ea2007b7236 100644
--- a/code/datums/tattoo.dm
+++ b/code/datums/tattoo.dm
@@ -47,7 +47,7 @@
/datum/tattoo/proc/on_apply(mob/user)
if(fade_time)
- addtimer(CALLBACK(src, .proc/fade_tattoo), fade_time)
+ addtimer(CALLBACK(src,PROC_REF(fade_tattoo)), fade_time)
/datum/tattoo/Destroy(force, ...)
if(owner_limb)
@@ -82,7 +82,7 @@
if(fadedness++ > TATTOO_VERY_FADED)
qdel(src)
return
- addtimer(CALLBACK(src, .proc/fade_tattoo), fade_time)
+ addtimer(CALLBACK(src,PROC_REF(fade_tattoo)), fade_time)
/// Is the tattoo somewhere really private? So you dont examine someone in power armor and find FOXYGRANDMA above their ass
/// A really in-depth check through a person's privates to see if their relevant bits are, in fact, visible
@@ -748,7 +748,7 @@
victim.emote("scream")
owie.receive_damage(brute = owie.brute_dam < 30 ? brute_d : 0, stamina = stamina_d, wound_bonus = bleed_d, sharpness = SHARP_EDGED, damage_coverings = FALSE)
if(engraving)
- addtimer(CALLBACK(src, .proc/make_noises_and_pain, victim, user, tat_loc, part), next_time)
+ addtimer(CALLBACK(src,PROC_REF(make_noises_and_pain), victim, user, tat_loc, part), next_time)
/obj/item/tattoo_gun/proc/try_remove_tattoo(mob/living/carbon/human/victim, mob/living/user, bodyzone, obj/item/bodypart/part)
if(!istype(victim) || !istype(user))
diff --git a/code/datums/tgs_event_handler.dm b/code/datums/tgs_event_handler.dm
index bec98ccd81d..bdf36040363 100644
--- a/code/datums/tgs_event_handler.dm
+++ b/code/datums/tgs_event_handler.dm
@@ -23,7 +23,7 @@
to_chat(world, span_boldannounce("Server updated, changes will be applied on the next round..."))
if(TGS_EVENT_WATCHDOG_DETACH)
message_admins("TGS restarting...")
- reattach_timer = addtimer(CALLBACK(src, .proc/LateOnReattach), 1 MINUTES)
+ reattach_timer = addtimer(CALLBACK(src,PROC_REF(LateOnReattach)), 1 MINUTES)
if(TGS_EVENT_WATCHDOG_REATTACH)
var/datum/tgs_version/old_version = world.TgsVersion()
var/datum/tgs_version/new_version = args[2]
diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm
index 2718dca5828..818eb5dafbc 100644
--- a/code/datums/traits/_quirk.dm
+++ b/code/datums/traits/_quirk.dm
@@ -53,7 +53,7 @@
add()
if(spawn_effects)
on_spawn()
- addtimer(CALLBACK(src, .proc/post_add), 30)
+ addtimer(CALLBACK(src,PROC_REF(post_add)), 30)
/datum/quirk/Destroy()
if(reference)
diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm
index 295e53973e5..d49aea970cc 100644
--- a/code/datums/traits/negative.dm
+++ b/code/datums/traits/negative.dm
@@ -471,8 +471,8 @@ GLOBAL_LIST_EMPTY(family_heirlooms)
var/dumb_thing = TRUE
/datum/quirk/social_anxiety/add()
- RegisterSignal(quirk_holder, COMSIG_MOB_EYECONTACT, .proc/eye_contact)
- // RegisterSignal(quirk_holder, COMSIG_MOB_EXAMINATE, .proc/looks_at_floor)
+ RegisterSignal(quirk_holder, COMSIG_MOB_EYECONTACT,PROC_REF(eye_contact))
+ // RegisterSignal(quirk_holder, COMSIG_MOB_EXAMINATE,PROC_REF(looks_at_floor))
/datum/quirk/social_anxiety/remove()
if(!quirk_holder)
@@ -504,7 +504,7 @@ Edit: TK~ This is the dumbest fucking shit I've ever seen in my life. This isn
if(prob(85) || (istype(mind_check) && mind_check.mind))
return
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, quirk_holder, span_smallnotice("You make eye contact with [A].")), 3)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), quirk_holder, span_smallnotice("You make eye contact with [A].")), 3)
*/
/datum/quirk/social_anxiety/proc/eye_contact(datum/source, mob/living/other_mob, triggering_examiner)
if(prob(75))
@@ -527,7 +527,7 @@ Edit: TK~ This is the dumbest fucking shit I've ever seen in my life. This isn
msg += "causing you to freeze up!"
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "anxiety_eyecontact", /datum/mood_event/anxiety_eyecontact)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, quirk_holder, span_userdanger("[msg]")), 3) // so the examine signal has time to fire and this will print after
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), quirk_holder, span_userdanger("[msg]")), 3) // so the examine signal has time to fire and this will print after
return COMSIG_BLOCK_EYECONTACT
/datum/mood_event/anxiety_eyecontact
diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm
index 499c360a9c8..c34dd45b13d 100644
--- a/code/datums/weather/weather.dm
+++ b/code/datums/weather/weather.dm
@@ -151,7 +151,7 @@
alert_players(pick(telegraph_message_list), telegraph_sound)
else
alert_players(telegraph_message, telegraph_sound)
- addtimer(CALLBACK(src, .proc/start), telegraph_duration)
+ addtimer(CALLBACK(src, PROC_REF(start)), telegraph_duration)
/**
* Starts the actual weather and effects from it
@@ -162,15 +162,12 @@
*/
/datum/weather/proc/start()
if(stage >= MAIN_STAGE)
- return
- stage = MAIN_STAGE
- update_areas()
- if(LAZYLEN(weather_message_list))
+ stage = MAIN_STAGE
+ update_areas()
alert_players(pick(weather_message_list), weather_sound)
else
alert_players(weather_message, weather_sound)
- addtimer(CALLBACK(src, .proc/wind_down), weather_duration)
- sound_ao?.start()
+ addtimer(CALLBACK(src,PROC_REF(wind_down)), weather_duration)
sound_ai?.start()
for(var/P in GLOB.player_list)
handle_looping_sound(P)
@@ -191,7 +188,7 @@
alert_players(pick(end_message_list), end_sound)
else
alert_players(end_message, end_sound)
- addtimer(CALLBACK(src, .proc/end), end_duration)
+ addtimer(CALLBACK(src, PROC_REF(end)), end_duration)
/datum/weather/proc/alert_players(message, sound_play)
if(!message && !sound_play)
diff --git a/code/datums/wires/airalarm.dm b/code/datums/wires/airalarm.dm
index 376512a3756..3434b0b888c 100644
--- a/code/datums/wires/airalarm.dm
+++ b/code/datums/wires/airalarm.dm
@@ -32,13 +32,13 @@
if(!A.shorted)
A.shorted = TRUE
A.update_icon()
- addtimer(CALLBACK(A, /obj/machinery/airalarm.proc/reset, wire), 1200)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/airalarm,reset), wire), 1200)
if(WIRE_IDSCAN) // Toggle lock.
A.locked = !A.locked
if(WIRE_AI) // Disable AI control for a while.
if(!A.aidisabled)
A.aidisabled = TRUE
- addtimer(CALLBACK(A, /obj/machinery/airalarm.proc/reset, wire), 100)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/airalarm,reset), wire), 100)
if(WIRE_PANIC) // Toggle panic siphon.
if(!A.shorted)
if(A.mode == 1) // AALARM_MODE_SCRUB
diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm
index a5772da71b2..8e09aa75e01 100644
--- a/code/datums/wires/airlock.dm
+++ b/code/datums/wires/airlock.dm
@@ -83,9 +83,9 @@
return
if(!A.requiresID() || A.check_access(null))
if(A.density)
- INVOKE_ASYNC(A, /obj/machinery/door/airlock.proc/open)
+ INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door/airlock,open))
else
- INVOKE_ASYNC(A, /obj/machinery/door/airlock.proc/close)
+ INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door/airlock,close))
else
holder.visible_message(span_notice("You hear a a grinding noise coming from the airlock."))
if(WIRE_BOLTS) // Pulse to toggle bolts (but only raise if power is on).
@@ -106,7 +106,7 @@
A.aiControlDisabled = 1
else if(A.aiControlDisabled == -1)
A.aiControlDisabled = 2
- addtimer(CALLBACK(A, /obj/machinery/door/airlock.proc/reset_ai_wire), 1 SECONDS)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/door/airlock,reset_ai_wire)), 1 SECONDS)
if(WIRE_SHOCK) // Pulse to shock the door for 10 ticks.
if(!A.secondsElectrified)
A.set_electrified(30, usr)
diff --git a/code/datums/wires/apc.dm b/code/datums/wires/apc.dm
index d167a11fd36..bd7453c950d 100644
--- a/code/datums/wires/apc.dm
+++ b/code/datums/wires/apc.dm
@@ -31,14 +31,14 @@
if(!A.shorted)
A.shorted = TRUE
A.update()
- addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 1200)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc,reset), wire), 1200)
if(WIRE_IDSCAN) // Unlock for a little while.
A.locked = FALSE
- addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 300)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc,reset), wire), 300)
if(WIRE_AI) // Disable AI control for a very short time.
if(!A.aidisabled)
A.aidisabled = TRUE
- addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 10)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc,reset), wire), 10)
/datum/wires/apc/on_cut(index, mend)
var/obj/machinery/power/apc/A = holder
diff --git a/code/datums/wires/autolathe.dm b/code/datums/wires/autolathe.dm
index 01e87228d4f..834333c0372 100644
--- a/code/datums/wires/autolathe.dm
+++ b/code/datums/wires/autolathe.dm
@@ -28,14 +28,14 @@
switch(wire)
if(WIRE_HACK)
A.adjust_hacked(!A.hacked)
- addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe,reset), wire), 60)
if(WIRE_SHOCK)
A.shocked = !A.shocked
A.shock(usr, 50)
- addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe,reset), wire), 60)
if(WIRE_DISABLE)
A.disabled = !A.disabled
- addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe,reset), wire), 60)
/datum/wires/autolathe/on_cut(wire, mend)
var/obj/machinery/autolathe/A = holder
diff --git a/code/datums/wounds/bleed.dm b/code/datums/wounds/bleed.dm
index ebfe09638cf..936f7f53f7c 100644
--- a/code/datums/wounds/bleed.dm
+++ b/code/datums/wounds/bleed.dm
@@ -346,7 +346,7 @@
/datum/wound/bleed/proc/las_cauterize(obj/item/gun/energy/laser/lasgun, mob/user)
var/self_penalty_mult = (user == victim ? 1.25 : 1)
user.visible_message(span_warning("[user] begins aiming [lasgun] directly at [victim]'s [limb.name]..."), span_userdanger("You begin aiming [lasgun] directly at [user == victim ? "your" : "[victim]'s"] [limb.name]..."))
- if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
+ if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src,PROC_REF(still_exists))))
return
var/damage = lasgun.chambered.BB.damage
lasgun.chambered.BB.wound_bonus -= 30
@@ -362,7 +362,7 @@
var/self_penalty_mult = (user == victim ? 1.2 : 1)
user.visible_message(span_notice("[user] begins stitching [victim]'s [limb.name] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]..."))
- if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
+ if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src,PROC_REF(still_exists))))
return
user.visible_message(span_green("[user] stitches up some of the bleeding on [victim]."), span_green("You stitch up some of the bleeding on [user == victim ? "yourself" : "[victim]"]."))
var/blood_sutured = I.is_bandage / self_penalty_mult
@@ -382,7 +382,7 @@
return
var/self_penalty_mult = (user == victim ? 1.5 : 1)
user.visible_message(span_danger("[user] begins cauterizing [victim]'s [limb.name] with [I]..."), span_danger("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]..."))
- if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
+ if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src,PROC_REF(still_exists))))
return
user.visible_message(span_green("[user] cauterizes some of the bleeding on [victim]."), span_green("You cauterize some of the bleeding on [victim]."))
@@ -417,7 +417,7 @@
user.visible_message(span_notice("[user] begins licking the wounds on [victim]'s [limb.name]."), span_notice("You begin licking the wounds on [victim]'s [limb.name]..."), ignored_mobs=victim)
to_chat(victim, "[user] begins to lick the wounds on your [limb.name]. highest.layer)
highest = hurt_atom
- INVOKE_ASYNC(src, .proc/SpinAnimation, 5, 2)
+ INVOKE_ASYNC(src,PROC_REF(SpinAnimation), 5, 2)
return TRUE
/*
diff --git a/code/game/atoms_movement.dm b/code/game/atoms_movement.dm
index fb95c6251dc..10a4bb2f0c3 100644
--- a/code/game/atoms_movement.dm
+++ b/code/game/atoms_movement.dm
@@ -383,7 +383,7 @@
///allows this movable to know when it has "entered" another area no matter how many movable atoms its stuffed into, uses important_recursive_contents
/atom/movable/proc/become_area_sensitive(trait_source = TRAIT_GENERIC)
if(!HAS_TRAIT(src, TRAIT_AREA_SENSITIVE))
- //RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_AREA_SENSITIVE), .proc/on_area_sensitive_trait_loss)
+ //RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_AREA_SENSITIVE),PROC_REF(on_area_sensitive_trait_loss))
for(var/atom/movable/location as anything in get_nested_locs(src) + src)
LAZYADDASSOCLIST(location.important_recursive_contents, RECURSIVE_CONTENTS_AREA_SENSITIVE, src)
ADD_TRAIT(src, TRAIT_AREA_SENSITIVE, trait_source)
diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm
index 49e0b9debb4..b16012eb0c7 100644
--- a/code/game/gamemodes/dynamic/dynamic.dm
+++ b/code/game/gamemodes/dynamic/dynamic.dm
@@ -403,7 +403,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
/datum/game_mode/dynamic/post_setup(report)
for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules)
rule.candidates.Cut() // The rule should not use candidates at this point as they all are null.
- addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_roundstart_rule, rule), rule.delay)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/game_mode/dynamic/,execute_roundstart_rule), rule), rule.delay)
..()
@@ -709,7 +709,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
if (forced_latejoin_rule.ready(TRUE))
if (!forced_latejoin_rule.repeatable)
latejoin_rules = remove_from_list(latejoin_rules, forced_latejoin_rule.type)
- addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_midround_latejoin_rule, forced_latejoin_rule), forced_latejoin_rule.delay)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/game_mode/dynamic/,execute_midround_latejoin_rule), forced_latejoin_rule), forced_latejoin_rule.delay)
forced_latejoin_rule = null
else if (latejoin_injection_cooldown < world.time && prob(get_injection_chance()))
diff --git a/code/game/gamemodes/dynamic/dynamic_hijacking.dm b/code/game/gamemodes/dynamic/dynamic_hijacking.dm
index 04892ad1530..12bb407f12b 100644
--- a/code/game/gamemodes/dynamic/dynamic_hijacking.dm
+++ b/code/game/gamemodes/dynamic/dynamic_hijacking.dm
@@ -1,5 +1,5 @@
/datum/game_mode/dynamic/proc/setup_hijacking()
- RegisterSignal(SSdcs, COMSIG_GLOB_PRE_RANDOM_EVENT, .proc/on_pre_random_event)
+ RegisterSignal(SSdcs, COMSIG_GLOB_PRE_RANDOM_EVENT,PROC_REF(on_pre_random_event))
/datum/game_mode/dynamic/proc/on_pre_random_event(datum/source, datum/round_event_control/round_event_control)
SIGNAL_HANDLER
diff --git a/code/game/gamemodes/dynamic/ruleset_picking.dm b/code/game/gamemodes/dynamic/ruleset_picking.dm
index 7c87f1bc82b..749c06132ba 100644
--- a/code/game/gamemodes/dynamic/ruleset_picking.dm
+++ b/code/game/gamemodes/dynamic/ruleset_picking.dm
@@ -37,7 +37,7 @@
current_midround_rulesets = drafted_rules - rule
midround_injection_timer_id = addtimer(
- CALLBACK(src, .proc/execute_midround_rule, rule), \
+ CALLBACK(src,PROC_REF(execute_midround_rule), rule), \
ADMIN_CANCEL_MIDROUND_TIME, \
TIMER_STOPPABLE, \
)
@@ -53,7 +53,7 @@
midround_injection_timer_id = null
if (!rule.repeatable)
midround_rules = remove_from_list(midround_rules, rule.type)
- addtimer(CALLBACK(src, .proc/execute_midround_latejoin_rule, rule), rule.delay)
+ addtimer(CALLBACK(src,PROC_REF(execute_midround_latejoin_rule), rule), rule.delay)
/// Executes a random latejoin ruleset from the list of drafted rules.
/datum/game_mode/dynamic/proc/pick_latejoin_rule(list/drafted_rules)
@@ -62,7 +62,7 @@
return
if (!rule.repeatable)
latejoin_rules = remove_from_list(latejoin_rules, rule.type)
- addtimer(CALLBACK(src, .proc/execute_midround_latejoin_rule, rule), rule.delay)
+ addtimer(CALLBACK(src,PROC_REF(execute_midround_latejoin_rule), rule), rule.delay)
return TRUE
/// Mainly here to facilitate delayed rulesets. All midround/latejoin rulesets are executed with a timered callback to this proc.
diff --git a/code/game/gamemodes/end_of_round_deathmatch.dm b/code/game/gamemodes/end_of_round_deathmatch.dm
index dc7e8c361e6..ef603001bbd 100644
--- a/code/game/gamemodes/end_of_round_deathmatch.dm
+++ b/code/game/gamemodes/end_of_round_deathmatch.dm
@@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(eord_arsenal, list(
/datum/controller/subsystem/ticker/proc/end_of_round_deathmatch()
- RegisterSignal(SSdcs, COMSIG_GLOB_MOB_LOGIN, .proc/grant_eord_respawn) // New mobs can now respawn into EORD
+ RegisterSignal(SSdcs, COMSIG_GLOB_MOB_LOGIN,PROC_REF(grant_eord_respawn)) // New mobs can now respawn into EORD
var/list/spawns = GLOB.deathmatch_spawn_points.Copy()
if(!length(spawns))
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 8c57b3563c4..270e9e20711 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -89,7 +89,7 @@
//finalize_monster_hunters() Disabled for now
if(!report)
report = !CONFIG_GET(flag/no_intercept_report)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/display_roundstart_logout_report), ROUNDSTART_LOGOUT_REPORT_TIME)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(display_roundstart_logout_report)), ROUNDSTART_LOGOUT_REPORT_TIME)
if(prob(20)) //CIT CHANGE - adds a 20% chance for the security level to be the opposite of what it normally is
flipseclevel = TRUE
@@ -106,7 +106,7 @@
query_round_game_mode.Execute()
qdel(query_round_game_mode)
if(report)
- addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h))
+ addtimer(CALLBACK(src,PROC_REF(send_intercept), 0), rand(waittime_l, waittime_h))
generate_station_goals()
gamemode_ready = TRUE
return 1
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 8b1b18660ab..1730e6575c0 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -68,7 +68,7 @@
/datum/game_mode/traitor/post_setup()
for(var/datum/mind/traitor in pre_traitors)
var/datum/antagonist/traitor/new_antag = new antag_datum()
- addtimer(CALLBACK(traitor, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(traitor, TYPE_PROC_REF(/datum/mind,add_antag_datum), new_antag), rand(10,100))
if(!exchange_blue)
exchange_blue = -1 //Block latejoiners from getting exchange objectives
..()
diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm
index 1f585722d74..4bb5afad2b6 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -147,7 +147,7 @@ Class Procs:
circuit = new circuit
circuit.apply_default_parts(src)
power_change()
- RegisterSignal(src, COMSIG_ENTER_AREA, .proc/power_change)
+ RegisterSignal(src, COMSIG_ENTER_AREA,PROC_REF(power_change))
if (occupant_typecache)
occupant_typecache = typecacheof(occupant_typecache)
@@ -452,7 +452,7 @@ Class Procs:
I.play_tool_sound(src, 50)
var/prev_anchored = anchored
//as long as we're the same anchored state and we're either on a floor or are anchored, toggle our anchored state
- if(I.use_tool(src, user, time, extra_checks = CALLBACK(src, .proc/unfasten_wrench_check, prev_anchored, user)))
+ if(I.use_tool(src, user, time, extra_checks = CALLBACK(src,PROC_REF(unfasten_wrench_check), prev_anchored, user)))
to_chat(user, span_notice("You [anchored ? "un" : ""]secure [src]."))
setAnchored(!anchored)
playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index 2d4131ca06c..6e51166fe16 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -45,4 +45,4 @@
to_chat(user, span_notice("You activate [src]. It now has [uses] uses of foam remaining."))
cooldown = world.time + cooldown_time
power_change()
- addtimer(CALLBACK(src, .proc/power_change), cooldown_time)
+ addtimer(CALLBACK(src,PROC_REF(power_change)), cooldown_time)
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 9fddfaef199..c07b8efee0d 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -77,7 +77,7 @@ GLOBAL_VAR_INIT(lathe_reports_done, 0)
matching_designs = list()
/obj/machinery/autolathe/ComponentInitialize()
- AddComponent(/datum/component/material_container, SSmaterials.materialtypes_by_category[MAT_CATEGORY_RIGID], 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert))
+ AddComponent(/datum/component/material_container, SSmaterials.materialtypes_by_category[MAT_CATEGORY_RIGID], 0, TRUE, null, null, CALLBACK(src,PROC_REF(AfterMaterialInsert)))
/obj/machinery/autolathe/Destroy()
QDEL_NULL(wires)
@@ -248,7 +248,7 @@ GLOBAL_VAR_INIT(lathe_reports_done, 0)
if(materials.materials[i] > 0)
list_to_show += i
- used_material = tgui_input_list(usr, "Choose [used_material]", "Custom Material", sortList(list_to_show, /proc/cmp_typepaths_asc))
+ used_material = tgui_input_list(usr, "Choose [used_material]", "Custom Material", sortList(list_to_show, GLOBAL_PROC_REF(cmp_typepaths_asc)))
if(isnull(used_material))
return //Didn't pick any material, so you can't build shit either.
custom_materials[used_material] += amount_needed
@@ -261,7 +261,7 @@ GLOBAL_VAR_INIT(lathe_reports_done, 0)
use_power(power)
icon_state = "autolathe_n"
var/time = is_stack ? 32 : (32 * coeff * multiplier) ** 0.8
- addtimer(CALLBACK(src, .proc/make_item, power, materials_used, custom_materials, multiplier, coeff, is_stack, usr), time)
+ addtimer(CALLBACK(src,PROC_REF(make_item), power, materials_used, custom_materials, multiplier, coeff, is_stack, usr), time)
. = TRUE
else
to_chat(usr, span_alert("Not enough materials for this operation."))
@@ -474,7 +474,7 @@ GLOBAL_VAR_INIT(lathe_reports_done, 0)
// to_chat(user, span_warning("You can't load \the [gunammo] into \the [src]!"))
// return FALSE // screw energy guns
/// if we're here, we loaded something, so lets queue up another cycle
- addtimer(CALLBACK(src, .proc/gun_loop, user, gunammo), 0.1 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(gun_loop), user, gunammo), 0.1 SECONDS)
return TRUE
/obj/machinery/autolathe/proc/load_from_bag(mob/user, obj/item/storage/bag/casings/cbag) // BIG BAG, BIG BAG, BIGABIGABIGBAG
@@ -606,14 +606,14 @@ GLOBAL_VAR_INIT(lathe_reports_done, 0)
report_card.inserted_something(item)
if(report_timer)
deltimer(report_timer)
- report_timer = addtimer(CALLBACK(src, .proc/print_record), 30 SECONDS, TIMER_STOPPABLE) // save in 4 seconds
+ report_timer = addtimer(CALLBACK(src,PROC_REF(print_record)), 30 SECONDS, TIMER_STOPPABLE) // save in 4 seconds
if(!istype(big_report_card))
big_report_card = new()
big_report_card.inserted_something(item)
if(big_report_timer)
deltimer(big_report_timer)
- big_report_timer = addtimer(CALLBACK(src, .proc/print_big_record), 15 MINUTES, TIMER_STOPPABLE) // save in 4 seconds
+ big_report_timer = addtimer(CALLBACK(src,PROC_REF(print_big_record)), 15 MINUTES, TIMER_STOPPABLE) // save in 4 seconds
/obj/machinery/autolathe/proc/print_record()
if(!istype(report_card, /datum/autolathe_loop_returns))
@@ -683,7 +683,7 @@ GLOBAL_VAR_INIT(lathe_reports_done, 0)
/obj/machinery/autolathe/ComponentInitialize()
var/list/extra_mats = list(/datum/material/plastic)
- AddComponent(/datum/component/material_container, SSmaterials.materialtypes_by_category[MAT_CATEGORY_RIGID] + extra_mats, 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert))
+ AddComponent(/datum/component/material_container, SSmaterials.materialtypes_by_category[MAT_CATEGORY_RIGID] + extra_mats, 0, TRUE, null, null, CALLBACK(src,PROC_REF(AfterMaterialInsert)))
/obj/machinery/autolathe/constructionlathe
name = "Workshop"
@@ -1052,7 +1052,7 @@ GLOBAL_VAR_INIT(lathe_reports_done, 0)
icon_state = icon_state_base
wooded = FALSE
framed = FALSE
- RegisterSignal(T, list(COMSIG_OBJ_DECONSTRUCT, COMSIG_OBJ_BREAK, COMSIG_PARENT_PREQDELETED), .proc/self_destruct)
+ RegisterSignal(T, list(COMSIG_OBJ_DECONSTRUCT, COMSIG_OBJ_BREAK, COMSIG_PARENT_PREQDELETED),PROC_REF(self_destruct))
/obj/machinery/autolathe/ammo/improvised/proc/self_destruct(disassembled)
var/obj/structure/table/T = GET_WEAKREF(mytable)
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 4f2e5aa2450..9503f8cd1c4 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -182,7 +182,7 @@
if(device)
device.pulsed()
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 15)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,update_icon)), 15)
/obj/machinery/button/power_change()
..()
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 40a233a8b30..d34ebb90e4b 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -117,7 +117,7 @@
if(can_use())
GLOB.cameranet.addCamera(src)
emped = 0 //Resets the consecutive EMP count
- addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100)
+ addtimer(CALLBACK(src,PROC_REF(cancelCameraAlarm)), 100)
for(var/i in GLOB.player_list)
var/mob/M = i
if (M.client.eye == src)
@@ -325,7 +325,7 @@
change_msg = "reactivates"
triggerCameraAlarm()
if(!QDELETED(src)) //We'll be doing it anyway in destroy
- addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100)
+ addtimer(CALLBACK(src,PROC_REF(cancelCameraAlarm)), 100)
if(displaymessage)
if(user)
visible_message(span_danger("[user] [change_msg] [src]!"))
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index cb4d6a3a0b7..64b80d3bec7 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -135,7 +135,7 @@
if(!G)
return FALSE
if(clonemind.damnation_type) //Can't clone the damned.
- INVOKE_ASYNC(src, .proc/horrifyingsound)
+ INVOKE_ASYNC(src,PROC_REF(horrifyingsound))
mess = TRUE
update_icon()
return FALSE
diff --git a/code/game/machinery/colormate.dm b/code/game/machinery/colormate.dm
index ae8ad8e392c..3960517ef05 100644
--- a/code/game/machinery/colormate.dm
+++ b/code/game/machinery/colormate.dm
@@ -91,7 +91,7 @@
return
if(user)
visible_message(span_warning("[user] stuffs [victim] into [src]!"))
- RegisterSignal(victim, COMSIG_LIVING_RESIST, .proc/free_me)
+ RegisterSignal(victim, COMSIG_LIVING_RESIST,PROC_REF(free_me))
inserted = victim
inserted.forceMove(src)
diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm
index 7776f0a36e4..3fd3f6aad09 100644
--- a/code/game/machinery/computer/_computer.dm
+++ b/code/game/machinery/computer/_computer.dm
@@ -21,7 +21,7 @@
/obj/machinery/computer/Initialize(mapload, obj/item/circuitboard/C)
. = ..()
for(var/obj/machinery/computer/pickComputer in range(1, src))
- addtimer(CALLBACK(pickComputer, .proc/why_overlays), 5)
+ addtimer(CALLBACK(pickComputer,PROC_REF(why_overlays)), 5)
power_change()
if(!QDELETED(C))
qdel(circuit)
@@ -31,7 +31,7 @@
/obj/machinery/computer/Destroy()
QDEL_NULL(circuit)
for(var/obj/machinery/computer/pickComputer in range(1, src))
- addtimer(CALLBACK(pickComputer, .proc/why_overlays), 5)
+ addtimer(CALLBACK(pickComputer,PROC_REF(why_overlays)), 5)
return ..()
/obj/machinery/computer/process()
@@ -169,5 +169,5 @@
for(var/obj/C in src)
C.forceMove(loc)
for(var/obj/machinery/computer/pickComputer in range(1, src))
- addtimer(CALLBACK(pickComputer, .proc/why_overlays), 5)
+ addtimer(CALLBACK(pickComputer,PROC_REF(why_overlays)), 5)
qdel(src)
diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm
index 46c03f38176..20631847238 100644
--- a/code/game/machinery/computer/apc_control.dm
+++ b/code/game/machinery/computer/apc_control.dm
@@ -112,7 +112,7 @@
log_game("[key_name(operator)] set the logs of [src] in [AREACOORD(src)] [should_log ? "On" : "Off"]")
if("restore-console")
restoring = TRUE
- addtimer(CALLBACK(src, .proc/restore_comp), rand(3,5) * 9)
+ addtimer(CALLBACK(src,PROC_REF(restore_comp)), rand(3,5) * 9)
if("access-apc")
var/ref = params["ref"]
playsound(src, "terminal_type", 50, FALSE)
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index e6b11cf1020..13498e9d6b8 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -72,7 +72,7 @@
if(!P.tool_start_check(user, amount=5))
return
to_chat(user, span_notice("You start adding cables to the frame..."))
- if(P.use_tool(src, user, 20, 5, 50, CALLBACK(src, .proc/check_state, 2)))
+ if(P.use_tool(src, user, 20, 5, 50, CALLBACK(src,PROC_REF(check_state), 2)))
to_chat(user, span_notice("You add cables to the frame."))
state = 3
icon_state = "3"
@@ -92,7 +92,7 @@
return
playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
to_chat(user, span_notice("You start to put in the glass panel..."))
- if(P.use_tool(src, user, 20, 2, 0, CALLBACK(src, .proc/check_state, 3)))
+ if(P.use_tool(src, user, 20, 2, 0, CALLBACK(src,PROC_REF(check_state), 3)))
to_chat(user, span_notice("You put in the glass panel."))
state = 4
src.icon_state = "4"
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index e66cee3e15a..9c40584735d 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -252,7 +252,7 @@
/obj/machinery/computer/security/telescreen/entertainment/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_CLICK, .proc/BigClick)
+ RegisterSignal(src, COMSIG_CLICK,PROC_REF(BigClick))
// Bypass clickchain to allow humans to use the telescreen from a distance
/obj/machinery/computer/security/telescreen/entertainment/proc/BigClick()
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index fdf999b00f1..795fd96811b 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -315,7 +315,7 @@
say("Initiating scan...")
var/prev_locked = scanner.locked
scanner.locked = TRUE
- addtimer(CALLBACK(src, .proc/finish_scan, scanner.occupant, prev_locked), 2 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(finish_scan), scanner.occupant, prev_locked), 2 SECONDS)
. = TRUE
//No locking an open scanner.
diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm
index a0523258c0a..6571d60e9e9 100644
--- a/code/game/machinery/computer/dna_console.dm
+++ b/code/game/machinery/computer/dna_console.dm
@@ -2026,7 +2026,7 @@
connected_scanner.set_linked_console(null)
connected_scanner = new_scanner
if(connected_scanner)
- RegisterSignal(connected_scanner, COMSIG_PARENT_QDELETING, .proc/react_to_scanner_del)
+ RegisterSignal(connected_scanner, COMSIG_PARENT_QDELETING,PROC_REF(react_to_scanner_del))
connected_scanner.set_linked_console(src)
/obj/machinery/computer/scan_consolenew/proc/react_to_scanner_del(datum/source)
diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm
index cafd0ba7022..d30825016ec 100644
--- a/code/game/machinery/computer/gulag_teleporter.dm
+++ b/code/game/machinery/computer/gulag_teleporter.dm
@@ -122,7 +122,7 @@
if("teleport")
if(!teleporter || !beacon)
return
- addtimer(CALLBACK(src, .proc/teleport, usr), 5)
+ addtimer(CALLBACK(src,PROC_REF(teleport), usr), 5)
/obj/machinery/computer/gulag_teleporter_computer/proc/scan_machinery()
teleporter = findteleporter()
diff --git a/code/game/machinery/computer/prisoner/gulag_teleporter.dm b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
index dcad3257ea2..3d41d609440 100644
--- a/code/game/machinery/computer/prisoner/gulag_teleporter.dm
+++ b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
@@ -111,7 +111,7 @@
if("teleport")
if(!teleporter || !beacon)
return
- addtimer(CALLBACK(src, .proc/teleport, usr), 5)
+ addtimer(CALLBACK(src,PROC_REF(teleport), usr), 5)
return TRUE
/obj/machinery/computer/prisoner/gulag_teleporter_computer/proc/scan_machinery()
diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm
index ae12df6697b..668ca41b0d5 100644
--- a/code/game/machinery/computer/teleporter.dm
+++ b/code/game/machinery/computer/teleporter.dm
@@ -90,7 +90,7 @@
say("Processing hub calibration to target...")
calibrating = TRUE
power_station.update_icon()
- addtimer(CALLBACK(src, .proc/finish_calibration), 50 * (3 - power_station.teleporter_hub.accuracy)) //Better parts mean faster calibration
+ addtimer(CALLBACK(src,PROC_REF(finish_calibration)), 50 * (3 - power_station.teleporter_hub.accuracy)) //Better parts mean faster calibration
. = TRUE
/obj/machinery/computer/teleporter/proc/finish_calibration()
@@ -150,7 +150,7 @@
var/mob/living/M = target
var/obj/item/implant/tracking/I = locate() in M.implants
if(I)
- RegisterSignal(I, COMSIG_IMPLANT_REMOVING, .proc/untarget_implant)
+ RegisterSignal(I, COMSIG_IMPLANT_REMOVING,PROC_REF(untarget_implant))
imp_t = I
else
target = null
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 6dbe09688f2..6e4e97cf40f 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -210,7 +210,7 @@
for(var/obj/item/co in replacer)
part_list += co
//Sort the parts. This ensures that higher tier items are applied first.
- part_list = sortTim(part_list, /proc/cmp_rped_sort)
+ part_list = sortTim(part_list, GLOBAL_PROC_REF(cmp_rped_sort))
for(var/path in req_components)
while(req_components[path] > 0 && (locate(path) in part_list))
diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm
index 39053af69fe..ba15ae17e68 100644
--- a/code/game/machinery/dance_machine.dm
+++ b/code/game/machinery/dance_machine.dm
@@ -298,7 +298,7 @@
glow.update_light()
continue
if(prob(2)) // Unique effects for the dance floor that show up randomly to mix things up
- INVOKE_ASYNC(src, .proc/hierofunk)
+ INVOKE_ASYNC(src,PROC_REF(hierofunk))
sleep(selection.song_beat)
#undef DISCO_INFENO_RANGE
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index ee5d4875fbb..2575b5e1cea 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -161,7 +161,7 @@
UnregisterSignal(linked_console, COMSIG_PARENT_QDELETING)
linked_console = new_console
if(linked_console)
- RegisterSignal(linked_console, COMSIG_PARENT_QDELETING, .proc/react_to_console_del)
+ RegisterSignal(linked_console, COMSIG_PARENT_QDELETING,PROC_REF(react_to_console_del))
/obj/machinery/dna_scannernew/proc/react_to_console_del(datum/source)
SIGNAL_HANDLER
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index d32c709727d..8fb688e8b9e 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -109,7 +109,7 @@
set_frequency(frequency)
if(closeOtherId != null)
- addtimer(CALLBACK(.proc/update_other_id), 5)
+ addtimer(CALLBACK(PROC_REF(update_other_id)), 5)
if(glass)
airlock_material = "glass"
if(security_level > AIRLOCK_SECURITY_METAL)
@@ -222,9 +222,9 @@
return
if(density)
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src,PROC_REF(open))
else
- INVOKE_ASYNC(src, .proc/close)
+ INVOKE_ASYNC(src,PROC_REF(close))
if("bolt")
if(command_value == "on" && locked)
@@ -344,7 +344,7 @@
if(cyclelinkedairlock.operating)
cyclelinkedairlock.delayed_close_requested = TRUE
else
- addtimer(CALLBACK(cyclelinkedairlock, .proc/close), 2)
+ addtimer(CALLBACK(cyclelinkedairlock,PROC_REF(close)), 2)
..()
/obj/machinery/door/airlock/proc/isElectrified()
@@ -401,7 +401,7 @@
secondsBackupPowerLost = 10
if(!spawnPowerRestoreRunning)
spawnPowerRestoreRunning = TRUE
- INVOKE_ASYNC(src, .proc/handlePowerRestore)
+ INVOKE_ASYNC(src,PROC_REF(handlePowerRestore))
update_icon()
/obj/machinery/door/airlock/proc/loseBackupPower()
@@ -409,7 +409,7 @@
src.secondsBackupPowerLost = 60
if(!spawnPowerRestoreRunning)
spawnPowerRestoreRunning = TRUE
- INVOKE_ASYNC(src, .proc/handlePowerRestore)
+ INVOKE_ASYNC(src,PROC_REF(handlePowerRestore))
update_icon()
/obj/machinery/door/airlock/proc/regainBackupPower()
@@ -1013,7 +1013,7 @@
user.visible_message("[user] is [welded ? "unwelding":"welding"] the airlock.", \
span_notice("You begin [welded ? "unwelding":"welding"] the airlock..."), \
span_italic("You hear welding."))
- if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user)))
+ if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src,PROC_REF(weld_checks), W, user)))
welded = !welded
user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \
span_notice("You [welded ? "weld the airlock shut":"unweld the airlock"]."))
@@ -1025,7 +1025,7 @@
user.visible_message("[user] is welding the airlock.", \
span_notice("You begin repairing the airlock..."), \
span_italic("You hear welding."))
- if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user)))
+ if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src,PROC_REF(weld_checks), W, user)))
obj_integrity = max_integrity
stat &= ~BROKEN
user.visible_message("[user.name] has repaired [src].", \
@@ -1071,9 +1071,9 @@
if(!axe.wielded)
to_chat(user, span_warning("You need to be wielding \the [axe] to do that!"))
return
- INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2)
+ INVOKE_ASYNC(src, (density ? PROC_REF(open) :PROC_REF(close)), 2)
else
- INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2)
+ INVOKE_ASYNC(src, (density ? PROC_REF(open) :PROC_REF(close)), 2)
if(istype(I, /obj/item/crowbar/power))
if(hasPower() && isElectrified())
@@ -1150,7 +1150,7 @@
operating = FALSE
if(delayed_close_requested)
delayed_close_requested = FALSE
- addtimer(CALLBACK(src, .proc/close), 1)
+ addtimer(CALLBACK(src,PROC_REF(close)), 1)
return TRUE
@@ -1299,7 +1299,7 @@
return
operating = TRUE
update_icon(AIRLOCK_EMAG, 1)
- addtimer(CALLBACK(src, .proc/open_sesame), 6)
+ addtimer(CALLBACK(src,PROC_REF(open_sesame)), 6)
return TRUE
/obj/machinery/door/airlock/proc/open_sesame()
@@ -1368,7 +1368,7 @@
secondsElectrified = seconds
diag_hud_set_electrified()
if(secondsElectrified > NOT_ELECTRIFIED)
- INVOKE_ASYNC(src, .proc/electrified_loop)
+ INVOKE_ASYNC(src,PROC_REF(electrified_loop))
if(user)
var/message
diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm
index fa516f4b6b5..ead50ad5ea4 100644
--- a/code/game/machinery/doors/alarmlock.dm
+++ b/code/game/machinery/doors/alarmlock.dm
@@ -23,7 +23,7 @@
. = ..()
SSradio.remove_object(src, air_frequency)
air_connection = SSradio.add_object(src, air_frequency, RADIO_TO_AIRALARM)
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src,PROC_REF(open))
/obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal)
..()
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index 620061b636b..844c8b9c741 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -89,7 +89,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)
@@ -117,7 +117,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/door.dm b/code/game/machinery/doors/door.dm
index df45712eb62..77c395ab266 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -374,7 +374,7 @@
if (. & EMP_PROTECT_SELF)
return
if(prob(severity/5) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) )
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src,PROC_REF(open))
/obj/machinery/door/proc/unelectrify()
secondsElectrified = MACHINE_NOT_ELECTRIFIED
@@ -495,7 +495,7 @@
close()
/obj/machinery/door/proc/autoclose_in(wait)
- addtimer(CALLBACK(src, .proc/autoclose), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(autoclose)), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE)
/obj/machinery/door/proc/requiresID()
return 1
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index 76100125ab8..3fde918351f 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -100,9 +100,9 @@
/obj/machinery/door/poddoor/shuttledock/proc/check()
var/turf/T = get_step(src, checkdir)
if(!istype(T, turftype))
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src,PROC_REF(open))
else
- INVOKE_ASYNC(src, .proc/close)
+ INVOKE_ASYNC(src,PROC_REF(close))
/obj/machinery/door/poddoor/incinerator_toxmix
name = "combustion chamber vent"
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 242608ab0cd..149fce7d606 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -51,7 +51,7 @@
src.unres_sides = unres_sides
var/static/list/loc_connections = list(
- COMSIG_ATOM_EXIT = .proc/on_exit,
+ COMSIG_ATOM_EXIT =PROC_REF(on_exit),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -367,11 +367,11 @@
return
if(density)
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src,PROC_REF(open))
else
- INVOKE_ASYNC(src, .proc/close)
+ INVOKE_ASYNC(src,PROC_REF(close))
if("touch")
- INVOKE_ASYNC(src, .proc/open_and_close)
+ INVOKE_ASYNC(src,PROC_REF(open_and_close))
/obj/machinery/door/window/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
switch(the_rcd.mode)
diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index 4ddc4ecc7c2..688ba4b936f 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -20,7 +20,7 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
/obj/machinery/doppler_array/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src,.proc/rot_message))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src,PROC_REF(rot_message)))
/obj/machinery/doppler_array/Destroy()
GLOB.doppler_arrays -= src
diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm
index 888b67f3440..57dbd7ad853 100644
--- a/code/game/machinery/embedded_controller/embedded_controller_base.dm
+++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm
@@ -58,10 +58,10 @@
if(program)
program.receive_user_command(href_list["command"])
- addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5)
+ addtimer(CALLBACK(program, TYPE_PROC_REF(/datum/computer/file/embedded_program,process)), 5)
usr.set_machine(src)
- addtimer(CALLBACK(src, .proc/updateDialog), 5)
+ addtimer(CALLBACK(src,PROC_REF(updateDialog)), 5)
/obj/machinery/embedded_controller/process()
if(program)
diff --git a/code/game/machinery/exp_cloner.dm b/code/game/machinery/exp_cloner.dm
index 1483228e250..2e71b0a1f9a 100644
--- a/code/game/machinery/exp_cloner.dm
+++ b/code/game/machinery/exp_cloner.dm
@@ -50,10 +50,10 @@
H.faction |= factions
H.Unconscious(80)
- RegisterSignal(src, COMSIG_NOTIFY_JOIN, .proc/join_as_defective_clone)
+ RegisterSignal(src, COMSIG_NOTIFY_JOIN,PROC_REF(join_as_defective_clone))
notify_ghosts("[clonename] is available to play as a defective clone.", source = src, action = NOTIFY_JOIN, flashwindow = FALSE)
- addtimer(CALLBACK(src, .proc/finish_cloning), 30 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(finish_cloning)), 30 SECONDS)
return TRUE
diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm
index 32d5f891ead..a24eb22bfb2 100644
--- a/code/game/machinery/harvester.dm
+++ b/code/game/machinery/harvester.dm
@@ -97,7 +97,7 @@
visible_message(span_notice("The [name] begins warming up!"))
say("Initializing harvest protocol.")
update_icon()
- addtimer(CALLBACK(src, .proc/harvest), interval)
+ addtimer(CALLBACK(src,PROC_REF(harvest)), interval)
/obj/machinery/harvester/proc/harvest()
warming_up = FALSE
@@ -132,7 +132,7 @@
operation_order.Remove(BP)
break
use_power(5000)
- addtimer(CALLBACK(src, .proc/harvest), interval)
+ addtimer(CALLBACK(src,PROC_REF(harvest)), interval)
/obj/machinery/harvester/proc/end_harvesting()
warming_up = FALSE
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index dc3676c474b..0c29e96e63e 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -639,7 +639,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
if(HOLORECORD_SOUND)
playsound(src,entry[2],50,TRUE)
if(HOLORECORD_DELAY)
- addtimer(CALLBACK(src,.proc/replay_entry,entry_number+1),entry[2])
+ addtimer(CALLBACK(src,PROC_REF(replay_entry),entry_number+1),entry[2])
return
if(HOLORECORD_LANGUAGE)
var/datum/language_holder/holder = replay_holo.get_language_holder()
diff --git a/code/game/machinery/hypnochair.dm b/code/game/machinery/hypnochair.dm
index c2edc26b474..93d2dcca657 100644
--- a/code/game/machinery/hypnochair.dm
+++ b/code/game/machinery/hypnochair.dm
@@ -95,7 +95,7 @@
START_PROCESSING(SSobj, src)
start_time = world.time
update_icon()
- timerid = addtimer(CALLBACK(src, .proc/finish_interrogation), 450, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src,PROC_REF(finish_interrogation)), 450, TIMER_STOPPABLE)
/obj/machinery/hypnochair/process()
var/mob/living/carbon/C = occupant
diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm
index b32ae66e41c..1f7be011c56 100644
--- a/code/game/machinery/limbgrower.dm
+++ b/code/game/machinery/limbgrower.dm
@@ -109,7 +109,7 @@
use_power(power)
flick("limbgrower_fill",src)
icon_state = "limbgrower_idleon"
- addtimer(CALLBACK(src, .proc/build_item),32*prod_coeff)
+ addtimer(CALLBACK(src,PROC_REF(build_item),32*prod_coeff))
else
to_chat(usr, "The limb grower is busy. Please wait for completion of previous operation.")
diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm
index c4494b822fe..0253d8fe713 100644
--- a/code/game/machinery/magnet.dm
+++ b/code/game/machinery/magnet.dm
@@ -129,7 +129,7 @@
on = !on
if(on)
- INVOKE_ASYNC(src, .proc/magnetic_process)
+ INVOKE_ASYNC(src,PROC_REF(magnetic_process))
@@ -316,7 +316,7 @@
if("togglemoving")
moving = !moving
if(moving)
- INVOKE_ASYNC(src, .proc/MagnetMove)
+ INVOKE_ASYNC(src,PROC_REF(MagnetMove))
updateUsrDialog()
diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm
index e09348d0e43..37a4599a2ba 100644
--- a/code/game/machinery/mass_driver.dm
+++ b/code/game/machinery/mass_driver.dm
@@ -47,7 +47,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -57,4 +57,4 @@
if(isliving(AM))
var/mob/living/L = AM
to_chat(L, span_warning("You feel something click beneath you!"))
- addtimer(CALLBACK(src, .proc/drive), drive_delay)
+ addtimer(CALLBACK(src,PROC_REF(drive)), drive_delay)
diff --git a/code/game/machinery/obstacles_barricades.dm b/code/game/machinery/obstacles_barricades.dm
index 997a7005e4a..96ffb0fa0e1 100644
--- a/code/game/machinery/obstacles_barricades.dm
+++ b/code/game/machinery/obstacles_barricades.dm
@@ -159,7 +159,7 @@
/obj/structure/barricade/security/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/deploy), deploy_time)
+ addtimer(CALLBACK(src,PROC_REF(deploy)), deploy_time)
/obj/structure/barricade/security/proc/deploy()
icon_state = "barrier1"
@@ -243,7 +243,7 @@
"Interior Wall" = image(icon = 'icons/fallout/turfs/walls/interior.dmi', icon_state = "interior0"),
"House Wall" = image(icon = 'icons/fallout/turfs/walls/house.dmi', icon_state = "house0")
)
- var/chosen_wall = show_radial_menu(user, src, walls, custom_check = CALLBACK(src, .proc/check_menu, user, I), require_near = TRUE, tooltips = TRUE)
+ var/chosen_wall = show_radial_menu(user, src, walls, custom_check = CALLBACK(src,PROC_REF(check_menu), user, I), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user, I))
return
switch(chosen_wall)
@@ -277,7 +277,7 @@
"House Window" = image(icon = 'icons/obj/wood_window.dmi', icon_state = "housewindow"),
"Wood Framed Window" = image(icon = 'icons/obj/wood_window.dmi', icon_state = "woodwindow")
)
- var/chosen_window = show_radial_menu(user, src, windows, custom_check = CALLBACK(src, .proc/check_menu, user, I), require_near = TRUE, tooltips = TRUE)
+ var/chosen_window = show_radial_menu(user, src, windows, custom_check = CALLBACK(src,PROC_REF(check_menu), user, I), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user, I))
return
switch(chosen_window)
@@ -304,7 +304,7 @@
"Tent Wall" = image(icon = 'icons/fallout/turfs/walls/tent.dmi', icon_state = "tent0"),
"Tent Flaps" = image(icon = 'icons/fallout/structures/doors.dmi', icon_state = "tent")
)
- var/chosen_tent = show_radial_menu(user, src, tentwalls, custom_check = CALLBACK(src, .proc/check_menu, user, I), require_near = TRUE, tooltips = TRUE)
+ var/chosen_tent = show_radial_menu(user, src, tentwalls, custom_check = CALLBACK(src,PROC_REF(check_menu), user, I), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user, I))
return
switch(chosen_tent)
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 7b47bec54b7..0a89b32b355 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -235,7 +235,7 @@
base.layer = NOT_HIGH_OBJ_LAYER
underlays += base
if(!has_cover)
- INVOKE_ASYNC(src, .proc/popUp)
+ INVOKE_ASYNC(src,PROC_REF(popUp))
/obj/machinery/porta_turret/proc/toggle_on(set_to)
var/current = on
@@ -469,7 +469,7 @@
toggle_on(FALSE) //turns off the turret temporarily
update_icon()
//6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit
- addtimer(CALLBACK(src, .proc/toggle_on, TRUE), 6 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(toggle_on), TRUE), 6 SECONDS)
//turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here
/obj/machinery/porta_turret/emp_act(severity)
@@ -489,7 +489,7 @@
toggle_on(FALSE)
remove_control()
- addtimer(CALLBACK(src, .proc/toggle_on, TRUE), rand(60,600))
+ addtimer(CALLBACK(src,PROC_REF(toggle_on), TRUE), rand(60,600))
/obj/machinery/porta_turret/take_damage(damage, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, atom/attacked_by)
. = ..()
@@ -577,16 +577,16 @@
/// We can see our target, start blasting
if(activity_state == TURRET_ALERT_MODE)
record_target_weakref(GET_WEAKREF(last_target)) // Update our target and turf's position every time we process
- INVOKE_ASYNC(src, .proc/shine_laser_pointer) // lazer
+ INVOKE_ASYNC(src,PROC_REF(shine_laser_pointer)) // lazer
if(!can_see_target()) // If we cant see the target, go into caution mode
change_activity_state(TURRET_CAUTION_MODE)
else
- INVOKE_ASYNC(src, .proc/open_fire_on_target)
+ INVOKE_ASYNC(src,PROC_REF(open_fire_on_target))
/// We lost sight of our target, shoot where we last saw them
if(activity_state == TURRET_CAUTION_MODE)
- INVOKE_ASYNC(src, .proc/shine_laser_pointer)
- INVOKE_ASYNC(src, .proc/open_fire_on_target)
+ INVOKE_ASYNC(src,PROC_REF(shine_laser_pointer))
+ INVOKE_ASYNC(src,PROC_REF(open_fire_on_target))
if(!caution_bursts_left)
change_activity_state(TURRET_EVASION_MODE)
@@ -1053,7 +1053,7 @@
remove_control()
return FALSE
log_combat(caller,A,"fired with manual turret control at")
- INVOKE_ASYNC(src, .proc/open_fire_on_target, A)
+ INVOKE_ASYNC(src,PROC_REF(open_fire_on_target), A)
return TRUE
/obj/machinery/porta_turret/syndicate
@@ -1515,11 +1515,11 @@
if(team_color == "blue")
if(istype(P, /obj/item/projectile/beam/lasertag/redtag))
toggle_on(FALSE)
- addtimer(CALLBACK(src, .proc/toggle_on, TRUE), 10 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(toggle_on), TRUE), 10 SECONDS)
else if(team_color == "red")
if(istype(P, /obj/item/projectile/beam/lasertag/bluetag))
toggle_on(FALSE)
- addtimer(CALLBACK(src, .proc/toggle_on, TRUE), 10 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(toggle_on), TRUE), 10 SECONDS)
/* * * * * * * * * * * *
* Fallout 13 turrets *
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index 87135e5413a..70d091d9e0d 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -26,7 +26,7 @@
req_one_access = get_all_accesses() + get_all_centcom_access()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -105,7 +105,7 @@
/obj/machinery/recycler/proc/on_entered(datum/source, atom/movable/AM)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/eat, AM)
+ INVOKE_ASYNC(src,PROC_REF(eat), AM)
/obj/machinery/recycler/proc/eat(atom/AM0)
if(stat & (BROKEN|NOPOWER) || safety_mode)
@@ -191,7 +191,7 @@
safety_mode = TRUE
update_icon()
L.forceMove(loc)
- addtimer(CALLBACK(src, .proc/reboot), SAFETY_COOLDOWN)
+ addtimer(CALLBACK(src,PROC_REF(reboot)), SAFETY_COOLDOWN)
/obj/machinery/recycler/proc/reboot()
playsound(src, 'sound/machines/ping.ogg', 50, 0)
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 6da2fc37480..07cb253bc54 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -338,7 +338,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
Radio.set_frequency(radio_freq)
Radio.talk_into(src, "[emergency] emergency in [department]!!", radio_freq)
update_icon()
- addtimer(CALLBACK(src, .proc/clear_emergency), 5 MINUTES)
+ addtimer(CALLBACK(src,PROC_REF(clear_emergency)), 5 MINUTES)
if(href_list["department"] && message)
var/sending = message
diff --git a/code/game/machinery/sheetifier.dm b/code/game/machinery/sheetifier.dm
index 7b834011940..6605874ea73 100644
--- a/code/game/machinery/sheetifier.dm
+++ b/code/game/machinery/sheetifier.dm
@@ -13,7 +13,7 @@
/obj/machinery/sheetifier/Initialize()
. = ..()
- AddComponent(/datum/component/material_container, list(/datum/material/meat), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE, /obj/item/reagent_containers/food/snacks/meat/slab, CALLBACK(src, .proc/CanInsertMaterials), CALLBACK(src, .proc/AfterInsertMaterials))
+ AddComponent(/datum/component/material_container, list(/datum/material/meat), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE, /obj/item/reagent_containers/food/snacks/meat/slab, CALLBACK(src,PROC_REF(CanInsertMaterials)), CALLBACK(src,PROC_REF(AfterInsertMaterials)))
/obj/machinery/sheetifier/update_overlays()
. = ..()
@@ -35,7 +35,7 @@
var/mutable_appearance/processing_overlay = mutable_appearance(icon, "processing")
processing_overlay.color = last_inserted_material.color
flick_overlay_static(processing_overlay, src, 64)
- addtimer(CALLBACK(src, .proc/finish_processing), 64)
+ addtimer(CALLBACK(src,PROC_REF(finish_processing)), 64)
/obj/machinery/sheetifier/proc/finish_processing()
busy_processing = FALSE
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 21d800393dd..b81bbed9e5d 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -42,13 +42,13 @@
give_money(rand(1, 125))
crct.start_cash = FALSE
- INVOKE_ASYNC(src, .proc/toggle_reel_spin, TRUE)//The reels won't spin unless we activate them
+ INVOKE_ASYNC(src,PROC_REF(toggle_reel_spin), TRUE)//The reels won't spin unless we activate them
var/list/reel = reels[1]
for(var/i = 0, i < reel.len, i++) //Populate the reels.
randomize_reels()
- INVOKE_ASYNC(src, .proc/toggle_reel_spin, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(toggle_reel_spin), FALSE)
/obj/machinery/computer/slot_machine/Destroy()
if(balance)
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index eb5357de506..e60d8147985 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -232,7 +232,7 @@
else
mob_occupant.adjustFireLoss(rand(10, 16))
mob_occupant.emote("scream")
- addtimer(CALLBACK(src, .proc/cook), 50)
+ addtimer(CALLBACK(src,PROC_REF(cook)), 50)
else
uv_cycles = initial(uv_cycles)
uv = FALSE
@@ -321,7 +321,7 @@
if(locked)
visible_message(span_notice("You see [user] kicking against the doors of [src]!"), \
span_notice("You start kicking against the doors..."))
- addtimer(CALLBACK(src, .proc/resist_open, user), 300)
+ addtimer(CALLBACK(src,PROC_REF(resist_open), user), 300)
else
open_machine()
dump_contents()
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index f387986c1bc..d27538ac8da 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -389,7 +389,7 @@
chem_splash(get_turf(src), spread_range, list(reactants), temp_boost)
// Detonate it again in one second, until it's out of juice.
- addtimer(CALLBACK(src, .proc/detonate), 10)
+ addtimer(CALLBACK(src,PROC_REF(detonate)), 10)
// If it's not a time release bomb, do normal explosion
diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm
index 03773053b28..bf2f27c13b7 100644
--- a/code/game/machinery/telecomms/computers/message.dm
+++ b/code/game/machinery/telecomms/computers/message.dm
@@ -216,7 +216,7 @@
if(istype(S) && S.hack_software)
hacking = TRUE
//Time it takes to bruteforce is dependant on the password length.
- addtimer(CALLBACK(src, .proc/BruteForce, usr), (10 SECONDS) * length(linkedServer.decryptkey))
+ addtimer(CALLBACK(src,PROC_REF(BruteForce), usr), (10 SECONDS) * length(linkedServer.decryptkey))
if("del_log")
if(!auth)
@@ -344,7 +344,7 @@
var/obj/item/paper/monitorkey/MK = new(loc, linkedServer)
// Will help make emagging the console not so easy to get away with.
MK.info += "
�%@%(*$%&(�&?*(%&�/{}"
- addtimer(CALLBACK(src, .proc/UnmagConsole), (10 SECONDS) * length(linkedServer.decryptkey))
+ addtimer(CALLBACK(src,PROC_REF(UnmagConsole)), (10 SECONDS) * length(linkedServer.decryptkey))
//message = rebootmsg
return TRUE
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index 9b6904b71f6..0aa0d8b0055 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -105,7 +105,7 @@
R.set_connected_ai(masterAI)
R.lawsync()
R.lawupdate = 1
- addtimer(CALLBACK(src, .proc/unlock_new_robot, R), 50)
+ addtimer(CALLBACK(src,PROC_REF(unlock_new_robot), R), 50)
/obj/machinery/transformer/proc/unlock_new_robot(mob/living/silicon/robot/R)
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 255b2076df2..f6476ecaa58 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -125,7 +125,7 @@ GLOBAL_LIST_INIT(dye_registry, list(
busy = TRUE
update_icon()
- addtimer(CALLBACK(src, .proc/wash_cycle), 200)
+ addtimer(CALLBACK(src,PROC_REF(wash_cycle)), 200)
START_PROCESSING(SSfastprocess, src)
return TRUE
diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm
index b47869caf30..39b979caf23 100644
--- a/code/game/mecha/combat/durand.dm
+++ b/code/game/mecha/combat/durand.dm
@@ -25,8 +25,8 @@
shield = new/obj/durand_shield
shield.chassis = src
shield.layer = layer
- RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, .proc/relay)
- RegisterSignal(src, COMSIG_PROJECTILE_PREHIT, .proc/prehit)
+ RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE,PROC_REF(relay))
+ RegisterSignal(src, COMSIG_PROJECTILE_PREHIT,PROC_REF(prehit))
. = ..()
/obj/mecha/combat/durand/Destroy()
@@ -91,7 +91,7 @@ Expects a turf. Returns true if the attack should be blocked, false if not.*/
. = TRUE
return
-obj/mecha/combat/durand/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0)
+/obj/mecha/combat/durand/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0)
if(defense_check(user.loc))
// log_message("Attack absorbed by defense field. Attacker - [user].", LOG_MECHA, color="orange")
shield.attack_generic(user, damage_amount, damage_type, damage_flag, sound_effect, armor_penetration)
@@ -144,7 +144,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe
/obj/durand_shield/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, .proc/activate)
+ RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE,PROC_REF(activate))
/obj/durand_shield/Destroy()
if(chassis)
diff --git a/code/game/mecha/combat/neovgre.dm b/code/game/mecha/combat/neovgre.dm
index 49c0e7508fd..3b946bcd83b 100644
--- a/code/game/mecha/combat/neovgre.dm
+++ b/code/game/mecha/combat/neovgre.dm
@@ -52,7 +52,7 @@
M.dust()
playsound(src, 'sound/effects/neovgre_exploding.ogg', 100, 0)
src.visible_message("The reactor has gone critical, its going to blow!")
- addtimer(CALLBACK(src,.proc/go_critical),breach_time)
+ addtimer(CALLBACK(src,PROC_REF(go_critical)),breach_time)
/obj/mecha/combat/neovgre/proc/go_critical()
explosion(get_turf(loc), 3, 5, 10, 20, 30)
diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm
index 8d29c3f7385..e23df42fe06 100644
--- a/code/game/mecha/equipment/mecha_equipment.dm
+++ b/code/game/mecha/equipment/mecha_equipment.dm
@@ -97,7 +97,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/start_cooldown()
set_ready_state(0)
chassis.use_power(energy_drain)
- addtimer(CALLBACK(src, .proc/set_ready_state, 1), equip_cooldown)
+ addtimer(CALLBACK(src,PROC_REF(set_ready_state), 1), equip_cooldown)
/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(atom/target)
if(!chassis)
diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm
index beaaeb9a381..00fe6ca62d2 100644
--- a/code/game/mecha/equipment/tools/work_tools.dm
+++ b/code/game/mecha/equipment/tools/work_tools.dm
@@ -367,7 +367,7 @@
/obj/item/mecha_parts/mecha_equipment/cable_layer/attach()
..()
- event = chassis.events.addEvent("onMove", CALLBACK(src, .proc/layCable))
+ event = chassis.events.addEvent("onMove", CALLBACK(src,PROC_REF(layCable)))
return
/obj/item/mecha_parts/mecha_equipment/cable_layer/detach()
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 6219ead08a7..03bbc459874 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -69,7 +69,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/energy/start_cooldown()
set_ready_state(0)
chassis.use_power(energy_drain*get_shot_amount())
- addtimer(CALLBACK(src, .proc/set_ready_state, 1), equip_cooldown)
+ addtimer(CALLBACK(src,PROC_REF(set_ready_state), 1), equip_cooldown)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
equip_cooldown = 7
@@ -340,7 +340,7 @@
var/turf/T = get_turf(src)
message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_VERBOSEJMP(T)]")
log_game("[key_name(chassis.occupant)] fired a [src] in [AREACOORD(T)]")
- addtimer(CALLBACK(F, /obj/item/grenade/flashbang.proc/prime), det_time)
+ addtimer(CALLBACK(F, TYPE_PROC_REF(/obj/item/grenade/flashbang,prime)), det_time)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze
name = "\improper SOB-3 grenade launcher"
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 7933f62d8d7..20a4732752f 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -67,7 +67,7 @@
/obj/machinery/mecha_part_fabricator/Initialize(mapload)
stored_research = new
- rmat = AddComponent(/datum/component/remote_materials, "mechfab", mapload && link_on_init, _after_insert=CALLBACK(src, .proc/AfterMaterialInsert))
+ rmat = AddComponent(/datum/component/remote_materials, "mechfab", mapload && link_on_init, _after_insert=CALLBACK(src,PROC_REF(AfterMaterialInsert)))
RefreshParts() //Recalculating local material sizes if the fab isn't linked
return ..()
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index bd2d627af82..93358142951 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -367,7 +367,7 @@
for(var/mob/M in get_hearers_in_view(7,src))
if(M.client)
speech_bubble_recipients.Add(M.client)
- INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, image('icons/mob/talk.dmi', src, "machine[say_test(raw_message)]",MOB_LAYER+1), speech_bubble_recipients, 30)
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), image('icons/mob/talk.dmi', src, "machine[say_test(raw_message)]",MOB_LAYER+1), speech_bubble_recipients, 30)
////////////////////////////
///// Action processing ////
diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm
index e6ec759a5dd..75c33b00240 100644
--- a/code/game/objects/effects/alien_acid.dm
+++ b/code/game/objects/effects/alien_acid.dm
@@ -24,7 +24,7 @@
pixel_y = target.pixel_y + rand(-4,4)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index ddc8a81ba05..de9df20260b 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -98,7 +98,7 @@
/obj/effect/anomaly/grav/Initialize(mapload, new_lifespan, core_drop_chance)
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -167,7 +167,7 @@
/obj/effect/anomaly/flux/Initialize(mapload, new_lifespan, core_drop_chance)
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -181,7 +181,7 @@
/obj/effect/anomaly/flux/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/mobShock, AM)
+ INVOKE_ASYNC(src,PROC_REF(mobShock), AM)
/obj/effect/anomaly/flux/Bump(atom/A)
mobShock(A)
@@ -260,7 +260,7 @@
if(ismob(A) && !(A in flashers)) // don't flash if we're already doing an effect
var/mob/M = A
if(M.client)
- INVOKE_ASYNC(src, .proc/blue_effect, M)
+ INVOKE_ASYNC(src,PROC_REF(blue_effect), M)
/obj/effect/anomaly/bluespace/proc/blue_effect(mob/M)
var/obj/blueeffect = new /obj(src)
@@ -295,7 +295,7 @@
T.atmos_spawn_air("o2=5;plasma=5;TEMP=1000")
/obj/effect/anomaly/pyro/detonate()
- INVOKE_ASYNC(src, .proc/makepyroslime)
+ INVOKE_ASYNC(src,PROC_REF(makepyroslime))
/obj/effect/anomaly/pyro/proc/makepyroslime()
var/turf/open/T = get_turf(src)
diff --git a/code/game/objects/effects/blessing.dm b/code/game/objects/effects/blessing.dm
index 6db28b37003..e64387a20e2 100644
--- a/code/game/objects/effects/blessing.dm
+++ b/code/game/objects/effects/blessing.dm
@@ -16,7 +16,7 @@
I.alpha = 64
I.appearance_flags = RESET_ALPHA
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/blessedAware, "blessing", I)
- RegisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT, .proc/block_cult_teleport)
+ RegisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT,PROC_REF(block_cult_teleport))
/obj/effect/blessing/Destroy()
UnregisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT)
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index 66e4c2866f9..ff39915bb92 100644
--- a/code/game/objects/effects/contraband.dm
+++ b/code/game/objects/effects/contraband.dm
@@ -30,7 +30,7 @@
name = "[name] - [poster_structure.original_name]"
//If the poster structure is being deleted something has gone wrong, kill yourself off too
- RegisterSignal(poster_structure, COMSIG_PARENT_QDELETING, .proc/react_to_deletion)
+ RegisterSignal(poster_structure, COMSIG_PARENT_QDELETING,PROC_REF(react_to_deletion))
/obj/item/poster/Destroy()
diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm
index 10f1adac583..488ac007ba6 100644
--- a/code/game/objects/effects/decals/cleanable.dm
+++ b/code/game/objects/effects/decals/cleanable.dm
@@ -33,11 +33,11 @@
AddComponent(/datum/component/infective, diseases_to_add)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
- addtimer(CALLBACK(src, /datum.proc/_AddElement, list(/datum/element/beauty, beauty)), 0)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum,_AddElement), list(/datum/element/beauty, beauty)), 0)
/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal
if(mergeable_decal)
diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm
index c57716b9e58..df024df1b6f 100644
--- a/code/game/objects/effects/decals/cleanable/humans.dm
+++ b/code/game/objects/effects/decals/cleanable/humans.dm
@@ -111,8 +111,8 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
- COMSIG_ATOM_EXITED = .proc/on_exit,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
+ COMSIG_ATOM_EXITED =PROC_REF(on_exit),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm
index ad5c84a6643..24e97da6003 100644
--- a/code/game/objects/effects/effect_system/effect_system.dm
+++ b/code/game/objects/effects/effect_system/effect_system.dm
@@ -54,7 +54,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
for(var/i in 1 to number)
if(total_effects > 20)
return
- // INVOKE_ASYNC(src, .proc/generate_effect) // STOP FUCKING ASYNCING
+ // INVOKE_ASYNC(src,PROC_REF(generate_effect)) // STOP FUCKING ASYNCING
generate_effect()
@@ -78,7 +78,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
sleep(5)
step(E,direction)
if(!QDELETED(src))
- addtimer(CALLBACK(src, .proc/decrement_total_effect), 20)
+ addtimer(CALLBACK(src,PROC_REF(decrement_total_effect)), 20)
*/
/datum/effect_system/proc/generate_effect()
if(holder)
@@ -94,7 +94,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
var/step_delay = 5
var/datum/move_loop/loop = SSmove_manager.move(effect, direction, step_delay, timeout = step_delay * step_amt, priority = MOVEMENT_ABOVE_SPACE_PRIORITY)
- RegisterSignal(loop, COMSIG_PARENT_QDELETING, .proc/decrement_total_effect)
+ RegisterSignal(loop, COMSIG_PARENT_QDELETING,PROC_REF(decrement_total_effect))
/datum/effect_system/proc/decrement_total_effect()
total_effects--
diff --git a/code/game/objects/effects/effect_system/effects_explosion.dm b/code/game/objects/effects/effect_system/effects_explosion.dm
index d208510e860..748661e646d 100644
--- a/code/game/objects/effects/effect_system/effects_explosion.dm
+++ b/code/game/objects/effects/effect_system/effects_explosion.dm
@@ -17,7 +17,7 @@
var/direct = pick(GLOB.alldirs)
var/steps_amt = pick(1;25,2;50,3,4;200)
for(var/j in 1 to steps_amt)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/_step, expl, direct), j)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(_step), expl, direct), j)
/obj/effect/explosion
name = "fire"
@@ -55,4 +55,4 @@
S.start()
/datum/effect_system/explosion/smoke/start()
..()
- addtimer(CALLBACK(src, .proc/create_smoke), 5)
+ addtimer(CALLBACK(src,PROC_REF(create_smoke)), 5)
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index a3c9c2be8e4..551a5f0718f 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -42,7 +42,7 @@
/obj/effect/particle_effect/smoke/proc/kill_smoke()
STOP_PROCESSING(SSobj, src)
- INVOKE_ASYNC(src, .proc/fade_out)
+ INVOKE_ASYNC(src,PROC_REF(fade_out))
QDEL_IN(src, 10)
/obj/effect/particle_effect/smoke/process()
@@ -64,7 +64,7 @@
if(C.smoke_delay)
return 0
C.smoke_delay++
- addtimer(CALLBACK(src, .proc/remove_smoke_delay, C), 10)
+ addtimer(CALLBACK(src,PROC_REF(remove_smoke_delay), C), 10)
return 1
/obj/effect/particle_effect/smoke/proc/remove_smoke_delay(mob/living/carbon/C)
diff --git a/code/game/objects/effects/effect_system/effects_smoke_new.dm b/code/game/objects/effects/effect_system/effects_smoke_new.dm
index fa248c855b7..47e2b9c4127 100644
--- a/code/game/objects/effects/effect_system/effects_smoke_new.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke_new.dm
@@ -95,7 +95,7 @@
glide_size = driftdelay
alpha = 255 / clamp(distance_modifier, 1, 3)
transform = matrix(transform) * clamp(1 / max(distance_modifier + 1, 1), 0.5, 3)
- INVOKE_ASYNC(src, .proc/fade_out)
+ INVOKE_ASYNC(src,PROC_REF(fade_out))
walk(src, driftdir, driftdelay, 32)
lifetime = rand(lifetime*0.5, lifetime*3)
QDEL_IN(src, lifetime)
diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm
index f24d64e34f8..f36cc2dfdb6 100644
--- a/code/game/objects/effects/glowshroom.dm
+++ b/code/game/objects/effects/glowshroom.dm
@@ -80,7 +80,7 @@
else //if on the floor, glowshroom on-floor sprite
icon_state = base_icon_state
- //addtimer(CALLBACK(src, .proc/Spread), delay)
+ //addtimer(CALLBACK(src,PROC_REF(Spread)), delay)
/obj/structure/glowshroom/proc/Spread()
return //temp disable
@@ -129,7 +129,7 @@
shrooms_planted++ //if we failed due to generation, don't try to plant one later
if(shrooms_planted < myseed.yield) //if we didn't get all possible shrooms planted, try again later
myseed.yield -= shrooms_planted
- addtimer(CALLBACK(src, .proc/Spread), delay)*/
+ addtimer(CALLBACK(src,PROC_REF(Spread)), delay)*/
/obj/structure/glowshroom/proc/CalcDir(turf/location = loc)
var/direction = 16
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 2c7336c6e3e..760c9544073 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -524,7 +524,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
name = "NCR Lieutenant"
icon_state = "NCR Lieutenant"
-obj/effect/landmark/start/f13/ncrlogisticsofficer
+/obj/effect/landmark/start/f13/ncrlogisticsofficer
name = "NCR Logistics Officer"
icon_state = "NCR Lieutenant"
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index def5de5638d..ddcb553ee3b 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -11,7 +11,7 @@
/obj/effect/mine/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -30,7 +30,7 @@
if(AM.movement_type & FLYING)
return
- INVOKE_ASYNC(src, .proc/triggermine, AM)
+ INVOKE_ASYNC(src,PROC_REF(triggermine), AM)
/obj/effect/mine/proc/triggermine(mob/victim)
if(triggered)
diff --git a/code/game/objects/effects/particle_holder.dm b/code/game/objects/effects/particle_holder.dm
index 010688b70c2..43a5d83bec7 100644
--- a/code/game/objects/effects/particle_holder.dm
+++ b/code/game/objects/effects/particle_holder.dm
@@ -19,8 +19,8 @@
stack_trace("particle holder was created with no loc!")
return INITIALIZE_HINT_QDEL
if(ismovable(loc))
- RegisterSignal(loc, COMSIG_MOVABLE_MOVED, .proc/on_move)
- RegisterSignal(loc, COMSIG_PARENT_QDELETING, .proc/on_qdel)
+ RegisterSignal(loc, COMSIG_MOVABLE_MOVED,PROC_REF(on_move))
+ RegisterSignal(loc, COMSIG_PARENT_QDELETING,PROC_REF(on_qdel))
weak_attached = WEAKREF(loc)
particles = new particle_path
update_visual_contents(loc)
diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm
index ddc9b8ced45..b3911c2a762 100644
--- a/code/game/objects/effects/portals.dm
+++ b/code/game/objects/effects/portals.dm
@@ -33,7 +33,7 @@
/obj/effect/portal/Initialize(mapload, _lifespan, obj/effect/portal/_linked, automatic_link, turf/hard_target_override, atmos_link_override)
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm
index 21ef9823826..01b498a1319 100644
--- a/code/game/objects/effects/proximity.dm
+++ b/code/game/objects/effects/proximity.dm
@@ -23,7 +23,7 @@
else if(hasprox_receiver == host) //Default case
hasprox_receiver = H
host = H
- RegisterSignal(host, COMSIG_MOVABLE_MOVED, .proc/HandleMove)
+ RegisterSignal(host, COMSIG_MOVABLE_MOVED,PROC_REF(HandleMove))
last_host_loc = host.loc
SetRange(current_range,TRUE)
@@ -104,8 +104,8 @@
return INITIALIZE_HINT_QDEL
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
- COMSIG_ATOM_EXITED = .proc/on_exit,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
+ COMSIG_ATOM_EXITED =PROC_REF(on_exit),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/game/objects/effects/spawners/f13lootdrop.dm b/code/game/objects/effects/spawners/f13lootdrop.dm
index 6e6aee6d51e..33bded90c9d 100644
--- a/code/game/objects/effects/spawners/f13lootdrop.dm
+++ b/code/game/objects/effects/spawners/f13lootdrop.dm
@@ -1761,7 +1761,7 @@ there should be very few of these spawns on the whole map. finding one should be
/obj/item/ammo_box/magazine/m556/rifle/
)
-obj/effect/spawner/bundle/f13/combat_rifle
+/obj/effect/spawner/bundle/f13/combat_rifle
name = "combat rifle and ammo spawner"
items = list(
/obj/item/gun/ballistic/automatic/combat,
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index f0d571ce33b..fbc7448f037 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -32,7 +32,7 @@
if(cull_spawners(mapload, block_tier_swap, survived_snap))
return INITIALIZE_HINT_NORMAL
if(delay_spawn) // you have *checks watch* until the end of this frame to spawn the stuff. Otherwise it'll look wierd
- RegisterSignal(src, COMSIG_ATOM_POST_ADMIN_SPAWN, .proc/spawn_the_stuff)
+ RegisterSignal(src, COMSIG_ATOM_POST_ADMIN_SPAWN,PROC_REF(spawn_the_stuff))
return INITIALIZE_HINT_NORMAL // have fun!
spawn_the_stuff() // lov dan
return INITIALIZE_HINT_QDEL
diff --git a/code/game/objects/effects/spawners/roomspawner.dm b/code/game/objects/effects/spawners/roomspawner.dm
index f6753a7742b..a4d3713828e 100644
--- a/code/game/objects/effects/spawners/roomspawner.dm
+++ b/code/game/objects/effects/spawners/roomspawner.dm
@@ -22,7 +22,7 @@
if(istype(template, /datum/map_template/random_room) && room_height == template.template_height && room_width == template.template_width)
if(!template.spawned)
template.spawned = TRUE
- addtimer(CALLBACK(src, /obj/effect/spawner/room.proc/LateSpawn), 600)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/effect/spawner/room,LateSpawn)), 600)
break
template = null
if(!template)
diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm
index dd4a6ea479d..fd93bebf02d 100644
--- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm
+++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm
@@ -15,5 +15,5 @@
message_admins("An alien egg has been delivered to [ADMIN_VERBOSEJMP(T)].")
log_game("An alien egg has been delivered to [AREACOORD(T)]")
var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen."
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/_addtimer, CALLBACK(GLOBAL_PROC, /proc/print_command_report, message), announcement_time))
+ SSticker.OnRoundstart(CALLBACK(usr, GLOBAL_PROC_REF(_addtimer), CALLBACK(usr, GLOBAL_PROC_REF(print_command_report), message), announcement_time))
return INITIALIZE_HINT_QDEL
diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm
index 9f88f5c8bed..e85e9a5c684 100644
--- a/code/game/objects/effects/step_triggers.dm
+++ b/code/game/objects/effects/step_triggers.dm
@@ -11,7 +11,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -23,7 +23,7 @@
if(!H)
return
- INVOKE_ASYNC(src, .proc/Trigger, H)
+ INVOKE_ASYNC(src,PROC_REF(Trigger), H)
/obj/effect/step_trigger/singularity_act()
diff --git a/code/game/objects/effects/temporary_visuals/clockcult.dm b/code/game/objects/effects/temporary_visuals/clockcult.dm
index 7a6b5f85aa3..70b8b225bad 100644
--- a/code/game/objects/effects/temporary_visuals/clockcult.dm
+++ b/code/game/objects/effects/temporary_visuals/clockcult.dm
@@ -113,7 +113,7 @@
var/matrix/M = new
M.Turn(Get_Angle(src, user))
transform = M
- INVOKE_ASYNC(src, .proc/volthit)
+ INVOKE_ASYNC(src,PROC_REF(volthit))
/obj/effect/temp_visual/ratvar/volt_hit/proc/volthit()
if(user)
diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
index d9c0578b825..75b631681fc 100644
--- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm
+++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm
@@ -536,7 +536,7 @@ GLOBAL_LIST_EMPTY(blood_particles)
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
@@ -558,7 +558,7 @@ GLOBAL_LIST_EMPTY(blood_particles)
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/hand_items.dm b/code/game/objects/hand_items.dm
index bf7731f04b3..ae6d49a9bd6 100644
--- a/code/game/objects/hand_items.dm
+++ b/code/game/objects/hand_items.dm
@@ -116,7 +116,7 @@
/obj/item/hand_item/healable/licker/Initialize(mapload)
. = ..()
- RegisterSignal(src, COMSIG_LICK_RETURN, .proc/start_licking)
+ RegisterSignal(src, COMSIG_LICK_RETURN,PROC_REF(start_licking))
/obj/item/hand_item/healable/proc/lick_atom(atom/movable/licked, mob/living/user)
var/list/lick_words = get_lick_words(user)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index a4d6fe30856..9ea337cbf39 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -793,7 +793,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force, messy_throw = TRUE)
set_thrownby(thrower)
- callback = CALLBACK(src, .proc/after_throw, callback, (spin && messy_throw)) //replace their callback with our own
+ callback = CALLBACK(src,PROC_REF(after_throw), callback, (spin && messy_throw)) //replace their callback with our own
. = ..(target, range, speed, thrower, spin, diagonals_first, callback, force)
/obj/item/proc/set_thrownby(new_thrownby)
@@ -801,7 +801,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
UnregisterSignal(thrownby, COMSIG_PARENT_QDELETING)
thrownby = new_thrownby
if(thrownby)
- RegisterSignal(thrownby, COMSIG_PARENT_QDELETING, .proc/thrownby_deleted)
+ RegisterSignal(thrownby, COMSIG_PARENT_QDELETING,PROC_REF(thrownby_deleted))
/obj/item/proc/thrownby_deleted(datum/source)
SIGNAL_HANDLER
@@ -982,7 +982,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
if((item_flags & IN_INVENTORY) && usr.client.prefs.enable_tips && !QDELETED(src))
var/timedelay = usr.client.prefs.tip_delay/100
var/user = usr
- tip_timer = addtimer(CALLBACK(src, .proc/openTip, location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it.
+ tip_timer = addtimer(CALLBACK(src,PROC_REF(openTip), location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it.
/obj/item/MouseExited(location,control,params)
SEND_SIGNAL(src, COMSIG_ITEM_MOUSE_EXIT, location, control, params)
@@ -1010,7 +1010,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
delay = user.mind.item_action_skills_mod(src, delay, skill_difficulty, SKILL_USE_TOOL, null, FALSE)
// Create a callback with checks that would be called every tick by do_after.
- var/datum/callback/tool_check = CALLBACK(src, .proc/tool_check_callback, user, amount, extra_checks)
+ var/datum/callback/tool_check = CALLBACK(src,PROC_REF(tool_check_callback), user, amount, extra_checks)
if(ismob(target))
if(!do_mob(user, target, delay, extra_checks=tool_check))
diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm
index 57c6d195644..91483008075 100644
--- a/code/game/objects/items/RCD.dm
+++ b/code/game/objects/items/RCD.dm
@@ -288,7 +288,7 @@ RLD
"SOUTH" = image(icon = 'icons/mob/radial.dmi', icon_state = "csouth"),
"WEST" = image(icon = 'icons/mob/radial.dmi', icon_state = "cwest")
)
- var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(computerdirs)
@@ -347,13 +347,13 @@ RLD
"External Maintenance" = get_airlock_image(/obj/machinery/door/airlock/maintenance/external/glass)
)
- var/airlockcat = show_radial_menu(user, src, solid_or_glass_choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE)
+ var/airlockcat = show_radial_menu(user, src, solid_or_glass_choices, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE)
if(!check_menu(user))
return
switch(airlockcat)
if("Solid")
if(advanced_airlock_setting == 1)
- var/airlockpaint = show_radial_menu(user, src, solid_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE)
+ var/airlockpaint = show_radial_menu(user, src, solid_choices, radius = 42, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE)
if(!check_menu(user))
return
switch(airlockpaint)
@@ -398,7 +398,7 @@ RLD
if("Glass")
if(advanced_airlock_setting == 1)
- var/airlockpaint = show_radial_menu(user, src , glass_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE)
+ var/airlockpaint = show_radial_menu(user, src , glass_choices, radius = 42, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE)
if(!check_menu(user))
return
switch(airlockpaint)
@@ -490,7 +490,7 @@ RLD
choices += list(
"Change Window Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "windowtype")
)
- var/choice = show_radial_menu(user,src,choices, custom_check = CALLBACK(src,.proc/check_menu,user))
+ var/choice = show_radial_menu(user,src,choices, custom_check = CALLBACK(src,PROC_REF(check_menu),user))
if(!check_menu(user))
return
switch(choice)
@@ -544,7 +544,7 @@ RLD
buzz loudly!","[src] begins \
vibrating violently!")
// 5 seconds to get rid of it
- addtimer(CALLBACK(src, .proc/detonate_pulse_explode), 50)
+ addtimer(CALLBACK(src,PROC_REF(detonate_pulse_explode)), 50)
/obj/item/construction/rcd/proc/detonate_pulse_explode()
explosion(src, 0, 0, 3, 1, flame_range = 1)
@@ -889,7 +889,7 @@ RLD
machinery_data["cost"][A] = initial(M.rcd_cost)
machinery_data["delay"][A] = initial(M.rcd_delay)
- 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
diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm
index 812fd3ed2b6..17f6373f88b 100644
--- a/code/game/objects/items/RCL.dm
+++ b/code/game/objects/items/RCL.dm
@@ -166,12 +166,12 @@
last = C
break
-obj/item/rcl/proc/getMobhook(mob/to_hook)
+/obj/item/rcl/proc/getMobhook(mob/to_hook)
if(listeningTo == to_hook)
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
- RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED, .proc/trigger)
+ RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED,PROC_REF(trigger))
listeningTo = to_hook
/obj/item/rcl/proc/trigger(mob/user)
@@ -252,7 +252,7 @@ obj/item/rcl/proc/getMobhook(mob/to_hook)
/obj/item/rcl/proc/showWiringGui(mob/user)
var/list/choices = wiringGuiGenerateChoices(user)
- wiring_gui_menu = show_radial_menu_persistent(user, src , choices, select_proc = CALLBACK(src, .proc/wiringGuiReact, user), radius = 42)
+ wiring_gui_menu = show_radial_menu_persistent(user, src , choices, select_proc = CALLBACK(src,PROC_REF(wiringGuiReact), user), radius = 42)
/obj/item/rcl/proc/wiringGuiUpdate(mob/user)
if(!wiring_gui_menu)
diff --git a/code/game/objects/items/binoculars.dm b/code/game/objects/items/binoculars.dm
index 09cb72e6a4e..3cad657fecf 100644
--- a/code/game/objects/items/binoculars.dm
+++ b/code/game/objects/items/binoculars.dm
@@ -13,7 +13,7 @@
/obj/item/binoculars/wield(mob/living/user)
. = ..()
- RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, .proc/rotate)
+ RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE,PROC_REF(rotate))
listeningTo = user
user.visible_message(span_notice("[user] holds [src] up to [user.p_their()] eyes."), span_notice("You hold [src] up to your eyes."))
item_state = "binoculars_wielded"
diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm
index 9a941e9e4f0..03d6b504031 100644
--- a/code/game/objects/items/body_egg.dm
+++ b/code/game/objects/items/body_egg.dm
@@ -18,13 +18,13 @@
..()
ADD_TRAIT(owner, TRAIT_XENO_HOST, TRAIT_GENERIC)
owner.med_hud_set_status()
- INVOKE_ASYNC(src, .proc/AddInfectionImages, owner)
+ INVOKE_ASYNC(src,PROC_REF(AddInfectionImages), owner)
/obj/item/organ/body_egg/Remove(special = FALSE)
if(!QDELETED(owner))
REMOVE_TRAIT(owner, TRAIT_XENO_HOST, TRAIT_GENERIC)
owner.med_hud_set_status()
- INVOKE_ASYNC(src, .proc/RemoveInfectionImages, owner)
+ INVOKE_ASYNC(src,PROC_REF(RemoveInfectionImages), owner)
return ..()
/obj/item/organ/body_egg/on_death()
diff --git a/code/game/objects/items/broom.dm b/code/game/objects/items/broom.dm
index 3aca8ad8e44..401e23d7857 100644
--- a/code/game/objects/items/broom.dm
+++ b/code/game/objects/items/broom.dm
@@ -26,7 +26,7 @@
/obj/item/broom/wield(mob/user)
. = ..()
to_chat(user, span_notice("You brace the [src] against the ground in a firm sweeping stance."))
- RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, .proc/sweep)
+ RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE,PROC_REF(sweep))
/// triggered on unwield of two handed item
/obj/item/broom/unwield(mob/user)
diff --git a/code/game/objects/items/button_item.dm b/code/game/objects/items/button_item.dm
index 656c0ad370d..9cd125f282d 100644
--- a/code/game/objects/items/button_item.dm
+++ b/code/game/objects/items/button_item.dm
@@ -18,14 +18,14 @@
/obj/item/button/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_ITEM_CLICKED, .proc/activate)
- RegisterSignal(src, COMSIG_BUTTON_ATTACH, .proc/attach_to_storage)
+ RegisterSignal(src, COMSIG_ITEM_CLICKED,PROC_REF(activate))
+ RegisterSignal(src, COMSIG_BUTTON_ATTACH,PROC_REF(attach_to_storage))
/obj/item/button/attackby(obj/item/W, mob/user, params)
activate(user)
/obj/item/button/proc/attach_to_storage(datum/source, obj/item/storage/S)
- RegisterSignal(S, COMSIG_BUTTON_UPDATE, .proc/reaction)
+ RegisterSignal(S, COMSIG_BUTTON_UPDATE,PROC_REF(reaction))
/obj/item/button/proc/activate(datum/source, mob/user)
playsound(get_turf(src), click_sound, 50, TRUE)
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index 46588725d2b..2fec8caaf7c 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -115,7 +115,7 @@
/obj/item/candle/tribal_torch/proc/flicker(duration)
flickering = TRUE
- addtimer(CALLBACK(src, .proc/unflicker, light_range), duration)
+ addtimer(CALLBACK(src,PROC_REF(unflicker), light_range), duration)
set_light_range(light_range - rand(1, 2))
/obj/item/candle/tribal_torch/proc/unflicker(new_range)
diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm
index a0e19ac7fe2..f5a122aadf4 100644
--- a/code/game/objects/items/cardboard_cutouts.dm
+++ b/code/game/objects/items/cardboard_cutouts.dm
@@ -107,7 +107,7 @@
* * user The mob choosing a skin of the cardboard cutout
*/
/obj/item/cardboard_cutout/proc/change_appearance(obj/item/toy/crayon/crayon, mob/living/user)
- var/new_appearance = show_radial_menu(user, src, possible_appearances, custom_check = CALLBACK(src, .proc/check_menu, user, crayon), radius = 36, require_near = TRUE)
+ var/new_appearance = show_radial_menu(user, src, possible_appearances, custom_check = CALLBACK(src,PROC_REF(check_menu), user, crayon), radius = 36, require_near = TRUE)
if(!new_appearance)
return
if(!do_after(user, 10, FALSE, src, TRUE))
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 37742750bab..fbf768cc4c1 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -25,7 +25,7 @@
/obj/item/card/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_ATOM_GET_VALUE, .proc/tabulate_value)
+ RegisterSignal(src, COMSIG_ATOM_GET_VALUE,PROC_REF(tabulate_value))
/obj/item/card/proc/tabulate_value()
return 0
diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm
index 9b658bc5f1f..36286d873f9 100644
--- a/code/game/objects/items/charter.dm
+++ b/code/game/objects/items/charter.dm
@@ -62,7 +62,7 @@
to_chat(user, "Your name has been sent to your employers for approval.")
// Autoapproves after a certain time
- response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE)
+ response_timer_id = addtimer(CALLBACK(src,PROC_REF(rename_station), new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE)
to_chat(GLOB.admins, "CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]")
/obj/item/station_charter/proc/reject_proposed(user)
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index a8737e34dcb..51ff1fbd8bb 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -1217,7 +1217,7 @@
/obj/item/circuitboard/machine/autolathe/ammo/improvised/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_TABLE_CLICKED_WITH_ITEM, .proc/apply_to_table)
+ RegisterSignal(src, COMSIG_TABLE_CLICKED_WITH_ITEM,PROC_REF(apply_to_table))
/obj/item/circuitboard/machine/autolathe/ammo/improvised/examine(mob/user)
. = ..()
@@ -1255,7 +1255,7 @@
return
if(!user.Adjacent(T))
return
- INVOKE_ASYNC(src, .proc/actually_apply_to_table, T, user, params)
+ INVOKE_ASYNC(src,PROC_REF(actually_apply_to_table), T, user, params)
return TABLE_NO_PLACE
/obj/item/circuitboard/machine/autolathe/ammo/improvised/proc/actually_apply_to_table(obj/structure/table/T, mob/user, params)
diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm
index a3aa5892338..9717690a7ae 100644
--- a/code/game/objects/items/crab17.dm
+++ b/code/game/objects/items/crab17.dm
@@ -78,7 +78,7 @@
add_overlay("flaps")
add_overlay("hatch")
add_overlay("legs_retracted")
- addtimer(CALLBACK(src, .proc/startUp), 50)
+ addtimer(CALLBACK(src,PROC_REF(startUp)), 50)
QDEL_IN(src, 8 MINUTES) //Self destruct after 8 min
@@ -171,7 +171,7 @@
if (account) // get_bank_account() may return FALSE
account.transfer_money(B, amount)
B.bank_card_talk("You have lost [percentage_lost * 100]% of your funds! A spacecoin credit deposit machine is located at: [get_area(src)].")
- addtimer(CALLBACK(src, .proc/dump), 150) //Drain every 15 seconds
+ addtimer(CALLBACK(src,PROC_REF(dump)), 150) //Drain every 15 seconds
/obj/structure/checkoutmachine/process()
var/anydir = pick(GLOB.cardinals)
@@ -205,7 +205,7 @@
/obj/effect/dumpeetTarget/Initialize(mapload, user)
. = ..()
bogdanoff = user
- addtimer(CALLBACK(src, .proc/startLaunch), 100)
+ addtimer(CALLBACK(src,PROC_REF(startLaunch)), 100)
sound_to_playing_players('sound/items/dump_it.ogg', 20)
deadchat_broadcast("Protocol CRAB-17 has been activated. A space-coin market has been launched at the station!", turf_target = get_turf(src))
@@ -215,7 +215,7 @@
priority_announce("The spacecoin bubble has popped! Get to the credit deposit machine at [get_area(src)] and cash out before you lose all of your funds!", sender_override = "CRAB-17 Protocol")
animate(DF, pixel_z = -8, time = 5, , easing = LINEAR_EASING)
playsound(src, 'sound/weapons/mortar_whistle.ogg', 70, TRUE, 6)
- addtimer(CALLBACK(src, .proc/endLaunch), 5, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
+ addtimer(CALLBACK(src,PROC_REF(endLaunch)), 5, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm
index c7aaab6a264..5d0fb37da9d 100644
--- a/code/game/objects/items/debug_items.dm
+++ b/code/game/objects/items/debug_items.dm
@@ -65,7 +65,7 @@
"Scalpel" = image(icon = 'icons/obj/surgery.dmi', icon_state = "scalpel"),
"Saw" = image(icon = 'icons/obj/surgery.dmi', icon_state = "saw")
)
- var/tool_result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/tool_result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(tool_result)
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index bf53363af7a..3f9c67e31e0 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -328,7 +328,7 @@
. = ..()
if(!req_defib)
return
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/check_range)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(check_range))
/obj/item/shockpaddles/Moved()
. = ..()
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 48ef492604b..f9e0b660874 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -600,7 +600,7 @@ GLOBAL_LIST_EMPTY(PDAs)
update_label()
if (!silent)
playsound(src, 'sound/machines/terminal_processing.ogg', 15, 1)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/machines/terminal_success.ogg', 15, 1), 13)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(playsound), src, 'sound/machines/terminal_success.ogg', 15, 1), 13)
if("Eject")//Ejects the cart, only done from hub.
if (!isnull(cartridge))
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 480a2494c0b..0d68e1a0e88 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -646,7 +646,7 @@ Current Size: [usr.transform.a]
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
if("Send Signal")
- INVOKE_ASYNC(radio, /obj/item/integrated_signaler.proc/send_activation)
+ INVOKE_ASYNC(radio, TYPE_PROC_REF(/obj/item/integrated_signaler,send_activation))
playsound(src, 'sound/machines/terminal_select.ogg', 50, 1)
if("Signal Frequency")
diff --git a/code/game/objects/items/devices/battery_box.dm b/code/game/objects/items/devices/battery_box.dm
index 67d04ae32ad..876bff31529 100644
--- a/code/game/objects/items/devices/battery_box.dm
+++ b/code/game/objects/items/devices/battery_box.dm
@@ -85,9 +85,9 @@
/obj/item/storage/battery_box/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_BUTTON_CLICK, .proc/toggle_charge_direction)
- RegisterSignal(src, COMSIG_ITEM_RECHARGE, .proc/charge_me)
- RegisterSignal(src, COMSIG_CELL_CHECK_CHARGE_PERCENT, .proc/charge_percent)
+ RegisterSignal(src, COMSIG_BUTTON_CLICK,PROC_REF(toggle_charge_direction))
+ RegisterSignal(src, COMSIG_ITEM_RECHARGE,PROC_REF(charge_me))
+ RegisterSignal(src, COMSIG_CELL_CHECK_CHARGE_PERCENT,PROC_REF(charge_percent))
RegisterSignal(src, COMSIG_ATOM_ENTERED, /atom/proc/update_icon)
RegisterSignal(src, COMSIG_ATOM_EXITED, /atom/proc/update_icon)
RegisterSignal(src, COMSIG_ENERGY_GUN_SELFCHARGE_TICK, .proc/get_selfcharge_mult)
diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm
index aa9b37d74a7..14ee07fb39f 100644
--- a/code/game/objects/items/devices/desynchronizer.dm
+++ b/code/game/objects/items/devices/desynchronizer.dm
@@ -57,7 +57,7 @@
SEND_SIGNAL(AM, COMSIG_MOVABLE_SECLUDED_LOCATION)
last_use = world.time
icon_state = "desynchronizer-on"
- resync_timer = addtimer(CALLBACK(src, .proc/resync), duration , TIMER_STOPPABLE)
+ resync_timer = addtimer(CALLBACK(src,PROC_REF(resync)), duration , TIMER_STOPPABLE)
/obj/item/desynchronizer/proc/resync()
new /obj/effect/temp_visual/desynchronizer(sync_holder.drop_location())
diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
index 7a0df3cb39a..385725a7f5a 100644
--- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
+++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
@@ -43,7 +43,7 @@
maptext = "[circuits]"
icon_state = "[initial(icon_state)]_recharging"
var/recharge_time = min(600, circuit_cost * 5) //40W of cost for one fabrication = 20 seconds of recharge time; this is to prevent spamming
- addtimer(CALLBACK(src, .proc/recharge), recharge_time)
+ addtimer(CALLBACK(src,PROC_REF(recharge)), recharge_time)
return TRUE //The actual circuit magic itself is done on a per-object basis
/obj/item/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity)
diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm
index 6876cf66be7..51d42ba0833 100644
--- a/code/game/objects/items/devices/geiger_counter.dm
+++ b/code/game/objects/items/devices/geiger_counter.dm
@@ -143,7 +143,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT)
- RegisterSignal(user, COMSIG_ATOM_RAD_ACT, .proc/redirect_rad_act)
+ RegisterSignal(user, COMSIG_ATOM_RAD_ACT,PROC_REF(redirect_rad_act))
listeningTo = user
to_chat(user,"equipped")
@@ -175,7 +175,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT)
- RegisterSignal(user, COMSIG_ATOM_RAD_ACT, .proc/redirect_rad_act)
+ RegisterSignal(user, COMSIG_ATOM_RAD_ACT,PROC_REF(redirect_rad_act))
listeningTo = user
/obj/item/geiger_counter/attack_self(mob/user, silent)
@@ -198,7 +198,7 @@
if(!(obj_flags & EMAGGED))
user.visible_message(span_notice("[user] scans [target] with [src]."), span_notice("You scan [target]'s radiation levels with [src]..."))
scan(target, user)
- //addtimer(CALLBACK(src, .proc/scan, target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents
+ //addtimer(CALLBACK(src,PROC_REF(scan), target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents
else
user.visible_message(span_notice("[user] scans [target] with [src]."), span_danger("You project [src]'s stored radiation into [target]!"))
target.rad_act(radiation_count)
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index b8d2e4b3b41..95dbf7d2d21 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -15,7 +15,7 @@
/obj/item/megaphone/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_HANDS)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY,PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/game/objects/items/devices/portable_blender_brain.dm b/code/game/objects/items/devices/portable_blender_brain.dm
index ede95853e74..ccda149b722 100644
--- a/code/game/objects/items/devices/portable_blender_brain.dm
+++ b/code/game/objects/items/devices/portable_blender_brain.dm
@@ -550,7 +550,7 @@
/datum/blender_brain/proc/preprocess_speech(mob/speaker, message)
if(!should_listen_to(speaker))
return
- INVOKE_ASYNC(src, .proc/process_speech, speaker, message)
+ INVOKE_ASYNC(src,PROC_REF(process_speech), speaker, message)
/// takes in mob and message, and turns it into a stimulus
/datum/blender_brain/proc/process_speech(mob/speaker, message)
@@ -1000,18 +1000,18 @@
/obj/item/persona_core/proc/register_signals()
var/atom/movable/sigtarg = get_host()
- RegisterSignal(sigtarg, COMSIG_ITEM_RECYCLED, .proc/crushed)
- RegisterSignal(sigtarg, COMSIG_BB_HOST_TO_PC_STIMULUS, .proc/input_stimulus)
- RegisterSignal(sigtarg, COMSIG_ITEM_DROPPED, .proc/input_stimulus_dropped)
- RegisterSignal(sigtarg, COMSIG_ITEM_EQUIPPED, .proc/input_stimulus_equipped)
- //RegisterSignal(sigtarg, COMSIG_ITEM_CLICKED, .proc/input_stimulus_clicked) // yeah these dont work
- //RegisterSignal(sigtarg, COMSIG_ITEM_PICKUP, .proc/input_stimulus_pickup)
- //RegisterSignal(sigtarg, COMSIG_MOVABLE_IMPACT, .proc/input_stimulus_impact)
- // RegisterSignal(sigtarg, COMSIG_ITEM_MICROWAVE_ACT, .proc/input_stimulus_microwave)
- // RegisterSignal(sigtarg, COMSIG_ITEM_MOUSE_ENTER, .proc/input_stimulus_mouse_enter)
- // RegisterSignal(sigtarg, COMSIG_ITEM_MOUSE_EXIT, .proc/input_stimulus_mouse_exit)
- RegisterSignal(sigtarg, COMSIG_MOVABLE_HEAR, .proc/input_heard)
- RegisterSignal(sigtarg, COMSIG_BB_HOST_TO_PC_AMOUR_MOD, .proc/get_host_modifier)
+ RegisterSignal(sigtarg, COMSIG_ITEM_RECYCLED,PROC_REF(crushed))
+ RegisterSignal(sigtarg, COMSIG_BB_HOST_TO_PC_STIMULUS,PROC_REF(input_stimulus))
+ RegisterSignal(sigtarg, COMSIG_ITEM_DROPPED,PROC_REF(input_stimulus_dropped))
+ RegisterSignal(sigtarg, COMSIG_ITEM_EQUIPPED,PROC_REF(input_stimulus_equipped))
+ //RegisterSignal(sigtarg, COMSIG_ITEM_CLICKED,PROC_REF(input_stimulus_clicked)) // yeah these dont work
+ //RegisterSignal(sigtarg, COMSIG_ITEM_PICKUP,PROC_REF(input_stimulus_pickup))
+ //RegisterSignal(sigtarg, COMSIG_MOVABLE_IMPACT,PROC_REF(input_stimulus_impact))
+ // RegisterSignal(sigtarg, COMSIG_ITEM_MICROWAVE_ACT,PROC_REF(input_stimulus_microwave))
+ // RegisterSignal(sigtarg, COMSIG_ITEM_MOUSE_ENTER,PROC_REF(input_stimulus_mouse_enter))
+ // RegisterSignal(sigtarg, COMSIG_ITEM_MOUSE_EXIT,PROC_REF(input_stimulus_mouse_exit))
+ RegisterSignal(sigtarg, COMSIG_MOVABLE_HEAR,PROC_REF(input_heard))
+ RegisterSignal(sigtarg, COMSIG_BB_HOST_TO_PC_AMOUR_MOD,PROC_REF(get_host_modifier))
/obj/item/persona_core/proc/crushed()
SIGNAL_HANDLER
@@ -1183,7 +1183,7 @@
busy_for = setting
/obj/item/persona_core/process()
- INVOKE_ASYNC(src, .proc/process_impulses)
+ INVOKE_ASYNC(src,PROC_REF(process_impulses))
/obj/item/persona_core/proc/process_impulses()
busy_for = max(busy_for - 1, 0)
@@ -1196,7 +1196,7 @@
CRASH("Blenderbrain [src] tried to process an invalid impulse: [impulse]")
var/datum/blenderbrain_impulse/thimpulse = impulse
var/do_next = thimpulse.immediate_next
- INVOKE_ASYNC(thimpulse, /datum/blenderbrain_impulse.proc/run_it)
+ INVOKE_ASYNC(thimpulse, TYPE_PROC_REF(/datum/blenderbrain_impulse,run_it))
if(do_next)
continue
break
diff --git a/code/game/objects/items/devices/portable_chem_blenderbelt.dm b/code/game/objects/items/devices/portable_chem_blenderbelt.dm
index 0381af516ed..c9e06a2787a 100644
--- a/code/game/objects/items/devices/portable_chem_blenderbelt.dm
+++ b/code/game/objects/items/devices/portable_chem_blenderbelt.dm
@@ -80,9 +80,9 @@
/obj/item/storage/blender_belt/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_BB_PC_TO_HOST_REQUEST, .proc/handle_request)
- RegisterSignal(src, COMSIG_BB_PC_TO_HOST_IMPULSE, .proc/handle_impulse)
- RegisterSignal(src, COMSIG_BB_PC_TO_HOST_CAN_INSERT, .proc/can_insert)
+ RegisterSignal(src, COMSIG_BB_PC_TO_HOST_REQUEST,PROC_REF(handle_request))
+ RegisterSignal(src, COMSIG_BB_PC_TO_HOST_IMPULSE,PROC_REF(handle_impulse))
+ RegisterSignal(src, COMSIG_BB_PC_TO_HOST_CAN_INSERT,PROC_REF(can_insert))
/obj/item/storage/blender_belt/ex_act(severity, target)
if(severity < 3)
@@ -135,27 +135,27 @@
return
switch(first_impulse)
if(IMPULSE_START)
- INVOKE_ASYNC(src, .proc/start_running, subject, grind_or_juice)
+ INVOKE_ASYNC(src,PROC_REF(start_running), subject, grind_or_juice)
if(IMPULSE_STOP)
- INVOKE_ASYNC(src, .proc/stop_running)
+ INVOKE_ASYNC(src,PROC_REF(stop_running))
if(IMPULSE_SET_GRINDER)
if(second_impulse == IMPULSE_START)
- INVOKE_ASYNC(src, .proc/start_running, subject, BLENDER_BLENDMODE_GRIND)
+ INVOKE_ASYNC(src,PROC_REF(start_running), subject, BLENDER_BLENDMODE_GRIND)
else
grind_or_juice = BLENDER_BLENDMODE_GRIND
if(IMPULSE_SET_JUICER)
if(second_impulse == IMPULSE_START)
- INVOKE_ASYNC(src, .proc/start_running, subject, BLENDER_BLENDMODE_JUICE)
+ INVOKE_ASYNC(src,PROC_REF(start_running), subject, BLENDER_BLENDMODE_JUICE)
else
grind_or_juice = BLENDER_BLENDMODE_JUICE
if(IMPULSE_SET_GRINDER)
- INVOKE_ASYNC(src, .proc/set_blender, subject)
+ INVOKE_ASYNC(src,PROC_REF(set_blender), subject)
if(IMPULSE_SET_DISPENSER)
- INVOKE_ASYNC(src, .proc/set_dispenser, subject)
+ INVOKE_ASYNC(src,PROC_REF(set_dispenser), subject)
if(IMPULSE_EJECT)
- INVOKE_ASYNC(src, .proc/eject_all, subject)
+ INVOKE_ASYNC(src,PROC_REF(eject_all), subject)
if(IMPULSE_EXAMINE)
- INVOKE_ASYNC(src, .proc/describe_contents, subject)
+ INVOKE_ASYNC(src,PROC_REF(describe_contents), subject)
if(IMPULSE_HORRIBLE_NOISES)
use_horrible_grinding_noises = TRUE
return TRUE
@@ -197,7 +197,7 @@
if(grind_or_dispense != BLENDER_BELTMODE_BLENDER)
set_blender(user)
blending = TRUE
- INVOKE_ASYNC(src, .proc/blend_loop, user)
+ INVOKE_ASYNC(src,PROC_REF(blend_loop), user)
/obj/item/storage/blender_belt/proc/get_run_time(mob/user)
BLENDER_GET_SUBJECT
@@ -241,7 +241,7 @@
playsound(src, 'sound/machines/blender.ogg', 50, 1)
else
playsound(src, 'sound/machines/juicer.ogg', 20, 1)
- if(!do_after(user, get_run_time(user), needhand = FALSE, target = src, extra_checks = CALLBACK(src, .proc/still_running), allow_movement = TRUE))
+ if(!do_after(user, get_run_time(user), needhand = FALSE, target = src, extra_checks = CALLBACK(src,PROC_REF(still_running)), allow_movement = TRUE))
if(blending)
SEND_SIGNAL(src, COMSIG_BB_HOST_TO_PC_STIMULUS, STIMULUS_ROCKY_ABORT, subject)
else
@@ -261,7 +261,7 @@
SEND_SIGNAL(src, COMSIG_BB_HOST_TO_PC_STIMULUS, STIMULUS_FULL_SECOND, subject)
abort()
return FALSE
- INVOKE_ASYNC(src, .proc/blend_loop, user) // and loop!
+ INVOKE_ASYNC(src,PROC_REF(blend_loop), user) // and loop!
/obj/item/storage/blender_belt/proc/get_thing_to_blend(mob/user)
for(var/obj/item/thing in contents)
@@ -670,7 +670,7 @@
/obj/item/storage/blender_belt/attack_hand(mob/user)
if(grind_or_dispense == BLENDER_BELTMODE_DISPENSER && ismob(loc))
- INVOKE_ASYNC(src, /datum.proc/ui_interact, user)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/datum,ui_interact), user)
else
. = ..()
diff --git a/code/game/objects/items/devices/portable_chem_mixer.dm b/code/game/objects/items/devices/portable_chem_mixer.dm
index fe051867be8..1fff8ac7c41 100644
--- a/code/game/objects/items/devices/portable_chem_mixer.dm
+++ b/code/game/objects/items/devices/portable_chem_mixer.dm
@@ -111,7 +111,7 @@
if (loc != user)
return ..()
if(SEND_SIGNAL(src, COMSIG_IS_STORAGE_LOCKED))
- INVOKE_ASYNC(src, /datum.proc/ui_interact, user)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/datum,ui_interact), user)
/obj/item/storage/portable_chem_mixer/attack_self(mob/user)
if(loc == user)
diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm
index 2beb3602164..a764e4a3bfa 100644
--- a/code/game/objects/items/devices/pressureplates.dm
+++ b/code/game/objects/items/devices/pressureplates.dm
@@ -33,7 +33,7 @@
hide(TRUE)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -49,7 +49,7 @@
else if(!trigger_item)
return
can_trigger = FALSE
- addtimer(CALLBACK(src, .proc/trigger), trigger_delay)
+ addtimer(CALLBACK(src,PROC_REF(trigger)), trigger_delay)
/obj/item/pressure_plate/proc/trigger()
can_trigger = TRUE
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 1ee5484aaf1..5c1c01f1008 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -230,7 +230,7 @@
spans = list(M.speech_span)
if(!language)
language = M.get_selected_language()
- INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans.Copy(), language)
+ INVOKE_ASYNC(src,PROC_REF(talk_into_impl), M, message, channel, spans.Copy(), language)
return ITALICS | REDUCE_RANGE
/obj/item/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans, datum/language/language)
@@ -307,7 +307,7 @@
// Non-subspace radios will check in a couple of seconds, and if the signal
// was never received, send a mundane broadcast (no headsets).
- addtimer(CALLBACK(src, .proc/backup_transmission, signal), 20)
+ addtimer(CALLBACK(src,PROC_REF(backup_transmission), signal), 20)
/obj/item/radio/proc/backup_transmission(datum/signal/subspace/vocal/signal)
var/turf/T = get_turf(src)
diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm
index 31b9312ffd2..5ec30583ae6 100644
--- a/code/game/objects/items/devices/reverse_bear_trap.dm
+++ b/code/game/objects/items/devices/reverse_bear_trap.dm
@@ -43,7 +43,7 @@
soundloop.stop()
soundloop2.stop()
to_chat(loc, span_userdanger("*ding*"))
- addtimer(CALLBACK(src, .proc/snap), 2)
+ addtimer(CALLBACK(src,PROC_REF(snap)), 2)
/obj/item/reverse_bear_trap/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
if(iscarbon(user))
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 3061eebf92e..0fbae297a4f 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -1069,7 +1069,7 @@ GENETICS SCANNER
ready = FALSE
icon_state = "[icon_state]_recharging"
- addtimer(CALLBACK(src, .proc/recharge), cooldown, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(recharge)), cooldown, TIMER_UNIQUE)
/obj/item/sequence_scanner/proc/recharge()
icon_state = initial(icon_state)
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 826408c08b4..60171849871 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -86,13 +86,13 @@ effective or pretty fucking useless.
return
if(!used)
log_combat(user, M, "irradiated", src)
- var/cooldown = get_cooldown()
+ var/cooldown = get_cooldown()
used = TRUE
icon_state = "health1"
addtimer(VARSET_CALLBACK(src, used, FALSE), cooldown)
addtimer(VARSET_CALLBACK(src, icon_state, "health"), cooldown)
to_chat(user, span_warning("Successfully irradiated [M]."))
- addtimer(CALLBACK(src, .proc/radiation_aftereffect, M), (wavelength+(intensity*4))*5)
+ addtimer(CALLBACK(src,PROC_REF(radiation_aftereffect), M), (wavelength+(intensity*4))*5)
else
to_chat(user, span_warning("The radioactive microlaser is still recharging."))
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index b9534526530..a26ac10f87e 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -20,7 +20,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -85,7 +85,7 @@
/obj/item/transfer_valve/proc/on_entered(atom/movable/AM as mob|obj)
SIGNAL_HANDLER
if(attached_device)
- INVOKE_ASYNC(attached_device, .proc/on_entered, AM)
+ INVOKE_ASYNC(attached_device,PROC_REF(on_entered), AM)
/obj/item/transfer_valve/on_attack_hand()//Triggers mousetraps
. = ..()
@@ -143,7 +143,7 @@
if(toggle)
toggle = FALSE
toggle_valve()
- addtimer(CALLBACK(src, .proc/toggle_off), 5) //To stop a signal being spammed from a proxy sensor constantly going off or whatever
+ addtimer(CALLBACK(src,PROC_REF(toggle_off)), 5) //To stop a signal being spammed from a proxy sensor constantly going off or whatever
/obj/item/transfer_valve/proc/toggle_off()
toggle = TRUE
@@ -228,7 +228,7 @@
merge_gases()
for(var/i in 1 to 6)
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 20 + (i - 1) * 10)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,update_icon)), 20 + (i - 1) * 10)
else if(valve_open && tank_one && tank_two)
split_gases()
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm
index 248b162b4ff..b69805ea801 100644
--- a/code/game/objects/items/dualsaber.dm
+++ b/code/game/objects/items/dualsaber.dm
@@ -88,8 +88,8 @@
/obj/item/dualsaber/Initialize()
. = ..()
- 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/dualsaber/ComponentInitialize()
. = ..()
@@ -162,7 +162,7 @@
impale(user)
return
if(spinnable && (wielded) && prob(50))
- INVOKE_ASYNC(src, .proc/jedi_spin, user)
+ INVOKE_ASYNC(src,PROC_REF(jedi_spin), user)
/obj/item/dualsaber/proc/jedi_spin(mob/living/user)
for(var/i in list(NORTH,SOUTH,EAST,WEST,EAST,SOUTH,NORTH,SOUTH,EAST,WEST,EAST,SOUTH))
@@ -218,7 +218,7 @@
add_fingerprint(user)
// Light your candles while spinning around the room
if(spinnable)
- INVOKE_ASYNC(src, .proc/jedi_spin, user)
+ INVOKE_ASYNC(src,PROC_REF(jedi_spin), user)
/obj/item/dualsaber/green
possible_colors = list("green")
diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm
index 5bac2821afa..cc0f044c5f9 100644
--- a/code/game/objects/items/eightball.dm
+++ b/code/game/objects/items/eightball.dm
@@ -64,7 +64,7 @@
say(answer)
on_cooldown = TRUE
- addtimer(CALLBACK(src, .proc/clear_cooldown), cooldown_time)
+ addtimer(CALLBACK(src,PROC_REF(clear_cooldown)), cooldown_time)
shaking = FALSE
diff --git a/code/game/objects/items/electrostaff.dm b/code/game/objects/items/electrostaff.dm
index 8492befed22..9bd9e1b73b1 100644
--- a/code/game/objects/items/electrostaff.dm
+++ b/code/game/objects/items/electrostaff.dm
@@ -74,8 +74,8 @@
. = ..()
if(ispath(cell))
cell = new cell
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/turn_on)
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/turn_off)
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD,PROC_REF(turn_on))
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD,PROC_REF(turn_off))
/obj/item/electrostaff/ComponentInitialize()
. = ..()
diff --git a/code/game/objects/items/fishingrod.dm b/code/game/objects/items/fishingrod.dm
index 78a58369ec7..b87c71874aa 100644
--- a/code/game/objects/items/fishingrod.dm
+++ b/code/game/objects/items/fishingrod.dm
@@ -69,7 +69,7 @@ GLOBAL_LIST_INIT(fish_rates, list(
return
if(current_user)
UnregisterSignal(current_user, COMSIG_MOVABLE_MOVED)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/falsify_inuse)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(falsify_inuse))
current_user = user
/obj/item/fishingrod/dropped(mob/user)
@@ -106,7 +106,7 @@ GLOBAL_LIST_INIT(fish_rates, list(
return //yea, we aren't terraria with a fishing rod that has multiple lines
inuse = TRUE
var/random_fishtime = rand(min_fishtime, max_fishtime)
- addtimer(CALLBACK(src, .proc/play_readysound), random_fishtime)
+ addtimer(CALLBACK(src,PROC_REF(play_readysound)), random_fishtime)
current_wait = world.time + random_fishtime
current_waitfail = current_wait + max_afterfish
balloon_alert(user, "You cast out your fishing line!")
@@ -176,6 +176,36 @@ GLOBAL_LIST_INIT(fish_rates, list(
//default is 40, which is 40 percent chance
trash_chance = 40
-/obj/item/fishingrod/sleepyrod/CtrlShiftClick(mob/user)
+/obj/item/fishingrod/sleepyrod/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ if(!istype(target, /turf/open/water) && !istype(target, /turf/open/indestructible/ground/outside/water))
+ return ..()
+ if(!(target in range(fish_range, user)))
+ to_chat(current_user, span_warning("The line cannot reach that far, move closer!"))
+ return
+ if(inuse)
+ if(current_wait <= world.time && world.time <= current_waitfail)
+ var/fish_result = complete_fishing()
+ switch(fish_result)
+ if(1)
+ to_chat(current_user, span_warning("You got trash, lame..."))
+ playsound(src.loc, 'sound/f13effects/karma_down.ogg', 100, TRUE, -1)
+ if(2)
+ to_chat(current_user, span_warning("You got nothing, lame..."))
+ playsound(src.loc, 'sound/f13effects/karma_down.ogg', 100, TRUE, -1)
+ if(3)
+ to_chat(current_user, span_green("You got a fish, nice!"))
+ playsound(src.loc, 'sound/f13effects/karma_up.ogg', 100, TRUE, -1)
+ to_chat(current_user, span_notice("You pull back your line!"))
+ playsound(src.loc, 'sound/f13items/youpullbackyourline.ogg', 100, TRUE, -1)
+ inuse = FALSE
+ return //yea, we aren't terraria with a fishing rod that has multiple lines
+ inuse = TRUE
+ var/random_fishtime = rand(min_fishtime, max_fishtime)
+ addtimer(CALLBACK(src,PROC_REF(play_readysound)), random_fishtime)
+ current_wait = world.time + random_fishtime
+ current_waitfail = current_wait + max_afterfish
+ to_chat(current_user, span_notice("You cast your fishing line, get ready to reel it back in!"))
+
+/obj/item/fishingrod/sleepyrod/CtrlShiftClick(mob/user) // ...wuh. It just...plays a sound? Weird!
balloon_alert(user, "Time to vibe...")
playsound(src.loc, 'sound/f13items/fishing.ogg', 60, TRUE, -1)
diff --git a/code/game/objects/items/grenades/antigravity.dm b/code/game/objects/items/grenades/antigravity.dm
index b6700599a3e..6caebeedfce 100644
--- a/code/game/objects/items/grenades/antigravity.dm
+++ b/code/game/objects/items/grenades/antigravity.dm
@@ -13,6 +13,6 @@
for(var/turf/T in view(range,src))
T.AddElement(/datum/element/forced_gravity, forced_value)
- addtimer(CALLBACK(T, /datum/.proc/_RemoveElement, list(forced_value)), duration)
+ addtimer(CALLBACK(T, TYPE_PROC_REF(/datum/,_RemoveElement), list(forced_value)), duration)
qdel(src)
diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm
index 57693ff2731..97d35ecf5a6 100644
--- a/code/game/objects/items/grenades/chem_grenade.dm
+++ b/code/game/objects/items/grenades/chem_grenade.dm
@@ -26,7 +26,7 @@
stage_change() // If no argument is set, it will change the stage to the current stage, useful for stock grenades that start READY.
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -161,7 +161,7 @@
/obj/item/grenade/chem_grenade/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
if(nadeassembly)
- INVOKE_ASYNC(nadeassembly, .proc/on_entered, AM)
+ INVOKE_ASYNC(nadeassembly,PROC_REF(on_entered), AM)
/obj/item/grenade/chem_grenade/on_found(mob/finder)
if(nadeassembly)
@@ -318,7 +318,7 @@
message_admins("grenade primed by an assembly at [AREACOORD(DT)], attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]).")
log_game("grenade primed by an assembly at [AREACOORD(DT)], attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name])")
else
- addtimer(CALLBACK(src, .proc/prime), det_time)
+ addtimer(CALLBACK(src,PROC_REF(prime)), det_time)
log_game("A grenade detonated at [AREACOORD(DT)]")
return TRUE
diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm
index 9980ff34cec..1c4c0234642 100644
--- a/code/game/objects/items/grenades/clusterbuster.dm
+++ b/code/game/objects/items/grenades/clusterbuster.dm
@@ -58,7 +58,7 @@
var/steps = rand(1,4)
for(var/i in 1 to steps)
step_away(src,loc)
- addtimer(CALLBACK(src, .proc/prime), rand(15,60))
+ addtimer(CALLBACK(src,PROC_REF(prime)), rand(15,60))
/obj/item/grenade/clusterbuster/segment/prime(mob/living/lanced_by)
new payload_spawner(drop_location(), payload, rand(min_spawned,max_spawned))
@@ -78,7 +78,7 @@
var/obj/item/grenade/P = new type(loc)
if(istype(P))
P.active = TRUE
- addtimer(CALLBACK(P, /obj/item/grenade/proc/prime), rand(15,60))
+ addtimer(CALLBACK(P,TYPE_PROC_REF(/obj/item/grenade,prime)), rand(15,60))
var/steps = rand(1,4)
for(var/i in 1 to steps)
step_away(src,loc)
@@ -107,7 +107,7 @@
var/chosen = pick(subtypesof(/obj/item/slime_extract))
var/obj/item/slime_extract/P = new chosen(loc)
if(volatile)
- addtimer(CALLBACK(P, /obj/item/slime_extract/proc/activate_slime), rand(15,60))
+ addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/item/slime_extract,activate_slime)), rand(15,60))
var/steps = rand(1,4)
for(var/i in 1 to steps)
step_away(src,loc)
diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm
index d04ab00e54f..c352cf8e5ec 100644
--- a/code/game/objects/items/grenades/ghettobomb.dm
+++ b/code/game/objects/items/grenades/ghettobomb.dm
@@ -150,7 +150,7 @@
item_state = initial(item_state) + "_active"
if(isGlass)
return
- addtimer(CALLBACK(src, .proc/splash_and_boom), 5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(splash_and_boom)), 5 SECONDS)
/obj/item/reagent_containers/food/drinks/bottle/molotov/proc/make_boom()
var/boomsize
diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm
index 2e24bc16d01..073534f9ffa 100644
--- a/code/game/objects/items/grenades/grenade.dm
+++ b/code/game/objects/items/grenades/grenade.dm
@@ -40,7 +40,7 @@
/obj/item/grenade/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_VORE_ATOM_DIGESTED, .proc/vore_prime)
+ RegisterSignal(src, COMSIG_VORE_ATOM_DIGESTED,PROC_REF(vore_prime))
/obj/item/grenade/deconstruct(disassembled = TRUE)
if(!disassembled)
@@ -102,7 +102,7 @@
span_userdanger("Uh oh."),
pref_check = VOREPREF_VORE_MESSAGES
)
- INVOKE_ASYNC(src, .proc/preprime, vorer, null, FALSE, 100)
+ INVOKE_ASYNC(src,PROC_REF(preprime), vorer, null, FALSE, 100)
return TRUE
// for electric beep on activation
@@ -120,7 +120,7 @@
active = TRUE
icon_state = initial(icon_state) + "_active"
item_state = initial(item_state) + "_active"
- addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride)
+ addtimer(CALLBACK(src,PROC_REF(prime)), isnull(delayoverride)? det_time : delayoverride)
// Turn on the grenade if shot
/obj/item/grenade/bullet_act(obj/item/projectile/P)
@@ -147,7 +147,7 @@
active = TRUE
icon_state = initial(icon_state) + "_active"
item_state = initial(item_state) + "_active"
- addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride)
+ addtimer(CALLBACK(src,PROC_REF(prime)), isnull(delayoverride)? det_time : delayoverride)
// For hissing fuse sound
/obj/item/grenade/proc/primefuse(mob/user, delayoverride, msg = TRUE, volume = 60)
@@ -164,7 +164,7 @@
active = TRUE
icon_state = initial(icon_state) + "_active"
item_state = initial(item_state) + "_active"
- addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride)
+ addtimer(CALLBACK(src,PROC_REF(prime)), isnull(delayoverride)? det_time : delayoverride)
/obj/item/grenade/proc/prime(mob/living/lanced_by)
diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm
index 1e023395bca..62d42923d1d 100644
--- a/code/game/objects/items/grenades/plastic.dm
+++ b/code/game/objects/items/grenades/plastic.dm
@@ -25,7 +25,7 @@
plastic_overlay = mutable_appearance(icon, "[item_state]2", HIGH_OBJ_LAYER)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -66,7 +66,7 @@
if(!QDELETED(target))
location = get_turf(target)
target.cut_overlay(plastic_overlay)
- UnregisterSignal(target, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/add_plastic_overlay)
+ UnregisterSignal(target, COMSIG_ATOM_UPDATE_OVERLAYS,PROC_REF(add_plastic_overlay))
if(!ismob(target) || full_damage_on_mobs)
target.ex_act(EXPLODE_HEAVY, target)
else
@@ -89,7 +89,7 @@
/obj/item/grenade/plastic/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
if(nadeassembly)
- INVOKE_ASYNC(nadeassembly, .proc/on_entered, AM)
+ INVOKE_ASYNC(nadeassembly,PROC_REF(on_entered), AM)
/obj/item/grenade/plastic/on_found(mob/finder)
if(nadeassembly)
@@ -133,11 +133,11 @@
I.embedding["embed_chance"] = 0
I.updateEmbedding()
- RegisterSignal(target, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/add_plastic_overlay)
+ RegisterSignal(target, COMSIG_ATOM_UPDATE_OVERLAYS,PROC_REF(add_plastic_overlay))
target.update_icon()
if(!nadeassembly)
to_chat(user, span_notice("You plant the bomb. Timer counting down from [det_time]."))
- addtimer(CALLBACK(src, .proc/prime), det_time*10)
+ addtimer(CALLBACK(src,PROC_REF(prime)), det_time*10)
else
qdel(src) //How?
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index be9b7372511..0650becc5a2 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -254,7 +254,7 @@
icon_state = "[initial(icon_state)][armed]"
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/spring_trap,
+ COMSIG_ATOM_ENTERED =PROC_REF(spring_trap),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -286,7 +286,7 @@
if(!C.lying)
def_zone = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
if(!C.legcuffed) //beartrap can't cuff your leg if there's already a beartrap or legcuffs, or you don't have two legs.
- INVOKE_ASYNC(C, /mob/living/carbon.proc/equip_to_slot, src, SLOT_LEGCUFFED)
+ INVOKE_ASYNC(C, TYPE_PROC_REF(/mob/living/carbon,equip_to_slot), src, SLOT_LEGCUFFED)
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
else if(snap && isanimal(L))
var/mob/living/simple_animal/SA = L
@@ -324,7 +324,7 @@
/obj/item/restraints/legcuffs/beartrap/energy/New()
..()
- addtimer(CALLBACK(src, .proc/dissipate), 100)
+ addtimer(CALLBACK(src,PROC_REF(dissipate)), 100)
/obj/item/restraints/legcuffs/beartrap/energy/proc/dissipate()
if(!ismob(loc))
diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm
index 6af1d0d70c8..46996f58098 100644
--- a/code/game/objects/items/his_grace.dm
+++ b/code/game/objects/items/his_grace.dm
@@ -29,7 +29,7 @@
. = ..()
START_PROCESSING(SSprocessing, src)
GLOB.poi_list += src
- RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, .proc/move_gracefully)
+ RegisterSignal(src, COMSIG_MOVABLE_POST_THROW,PROC_REF(move_gracefully))
/obj/item/his_grace/Destroy()
STOP_PROCESSING(SSprocessing, src)
@@ -40,7 +40,7 @@
/obj/item/his_grace/attack_self(mob/living/user)
if(!awakened)
- INVOKE_ASYNC(src, .proc/awaken, user)
+ INVOKE_ASYNC(src,PROC_REF(awaken), user)
/obj/item/his_grace/attack(mob/living/M, mob/user)
if(awakened && M.stat)
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index 4369b6bf9e0..f93b36e62f2 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -319,7 +319,7 @@
nullrod_icons = sortList(nullrod_icons)
- var/choice = show_radial_menu(L, src , nullrod_icons, custom_check = CALLBACK(src, .proc/check_menu, L), radius = 42, require_near = TRUE)
+ var/choice = show_radial_menu(L, src , nullrod_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), L), radius = 42, require_near = TRUE)
if(!choice || !check_menu(L))
return
@@ -614,7 +614,7 @@
playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1)
H.adjustStaminaLoss(rand(12,18))
if(prob(25))
- (INVOKE_ASYNC(src, .proc/jedi_spin, user))
+ (INVOKE_ASYNC(src,PROC_REF(jedi_spin), user))
else
return ..()
diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm
index db639efa29c..d908a8daae4 100644
--- a/code/game/objects/items/hot_potato.dm
+++ b/code/game/objects/items/hot_potato.dm
@@ -136,7 +136,7 @@
ADD_TRAIT(src, TRAIT_NODROP, HOT_POTATO_TRAIT)
name = "primed [name]"
activation_time = timer + world.time
- detonation_timerid = addtimer(CALLBACK(src, .proc/detonate), delay, TIMER_STOPPABLE)
+ detonation_timerid = addtimer(CALLBACK(src,PROC_REF(detonate)), delay, TIMER_STOPPABLE)
START_PROCESSING(SSfastprocess, src)
var/turf/T = get_turf(src)
message_admins("[user? "[ADMIN_LOOKUPFLW(user)] has primed [src]" : "A [src] has been primed"] (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range]) for detonation at [ADMIN_VERBOSEJMP(T)]")
diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm
index faa00b9486d..335bdc3001e 100644
--- a/code/game/objects/items/implants/implant_explosive.dm
+++ b/code/game/objects/items/implants/implant_explosive.dm
@@ -37,7 +37,7 @@
popup = FALSE
if(response == "No")
return FALSE
- addtimer(CALLBACK(src, .proc/timed_explosion, cause), 1)
+ addtimer(CALLBACK(src,PROC_REF(timed_explosion), cause), 1)
/obj/item/implant/explosive/implant(mob/living/target)
for(var/X in target.implants)
@@ -65,10 +65,10 @@
if(delay > 7)
imp_in?.visible_message(span_warning("[imp_in] starts beeping ominously!"))
playsound(get_turf(imp_in ? imp_in : src), 'sound/items/timer.ogg', 30, 0)
- addtimer(CALLBACK(src, .proc/double_pain, TRUE), delay * 0.25)
- addtimer(CALLBACK(src, .proc/double_pain), delay * 0.5)
- addtimer(CALLBACK(src, .proc/double_pain), delay * 0.75)
- addtimer(CALLBACK(src, .proc/boom_goes_the_weasel), delay)
+ addtimer(CALLBACK(src,PROC_REF(double_pain), TRUE), delay * 0.25)
+ addtimer(CALLBACK(src,PROC_REF(double_pain)), delay * 0.5)
+ addtimer(CALLBACK(src,PROC_REF(double_pain)), delay * 0.75)
+ addtimer(CALLBACK(src,PROC_REF(boom_goes_the_weasel)), delay)
else //If the delay is short, just blow up already jeez
boom_goes_the_weasel()
diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm
index f32dc194344..fb3be05d856 100644
--- a/code/game/objects/items/implants/implant_misc.dm
+++ b/code/game/objects/items/implants/implant_misc.dm
@@ -35,7 +35,7 @@
return dat
/obj/item/implant/adrenalin/post_implant(mob/living/target, mob/living/user, silent = FALSE)
- RegisterSignal(target, COMSIG_MOB_STATCHANGE, .proc/prejuice)
+ RegisterSignal(target, COMSIG_MOB_STATCHANGE,PROC_REF(prejuice))
return
/obj/item/implant/adrenalin/post_removed(mob/living/source, silent = FALSE, special = 0)
@@ -49,7 +49,7 @@
if(newstat == CONSCIOUS)
return
playsound(imp_in, 'sound/effects/autoinjector_beeps.ogg', 75, TRUE)
- addtimer(CALLBACK(src, .proc/juice), 2 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(juice)), 2 SECONDS)
/obj/item/implant/adrenalin/proc/juice()
diff --git a/code/game/objects/items/implants/implant_stealth.dm b/code/game/objects/items/implants/implant_stealth.dm
index eb58d76d1b3..9bc9dd94479 100644
--- a/code/game/objects/items/implants/implant_stealth.dm
+++ b/code/game/objects/items/implants/implant_stealth.dm
@@ -36,7 +36,7 @@
/obj/structure/closet/cardboard/agent/proc/reveal()
alpha = 255
- addtimer(CALLBACK(src, .proc/go_invisible), 10, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(go_invisible)), 10, TIMER_OVERRIDE|TIMER_UNIQUE)
/obj/structure/closet/cardboard/agent/Bump(atom/movable/A)
. = ..()
diff --git a/code/game/objects/items/loadout_beacons.dm b/code/game/objects/items/loadout_beacons.dm
index 23375b11602..b225b6c1c7e 100644
--- a/code/game/objects/items/loadout_beacons.dm
+++ b/code/game/objects/items/loadout_beacons.dm
@@ -309,7 +309,7 @@ GLOBAL_LIST_EMPTY(loadout_boxes)
/obj/item/kit_spawner/attack_self(mob/user)
if(can_use_kit(user))
- INVOKE_ASYNC(src, .proc/use_the_kit, user)
+ INVOKE_ASYNC(src,PROC_REF(use_the_kit), user)
else
playsound(src, 'sound/machines/synth_no.ogg', 40, 1)
@@ -376,7 +376,7 @@ GLOBAL_LIST_EMPTY(loadout_boxes)
stop_using_the_kit(user)
return
//user.show_message("[final_key] selected!")
- INVOKE_ASYNC(src, .proc/spawn_the_thing, user, GLOB.loadout_boxes[type][second_key][final_key], first_key)
+ INVOKE_ASYNC(src,PROC_REF(spawn_the_thing), user, GLOB.loadout_boxes[type][second_key][final_key], first_key)
/obj/item/kit_spawner/proc/check_choice(choice_to_check)
if(!choice_to_check)
diff --git a/code/game/objects/items/mannequin.dm b/code/game/objects/items/mannequin.dm
index f0c87be80aa..92f5a1a0d7b 100644
--- a/code/game/objects/items/mannequin.dm
+++ b/code/game/objects/items/mannequin.dm
@@ -22,7 +22,7 @@
/obj/item/mannequin/Initialize(mapload)
. = ..()
if(mapload)
- addtimer(CALLBACK(src, .proc/set_looks), 30 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(set_looks)), 30 SECONDS)
else
set_looks()
if(debug)
@@ -57,7 +57,7 @@
my_overlay = SSdummy.get_dummy_image("mannequin", spec, dressup, null, null, null, random_body, random_species, random_outfit, TRUE, FALSE)
update_icon()
- addtimer(CALLBACK(src, .proc/set_looks), 1 HOURS)
+ addtimer(CALLBACK(src,PROC_REF(set_looks)), 1 HOURS)
/obj/item/mannequin/update_overlays()
. = ..()
@@ -73,7 +73,7 @@
set_looks(src, user, user)
/obj/item/mannequin/proc/debugify()
- RegisterSignal(src, COMSIG_ITEM_ATTACKCHAIN, .proc/set_looks)
+ RegisterSignal(src, COMSIG_ITEM_ATTACKCHAIN,PROC_REF(set_looks))
/obj/item/mannequin/british_infantry
name = "british infantry mannequin"
diff --git a/code/game/objects/items/melee/f13onehanded.dm b/code/game/objects/items/melee/f13onehanded.dm
index 1a25a77c3a8..2214974af78 100644
--- a/code/game/objects/items/melee/f13onehanded.dm
+++ b/code/game/objects/items/melee/f13onehanded.dm
@@ -256,7 +256,7 @@
tool_behaviour = TOOL_RITUAL
toolspeed = 1
-obj/item/melee/onehanded/knife/switchblade
+/obj/item/melee/onehanded/knife/switchblade
name = "switchblade"
desc = "A sharp, concealable, spring-loaded knife."
icon_state = "knife_switch"
@@ -859,7 +859,7 @@ obj/item/melee/onehanded/knife/switchblade
attack_verb = list("stabbed", "sliced", "pierced", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
-obj/item/melee/unarmed/punchdagger/cyborg
+/obj/item/melee/unarmed/punchdagger/cyborg
name = "assaultron claws"
desc = "Razor sharp blades embedded into the grippers of an assaultron. Sharp."
icon_state = "tiger_claw"
diff --git a/code/game/objects/items/melee/f13twohanded.dm b/code/game/objects/items/melee/f13twohanded.dm
index 496c608bb7f..9dac5064d52 100644
--- a/code/game/objects/items/melee/f13twohanded.dm
+++ b/code/game/objects/items/melee/f13twohanded.dm
@@ -19,8 +19,8 @@
/obj/item/twohanded/Initialize()
. = ..()
- 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))
force_unwielded = force
diff --git a/code/game/objects/items/melee/huntinghorn.dm b/code/game/objects/items/melee/huntinghorn.dm
index 0741fd98d0c..cef6784cd63 100644
--- a/code/game/objects/items/melee/huntinghorn.dm
+++ b/code/game/objects/items/melee/huntinghorn.dm
@@ -81,7 +81,7 @@
"performance" = image(icon = 'icons/misc/mark.dmi', icon_state = "X"),
),
"huntinghornradial",
- CALLBACK(src, .proc/radial_check, user),
+ CALLBACK(src, PROC_REF(radial_check), user),
radius = 42,
require_near = TRUE,
tooltips = TRUE,
diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm
index 84f1ba7aac5..eeec40cc2e7 100644
--- a/code/game/objects/items/melee/weaponry.dm
+++ b/code/game/objects/items/melee/weaponry.dm
@@ -400,7 +400,7 @@ superlagg says: cool story, oranges
/obj/item/statuebust/Initialize()
. = ..()
AddElement(/datum/element/art, impressiveness)
- addtimer(CALLBACK(src, /datum.proc/_AddElement, list(/datum/element/beauty, 1000)), 0)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum,_AddElement), list(/datum/element/beauty, 1000)), 0)
/obj/item/tailclub
name = "tail club"
@@ -486,7 +486,7 @@ superlagg says: cool story, oranges
var/mob/living/owner = loc
if(!istype(owner))
return
- RegisterSignal(owner, COMSIG_PARENT_EXAMINE, .proc/ownerExamined)
+ RegisterSignal(owner, COMSIG_PARENT_EXAMINE,PROC_REF(ownerExamined))
/obj/item/circlegame/Destroy()
var/mob/owner = loc
@@ -503,7 +503,7 @@ superlagg says: cool story, oranges
/obj/item/circlegame/proc/ownerExamined(mob/living/owner, mob/living/sucker)
if(!istype(sucker) || !in_range(owner, sucker))
return
- addtimer(CALLBACK(src, .proc/waitASecond, owner, sucker), 4)
+ addtimer(CALLBACK(src,PROC_REF(waitASecond), owner, sucker), 4)
/// Stage 2: Fear sets in
/obj/item/circlegame/proc/waitASecond(mob/living/owner, mob/living/sucker)
@@ -512,10 +512,10 @@ superlagg says: cool story, oranges
if(owner == sucker) // big mood
to_chat(owner, span_danger("Wait a second... you just looked at your own [src.name]!"))
- addtimer(CALLBACK(src, .proc/selfGottem, owner), 10)
+ addtimer(CALLBACK(src,PROC_REF(selfGottem), owner), 10)
else
to_chat(sucker, span_danger("Wait a second... was that a-"))
- addtimer(CALLBACK(src, .proc/GOTTEM, owner, sucker), 6)
+ addtimer(CALLBACK(src,PROC_REF(GOTTEM), owner, sucker), 6)
/// Stage 3A: We face our own failures
/obj/item/circlegame/proc/selfGottem(mob/living/owner)
@@ -641,8 +641,8 @@ superlagg says: cool story, oranges
/obj/item/vibro_weapon/Initialize()
. = ..()
- 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/vibro_weapon/ComponentInitialize()
. = ..()
@@ -696,8 +696,8 @@ superlagg says: cool story, oranges
/obj/item/pitchfork/Initialize()
. = ..()
- 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/pitchfork/ComponentInitialize()
. = ..()
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 2110d8c136e..160e6439985 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -848,7 +848,7 @@ GLOBAL_LIST_INIT(valid_plushie_paths, valid_plushie_paths())
if(!H)
return //Type safety.
H.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
- addtimer(CALLBACK(H, /mob/living/carbon/human.proc/dropItemToGround, src, TRUE), 1)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human,dropItemToGround), src, TRUE), 1)
/obj/item/toy/plush/plushling/New()
var/initial_state = pick("plushie_lizard", "plushie_snake", "plushie_slime", "fox")
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index 66a9dbecf41..257d0500bdb 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -363,7 +363,7 @@
if(charging)
return
if(candy < candymax)
- addtimer(CALLBACK(src, .proc/charge_lollipops), charge_delay)
+ addtimer(CALLBACK(src,PROC_REF(charge_lollipops)), charge_delay)
charging = TRUE
/obj/item/borg/lollipop/proc/charge_lollipops()
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index 130dd023147..fc991c71e40 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -262,7 +262,7 @@
return ..()
//Bulletproof riot shield
-obj/item/shield/riot/bullet_proof
+/obj/item/shield/riot/bullet_proof
name = "bullet resistant shield"
desc = "Kevlar coated surface makes this riot shield a lot better for blocking projectiles."
icon_state = "shield_bulletproof"
@@ -536,7 +536,7 @@ The telescopic shields are legacy and don't fit, but the code might be of intere
/obj/item/shield/riot/implant/Moved()
. = ..()
if(istype(loc, /obj/item/organ/cyberimp/arm/shield))
- recharge_timerid = addtimer(CALLBACK(src, .proc/recharge), recharge_delay, flags = TIMER_STOPPABLE)
+ recharge_timerid = addtimer(CALLBACK(src,PROC_REF(recharge)), recharge_delay, flags = TIMER_STOPPABLE)
else //extending
if(recharge_timerid)
deltimer(recharge_timerid)
diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm
index fdbed015d25..768ffda323d 100644
--- a/code/game/objects/items/singularityhammer.dm
+++ b/code/game/objects/items/singularityhammer.dm
@@ -18,8 +18,8 @@
/obj/item/singularityhammer/New()
..()
- 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))
START_PROCESSING(SSobj, src)
/obj/item/singularityhammer/ComponentInitialize()
@@ -100,8 +100,8 @@
/obj/item/mjollnir/Initialize()
. = ..()
- 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/mjollnir/ComponentInitialize()
. = ..()
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 5a35d1a6059..5313c887377 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -90,7 +90,7 @@
/obj/item/stack/medical/attack(mob/living/M, mob/user)
. = ..()
- INVOKE_ASYNC(src, .proc/try_heal, M, user)
+ INVOKE_ASYNC(src,PROC_REF(try_heal), M, user)
/obj/item/stack/medical/proc/try_heal(mob/living/M, mob/user, just_check = FALSE)
if(heal(M, user, just_check))
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 4cfbc344c3c..bd0660951b3 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
SSblackbox.record_feedback("tally", "station_mess_created", 1, name)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 11e44c6ed73..8b918c78ae9 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -65,7 +65,7 @@
custom_materials[i] *= amount
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_movable_entered_occupied_turf,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_movable_entered_occupied_turf),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -74,7 +74,7 @@
if(item_stack == src)
continue
if(can_merge(item_stack))
- INVOKE_ASYNC(src, .proc/merge_without_del, item_stack)
+ INVOKE_ASYNC(src,PROC_REF(merge_without_del), item_stack)
if(zero_amount())
return INITIALIZE_HINT_QDEL
var/list/temp_recipes = get_main_recipes()
@@ -449,7 +449,7 @@
else
transfer = min(transfer, (limit ? limit : target_stack.max_amount) - target_stack.amount)
if(pulledby)
- INVOKE_ASYNC(pulledby, /atom/movable/.proc/start_pulling, target_stack)
+ INVOKE_ASYNC(pulledby, TYPE_PROC_REF(/atom/movable/,start_pulling), target_stack)
target_stack.copy_evidences(src)
use(transfer, transfer = TRUE, check = FALSE)
target_stack.add(transfer)
@@ -473,7 +473,7 @@
return
if(!arrived.throwing && can_merge(arrived))
- INVOKE_ASYNC(src, .proc/merge, arrived)
+ INVOKE_ASYNC(src,PROC_REF(merge), arrived)
/obj/item/stack/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
if(can_merge(AM, TRUE))
diff --git a/code/game/objects/items/storage/_storage.dm b/code/game/objects/items/storage/_storage.dm
index 86a36853282..b59038cf749 100644
--- a/code/game/objects/items/storage/_storage.dm
+++ b/code/game/objects/items/storage/_storage.dm
@@ -17,7 +17,7 @@
/obj/item/storage/ComponentInitialize()
AddComponent(component_type)
- //RegisterSignal(src, COMSIG_VORE_ATOM_DIGESTED, .proc/dump_everything) // TODO: Make this work
+ //RegisterSignal(src, COMSIG_VORE_ATOM_DIGESTED,PROC_REF(dump_everything)) // TODO: Make this work
/obj/item/storage/AllowDrop()
return TRUE
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index cc47d1c950d..b5fb74ede78 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -640,7 +640,7 @@
new /obj/item/reagent_containers/pill/patch/medx(src)
new /obj/item/grenade/syndieminibomb(src)
-obj/item/storage/backpack/duffelbag/syndie/shredderbundle
+/obj/item/storage/backpack/duffelbag/syndie/shredderbundle
desc = "A large duffel bag containing two CX Shredders, some magazines, an elite hardsuit, and a chest rig."
/obj/item/storage/backpack/duffelbag/syndie/shredderbundle/PopulateContents()
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index 319ed07df8c..ecdc186c77b 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -105,7 +105,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/Pickup_ores)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(Pickup_ores))
listeningTo = user
/obj/item/storage/bag/ore/dropped(mob/user)
@@ -354,7 +354,7 @@
/* Now in tribal mode!*/
-obj/item/storage/bag/chemistry/tribal
+/obj/item/storage/bag/chemistry/tribal
name = "tribal medicinal bag"
icon = 'icons/obj/chemical.dmi'
icon_state = "tribal_chembag"
@@ -464,7 +464,7 @@ obj/item/storage/bag/chemistry/tribal
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/Pickup_casings)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(Pickup_casings))
listeningTo = user
/// finds a casing and return it
diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm
index 3f4fc259dab..1c65b20f9ec 100644
--- a/code/game/objects/items/storage/book.dm
+++ b/code/game/objects/items/storage/book.dm
@@ -56,7 +56,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
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)
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index 5abcaae6fcb..b882dac0af7 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -265,7 +265,7 @@
for(var/i in 1 to 7)
new /obj/item/grenade/flashbang(src)
-obj/item/storage/box/stingbangs
+/obj/item/storage/box/stingbangs
name = "box of stingbangs (WARNING)"
desc = "WARNING: These devices are extremely dangerous and can cause severe injuries or death in repeated use."
icon_state = "secbox"
@@ -794,7 +794,7 @@ obj/item/storage/box/stingbangs
/obj/item/storage/box/papersack/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/pen))
- var/choice = show_radial_menu(user, src , papersack_designs, custom_check = CALLBACK(src, .proc/check_menu, user, W), radius = 36, require_near = TRUE)
+ var/choice = show_radial_menu(user, src , papersack_designs, custom_check = CALLBACK(src,PROC_REF(check_menu), user, W), radius = 36, require_near = TRUE)
if(!choice)
return FALSE
if(icon_state == "paperbag_[choice]")
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index 0793cfb25a1..1ba8b94a31a 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -57,7 +57,7 @@
on = TRUE
icon_state = "[initial(icon_state)]-on"
ion_trail.start()
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/move_react)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(move_react))
if(full_speed)
user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed)
diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm
index c5489704d1b..47ceed39a82 100644
--- a/code/game/objects/items/teleportation.dm
+++ b/code/game/objects/items/teleportation.dm
@@ -184,8 +184,8 @@
var/list/obj/effect/portal/created = create_portal_pair(current_location, get_teleport_turf(get_turf(T)), 300, 1, null, atmos_link_override)
if(!(LAZYLEN(created) == 2))
return
- RegisterSignal(created[1], COMSIG_PARENT_QDELETING, .proc/on_portal_destroy) //Gosh darn it kevinz.
- RegisterSignal(created[2], COMSIG_PARENT_QDELETING, .proc/on_portal_destroy)
+ RegisterSignal(created[1], COMSIG_PARENT_QDELETING,PROC_REF(on_portal_destroy)) //Gosh darn it kevinz.
+ RegisterSignal(created[2], COMSIG_PARENT_QDELETING,PROC_REF(on_portal_destroy))
try_move_adjacent(created[1], user.dir)
active_portal_pairs[created[1]] = created[2]
var/obj/effect/portal/c1 = created[1]
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index 6ad01a6a3fc..ef29d86e105 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -61,7 +61,7 @@
core = ncore
icon_state = "core_container_loaded"
to_chat(user, span_warning("Container is sealing..."))
- addtimer(CALLBACK(src, .proc/seal), 50)
+ addtimer(CALLBACK(src,PROC_REF(seal)), 50)
return TRUE
/obj/item/nuke_core_container/proc/seal()
@@ -208,7 +208,7 @@
T.icon_state = "supermatter_tongs"
icon_state = "core_container_loaded"
to_chat(user, span_warning("Container is sealing..."))
- addtimer(CALLBACK(src, .proc/seal), 50)
+ addtimer(CALLBACK(src,PROC_REF(seal)), 50)
return TRUE
/obj/item/nuke_core_container/supermatter/seal()
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 354ad818bd1..0f1cb0c9116 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -408,7 +408,7 @@
active = TRUE
playsound(src, 'sound/effects/pope_entry.ogg', 100)
Rumble()
- addtimer(CALLBACK(src, .proc/stopRumble), 600)
+ addtimer(CALLBACK(src,PROC_REF(stopRumble)), 600)
else
to_chat(user, "[src] is already active.")
@@ -512,7 +512,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -551,7 +551,7 @@
/obj/effect/decal/cleanable/ash/snappop_phoenix/New()
. = ..()
- addtimer(CALLBACK(src, .proc/respawn), respawn_time)
+ addtimer(CALLBACK(src,PROC_REF(respawn)), respawn_time)
/obj/effect/decal/cleanable/ash/snappop_phoenix/proc/respawn()
new /obj/item/toy/snappop/phoenix(get_turf(src))
@@ -908,7 +908,7 @@
if(!(cardUser.mobility_flags & MOBILITY_USE))
return
var/O = src
- var/choice = show_radial_menu(usr,src, handradial, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 36, require_near = TRUE)
+ var/choice = show_radial_menu(usr,src, handradial, custom_check = CALLBACK(src,PROC_REF(check_menu), user), radius = 36, require_near = TRUE)
if(!choice)
return FALSE
var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc)
diff --git a/code/game/objects/items/validball.dm b/code/game/objects/items/validball.dm
index f3d704031e5..c072ced684f 100644
--- a/code/game/objects/items/validball.dm
+++ b/code/game/objects/items/validball.dm
@@ -27,7 +27,7 @@
/obj/item/validball/Initialize()
. = ..()
register_vb_datum()
- addtimer(CALLBACK(src, .proc/activate_the_validball), autoreveal_time)
+ addtimer(CALLBACK(src,PROC_REF(activate_the_validball)), autoreveal_time)
SSvalidball.valid_balls |= src
/obj/item/validball/ComponentInitialize()
@@ -178,7 +178,7 @@
user.show_message("You press the SCAN button, and [src] lets out an excited beep!")
say(span_robot("Scanning for anomalous signals, please wait."))
currently_scanning = TRUE
- addtimer(CALLBACK(src, .proc/read_scan_ping, user), scan_time)
+ addtimer(CALLBACK(src,PROC_REF(read_scan_ping), user), scan_time)
/obj/item/pinpointer/validball_finder/proc/read_scan_ping()
if(!isweakref(scan_turf))
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index 9fb2a8d7522..57400608ee3 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -250,7 +250,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
if(QDELETED(src))
return 0
obj_flags |= BEING_SHOCKED
- addtimer(CALLBACK(src, .proc/reset_shocked), 10)
+ addtimer(CALLBACK(src,PROC_REF(reset_shocked)), 10)
return power / 2
//The surgeon general warns that being buckled to certain objects receiving powerful shocks is greatly hazardous to your health
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index 1faf6774deb..0af0f97bf06 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -230,7 +230,7 @@
if(status == GROWING || status == GROWN)
child = new(src)
if(status == GROWING)
- addtimer(CALLBACK(src, .proc/Grow), rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
+ addtimer(CALLBACK(src,PROC_REF(Grow)), rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
proximity_monitor = new(src, status == GROWN ? 1 : 0)
if(status == BURST)
obj_integrity = integrity_failure * max_integrity
@@ -284,7 +284,7 @@
status = BURST
update_icon()
flick("egg_opening", src)
- addtimer(CALLBACK(src, .proc/finish_bursting, kill), 15)
+ addtimer(CALLBACK(src,PROC_REF(finish_bursting), kill), 15)
/obj/structure/alien/egg/proc/finish_bursting(kill = TRUE)
if(child)
diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm
index 2e785352ba8..36837401bb6 100644
--- a/code/game/objects/structures/barsigns.dm
+++ b/code/game/objects/structures/barsigns.dm
@@ -111,7 +111,7 @@
return
obj_flags |= EMAGGED
to_chat(user, span_notice("You emag the barsign. Takeover in progress..."))
- addtimer(CALLBACK(src, .proc/syndie_bar_good), 10 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(syndie_bar_good)), 10 SECONDS)
return TRUE
/obj/structure/sign/barsign/proc/syndie_bar_good()
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 82f517c2d86..e7e490fb563 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -25,11 +25,11 @@
/obj/structure/chair/Initialize()
. = ..()
if(!anchored) //why would you put these on the shuttle?
- addtimer(CALLBACK(src, .proc/RemoveFromLatejoin), 0)
+ addtimer(CALLBACK(src,PROC_REF(RemoveFromLatejoin)), 0)
/obj/structure/chair/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, .proc/can_user_rotate),CALLBACK(src, .proc/can_be_rotated),null)
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src,PROC_REF(can_user_rotate),CALLBACK(src),PROC_REF(can_be_rotated),null))
/obj/structure/chair/proc/can_be_rotated(mob/user)
return TRUE
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 5a66d1e83e8..15d2ac4d60b 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -52,7 +52,7 @@
if(anchored)
storage_capacity = 30
if(mapload && !opened) // if closed, any item at the crate's loc is put in the contents
- addtimer(CALLBACK(src, .proc/take_contents), 0)
+ addtimer(CALLBACK(src,PROC_REF(take_contents)), 0)
if(secure)
lockerelectronics = new(src)
lockerelectronics.accesses = req_access
diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
index 21cab169636..14cbc10f72b 100644
--- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
+++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
@@ -27,7 +27,7 @@
step(src, direction)
user.setDir(direction)
if(oldloc != loc)
- addtimer(CALLBACK(src, .proc/ResetMoveDelay), (use_mob_movespeed ? user.movement_delay() : CONFIG_GET(number/movedelay/walk_delay)) * move_speed_multiplier)
+ addtimer(CALLBACK(src,PROC_REF(ResetMoveDelay)), (use_mob_movespeed ? user.movement_delay() : CONFIG_GET(number/movedelay/walk_delay)) * move_speed_multiplier)
else
ResetMoveDelay()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm
index 74da1a7634d..6daf5939e0c 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm
@@ -38,7 +38,7 @@
SupplyOrder = SO//uses Supply Order passed from expressconsole into BDPtarget
else
other_delivery = SO//if the object is not a supply order, we force the object in the pod
- addtimer(CALLBACK(src, .proc/open), 30)//open 3seconds after appearing
+ addtimer(CALLBACK(src,PROC_REF(open)), 30)//open 3seconds after appearing
/obj/structure/closet/supplypod/update_icon()
cut_overlays()
@@ -63,7 +63,7 @@
update_icon()
playsound(src, open_sound, 15, 1, -3)
if(istype(src,/obj/structure/closet/supplypod/bluespacepod))
- addtimer(CALLBACK(src, .proc/sparks), 30)//if bluespace, then 3 seconds after opening, make some sparks and delete
+ addtimer(CALLBACK(src,PROC_REF(sparks)), 30)//if bluespace, then 3 seconds after opening, make some sparks and delete
/obj/structure/closet/supplypod/proc/sparks()//sparks cant be called from addtimer
do_sparks(5, TRUE, src)
@@ -115,12 +115,12 @@
if(POD_CENTCOM) //Admin smite, even faster.
delayTime = 5//speedy delivery
- addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), delayTime)//standard pods take 3 seconds to come in, bluespace pods take 1.5
+ addtimer(CALLBACK(src,PROC_REF(beginLaunch), SO, podID), delayTime)//standard pods take 3 seconds to come in, bluespace pods take 1.5
/obj/effect/DPtarget/proc/beginLaunch(SO, podID)
fallingPod = new /obj/effect/temp_visual/DPfall(drop_location(), podID)
animate(fallingPod, pixel_z = 0, time = 3, easing = LINEAR_EASING)//make and animate a falling pod
- addtimer(CALLBACK(src, .proc/endLaunch, SO, podID), 3, TIMER_CLIENT_TIME)//fall 0.3seconds
+ addtimer(CALLBACK(src,PROC_REF(endLaunch), SO, podID), 3, TIMER_CLIENT_TIME)//fall 0.3seconds
/obj/effect/DPtarget/proc/endLaunch(SO, podID)
if(podID == POD_STANDARD)
diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm
index 8994b9ccd20..b7dddd4a9c1 100644
--- a/code/game/objects/structures/divine.dm
+++ b/code/game/objects/structures/divine.dm
@@ -87,7 +87,7 @@ GLOBAL_LIST_INIT(gunparts_rates, list(
to_chat(user, span_notice("The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards."))
user.reagents.add_reagent(/datum/reagent/medicine/omnizine/godblood,20)
update_icon()
- addtimer(CALLBACK(src, /atom/.proc/update_icon), time_between_uses)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,update_icon)), time_between_uses)
/obj/structure/healingfountain/update_icon_state()
if(last_process + time_between_uses > world.time)
diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm
index 51af17da7e2..1251bf98a27 100644
--- a/code/game/objects/structures/electricchair.dm
+++ b/code/game/objects/structures/electricchair.dm
@@ -42,5 +42,5 @@
var/mob/living/buckled_mob = m
buckled_mob.electrocute_act(85, src, 1)
to_chat(buckled_mob, span_userdanger("You feel a deep shock course through your body!"))
- addtimer(CALLBACK(buckled_mob, /mob/living.proc/electrocute_act, 85, src, 1), 1)
+ addtimer(CALLBACK(buckled_mob, TYPE_PROC_REF(/mob/living,electrocute_act), 85, src, 1), 1)
visible_message(span_danger("The electric chair went off!"), span_italic("You hear a deep sharp shock!"))
diff --git a/code/game/objects/structures/femur_breaker.dm b/code/game/objects/structures/femur_breaker.dm
index ed02a2122f0..064787c0a1c 100644
--- a/code/game/objects/structures/femur_breaker.dm
+++ b/code/game/objects/structures/femur_breaker.dm
@@ -45,7 +45,7 @@
if (BREAKER_SLAT_DROPPED)
slat_status = BREAKER_SLAT_MOVING
icon_state = "breaker_raise"
- addtimer(CALLBACK(src, .proc/raise_slat), BREAKER_ANIMATION_LENGTH)
+ addtimer(CALLBACK(src,PROC_REF(raise_slat)), BREAKER_ANIMATION_LENGTH)
return
if (BREAKER_SLAT_RAISED)
if (LAZYLEN(buckled_mobs))
@@ -90,7 +90,7 @@
playsound(src, 'sound/effects/femur_breaker.ogg', 100, FALSE)
H.Stun(BREAKER_ANIMATION_LENGTH)
- addtimer(CALLBACK(src, .proc/damage_leg, H), BREAKER_ANIMATION_LENGTH, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(damage_leg), H), BREAKER_ANIMATION_LENGTH, TIMER_UNIQUE)
log_combat(user, H, "femur broke", src)
slat_status = BREAKER_SLAT_DROPPED
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index 5d47e3aa8f0..9b65c69b28f 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -346,7 +346,7 @@
/obj/item/kirbyplants/ComponentInitialize()
. = ..()
AddElement(/datum/element/tactical)
- addtimer(CALLBACK(src, /datum.proc/_AddElement, list(/datum/element/beauty, 500)), 0)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum,_AddElement), list(/datum/element/beauty, 500)), 0)
AddComponent(/datum/component/two_handed, require_twohands=TRUE, force_unwielded=10, force_wielded=10)
/obj/item/kirbyplants/random
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index 9a47994fb59..bbe1a7c225c 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -427,7 +427,7 @@
id.update_label()
else
to_chat(L, span_userdanger("Your owner is already dead! You will soon perish."))
- addtimer(CALLBACK(L, /mob.proc/dust, 150)) //Give em a few seconds as a mercy.
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob,dust), 150)) //Give em a few seconds as a mercy.
/datum/outfit/demonic_friend
name = "Demonic Friend"
diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm
index ea6f6ddc634..bfc6e884c4b 100644
--- a/code/game/objects/structures/guillotine.dm
+++ b/code/game/objects/structures/guillotine.dm
@@ -64,7 +64,7 @@
if (GUILLOTINE_BLADE_DROPPED)
blade_status = GUILLOTINE_BLADE_MOVING
icon_state = "guillotine_raise"
- addtimer(CALLBACK(src, .proc/raise_blade), GUILLOTINE_ANIMATION_LENGTH)
+ addtimer(CALLBACK(src,PROC_REF(raise_blade)), GUILLOTINE_ANIMATION_LENGTH)
return
if (GUILLOTINE_BLADE_RAISED)
if (LAZYLEN(buckled_mobs))
@@ -77,7 +77,7 @@
current_action = 0
blade_status = GUILLOTINE_BLADE_MOVING
icon_state = "guillotine_drop"
- addtimer(CALLBACK(src, .proc/drop_blade, user), GUILLOTINE_ANIMATION_LENGTH - 2) // Minus two so we play the sound and decap faster
+ addtimer(CALLBACK(src,PROC_REF(drop_blade), user), GUILLOTINE_ANIMATION_LENGTH - 2) // Minus two so we play the sound and decap faster
else
current_action = 0
else
@@ -90,7 +90,7 @@
else
blade_status = GUILLOTINE_BLADE_MOVING
icon_state = "guillotine_drop"
- addtimer(CALLBACK(src, .proc/drop_blade), GUILLOTINE_ANIMATION_LENGTH)
+ addtimer(CALLBACK(src,PROC_REF(drop_blade)), GUILLOTINE_ANIMATION_LENGTH)
/obj/structure/guillotine/proc/raise_blade()
blade_status = GUILLOTINE_BLADE_RAISED
@@ -133,7 +133,7 @@
for(var/mob/M in fov_viewers(world.view, src))
var/mob/living/carbon/human/C = M
if (ishuman(M))
- addtimer(CALLBACK(C, /mob/.proc/emote, "clap"), delay_offset * 0.3)
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/,emote), "clap"), delay_offset * 0.3)
delay_offset++
else
H.apply_damage(15 * blade_sharpness, BRUTE, head)
diff --git a/code/game/objects/structures/hivebot.dm b/code/game/objects/structures/hivebot.dm
index 669818ec888..bc922492712 100644
--- a/code/game/objects/structures/hivebot.dm
+++ b/code/game/objects/structures/hivebot.dm
@@ -15,7 +15,7 @@
smoke.start()
visible_message(span_boldannounce("[src] warps in!"))
playsound(src.loc, 'sound/effects/empulse.ogg', 25, 1)
- addtimer(CALLBACK(src, .proc/warpbots), rand(10, 600))
+ addtimer(CALLBACK(src,PROC_REF(warpbots)), rand(10, 600))
/obj/structure/hivebot_beacon/proc/warpbots()
icon_state = "def_radar"
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index 167340be7cd..a31bcde36b7 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -195,7 +195,7 @@
var/mob/living/M = user
M.electrocute_act(15,"Energy Barrier", flags = SHOCK_NOGLOVES)
shockcd = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), 5)
+ addtimer(CALLBACK(src,PROC_REF(cooldown)), 5)
/obj/structure/holosign/barrier/cyborg/hacked/Bumped(atom/movable/AM)
if(shockcd)
@@ -207,4 +207,4 @@
var/mob/living/M = AM
M.electrocute_act(15,"Energy Barrier", flags = SHOCK_NOGLOVES)
shockcd = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), 5)
+ addtimer(CALLBACK(src,PROC_REF(cooldown)), 5)
diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm
index fc5aa22a59e..18f1c2291dd 100644
--- a/code/game/objects/structures/icemoon/cave_entrance.dm
+++ b/code/game/objects/structures/icemoon/cave_entrance.dm
@@ -112,7 +112,7 @@ GLOBAL_LIST_INIT(ore_probability, list(/obj/item/stack/ore/uranium = 50,
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE)
visible_message(span_boldannounce("[src] begins to collapse, cutting it off from this world!"))
animate(src, transform = matrix().Scale(0, 1), alpha = 50, time = 5 SECONDS)
- addtimer(CALLBACK(src, .proc/collapse), 5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(collapse)), 5 SECONDS)
/obj/effect/collapsing_demonic_portal/proc/collapse()
visible_message(span_warning("Something slips out of [src]!"))
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index c643d108da9..eba1b31918e 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -111,7 +111,7 @@
if(!length(items))
return
items = sortList(items)
- var/pick = show_radial_menu(user, src, items, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 38, require_near = TRUE)
+ var/pick = show_radial_menu(user, src, items, custom_check = CALLBACK(src,PROC_REF(check_menu), user), radius = 38, require_near = TRUE)
if(!pick)
return
switch(pick)
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index 1beafe6d8b0..f2b076e43dd 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -118,18 +118,18 @@
if(UP)
peeker.reset_perspective(up.loc)
if(!LAZYACCESS(ladder_watchers, "[peek_dir]"))
- RegisterSignal(up, COMSIG_CLICK, .proc/on_connected_ladder_clicked)
+ RegisterSignal(up, COMSIG_CLICK,PROC_REF(on_connected_ladder_clicked))
if(DOWN)
peeker.reset_perspective(down.loc)
if(!LAZYACCESS(ladder_watchers, "[peek_dir]"))
- RegisterSignal(down, COMSIG_CLICK, .proc/on_connected_ladder_clicked)
+ RegisterSignal(down, COMSIG_CLICK,PROC_REF(on_connected_ladder_clicked))
else
return
LAZYADDASSOC(ladder_watchers, "[peek_dir]", peeker)
- RegisterSignal(peeker, COMSIG_MOVABLE_MOVED, .proc/on_peeker_move)
+ RegisterSignal(peeker, COMSIG_MOVABLE_MOVED,PROC_REF(on_peeker_move))
// This is the closest thing this codebase has to an incapacitation signal.
- RegisterSignal(peeker, COMSIG_DISABLE_COMBAT_MODE, .proc/stop_peeking)
+ RegisterSignal(peeker, COMSIG_DISABLE_COMBAT_MODE,PROC_REF(stop_peeking))
/obj/structure/ladder/proc/on_peeker_move(mob/source)
@@ -238,7 +238,7 @@
if(!LAZYLEN(tool_list))
to_chat(user, span_warning("Well that's awkward, [src] couldn't generate a menu! This is probably a bug, please call 1-800-IMCODER"))
return
- var/result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if (!is_ghost && !in_range(src, user))
return // nice try
switch(result)
diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm
index 7811c6f85c4..3885ac32748 100644
--- a/code/game/objects/structures/lavaland/necropolis_tendril.dm
+++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm
@@ -84,7 +84,7 @@ GLOBAL_LIST_INIT(tendrils, list())
visible_message(span_boldannounce("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!"))
visible_message(span_warning("Something falls free of the tendril!"))
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1)
- addtimer(CALLBACK(src, .proc/collapse), 50)
+ addtimer(CALLBACK(src,PROC_REF(collapse)), 50)
/obj/effect/collapse/Destroy()
QDEL_NULL(emitted_light)
diff --git a/code/game/objects/structures/life_candle.dm b/code/game/objects/structures/life_candle.dm
index be502a2128a..8c6abcc781e 100644
--- a/code/game/objects/structures/life_candle.dm
+++ b/code/game/objects/structures/life_candle.dm
@@ -35,7 +35,7 @@
linked_minds |= user.mind
update_icon()
- INVOKE_ASYNC(src, /atom/movable.proc/float, linked_minds.len)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable,float), linked_minds.len)
if(linked_minds.len)
START_PROCESSING(SSobj, src)
set_light(lit_luminosity)
@@ -64,7 +64,7 @@
for(var/m in linked_minds)
var/datum/mind/mind = m
if(!mind.current || (mind.current && mind.current.stat == DEAD))
- addtimer(CALLBACK(src, .proc/respawn, mind), respawn_time, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(respawn), mind), respawn_time, TIMER_UNIQUE)
/obj/structure/life_candle/proc/respawn(datum/mind/mind)
var/turf/T = get_turf(src)
diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm
index e8fbafa42bc..e2cdd27baa4 100644
--- a/code/game/objects/structures/manned_turret.dm
+++ b/code/game/objects/structures/manned_turret.dm
@@ -142,7 +142,7 @@
/obj/machinery/manned_turret/proc/volley(mob/user)
target_turf = get_turf(target)
for(var/i in 1 to number_of_shots)
- addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/manned_turret/,fire_helper), user), i*rate_of_fire)
/obj/machinery/manned_turret/proc/fire_helper(mob/user)
if(user.incapacitated() || !(user in buckled_mobs))
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index ef016a7bcfc..1f7cdbe7f10 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -100,7 +100,7 @@
isSwitchingStates = 0
if(close_delay != -1)
- addtimer(CALLBACK(src, .proc/Close), close_delay)
+ addtimer(CALLBACK(src,PROC_REF(Close)), close_delay)
/obj/structure/mineral_door/proc/Close()
if(isSwitchingStates || state != 1)
diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm
index 93781915da1..ed94665f69a 100644
--- a/code/game/objects/structures/plasticflaps.dm
+++ b/code/game/objects/structures/plasticflaps.dm
@@ -30,7 +30,7 @@
var/action = anchored ? "unscrews [src] from" : "screws [src] to"
var/uraction = anchored ? "unscrew [src] from " : "screw [src] to"
user.visible_message(span_warning("[user] [action] the floor."), span_notice("You start to [uraction] the floor..."), "You hear rustling noises.")
- if(W.use_tool(src, user, 100, volume=100, extra_checks = CALLBACK(src, .proc/check_anchored_state, anchored)))
+ if(W.use_tool(src, user, 100, volume=100, extra_checks = CALLBACK(src,PROC_REF(check_anchored_state), anchored)))
setAnchored(!anchored)
to_chat(user, span_notice(" You [anchored ? "unscrew" : "screw"] [src] from the floor."))
return TRUE
diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm
index 269a8a2206b..6b6bed02e59 100644
--- a/code/game/objects/structures/railings.dm
+++ b/code/game/objects/structures/railings.dm
@@ -35,7 +35,7 @@
if(density && flags_1 & ON_BORDER_1) // blocks normal movement from and to the direction it's facing.
var/static/list/loc_connections = list(
- COMSIG_ATOM_EXIT = .proc/on_exit,
+ COMSIG_ATOM_EXIT =PROC_REF(on_exit),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -81,7 +81,7 @@
if(flags_1&NODECONSTRUCT_1)
return
to_chat(user, span_notice("You begin to [anchored ? "unfasten the railing from":"fasten the railing to"] the floor..."))
- if(I.use_tool(src, user, volume = 75, extra_checks = CALLBACK(src, .proc/check_anchored, anchored)))
+ if(I.use_tool(src, user, volume = 75, extra_checks = CALLBACK(src,PROC_REF(check_anchored), anchored)))
set_anchored(!anchored)
to_chat(user, span_notice("You [anchored ? "fasten the railing to":"unfasten the railing from"] the floor."))
return TRUE
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 1f78e0140b3..3c93d9bdbe1 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -41,7 +41,7 @@ FLOOR SAFES
else
return INITIALIZE_HINT_LATELOAD
-obj/structure/safe/LateInitialize()
+/obj/structure/safe/LateInitialize()
for(var/obj/item/I in loc)
if(space >= maxspace)
return
diff --git a/code/game/objects/structures/signs/signs_maps.dm b/code/game/objects/structures/signs/signs_maps.dm
index ee29ef7443a..bcd7c02c668 100644
--- a/code/game/objects/structures/signs/signs_maps.dm
+++ b/code/game/objects/structures/signs/signs_maps.dm
@@ -56,17 +56,17 @@
desc = "A direction sign, pointing out which way the Cafe is."
icon_state = "direction_cafe"
-obj/structure/sign/directions/rooms
+/obj/structure/sign/directions/rooms
name = "room"
desc = "Room numbers, helps others find you!"
icon_state = "roomnum"
-obj/structure/sign/directions/dorms
+/obj/structure/sign/directions/dorms
name = "dorm"
desc = "Dorm numbers, help others find you, or you find others."
icon_state = "dormnum"
-obj/structure/sign/directions/cells
+/obj/structure/sign/directions/cells
name = "room"
desc = "So the less fortunate amongst us know where they'll be staying."
icon_state = "cellnum"
diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm
index 3f0d8fb468b..0ebb7f00fb4 100644
--- a/code/game/objects/structures/stairs.dm
+++ b/code/game/objects/structures/stairs.dm
@@ -76,7 +76,7 @@
build_signal_listener()
update_surrounding()
var/static/list/loc_connections = list(
- COMSIG_ATOM_EXIT = .proc/on_exit,
+ COMSIG_ATOM_EXIT =PROC_REF(on_exit),
)
AddElement(/datum/element/connect_loc, loc_connections)
if(destroy_in > STAIR_NOT_TEMPORARY)
@@ -109,7 +109,7 @@
if(!isobserver(leaving) && isTerminator() && direction == dir)
leaving.set_currently_z_moving(CURRENTLY_Z_ASCENDING)
- INVOKE_ASYNC(src, .proc/stair_ascend, leaving)
+ INVOKE_ASYNC(src,PROC_REF(stair_ascend), leaving)
leaving.Bump(src)
return COMPONENT_ATOM_BLOCK_EXIT
@@ -159,7 +159,7 @@
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_TURF_MULTIZ_NEW)
var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP)
- RegisterSignal(T, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_new)
+ RegisterSignal(T, COMSIG_TURF_MULTIZ_NEW,PROC_REF(on_multiz_new))
listeningTo = T
/obj/structure/stairs/proc/force_open_above()
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 5a71ab1a8fe..387660ac75b 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -15,8 +15,8 @@
/obj/structure/statue/Initialize()
. = ..()
AddElement(/datum/element/art, impressiveness)
- addtimer(CALLBACK(src, /datum.proc/_AddElement, list(/datum/element/beauty, impressiveness * 75)), 0)
- AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, .proc/can_user_rotate), CALLBACK(src, .proc/can_be_rotated), null)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum,_AddElement), list(/datum/element/beauty, impressiveness * 75)), 0)
+ AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src,PROC_REF(can_user_rotate)), CALLBACK(src,PROC_REF(can_be_rotated)), null)
/obj/structure/statue/proc/can_be_rotated(mob/user)
if(!anchored)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 98de7f462f2..0ddae279cd5 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -261,14 +261,14 @@
/obj/structure/table/rolling/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
/obj/structure/table/rolling/AfterPutItemOnTable(obj/item/I, mob/living/user)
. = ..()
attached_items += I
- RegisterSignal(I, COMSIG_MOVABLE_MOVED, .proc/RemoveItemFromTable) //Listen for the pickup event, unregister on pick-up so we aren't moved
+ RegisterSignal(I, COMSIG_MOVABLE_MOVED,PROC_REF(RemoveItemFromTable)) //Listen for the pickup event, unregister on pick-up so we aren't moved
/obj/structure/table/rolling/proc/RemoveItemFromTable(datum/source, newloc, dir)
if(newloc != loc) //Did we not move with the table? because that shit's ok
@@ -278,7 +278,7 @@
/obj/structure/table/rolling/proc/on_entered(atom/OldLoc, Dir)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/on_move, OldLoc, Dir)
+ INVOKE_ASYNC(src,PROC_REF(on_move), OldLoc, Dir)
/obj/structure/table/rolling/proc/on_move(atom/OldLoc, Dir)
for(var/mob/M in OldLoc.contents)//Kidnap everyone on top
@@ -307,7 +307,7 @@
/obj/structure/table/glass/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -328,7 +328,7 @@
return
// Don't break if they're just flying past
if(AM.throwing)
- addtimer(CALLBACK(src, .proc/throw_check, AM), 5)
+ addtimer(CALLBACK(src,PROC_REF(throw_check), AM), 5)
else
check_break(AM)
diff --git a/code/game/objects/structures/timeddoor.dm b/code/game/objects/structures/timeddoor.dm
index d66bb95a73d..17d8b30f794 100644
--- a/code/game/objects/structures/timeddoor.dm
+++ b/code/game/objects/structures/timeddoor.dm
@@ -48,7 +48,7 @@ GLOBAL_LIST_EMPTY(timeddoor_list)
/obj/structure/timeddoor/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/timeddeletedoor), deletion_time)
+ addtimer(CALLBACK(src,PROC_REF(timeddeletedoor)), deletion_time)
/obj/structure/timeddoor/proc/timeddeletedoor()
announce_fall()
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
index 76d65eb2e4c..7db2d2d92f5 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
@@ -27,7 +27,7 @@
/obj/structure/c_transit_tube/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS,null,null,CALLBACK(src,.proc/after_rot))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS,null,null,CALLBACK(src,PROC_REF(after_rot)))
/obj/structure/c_transit_tube/proc/after_rot(mob/user,rotation_type)
if(flipped_build_type && rotation_type == ROTATION_FLIP)
@@ -45,7 +45,7 @@
return
to_chat(user, span_notice("You start attaching the [name]..."))
add_fingerprint(user)
- if(I.use_tool(src, user, time_to_unwrench, volume=50, extra_checks=CALLBACK(src, .proc/can_wrench_in_loc, user)))
+ if(I.use_tool(src, user, time_to_unwrench, volume=50, extra_checks=CALLBACK(src,PROC_REF(can_wrench_in_loc), user)))
to_chat(user, span_notice("You attach the [name]."))
var/obj/structure/transit_tube/R = new build_type(loc, dir)
transfer_fingerprints_to(R)
diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm
index 21def516ad2..58c2edf8e95 100644
--- a/code/game/objects/structures/traps.dm
+++ b/code/game/objects/structures/traps.dm
@@ -27,7 +27,7 @@
/mob/dead))
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -62,7 +62,7 @@
/obj/structure/trap/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/process_entered, AM)
+ INVOKE_ASYNC(src,PROC_REF(process_entered), AM)
/obj/structure/trap/proc/process_entered(atom/movable/AM)
if(last_trigger + time_between_triggers > world.time)
@@ -176,7 +176,7 @@
. = ..()
time_between_triggers = 10
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/game/objects/structures/tribal_torch.dm b/code/game/objects/structures/tribal_torch.dm
index 6d4fb7e1d17..9cebcc374ea 100644
--- a/code/game/objects/structures/tribal_torch.dm
+++ b/code/game/objects/structures/tribal_torch.dm
@@ -18,7 +18,7 @@
/obj/structure/destructible/tribal_torch/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_ATOM_LICKED, .proc/smooch_fire)
+ RegisterSignal(src, COMSIG_ATOM_LICKED,PROC_REF(smooch_fire))
/obj/structure/destructible/tribal_torch/Destroy()
. = ..()
@@ -84,10 +84,10 @@
flicker(rand(1, 4)) // 0.1 to 0.4 seconds
/obj/structure/destructible/tribal_torch/proc/flicker(duration)
- addtimer(CALLBACK(src, .proc/unflicker, light_range), duration)
+ addtimer(CALLBACK(src,PROC_REF(unflicker), light_range), duration)
set_light(light_range - rand(1, 2))
flickering = TRUE
- addtimer(CALLBACK(src, .proc/unflicker), duration)
+ addtimer(CALLBACK(src,PROC_REF(unflicker)), duration)
/obj/structure/destructible/tribal_torch/proc/unflicker(new_range)
set_light(new_range)
diff --git a/code/game/objects/structures/wasteplants.dm b/code/game/objects/structures/wasteplants.dm
deleted file mode 100644
index fde80e6f66c..00000000000
--- a/code/game/objects/structures/wasteplants.dm
+++ /dev/null
@@ -1,141 +0,0 @@
-/obj/structure/flora/wasteplant
- name = "wasteland plant"
- desc = "It's a wasteland plant."
- icon = 'icons/obj/flora/wastelandflora.dmi'
- anchored = 1
- density = 0
- var/has_plod = TRUE
- var/produce
- var/timer = 5000 //50 seconds
-
-/obj/structure/flora/wasteplant/attack_hand(mob/user)
- if(!ispath(produce))
- return ..()
-
- if(has_plod)
- var/obj/item/product = new produce
- if(!istype(product))
- return //Something fucked up here or it's a weird product
- user.put_in_hands(product)
- to_chat(user, span_notice("You pluck [product] from [src]."))
- has_plod = FALSE
- update_icon() //Won't update due to proc otherwise
- timer = initial(timer) + rand(-100,100) //add some variability
- addtimer(CALLBACK(src, .proc/regrow),timer) //Set up the timer properly
- update_icon()
-
-/obj/structure/flora/wasteplant/proc/regrow()
- if(!QDELETED(src))
- has_plod = TRUE
- update_icon()
-
-/obj/structure/flora/wasteplant/update_icon()
- if(has_plod)
- icon_state = "[initial(icon_state)]"
- else
- icon_state = "[initial(icon_state)]_no"
-
-/obj/structure/flora/wasteplant/wild_broc
- name = "wild broc flower"
- icon_state = "wild_broc"
- desc = "A tall stalk bearing a vibrant, orange flower famed for its healing properties."
- produce = /obj/item/reagent_containers/food/snacks/grown/broc
-
-/obj/structure/flora/wasteplant/wild_xander
- name = "wild xander roots"
- icon_state = "wild_xander"
- desc = "A hardy, onion-like root with mild healing properties."
- produce = /obj/item/reagent_containers/food/snacks/grown/xander
-
-/obj/structure/flora/wasteplant/wild_buffalogourd
- name = "wild buffalo vines"
- icon_state = "wild_gourd"
- desc = "This large spreading perennial vine is a close relative of many cultivated gourd crops. The ripe fruit forms a small gourd, which was reportedly boiled and eaten by various tribes."
- produce = /obj/item/reagent_containers/food/snacks/grown/buffalogourd
-
-/obj/structure/flora/wasteplant/wild_horsenettle
- name = "wild horsenettle"
- icon_state = "wild_horsenettle"
- desc = "The tribes use the berries of this toxic plant as a vegetable rennet."
- produce = /obj/item/reagent_containers/food/snacks/grown/horsenettle
-
-/obj/structure/flora/wasteplant/wild_mesquite
- name = "wild horsenettle"
- icon_state = "wild_mesquite"
- desc = "The honey mesquite pod grows on a short tree with willow-like branches. Trees with pickable pods will appear bushier in foliage and have strings of pods on them, resembling a fern pattern. Pods can be eaten or used in recipes"
- produce = /obj/item/reagent_containers/food/snacks/grown/mesquite
-
-/obj/structure/flora/wasteplant/wild_pinyon
- name = "wild pinyon pine"
- icon_state = "wild_pinyon"
- desc = "The seeds of the pinyon pine, known as pine nuts, are an important food for settlers and tribes living in the mountains of the North American Southwest. All species of pine produce edible seeds, but in North America only the pinyon produces seeds large enough to be a major source of food."
- produce = /obj/item/reagent_containers/food/snacks/grown/pinyon
-
-/obj/structure/flora/wasteplant/wild_prickly
- name = "wild prickly pear"
- icon_state = "wild_prickly"
- desc = "Distinguished by having cylindrical, rather than flattened, stem segments with large barbed spines. The stem joints are very brittle on young stems, readily breaking off when the barbed spines stick to clothing or animal fur."
- produce = /obj/item/reagent_containers/food/snacks/grown/pricklypear
-
-/obj/structure/flora/wasteplant/wild_datura
- name = "wild datura"
- icon_state = "wild_datura"
- desc = "The sacred datura root, useful as an anesthetic for surgery and in healing salves, as well as for rites of passage rituals and ceremonies"
- produce = /obj/item/reagent_containers/food/snacks/grown/datura
-
-obj/structure/flora/wasteplant/wild_punga
- name = "wild punga"
- icon_state = "wild_punga"
- desc = "Punga fruit plants flower at a single point at the terminus of their stems, gradually developing into large, fleshy fruits with a yellow/brown, thick skin."
- produce = /obj/item/reagent_containers/food/snacks/grown/pungafruit
-
-/obj/structure/flora/wasteplant/wild_coyote
- name = "wild coyote tobacco shrub"
- icon_state = "wild_coyote"
- desc = "This tobacco like plant is commonly used by tribals for a great variety of medicinal and ceremonial purposes."
- produce = /obj/item/reagent_containers/food/snacks/grown/coyotetobacco
-
-/obj/structure/flora/wasteplant/wild_yucca
- name = "wild banana yucca"
- icon_state = "wild_yucca"
- desc = "The species gets its common name banana yucca from its banana-shaped fruit. The specific epithet baccata means 'with berries'"
- produce = /obj/item/reagent_containers/food/snacks/grown/yucca
-
-/obj/structure/flora/wasteplant/wild_tato
- name = "wild tato"
- icon_state = "wild_tato"
- desc = "The outside looks like a tomato, but the inside is brown. Tastes as absolutely disgusting as it looks, but will keep you from starving."
- produce = /obj/item/reagent_containers/food/snacks/grown/tato
-
-/obj/structure/flora/wasteplant/wild_feracactus
- name = "wild barrel cactus"
- icon_state = "wild_feracactus"
- desc = "A squat, spherical cactus blooming with a toxic fruit."
- produce = /obj/item/reagent_containers/food/snacks/grown/feracactus
-
-
-/obj/structure/flora/wasteplant/wild_mutfruit
- name = "wild mutfruit sapling"
- icon_state = "wild_mutfruit"
- desc = "This irradiated sapling offers a fruit that is highly nutritious and hydrating."
- produce = /obj/item/reagent_containers/food/snacks/grown/mutfruit
-
-
-/obj/structure/flora/wasteplant/wild_fungus
- name = "cave fungi"
- icon_state = "wild_fungus"
- desc = "This edible strain of fungus grows in dark places and is said to have anti-toxic properties."
- produce = /obj/item/reagent_containers/food/snacks/grown/fungus
-
-
-/obj/structure/flora/wasteplant/wild_agave
- name = "wild agave"
- icon_state = "wild_agave"
- desc = "The juice of this fleshy plant soothes burns, but it also removes nutrients from the body."
- produce = /obj/item/reagent_containers/food/snacks/grown/agave
-
-/obj/structure/flora/wasteplant/fever_blossom
- name = "wild fever blossom"
- icon_state = "wild_blossom"
- desc = "The wild fever blossom grows on creeping tangles of vine-like bushes. The flowers that adorn the bushes glow with an iridescent purple, drawing attention to the intricate floral arrays, which appear to have mutated from some sort of passion flower. It is known for its use as an aphrodisiac and sleep aid."
- produce = /obj/item/reagent_containers/food/snacks/grown/fever_blossom
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 9710ff7786a..879dcade33f 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -313,7 +313,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -328,10 +328,10 @@
// If there was already mist, and the shower was turned off (or made cold): remove the existing mist in 25 sec
var/obj/effect/mist/mist = locate() in loc
if(!mist && on && watertemp != "freezing")
- addtimer(CALLBACK(src, .proc/make_mist), 5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(make_mist)), 5 SECONDS)
if(mist && (!on || watertemp == "freezing"))
- addtimer(CALLBACK(src, .proc/clear_mist), 25 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(clear_mist)), 25 SECONDS)
/obj/machinery/shower/proc/make_mist()
var/obj/effect/mist/mist = locate() in loc
@@ -355,7 +355,7 @@
/obj/machinery/shower/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/handle_enter, AM)
+ INVOKE_ASYNC(src,PROC_REF(handle_enter), AM)
/proc/wash_obj(obj/O)
if(isobj(O))
@@ -378,7 +378,7 @@
qdel(E)
///Washes a mob as if it were under a shower or rain. Shower object is optional
-proc/give_mob_washies(mob/living/L, obj/machinery/shower/S)
+/proc/give_mob_washies(mob/living/L, obj/machinery/shower/S)
if(!isliving(L))
return FALSE
SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index f12f86f8ed9..cef98236873 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -317,7 +317,7 @@
/obj/structure/windoor_assembly/ComponentInitialize()
. = ..()
var/static/rotation_flags = ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS
- AddComponent(/datum/component/simple_rotation, rotation_flags, can_be_rotated=CALLBACK(src, .proc/can_be_rotated), after_rotation=CALLBACK(src,.proc/after_rotation))
+ AddComponent(/datum/component/simple_rotation, rotation_flags, can_be_rotated=CALLBACK(src,PROC_REF(can_be_rotated)), after_rotation=CALLBACK(src,PROC_REF(after_rotation)))
/obj/structure/windoor_assembly/proc/can_be_rotated(mob/user,rotation_type)
if(anchored)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index ced10a88251..f895eec136a 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -99,7 +99,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
electrochromatic_dim()
var/static/list/loc_connections = list(
- COMSIG_ATOM_EXIT = .proc/on_exit,
+ COMSIG_ATOM_EXIT =PROC_REF(on_exit),
)
if (flags_1 & ON_BORDER_1)
@@ -109,7 +109,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
/obj/structure/window/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated),CALLBACK(src,.proc/after_rotation))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src,PROC_REF(can_be_rotated),CALLBACK(src,PROC_REF(after_rotation))))
/obj/structure/window/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
switch(the_rcd.mode)
@@ -254,17 +254,17 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
if(reinf)
if(state == WINDOW_SCREWED_TO_FRAME || state == WINDOW_IN_FRAME)
to_chat(user, span_notice("You begin to [state == WINDOW_SCREWED_TO_FRAME ? "unscrew the window from":"screw the window to"] the frame..."))
- if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
+ if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src,PROC_REF(check_state_and_anchored), state, anchored)))
state = (state == WINDOW_IN_FRAME ? WINDOW_SCREWED_TO_FRAME : WINDOW_IN_FRAME)
to_chat(user, span_notice("You [state == WINDOW_IN_FRAME ? "unfasten the window from":"fasten the window to"] the frame."))
else if(state == WINDOW_OUT_OF_FRAME)
to_chat(user, span_notice("You begin to [anchored ? "unscrew the frame from":"screw the frame to"] the floor..."))
- if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
+ if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src,PROC_REF(check_state_and_anchored), state, anchored)))
setAnchored(!anchored)
to_chat(user, span_notice("You [anchored ? "fasten the frame to":"unfasten the frame from"] the floor."))
else //if we're not reinforced, we don't need to check or update state
to_chat(user, span_notice("You begin to [anchored ? "unscrew the window from":"screw the window to"] the floor..."))
- if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_anchored, anchored)))
+ if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src,PROC_REF(check_anchored), anchored)))
setAnchored(!anchored)
to_chat(user, span_notice("You [anchored ? "fasten the window to":"unfasten the window from"] the floor."))
return
@@ -273,7 +273,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
else if (istype(I, /obj/item/crowbar) && reinf && (state == WINDOW_OUT_OF_FRAME || state == WINDOW_IN_FRAME))
to_chat(user, span_notice("You begin to lever the window [state == WINDOW_OUT_OF_FRAME ? "into":"out of"] the frame..."))
I.play_tool_sound(src, 75)
- if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
+ if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src,PROC_REF(check_state_and_anchored), state, anchored)))
state = (state == WINDOW_OUT_OF_FRAME ? WINDOW_IN_FRAME : WINDOW_OUT_OF_FRAME)
to_chat(user, span_notice("You pry the window [state == WINDOW_IN_FRAME ? "into":"out of"] the frame."))
return
@@ -281,7 +281,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
else if(istype(I, /obj/item/wrench) && !anchored)
I.play_tool_sound(src, 75)
to_chat(user, span_notice(" You begin to disassemble [src]..."))
- if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
+ if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src,PROC_REF(check_state_and_anchored), state, anchored)))
var/obj/item/stack/sheet/G = new glass_type(user.loc, glass_amount)
G.add_fingerprint(user)
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm
index c695cb4b2be..6b99ec7a286 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -279,7 +279,7 @@
lube |= SLIDE_ICE
if(lube&SLIDE)
- new /datum/forced_movement(C, get_ranged_target_turf(C, olddir, 4), 1, FALSE, CALLBACK(C, /mob/living/carbon/.proc/spin, 1, 1))
+ new /datum/forced_movement(C, get_ranged_target_turf(C, olddir, 4), 1, FALSE, CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon/,spin), 1, 1))
else if(lube&SLIDE_ICE)
new /datum/forced_movement(C, get_ranged_target_turf(C, olddir, 1), 1, FALSE) //spinning would be bad for ice, fucks up the next dir
return TRUE
diff --git a/code/game/turfs/simulated/floor/f13_floors.dm b/code/game/turfs/simulated/floor/f13_floors.dm
index 9a36fac1e0d..e73f6ccb7e4 100644
--- a/code/game/turfs/simulated/floor/f13_floors.dm
+++ b/code/game/turfs/simulated/floor/f13_floors.dm
@@ -522,16 +522,16 @@
/turf/open/floor/plasteel/f13/metal/pipe/intersection
icon_state = "pipe_intersection"
-turf/open/floor/plasteel/f13/tile
+/turf/open/floor/plasteel/f13/tile
icon_state = "grey"
-turf/open/floor/plasteel/f13/tile/broken
+/turf/open/floor/plasteel/f13/tile/broken
icon_state = "grey_1"
- New()
- ..()
- if(icon_state == "grey_1")
- icon_state = "grey_[rand(1,8)]"
+/turf/open/floor/plasteel/f13/tile/broken/New()
+ ..()
+ if(icon_state == "grey_1")
+ icon_state = "grey_[rand(1,8)]"
/turf/open/floor/plasteel/f13/tile/long
icon_state = "grey_long"
@@ -539,10 +539,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/tile/long/broken
icon_state = "grey_long_1"
- New()
- ..()
- if(icon_state == "grey_long1")
- icon_state = "grey_long_[rand(1,6)]"
+/turf/open/floor/plasteel/f13/tile/long/broken/New()
+ ..()
+ if(icon_state == "grey_long1")
+ icon_state = "grey_long_[rand(1,6)]"
/turf/open/floor/plasteel/f13/tile/blue
icon_state = "bluetile"
@@ -550,10 +550,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/tile/blue/broken
icon_state = "blue_1"
- New()
- ..()
- if(icon_state == "blue_1")
- icon_state = "blue_[rand(1,8)]"
+/turf/open/floor/plasteel/f13/tile/blue/broken/New()
+ ..()
+ if(icon_state == "blue_1")
+ icon_state = "blue_[rand(1,8)]"
/turf/open/floor/plasteel/f13/tile/blue_long
icon_state = "blue_long"
@@ -561,10 +561,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/tile/blue_long/broken
icon_state = "blue_long_1"
- New()
- ..()
- if(icon_state == "blue_long1")
- icon_state = "blue_long_[rand(1,6)]"
+/turf/open/floor/plasteel/f13/tile/blue_long/broken/New()
+ ..()
+ if(icon_state == "blue_long1")
+ icon_state = "blue_long_[rand(1,6)]"
/turf/open/floor/plasteel/f13/tile/navy
icon_state = "navy"
@@ -572,10 +572,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/tile/navy/broken
icon_state = "navy_1"
- New()
- ..()
- if(icon_state == "navy_1")
- icon_state = "navy_[rand(1,7)]"
+/turf/open/floor/plasteel/f13/tile/navy/broken/New()
+ ..()
+ if(icon_state == "navy_1")
+ icon_state = "navy_[rand(1,7)]"
/turf/open/floor/plasteel/f13/tile/brown
icon_state = "browntile"
@@ -583,10 +583,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/tile/brown/broken
icon_state = "brown_1"
- New()
- ..()
- if(icon_state == "brown_1")
- icon_state = "brown_[rand(1,8)]"
+/turf/open/floor/plasteel/f13/tile/brown/broken/New()
+ ..()
+ if(icon_state == "brown_1")
+ icon_state = "brown_[rand(1,8)]"
/turf/open/floor/plasteel/f13/tile/fancy
icon_state = "fancy"
@@ -594,10 +594,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/tile/fancy/broken
icon_state = "fancy_1"
- New()
- ..()
- if(icon_state == "fancy_1")
- icon_state = "fancy_[rand(1,7)]"
+/turf/open/floor/plasteel/f13/tile/fancy/broken/New()
+ ..()
+ if(icon_state == "fancy_1")
+ icon_state = "fancy_[rand(1,7)]"
@@ -611,10 +611,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/stone/ornate/broken
icon_state = "ornate_1"
- New()
- ..()
- if(icon_state == "ornate_1")
- icon_state = "ornate_[rand(1,3)]"
+/turf/open/floor/plasteel/f13/stone/ornate/broken/New()
+ ..()
+ if(icon_state == "ornate_1")
+ icon_state = "ornate_[rand(1,3)]"
/turf/open/floor/plasteel/f13/stone/sierra
icon_state = "sierra"
@@ -622,10 +622,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/stone/sierra/broken
icon_state = "sierra_1"
- New()
- ..()
- if(icon_state == "sierra_1")
- icon_state = "ornate_[rand(1,3)]"
+/turf/open/floor/plasteel/f13/stone/sierra/broken/New()
+ ..()
+ if(icon_state == "sierra_1")
+ icon_state = "ornate_[rand(1,3)]"
/turf/open/floor/plasteel/f13/stone/ceramic
icon_state = "ceramic"
@@ -633,10 +633,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/stone/ceramic/broken
icon_state = "ceramic_1"
- New()
- ..()
- if(icon_state == "ceramic_1")
- icon_state = "ceramic_[rand(1,2)]"
+/turf/open/floor/plasteel/f13/stone/ceramic/broken/New()
+ ..()
+ if(icon_state == "ceramic_1")
+ icon_state = "ceramic_[rand(1,2)]"
/turf/open/floor/plasteel/f13/stone/brick
icon_state = "brick"
@@ -644,10 +644,10 @@ turf/open/floor/plasteel/f13/tile/broken
/turf/open/floor/plasteel/f13/stone/brick/broken
icon_state = "brick_1"
- New()
- ..()
- if(icon_state == "brick_1")
- icon_state = "brick_[rand(1,8)]"
+/turf/open/floor/plasteel/f13/stone/brick/broken/New()
+ ..()
+ if(icon_state == "brick_1")
+ icon_state = "brick_[rand(1,8)]"
/turf/open/floor/plasteel/f13/stone/rugged
icon_state = "khanstone"
diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm
index 53b2bac960b..e7cbf3ce350 100644
--- a/code/game/turfs/simulated/floor/fancy_floor.dm
+++ b/code/game/turfs/simulated/floor/fancy_floor.dm
@@ -23,10 +23,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "common1")
- icon_state = "common[rand(1,3)]"
+/turf/open/floor/wood_common/New()
+ ..()
+ if(icon_state == "common1")
+ icon_state = "common[rand(1,3)]"
/turf/open/floor/wood_common/wood_common_light
desc = "Wood cast in a sturdy standard pattern."
@@ -41,10 +41,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "common_light1")
- icon_state = "common_light[rand(1,3)]"
+/turf/open/floor/wood_common/wood_common_light/New()
+ ..()
+ if(icon_state == "common_light1")
+ icon_state = "common_light[rand(1,3)]"
/turf/open/floor/wood_common/wood_common_dark
desc = "Wood cast in a sturdy standard pattern."
@@ -59,10 +59,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "common_dark1")
- icon_state = "common_dark[rand(1,3)]"
+/turf/open/floor/wood_common/wood_common_dark/New()
+ ..()
+ if(icon_state == "common_dark1")
+ icon_state = "common_dark[rand(1,3)]"
@@ -79,10 +79,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "worn1")
- icon_state = "worn[rand(1,4)]"
+/turf/open/floor/wood_worn/New()
+ ..()
+ if(icon_state == "worn1")
+ icon_state = "worn[rand(1,4)]"
/turf/open/floor/wood_worn/wood_worn_light
desc = "Wood cast in a sturdy standard pattern."
@@ -97,10 +97,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "worn_light1")
- icon_state = "worn_light[rand(1,4)]"
+/turf/open/floor/wood_worn/wood_worn_light/New()
+ ..()
+ if(icon_state == "worn_light1")
+ icon_state = "worn_light[rand(1,4)]"
/turf/open/floor/wood_worn/wood_worn_dark
desc = "Wood cast in a sturdy standard pattern."
@@ -115,10 +115,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "worn_dark1")
- icon_state = "worn_dark[rand(1,4)]"
+/turf/open/floor/wood_worn/wood_worn_dark/New()
+ ..()
+ if(icon_state == "worn_dark1")
+ icon_state = "worn_dark[rand(1,4)]"
@@ -135,10 +135,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "fancy1")
- icon_state = "fancy[rand(1,1)]"
+/turf/open/floor/wood_fancy/New()
+ ..()
+ if(icon_state == "fancy1")
+ icon_state = "fancy[rand(1,1)]"
/turf/open/floor/wood_fancy/wood_fancy_light
desc = "Wood cast in a fancy angled pattern."
@@ -153,10 +153,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "fancy_light1")
- icon_state = "fancy_light[rand(1,1)]"
+/turf/open/floor/wood_fancy/wood_fancy_light/New()
+ ..()
+ if(icon_state == "fancy_light1")
+ icon_state = "fancy_light[rand(1,1)]"
/turf/open/floor/wood_fancy/wood_fancy_dark
@@ -172,10 +172,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "fancy_dark1")
- icon_state = "fancy_dark[rand(1,1)]"
+/turf/open/floor/wood_fancy/wood_fancy_dark/New()
+ ..()
+ if(icon_state == "fancy_dark1")
+ icon_state = "fancy_dark[rand(1,1)]"
@@ -193,10 +193,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "wide1")
- icon_state = "wide[rand(1,3)]"
+/turf/open/floor/wood_wide/New()
+ ..()
+ if(icon_state == "wide1")
+ icon_state = "wide[rand(1,3)]"
/turf/open/floor/wood_wide/wood_wide_light
desc = "Wood cast in a sturdy standard pattern."
@@ -211,10 +211,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "wide_light1")
- icon_state = "wide_light[rand(1,3)]"
+/turf/open/floor/wood_wide/wood_wide_light/New()
+ ..()
+ if(icon_state == "wide_light1")
+ icon_state = "wide_light[rand(1,3)]"
/turf/open/floor/wood_wide/wood_wide_dark
desc = "Wood cast in a sturdy standard pattern."
@@ -229,10 +229,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "wide_dark1")
- icon_state = "wide_dark[rand(1,3)]"
+/turf/open/floor/wood_wide/wood_wide_dark/New()
+ ..()
+ if(icon_state == "wide_dark1")
+ icon_state = "wide_dark[rand(1,3)]"
@@ -249,10 +249,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "mosaic1")
- icon_state = "mosaic[rand(1,3)]"
+/turf/open/floor/wood_mosaic/New()
+ ..()
+ if(icon_state == "mosaic1")
+ icon_state = "mosaic[rand(1,3)]"
/turf/open/floor/wood_mosaic/wood_mosaic_light
desc = "Wood cast in a sturdy standard pattern."
@@ -267,10 +267,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "mosaic_light1")
- icon_state = "mosaic_light[rand(1,3)]"
+/turf/open/floor/wood_mosaic/wood_mosaic_light/New()
+ ..()
+ if(icon_state == "mosaic_light1")
+ icon_state = "mosaic_light[rand(1,3)]"
/turf/open/floor/wood_mosaic/wood_mosaic_dark
desc = "Wood cast in a sturdy standard pattern."
@@ -285,10 +285,10 @@
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
- New()
- ..()
- if(icon_state == "mosaic_dark1")
- icon_state = "mosaic_dark[rand(1,3)]"
+/turf/open/floor/wood_mosaic/wood_mosaic_dark/New()
+ ..()
+ if(icon_state == "mosaic_dark1")
+ icon_state = "mosaic_dark[rand(1,3)]"
diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm
index e0a59c1f597..41c723ef7b1 100644
--- a/code/game/turfs/simulated/minerals.dm
+++ b/code/game/turfs/simulated/minerals.dm
@@ -100,7 +100,7 @@
if(defer_change) // TODO: make the defer change var a var for any changeturf flag
flags = CHANGETURF_DEFER_CHANGE
ScrapeAway(null, flags)
- addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(AfterChange)), 1, TIMER_UNIQUE)
playsound(src, 'sound/effects/break_stone.ogg', 50, 1) //beautiful destruction
/turf/closed/mineral/attack_animal(mob/living/simple_animal/user)
@@ -825,7 +825,7 @@
if(defer_change)
flags = CHANGETURF_DEFER_CHANGE
ScrapeAway(null, flags)
- addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(AfterChange)), 1, TIMER_UNIQUE)
/turf/closed/mineral/gibtonite/volcanic
@@ -893,7 +893,7 @@
if(defer_change) // TODO: make the defer change var a var for any changeturf flag
flags = CHANGETURF_DEFER_CHANGE
ScrapeAway(flags=flags)
- addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(AfterChange)), 1, TIMER_UNIQUE)
playsound(src, 'sound/effects/break_stone.ogg', 50, TRUE) //beautiful destruction
// H.mind.adjust_experience(/datum/skill/mining, 100) //yay!
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 73f6c7e4ebe..ef0ebce75ab 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -403,7 +403,7 @@
var/list/things = src_object.contents()
var/my_bar = SSprogress_bars.add_bar(src, list(), things.len, FALSE, TRUE)
- while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(src_object, /datum/component/storage.proc/mass_remove_from_storage, src, things, my_bar)))
+ while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(src_object, TYPE_PROC_REF(/datum/component/storage,mass_remove_from_storage), src, things, my_bar)))
stoplag(1)
SSprogress_bars.remove_bar(my_bar)
diff --git a/code/game/world.dm b/code/game/world.dm
index c11f5c2f83a..1fb4baa9898 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -13,7 +13,7 @@ GLOBAL_LIST(topic_status_cache)
/world/New()
var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL")
if (debug_server)
- call(debug_server, "auxtools_init")()
+ LIBCALL(debug_server, "auxtools_init")()
enable_debugging()
//AUXTOOLS_CHECK(AUXMOS)
#ifdef EXTOOLS_REFERENCE_TRACKING
@@ -85,11 +85,11 @@ GLOBAL_LIST(topic_status_cache)
CONFIG_SET(number/round_end_countdown, 0)
var/datum/callback/cb
#ifdef UNIT_TESTS
- cb = CALLBACK(GLOBAL_PROC, /proc/RunUnitTests)
+ cb = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(RunUnitTests))
#else
cb = VARSET_CALLBACK(SSticker, force_ending, TRUE)
#endif
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/_addtimer, cb, 10 SECONDS))
+ SSticker.OnRoundstart(CALLBACK(usr, GLOBAL_PROC_REF(_addtimer), cb, 10 SECONDS))
/world/proc/SetupLogs()
var/override_dir = params[OVERRIDE_LOG_DIRECTORY_PARAMETER]
@@ -284,7 +284,7 @@ GLOBAL_LIST(topic_status_cache)
//AUXTOOLS_SHUTDOWN(AUXMOS)
var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL")
if (debug_server)
- call(debug_server, "auxtools_shutdown")()
+ LIBCALL(debug_server, "auxtools_shutdown")()
..()
/world/proc/update_status()
diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm
index 86b612d903e..c1945bd7448 100644
--- a/code/modules/VR/vr_sleeper.dm
+++ b/code/modules/VR/vr_sleeper.dm
@@ -65,7 +65,7 @@
obj_flags |= EMAGGED
you_die_in_the_game_you_die_for_real = TRUE
sparks.start()
- addtimer(CALLBACK(src, .proc/emagNotify), 150)
+ addtimer(CALLBACK(src,PROC_REF(emagNotify)), 150)
return TRUE
/obj/machinery/vr_sleeper/update_icon_state()
@@ -176,12 +176,12 @@
C.updateappearance(TRUE, TRUE, TRUE)
var/datum/component/virtual_reality/VR = vr_mob.AddComponent(/datum/component/virtual_reality, you_die_in_the_game_you_die_for_real)
if(VR.connect(M))
- RegisterSignal(VR, COMSIG_COMPONENT_UNREGISTER_PARENT, .proc/unset_vr_mob)
- RegisterSignal(VR, COMSIG_COMPONENT_REGISTER_PARENT, .proc/set_vr_mob)
+ RegisterSignal(VR, COMSIG_COMPONENT_UNREGISTER_PARENT,PROC_REF(unset_vr_mob))
+ RegisterSignal(VR, COMSIG_COMPONENT_REGISTER_PARENT,PROC_REF(set_vr_mob))
if(!only_current_user_can_interact)
- VR.RegisterSignal(src, COMSIG_ATOM_EMAG_ACT, /datum/component/virtual_reality.proc/you_only_live_once)
- VR.RegisterSignal(src, COMSIG_MACHINE_EJECT_OCCUPANT, /datum/component/virtual_reality.proc/revert_to_reality)
- VR.RegisterSignal(src, COMSIG_PARENT_QDELETING, /datum/component/virtual_reality.proc/machine_destroyed)
+ VR.RegisterSignal(src, COMSIG_ATOM_EMAG_ACT, TYPE_PROC_REF(/datum/component/virtual_reality, you_only_live_once))
+ VR.RegisterSignal(src, COMSIG_MACHINE_EJECT_OCCUPANT, TYPE_PROC_REF(/datum/component/virtual_reality, revert_to_reality))
+ VR.RegisterSignal(src, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/datum/component/virtual_reality, machine_destroyed))
to_chat(vr_mob, span_notice("Transfer successful! You are now playing as [vr_mob] in VR!"))
else
to_chat(M, span_notice("Transfer failed! virtual reality data likely corrupted!"))
@@ -269,7 +269,7 @@
vr_area = get_base_area(src)
if(!vr_area)
return INITIALIZE_HINT_QDEL
- addtimer(CALLBACK(src, .proc/clean_up), 3 MINUTES, TIMER_LOOP)
+ addtimer(CALLBACK(src,PROC_REF(clean_up)), 3 MINUTES, TIMER_LOOP)
/obj/effect/vr_clean_master/proc/clean_up()
if (!vr_area)
@@ -285,4 +285,4 @@
if(!QDELETED(M) && (M in contents) && M.stat == DEAD)
qdel(M)
corpse_party -= M
- addtimer(CALLBACK(src, .proc/clean_up), 3 MINUTES)
+ addtimer(CALLBACK(src,PROC_REF(clean_up)), 3 MINUTES)
diff --git a/code/modules/WVM/wmv_buyer.dm b/code/modules/WVM/wmv_buyer.dm
index 92632e533fb..132e4f1b3d5 100644
--- a/code/modules/WVM/wmv_buyer.dm
+++ b/code/modules/WVM/wmv_buyer.dm
@@ -280,7 +280,7 @@ GLOBAL_LIST_EMPTY(wasteland_vendor_shop_list)
GLOB.wasteland_vendor_shop_list[trader_key] = list()
var/list/donut = list()
/// so parents are processed first, and subtype prices have priority
- var/list/buylist = sortList(buyables_loose, /proc/cmp_typepaths_length_asc)
+ var/list/buylist = sortList(buyables_loose, GLOBAL_PROC_REF(cmp_typepaths_length_asc))
for(var/stuff in buylist)
var/list/cumfrosting = list()
cumfrosting = typecacheof(stuff)
@@ -289,7 +289,7 @@ GLOBAL_LIST_EMPTY(wasteland_vendor_shop_list)
donut[thing] = cumfrosting[thing]
/// now, prune and process the tight list
buylist.Cut()
- buylist = sortList(buyables_tight, /proc/cmp_typepaths_length_asc)
+ buylist = sortList(buyables_tight, GLOBAL_PROC_REF(cmp_typepaths_length_asc))
for(var/stuff in buylist)
var/list/cumfrosting = list()
cumfrosting = typecacheof(stuff, TRUE)
@@ -455,7 +455,7 @@ GLOBAL_LIST_EMPTY(wasteland_vendor_shop_list)
if(istype(thingy, /obj/item/button))
continue
if(appraise_item(thingy, TRUE))
- INVOKE_ASYNC(src, .proc/sell_loop_start)
+ INVOKE_ASYNC(src,PROC_REF(sell_loop_start))
return TRUE
say("There's nothing to sell!")
@@ -484,7 +484,7 @@ GLOBAL_LIST_EMPTY(wasteland_vendor_shop_list)
my_bar = SSprogress_bars.add_bar(src, list(), time2sell, TRUE, TRUE)
soundloop.start()
lock_belt()
- sales_timer = addtimer(CALLBACK(src, .proc/sell_loop_end, thing2sell), time2sell, TIMER_STOPPABLE)
+ sales_timer = addtimer(CALLBACK(src,PROC_REF(sell_loop_end), thing2sell), time2sell, TIMER_STOPPABLE)
/obj/machinery/mineral/wasteland_trader/proc/sell_loop_end(obj/item/I)
if(!I)
diff --git a/code/modules/admin/check_antagonists.dm b/code/modules/admin/check_antagonists.dm
index 532a11a532f..3b683ebaf71 100644
--- a/code/modules/admin/check_antagonists.dm
+++ b/code/modules/admin/check_antagonists.dm
@@ -106,7 +106,7 @@
else
sections += T.antag_listing_entry()
- sortTim(all_antagonists, /proc/cmp_antag_category)
+ sortTim(all_antagonists, GLOBAL_PROC_REF(cmp_antag_category))
var/current_category
var/list/current_section = list()
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index c13d786ac3f..c17cdb946a8 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -699,9 +699,9 @@
var/ghostcandidates = list()
for (var/j in 1 to min(prefs["amount"]["value"], length(candidates)))
ghostcandidates += pick_n_take(candidates)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/doPortalSpawn, get_random_station_turf(), pathToSpawn, length(ghostcandidates), storm, ghostcandidates, outfit), i*prefs["delay"]["value"])
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(doPortalSpawn), get_random_station_turf(), pathToSpawn, length(ghostcandidates), storm, ghostcandidates, outfit), i*prefs["delay"]["value"])
else if (prefs["playersonly"]["value"] != "Yes")
- addtimer(CALLBACK(GLOBAL_PROC, .proc/doPortalSpawn, get_random_station_turf(), pathToSpawn, prefs["amount"]["value"], storm, null, outfit), i*prefs["delay"]["value"])
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(doPortalSpawn), get_random_station_turf(), pathToSpawn, prefs["amount"]["value"], storm, null, outfit), i*prefs["delay"]["value"])
if(E)
E.processing = FALSE
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
index f8fd94142f6..971330f0a1d 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
@@ -494,7 +494,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/sdql2_vv_all, new(null
options |= SDQL2_OPTION_SEQUENTIAL
/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/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 07748d3fd60..cd6b783dca9 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -228,7 +228,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
//Removes the ahelp verb and returns it after 2 minutes
/datum/admin_help/proc/TimeoutVerb()
remove_verb(initiator, /client/verb/adminhelp)
- initiator.adminhelptimerid = addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 1200, TIMER_STOPPABLE) //2 minute cooldown of admin helps
+ initiator.adminhelptimerid = addtimer(CALLBACK(initiator, TYPE_PROC_REF(/client, giveadminhelpverb)), 1200, TIMER_STOPPABLE) //2 minute cooldown of admin helps
//private
/datum/admin_help/proc/FullMonty(ref_src)
@@ -348,7 +348,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
state = AHELP_RESOLVED
GLOB.ahelp_tickets.ListInsert(src)
- addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 50)
+ addtimer(CALLBACK(initiator, TYPE_PROC_REF(/client, giveadminhelpverb)), 50)
AddInteraction("Resolved by [key_name].")
to_chat(initiator, span_adminhelp("Your ticket has been resolved by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"]. The Adminhelp verb will be returned to you shortly."))
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 068920bb5e1..e43c1757f33 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -218,7 +218,7 @@
//AdminPM popup for ApocStation and anybody else who wants to use it. Set it with POPUP_ADMIN_PM in config.txt ~Carn
if(CONFIG_GET(flag/popup_admin_pm))
- INVOKE_ASYNC(src, .proc/popup_admin_pm, recipient, msg)
+ INVOKE_ASYNC(src,PROC_REF(popup_admin_pm), recipient, msg)
else //neither are admins
to_chat(src, span_danger("Error: Admin-PM: Non-admin to non-admin PM communication is forbidden."), confidential = TRUE)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 6d2db7a5faa..ca28adfc662 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -1196,7 +1196,7 @@ GLOBAL_LIST_INIT(gun_loot_tables, list(/obj/effect/spawner/lootdrop/f13/trash_gu
var/list/sortinglist = list()
for(var/gg in GLOB.gun_balance_list)
sortinglist[gg] = GLOB.gun_balance_list[gg][sorttype]//Associate the sorting value to the key
- sortTim(sortinglist, /proc/cmp_numeric_dsc, associative = TRUE)//Sort the DPS associations
+ sortTim(sortinglist, GLOBAL_PROC_REF(cmp_numeric_dsc), associative = TRUE)//Sort the DPS associations
for(var/gs in sortinglist)//Re-add the other variables
sortinglist[gs] = GLOB.gun_balance_list[gs]
GLOB.gun_balance_list = LAZYCOPY(sortinglist)//Copy the temporary sorted list into the global list
diff --git a/code/modules/admin/verbs/individual_logging.dm b/code/modules/admin/verbs/individual_logging.dm
index 75c8409031c..86542132e8c 100644
--- a/code/modules/admin/verbs/individual_logging.dm
+++ b/code/modules/admin/verbs/individual_logging.dm
@@ -64,7 +64,7 @@
for(var/entry in all_the_entrys)
concatenated_logs += "[entry]
[all_the_entrys[entry]]"
if(length(concatenated_logs))
- sortTim(concatenated_logs, cmp = /proc/cmp_text_dsc) //Sort by timestamp.
+ sortTim(concatenated_logs, cmp = GLOBAL_PROC_REF(cmp_text_dsc)) //Sort by timestamp.
dat += ""
dat += concatenated_logs.Join("
")
dat += ""
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 47a892bca08..c8eef115c29 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -347,9 +347,9 @@
ertemplate = new /datum/ert/centcom_official
var/list/settings = list(
- "preview_callback" = CALLBACK(src, .proc/makeERTPreviewIcon),
+ "preview_callback" = CALLBACK(src,PROC_REF(makeERTPreviewIcon)),
"mainsettings" = list(
- "template" = list("desc" = "Template", "callback" = CALLBACK(src, .proc/makeERTTemplateModified), "type" = "datum", "path" = "/datum/ert", "subtypesonly" = TRUE, "value" = ertemplate.type),
+ "template" = list("desc" = "Template", "callback" = CALLBACK(src,PROC_REF(makeERTTemplateModified)), "type" = "datum", "path" = "/datum/ert", "subtypesonly" = TRUE, "value" = ertemplate.type),
"teamsize" = list("desc" = "Team Size", "type" = "number", "value" = ertemplate.teamsize),
"mission" = list("desc" = "Mission", "type" = "string", "value" = ertemplate.mission),
"polldesc" = list("desc" = "Ghost poll description", "type" = "string", "value" = ertemplate.polldesc),
diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm
index 03f8e2e1cb3..5bec90268b5 100644
--- a/code/modules/admin/verbs/onlyone.dm
+++ b/code/modules/admin/verbs/onlyone.dm
@@ -19,13 +19,13 @@ GLOBAL_VAR_INIT(highlander, FALSE)
message_admins(span_adminnotice("[key_name_admin(usr)] used THERE CAN BE ONLY ONE!"))
log_admin("[key_name(usr)] used THERE CAN BE ONLY ONE.")
- addtimer(CALLBACK(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 1), 50)
+ addtimer(CALLBACK(SSshuttle.emergency, TYPE_PROC_REF(/obj/docking_port/mobile/emergency,request), null, 1), 50)
/client/proc/only_one_delayed()
send_to_playing_players(span_userdanger("Bagpipes begin to blare. You feel Scottish pride coming over you."))
message_admins(span_adminnotice("[key_name_admin(usr)] used (delayed) THERE CAN BE ONLY ONE!"))
log_admin("[key_name(usr)] used delayed THERE CAN BE ONLY ONE.")
- addtimer(CALLBACK(src, .proc/only_one), 420)
+ addtimer(CALLBACK(src,PROC_REF(only_one)), 420)
/mob/living/carbon/human/proc/make_scottish()
mind.add_antag_datum(/datum/antagonist/highlander)
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 447e1efbbe4..cbe4fbc3e62 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1526,7 +1526,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits
var/shots_this_limb = 0
for(var/t in shuffle(open_adj_turfs))
var/turf/iter_turf = t
- addtimer(CALLBACK(GLOBAL_PROC, .proc/firing_squad, dude, iter_turf, slice_part.body_zone, wound_bonuses[wound_bonus_rep], damage), delay_counter)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(firing_squad), dude, iter_turf, slice_part.body_zone, wound_bonuses[wound_bonus_rep], damage), delay_counter)
delay_counter += delay_per_shot
shots_this_limb++
if(shots_this_limb > shots_per_limb_per_rep)
diff --git a/code/modules/admin/view_variables/topic_basic.dm b/code/modules/admin/view_variables/topic_basic.dm
index ebd9e33df43..a5c98bb177d 100644
--- a/code/modules/admin/view_variables/topic_basic.dm
+++ b/code/modules/admin/view_variables/topic_basic.dm
@@ -63,11 +63,11 @@
if(!check_rights(NONE))
return
var/list/names = list()
- var/list/componentsubtypes = sortList(subtypesof(/datum/component), /proc/cmp_typepaths_asc)
+ var/list/componentsubtypes = sortList(subtypesof(/datum/component), GLOBAL_PROC_REF(cmp_typepaths_asc))
names += "---Components---"
names += componentsubtypes
names += "---Elements---"
- names += sortList(subtypesof(/datum/element), /proc/cmp_typepaths_asc)
+ names += sortList(subtypesof(/datum/element), GLOBAL_PROC_REF(cmp_typepaths_asc))
var/result = input(usr, "Choose a component/element to add","better know what ur fuckin doin pal") as null|anything in names
if(!usr || !result || result == "---Components---" || result == "---Elements---")
return
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index fcaf4c696f4..7c1baa05cb5 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -112,7 +112,7 @@
/datum/antagonist/abductor/get_admin_commands()
. = ..()
- .["Equip"] = CALLBACK(src,.proc/admin_equip)
+ .["Equip"] = CALLBACK(src,PROC_REF(admin_equip))
/datum/antagonist/abductor/proc/admin_equip(mob/admin)
if(!ishuman(owner.current))
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 2856905da0f..706827b119e 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -661,7 +661,7 @@
user.visible_message(span_notice("[user] places down [src] and activates it."), span_notice("You place down [src] and activate it."))
user.dropItemToGround(src)
playsound(src, 'sound/machines/terminal_alert.ogg', 50)
- addtimer(CALLBACK(src, .proc/try_spawn_machine), 30)
+ addtimer(CALLBACK(src,PROC_REF(try_spawn_machine)), 30)
/obj/item/abductor_machine_beacon/proc/try_spawn_machine()
var/viable = FALSE
@@ -805,7 +805,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index fddeac90f81..dc055b11e33 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -63,7 +63,7 @@
update_gland_hud()
var/atom/movable/screen/alert/mind_control/mind_alert = owner.throw_alert("mind_control", /atom/movable/screen/alert/mind_control)
mind_alert.command = command
- addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration)
+ addtimer(CALLBACK(src,PROC_REF(clear_mind_control)), mind_control_duration)
return TRUE
/obj/item/organ/heart/gland/proc/clear_mind_control()
diff --git a/code/modules/antagonists/abductor/equipment/glands/access.dm b/code/modules/antagonists/abductor/equipment/glands/access.dm
index 0b776840f99..48350189b38 100644
--- a/code/modules/antagonists/abductor/equipment/glands/access.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/access.dm
@@ -9,7 +9,7 @@
/obj/item/organ/heart/gland/access/activate()
to_chat(owner, span_notice("You feel like a VIP for some reason."))
- RegisterSignal(owner, COMSIG_MOB_ALLOWED, .proc/free_access)
+ RegisterSignal(owner, COMSIG_MOB_ALLOWED,PROC_REF(free_access))
/obj/item/organ/heart/gland/access/proc/free_access(datum/source, obj/O)
return TRUE
diff --git a/code/modules/antagonists/abductor/equipment/glands/electric.dm b/code/modules/antagonists/abductor/equipment/glands/electric.dm
index 9ca684493d4..b3a6d55129a 100644
--- a/code/modules/antagonists/abductor/equipment/glands/electric.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/electric.dm
@@ -20,7 +20,7 @@
owner.visible_message(span_danger("[owner]'s skin starts emitting electric arcs!"),\
span_warning("You feel electric energy building up inside you!"))
playsound(get_turf(owner), "sparks", 100, TRUE, -1)
- addtimer(CALLBACK(src, .proc/zap), rand(30, 100))
+ addtimer(CALLBACK(src,PROC_REF(zap)), rand(30, 100))
/obj/item/organ/heart/gland/electric/proc/zap()
tesla_zap(owner, 4, 8000, ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN)
diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm
index f837745f730..3a53458b4c0 100644
--- a/code/modules/antagonists/abductor/equipment/glands/heal.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm
@@ -107,7 +107,7 @@
else
to_chat(owner, span_warning("You feel a weird rumble behind your eye sockets..."))
- addtimer(CALLBACK(src, .proc/finish_replace_eyes), rand(100, 200))
+ addtimer(CALLBACK(src,PROC_REF(finish_replace_eyes)), rand(100, 200))
/obj/item/organ/heart/gland/heal/proc/finish_replace_eyes()
var/eye_type = /obj/item/organ/eyes
@@ -125,7 +125,7 @@
else
to_chat(owner, span_warning("You feel a weird tingle in your [parse_zone(body_zone)]... even if you don't have one."))
- addtimer(CALLBACK(src, .proc/finish_replace_limb, body_zone), rand(150, 300))
+ addtimer(CALLBACK(src,PROC_REF(finish_replace_limb), body_zone), rand(150, 300))
/obj/item/organ/heart/gland/heal/proc/finish_replace_limb(body_zone)
owner.visible_message(span_warning("With a loud snap, [owner]'s [parse_zone(body_zone)] rapidly grows back from [owner.p_their()] body!"),
@@ -155,7 +155,7 @@
if(owner.reagents.has_reagent(R.type))
keep_going = TRUE
if(keep_going)
- addtimer(CALLBACK(src, .proc/keep_replacing_blood), 30)
+ addtimer(CALLBACK(src,PROC_REF(keep_replacing_blood)), 30)
/obj/item/organ/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest)
if(chest.status == BODYPART_ROBOTIC)
diff --git a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
index 1ab33f96502..3224b5205ce 100644
--- a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
@@ -48,7 +48,7 @@
if(LAZYLEN(broadcasted_mobs))
active_mind_control = TRUE
- addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration)
+ addtimer(CALLBACK(src,PROC_REF(clear_mind_control)), mind_control_duration)
update_gland_hud()
return TRUE
diff --git a/code/modules/antagonists/abductor/equipment/glands/plasma.dm b/code/modules/antagonists/abductor/equipment/glands/plasma.dm
index 291c36b1c79..1f82dd51917 100644
--- a/code/modules/antagonists/abductor/equipment/glands/plasma.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/plasma.dm
@@ -9,8 +9,8 @@
/obj/item/organ/heart/gland/plasma/activate()
to_chat(owner, span_warning("You feel bloated."))
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, owner, span_userdanger("A massive stomachache overcomes you.")), 150)
- addtimer(CALLBACK(src, .proc/vomit_plasma), 200)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), owner, span_userdanger("A massive stomachache overcomes you.")), 150)
+ addtimer(CALLBACK(src,PROC_REF(vomit_plasma)), 200)
/obj/item/organ/heart/gland/plasma/proc/vomit_plasma()
if(!owner)
diff --git a/code/modules/antagonists/abductor/equipment/glands/quantum.dm b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
index 4827cebb6e7..df8ac5c53f8 100644
--- a/code/modules/antagonists/abductor/equipment/glands/quantum.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
@@ -15,7 +15,7 @@
if(!iscarbon(M))
continue
entangled_mob = M
- addtimer(CALLBACK(src, .proc/quantum_swap), rand(600, 2400))
+ addtimer(CALLBACK(src,PROC_REF(quantum_swap)), rand(600, 2400))
return
/obj/item/organ/heart/gland/quantum/proc/quantum_swap()
diff --git a/code/modules/antagonists/abductor/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm
index 0b0531fb1ee..1a3a0a0e6f1 100644
--- a/code/modules/antagonists/abductor/machinery/pad.dm
+++ b/code/modules/antagonists/abductor/machinery/pad.dm
@@ -31,7 +31,7 @@
/obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target)
new /obj/effect/temp_visual/teleport_abductor(place)
- addtimer(CALLBACK(src, .proc/doMobToLoc, place, target), 80)
+ addtimer(CALLBACK(src,PROC_REF(doMobToLoc), place, target), 80)
/obj/machinery/abductor/pad/proc/doPadToLoc(place)
flick("alien-pad", src)
@@ -41,7 +41,7 @@
/obj/machinery/abductor/pad/proc/PadToLoc(place)
new /obj/effect/temp_visual/teleport_abductor(place)
- addtimer(CALLBACK(src, .proc/doPadToLoc, place), 80)
+ addtimer(CALLBACK(src,PROC_REF(doPadToLoc), place), 80)
/obj/effect/temp_visual/teleport_abductor
name = "Huh"
diff --git a/code/modules/antagonists/blob/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm
index 256b5fadc3b..7362624a1d7 100644
--- a/code/modules/antagonists/blob/blob/blobs/core.dm
+++ b/code/modules/antagonists/blob/blob/blobs/core.dm
@@ -18,7 +18,7 @@
return INITIALIZE_HINT_QDEL
if(overmind)
update_icon()
- addtimer(CALLBACK(src, .proc/generate_announcement), 1800)
+ addtimer(CALLBACK(src,PROC_REF(generate_announcement)), 1800)
. = ..()
/obj/structure/blob/core/proc/generate_announcement()
diff --git a/code/modules/antagonists/blob/blob/overmind.dm b/code/modules/antagonists/blob/blob/overmind.dm
index 86ad2aa60a1..50a3c20d2df 100644
--- a/code/modules/antagonists/blob/blob/overmind.dm
+++ b/code/modules/antagonists/blob/blob/overmind.dm
@@ -109,7 +109,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
set_security_level("delta")
max_blob_points = INFINITY
blob_points = INFINITY
- addtimer(CALLBACK(src, .proc/victory), 450)
+ addtimer(CALLBACK(src,PROC_REF(victory)), 450)
else if(!free_strain_rerolls && (last_reroll_time + BLOB_REROLL_TIMEYou have gained another free strain re-roll.")
free_strain_rerolls = 1
diff --git a/code/modules/antagonists/blood_contract/blood_contract.dm b/code/modules/antagonists/blood_contract/blood_contract.dm
index 346243d785a..a7c2311dd16 100644
--- a/code/modules/antagonists/blood_contract/blood_contract.dm
+++ b/code/modules/antagonists/blood_contract/blood_contract.dm
@@ -24,7 +24,7 @@
return
H.add_atom_colour("#FF0000", ADMIN_COLOUR_PRIORITY)
var/obj/effect/mine/pickup/bloodbath/B = new(H)
- INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H) //could use moving out from the mine
+ INVOKE_ASYNC(B, TYPE_PROC_REF(/obj/effect/mine/pickup/bloodbath/,mineEffect), H) //could use moving out from the mine
for(var/mob/living/carbon/human/P in GLOB.player_list)
if(P == H || HAS_TRAIT(P, TRAIT_NO_MIDROUND_ANTAG))
diff --git a/code/modules/antagonists/bloodsucker/powers/feed.dm b/code/modules/antagonists/bloodsucker/powers/feed.dm
index 1687c8b30e8..9a3ad75307c 100644
--- a/code/modules/antagonists/bloodsucker/powers/feed.dm
+++ b/code/modules/antagonists/bloodsucker/powers/feed.dm
@@ -146,7 +146,7 @@
to_chat(user, span_notice("You lean quietly toward [target] and secretly draw out your fangs..."))
else
to_chat(user, span_warning("You pull [target] close to you and draw out your fangs..."))
- if(!do_mob(user, target, feed_time, 0, 1, extra_checks = CALLBACK(src, .proc/ContinueActive, user, target)))//sleep(10)
+ if(!do_mob(user, target, feed_time, 0, 1, extra_checks = CALLBACK(src,PROC_REF(ContinueActive), user, target)))//sleep(10)
to_chat(user, span_warning("Your feeding was interrupted."))
//DeactivatePower(user,target)
return
@@ -207,7 +207,7 @@
//user.mobility_flags &= ~MOBILITY_MOVE // user.canmove = 0 // Prevents spilling blood accidentally.
// Abort? A bloody mistake.
- if(!do_mob(user, target, 20, 0, 0, extra_checks=CALLBACK(src, .proc/ContinueActive, user, target)))
+ if(!do_mob(user, target, 20, 0, 0, extra_checks=CALLBACK(src,PROC_REF(ContinueActive), user, target)))
// May have disabled Feed during do_mob
if(!active || !ContinueActive(user, target))
break
diff --git a/code/modules/antagonists/bloodsucker/powers/haste.dm b/code/modules/antagonists/bloodsucker/powers/haste.dm
index 9009a978776..6c0d480ca8c 100644
--- a/code/modules/antagonists/bloodsucker/powers/haste.dm
+++ b/code/modules/antagonists/bloodsucker/powers/haste.dm
@@ -48,7 +48,7 @@
/datum/action/bloodsucker/targeted/haste/FireTargetedPower(atom/A)
// This is a non-async proc to make sure the power is "locked" until this finishes.
hit = list()
- RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/on_move)
+ RegisterSignal(owner, COMSIG_MOVABLE_MOVED,PROC_REF(on_move))
var/mob/living/user = owner
var/turf/T = isturf(A) ? A : get_turf(A)
// Pulled? Not anymore.
diff --git a/code/modules/antagonists/bloodsucker/powers/lunge.dm b/code/modules/antagonists/bloodsucker/powers/lunge.dm
index db7868fa8a5..ab63f6adbe4 100644
--- a/code/modules/antagonists/bloodsucker/powers/lunge.dm
+++ b/code/modules/antagonists/bloodsucker/powers/lunge.dm
@@ -31,14 +31,14 @@
T.min_distance = 2
active = TRUE
user.toggle_throw_mode()
- RegisterSignal(user, COMSIG_CARBON_TACKLED, .proc/DelayedDeactivatePower)
+ RegisterSignal(user, COMSIG_CARBON_TACKLED,PROC_REF(DelayedDeactivatePower))
while(B && ContinueActive(user))
B.AddBloodVolume(-0.1)
sleep(5)
//Without this, the leap component would get removed too early, causing the normal crash into effects.
/datum/action/bloodsucker/lunge/proc/DelayedDeactivatePower()
- addtimer(CALLBACK(src, .proc/DeactivatePower), 1 SECONDS, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(DeactivatePower)), 1 SECONDS, TIMER_UNIQUE)
/datum/action/bloodsucker/lunge/DeactivatePower(mob/living/user = owner)
. = ..()
diff --git a/code/modules/antagonists/bloodsucker/powers/mesmerize.dm b/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
index ef3d2af57d2..d11c243176a 100644
--- a/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
+++ b/code/modules/antagonists/bloodsucker/powers/mesmerize.dm
@@ -114,9 +114,9 @@
var/power_time = 138 + level_current * 12
target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 30)
L.apply_status_effect(STATUS_EFFECT_MESMERIZE, 30)
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/ContinueTarget)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED,PROC_REF(ContinueTarget))
// 5 second windup
- addtimer(CALLBACK(src, .proc/apply_effects, L, target, power_time), 6 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(apply_effects), L, target, power_time), 6 SECONDS)
/datum/action/bloodsucker/targeted/mesmerize/proc/apply_effects(aggressor, victim, power_time)
var/mob/living/carbon/target = victim
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index 2cf7a2dc626..2c399abc8d1 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -506,7 +506,7 @@
/datum/antagonist/changeling/get_admin_commands()
. = ..()
if(stored_profiles.len && (owner.current.real_name != first_prof.name))
- .["Transform to initial appearance."] = CALLBACK(src,.proc/admin_restore_appearance)
+ .["Transform to initial appearance."] = CALLBACK(src,PROC_REF(admin_restore_appearance))
/datum/antagonist/changeling/proc/admin_restore_appearance(mob/admin)
if(!stored_profiles.len || !iscarbon(owner.current))
diff --git a/code/modules/antagonists/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm
index 1913317dcc5..59bbc036700 100644
--- a/code/modules/antagonists/changeling/powers/biodegrade.dm
+++ b/code/modules/antagonists/changeling/powers/biodegrade.dm
@@ -23,7 +23,7 @@
user.visible_message(span_warning("[user] vomits a glob of acid on [user.p_their()] [O]!"), \
span_warning("We vomit acidic ooze onto our restraints!"))
- addtimer(CALLBACK(src, .proc/dissolve_handcuffs, user, O), 30)
+ addtimer(CALLBACK(src,PROC_REF(dissolve_handcuffs), user, O), 30)
used = TRUE
if(user.wear_suit && user.wear_suit.breakouttime && !used)
@@ -32,7 +32,7 @@
return 0
user.visible_message(span_warning("[user] vomits a glob of acid across the front of [user.p_their()] [S]!"), \
span_warning("We vomit acidic ooze onto our straight jacket!"))
- addtimer(CALLBACK(src, .proc/dissolve_straightjacket, user, S), 30)
+ addtimer(CALLBACK(src,PROC_REF(dissolve_straightjacket), user, S), 30)
used = TRUE
@@ -42,7 +42,7 @@
return 0
C.visible_message(span_warning("[C]'s hinges suddenly begin to melt and run!"))
to_chat(user, span_warning("We vomit acidic goop onto the interior of [C]!"))
- addtimer(CALLBACK(src, .proc/open_closet, user, C), 70)
+ addtimer(CALLBACK(src,PROC_REF(open_closet), user, C), 70)
used = TRUE
if(istype(user.loc, /obj/structure/spider/cocoon) && !used)
@@ -51,7 +51,7 @@
return 0
C.visible_message(span_warning("[src] shifts and starts to fall apart!"))
to_chat(user, span_warning("We secrete acidic enzymes from our skin and begin melting our cocoon..."))
- addtimer(CALLBACK(src, .proc/dissolve_cocoon, user, C), 25) //Very short because it's just webs
+ addtimer(CALLBACK(src,PROC_REF(dissolve_cocoon), user, C), 25) //Very short because it's just webs
used = TRUE
return used
diff --git a/code/modules/antagonists/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm
index 1907e68fb55..d89d0f6950d 100644
--- a/code/modules/antagonists/changeling/powers/fakedeath.dm
+++ b/code/modules/antagonists/changeling/powers/fakedeath.dm
@@ -19,7 +19,7 @@
user.fakedeath("changeling") //play dead
user.update_stat()
- addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(ready_to_regenerate), user), LING_FAKEDEATH_TIME, TIMER_UNIQUE)
return TRUE
/obj/effect/proc_holder/changeling/fakedeath/proc/ready_to_regenerate(mob/user)
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index d1a3d2b8e19..d94265cf3d0 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -394,12 +394,12 @@
if(INTENT_GRAB)
C.visible_message(span_danger("[L] is grabbed by [H]'s tentacle!"),span_userdanger("A tentacle grabs you and pulls you towards [H]!"))
- C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, .proc/tentacle_grab, H, C))
+ C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src,PROC_REF(tentacle_grab), H, C))
return BULLET_ACT_HIT
if(INTENT_HARM)
C.visible_message(span_danger("[L] is thrown towards [H] by a tentacle!"),span_userdanger("A tentacle grabs you and throws you towards [H]!"))
- C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, .proc/tentacle_stab, H, C))
+ C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src,PROC_REF(tentacle_stab), H, C))
return BULLET_ACT_HIT
else
L.visible_message(span_danger("[L] is pulled by [H]'s tentacle!"),span_userdanger("A tentacle grabs you and pulls you towards [H]!"))
diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm
index b0833c6e7f4..28fb9034796 100644
--- a/code/modules/antagonists/changeling/powers/strained_muscles.dm
+++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm
@@ -25,7 +25,7 @@
user.DefaultCombatKnockdown(60)
user.emote("gasp")
- INVOKE_ASYNC(src, .proc/muscle_loop, user)
+ INVOKE_ASYNC(src,PROC_REF(muscle_loop), user)
return TRUE
diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm
index dda314d208a..ae23b478eda 100644
--- a/code/modules/antagonists/changeling/powers/tiny_prick.dm
+++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm
@@ -154,7 +154,7 @@
target.visible_message(span_warning("A grotesque blade forms around [target.name]\'s arm!"), span_userdanger("Your arm twists and mutates, transforming into a horrific monstrosity!"), span_italic("You hear organic matter ripping and tearing!"))
playsound(target, 'sound/effects/blobattack.ogg', 30, 1)
- addtimer(CALLBACK(src, .proc/remove_fake, target, blade), 600)
+ addtimer(CALLBACK(src,PROC_REF(remove_fake), target, blade), 600)
return TRUE
/obj/effect/proc_holder/changeling/sting/false_armblade/proc/remove_fake(mob/target, obj/item/melee/arm_blade/false/blade)
diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm
index 97d2935a86c..847b4a460ff 100644
--- a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm
@@ -35,7 +35,7 @@
/obj/effect/clockwork/overlay/wall/Initialize()
. = ..()
queue_smooth_neighbors(src)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/queue_smooth, src), 1)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(queue_smooth), src), 1)
/obj/effect/clockwork/overlay/wall/Destroy()
queue_smooth_neighbors(src)
diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
index d8548d7ed08..020901a7497 100644
--- a/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm
@@ -19,7 +19,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -60,7 +60,7 @@
L.visible_message(span_warning("[L]'s [I.name] [resist_string], protecting [L.p_them()] from [src]'s effects!"), \
span_userdanger("Your [I.name] [resist_string], protecting you!"))
return
- INVOKE_ASYNC(src, .proc/sigil_effects, L)
+ INVOKE_ASYNC(src,PROC_REF(sigil_effects), L)
/obj/effect/clockwork/sigil/proc/sigil_effects(mob/living/L)
@@ -242,7 +242,7 @@
if(!cyborg_checks(cyborg))
return
to_chat(cyborg, span_brass("You start to charge from the [sigil_name]..."))
- if(!do_after(cyborg, 50, target = src, extra_checks = CALLBACK(src, .proc/cyborg_checks, cyborg, TRUE)))
+ if(!do_after(cyborg, 50, target = src, extra_checks = CALLBACK(src,PROC_REF(cyborg_checks), cyborg, TRUE)))
return
var/giving_power = min(FLOOR(cyborg.cell.maxcharge - cyborg.cell.charge, MIN_CLOCKCULT_POWER), get_clockwork_power()) //give the borg either all our power or their missing power floored to MIN_CLOCKCULT_POWER
if(adjust_clockwork_power(-giving_power))
diff --git a/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm b/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm
index c8cec2f41ac..9f145452035 100644
--- a/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm
+++ b/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm
@@ -19,7 +19,7 @@
/obj/effect/clockwork/spatial_gateway/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/check_setup), 1)
+ addtimer(CALLBACK(src,PROC_REF(check_setup)), 1)
/obj/effect/clockwork/spatial_gateway/Destroy()
deltimer(timerid)
@@ -161,7 +161,7 @@
else
animate(src, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW)
animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW)
- addtimer(CALLBACK(src, .proc/check_uses), 10)
+ addtimer(CALLBACK(src,PROC_REF(check_uses)), 10)
return TRUE
/obj/effect/clockwork/spatial_gateway/proc/check_uses()
diff --git a/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm
index 96ec774e160..7d0c57ded14 100644
--- a/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm
+++ b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm
@@ -180,7 +180,7 @@
if(reinf)
fabrication_cost -= POWER_ROD
for(var/obj/structure/grille/G in get_turf(src))
- INVOKE_ASYNC(fabricator, /obj/item/clockwork/replica_fabricator.proc/fabricate, G, user)
+ INVOKE_ASYNC(fabricator, TYPE_PROC_REF(/obj/item/clockwork/replica_fabricator,fabricate), G, user)
return list("operation_time" = fabrication_time, "new_obj_type" = windowtype, "power_cost" = fabrication_cost, "spawn_dir" = dir, "dir_in_new" = new_dir)
/obj/structure/window/reinforced/clockwork/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
@@ -237,7 +237,7 @@
fabricator.repairing = src
while(fabricator && user && src)
if(!do_after(user, repair_values["healing_for_cycle"] * fabricator.speed_multiplier, target = src, \
- extra_checks = CALLBACK(fabricator, /obj/item/clockwork/replica_fabricator.proc/fabricator_repair_checks, repair_values, src, user, TRUE)))
+ extra_checks = CALLBACK(fabricator, TYPE_PROC_REF(/obj/item/clockwork/replica_fabricator,fabricator_repair_checks), repair_values, src, user, TRUE)))
break
obj_integrity = clamp(obj_integrity + repair_values["healing_for_cycle"], 0, max_integrity)
adjust_clockwork_power(-repair_values["power_required"])
@@ -259,7 +259,7 @@
fabricator.repairing = src
while(fabricator && user && src)
if(!do_after(user, repair_values["healing_for_cycle"] * fabricator.speed_multiplier, target = src, \
- extra_checks = CALLBACK(fabricator, /obj/item/clockwork/replica_fabricator.proc/fabricator_repair_checks, repair_values, src, user, TRUE)))
+ extra_checks = CALLBACK(fabricator, TYPE_PROC_REF(/obj/item/clockwork/replica_fabricator,fabricator_repair_checks), repair_values, src, user, TRUE)))
break
fabricator_heal_tick(repair_values["healing_for_cycle"])
adjust_clockwork_power(-repair_values["power_required"])
@@ -323,7 +323,7 @@
for(var/obj/item/clockwork/alloy_shards/S in get_turf(src)) //convert all other shards in the turf if we can
if(S == src)
continue //we want the shards to be fabricated after the main shard, thus this delay
- addtimer(CALLBACK(fabricator, /obj/item/clockwork/replica_fabricator.proc/fabricate, S, user, TRUE), 0)
+ addtimer(CALLBACK(fabricator, TYPE_PROC_REF(/obj/item/clockwork/replica_fabricator,fabricate), S, user, TRUE), 0)
return list("operation_time" = 0, "new_obj_type" = null, "power_cost" = power_amount, "spawn_dir" = SOUTH)
/obj/item/clockwork/alloy_shards/medium/gear_bit/large/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent, power_amount)
diff --git a/code/modules/antagonists/clockcult/clock_helpers/scripture_checks.dm b/code/modules/antagonists/clockcult/clock_helpers/scripture_checks.dm
index 66e20b6e87d..13b6d6dff12 100644
--- a/code/modules/antagonists/clockcult/clock_helpers/scripture_checks.dm
+++ b/code/modules/antagonists/clockcult/clock_helpers/scripture_checks.dm
@@ -40,7 +40,7 @@
/proc/generate_all_scripture()
if(GLOB.all_scripture.len)
return
- for(var/V in sortList(subtypesof(/datum/clockwork_scripture) - list(/datum/clockwork_scripture/channeled, /datum/clockwork_scripture/create_object, /datum/clockwork_scripture/create_object/construct), /proc/cmp_clockscripture_priority))
+ for(var/V in sortList(subtypesof(/datum/clockwork_scripture) - list(/datum/clockwork_scripture/channeled, /datum/clockwork_scripture/create_object, /datum/clockwork_scripture/create_object/construct), GLOBAL_PROC_REF(cmp_clockscripture_priority)))
var/datum/clockwork_scripture/S = new V
GLOB.all_scripture[S.type] = S
diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/_call_weapon.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/_call_weapon.dm
index 98d4bfd033e..ada2f610dc4 100644
--- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/_call_weapon.dm
+++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/_call_weapon.dm
@@ -44,6 +44,6 @@
/datum/action/innate/call_weapon/proc/weapon_reset(cooldown_time)
cooldown = world.time + cooldown_time
- addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), cooldown_time)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob,update_action_buttons_icon)), cooldown_time)
owner.update_action_buttons_icon()
QDEL_NULL(weapon)
diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm
index 2664f0739b0..116a5707cb3 100644
--- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm
+++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm
@@ -49,7 +49,7 @@ obj/item/shield/riot/ratvarian/proc/calc_bash_mult()
C.apply_damage((iscultist(C) ? damage * 2 : damage), BURN, (istype(part, /obj/item/bodypart/l_arm) ? BODY_ZONE_L_ARM : BODY_ZONE_R_ARM)) //Deals the damage to the holder instead of absorbing it instead + forcedrops. Doubled if a cultist of Nar'Sie.
else
owner.adjustFireLoss(iscultist(owner) ? damage * 2 : damage)
- addtimer(CALLBACK(owner, /mob/living.proc/dropItemToGround, src, TRUE), 1)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living,dropItemToGround), src, TRUE), 1)
else if(!is_servant_of_ratvar(attacker)) //No exploiting my snowflake mechanics
dam_absorbed += damage
playsound(owner, 'sound/machines/clockcult/steam_whoosh.ogg', 30)
diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
index d8a12f8272d..3d7ea62c038 100644
--- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
+++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
@@ -51,7 +51,7 @@
user.emote("scream")
user.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 30)
- addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off.
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living,dropItemToGround), src, TRUE), 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off.
/obj/item/clothing/head/helmet/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0)
if(equipper && !is_servant_of_ratvar(equipper))
@@ -119,7 +119,7 @@
user.apply_damage(15, BURN, BODY_ZONE_CHEST)
user.adjust_fire_stacks(2)
user.IgniteMob()
- addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living,dropItemToGround), src, TRUE), 1)
/obj/item/clothing/gloves/clockwork
name = "clockwork gauntlets"
@@ -178,7 +178,7 @@
user.emote("scream")
user.apply_damage(7, BRUTE, BODY_ZONE_L_ARM)
user.apply_damage(7, BRUTE, BODY_ZONE_R_ARM)
- addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living,dropItemToGround), src, TRUE), 1)
/obj/item/clothing/shoes/clockwork
name = "clockwork treads"
@@ -228,4 +228,4 @@
user.emote("scream")
user.apply_damage(7, BURN, BODY_ZONE_L_LEG)
user.apply_damage(7, BURN, BODY_ZONE_R_LEG)
- addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1)
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living,dropItemToGround), src, TRUE), 1)
diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm
index ea75004b7e1..4694f39232f 100644
--- a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm
+++ b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm
@@ -121,7 +121,7 @@
/obj/item/clockwork/slab/dropped(mob/user)
. = ..()
- addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
+ addtimer(CALLBACK(src,PROC_REF(check_on_mob), user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file, used_state, style_flags = NONE)
. = ..()
@@ -347,7 +347,7 @@
if("toggle")
recollecting = !recollecting
if("recite")
- INVOKE_ASYNC(src, .proc/recite_scripture, text2path(params["script"]), usr, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(recite_scripture), text2path(params["script"]), usr, FALSE)
if("bind")
var/datum/clockwork_scripture/path = text2path(params["script"]) //we need a path and not a string
if(!ispath(path, /datum/clockwork_scripture) || !initial(path.quickbind) || initial(path.tier) == SCRIPTURE_PERIPHERAL) //fuck you href bus
diff --git a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
index db9eef1064f..4deeed6ac28 100644
--- a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
+++ b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm
@@ -52,7 +52,7 @@
/obj/item/clothing/glasses/judicial_visor/dropped(mob/user)
. = ..()
- addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
+ addtimer(CALLBACK(src,PROC_REF(check_on_mob), user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later
/obj/item/clothing/glasses/judicial_visor/proc/check_on_mob(mob/user)
if(user && src != user.get_item_by_slot(SLOT_GLASSES)) //if we happen to check and we AREN'T in the slot, we need to remove our shit from whoever we got dropped from
@@ -131,7 +131,7 @@
continue
V.recharging = TRUE //To prevent exploiting multiple visors to bypass the cooldown
V.update_status()
- addtimer(CALLBACK(V, /obj/item/clothing/glasses/judicial_visor.proc/recharge_visor, ranged_ability_user), (GLOB.ratvar_awakens ? visor.recharge_cooldown*0.1 : visor.recharge_cooldown) * 2)
+ addtimer(CALLBACK(V, TYPE_PROC_REF(/obj/item/clothing/glasses/judicial_visor,recharge_visor), ranged_ability_user), (GLOB.ratvar_awakens ? visor.recharge_cooldown*0.1 : visor.recharge_cooldown) * 2)
clockwork_say(ranged_ability_user, text2ratvar("Kneel, heathens!"))
ranged_ability_user.visible_message(span_warning("[ranged_ability_user]'s judicial visor fires a stream of energy at [target], creating a strange mark!"), span_heavy_brass("You direct [visor]'s power to [target]. You must wait for some time before doing this again."))
var/turf/targetturf = get_turf(target)
@@ -139,7 +139,7 @@
log_combat(ranged_ability_user, targetturf, "created a judicial marker")
ranged_ability_user.update_action_buttons_icon()
ranged_ability_user.update_inv_glasses()
- addtimer(CALLBACK(visor, /obj/item/clothing/glasses/judicial_visor.proc/recharge_visor, ranged_ability_user), GLOB.ratvar_awakens ? visor.recharge_cooldown*0.1 : visor.recharge_cooldown)//Cooldown is reduced by 10x if Ratvar is up
+ addtimer(CALLBACK(visor, TYPE_PROC_REF(/obj/item/clothing/glasses/judicial_visor,recharge_visor), ranged_ability_user), GLOB.ratvar_awakens ? visor.recharge_cooldown*0.1 : visor.recharge_cooldown)//Cooldown is reduced by 10x if Ratvar is up
remove_ranged_ability()
return TRUE
@@ -161,7 +161,7 @@
. = ..()
set_light(1.4, 2, "#FE9C11")
user = caster
- INVOKE_ASYNC(src, .proc/judicialblast)
+ INVOKE_ASYNC(src,PROC_REF(judicialblast))
/obj/effect/clockwork/judicial_marker/singularity_act()
return
diff --git a/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm
index c00aa773546..954f41265c9 100644
--- a/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm
+++ b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm
@@ -115,7 +115,7 @@
else
user.visible_message(span_warning("[user]'s [name] starts consuming [target]!"), \
span_brass("Your [name] starts consuming [target]..."))
- if(!do_after(user, fabrication_values["operation_time"], target = target, extra_checks = CALLBACK(src, .proc/fabricate_checks, fabrication_values, target, target_type, user, TRUE)))
+ if(!do_after(user, fabrication_values["operation_time"], target = target, extra_checks = CALLBACK(src,PROC_REF(fabricate_checks), fabrication_values, target, target_type, user, TRUE)))
return FALSE
if(!silent)
var/atom/A = fabrication_values["new_obj_type"]
diff --git a/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm b/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm
index 6ba78b84a7b..b6ba6a2539b 100644
--- a/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm
+++ b/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm
@@ -115,11 +115,11 @@
superheat_wall(A)
return
if(modifiers["middle"] || modifiers["ctrl"])
- INVOKE_ASYNC(src, .proc/issue_command, A)
+ INVOKE_ASYNC(src,PROC_REF(issue_command), A)
return
if(GLOB.ark_of_the_clockwork_justiciar == A)
var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar
- INVOKE_ASYNC(src, .proc/attempt_recall, G)
+ INVOKE_ASYNC(src,PROC_REF(attempt_recall), G)
else if(istype(A, /obj/structure/destructible/clockwork/trap/trigger))
var/obj/structure/destructible/clockwork/trap/trigger/T = A
T.visible_message(span_danger("[T] clunks as it's activated remotely."))
diff --git a/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm b/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm
index dbc3b3844de..a101c4d583b 100644
--- a/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm
+++ b/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm
@@ -319,32 +319,32 @@
else
var/healthpercent = (health/maxHealth) * 100
switch(healthpercent)
- if(100 to 70) //Bonuses to speed and damage at high health
+ if(70 to 100) //Bonuses to speed and damage at high health
speed = 0
melee_damage_lower = 16
melee_damage_upper = 16
attack_verb_continuous = "viciously slashes"
- if(70 to 40)
+ if(40 to 70)
speed = initial(speed)
melee_damage_lower = initial(melee_damage_lower)
melee_damage_upper = initial(melee_damage_upper)
attack_verb_continuous = initial(attack_verb_continuous)
- if(40 to 30) //Damage decrease, but not speed
+ if(30 to 40) //Damage decrease, but not speed
speed = initial(speed)
melee_damage_lower = 10
melee_damage_upper = 10
attack_verb_continuous = "lightly slashes"
- if(30 to 20) //Speed decrease
+ if(20 to 30) //Speed decrease
speed = 2
melee_damage_lower = 8
melee_damage_upper = 8
attack_verb_continuous = "lightly slashes"
- if(20 to 10) //Massive speed decrease and weak melee attacks
+ if(10 to 20) //Massive speed decrease and weak melee attacks
speed = 3
melee_damage_lower = 6
melee_damage_upper = 6
attack_verb_continuous = "weakly slashes"
- if(10 to 0) //We are super weak and going to die
+ if(0 to 10) //We are super weak and going to die
speed = 4
melee_damage_lower = 4
melee_damage_upper = 4
diff --git a/code/modules/antagonists/clockcult/clock_scripture.dm b/code/modules/antagonists/clockcult/clock_scripture.dm
index 44d76be594e..f0960b0048b 100644
--- a/code/modules/antagonists/clockcult/clock_scripture.dm
+++ b/code/modules/antagonists/clockcult/clock_scripture.dm
@@ -154,7 +154,7 @@ Judgement 5 converts
if(!channel_time)
return TRUE
chant()
- if(!do_after(invoker, channel_time, target = invoker, extra_checks = CALLBACK(src, .proc/check_special_requirements)))
+ if(!do_after(invoker, channel_time, target = invoker, extra_checks = CALLBACK(src,PROC_REF(check_special_requirements))))
slab.busy = null
chanting = FALSE
scripture_fail()
@@ -201,7 +201,7 @@ Judgement 5 converts
/datum/clockwork_scripture/channeled/scripture_effects()
for(var/i in 1 to chant_amount)
- if(!do_after(invoker, chant_interval, target = invoker, extra_checks = CALLBACK(src, .proc/can_recite)))
+ if(!do_after(invoker, chant_interval, target = invoker, extra_checks = CALLBACK(src,PROC_REF(can_recite))))
break
clockwork_say(invoker, text2ratvar(pick(chant_invocations)), whispered)
if(multiple_invokers_used)
diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
index c39bb9b0833..1e0e1282936 100644
--- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
+++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm
@@ -217,7 +217,7 @@
playsound(owner, 'sound/magic/clockwork/fellowship_armory.ogg', 15 * do_message, TRUE) //get sound loudness based on how much we equipped
cooldown = CLOCKWORK_ARMOR_COOLDOWN + world.time
owner.update_action_buttons_icon()
- addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), CLOCKWORK_ARMOR_COOLDOWN)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob,update_action_buttons_icon)), CLOCKWORK_ARMOR_COOLDOWN)
return TRUE
/datum/action/innate/clockwork_armaments/proc/remove_item_if_better(obj/item/I, mob/user)
diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
index 3ae9650461c..e448e264b8a 100644
--- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm
@@ -35,7 +35,7 @@
/obj/structure/destructible/clockwork/massive/celestial_gateway/Initialize()
. = ..()
- INVOKE_ASYNC(src, .proc/spawn_animation)
+ INVOKE_ASYNC(src,PROC_REF(spawn_animation))
glow = new(get_turf(src))
if(!GLOB.ark_of_the_clockwork_justiciar)
GLOB.ark_of_the_clockwork_justiciar = src
@@ -131,7 +131,7 @@
recalling = TRUE
sound_to_playing_players('sound/machines/clockcult/ark_recall.ogg', 75, FALSE)
hierophant_message("The Eminence has initiated a mass recall! You are being transported to the Ark!")
- addtimer(CALLBACK(src, .proc/mass_recall), 100)
+ addtimer(CALLBACK(src,PROC_REF(mass_recall)), 100)
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/mass_recall()
for(var/V in SSticker.mode.servants_of_ratvar)
diff --git a/code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm b/code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm
index 09c4401e0ff..98d16ca7a56 100644
--- a/code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm
@@ -81,7 +81,7 @@
hierophant_message("[nominee] proposes selecting an Eminence from ghosts! You may object by interacting with the eminence spire. The vote will otherwise pass in 30 seconds.")
for(var/mob/M in servants_and_ghosts())
M.playsound_local(M, 'sound/machines/clockcult/ocularwarden-target.ogg', 50, FALSE)
- selection_timer = addtimer(CALLBACK(src, .proc/kingmaker), 300, TIMER_STOPPABLE)
+ selection_timer = addtimer(CALLBACK(src,PROC_REF(kingmaker)), 300, TIMER_STOPPABLE)
/obj/structure/destructible/clockwork/eminence_spire/proc/objection(mob/living/wright)
if(alert(wright, "Object to the selection of [eminence_nominee] as Eminence?", "Objection!", "Object", "Cancel") == "Cancel" || !is_servant_of_ratvar(wright) || !wright.canUseTopic(src) || !eminence_nominee)
diff --git a/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm
index a820c103f7d..befdc1fc6b5 100644
--- a/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm
@@ -29,7 +29,7 @@
sound_to_playing_players('sound/effects/ratvar_reveal.ogg')
var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/clockwork_effects.dmi', "ratvar_alert")
notify_ghosts("The Justiciar's light calls to you! Reach out to Ratvar in [get_area_name(src)] to be granted a shell to spread his glory!", null, source = src, alert_overlay = alert_overlay)
- INVOKE_ASYNC(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 10, null, FALSE, 0)
+ INVOKE_ASYNC(SSshuttle.emergency, TYPE_PROC_REF(/obj/docking_port/mobile/emergency,request), null, 10, null, FALSE, 0)
/obj/structure/destructible/clockwork/massive/ratvar/Destroy()
GLOB.ratvar_awakens--
diff --git a/code/modules/antagonists/clockcult/clock_structures/reflector.dm b/code/modules/antagonists/clockcult/clock_structures/reflector.dm
index 58475d6e003..2ff6e59ca33 100644
--- a/code/modules/antagonists/clockcult/clock_structures/reflector.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/reflector.dm
@@ -22,7 +22,7 @@
/obj/structure/destructible/clockwork/reflector/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated),CALLBACK(src,.proc/after_rotation))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src,PROC_REF(can_be_rotated),CALLBACK(src,PROC_REF(after_rotation))))
/obj/structure/destructible/clockwork/reflector/bullet_act(obj/item/projectile/P)
if(!anchored || !allowed_projectile_typecache[P.type] || !(P.dir in GLOB.cardinals))
diff --git a/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm
index af310bda8d3..704d31f1292 100644
--- a/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm
@@ -30,7 +30,7 @@
animate(src, alpha = 100, time = 15)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm
index 349fb6da31c..ba7bce3ba1e 100644
--- a/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm
@@ -10,7 +10,7 @@
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
index 5d0d3fe0936..8d6b22c1151 100644
--- a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm
@@ -57,7 +57,7 @@
span_userdanger("A massive brass spike rips through your chassis and bursts into shrapnel in your casing!"))
squirrel.adjustBruteLoss(50)
squirrel.Stun(20)
- addtimer(CALLBACK(src, .proc/take_damage, max_integrity), 1)
+ addtimer(CALLBACK(src,PROC_REF(take_damage), max_integrity), 1)
else
squirrel.visible_message(span_boldwarning("A massive brass spike erupts from the ground, impaling [squirrel]!"), \
span_userdanger("A massive brass spike rams through your chest, hoisting you into the air!"))
@@ -72,7 +72,7 @@
if(M)
M.take_damage(50,BRUTE,"melee")
M.visible_message(span_danger("A massive brass spike erupts from the ground, penetrating \the [M] and shattering the trap into pieces!"))
- addtimer(CALLBACK(src, .proc/take_damage, max_integrity), 1)
+ addtimer(CALLBACK(src,PROC_REF(take_damage), max_integrity), 1)
else
visible_message(span_danger("A massive brass spike erupts from the ground!"))
diff --git a/code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm b/code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm
index 1e25df75286..da34b3b30e4 100644
--- a/code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm
+++ b/code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm
@@ -20,7 +20,7 @@
/obj/structure/destructible/clockwork/trap/steam_vent/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index ae71038b366..be267a67a6d 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -268,7 +268,7 @@
SEND_SOUND(ranged_ability_user, sound('sound/effects/ghost.ogg',0,1,50))
var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER)
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, FALSE)
- addtimer(CALLBACK(H,/atom/.proc/remove_alt_appearance,"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/atom/,remove_alt_appearance), "cult_apoc", TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE)
to_chat(ranged_ability_user,"[H] has been cursed with living nightmares!")
attached_action.charges--
attached_action.desc = attached_action.base_desc
diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm
index 22176e41ab8..8b1d72a6d8d 100644
--- a/code/modules/antagonists/cult/cult.dm
+++ b/code/modules/antagonists/cult/cult.dm
@@ -175,8 +175,8 @@
/datum/antagonist/cult/get_admin_commands()
. = ..()
- .["Dagger"] = CALLBACK(src,.proc/admin_give_dagger)
- .["Dagger and Metal"] = CALLBACK(src,.proc/admin_give_metal)
+ .["Dagger"] = CALLBACK(src,PROC_REF(admin_give_dagger))
+ .["Dagger and Metal"] = CALLBACK(src,PROC_REF(admin_give_metal))
/datum/antagonist/cult/proc/admin_give_dagger(mob/admin)
if(!equip_cultist(FALSE))
@@ -301,7 +301,7 @@
if(B.current)
SEND_SOUND(B.current, 'sound/hallucinations/i_see_you2.ogg')
to_chat(B.current, "The veil weakens as your cult grows, your eyes begin to glow...")
- addtimer(CALLBACK(src, .proc/rise, B.current), 200)
+ addtimer(CALLBACK(src,PROC_REF(rise), B.current), 200)
cult_risen = TRUE
if(ratio > CULT_ASCENDENT && !cult_ascendent)
@@ -309,7 +309,7 @@
if(B.current)
SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg')
to_chat(B.current, "Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!")
- addtimer(CALLBACK(src, .proc/ascend, B.current), 200)
+ addtimer(CALLBACK(src,PROC_REF(ascend), B.current), 200)
cult_ascendent = TRUE
diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm
index 0d685cf0d5c..28dea20c626 100644
--- a/code/modules/antagonists/cult/cult_comms.dm
+++ b/code/modules/antagonists/cult/cult_comms.dm
@@ -189,7 +189,7 @@
S.release_shades(owner)
B.current.setDir(SOUTH)
new /obj/effect/temp_visual/cult/blood(final)
- addtimer(CALLBACK(B.current, /mob/.proc/reckon, final), 10)
+ addtimer(CALLBACK(B.current, TYPE_PROC_REF(/mob/,reckon), final), 10)
else
return
antag.cult_team.reckoning_complete = TRUE
@@ -278,7 +278,7 @@
C.cult_team.blood_target = target
var/area/A = get_area(target)
attached_action.cooldown = world.time + attached_action.base_cooldown
- addtimer(CALLBACK(attached_action.owner, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown)
+ addtimer(CALLBACK(attached_action.owner, TYPE_PROC_REF(/mob,update_action_buttons_icon)), attached_action.base_cooldown)
C.cult_team.blood_target_image = image('icons/effects/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER)
C.cult_team.blood_target_image.appearance_flags = RESET_COLOR
C.cult_team.blood_target_image.pixel_x = -target.pixel_x
@@ -290,7 +290,7 @@
B.current.client.images += C.cult_team.blood_target_image
attached_action.owner.update_action_buttons_icon()
remove_ranged_ability(span_cult("The marking rite is complete! It will last for 90 seconds."))
- C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), 900, TIMER_STOPPABLE)
+ C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(usr, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), 900, TIMER_STOPPABLE)
return TRUE
return FALSE
@@ -360,7 +360,7 @@
C.cult_team.blood_target = target
var/area/A = get_area(target)
cooldown = world.time + base_cooldown
- addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), base_cooldown)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob,update_action_buttons_icon)), base_cooldown)
C.cult_team.blood_target_image = image('icons/effects/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER)
C.cult_team.blood_target_image.appearance_flags = RESET_COLOR
C.cult_team.blood_target_image.pixel_x = -target.pixel_x
@@ -377,8 +377,8 @@
desc = "Remove the Blood Mark you previously set."
button_icon_state = "emp"
owner.update_action_buttons_icon()
- C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), base_cooldown, TIMER_STOPPABLE)
- addtimer(CALLBACK(src, .proc/reset_button), base_cooldown)
+ C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(usr, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), base_cooldown, TIMER_STOPPABLE)
+ addtimer(CALLBACK(src,PROC_REF(reset_button)), base_cooldown)
//////// ELDRITCH PULSE /////////
@@ -468,4 +468,4 @@
attached_action.cooldown = world.time + attached_action.base_cooldown
remove_ranged_ability(span_cult("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space."))
caller.update_action_buttons_icon()
- addtimer(CALLBACK(caller, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown)
+ addtimer(CALLBACK(caller, TYPE_PROC_REF(/mob,update_action_buttons_icon)), attached_action.base_cooldown)
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 9e4e41bb632..f1354ff2e88 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -270,7 +270,7 @@
sword.spinning = TRUE
sword.block_chance = 75
sword.slowdown += 1.5
- addtimer(CALLBACK(src, .proc/stop_spinning), 50)
+ addtimer(CALLBACK(src,PROC_REF(stop_spinning)), 50)
holder.update_action_buttons_icon()
/datum/action/innate/cult/spin2win/proc/stop_spinning()
@@ -722,8 +722,8 @@
/obj/item/cult_spear/Initialize()
. = ..()
- 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/cult_spear/ComponentInitialize()
. = ..()
@@ -894,10 +894,10 @@
qdel(src)
return
charging = TRUE
- INVOKE_ASYNC(src, .proc/charge, user)
+ INVOKE_ASYNC(src,PROC_REF(charge), user)
if(do_after(user, 90, target = user))
firing = TRUE
- INVOKE_ASYNC(src, .proc/pewpew, user, params)
+ INVOKE_ASYNC(src,PROC_REF(pewpew), user, params)
var/obj/structure/emergency_shield/invoker/N = new(user.loc)
if(do_after(user, 90, target = user))
user.DefaultCombatKnockdown(40)
@@ -970,7 +970,7 @@
playsound(L, 'sound/hallucinations/wail.ogg', 50, 1)
L.emote("scream")
var/datum/beam/current_beam = new(user,temp_target,time=7,beam_icon_state="blood_beam",btype=/obj/effect/ebeam/blood)
- INVOKE_ASYNC(current_beam, /datum/beam.proc/Start)
+ INVOKE_ASYNC(current_beam, TYPE_PROC_REF(/datum/beam,Start))
/obj/effect/ebeam/blood
@@ -1017,7 +1017,7 @@
playsound(src, 'sound/weapons/parry.ogg', 100, 1)
if(illusions > 0)
illusions--
- addtimer(CALLBACK(src, /obj/item/shield/mirror.proc/readd), 450)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/shield/mirror,readd)), 450)
if(prob(60))
var/mob/living/simple_animal/hostile/illusion/M = new(owner.loc)
M.faction = list("cult")
diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm
index 080d9c12bde..f24eb42477b 100644
--- a/code/modules/antagonists/cult/cult_structures.dm
+++ b/code/modules/antagonists/cult/cult_structures.dm
@@ -111,7 +111,7 @@
to_chat(user, span_cultitalic("You study the schematics etched into the altar..."))
var/list/options = list("Eldritch Whetstone" = radial_whetstone, "Construct Shell" = radial_shell, "Flask of Unholy Water" = radial_unholy_water)
- var/choice = show_radial_menu(user, src, options, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, src, options, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
var/reward
switch(choice)
@@ -158,7 +158,7 @@
var/list/options = list("Shielded Robe" = radial_shielded, "Flagellant's Robe" = radial_flagellant, "Mirror Shield" = radial_mirror)
- var/choice = show_radial_menu(user, src, options, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, src, options, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
var/reward
switch(choice)
@@ -289,7 +289,7 @@
to_chat(user, span_cultitalic("You flip through the black pages of the archives..."))
var/list/options = list("Zealot's Blindfold" = radial_blindfold, "Shuttle Curse" = radial_curse, "Veil Walker Set" = radial_veilwalker)
- var/choice = show_radial_menu(user, src, options, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, src, options, custom_check = CALLBACK(src,PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
var/reward
switch(choice)
diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm
index 1ed2b760f97..76aa1969ca4 100644
--- a/code/modules/antagonists/cult/rune_spawn_action.dm
+++ b/code/modules/antagonists/cult/rune_spawn_action.dm
@@ -57,7 +57,7 @@
cooldown = base_cooldown + world.time
owner.update_action_buttons_icon()
- addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), base_cooldown)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob,update_action_buttons_icon)), base_cooldown)
var/list/health
if(damage_interrupt && isliving(owner))
var/mob/living/L = owner
@@ -66,7 +66,7 @@
if(istype(T, /turf/open/floor/engine/cult))
scribe_mod *= 0.5
playsound(T, 'sound/magic/enter_blood.ogg', 100, FALSE)
- if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, /mob.proc/break_do_after_checks, health, action_interrupt)))
+ if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, TYPE_PROC_REF(/mob,break_do_after_checks), health, action_interrupt)))
var/obj/effect/rune/new_rune = new rune_type(owner.loc)
new_rune.keyword = chosen_keyword
else
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index 5eef00524fe..6d4b237f576 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -436,7 +436,7 @@ structure_check() searches for nearby cultist structures required for the invoca
outer_portal = new(T, 600, color)
light_range = 4
update_light()
- addtimer(CALLBACK(src, .proc/close_portal), 600, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(close_portal)), 600, TIMER_UNIQUE)
/obj/effect/rune/teleport/proc/close_portal()
qdel(inner_portal)
@@ -662,7 +662,7 @@ structure_check() searches for nearby cultist structures required for the invoca
W.density = TRUE
W.update_state()
W.spread_density()
- density_timer = addtimer(CALLBACK(src, .proc/lose_density), 3000, TIMER_STOPPABLE)
+ density_timer = addtimer(CALLBACK(src,PROC_REF(lose_density)), 3000, TIMER_STOPPABLE)
/obj/effect/rune/wall/proc/lose_density()
if(density)
@@ -672,7 +672,7 @@ structure_check() searches for nearby cultist structures required for the invoca
var/oldcolor = color
add_atom_colour("#696969", FIXED_COLOUR_PRIORITY)
animate(src, color = oldcolor, time = 50, easing = EASE_IN)
- addtimer(CALLBACK(src, .proc/recharge), 50)
+ addtimer(CALLBACK(src,PROC_REF(recharge)), 50)
/obj/effect/rune/wall/proc/recharge()
recharging = FALSE
@@ -990,11 +990,11 @@ structure_check() searches for nearby cultist structures required for the invoca
if(ishuman(M))
if(!iscultist(M))
AH.remove_hud_from(M)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/hudFix, M), duration)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(hudFix), M), duration)
var/image/A = image('icons/mob/mob.dmi',M,"cultist", ABOVE_MOB_LAYER)
A.override = 1
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, FALSE)
- addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"human_apoc",TRUE), duration)
+ addtimer(CALLBACK(M,TYPE_PROC_REF(/atom/,remove_alt_appearance),"human_apoc",TRUE), duration)
images += A
SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult.ogg'),sound('sound/spookoween/ghost_whisper.ogg'),sound('sound/spookoween/ghosty_wind.ogg')))
else
@@ -1002,13 +1002,13 @@ structure_check() searches for nearby cultist structures required for the invoca
var/image/B = image('icons/mob/mob.dmi',M,construct, ABOVE_MOB_LAYER)
B.override = 1
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "mob_apoc", B, FALSE)
- addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"mob_apoc",TRUE), duration)
+ addtimer(CALLBACK(M,TYPE_PROC_REF(/atom/,remove_alt_appearance),"mob_apoc",TRUE), duration)
images += B
if(!iscultist(M))
if(M.client)
var/image/C = image('icons/effects/cult_effects.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER)
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, FALSE)
- addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"cult_apoc",TRUE), duration)
+ addtimer(CALLBACK(M,TYPE_PROC_REF(/atom/,remove_alt_appearance),"cult_apoc",TRUE), duration)
images += C
else
to_chat(M, span_cultlarge("An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!"))
diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm
index 6b77de67e34..9531a66cbbd 100644
--- a/code/modules/antagonists/devil/devil.dm
+++ b/code/modules/antagonists/devil/devil.dm
@@ -123,7 +123,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
/datum/antagonist/devil/get_admin_commands()
. = ..()
- .["Toggle ascendable"] = CALLBACK(src,.proc/admin_toggle_ascendable)
+ .["Toggle ascendable"] = CALLBACK(src,PROC_REF(admin_toggle_ascendable))
/datum/antagonist/devil/proc/admin_toggle_ascendable(mob/admin)
ascendable = !ascendable
diff --git a/code/modules/antagonists/disease/disease_mob.dm b/code/modules/antagonists/disease/disease_mob.dm
index 3b3a3412196..17262f422c7 100644
--- a/code/modules/antagonists/disease/disease_mob.dm
+++ b/code/modules/antagonists/disease/disease_mob.dm
@@ -67,7 +67,7 @@ the new instance inside the host to be updated to the template's stats.
browser = new /datum/browser(src, "disease_menu", "Adaptation Menu", 1000, 770, src)
freemove_end = world.time + freemove_time
- freemove_end_timerid = addtimer(CALLBACK(src, .proc/infect_random_patient_zero), freemove_time, TIMER_STOPPABLE)
+ freemove_end_timerid = addtimer(CALLBACK(src,PROC_REF(infect_random_patient_zero)), freemove_time, TIMER_STOPPABLE)
/mob/camera/disease/Destroy()
. = ..()
@@ -265,7 +265,7 @@ the new instance inside the host to be updated to the template's stats.
/mob/camera/disease/proc/set_following(mob/living/L)
if(following_host)
UnregisterSignal(following_host, COMSIG_MOVABLE_MOVED)
- RegisterSignal(L, COMSIG_MOVABLE_MOVED, .proc/follow_mob)
+ RegisterSignal(L, COMSIG_MOVABLE_MOVED,PROC_REF(follow_mob))
following_host = L
follow_mob()
@@ -307,7 +307,7 @@ the new instance inside the host to be updated to the template's stats.
/mob/camera/disease/proc/adapt_cooldown()
to_chat(src, span_notice("You have altered your genetic structure. You will be unable to adapt again for [DisplayTimeText(adaptation_cooldown)]."))
next_adaptation_time = world.time + adaptation_cooldown
- addtimer(CALLBACK(src, .proc/notify_adapt_ready), adaptation_cooldown)
+ addtimer(CALLBACK(src,PROC_REF(notify_adapt_ready)), adaptation_cooldown)
/mob/camera/disease/proc/notify_adapt_ready()
to_chat(src, span_notice("You are now ready to adapt again."))
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
index afb9a00dfe3..c9887b8ad81 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm
@@ -137,7 +137,7 @@
/datum/antagonist/heretic/get_admin_commands()
. = ..()
- .["Equip"] = CALLBACK(src,.proc/equip_cultist)
+ .["Equip"] = CALLBACK(src,PROC_REF(equip_cultist))
/datum/antagonist/heretic/roundend_report()
var/list/parts = list()
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_effects.dm b/code/modules/antagonists/eldritch_cult/eldritch_effects.dm
index 671c3d46a75..d580d642775 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_effects.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_effects.dm
@@ -18,7 +18,7 @@
if(!IS_HERETIC(user))
return
if(!is_in_use)
- INVOKE_ASYNC(src, .proc/activate , user)
+ INVOKE_ASYNC(src, PROC_REF(activate) , user)
/obj/effect/eldritch/attackby(obj/item/I, mob/living/user)
. = ..()
@@ -165,7 +165,7 @@
* Use this whenever you want to add someone to the list
*/
/datum/reality_smash_tracker/proc/AddMind(datum/mind/M)
- RegisterSignal(M.current,COMSIG_MOB_CLIENT_LOGIN,.proc/ReworkNetwork)
+ RegisterSignal(M.current,COMSIG_MOB_CLIENT_LOGIN,PROC_REF(ReworkNetwork))
targets |= M
_Generate()
for(var/X in smashes)
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm b/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
index bb2021283bb..0ca13b22f3c 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_knowledge.dm
@@ -153,11 +153,11 @@
to_chat(user, span_warning("The items don't posses required fingerprints."))
return FALSE
- var/chosen_mob = input("Select the person you wish to curse","Your target") as null|anything in sortList(compiled_list, /proc/cmp_mob_realname_dsc)
+ var/chosen_mob = input("Select the person you wish to curse","Your target") as null|anything in sortList(compiled_list, GLOBAL_PROC_REF(cmp_mob_realname_dsc))
if(!chosen_mob)
return FALSE
curse(compiled_list[chosen_mob])
- addtimer(CALLBACK(src, .proc/uncurse, compiled_list[chosen_mob]),timer)
+ addtimer(CALLBACK(src,PROC_REF(uncurse), compiled_list[chosen_mob]),timer)
return TRUE
/datum/eldritch_knowledge/curse/proc/curse(mob/living/chosen_mob)
diff --git a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
index 86be19c1fea..3cee2083e69 100644
--- a/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
+++ b/code/modules/antagonists/eldritch_cult/eldritch_magic.dm
@@ -354,15 +354,15 @@
for(var/X in targets)
var/T
T = line_target(-25, range, X, user)
- INVOKE_ASYNC(src, .proc/fire_line, user,T)
+ INVOKE_ASYNC(src,PROC_REF(fire_line), user,T)
T = line_target(10, range, X, user)
- INVOKE_ASYNC(src, .proc/fire_line, user,T)
+ INVOKE_ASYNC(src,PROC_REF(fire_line), user,T)
T = line_target(0, range, X, user)
- INVOKE_ASYNC(src, .proc/fire_line, user,T)
+ INVOKE_ASYNC(src,PROC_REF(fire_line), user,T)
T = line_target(-10, range, X, user)
- INVOKE_ASYNC(src, .proc/fire_line, user,T)
+ INVOKE_ASYNC(src,PROC_REF(fire_line), user,T)
T = line_target(25, range, X, user)
- INVOKE_ASYNC(src, .proc/fire_line, user,T)
+ INVOKE_ASYNC(src,PROC_REF(fire_line), user,T)
return ..()
/obj/effect/proc_holder/spell/pointed/nightwatchers_rite/proc/line_target(offset, range, atom/at , atom/user)
@@ -440,7 +440,7 @@
action_background_icon_state = "bg_ecult"
/obj/effect/proc_holder/spell/aoe_turf/fire_cascade/cast(list/targets, mob/user = usr)
- INVOKE_ASYNC(src, .proc/fire_cascade, user,range)
+ INVOKE_ASYNC(src,PROC_REF(fire_cascade), user,range)
/obj/effect/proc_holder/spell/aoe_turf/fire_cascade/proc/fire_cascade(atom/centre,max_range)
playsound(get_turf(centre), 'sound/items/welder.ogg', 75, TRUE)
@@ -486,7 +486,7 @@
. = ..()
current_user = user
has_fire_ring = TRUE
- addtimer(CALLBACK(src, .proc/remove, user), duration, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(remove), user), duration, TIMER_OVERRIDE|TIMER_UNIQUE)
/obj/effect/proc_holder/spell/targeted/fire_sworn/proc/remove()
has_fire_ring = FALSE
diff --git a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm
index 126b1277aa5..c325d2c2a27 100644
--- a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm
+++ b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm
@@ -156,7 +156,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, signalCache)
- RegisterSignal(user, signalCache, .proc/disrupt)
+ RegisterSignal(user, signalCache,PROC_REF(disrupt))
listeningTo = user
/obj/item/borg_chameleon/proc/deactivate(mob/living/silicon/robot/user)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 59197be481c..a59eeb69807 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -458,7 +458,7 @@
sound_to_playing_players('sound/machines/alarm.ogg')
if(SSticker && SSticker.mode)
SSticker.roundend_check_paused = TRUE
- addtimer(CALLBACK(src, .proc/actually_explode), 100)
+ addtimer(CALLBACK(src,PROC_REF(actually_explode)), 100)
/obj/machinery/nuclearbomb/proc/actually_explode()
if(!core)
@@ -493,7 +493,7 @@
/obj/machinery/nuclearbomb/proc/really_actually_explode(off_station)
Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker,/datum/controller/subsystem/ticker/proc/station_explosion_detonation,src))
- INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel, z)
+ INVOKE_ASYNC(GLOBAL_PROC_REF(KillEveryoneOnZLevel), z)
/obj/machinery/nuclearbomb/proc/get_cinematic_type(off_station)
if(off_station < 2)
@@ -539,10 +539,10 @@
var/datum/round_event_control/E = locate(/datum/round_event_control/vent_clog/beer) in SSevents.control
if(E)
E.runEvent()
- addtimer(CALLBACK(src, .proc/really_actually_explode), 110)
+ addtimer(CALLBACK(src,PROC_REF(really_actually_explode)), 110)
else
visible_message(span_notice("[src] fizzes ominously."))
- addtimer(CALLBACK(src, .proc/fizzbuzz), 110)
+ addtimer(CALLBACK(src,PROC_REF(fizzbuzz)), 110)
/obj/machinery/nuclearbomb/beer/proc/disarm()
detonation_timer = null
diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm
index 2af23e09823..544df9ded29 100644
--- a/code/modules/antagonists/nukeop/nukeop.dm
+++ b/code/modules/antagonists/nukeop/nukeop.dm
@@ -126,8 +126,8 @@
/datum/antagonist/nukeop/get_admin_commands()
. = ..()
- .["Send to base"] = CALLBACK(src,.proc/admin_send_to_base)
- .["Tell code"] = CALLBACK(src,.proc/admin_tell_code)
+ .["Send to base"] = CALLBACK(src,PROC_REF(admin_send_to_base))
+ .["Tell code"] = CALLBACK(src,PROC_REF(admin_tell_code))
/datum/antagonist/nukeop/proc/admin_send_to_base(mob/admin)
owner.current.forceMove(pick(GLOB.nukeop_start))
@@ -176,7 +176,7 @@
to_chat(owner, "If you feel you are not up to this task, give your ID to another operative.")
to_chat(owner, "In your hand you will find a special item capable of triggering a greater challenge for your team. Examine it carefully and consult with your fellow operatives before activating it.")
owner.announce_objectives()
- addtimer(CALLBACK(src, .proc/nuketeam_name_assign), 1)
+ addtimer(CALLBACK(src,PROC_REF(nuketeam_name_assign)), 1)
/datum/antagonist/nukeop/leader/proc/nuketeam_name_assign()
diff --git a/code/modules/antagonists/overthrow/overthrow.dm b/code/modules/antagonists/overthrow/overthrow.dm
index 537c1ff5218..ed30fff9bf4 100644
--- a/code/modules/antagonists/overthrow/overthrow.dm
+++ b/code/modules/antagonists/overthrow/overthrow.dm
@@ -83,8 +83,8 @@
/datum/antagonist/overthrow/get_admin_commands()
. = ..()
- .["Give storage with random item"] = CALLBACK(src,.proc/equip_overthrow)
- .["Give overthrow boss equip"] = CALLBACK(src,.proc/equip_initial_overthrow_agent)
+ .["Give storage with random item"] = CALLBACK(src,PROC_REF(equip_overthrow))
+ .["Give overthrow boss equip"] = CALLBACK(src,PROC_REF(equip_initial_overthrow_agent))
// Dynamically creates the HUD for the team if it doesn't exist already, inserting it into the global huds list, and assigns it to the user. The index is saved into a var owned by the team datum.
/datum/antagonist/overthrow/proc/update_overthrow_icons_added(datum/mind/traitor_mind)
diff --git a/code/modules/antagonists/overthrow/overthrow_team.dm b/code/modules/antagonists/overthrow/overthrow_team.dm
index a22f08d45c4..9d5ceb748f9 100644
--- a/code/modules/antagonists/overthrow/overthrow_team.dm
+++ b/code/modules/antagonists/overthrow/overthrow_team.dm
@@ -25,7 +25,7 @@
target.team = src
target.find_target()
objectives += target
- addtimer(CALLBACK(src,.proc/update_objectives),OBJECTIVE_UPDATING_TIME,TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(update_objectives)),OBJECTIVE_UPDATING_TIME,TIMER_UNIQUE)
/datum/team/overthrow/proc/update_objectives()
var/datum/objective/overthrow/heads/heads_obj = locate() in objectives
@@ -40,4 +40,4 @@
O.objectives += heads_obj
heads_obj.find_targets()
- addtimer(CALLBACK(src,.proc/update_objectives),OBJECTIVE_UPDATING_TIME,TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(update_objectives)),OBJECTIVE_UPDATING_TIME,TIMER_UNIQUE)
diff --git a/code/modules/antagonists/pirate/pirate.dm b/code/modules/antagonists/pirate/pirate.dm
index 43437d90ed7..a0ac64ba78b 100644
--- a/code/modules/antagonists/pirate/pirate.dm
+++ b/code/modules/antagonists/pirate/pirate.dm
@@ -70,7 +70,7 @@
//Lists notable loot.
if(!cargo_hold || !cargo_hold.total_report)
return "Nothing"
- cargo_hold.total_report.total_value = sortTim(cargo_hold.total_report.total_value, cmp = /proc/cmp_numeric_dsc, associative = TRUE)
+ cargo_hold.total_report.total_value = sortTim(cargo_hold.total_report.total_value, cmp = GLOBAL_PROC_REF(cmp_numeric_dsc), associative = TRUE)
var/count = 0
var/list/loot_texts = list()
for(var/datum/export/E in cargo_hold.total_report.total_value)
diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm
index 54691ca1bea..50f4163539c 100644
--- a/code/modules/antagonists/revenant/revenant.dm
+++ b/code/modules/antagonists/revenant/revenant.dm
@@ -113,7 +113,7 @@
if(stasis)
return
if(revealed && essence <= 0)
- INVOKE_ASYNC(src, .proc/death)
+ INVOKE_ASYNC(src,PROC_REF(death))
if(unreveal_time && world.time >= unreveal_time)
unreveal_time = 0
revealed = FALSE
@@ -191,7 +191,7 @@
adjustBruteLoss(25) //hella effective
inhibited = TRUE
update_action_buttons_icon()
- addtimer(CALLBACK(src, .proc/reset_inhibit), 30)
+ addtimer(CALLBACK(src,PROC_REF(reset_inhibit)), 30)
/mob/living/simple_animal/revenant/proc/reset_inhibit()
inhibited = FALSE
@@ -345,7 +345,7 @@
/obj/item/ectoplasm/revenant/New()
..()
- addtimer(CALLBACK(src, .proc/try_reform), 600)
+ addtimer(CALLBACK(src,PROC_REF(try_reform)), 600)
/obj/item/ectoplasm/revenant/proc/scatter()
qdel(src)
diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm
index 903e714ac1d..5a7a01ee740 100644
--- a/code/modules/antagonists/revenant/revenant_abilities.dm
+++ b/code/modules/antagonists/revenant/revenant_abilities.dm
@@ -192,7 +192,7 @@
/obj/effect/proc_holder/spell/aoe_turf/revenant/overload/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
if(attempt_cast(user))
for(var/turf/T in targets)
- INVOKE_ASYNC(src, .proc/overload, T, user)
+ INVOKE_ASYNC(src,PROC_REF(overload), T, user)
/obj/effect/proc_holder/spell/aoe_turf/revenant/overload/proc/overload(turf/T, mob/user)
for(var/obj/machinery/light/L in T)
@@ -203,7 +203,7 @@
s.set_up(4, 0, L)
s.start()
new /obj/effect/temp_visual/revenant(get_turf(L))
- addtimer(CALLBACK(src, .proc/overload_shock, L, user), 20)
+ addtimer(CALLBACK(src,PROC_REF(overload_shock), L, user), 20)
/obj/effect/proc_holder/spell/aoe_turf/revenant/overload/proc/overload_shock(obj/machinery/light/L, mob/user)
if(!L.on) //wait, wait, don't shock me
@@ -233,7 +233,7 @@
/obj/effect/proc_holder/spell/aoe_turf/revenant/defile/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
if(attempt_cast(user))
for(var/turf/T in targets)
- INVOKE_ASYNC(src, .proc/defile, T)
+ INVOKE_ASYNC(src,PROC_REF(defile), T)
/obj/effect/proc_holder/spell/aoe_turf/revenant/defile/proc/defile(turf/T)
for(var/obj/effect/blessing/B in T)
@@ -284,7 +284,7 @@
/obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
if(attempt_cast(user))
for(var/turf/T in targets)
- INVOKE_ASYNC(src, .proc/malfunction, T, user)
+ INVOKE_ASYNC(src,PROC_REF(malfunction), T, user)
/obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/proc/malfunction(turf/T, mob/user)
for(var/mob/living/simple_animal/bot/bot in T)
@@ -330,7 +330,7 @@
/obj/effect/proc_holder/spell/aoe_turf/revenant/blight/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
if(attempt_cast(user))
for(var/turf/T in targets)
- INVOKE_ASYNC(src, .proc/blight, T, user)
+ INVOKE_ASYNC(src,PROC_REF(blight), T, user)
/obj/effect/proc_holder/spell/aoe_turf/revenant/blight/proc/blight(turf/T, mob/user)
for(var/mob/living/mob in T)
diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm
index 9fd2181ef6a..adc5c44ff71 100644
--- a/code/modules/antagonists/revenant/revenant_blight.dm
+++ b/code/modules/antagonists/revenant/revenant_blight.dm
@@ -64,7 +64,7 @@
affected_mob.visible_message(span_warning("[affected_mob] looks terrifyingly gaunt..."), "You suddenly feel like your skin is wrong...")
affected_mob.add_atom_colour("#1d2953", TEMPORARY_COLOUR_PRIORITY)
new /obj/effect/temp_visual/revenant(affected_mob.loc)
- addtimer(CALLBACK(src, .proc/curses), 150)
+ addtimer(CALLBACK(src,PROC_REF(curses)), 150)
/datum/disease/revblight/proc/curses()
if(QDELETED(affected_mob))
diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index 512b3202361..fdfed6d0dcf 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -93,7 +93,7 @@
/datum/antagonist/rev/get_admin_commands()
. = ..()
- .["Promote"] = CALLBACK(src,.proc/admin_promote)
+ .["Promote"] = CALLBACK(src,PROC_REF(admin_promote))
/datum/antagonist/rev/proc/admin_promote(mob/admin)
var/datum/mind/O = owner
@@ -113,10 +113,10 @@
/datum/antagonist/rev/head/get_admin_commands()
. = ..()
. -= "Promote"
- .["Take flash"] = CALLBACK(src,.proc/admin_take_flash)
- .["Give flash"] = CALLBACK(src,.proc/admin_give_flash)
- .["Repair flash"] = CALLBACK(src,.proc/admin_repair_flash)
- .["Demote"] = CALLBACK(src,.proc/admin_demote)
+ .["Take flash"] = CALLBACK(src,PROC_REF(admin_take_flash))
+ .["Give flash"] = CALLBACK(src,PROC_REF(admin_give_flash))
+ .["Repair flash"] = CALLBACK(src,PROC_REF(admin_repair_flash))
+ .["Demote"] = CALLBACK(src,PROC_REF(admin_demote))
/datum/antagonist/rev/head/proc/admin_take_flash(mob/admin)
var/list/L = owner.current.get_contents()
@@ -322,7 +322,7 @@
var/datum/antagonist/rev/R = M.has_antag_datum(/datum/antagonist/rev)
R.objectives |= objectives
- addtimer(CALLBACK(src,.proc/update_objectives),HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(update_objectives)),HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
/datum/team/revolution/proc/head_revolutionaries()
. = list()
@@ -348,7 +348,7 @@
var/datum/antagonist/rev/rev = new_leader.has_antag_datum(/datum/antagonist/rev)
rev.promote()
- addtimer(CALLBACK(src,.proc/update_heads),HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(update_heads)),HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
/datum/team/revolution/proc/save_members()
ex_headrevs = get_antag_minds(/datum/antagonist/rev/head, TRUE)
diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm
index b236f836fc7..c89d38196b1 100644
--- a/code/modules/antagonists/slaughter/slaughter.dm
+++ b/code/modules/antagonists/slaughter/slaughter.dm
@@ -117,7 +117,7 @@
. = ..()
add_movespeed_modifier(/datum/movespeed_modifier/slaughter)
var/slowdown_time = 6 SECONDS + (0.5 * consumed_buff)
- addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, /datum/movespeed_modifier/slaughter), slowdown_time, TIMER_UNIQUE | TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(remove_movespeed_modifier), /datum/movespeed_modifier/slaughter), slowdown_time, TIMER_UNIQUE | TIMER_OVERRIDE)
/mob/living/simple_animal/slaughter/Destroy()
release_victims()
diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm
index f07dfb64a80..daf2d32aa2c 100644
--- a/code/modules/antagonists/swarmer/swarmer.dm
+++ b/code/modules/antagonists/swarmer/swarmer.dm
@@ -647,7 +647,7 @@
/obj/structure/swarmer/trap/Initialize(mapload)
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index 25f35492101..40b51822f2c 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -134,7 +134,7 @@
if(!silent)
to_chat(H, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.")
H.dna.remove_mutation(CLOWNMUT)
- RegisterSignal(M, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
+ RegisterSignal(M, COMSIG_MOVABLE_HEAR,PROC_REF(handle_hearing))
/datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override)
. = ..()
diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index 3e4638cc9a9..c37250ca939 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -448,8 +448,8 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
for(var/obj/machinery/door/D in GLOB.airlocks)
if(!is_station_level(D.z))
continue
- INVOKE_ASYNC(D, /obj/machinery/door.proc/hostile_lockdown, owner)
- addtimer(CALLBACK(D, /obj/machinery/door.proc/disable_lockdown), 900)
+ INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door,hostile_lockdown), owner)
+ addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/door,disable_lockdown)), 900)
var/obj/machinery/computer/communications/C = locate() in GLOB.machines
if(C)
@@ -457,7 +457,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
minor_announce("Hostile runtime detected in door controllers. Isolation lockdown protocols are now in effect. Please remain calm.","Network Alert:", TRUE)
to_chat(owner, span_danger("Lockdown initiated. Network reset in 90 seconds."))
- addtimer(CALLBACK(GLOBAL_PROC, .proc/minor_announce,
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(minor_announce),
"Automatic system reboot complete. Have a secure day.",
"Network reset:"), 900)
@@ -606,7 +606,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
ranged_ability_user.playsound_local(ranged_ability_user, "sparks", 50, 0)
attached_action.adjust_uses(-1)
target.audible_message(span_userdanger("You hear a loud electrical buzzing sound coming from [target]!"))
- addtimer(CALLBACK(attached_action, /datum/action/innate/ai/ranged/overload_machine.proc/detonate_machine, target), 50) //kaboom!
+ addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/overload_machine,detonate_machine), target), 50) //kaboom!
remove_ranged_ability(span_danger("Overcharging machine..."))
return TRUE
@@ -653,7 +653,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
ranged_ability_user.playsound_local(ranged_ability_user, 'sound/misc/interference.ogg', 50, 0)
attached_action.adjust_uses(-1)
target.audible_message(span_userdanger("You hear a loud electrical buzzing sound coming from [target]!"))
- addtimer(CALLBACK(attached_action, /datum/action/innate/ai/ranged/override_machine.proc/animate_machine, target), 50) //kabeep!
+ addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/override_machine,animate_machine), target), 50) //kabeep!
remove_ranged_ability(span_danger("Sending override signal..."))
return TRUE
@@ -728,7 +728,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
I.loc = T
client.images += I
I.icon_state = "[success ? "green" : "red"]Overlay" //greenOverlay and redOverlay for success and failure respectively
- addtimer(CALLBACK(src, .proc/remove_transformer_image, client, I, T), 30)
+ addtimer(CALLBACK(src,PROC_REF(remove_transformer_image), client, I, T), 30)
if(!success)
to_chat(src, span_warning("[alert_msg]"))
return success
@@ -783,7 +783,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
for(var/obj/machinery/light/L in GLOB.machines)
if(is_station_level(L.z))
L.no_emergency = TRUE
- INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE)
+ INVOKE_ASYNC(L, TYPE_PROC_REF(/obj/machinery/light/,update), FALSE)
CHECK_TICK
to_chat(owner, span_notice("Emergency light connections severed."))
owner.playsound_local(owner, 'sound/effects/light_flicker.ogg', 50, FALSE)
diff --git a/code/modules/antagonists/traitor/syndicate_contract.dm b/code/modules/antagonists/traitor/syndicate_contract.dm
index 0ac52045818..bb3f879d4f9 100644
--- a/code/modules/antagonists/traitor/syndicate_contract.dm
+++ b/code/modules/antagonists/traitor/syndicate_contract.dm
@@ -61,7 +61,7 @@
/datum/syndicate_contract/proc/launch_extraction_pod(turf/empty_pod_turf)
var/obj/structure/closet/supplypod/extractionpod/empty_pod = new()
- RegisterSignal(empty_pod, COMSIG_ATOM_ENTERED, .proc/enter_check)
+ RegisterSignal(empty_pod, COMSIG_ATOM_ENTERED,PROC_REF(enter_check))
empty_pod.stay_after_drop = TRUE
empty_pod.reversing = TRUE
@@ -142,7 +142,7 @@
[C.registered_account.account_balance] cr.", TRUE)
/datum/syndicate_contract/proc/handleVictimExperience(mob/living/M) // They're off to holding - handle the return timer and give some text about what's going on.
- addtimer(CALLBACK(src, .proc/returnVictim, M), 4 MINUTES) // Ship 'em back - dead or alive... 4 minutes wait.
+ addtimer(CALLBACK(src,PROC_REF(returnVictim), M), 4 MINUTES) // Ship 'em back - dead or alive... 4 minutes wait.
if(M.stat != DEAD) //Even if they weren't the target, we're still treating them the same.
M.reagents.add_reagent(/datum/reagent/medicine/regen_jelly, 20) // Heal them up - gets them out of crit/soft crit. -- now 100% toxinlover friendly!!
M.flash_act()
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index 47649be70d0..e7ae1722cb2 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -111,7 +111,7 @@
insaneinthemembrane.sanity = 0
for(var/lore in typesof(/datum/brain_trauma/severe))
C.gain_trauma(lore)
- addtimer(CALLBACK(src, /obj/singularity/wizard.proc/deranged, C), 100)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/singularity/wizard,deranged), C), 100)
/obj/singularity/wizard/proc/deranged(mob/living/carbon/C)
if(!C || C.stat == DEAD)
diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm
index 40cd0163c2b..9b0f33774f1 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook.dm
@@ -111,7 +111,7 @@
name = "Fireball"
spell_type = /obj/effect/proc_holder/spell/aimed/fireball
-datum/spellbook_entry/rod_form
+/datum/spellbook_entry/rod_form
name = "Rod Form"
spell_type = /obj/effect/proc_holder/spell/targeted/rod_form
cost = 99
diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm
index d1fa7eed747..d0a2672c2ef 100644
--- a/code/modules/antagonists/wizard/wizard.dm
+++ b/code/modules/antagonists/wizard/wizard.dm
@@ -131,7 +131,7 @@
/datum/antagonist/wizard/get_admin_commands()
. = ..()
- .["Send to Lair"] = CALLBACK(src,.proc/admin_send_to_lair)
+ .["Send to Lair"] = CALLBACK(src,PROC_REF(admin_send_to_lair))
/datum/antagonist/wizard/proc/admin_send_to_lair(mob/admin)
owner.current.forceMove(pick(GLOB.wizardstart))
diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm
index 9055418c579..468e49111f8 100644
--- a/code/modules/arousal/genitals.dm
+++ b/code/modules/arousal/genitals.dm
@@ -440,7 +440,7 @@
. = ..()
if(.)
update()
- RegisterSignal(owner, COMSIG_MOB_DEATH, .proc/update_appearance)
+ RegisterSignal(owner, COMSIG_MOB_DEATH,PROC_REF(update_appearance))
if(genital_visflags & GENITAL_ALWAYS_VISIBLE)
owner.exposed_genitals += src
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index b714f886042..46690ebf74a 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -61,9 +61,9 @@
//Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
/obj/item/assembly/proc/pulsed(radio = FALSE)
if(wire_type & WIRE_RECEIVE)
- INVOKE_ASYNC(src, .proc/activate)
+ INVOKE_ASYNC(src,PROC_REF(activate))
if(radio && (wire_type & WIRE_RADIO_RECEIVE))
- INVOKE_ASYNC(src, .proc/activate)
+ INVOKE_ASYNC(src,PROC_REF(activate))
return TRUE
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 4f5e2a55c17..5cdfcd8359e 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -16,7 +16,7 @@
/obj/item/onetankbomb/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -94,7 +94,7 @@
/obj/item/onetankbomb/proc/on_entered(atom/movable/AM as mob|obj) //for mousetraps
SIGNAL_HANDLER
if(bombassembly)
- INVOKE_ASYNC(bombassembly, .proc/on_entered, AM)
+ INVOKE_ASYNC(bombassembly,PROC_REF(on_entered), AM)
/obj/item/onetankbomb/on_found(mob/finder) //for mousetraps
if(bombassembly)
diff --git a/code/modules/assembly/doorcontrol.dm b/code/modules/assembly/doorcontrol.dm
index ca81c1e3ecd..161aea4bb4f 100644
--- a/code/modules/assembly/doorcontrol.dm
+++ b/code/modules/assembly/doorcontrol.dm
@@ -45,7 +45,7 @@
if(M.id == src.id)
if(openclose == null)
openclose = M.density
- INVOKE_ASYNC(M, openclose ? /obj/machinery/door/poddoor.proc/open : /obj/machinery/door/poddoor.proc/close)
+ INVOKE_ASYNC(M, openclose ? TYPE_PROC_REF(/obj/machinery/door/poddoor,open) : TYPE_PROC_REF(/obj/machinery/door/poddoor,close))
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10)
/obj/item/assembly/control/airlock
@@ -88,7 +88,7 @@
D.safe = !D.safe
for(var/D in open_or_close)
- INVOKE_ASYNC(D, doors_need_closing ? /obj/machinery/door/airlock.proc/close : /obj/machinery/door/airlock.proc/open)
+ INVOKE_ASYNC(D, doors_need_closing ? TYPE_PROC_REF(/obj/machinery/door/airlock, close) : TYPE_PROC_REF(/obj/machinery/door/airlock, open))
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10)
@@ -101,7 +101,7 @@
cooldown = TRUE
for(var/obj/machinery/door/poddoor/M in GLOB.machines)
if (M.id == src.id)
- INVOKE_ASYNC(M, /obj/machinery/door/poddoor.proc/open)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/door/poddoor,open))
sleep(10)
@@ -113,7 +113,7 @@
for(var/obj/machinery/door/poddoor/M in GLOB.machines)
if (M.id == src.id)
- INVOKE_ASYNC(M, /obj/machinery/door/poddoor.proc/close)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/door/poddoor,close))
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10)
@@ -126,7 +126,7 @@
cooldown = TRUE
for(var/obj/machinery/sparker/M in GLOB.machines)
if (M.id == src.id)
- INVOKE_ASYNC(M, /obj/machinery/sparker.proc/ignite)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/sparker,ignite))
for(var/obj/machinery/igniter/M in GLOB.machines)
if(M.id == src.id)
@@ -144,7 +144,7 @@
cooldown = TRUE
for(var/obj/machinery/flasher/M in GLOB.machines)
if(M.id == src.id)
- INVOKE_ASYNC(M, /obj/machinery/flasher.proc/flash)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/flasher,flash))
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 50)
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index 00e5abcd30c..6f46678a39a 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -28,7 +28,7 @@
if(flash)
add_overlay(flashing_overlay)
attached_overlays += flashing_overlay
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 5)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,update_icon)), 5)
if(holder)
holder.update_icon()
@@ -225,7 +225,7 @@
to_chat(I.owner, span_warning("Your photon projector implant overheats and deactivates!"))
I.Retract()
overheat = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), flashcd * 2)
+ addtimer(CALLBACK(src,PROC_REF(cooldown)), flashcd * 2)
/obj/item/assembly/flash/armimplant/try_use_flash(mob/user = null)
if(overheat)
@@ -233,7 +233,7 @@
to_chat(I.owner, span_warning("Your photon projector is running too hot to be used again so quickly!"))
return FALSE
overheat = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), flashcd)
+ addtimer(CALLBACK(src,PROC_REF(cooldown)), flashcd)
playsound(src, 'sound/weapons/flash.ogg', 100, TRUE)
update_icon(1)
return TRUE
@@ -303,7 +303,7 @@
else if(flash)
icon_state = "flashshield_flash"
item_state = "flashshield_flash"
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 5)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,update_icon)), 5)
if(holder)
holder.update_icon()
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index b0e0b480f57..629b9947161 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -18,7 +18,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -73,9 +73,9 @@
/obj/item/assembly_holder/proc/on_entered(atom/movable/AM as mob|obj)
SIGNAL_HANDLER
if(a_left)
- INVOKE_ASYNC(a_left, .proc/on_entered, AM)
+ INVOKE_ASYNC(a_left,PROC_REF(on_entered), AM)
if(a_right)
- INVOKE_ASYNC(a_right, .proc/on_entered, AM)
+ INVOKE_ASYNC(a_right,PROC_REF(on_entered), AM)
/obj/item/assembly_holder/on_found(mob/finder)
if(a_left)
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 93b388e46ac..20c118e8a37 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -20,7 +20,7 @@
/obj/item/assembly/infra/ComponentInitialize()
. = ..()
var/static/rotation_flags = ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_FLIP | ROTATION_VERBS
- AddComponent(/datum/component/simple_rotation, rotation_flags, after_rotation=CALLBACK(src,.proc/after_rotation))
+ AddComponent(/datum/component/simple_rotation, rotation_flags, after_rotation=CALLBACK(src,PROC_REF(after_rotation)))
/obj/item/assembly/infra/proc/after_rotation()
refreshBeam()
@@ -161,7 +161,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_ATOM_EXITED)
- RegisterSignal(newloc, COMSIG_ATOM_EXITED, .proc/check_exit)
+ RegisterSignal(newloc, COMSIG_ATOM_EXITED,PROC_REF(check_exit))
listeningTo = newloc
/obj/item/assembly/infra/proc/check_exit(datum/source, atom/movable/offender)
@@ -225,7 +225,7 @@
/obj/effect/beam/i_beam/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -238,4 +238,4 @@
var/obj/item/I = AM
if (I.item_flags & ABSTRACT)
return
- INVOKE_ASYNC(master, /obj/item/assembly/infra/.proc/trigger_beam, AM, get_turf(src))
+ INVOKE_ASYNC(master, TYPE_PROC_REF(/obj/item/assembly/infra/,trigger_beam), AM, get_turf(src))
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 2a8de0d30f8..40f444a3275 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -10,7 +10,7 @@
/obj/item/assembly/mousetrap/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -122,7 +122,7 @@
/obj/item/assembly/mousetrap/proc/on_entered(atom/movable/AM as mob|obj)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/handle_entered, AM)
+ INVOKE_ASYNC(src,PROC_REF(handle_entered), AM)
/obj/item/assembly/mousetrap/on_found(mob/finder)
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 281b5a66df1..9b880df8713 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -64,7 +64,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/assembly/voice.dm b/code/modules/assembly/voice.dm
index 04f40f08507..f271cad182e 100644
--- a/code/modules/assembly/voice.dm
+++ b/code/modules/assembly/voice.dm
@@ -41,7 +41,7 @@
if(!istype(speaker, /obj/item/assembly/playback)) // Check if it isn't a playback device to prevent spam and lag
if(message_language == languages) // If it isn't in the same language as the message, don't try to find the message
if(check_activation(speaker, raw_message)) // Is it the message?
- addtimer(CALLBACK(src, .proc/pulse, 0), 10)
+ addtimer(CALLBACK(src,PROC_REF(pulse), 0), 10)
/obj/item/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language)
languages = message_language // Assign the message's language to a variable to use it elsewhere
@@ -60,7 +60,7 @@
say("Your voice pattern is saved.", language = languages)
if(VOICE_SENSOR_MODE)
if(length(raw_message))
- addtimer(CALLBACK(src, .proc/pulse, 0), 10)
+ addtimer(CALLBACK(src,PROC_REF(pulse), 0), 10)
/obj/item/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message)
. = FALSE
diff --git a/code/modules/asset_cache/transports/asset_transport.dm b/code/modules/asset_cache/transports/asset_transport.dm
index 314629d73e1..2e03ad7cc74 100644
--- a/code/modules/asset_cache/transports/asset_transport.dm
+++ b/code/modules/asset_cache/transports/asset_transport.dm
@@ -14,7 +14,7 @@
/datum/asset_transport/proc/Load()
if (CONFIG_GET(flag/asset_simple_preload))
for(var/client/C in GLOB.clients)
- addtimer(CALLBACK(src, .proc/send_assets_slow, C, preload), 1 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(send_assets_slow), C, preload), 1 SECONDS)
/// Initialize - Called when SSassets initializes.
/datum/asset_transport/proc/Initialize(list/assets)
@@ -22,7 +22,7 @@
if (!CONFIG_GET(flag/asset_simple_preload))
return
for(var/client/C in GLOB.clients)
- addtimer(CALLBACK(src, .proc/send_assets_slow, C, preload), 1 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(send_assets_slow), C, preload), 1 SECONDS)
/**
@@ -137,7 +137,7 @@
client.sent_assets[new_asset_name] = ACI.hash
- addtimer(CALLBACK(client, /client/proc/asset_cache_update_json), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(client, TYPE_PROC_REF(/client, asset_cache_update_json)), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE)
return TRUE
return FALSE
diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm
index fb34b60131c..09040cef1a1 100644
--- a/code/modules/atmospherics/environmental/LINDA_fire.dm
+++ b/code/modules/atmospherics/environmental/LINDA_fire.dm
@@ -221,7 +221,7 @@
/obj/effect/hotspot/proc/on_entered(atom/movable/AM, oldLoc)
SIGNAL_HANDLER
if(isliving(AM))
- INVOKE_ASYNC(AM, /atom/.proc/fire_act, temperature, volume)
+ INVOKE_ASYNC(AM, TYPE_PROC_REF(/atom/,fire_act), temperature, volume)
/obj/effect/hotspot/singularity_pull()
return
diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm
index 9d3c4d7721d..273874dc0f3 100644
--- a/code/modules/atmospherics/gasmixtures/reactions.dm
+++ b/code/modules/atmospherics/gasmixtures/reactions.dm
@@ -9,7 +9,7 @@
continue
reaction = new r
. += reaction
- sortTim(., /proc/cmp_gas_reaction)
+ sortTim(., GLOBAL_PROC_REF(cmp_gas_reaction))
/proc/cmp_gas_reaction(datum/gas_reaction/a, datum/gas_reaction/b) // compares lists of reactions by the maximum priority contained within the list
return b.priority - a.priority
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
index 35eb1787714..becb772a5ff 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
@@ -48,7 +48,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off.
return
update_icon_nopipes(TRUE)
switching = TRUE
- addtimer(CALLBACK(src, .proc/finish_interact), 10)
+ addtimer(CALLBACK(src,PROC_REF(finish_interact)), 10)
/obj/machinery/atmospherics/components/binary/valve/proc/finish_interact()
toggle()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index aee49e5be45..874b72432c6 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -152,7 +152,7 @@
occupant_overlay.pixel_y--
add_overlay(occupant_overlay)
add_overlay("cover-on")
- addtimer(CALLBACK(src, .proc/run_anim, anim_up, occupant_overlay), 7, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(run_anim), anim_up, occupant_overlay), 7, TIMER_UNIQUE)
/obj/machinery/atmospherics/components/unary/cryo_cell/nap_violation(mob/violator)
open_machine()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
index 74e42f65f4b..62e5d491bcf 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
@@ -124,7 +124,7 @@
on = !on
if("inject" in signal.data)
- INVOKE_ASYNC(src, .proc/inject)
+ INVOKE_ASYNC(src,PROC_REF(inject))
return
if("set_volume_rate" in signal.data)
@@ -132,7 +132,7 @@
var/datum/gas_mixture/air_contents = airs[1]
volume_rate = clamp(number, 0, air_contents.return_volume())
- addtimer(CALLBACK(src, .proc/broadcast_status), 2)
+ addtimer(CALLBACK(src,PROC_REF(broadcast_status)), 2)
if(!("status" in signal.data)) //do not update_icon
update_icon()
diff --git a/code/modules/atmospherics/multiz.dm b/code/modules/atmospherics/multiz.dm
index 79a5c2cf140..b75b47542ef 100644
--- a/code/modules/atmospherics/multiz.dm
+++ b/code/modules/atmospherics/multiz.dm
@@ -1,4 +1,4 @@
-obj/machinery/atmospherics/pipe/simple/multiz ///This is an atmospherics pipe which can relay air up a deck (Z+1). It currently only supports being on pipe layer 1
+/obj/machinery/atmospherics/pipe/simple/multiz ///This is an atmospherics pipe which can relay air up a deck (Z+1). It currently only supports being on pipe layer 1
name = "multi deck pipe adapter"
desc = "An adapter which allows pipes to connect to other pipenets on different decks."
icon_state = "multiz_pipe"
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index 7cbb8a35817..c8a55b0c2c3 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -254,7 +254,7 @@
var/turf/T = get_turf(body)
new /obj/effect/ctf/ammo(T)
recently_dead_ckeys += body.ckey
- addtimer(CALLBACK(src, .proc/clear_cooldown, body.ckey), respawn_cooldown, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(clear_cooldown), body.ckey), respawn_cooldown, TIMER_UNIQUE)
body.dust()
/obj/machinery/capture_the_flag/proc/clear_cooldown(ckey)
@@ -385,7 +385,7 @@
/obj/item/gun/ballistic/automatic/pistol/deagle/ctf/dropped(mob/user)
. = ..()
- addtimer(CALLBACK(GLOBAL_PROC, /proc/ctf_floor_vanish, src), 1)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(ctf_floor_vanish), src), 1)
/obj/item/ammo_casing/a50/ctf
projectile_type = /obj/item/projectile/bullet/ctf
@@ -405,14 +405,14 @@
/obj/item/gun/ballistic/automatic/laser/ctf/dropped(mob/user)
. = ..()
- addtimer(CALLBACK(GLOBAL_PROC, /proc/ctf_floor_vanish, src), 1)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(ctf_floor_vanish), src), 1)
/obj/item/ammo_box/magazine/recharge/ctf
ammo_type = /obj/item/ammo_casing/caseless/laser/ctf
/obj/item/ammo_box/magazine/recharge/ctf/dropped(mob/user)
. = ..()
- addtimer(CALLBACK(GLOBAL_PROC, /proc/ctf_floor_vanish, src), 1)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(ctf_floor_vanish), src), 1)
/obj/item/ammo_casing/caseless/laser/ctf
projectile_type = /obj/item/projectile/beam/ctf
@@ -477,7 +477,7 @@
/obj/item/claymore/ctf/dropped(mob/user)
. = ..()
- addtimer(CALLBACK(GLOBAL_PROC, /proc/ctf_floor_vanish, src), 1)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(ctf_floor_vanish), src), 1)
/datum/outfit/ctf
name = "CTF"
@@ -610,7 +610,7 @@
/obj/effect/ctf/ammo/Initialize(mapload)
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 1d1092e0bb8..824eeece240 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -66,7 +66,7 @@
/obj/effect/mob_spawn/Initialize(mapload)
. = ..()
if(instant || (roundstart && (mapload || (SSticker && SSticker.current_state > GAME_STATE_SETTING_UP))))
- INVOKE_ASYNC(src, .proc/create)
+ INVOKE_ASYNC(src,PROC_REF(create))
else if(ghost_usable)
GLOB.poi_list |= src
LAZYADD(GLOB.mob_spawners[job_description ? job_description : name], src)
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 293e2b12b51..ca1852e7c10 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -89,7 +89,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
/datum/gateway_destination/gateway/post_transfer(atom/movable/AM)
. = ..()
- addtimer(CALLBACK(AM,/atom/movable.proc/setDir,SOUTH),0)
+ addtimer(CALLBACK(AM,TYPE_PROC_REF(/atom/movable,setDir),SOUTH),0)
/* Special home destination, so we can check exile implants */
/datum/gateway_destination/gateway/home
diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm
index 2a7cb21841d..f8f66427c52 100644
--- a/code/modules/awaymissions/mission_code/murderdome.dm
+++ b/code/modules/awaymissions/mission_code/murderdome.dm
@@ -28,7 +28,7 @@
/obj/effect/murderdome/dead_barricade/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/respawn), 3 MINUTES)
+ addtimer(CALLBACK(src,PROC_REF(respawn)), 3 MINUTES)
/obj/effect/murderdome/dead_barricade/proc/respawn()
if(!QDELETED(src))
diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm
index 79821094695..cbaa1c6fd92 100644
--- a/code/modules/awaymissions/mission_code/wildwest.dm
+++ b/code/modules/awaymissions/mission_code/wildwest.dm
@@ -134,7 +134,7 @@
/obj/effect/meatgrinder/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm
index 6ae3ec5e8f8..adabc44520c 100644
--- a/code/modules/awaymissions/super_secret_room.dm
+++ b/code/modules/awaymissions/super_secret_room.dm
@@ -127,7 +127,7 @@
/obj/item/rupee/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -141,7 +141,7 @@
SIGNAL_HANDLER
if(!istype(M))
return
- INVOKE_ASYNC(M, /mob/.proc/put_in_hands, src)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/mob/,put_in_hands), src)
/obj/item/rupee/equipped(mob/user, slot)
playsound(get_turf(loc), 'sound/misc/server-ready.ogg', 50, 1, -1)
diff --git a/code/modules/balloon_alert/balloon_alert.dm b/code/modules/balloon_alert/balloon_alert.dm
index c068d08d56c..5cd8e4b755c 100644
--- a/code/modules/balloon_alert/balloon_alert.dm
+++ b/code/modules/balloon_alert/balloon_alert.dm
@@ -45,7 +45,7 @@
easing = CUBIC_EASING | EASE_IN,
)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/remove_image_from_client, balloon_alert, viewer_client), BALLOON_TEXT_TOTAL_LIFETIME)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(remove_image_from_client), balloon_alert, viewer_client), BALLOON_TEXT_TOTAL_LIFETIME)
#undef BALLOON_TEXT_FADE_TIME
#undef BALLOON_TEXT_FULLY_VISIBLE_TIME
diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm
index 8290258c487..94e26fcae1e 100644
--- a/code/modules/buildmode/buildmode.dm
+++ b/code/modules/buildmode/buildmode.dm
@@ -27,7 +27,7 @@
mode = new /datum/buildmode_mode/basic(src)
holder = c
buttons = list()
- li_cb = CALLBACK(src, .proc/post_login)
+ li_cb = CALLBACK(src,PROC_REF(post_login))
holder.player_details.post_login_callbacks += li_cb
holder.show_popup_menus = FALSE
create_buttons()
diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm
index 1e2880a9c26..d6c822b345f 100644
--- a/code/modules/cargo/centcom_podlauncher.dm
+++ b/code/modules/cargo/centcom_podlauncher.dm
@@ -264,7 +264,7 @@
if (temp_pod.effectShrapnel == TRUE) //If already doing custom damage, set back to default (no shrapnel)
temp_pod.effectShrapnel = FALSE
return
- var/shrapnelInput = input("Please enter the type of pellet cloud you'd like to create on landing (Can be any projectile!)", "Projectile Typepath", 0) in sortList(subtypesof(/obj/item/projectile), /proc/cmp_typepaths_asc)
+ var/shrapnelInput = input("Please enter the type of pellet cloud you'd like to create on landing (Can be any projectile!)", "Projectile Typepath", 0) in sortList(subtypesof(/obj/item/projectile), GLOBAL_PROC_REF(cmp_typepaths_asc))
if (isnull(shrapnelInput))
return
var/shrapnelMagnitude = input("Enter the magnitude of the pellet cloud. This is usually a value around 1-5. Please note that Ryll-Ryll has asked me to tell you that if you go too crazy with the projectiles you might crash the server. So uh, be gentle!", "Shrapnel Magnitude", 0) as null|num
diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm
index daac467cba4..5ffbeb48991 100644
--- a/code/modules/cargo/packs/organic.dm
+++ b/code/modules/cargo/packs/organic.dm
@@ -172,7 +172,7 @@
anomalous_box_provided = TRUE
log_game("An anomalous pizza box was provided in a pizza crate at during cargo delivery")
if(prob(50))
- addtimer(CALLBACK(src, .proc/anomalous_pizza_report), rand(300, 1800))
+ addtimer(CALLBACK(src,PROC_REF(anomalous_pizza_report)), rand(300, 1800))
else
message_admins("An anomalous pizza box was silently created with no command report in a pizza crate delivery.")
break
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index 710366e3634..48ffb9b4439 100644
--- a/code/modules/cargo/supplypod.dm
+++ b/code/modules/cargo/supplypod.dm
@@ -115,7 +115,7 @@
/obj/structure/closet/supplypod/proc/handleReturningClose(atom/movable/holder, returntobay)
opened = FALSE
- INVOKE_ASYNC(holder, .proc/setClosed) //Use the INVOKE_ASYNC proc to call setClosed() on whatever the holder may be, without giving the atom/movable base class a setClosed() proc definition
+ INVOKE_ASYNC(holder,PROC_REF(setClosed)) //Use the INVOKE_ASYNC proc to call setClosed() on whatever the holder may be, without giving the atom/movable base class a setClosed() proc definition
for(var/atom/movable/O in get_turf(holder))
if ((ismob(O) && !isliving(O)) || (is_type_in_typecache(O, GLOB.blacklisted_cargo_types) && !isliving(O))) //We dont want to take ghosts with us, and we don't want blacklisted items going, but we allow mobs.
continue
@@ -180,7 +180,7 @@
opened = TRUE //We set opened to TRUE to avoid spending time trying to open (due to being deleted) during the Destroy() proc
qdel(src)
else
- addtimer(CALLBACK(src, .proc/open, src), openingDelay) //After the openingDelay passes, we use the open proc from this supplypod, while referencing this supplypod's contents
+ addtimer(CALLBACK(src,PROC_REF(open), src), openingDelay) //After the openingDelay passes, we use the open proc from this supplypod, while referencing this supplypod's contents
/obj/structure/closet/supplypod/open(atom/movable/holder, broken = FALSE, forced = FALSE) //The holder var represents an atom whose contents we will be working with
var/turf/T = get_turf(holder) //Get the turf of whoever's contents we're talking about
@@ -196,7 +196,7 @@
return
if (openingSound)
playsound(get_turf(holder), openingSound, soundVolume, 0, 0) //Special admin sound to play
- INVOKE_ASYNC(holder, .proc/setOpened) //Use the INVOKE_ASYNC proc to call setOpened() on whatever the holder may be, without giving the atom/movable base class a setOpened() proc definition
+ INVOKE_ASYNC(holder,PROC_REF(setOpened)) //Use the INVOKE_ASYNC proc to call setOpened() on whatever the holder may be, without giving the atom/movable base class a setOpened() proc definition
if (style == STYLE_SEETHROUGH)
update_icon()
for (var/atom/movable/O in holder.contents) //Go through the contents of the holder
@@ -209,7 +209,7 @@
depart(src)
else
if(!stay_after_drop) // Departing should be handled manually
- addtimer(CALLBACK(src, .proc/depart, holder), departureDelay) //Finish up the pod's duties after a certain amount of time
+ addtimer(CALLBACK(src,PROC_REF(depart), holder), departureDelay) //Finish up the pod's duties after a certain amount of time
/obj/structure/closet/supplypod/proc/depart(atom/movable/holder)
if (leavingSound)
@@ -307,8 +307,8 @@
if (soundStartTime < 0)
soundStartTime = 1
if (!pod.effectQuiet)
- addtimer(CALLBACK(src, .proc/playFallingSound), soundStartTime)
- addtimer(CALLBACK(src, .proc/beginLaunch, pod.effectCircle), pod.landingDelay)
+ addtimer(CALLBACK(src,PROC_REF(playFallingSound)), soundStartTime)
+ addtimer(CALLBACK(src,PROC_REF(beginLaunch), pod.effectCircle), pod.landingDelay)
/obj/effect/abstract/DPtarget/proc/playFallingSound()
playsound(src, pod.fallingSound, pod.soundVolume, 1, 6)
@@ -326,7 +326,7 @@
M.Turn(rotation) //Turn the matrix
pod.transform = M //Turn the actual pod (Won't be visible until endLaunch() proc tho)
animate(fallingPod, pixel_z = 0, pixel_x = -16, time = pod.fallDuration, , easing = LINEAR_EASING) //Make the pod fall! At an angle!
- addtimer(CALLBACK(src, .proc/endLaunch), pod.fallDuration, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
+ addtimer(CALLBACK(src,PROC_REF(endLaunch)), pod.fallDuration, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
/obj/effect/abstract/DPtarget/proc/endLaunch()
pod.update_icon()
diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm
index 6bbd6949750..c0f029a1b38 100644
--- a/code/modules/cargo/supplypod_beacon.dm
+++ b/code/modules/cargo/supplypod_beacon.dm
@@ -23,7 +23,7 @@
launched = TRUE
playsound(src,'sound/machines/triple_beep.ogg',50,0)
playsound(src,'sound/machines/warning-buzzer.ogg',50,0)
- addtimer(CALLBACK(src, .proc/endLaunch), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon
+ addtimer(CALLBACK(src,PROC_REF(endLaunch)), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon
if (SP_UNLINK)
linked = FALSE
playsound(src,'sound/machines/synth_no.ogg',50,0)
diff --git a/code/modules/client/border_control.dm b/code/modules/client/border_control.dm
index dcaedfc3556..f7650e9821a 100644
--- a/code/modules/client/border_control.dm
+++ b/code/modules/client/border_control.dm
@@ -8,7 +8,7 @@ GLOBAL_VAR_INIT(borderControlFile, new /savefile("data/bordercontrol.db"))
GLOBAL_VAR_INIT(whitelistLoaded, 0)
//////////////////////////////////////////////////////////////////////////////////
-proc/BC_ModeToText(var/mode)
+/proc/BC_ModeToText(mode)
switch(mode)
if(BORDER_CONTROL_DISABLED)
return "Disabled"
@@ -18,7 +18,7 @@ proc/BC_ModeToText(var/mode)
return "Enforced"
//////////////////////////////////////////////////////////////////////////////////
-proc/BC_IsKeyAllowedToConnect(var/key)
+/proc/BC_IsKeyAllowedToConnect(key)
key = ckey(key)
var/borderControlMode = CONFIG_GET(number/border_control)
@@ -34,7 +34,7 @@ proc/BC_IsKeyAllowedToConnect(var/key)
return BC_IsKeyWhitelisted(key)
//////////////////////////////////////////////////////////////////////////////////
-proc/BC_IsKeyWhitelisted(var/key)
+/proc/BC_IsKeyWhitelisted(key)
key = ckey(key)
if(!GLOB.whitelistLoaded)
@@ -63,7 +63,7 @@ proc/BC_IsKeyWhitelisted(var/key)
//////////////////////////////////////////////////////////////////////////////////
-proc/BC_WhitelistKey(var/key)
+/proc/BC_WhitelistKey(key)
var/keyAsCkey = ckey(key)
if(!GLOB.whitelistLoaded)
@@ -78,7 +78,7 @@ proc/BC_WhitelistKey(var/key)
else
LAZYINITLIST(GLOB.whitelistedCkeys)
- ADD_SORTED(GLOB.whitelistedCkeys, keyAsCkey, /proc/cmp_text_asc)
+ ADD_SORTED(GLOB.whitelistedCkeys, keyAsCkey, GLOBAL_PROC_REF(cmp_text_asc))
BC_SaveWhitelist()
return 1
@@ -105,7 +105,7 @@ proc/BC_WhitelistKey(var/key)
//////////////////////////////////////////////////////////////////////////////////
-proc/BC_RemoveKey(var/key)
+/proc/BC_RemoveKey(key)
key = ckey(key)
if(!LAZYISIN(GLOB.whitelistedCkeys, key))
@@ -179,7 +179,7 @@ proc/BC_RemoveKey(var/key)
//////////////////////////////////////////////////////////////////////////////////
-proc/BC_SaveWhitelist()
+/proc/BC_SaveWhitelist()
if(!GLOB.whitelistedCkeys)
return 0
diff --git a/code/modules/client/client_colour.dm b/code/modules/client/client_colour.dm
index ab69003953b..d5b8affe2c1 100644
--- a/code/modules/client/client_colour.dm
+++ b/code/modules/client/client_colour.dm
@@ -28,7 +28,7 @@
var/datum/client_colour/CC = new colour_type()
LAZYINITLIST(client_colours)
client_colours |= CC
- sortTim(client_colours, /proc/cmp_clientcolour_priority)
+ sortTim(client_colours, GLOBAL_PROC_REF(cmp_clientcolour_priority))
update_client_colour()
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 28eabe5c9b6..8cc4d7531c1 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -279,7 +279,7 @@ GLOBAL_LIST_INIT(warning_ckeys, list())
prefs = new /datum/preferences(src)
GLOB.preferences_datums[ckey] = prefs
- addtimer(CALLBACK(src, .proc/ensure_keys_set, prefs), 10) //prevents possible race conditions
+ addtimer(CALLBACK(src,PROC_REF(ensure_keys_set), prefs), 10) //prevents possible race conditions
prefs.last_ip = address //these are gonna be used for banning
prefs.last_id = computer_id //these are gonna be used for banning
@@ -354,7 +354,7 @@ GLOBAL_LIST_INIT(warning_ckeys, list())
// Initialize tgui panel
tgui_panel.initialize()
- addtimer(CALLBACK(src, .proc/nuke_chat), 5 SECONDS)//Reboot it to fix broken chat window instead of making the player do it (bandaid fix)
+ addtimer(CALLBACK(src,PROC_REF(nuke_chat)), 5 SECONDS)//Reboot it to fix broken chat window instead of making the player do it (bandaid fix)
src << browse(file('html/statbrowser.html'), "window=statbrowser")
@@ -970,7 +970,7 @@ GLOBAL_LIST_INIT(warning_ckeys, list())
//Precache the client with all other assets slowly, so as to not block other browse() calls
if (CONFIG_GET(flag/asset_simple_preload))
- addtimer(CALLBACK(SSassets.transport, /datum/asset_transport.proc/send_assets_slow, src, SSassets.transport.preload), 5 SECONDS)
+ addtimer(CALLBACK(SSassets.transport, TYPE_PROC_REF(/datum/asset_transport,send_assets_slow), src, SSassets.transport.preload), 5 SECONDS)
#if (PRELOAD_RSC == 0)
for (var/name in GLOB.vox_sounds)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 68f3973246e..aeb5ea02bfb 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -2014,7 +2014,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
//The job before the current job. I only use this to get the previous jobs color when I'm filling in blank rows.
var/datum/job/lastJob
- for(var/datum/job/job in sortList(SSjob.occupations, /proc/cmp_job_display_asc))
+ for(var/datum/job/job in sortList(SSjob.occupations, GLOBAL_PROC_REF(cmp_job_display_asc)))
if(job.total_positions == 0)
continue
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 8b4c390f049..38d88228559 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -56,7 +56,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
/datum/preferences/proc/update_preferences(current_version, savefile/S)
if(current_version < 37) //If you remove this, remove force_reset_keybindings() too.
force_reset_keybindings_direct(TRUE)
- addtimer(CALLBACK(src, .proc/force_reset_keybindings), 30) //No mob available when this is run, timer allows user choice.
+ addtimer(CALLBACK(src,PROC_REF(force_reset_keybindings)), 30) //No mob available when this is run, timer allows user choice.
/datum/preferences/proc/update_character(current_version, savefile/S)
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 4158705bb63..1824c54215b 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -85,7 +85,7 @@
var/datum/outfit/O = path
if(initial(O.can_be_admin_equipped))
standard_outfit_options[initial(O.name)] = path
- sortTim(standard_outfit_options, /proc/cmp_text_asc)
+ sortTim(standard_outfit_options, GLOBAL_PROC_REF(cmp_text_asc))
outfit_options = standard_outfit_options
/datum/action/chameleon_outfit/Trigger()
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index cc830442d62..91a5cf88700 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -211,7 +211,7 @@
if(iscarbon(loc))
var/mob/living/carbon/C = loc
C.visible_message(span_danger("The [zone_name] on [C]'s [src.name] is [break_verb] away!"), span_userdanger("The [zone_name] on your [src.name] is [break_verb] away!"), vision_distance = COMBAT_MESSAGE_RANGE)
- RegisterSignal(C, COMSIG_MOVABLE_MOVED, .proc/bristle)
+ RegisterSignal(C, COMSIG_MOVABLE_MOVED,PROC_REF(bristle))
zones_disabled++
for(var/i in zone2body_parts_covered(def_zone))
@@ -254,7 +254,7 @@
return
if(slot_flags & slotdefine2slotbit(slot)) //Was equipped to a valid slot for this item?
if(iscarbon(user) && LAZYLEN(zones_disabled))
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/bristle)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(bristle))
if(LAZYLEN(user_vars_to_edit))
for(var/variable in user_vars_to_edit)
if(variable in user.vars)
diff --git a/code/modules/clothing/glasses/phantomthief.dm b/code/modules/clothing/glasses/phantomthief.dm
index b3a85c2c40c..5b62d5c1fee 100644
--- a/code/modules/clothing/glasses/phantomthief.dm
+++ b/code/modules/clothing/glasses/phantomthief.dm
@@ -35,7 +35,7 @@
return
if(slot != SLOT_GLASSES)
return
- RegisterSignal(user, COMSIG_LIVING_COMBAT_ENABLED, .proc/injectadrenaline)
+ RegisterSignal(user, COMSIG_LIVING_COMBAT_ENABLED,PROC_REF(injectadrenaline))
/obj/item/clothing/glasses/phantomthief/syndicate/dropped(mob/user)
. = ..()
diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm
index 70451f2803e..9bc690a856e 100644
--- a/code/modules/clothing/gloves/_gloves.dm
+++ b/code/modules/clothing/gloves/_gloves.dm
@@ -16,7 +16,7 @@
/obj/item/clothing/gloves/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /atom.proc/clean_blood)
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, TYPE_PROC_REF(/atom,clean_blood))
/obj/item/clothing/gloves/clean_blood(datum/source, strength)
. = ..()
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index 62abfd612aa..c25294e9872 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -51,7 +51,7 @@
/obj/item/clothing/gloves/color/yellow/sprayon/equipped(mob/user, slot)
. = ..()
- RegisterSignal(user, COMSIG_LIVING_SHOCK_PREVENTED, .proc/Shocked)
+ RegisterSignal(user, COMSIG_LIVING_SHOCK_PREVENTED,PROC_REF(Shocked))
/obj/item/clothing/gloves/color/yellow/sprayon/proc/Shocked()
shocks_remaining--
diff --git a/code/modules/clothing/head/f13factionhead.dm b/code/modules/clothing/head/f13factionhead.dm
index 040e46b894b..9db0850834e 100644
--- a/code/modules/clothing/head/f13factionhead.dm
+++ b/code/modules/clothing/head/f13factionhead.dm
@@ -253,7 +253,7 @@
. = ..()
AddComponent(/datum/component/armor_plate)
*/
-obj/item/clothing/head/helmet/f13/enclave/usmcriot
+/obj/item/clothing/head/helmet/f13/enclave/usmcriot
name = "old United States Marine Corp riot helmet"
desc = "A pre-war riot armor helmet used by the USCM For various tasks and operations, it's handled the nuclear wasteland somewhat better than the rest of the armors you've seen."
icon_state = "modified_usmc_riot"
@@ -1081,7 +1081,7 @@ obj/item/clothing/head/helmet/f13/enclave/usmcriot
icon_state = "army_general"
item_state = "army_general"
-obj/item/clothing/head/f13/army/beret
+/obj/item/clothing/head/f13/army/beret
name = "US Army beret"
desc = "A black beret, standard issue for all US Army personnel not authorised to wear a different beret."
icon = 'icons/fallout/clothing/hats.dmi'
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index fbf88c74dbc..403e811e493 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -216,7 +216,7 @@
/obj/item/clothing/head/warden/drill/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_HEAD)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY,PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 68658c6a803..4f2be1729ec 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -375,7 +375,7 @@
/obj/item/clothing/head/frenchberet/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_HEAD)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY,PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 69454328f1a..23e8a1d6d80 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -267,7 +267,7 @@
/obj/item/clothing/head/foilhat/Initialize(mapload)
. = ..()
if(!warped)
- AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, INV_SLOTBIT_HEAD, 6, TRUE, null, CALLBACK(src, .proc/warp_up))
+ AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, INV_SLOTBIT_HEAD, 6, TRUE, null, CALLBACK(src,PROC_REF(warp_up)))
else
warp_up()
diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm
index 3eca29718bf..109eb17ab97 100644
--- a/code/modules/clothing/masks/_masks.dm
+++ b/code/modules/clothing/masks/_masks.dm
@@ -20,7 +20,7 @@
/obj/item/clothing/mask/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_MASK && modifies_speech)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY,PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index e8f1b151a53..3f764b07625 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -374,7 +374,7 @@
//VERY SUPER BADASS NECKERCHIEFS//
//////////////////////////////////
-obj/item/clothing/neck/neckerchief
+/obj/item/clothing/neck/neckerchief
icon = 'icons/obj/clothing/masks.dmi' //In order to reuse the bandana sprite
w_class = WEIGHT_CLASS_TINY
var/sourceBandanaType
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index b9fff13a33f..9de5d7af03b 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -33,7 +33,7 @@
/obj/item/clothing/shoes/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /atom.proc/clean_blood)
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, TYPE_PROC_REF(/atom,clean_blood))
/obj/item/clothing/shoes/examine(mob/user)
. = ..()
@@ -77,7 +77,7 @@
equipped_before_drop = TRUE
if(can_be_tied && tied == SHOES_UNTIED)
our_alert = user.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied)
- RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE)
+ RegisterSignal(src, COMSIG_SHOES_STEP_ACTION,PROC_REF(check_trip), override=TRUE)
/obj/item/clothing/shoes/proc/restore_offsets(mob/user)
equipped_before_drop = FALSE
@@ -134,7 +134,7 @@
else
if(tied == SHOES_UNTIED && our_guy && user == our_guy)
our_alert = our_guy.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied) // if we're the ones unknotting our own laces, of course we know they're untied
- RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE)
+ RegisterSignal(src, COMSIG_SHOES_STEP_ACTION,PROC_REF(check_trip), override=TRUE)
/**
* handle_tying deals with all the actual tying/untying/knotting, inferring your intent from who you are in relation to the state of the laces
@@ -161,7 +161,7 @@
return
user.visible_message(span_notice("[user] begins [tied ? "unknotting" : "tying"] the laces of [user.p_their()] [src.name]."), span_notice("You begin [tied ? "unknotting" : "tying"] the laces of your [src.name]..."))
- if(do_after(user, lace_time, needhand=TRUE, target=our_guy, extra_checks=CALLBACK(src, .proc/still_shoed, our_guy)))
+ if(do_after(user, lace_time, needhand=TRUE, target=our_guy, extra_checks=CALLBACK(src,PROC_REF(still_shoed), our_guy)))
to_chat(user, span_notice("You [tied ? "unknot" : "tie"] the laces of your [src.name]."))
if(tied == SHOES_UNTIED)
adjust_laces(SHOES_TIED, user)
@@ -185,7 +185,7 @@
if(HAS_TRAIT(user, TRAIT_CLUMSY)) // based clowns trained their whole lives for this
mod_time *= 0.75
- if(do_after(user, mod_time, needhand=TRUE, target=our_guy, extra_checks=CALLBACK(src, .proc/still_shoed, our_guy)))
+ if(do_after(user, mod_time, needhand=TRUE, target=our_guy, extra_checks=CALLBACK(src,PROC_REF(still_shoed), our_guy)))
to_chat(user, span_notice("You [tied ? "untie" : "knot"] the laces on [loc]'s [src.name]."))
if(tied == SHOES_UNTIED)
adjust_laces(SHOES_KNOTTED, user)
@@ -266,6 +266,6 @@
to_chat(user, span_notice("You begin [tied ? "untying" : "tying"] the laces on [src]..."))
- if(do_after(user, lace_time, needhand=TRUE, target=src,extra_checks=CALLBACK(src, .proc/still_shoed, user)))
+ if(do_after(user, lace_time, needhand=TRUE, target=src,extra_checks=CALLBACK(src,PROC_REF(still_shoed), user)))
to_chat(user, span_notice("You [tied ? "untie" : "tie"] the laces on [src]."))
adjust_laces(tied ? SHOES_TIED : SHOES_UNTIED, user)
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index e7e6ae2b08b..8779a8e7078 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -335,14 +335,14 @@
active = TRUE
set_light_color(rgb(rand(0,255),rand(0,255),rand(0,255)))
set_light_on(TRUE)
- addtimer(CALLBACK(src, .proc/lightUp), 5)
+ addtimer(CALLBACK(src,PROC_REF(lightUp)), 5)
/obj/item/clothing/shoes/kindleKicks/proc/lightUp(mob/user)
if(lightCycle < 15)
set_light_color(rgb(rand(0,255),rand(0,255),rand(0,255)))
set_light_on(TRUE)
lightCycle += 1
- addtimer(CALLBACK(src, .proc/lightUp), 5)
+ addtimer(CALLBACK(src,PROC_REF(lightUp)), 5)
else
set_light_on(FALSE)
lightCycle = 0
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 55739d0e3ce..b029433bc04 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -129,12 +129,12 @@
user.Stun(INFINITY)
animate(user, color = "#00ccee", time = 3)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_2, user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src,PROC_REF(phase_2), user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE)
/obj/item/clothing/suit/space/chronos/proc/phase_2(mob/living/carbon/human/user, turf/to_turf, phase_in_ds)
if(teleporting && activated && user)
animate(user, alpha = 0, time = 2)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_3, user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src,PROC_REF(phase_3), user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
@@ -142,14 +142,14 @@
if(teleporting && activated && user)
user.forceMove(to_turf)
animate(user, alpha = 255, time = phase_in_ds)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_4, user, to_turf), phase_in_ds, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src,PROC_REF(phase_4), user, to_turf), phase_in_ds, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
/obj/item/clothing/suit/space/chronos/proc/phase_4(mob/living/carbon/human/user, turf/to_turf)
if(teleporting && activated && user)
animate(user, color = "#ffffff", time = 3)
- phase_timer_id = addtimer(CALLBACK(src, .proc/finish_chronowalk, user, to_turf), 3, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src,PROC_REF(finish_chronowalk), user, to_turf), 3, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm
index 657efc08682..744b395093b 100644
--- a/code/modules/clothing/spacesuits/flightsuit.dm
+++ b/code/modules/clothing/spacesuits/flightsuit.dm
@@ -110,7 +110,7 @@
wearer = changeto
LAZYADD(wearer.user_movement_hooks, src)
cached_pull = changeto.pulling
- mobhook = changeto.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED), CALLBACK(src, .proc/on_mob_move, changeto))
+ mobhook = changeto.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED), CALLBACK(src,PROC_REF(on_mob_move), changeto))
/obj/item/flightpack/Initialize()
ion_trail = new
@@ -425,7 +425,7 @@
crashing = FALSE
/obj/item/flightpack/proc/door_pass(obj/structure/mineral_door/door)
- INVOKE_ASYNC(door, /obj/structure/mineral_door.proc/Open)
+ INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/mineral_door,Open))
var/turf/T = get_turf(door)
wearer.forceMove(T)
wearer.visible_message(span_boldnotice("[wearer] rolls to [wearer.p_their()] sides and slips past [door]!"))
@@ -445,7 +445,7 @@
if((!A.allowed(wearer)) && !A.emergency)
nopass = TRUE
if(!nopass)
- INVOKE_ASYNC(A, /obj/machinery/door.proc/open)
+ INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door,open))
wearer.visible_message(span_warning("[wearer] rolls sideways and slips past [A]"))
var/turf/target = get_turf(A)
if(istype(A, /obj/machinery/door/window) && (get_turf(wearer) == get_turf(A)))
@@ -536,7 +536,7 @@
return TRUE
usermessage("Warning: Velocity too high to safely disengage. Retry to confirm emergency shutoff.", "boldwarning")
override_safe = TRUE
- addtimer(CALLBACK(src, .proc/enable_safe), 50)
+ addtimer(CALLBACK(src,PROC_REF(enable_safe)), 50)
return FALSE
/obj/item/flightpack/proc/enable_safe()
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index c7bb4e2dcb5..93991935b7d 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -650,7 +650,7 @@ armor //Baseline hardsuits
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(on_mob_move))
listeningTo = user
/obj/item/clothing/suit/space/hardsuit/ancient/dropped(mob/user)
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 844b49fcd9f..6afe6dddce4 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -377,7 +377,7 @@ Contains:
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/Initialize()
. = ..()
- AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, INV_SLOTBIT_HEAD, charges, TRUE, null, CALLBACK(src, .proc/anti_magic_gone))
+ AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, INV_SLOTBIT_HEAD, charges, TRUE, null, CALLBACK(src,PROC_REF(anti_magic_gone)))
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/proc/anti_magic_gone()
var/mob/M = loc
@@ -398,7 +398,7 @@ Contains:
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize()
. = ..()
- AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, INV_SLOTBIT_OCLOTHING, charges, TRUE, null, CALLBACK(src, .proc/anti_magic_gone))
+ AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, INV_SLOTBIT_OCLOTHING, charges, TRUE, null, CALLBACK(src,PROC_REF(anti_magic_gone)))
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/proc/anti_magic_gone()
var/mob/M = loc
diff --git a/code/modules/clothing/suits/arfsuits.dm b/code/modules/clothing/suits/arfsuits.dm
index e029d39ca06..d8dc98ca1cd 100644
--- a/code/modules/clothing/suits/arfsuits.dm
+++ b/code/modules/clothing/suits/arfsuits.dm
@@ -4847,7 +4847,7 @@
emped = TRUE
slowdown += induced_slowdown
L.update_equipment_speed_mods()
- addtimer(CALLBACK(src, .proc/end_emp_effect, induced_slowdown), 50)
+ addtimer(CALLBACK(src,PROC_REF(end_emp_effect), induced_slowdown), 50)
return
/obj/item/clothing/suit/armor/power_armor/proc/end_emp_effect(slowdown_induced)
diff --git a/code/modules/clothing/suits/f13armor.dm b/code/modules/clothing/suits/f13armor.dm
index 9efb7bfc88c..999b6924b76 100644
--- a/code/modules/clothing/suits/f13armor.dm
+++ b/code/modules/clothing/suits/f13armor.dm
@@ -544,7 +544,7 @@
emped = TRUE
slowdown += induced_slowdown
L.update_equipment_speed_mods()
- addtimer(CALLBACK(src, .proc/end_emp_effect, induced_slowdown), 50)
+ addtimer(CALLBACK(src,PROC_REF(end_emp_effect), induced_slowdown), 50)
return
/obj/item/clothing/suit/armor/power_armor/proc/end_emp_effect(slowdown_induced)
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 220ad00b9b9..1bd66dcec3a 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -189,7 +189,7 @@
/datum/action/item_action/stickmen/New(Target)
..()
if(isitem(Target))
- RegisterSignal(Target, COMSIG_PARENT_EXAMINE, .proc/give_infos)
+ RegisterSignal(Target, COMSIG_PARENT_EXAMINE,PROC_REF(give_infos))
/datum/action/item_action/stickmen/Destroy()
for(var/A in summoned_stickmen)
@@ -211,7 +211,7 @@
/datum/action/item_action/stickmen/Grant(mob/M)
. = ..()
if(owner)
- RegisterSignal(M, COMSIG_MOB_POINTED, .proc/rally)
+ RegisterSignal(M, COMSIG_MOB_POINTED,PROC_REF(rally))
if(book_of_grudges[M]) //Stop attacking your new master.
book_of_grudges -= M
for(var/A in summoned_stickmen)
@@ -248,9 +248,9 @@
var/mob/living/simple_animal/hostile/S = new summoned_mob_path (get_turf(usr))
S.faction = owner.faction
S.foes = book_of_grudges
- RegisterSignal(S, COMSIG_PARENT_QDELETING, .proc/remove_from_list)
+ RegisterSignal(S, COMSIG_PARENT_QDELETING,PROC_REF(remove_from_list))
ready = FALSE
- addtimer(CALLBACK(src, .proc/ready_again), cooldown)
+ addtimer(CALLBACK(src,PROC_REF(ready_again)), cooldown)
/datum/action/item_action/stickmen/proc/remove_from_list(datum/source, forced)
summoned_stickmen -= source
@@ -279,9 +279,9 @@
var/obj/mecha/M = A
L = M.occupant
if(L && L.stat != DEAD && !HAS_TRAIT(L, TRAIT_DEATHCOMA)) //Taking revenge on the deads would be proposterous.
- addtimer(CALLBACK(src, .proc/clear_grudge, L), 2 MINUTES, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(clear_grudge), L), 2 MINUTES, TIMER_OVERRIDE|TIMER_UNIQUE)
if(!book_of_grudges[L])
- RegisterSignal(L, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH), .proc/grudge_settled)
+ RegisterSignal(L, list(COMSIG_PARENT_QDELETING, COMSIG_MOB_DEATH),PROC_REF(grudge_settled))
book_of_grudges[L] = TRUE
for(var/k in summoned_stickmen) //Shamelessly copied from the blob rally power
var/mob/living/simple_animal/hostile/S = k
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index 8baf2e09c06..6a568e09b3b 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -33,7 +33,7 @@
if(log.len && !scanning)
scanning = TRUE
to_chat(user, span_notice("Printing report, please wait..."))
- addtimer(CALLBACK(src, .proc/PrintReport), 100)
+ addtimer(CALLBACK(src,PROC_REF(PrintReport)), 100)
else
to_chat(user, span_notice("The scanner has no logs or is in use."))
diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm
index cb6f6a337f8..2c314779479 100644
--- a/code/modules/events/carp_migration.dm
+++ b/code/modules/events/carp_migration.dm
@@ -131,8 +131,8 @@
/mob/living/simple_animal/nest_spawn_hole_guy/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_HOSTILE_CHECK_FACTION, .proc/no_attack_pls)
- RegisterSignal(src, COMSIG_MOB_APPLY_DAMAGE, .proc/im_hit)
+ RegisterSignal(src, COMSIG_HOSTILE_CHECK_FACTION,PROC_REF(no_attack_pls))
+ RegisterSignal(src, COMSIG_MOB_APPLY_DAMAGE,PROC_REF(im_hit))
/mob/living/simple_animal/nest_spawn_hole_guy/update_overlays()
. = ..()
diff --git a/code/modules/events/fake_virus.dm b/code/modules/events/fake_virus.dm
index c145f97b61a..2bbdfb0e806 100644
--- a/code/modules/events/fake_virus.dm
+++ b/code/modules/events/fake_virus.dm
@@ -24,7 +24,7 @@
for(var/i=1; i<=rand(1,defacto_min); i++)
var/mob/living/carbon/human/onecoughman = pick(fake_virus_victims)
if(prob(25))//1/4 odds to get a spooky message instead of coughing out loud
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, onecoughman, span_warning("[pick("Your head hurts.", "Your head pounds.")]")), rand(30,150))
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), onecoughman, span_warning("[pick("Your head hurts.", "Your head pounds.")]")), rand(30,150))
else
addtimer(CALLBACK(onecoughman, .mob/proc/emote, pick("cough", "sniff", "sneeze")), rand(30,150))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time
fake_virus_victims -= onecoughman
diff --git a/code/modules/events/fugitive_spawning.dm b/code/modules/events/fugitive_spawning.dm
index f529e09ff4c..4791101c608 100644
--- a/code/modules/events/fugitive_spawning.dm
+++ b/code/modules/events/fugitive_spawning.dm
@@ -56,7 +56,7 @@
//after spawning
playsound(src, 'sound/weapons/emitter.ogg', 50, TRUE)
new /obj/item/storage/toolbox/mechanical(landing_turf) //so they can actually escape maint
- addtimer(CALLBACK(src, .proc/spawn_hunters), 10 MINUTES)
+ addtimer(CALLBACK(src,PROC_REF(spawn_hunters)), 10 MINUTES)
role_name = "fugitive hunter"
return SUCCESSFUL_SPAWN
@@ -69,7 +69,7 @@
player_mind.special_role = "Fugitive"
player_mind.add_antag_datum(/datum/antagonist/fugitive)
var/datum/antagonist/fugitive/fugitiveantag = player_mind.has_antag_datum(/datum/antagonist/fugitive)
- INVOKE_ASYNC(fugitiveantag, /datum/antagonist/fugitive.proc/greet, backstory) //some fugitives have a sleep on their greet, so we don't want to stop the entire antag granting proc with fluff
+ INVOKE_ASYNC(fugitiveantag, TYPE_PROC_REF(/datum/antagonist/fugitive,greet), backstory) //some fugitives have a sleep on their greet, so we don't want to stop the entire antag granting proc with fluff
switch(backstory)
if("prisoner")
diff --git a/code/modules/events/ghost_role.dm b/code/modules/events/ghost_role.dm
index 25e71ab8c99..5dc858a6ca4 100644
--- a/code/modules/events/ghost_role.dm
+++ b/code/modules/events/ghost_role.dm
@@ -27,7 +27,7 @@
var/waittime = 300 * (2**retry)
message_admins("The event will not spawn a [role_name] until certain \
conditions are met. Waiting [waittime/10]s and then retrying.")
- addtimer(CALLBACK(src, .proc/try_spawning, 0, ++retry), waittime)
+ addtimer(CALLBACK(src,PROC_REF(try_spawning), 0, ++retry), waittime)
return
if(status == MAP_ERROR)
diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm
index 20f834d60ab..0aa7baf8bdb 100644
--- a/code/modules/events/immovable_rod.dm
+++ b/code/modules/events/immovable_rod.dm
@@ -144,7 +144,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
if(L && (L.density || prob(10)))
L.ex_act(EXPLODE_HEAVY)
-obj/effect/immovablerod/on_attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags)
+/obj/effect/immovablerod/on_attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags)
if(ishuman(user))
var/mob/living/carbon/human/U = user
if(U.job in list("Research Director"))
diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm
index 93b3564337e..4226b879a5d 100644
--- a/code/modules/events/pirates.dm
+++ b/code/modules/events/pirates.dm
@@ -53,8 +53,8 @@
// threat_msg.title = "Business proposition"
// threat_msg.content = "Ahoy! This be the [ship_name]. Cough up [payoff] credits or you'll walk the plank."
// threat_msg.possible_answers = list("We'll pay.","We will not be extorted.")
- threat_msg.answer_callback = CALLBACK(GLOBAL_PROC, .proc/pirates_answered, threat_msg, payoff, ship_name, initial_send_time, response_max_time, ship_template)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/spawn_pirates, threat_msg, ship_template, FALSE), response_max_time)
+ threat_msg.answer_callback = CALLBACK(usr, GLOBAL_PROC_REF(pirates_answered), threat_msg, payoff, ship_name, initial_send_time, response_max_time, ship_template)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(spawn_pirates), threat_msg, ship_template, FALSE), response_max_time)
SScommunications.send_message(threat_msg,unique = TRUE)
/proc/pirates_answered(datum/comm_message/threat_msg, payoff, ship_name, initial_send_time, response_max_time, ship_template)
@@ -222,7 +222,7 @@
. = ..()
if(. == DOCKING_SUCCESS && !is_reserved_level(new_dock.z))
engines_cooling = TRUE
- addtimer(CALLBACK(src,.proc/reset_cooldown),engine_cooldown,TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(reset_cooldown)),engine_cooldown,TIMER_UNIQUE)
/obj/docking_port/mobile/pirate/proc/reset_cooldown()
engines_cooling = FALSE
@@ -420,7 +420,7 @@
status_report = "Sending..."
pad.visible_message(span_notice("[pad] starts charging up."))
pad.icon_state = pad.warmup_state
- sending_timer = addtimer(CALLBACK(src,.proc/send),warmup_time, TIMER_STOPPABLE)
+ sending_timer = addtimer(CALLBACK(src,PROC_REF(send)),warmup_time, TIMER_STOPPABLE)
/obj/machinery/computer/piratepad_control/proc/stop_sending()
if(!sending)
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index f0735916f29..3444927373a 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -280,7 +280,7 @@
. = ..()
add_atom_colour("#ffffff", FIXED_COLOUR_PRIORITY)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm
index 5fb04e7f812..518f5e89fb7 100644
--- a/code/modules/events/wizard/greentext.dm
+++ b/code/modules/events/wizard/greentext.dm
@@ -35,7 +35,7 @@
/obj/item/greentext/Initialize(mapload)
. = ..()
GLOB.poi_list |= src
- roundend_callback = CALLBACK(src,.proc/check_winner)
+ roundend_callback = CALLBACK(src,PROC_REF(check_winner))
SSticker.OnRoundend(roundend_callback)
/obj/item/greentext/equipped(mob/living/user as mob)
diff --git a/code/modules/fallout/obj/campfire.dm b/code/modules/fallout/obj/campfire.dm
index 615c9a6ef65..a867c1e9b69 100644
--- a/code/modules/fallout/obj/campfire.dm
+++ b/code/modules/fallout/obj/campfire.dm
@@ -19,7 +19,7 @@
/obj/structure/campfire/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -63,7 +63,7 @@
/obj/structure/campfire/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
if(fired)
- INVOKE_ASYNC(src, .proc/burn_process)
+ INVOKE_ASYNC(src,PROC_REF(burn_process))
/obj/structure/campfire/process()
if(fuel <= 0)
diff --git a/code/modules/fallout/obj/explosives.dm b/code/modules/fallout/obj/explosives.dm
index 3529ae7e79e..906a7825f4f 100644
--- a/code/modules/fallout/obj/explosives.dm
+++ b/code/modules/fallout/obj/explosives.dm
@@ -115,7 +115,7 @@
/obj/item/mine/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -135,7 +135,7 @@
to_chat(user, span_danger("The mine is already armed!")) //how did we get here
if(user.dropItemToGround(src))
anchored = TRUE
- addtimer(CALLBACK(src, .proc/arm), 5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(arm)), 5 SECONDS)
to_chat(user, span_notice("You drop the mine and activate the 5-second arming process."))
return
@@ -164,7 +164,7 @@
if(arrived.movement_type & FLYING)
return
- INVOKE_ASYNC(src, .proc/triggermine, arrived)
+ INVOKE_ASYNC(src,PROC_REF(triggermine), arrived)
/obj/item/mine/proc/triggermine(mob/victim)
if(triggered)
diff --git a/code/modules/fallout/obj/rockitlauncher.dm b/code/modules/fallout/obj/rockitlauncher.dm
index 6a48b01cfe5..1348b26f432 100644
--- a/code/modules/fallout/obj/rockitlauncher.dm
+++ b/code/modules/fallout/obj/rockitlauncher.dm
@@ -228,8 +228,8 @@ Possible solution: Only add the minimum weight class of a stack (which is basica
var/settings = 1
/obj/item/pneumatic_cannon/rockitlauncher/Initialize()
- 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))
if(istype(loc, /obj/item/rockitlauncher_pack)) //We should spawn inside an ammo pack so let's use that one.
ammo_pack = loc
diff --git a/code/modules/fallout/obj/stack/f13Cash.dm b/code/modules/fallout/obj/stack/f13Cash.dm
index a6403f6828d..dfc443a86be 100644
--- a/code/modules/fallout/obj/stack/f13Cash.dm
+++ b/code/modules/fallout/obj/stack/f13Cash.dm
@@ -73,7 +73,7 @@
/obj/item/stack/f13Cash/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_ITEM_MOB_DROPPED, .proc/dingaling)
+ RegisterSignal(src, COMSIG_ITEM_MOB_DROPPED,PROC_REF(dingaling))
/obj/item/stack/f13Cash/attack_self(mob/user)
if (flippable)
diff --git a/code/modules/fallout/obj/structures/barrel.dm b/code/modules/fallout/obj/structures/barrel.dm
index 232734b428d..999914ffe6c 100644
--- a/code/modules/fallout/obj/structures/barrel.dm
+++ b/code/modules/fallout/obj/structures/barrel.dm
@@ -73,7 +73,7 @@
..() //extend the zap
boom()*/
-obj/structure/reagent_dispensers/barrel/explosive/bullet_act(obj/item/projectile/P)
+/obj/structure/reagent_dispensers/barrel/explosive/bullet_act(obj/item/projectile/P)
..()
if(!QDELETED(src)) //wasn't deleted by the projectile's effects.
if(!P.nodamage && ((P.damage_type == BURN) || (P.damage_type == BRUTE)))
diff --git a/code/modules/fallout/obj/structures/mob_spawners.dm b/code/modules/fallout/obj/structures/mob_spawners.dm
index f80eba33162..aa551fc21bd 100644
--- a/code/modules/fallout/obj/structures/mob_spawners.dm
+++ b/code/modules/fallout/obj/structures/mob_spawners.dm
@@ -149,7 +149,7 @@ GLOBAL_LIST_EMPTY(player_made_nests)
var/image/overlay_image = image(icon, icon_state = cover_state)
add_overlay(overlay_image)
if(timer)
- addtimer(CALLBACK(src, .proc/do_unseal), timer)
+ addtimer(CALLBACK(src,PROC_REF(do_unseal)), timer)
/obj/structure/nest/proc/try_unseal(mob/user = null, obj/item/I = null)
if(!istype(user))
diff --git a/code/modules/fallout/obj/structures/simple_door.dm b/code/modules/fallout/obj/structures/simple_door.dm
index 2adb2c50c50..c9650b96976 100644
--- a/code/modules/fallout/obj/structures/simple_door.dm
+++ b/code/modules/fallout/obj/structures/simple_door.dm
@@ -356,7 +356,7 @@
can_disasemble = TRUE
can_have_lock = TRUE
-obj/structure/simple_door/house/add_debris_element()
+/obj/structure/simple_door/house/add_debris_element()
AddElement(/datum/element/debris, DEBRIS_WOOD, -10, 5)
// cleaned and repainted white
diff --git a/code/modules/fallout/obj/structures/wasteplants.dm b/code/modules/fallout/obj/structures/wasteplants.dm
index 57ed575172a..d4602191959 100644
--- a/code/modules/fallout/obj/structures/wasteplants.dm
+++ b/code/modules/fallout/obj/structures/wasteplants.dm
@@ -46,7 +46,7 @@
density = 0
var/has_plod = TRUE
var/produce
- var/timer = 5000 //50 seconds
+ var/timer = 30 SECONDS
/obj/structure/flora/wasteplant/Destroy()
if(LAZYLEN(contents))
@@ -68,8 +68,7 @@
to_chat(user, span_notice("You pluck [product] from [src]."))
has_plod = FALSE
update_icon() //Won't update due to proc otherwise
- timer = initial(timer) + rand(-100,100) //add some variability
- addtimer(CALLBACK(src, .proc/regrow),timer) //Set up the timer properly
+ addtimer(CALLBACK(src,PROC_REF(regrow)),timer) //Set up the timer properly
update_icon()
/obj/structure/flora/wasteplant/proc/regrow()
@@ -136,7 +135,7 @@
desc = "The sacred datura root, useful as an anesthetic for surgery and in healing salves, as well as for rites of passage rituals and ceremonies"
produce = /obj/item/reagent_containers/food/snacks/grown/datura
-obj/structure/flora/wasteplant/wild_punga
+/obj/structure/flora/wasteplant/wild_punga
name = "wild punga"
icon_state = "wild_punga"
desc = "Punga fruit plants flower at a single point at the terminus of their stems, gradually developing into large, fleshy fruits with a yellow/brown, thick skin."
diff --git a/code/modules/fallout/obj/structures/well.dm b/code/modules/fallout/obj/structures/well.dm
index f929e4a3853..ea71f460279 100644
--- a/code/modules/fallout/obj/structures/well.dm
+++ b/code/modules/fallout/obj/structures/well.dm
@@ -17,7 +17,7 @@
if(!moving)
moving = TRUE
flick("wellwheel-filling", src)
- addtimer(CALLBACK(src, .proc/Reset), using_time)
+ addtimer(CALLBACK(src,PROC_REF(Reset)), using_time)
return
/obj/structure/sink/well/proc/Reset()
diff --git a/code/modules/fallout/obj/trash/electronics.dm b/code/modules/fallout/obj/trash/electronics.dm
index 6922a5fc49b..6648ea3e742 100644
--- a/code/modules/fallout/obj/trash/electronics.dm
+++ b/code/modules/fallout/obj/trash/electronics.dm
@@ -61,7 +61,7 @@
playsound(get_turf(src), "sparks", 40, 1)
if(cell && cell.charge)
U.electrocute_act(fork_damage,src)
- addtimer(CALLBACK(src,.proc/spew_contents), rand(5,15))
+ addtimer(CALLBACK(src,PROC_REF(spew_contents)), rand(5,15))
is_toasting = 0
return
@@ -85,7 +85,7 @@
if(user.transferItemToLoc(W, src))
U.visible_message(span_notice("[user] slides [W] smoothly into [src]."), span_notice("You slide [W] smoothly into [src]."))
is_toasting = 1
- addtimer(CALLBACK(src,.proc/toasterize),toast_time)
+ addtimer(CALLBACK(src,PROC_REF(toasterize)),toast_time)
return
to_chat(user, span_warning("Try as you might, you can't get [W] to fit into [src]."))
diff --git a/code/modules/fallout/turf/walls.dm b/code/modules/fallout/turf/walls.dm
index ae22984fa55..4756e400b26 100644
--- a/code/modules/fallout/turf/walls.dm
+++ b/code/modules/fallout/turf/walls.dm
@@ -87,7 +87,7 @@
set_opacity(0)
..()
-turf/closed/wall/f13/wood/house/update_damage_overlay()
+/turf/closed/wall/f13/wood/house/update_damage_overlay()
if(broken)
return
..()
@@ -376,7 +376,7 @@ turf/closed/wall/f13/wood/house/update_damage_overlay()
var/tickerPeriod = 300 //in deciseconds
var/go/fullDark
-turf/closed/indestructible/f13/splashscreen/New()
+/turf/closed/indestructible/f13/splashscreen/New()
.=..()
name = "Fallout 13"
desc = "The wasteland is calling!"
@@ -394,7 +394,7 @@ turf/closed/indestructible/f13/splashscreen/New()
spawn() src.ticker()
return
-turf/closed/indestructible/f13/splashscreen/proc/ticker()
+/turf/closed/indestructible/f13/splashscreen/proc/ticker()
while(src && istype(src,/turf/closed/indestructible/f13/splashscreen))
src.swapImage()
sleep(src.tickerPeriod)
diff --git a/code/modules/farming/farming_structures.dm b/code/modules/farming/farming_structures.dm
index 1d02662e106..ec29515d689 100644
--- a/code/modules/farming/farming_structures.dm
+++ b/code/modules/farming/farming_structures.dm
@@ -61,7 +61,7 @@
to_chat(user, span_warning("[I] is stuck to your hand!"))
return TRUE
to_chat(user, span_notice("You place [I] into [src] to start the fermentation process."))
- addtimer(CALLBACK(src, .proc/makeWine, list(fruit)), rand(8 SECONDS, 12 SECONDS) * speed_multiplier)
+ addtimer(CALLBACK(src,PROC_REF(makeWine), list(fruit)), rand(8 SECONDS, 12 SECONDS) * speed_multiplier)
return TRUE
else if(SEND_SIGNAL(I, COMSIG_CONTAINS_STORAGE) && do_after(user, 2 SECONDS, target = src))
var/list/storage_contents = list()
@@ -73,7 +73,7 @@
continue
fruits += fruit
if (length(fruits))
- addtimer(CALLBACK(src, .proc/makeWine, fruits), rand(8 SECONDS, 12 SECONDS) * speed_multiplier)
+ addtimer(CALLBACK(src,PROC_REF(makeWine), fruits), rand(8 SECONDS, 12 SECONDS) * speed_multiplier)
to_chat(user, span_notice("You fill \the [src] from \the [I] and start the fermentation process."))
else
to_chat(user, span_warning("There's nothing in \the [I] that you can ferment!"))
diff --git a/code/modules/fields/fields.dm b/code/modules/fields/fields.dm
index 8a14befcac6..d9ba053a349 100644
--- a/code/modules/fields/fields.dm
+++ b/code/modules/fields/fields.dm
@@ -306,7 +306,7 @@
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
listeningTo = null
if(!istype(current) && operating)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(on_mob_move))
listeningTo = user
setup_debug_field()
else if(!operating)
diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm
index 86495536028..0cf89dcaad6 100644
--- a/code/modules/fields/timestop.dm
+++ b/code/modules/fields/timestop.dm
@@ -33,7 +33,7 @@
if(G.summoner && locate(/obj/effect/proc_holder/spell/aoe_turf/timestop) in G.summoner.mind.spell_list) //It would only make sense that a person's stand would also be immune.
immune[G] = TRUE
if(start)
- INVOKE_ASYNC(src, .proc/timestop) // ironic...
+ INVOKE_ASYNC(src,PROC_REF(timestop)) // ironic...
/obj/effect/timestop/Destroy()
qdel(chronofield)
@@ -100,8 +100,8 @@
A.move_resist = INFINITY
global_frozen_atoms[A] = src
into_the_negative_zone(A)
- RegisterSignal(A, COMSIG_MOVABLE_PRE_MOVE, .proc/unfreeze_atom)
- RegisterSignal(A, COMSIG_ITEM_PICKUP, .proc/unfreeze_atom)
+ RegisterSignal(A, COMSIG_MOVABLE_PRE_MOVE,PROC_REF(unfreeze_atom))
+ RegisterSignal(A, COMSIG_ITEM_PICKUP,PROC_REF(unfreeze_atom))
return TRUE
diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm
index e0b66768695..2a645a81e08 100644
--- a/code/modules/flufftext/Dreaming.dm
+++ b/code/modules/flufftext/Dreaming.dm
@@ -60,6 +60,6 @@
dream_fragments.Cut(1,2)
to_chat(src, span_notice("... [next_message] ..."))
if(LAZYLEN(dream_fragments))
- addtimer(CALLBACK(src, .proc/dream_sequence, dream_fragments), rand(10,30))
+ addtimer(CALLBACK(src,PROC_REF(dream_sequence), dream_fragments), rand(10,30))
else
dreaming = FALSE
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 3cedb6c5c44..10b0e1d418e 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -286,7 +286,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
target.client.images |= fakerune
target.playsound_local(wall,'sound/effects/meteorimpact.ogg', 150, 1)
bubblegum = new(wall, target)
- addtimer(CALLBACK(src, .proc/bubble_attack, landing), 10)
+ addtimer(CALLBACK(src,PROC_REF(bubble_attack), landing), 10)
/datum/hallucination/oh_yeah/proc/bubble_attack(turf/landing)
var/charged = FALSE //only get hit once
@@ -330,10 +330,10 @@ GLOBAL_LIST_INIT(hallucination_list, list(
for(var/i in 1 to rand(5, 10))
target.playsound_local(source, 'sound/weapons/laser.ogg', 25, 1)
if(prob(50))
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/sear.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/,playsound_local), source, 'sound/weapons/sear.ogg', 25, 1), rand(5,10))
hits++
else
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/,playsound_local), source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10))
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6))
if(hits >= 4 && prob(70))
target.playsound_local(source, get_sfx("bodyfall"), 25, 1)
@@ -343,10 +343,10 @@ GLOBAL_LIST_INIT(hallucination_list, list(
for(var/i in 1 to rand(5, 10))
target.playsound_local(source, 'sound/weapons/taser2.ogg', 25, 1)
if(prob(50))
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/tap.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/,playsound_local), source, 'sound/weapons/tap.ogg', 25, 1), rand(5,10))
hits++
else
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/,playsound_local), source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10))
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6))
if(hits >= 3 && prob(70))
target.playsound_local(source, get_sfx("bodyfall"), 25, 1)
@@ -364,10 +364,10 @@ GLOBAL_LIST_INIT(hallucination_list, list(
for(var/i in 1 to rand(3, 6))
target.playsound_local(source, get_sfx("gunshot"), 25)
if(prob(60))
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/pierce.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/,playsound_local), source, 'sound/weapons/pierce.ogg', 25, 1), rand(5,10))
hits++
else
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, "ricochet", 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/,playsound_local), source, "ricochet", 25, 1), rand(5,10))
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6))
if(hits >= 2 && prob(80))
target.playsound_local(source, get_sfx("bodyfall"), 25, 1)
@@ -1075,7 +1075,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
/obj/effect/hallucination/danger/lava/Initialize(mapload, _target)
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -1088,7 +1088,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
/obj/effect/hallucination/danger/lava/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
if(AM == target)
- INVOKE_ASYNC(target, /mob/living/.proc/adjustStaminaLoss, 20)
+ INVOKE_ASYNC(target, TYPE_PROC_REF(/mob/living/,adjustStaminaLoss), 20)
new /datum/hallucination/fire(target)
/obj/effect/hallucination/danger/chasm
@@ -1097,7 +1097,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
/obj/effect/hallucination/danger/chasm/Initialize(mapload, _target)
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -1114,7 +1114,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
return
to_chat(target, span_userdanger("You fall into the chasm!"))
target.DefaultCombatKnockdown(40)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, target, span_notice("It's surprisingly shallow.")), 15)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), target, span_notice("It's surprisingly shallow.")), 15)
QDEL_IN(src, 30)
/obj/effect/hallucination/danger/anomaly
@@ -1124,7 +1124,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
. = ..()
START_PROCESSING(SSobj, src)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -1243,13 +1243,13 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(target.client)
target.client.images |= shock_image
target.client.images |= electrocution_skeleton_anim
- addtimer(CALLBACK(src, .proc/reset_shock_animation), 40)
+ addtimer(CALLBACK(src,PROC_REF(reset_shock_animation)), 40)
target.playsound_local(get_turf(src), "sparks", 100, 1)
target.staminaloss += 50
target.Stun(40)
target.jitteriness += 1000
target.do_jitter_animation(target.jitteriness)
- addtimer(CALLBACK(src, .proc/shock_drop), 20)
+ addtimer(CALLBACK(src,PROC_REF(shock_drop)), 20)
/datum/hallucination/shock/proc/reset_shock_animation()
if(target.client)
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index 7f03e4454ce..53b5ef9645f 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -23,13 +23,13 @@
gulp_size = max(round(reagents.total_volume / 5), 5)
/obj/item/reagent_containers/food/drinks/take_a_bellybite(datum/source, obj/vore_belly/gut, mob/living/vorer)
- INVOKE_ASYNC(src, .proc/attempt_forcedrink, vorer, vorer, TRUE, TRUE, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(attempt_forcedrink), vorer, vorer, TRUE, TRUE, TRUE)
if(gut.can_taste)
checkLiked(min(gulp_size/reagents.total_volume, 1), vorer)
return TRUE
/obj/item/reagent_containers/food/drinks/attack(mob/living/M, mob/user, def_zone)
- INVOKE_ASYNC(src, .proc/attempt_forcedrink, M, user)
+ INVOKE_ASYNC(src,PROC_REF(attempt_forcedrink), M, user)
/obj/item/reagent_containers/food/drinks/proc/attempt_forcedrink(mob/living/M, mob/user, force, silent, vorebite)
if(!reagents || !reagents.total_volume)
@@ -91,7 +91,7 @@
if(iscyborg(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
var/mob/living/silicon/robot/bro = user
bro.cell.use(30)
- addtimer(CALLBACK(reagents, /datum/reagents.proc/add_reagent, refill, trans), 600)
+ addtimer(CALLBACK(reagents, TYPE_PROC_REF(/datum/reagents,add_reagent), refill, trans), 600)
else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us.
if (!is_refillable())
@@ -540,10 +540,10 @@
/obj/item/reagent_containers/food/drinks/soda_cans/take_a_bellybite(datum/source, obj/vore_belly/gut, mob/living/vorer)
if(!is_drainable())
- INVOKE_ASYNC(src, .proc/pop_top, vorer, vorer, TRUE, TRUE, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(pop_top), vorer, vorer, TRUE, TRUE, TRUE)
return TRUE
if(!reagents.total_volume)
- INVOKE_ASYNC(src, .proc/crush_can, vorer, vorer, TRUE, TRUE, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(crush_can), vorer, vorer, TRUE, TRUE, TRUE)
return TRUE
return ..()
diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
index c0422660edd..698c253542a 100644
--- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
@@ -112,7 +112,7 @@
list_reagents = list(/datum/reagent/consumable/nukaberry = 50)
foodtype = NUKA
-obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_float
+/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_float
name = "Cosmic Float"
list_reagents = list(/datum/reagent/consumable/nukafloat = 50)
foodtype = NUKA
diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm
index 22b5958f1c6..b58fd72f434 100644
--- a/code/modules/food_and_drinks/food.dm
+++ b/code/modules/food_and_drinks/food.dm
@@ -25,7 +25,7 @@
/obj/item/reagent_containers/food/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_VORE_ATOM_DIGESTED, .proc/take_a_bellybite)
+ RegisterSignal(src, COMSIG_VORE_ATOM_DIGESTED,PROC_REF(take_a_bellybite))
/obj/item/reagent_containers/food/proc/adjust_food_quality(new_quality)
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index 70dfbc1b905..900f1bcc918 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -103,7 +103,7 @@ All foods are distributed among various categories. Use common sense.
return
/obj/item/reagent_containers/food/snacks/take_a_bellybite(datum/source, obj/vore_belly/gut, mob/living/vorer)
- INVOKE_ASYNC(src, .proc/attempt_forcefeed, vorer, vorer, TRUE, TRUE, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(attempt_forcefeed), vorer, vorer, TRUE, TRUE, TRUE)
if(gut.can_taste)
checkLiked(min(bitesize / reagents.total_volume, 1), vorer)
return TRUE
@@ -111,7 +111,7 @@ All foods are distributed among various categories. Use common sense.
/obj/item/reagent_containers/food/snacks/attack(mob/living/M, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1)
if(user.a_intent == INTENT_HARM)
return ..()
- INVOKE_ASYNC(src, .proc/attempt_forcefeed, M, user)
+ INVOKE_ASYNC(src,PROC_REF(attempt_forcefeed), M, user)
/obj/item/reagent_containers/food/snacks/proc/attempt_forcefeed(mob/living/M, mob/living/user, forced, silent, vorebite)
if(!eatverb)
@@ -175,7 +175,8 @@ All foods are distributed among various categories. Use common sense.
M.visible_message(
span_notice("[M] unwillingly [eatverb]s \the [src]."),
span_notice("You unwillingly [eatverb] \the [src]."))
- if((600 * (1 + M.overeatduration / 1000)) to INFINITY)
+ //if((600 * (1 + M.overeatduration / 1000)) to INFINITY) // Had to change this to a const, sorry if it don't work! Can convert it to an if else statemetnt but I'm lazy.
+ if(650 to INFINITY)
if(HAS_TRAIT(M, TRAIT_VORACIOUS))
M.visible_message(
span_notice("[M] gluttonously [eatverb]s \the [src], cramming it down [M.p_their()] throat!"),
diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm
index 106ac459892..0cf8c4d23a6 100644
--- a/code/modules/food_and_drinks/food/snacks_cake.dm
+++ b/code/modules/food_and_drinks/food/snacks_cake.dm
@@ -307,7 +307,7 @@
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
foodtype = GRAIN | DAIRY | SUGAR
-obj/item/reagent_containers/food/snacks/store/cake/pound_cake
+/obj/item/reagent_containers/food/snacks/store/cake/pound_cake
name = "pound cake"
desc = "A condensed cake made for filling people up quickly."
icon_state = "pound_cake"
diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm
index c2141bab28e..02c601e59a6 100644
--- a/code/modules/food_and_drinks/food/snacks_other.dm
+++ b/code/modules/food_and_drinks/food/snacks_other.dm
@@ -441,7 +441,7 @@
/obj/item/reagent_containers/food/snacks/lollipop/cyborg/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/spamcheck), 1200)
+ addtimer(CALLBACK(src,PROC_REF(spamcheck)), 1200)
/obj/item/reagent_containers/food/snacks/lollipop/cyborg/equipped(mob/living/user, slot)
. = ..(user, slot)
@@ -469,7 +469,7 @@
/obj/item/reagent_containers/food/snacks/gumball/cyborg/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/spamcheck), 1200)
+ addtimer(CALLBACK(src,PROC_REF(spamcheck)), 1200)
/obj/item/reagent_containers/food/snacks/gumball/cyborg/equipped(mob/living/user, slot)
. = ..(user, slot)
diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm
index a6c2b8ed2c2..a35cc774560 100644
--- a/code/modules/food_and_drinks/food/snacks_pastry.dm
+++ b/code/modules/food_and_drinks/food/snacks_pastry.dm
@@ -490,7 +490,7 @@
for(var/R in S.bonus_reagents)
LAZYSET(S.cached_reagents_amount, R, S.reagents.get_reagent_amount(R))
S.previous_typepath = type
- addtimer(CALLBACK(S, .proc/cool_down), 7 MINUTES) //canonically they reverted back to normal after 7 minutes.
+ addtimer(CALLBACK(S,PROC_REF(cool_down)), 7 MINUTES) //canonically they reverted back to normal after 7 minutes.
/obj/item/reagent_containers/food/snacks/donkpocket/proc/cool_down()
if(!previous_typepath) //This shouldn't happen.
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index 7bcbc409f41..d54c59caa37 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -197,7 +197,7 @@
mob_occupant.death(1)
mob_occupant.ghostize()
qdel(src.occupant)
- addtimer(CALLBACK(src, .proc/make_meat, skin, allmeat, meat_produced, gibtype, diseases), gibtime)
+ addtimer(CALLBACK(src,PROC_REF(make_meat), skin, allmeat, meat_produced, gibtype, diseases), gibtime)
/obj/machinery/gibber/proc/make_meat(obj/item/stack/sheet/animalhide/skin, list/obj/item/reagent_containers/food/snacks/meat/slab/allmeat, meat_produced, gibtype, list/datum/disease/diseases)
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index d098fe48797..df5f51c1125 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -312,7 +312,7 @@
return
time--
use_power(500)
- addtimer(CALLBACK(src, .proc/loop, type, time, wait), wait)
+ addtimer(CALLBACK(src,PROC_REF(loop), type, time, wait), wait)
/obj/machinery/microwave/proc/loop_finish()
operating = FALSE
diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
index ca32971bd01..e57b2018506 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
@@ -70,7 +70,7 @@
use_power(500)
grinded++
addtimer(VARSET_CALLBACK(src, pixel_x, initial(pixel_x)))
- addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, span_notice("The machine now has [grinded] monkey\s worth of material stored.")))
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), user, span_notice("The machine now has [grinded] monkey\s worth of material stored.")))
/obj/machinery/monkey_recycler/interact(mob/user)
if(grinded >= required_grind)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index bf4a9dbd811..0b9b6821f35 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -616,7 +616,7 @@
/obj/machinery/smartfridge/bottlerack/gardentool/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src,PROC_REF(can_be_rotated)))
// Preloaded simple farming rack for mapping
/obj/machinery/smartfridge/bottlerack/gardentool/primitive
diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm
index d4eadb0ebbf..fe901495aa2 100644
--- a/code/modules/holiday/holidays.dm
+++ b/code/modules/holiday/holidays.dm
@@ -577,7 +577,7 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and
return "Have a merry Christmas!"
/datum/holiday/xmas/celebrate()
- SSticker.OnRoundstart(CALLBACK(src, .proc/roundstart_celebrate))
+ SSticker.OnRoundstart(CALLBACK(src,PROC_REF(roundstart_celebrate)))
/datum/holiday/xmas/proc/roundstart_celebrate()
for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in GLOB.machines)
diff --git a/code/modules/holiday/party_time.dm b/code/modules/holiday/party_time.dm
index 181991d5f06..7aa69acdc0a 100644
--- a/code/modules/holiday/party_time.dm
+++ b/code/modules/holiday/party_time.dm
@@ -148,7 +148,7 @@ GLOBAL_LIST_EMPTY(party_landmarks)
return FALSE
for(var/mob/living/seer in range(10, src))
seer.overlay_fullscreen("flash", type, 2)
- addtimer(CALLBACK(seer, /mob/living.proc/clear_fullscreen, "flash", 25), 2.5 SECONDS)
+ addtimer(CALLBACK(seer, TYPE_PROC_REF(/mob/living,clear_fullscreen), "flash", 25), 2.5 SECONDS)
for(var/turf/blocker in block(locate(x + template.width*0.5,y + template.height*0.5,z),locate(x - template.width*0.5,y - template.height*0.5,z)))
for(var/atom/movable/AM in blocker)
if(!AM.anchored)
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index 1a320ec7df4..a51a80234da 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -220,7 +220,7 @@
if(toggleOn)
if(last_program && last_program != offline_program)
- addtimer(CALLBACK(src, .proc/load_program, last_program, TRUE), 25)
+ addtimer(CALLBACK(src,PROC_REF(load_program), last_program, TRUE), 25)
active = TRUE
else
last_program = program
@@ -280,7 +280,7 @@
S.flags_1 |= NODECONSTRUCT_1
effects = list()
- addtimer(CALLBACK(src, .proc/finish_spawn), 30)
+ addtimer(CALLBACK(src,PROC_REF(finish_spawn)), 30)
/obj/machinery/computer/holodeck/proc/finish_spawn()
var/list/added = list()
@@ -300,7 +300,7 @@
// Emagging a machine creates an anomaly in the derez systems.
if(O && (obj_flags & EMAGGED) && !stat && !forced)
if((ismob(O) || ismob(O.loc)) && prob(50))
- addtimer(CALLBACK(src, .proc/derez, O, silent), 50) // may last a disturbingly long time
+ addtimer(CALLBACK(src,PROC_REF(derez), O, silent), 50) // may last a disturbingly long time
return
spawned -= O
@@ -328,7 +328,7 @@
if(O && !stat && !forced)
if((ismob(O) || ismob(O.loc)))
- addtimer(CALLBACK(src, .proc/derez, O, silent), 200) // We want virtual objects to last a long time.
+ addtimer(CALLBACK(src,PROC_REF(derez), O, silent), 200) // We want virtual objects to last a long time.
return
spawned -= O
diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm
index e2e75b99de1..61abd24d423 100644
--- a/code/modules/holodeck/turfs.dm
+++ b/code/modules/holodeck/turfs.dm
@@ -111,7 +111,7 @@
/turf/open/floor/holofloor/carpet/Initialize()
. = ..()
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 1)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,update_icon)), 1)
/turf/open/floor/holofloor/carpet/update_icon()
. = ..()
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index 688e1ee0ef1..d2fe26d0616 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -178,7 +178,7 @@
C.throw_mode_on()
icon_state = "firelemon_active"
playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
- addtimer(CALLBACK(src, .proc/prime), rand(10, 60))
+ addtimer(CALLBACK(src,PROC_REF(prime)), rand(10, 60))
/obj/item/reagent_containers/food/snacks/grown/firelemon/burn()
prime()
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index 3dd00c1466d..d7a2f29b243 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -67,7 +67,7 @@
var/uses = 1
if(seed)
uses = round(seed.potency / 20)
- AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, INV_SLOTBIT_HANDS, uses, TRUE, CALLBACK(src, .proc/block_magic), CALLBACK(src, .proc/expire)) //deliver us from evil o melon god
+ AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, INV_SLOTBIT_HANDS, uses, TRUE, CALLBACK(src,PROC_REF(block_magic)), CALLBACK(src,PROC_REF(expire))) //deliver us from evil o melon god
/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/block_magic(mob/user, major)
if(major)
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
index 07c965f2116..d11cb8e7e7b 100644
--- a/code/modules/hydroponics/grown/misc.dm
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -352,7 +352,7 @@
fusedactive = TRUE
defused = FALSE
playsound(src, 'sound/effects/fuse.ogg', 100, 0)
- addtimer(CALLBACK(src, .proc/prime), 5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(prime)), 5 SECONDS)
icon_state = "coconut_grenade_active"
desc = "RUN!"
if(!seed.get_gene(/datum/plant_gene/trait/glow))
@@ -467,7 +467,7 @@
to_chat(user, span_notice("You swallow a gulp of [src]."))
var/fraction = min(5/reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
- addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5), 5)
+ addtimer(CALLBACK(reagents, TYPE_PROC_REF(/datum/reagents,trans_to), M, 5), 5)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
/obj/item/reagent_containers/food/snacks/grown/coconut/afterattack(obj/target, mob/user, proximity)
diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm
index 485db30ee38..ff4fc2a6b7d 100644
--- a/code/modules/hydroponics/grown/towercap.dm
+++ b/code/modules/hydroponics/grown/towercap.dm
@@ -203,7 +203,7 @@
/obj/structure/bonfire/prelit/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -212,7 +212,7 @@
/obj/structure/bonfire/dense/prelit/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -340,7 +340,7 @@
/obj/structure/bonfire/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
if(burning & !grill)
- INVOKE_ASYNC(src, .proc/Burn)
+ INVOKE_ASYNC(src,PROC_REF(Burn))
/obj/structure/bonfire/proc/Burn()
var/turf/current_location = get_turf(src)
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index 101dcc1b499..3f85f95a18f 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -243,7 +243,7 @@
if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube)))
stun_len /= 3
- G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, .proc/handle_slip, G))
+ G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src,PROC_REF(handle_slip), G))
/datum/plant_gene/trait/slip/proc/handle_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/M)
for(var/datum/plant_gene/trait/T in G.seed.genes)
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index db3e04c4ad0..f6caf3237b8 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -106,7 +106,7 @@
S.reagents_add = reagents_add.Copy() // Faster than grabbing the list from genes.
return S
-obj/item/seeds/proc/is_gene_forbidden(typepath)
+/obj/item/seeds/proc/is_gene_forbidden(typepath)
return (typepath in forbiddengenes)
diff --git a/code/modules/instruments/instrument_data/_instrument_data.dm b/code/modules/instruments/instrument_data/_instrument_data.dm
index 447bcdffb1a..97c9e4b25da 100644
--- a/code/modules/instruments/instrument_data/_instrument_data.dm
+++ b/code/modules/instruments/instrument_data/_instrument_data.dm
@@ -83,7 +83,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/instruments/item.dm b/code/modules/instruments/instruments/item.dm
index 0caa1843a35..5bdfdc2e012 100644
--- a/code/modules/instruments/instruments/item.dm
+++ b/code/modules/instruments/instruments/item.dm
@@ -357,7 +357,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 828178fcbe9..4d84fa0ae55 100644
--- a/code/modules/instruments/songs/editor.dm
+++ b/code/modules/instruments/songs/editor.dm
@@ -161,7 +161,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(input("Enter your line: ", parent.name) as text|null)
diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm
index ff01ff5c7ab..98662474bad 100644
--- a/code/modules/integrated_electronics/core/printer.dm
+++ b/code/modules/integrated_electronics/core/printer.dm
@@ -287,7 +287,7 @@
to_chat(usr, "You begin printing a custom assembly. This will take approximately [DisplayTimeText(cloning_time)]. You can still print \
off normal parts during this time.")
playsound(src, 'sound/items/poster_being_created.ogg', 50, TRUE)
- addtimer(CALLBACK(src, .proc/print_program, usr), cloning_time)
+ addtimer(CALLBACK(src,PROC_REF(print_program), usr), cloning_time)
if("cancel")
if(!cloning || !program)
diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm
index d575357a911..20919b9d3f7 100644
--- a/code/modules/integrated_electronics/subtypes/manipulation.dm
+++ b/code/modules/integrated_electronics/subtypes/manipulation.dm
@@ -342,7 +342,7 @@
assembly.visible_message(span_danger("[assembly] has thrown [A]!"))
log_attack("[assembly] [REF(assembly)] has thrown [A] with non-lethal force.")
A.forceMove(drop_location())
- A.throw_at(locate(x_abs, y_abs, T.z), range, 3, null, null, null, CALLBACK(src, .proc/post_throw, A))
+ A.throw_at(locate(x_abs, y_abs, T.z), range, 3, null, null, null, CALLBACK(src,PROC_REF(post_throw), A))
// If the item came from a grabber now we can update the outputs since we've thrown it.
if(istype(G))
@@ -417,7 +417,7 @@
)
/obj/item/integrated_circuit/manipulation/matman/ComponentInitialize()
- var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, mtypes, 100000, FALSE, /obj/item/stack, CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
+ var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, mtypes, 100000, FALSE, /obj/item/stack, CALLBACK(src,PROC_REF(is_insertion_ready)), CALLBACK(src,PROC_REF(AfterMaterialInsert)))
materials.precise_insertion = TRUE
.=..()
diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm
index 3a129f97371..5c18e44859c 100644
--- a/code/modules/integrated_electronics/subtypes/output.dm
+++ b/code/modules/integrated_electronics/subtypes/output.dm
@@ -324,7 +324,7 @@
oldLoc = get_turf(oldLoc)
if(!QDELETED(camera) && !updating && oldLoc != get_turf(src))
updating = TRUE
- addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), VIDEO_CAMERA_BUFFER)
+ addtimer(CALLBACK(src,PROC_REF(do_camera_update), oldLoc), VIDEO_CAMERA_BUFFER)
#undef VIDEO_CAMERA_BUFFER
/obj/item/integrated_circuit/output/video_camera/proc/do_camera_update(oldLoc)
diff --git a/code/modules/integrated_electronics/subtypes/time.dm b/code/modules/integrated_electronics/subtypes/time.dm
index 724f8575acc..c8092b1ffc1 100644
--- a/code/modules/integrated_electronics/subtypes/time.dm
+++ b/code/modules/integrated_electronics/subtypes/time.dm
@@ -17,7 +17,7 @@
power_draw_per_use = 2
/obj/item/integrated_circuit/time/delay/do_work()
- addtimer(CALLBACK(src, .proc/activate_pin, 2), delay)
+ addtimer(CALLBACK(src,PROC_REF(activate_pin), 2), delay)
/obj/item/integrated_circuit/time/delay/five_sec
name = "five-sec delay circuit"
@@ -98,7 +98,7 @@
/obj/item/integrated_circuit/time/ticker/proc/tick()
if(is_running)
- 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/integrated_electronics/subtypes/weaponized.dm b/code/modules/integrated_electronics/subtypes/weaponized.dm
index 61fb69052e4..11d282adbdc 100644
--- a/code/modules/integrated_electronics/subtypes/weaponized.dm
+++ b/code/modules/integrated_electronics/subtypes/weaponized.dm
@@ -197,7 +197,7 @@
dt = clamp(detonation_time.data, 1, 12)*10
else
dt = 15
- addtimer(CALLBACK(attached_grenade, /obj/item/grenade.proc/prime), dt)
+ addtimer(CALLBACK(attached_grenade, TYPE_PROC_REF(/obj/item/grenade,prime)), dt)
var/atom/holder = loc
message_admins("activated a grenade assembly. Last touches: Assembly: [holder.fingerprintslast] Circuit: [fingerprintslast] Grenade: [attached_grenade.fingerprintslast]")
diff --git a/code/modules/interview/interview.dm b/code/modules/interview/interview.dm
index 5d843c56a0e..7771a5d7da6 100644
--- a/code/modules/interview/interview.dm
+++ b/code/modules/interview/interview.dm
@@ -65,7 +65,7 @@
SEND_SOUND(owner, sound('sound/effects/adminnotification.ogg'))
to_chat(owner, "-- Interview Update --" \
+ "\n[span_adminsay("Your interview was approved, you will now be reconnected in 5 seconds.")]", confidential = TRUE)
- addtimer(CALLBACK(src, .proc/reconnect_owner), 50)
+ addtimer(CALLBACK(src,PROC_REF(reconnect_owner)), 50)
/**
* Denies the interview and adds the owner to the cooldown for new interviews.
@@ -80,7 +80,7 @@
GLOB.interviews.cooldown_ckeys |= owner_ckey
log_admin_private("[key_name(denied_by)] has denied interview #[id] for [owner_ckey][!owner ? "(DC)": ""].")
message_admins(span_adminnotice("[key_name(denied_by)] has denied [link_self()] for [owner_ckey][!owner ? "(DC)": ""]."))
- addtimer(CALLBACK(GLOB.interviews, /datum/interview_manager.proc/release_from_cooldown, owner_ckey), 180)
+ addtimer(CALLBACK(GLOB.interviews, TYPE_PROC_REF(/datum/interview_manager,release_from_cooldown), owner_ckey), 180)
if (owner)
SEND_SOUND(owner, sound('sound/effects/adminnotification.ogg'))
to_chat(owner, "-- Interview Update --" \
diff --git a/code/modules/jobs/job_types/SS13/captain.dm b/code/modules/jobs/job_types/SS13/captain.dm
index dcaa037ebfd..228f9f1efe1 100644
--- a/code/modules/jobs/job_types/SS13/captain.dm
+++ b/code/modules/jobs/job_types/SS13/captain.dm
@@ -37,7 +37,7 @@
/datum/job/captain/announce(mob/living/carbon/human/H)
..()
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "Captain [H.real_name] on deck!"))
+ SSticker.OnRoundstart(CALLBACK(usr, GLOBAL_PROC_REF(minor_announce), "Captain [H.real_name] on deck!"))
/datum/outfit/job/captain
name = "Captain"
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index 395f15be17e..15fb059370a 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -215,7 +215,7 @@
/datum/job/proc/announce_head(mob/living/carbon/human/H, channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels.
if(H && GLOB.announcement_systems.len)
//timer because these should come after the captain announcement
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/_addtimer, CALLBACK(pick(GLOB.announcement_systems), /obj/machinery/announcement_system/proc/announce, "NEWHEAD", H.real_name, H.job, channels), 1))
+ SSticker.OnRoundstart(CALLBACK(usr, GLOBAL_PROC_REF(_addtimer), CALLBACK(pick(GLOB.announcement_systems), /obj/machinery/announcement_system/proc/announce, "NEWHEAD", H.real_name, H.job, channels), 1))
//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1
/datum/job/proc/player_old_enough(client/C)
diff --git a/code/modules/jobs/job_types/legion.dm b/code/modules/jobs/job_types/legion.dm
index 89325e36ffc..7c37ce7228f 100644
--- a/code/modules/jobs/job_types/legion.dm
+++ b/code/modules/jobs/job_types/legion.dm
@@ -1306,7 +1306,7 @@ Venator - Zero slots, role built on cloning vet ranger, linear just vastly bett
// Slavemaster
-datum/job/CaesarsLegion/Legionnaire/f13slavemaster
+/datum/job/CaesarsLegion/Legionnaire/f13slavemaster
title = "Legion Slavemaster"
flag = F13SLAVEMASTER
total_positions = 1
diff --git a/code/modules/jobs/job_types/silicon.dm b/code/modules/jobs/job_types/silicon.dm
index a544a264fca..31b2c8589e9 100644
--- a/code/modules/jobs/job_types/silicon.dm
+++ b/code/modules/jobs/job_types/silicon.dm
@@ -69,7 +69,7 @@ AI
/datum/job/ai/announce(mob/living/silicon/ai/AI)
. = ..()
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)]."))
+ SSticker.OnRoundstart(CALLBACK(usr, GLOBAL_PROC_REF(minor_announce), "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)]."))
/datum/job/ai/config_check()
return CONFIG_GET(flag/allow_ai)
diff --git a/code/modules/jobs/job_types/wasteland.dm b/code/modules/jobs/job_types/wasteland.dm
index c4406e03118..15c120167ef 100644
--- a/code/modules/jobs/job_types/wasteland.dm
+++ b/code/modules/jobs/job_types/wasteland.dm
@@ -1729,7 +1729,7 @@ Raider
DM.add_member(H)
H.gang = DM
-datum/job/wasteland/f13dendoctor
+/datum/job/wasteland/f13dendoctor
title = "Den Doctor"
flag = F13DENDOCTOR
faction = FACTION_WASTELAND
diff --git a/code/modules/keybindings/setup.dm b/code/modules/keybindings/setup.dm
index 56daa3dbe72..7e4818ae254 100644
--- a/code/modules/keybindings/setup.dm
+++ b/code/modules/keybindings/setup.dm
@@ -59,7 +59,7 @@
full_macro_assert(prefs_override)
/client/proc/full_macro_assert(datum/preferences/prefs_override = prefs)
- INVOKE_ASYNC(src, .proc/do_full_macro_assert, prefs_override) // winget sleeps.
+ INVOKE_ASYNC(src,PROC_REF(do_full_macro_assert), prefs_override) // winget sleeps.
// TODO: OVERHAUL ALL OF THIS AGAIN. While this works this is flatout horrid with the "use list but also don't use lists" crap. I hate my life.
/client/proc/do_full_macro_assert(datum/preferences/prefs_override = prefs)
diff --git a/code/modules/language/common.dm b/code/modules/language/common.dm
index 68669ad4b60..f44659cc566 100644
--- a/code/modules/language/common.dm
+++ b/code/modules/language/common.dm
@@ -18,10 +18,9 @@
Sources:
http://www.sttmedia.com/syllablefrequency-english
http://www.chinahighlights.com/travelguide/learning-chinese/pinyin-syllables.htm
-*/______qdel_list_wrapper(list/L)
- . = ..()
+*/
- //New list generated with chatgpt sounding 'vaguely' like english. Better than it sounding way too much like chinese, lol
+//New list generated with chatgpt sounding 'vaguely' like english. Better than it sounding way too much like chinese, lol
/datum/language/common/syllables = list(
"a",
"zib",
diff --git a/code/modules/library/lib_codex_gigas.dm b/code/modules/library/lib_codex_gigas.dm
index 86c75b5434b..957ebcc69c2 100644
--- a/code/modules/library/lib_codex_gigas.dm
+++ b/code/modules/library/lib_codex_gigas.dm
@@ -75,7 +75,7 @@
return FALSE
if(action == "search")
SStgui.close_uis(src)
- addtimer(CALLBACK(src, .proc/perform_research, usr, currentName), 0)
+ addtimer(CALLBACK(src,PROC_REF(perform_research), usr, currentName), 0)
currentName = ""
currentSection = PRE_TITLE
return FALSE
diff --git a/code/modules/mafia/controller.dm b/code/modules/mafia/controller.dm
index 4a77b3cae77..acb77983aa8 100644
--- a/code/modules/mafia/controller.dm
+++ b/code/modules/mafia/controller.dm
@@ -190,10 +190,10 @@
if(turn == 1)
send_message(span_notice("The selected map is [current_map.name]![current_map.description]"))
send_message("Day [turn] started! There is no voting on the first day. Say hello to everybody!")
- next_phase_timer = addtimer(CALLBACK(src,.proc/check_trial, FALSE),first_day_phase_period,TIMER_STOPPABLE) //no voting period = no votes = instant night
+ next_phase_timer = addtimer(CALLBACK(src,PROC_REF(check_trial), FALSE),first_day_phase_period,TIMER_STOPPABLE) //no voting period = no votes = instant night
else
send_message("Day [turn] started! Voting will start in 1 minute.")
- next_phase_timer = addtimer(CALLBACK(src,.proc/start_voting_phase),day_phase_period,TIMER_STOPPABLE)
+ next_phase_timer = addtimer(CALLBACK(src,PROC_REF(start_voting_phase)),day_phase_period,TIMER_STOPPABLE)
SStgui.update_uis(src)
@@ -206,7 +206,7 @@
*/
/datum/mafia_controller/proc/start_voting_phase()
phase = MAFIA_PHASE_VOTING
- next_phase_timer = addtimer(CALLBACK(src, .proc/check_trial, TRUE),voting_phase_period,TIMER_STOPPABLE) //be verbose!
+ next_phase_timer = addtimer(CALLBACK(src,PROC_REF(check_trial), TRUE),voting_phase_period,TIMER_STOPPABLE) //be verbose!
send_message("Voting started! Vote for who you want to see on trial today.")
SStgui.update_uis(src)
@@ -238,7 +238,7 @@
on_trial = loser
on_trial.body.forceMove(get_turf(town_center_landmark))
phase = MAFIA_PHASE_JUDGEMENT
- next_phase_timer = addtimer(CALLBACK(src, .proc/lynch),judgement_phase_period,TIMER_STOPPABLE)
+ next_phase_timer = addtimer(CALLBACK(src,PROC_REF(lynch),judgement_phase_period,TIMER_STOPPABLE))
reset_votes("Day")
else
if(verbose)
@@ -267,13 +267,13 @@
if(judgement_guilty_votes.len > judgement_innocent_votes.len) //strictly need majority guilty to lynch
send_message(span_red("Guilty wins majority, [on_trial.body.real_name] has been lynched."))
on_trial.kill(src, lynch = TRUE)
- addtimer(CALLBACK(src, .proc/send_home, on_trial),judgement_lynch_period)
+ addtimer(CALLBACK(src,PROC_REF(send_home), on_trial),judgement_lynch_period)
else
send_message(span_green("Innocent wins majority, [on_trial.body.real_name] has been spared."))
on_trial.body.forceMove(get_turf(on_trial.assigned_landmark))
on_trial = null
//day votes are already cleared, so this will skip the trial and check victory/lockdown/whatever else
- next_phase_timer = addtimer(CALLBACK(src, .proc/check_trial, FALSE),judgement_lynch_period,TIMER_STOPPABLE)// small pause to see the guy dead, no verbosity since we already did this
+ next_phase_timer = addtimer(CALLBACK(src,PROC_REF(check_trial), FALSE),judgement_lynch_period,TIMER_STOPPABLE)// small pause to see the guy dead, no verbosity since we already did this
/**
* Teenie helper proc to move players back to their home.
@@ -374,7 +374,7 @@
for(var/datum/mafia_role/R in all_roles)
R.reveal_role(src)
phase = MAFIA_PHASE_VICTORY_LAP
- next_phase_timer = addtimer(CALLBACK(src,.proc/end_game),victory_lap_period,TIMER_STOPPABLE)
+ next_phase_timer = addtimer(CALLBACK(src,PROC_REF(end_game)),victory_lap_period,TIMER_STOPPABLE)
/**
* Cleans up the game, resetting variables back to the beginning and removing the map with the generator.
@@ -408,9 +408,9 @@
if(D.id != "mafia") //so as to not trigger shutters on station, lol
continue
if(close)
- INVOKE_ASYNC(D, /obj/machinery/door/poddoor.proc/close)
+ INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door/poddoor,close))
else
- INVOKE_ASYNC(D, /obj/machinery/door/poddoor.proc/open)
+ INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door/poddoor,open))
/**
* The actual start of night for players. Mostly info is given at the start of the night as the end of the night is when votes and actions are submitted and tried.
@@ -423,7 +423,7 @@
phase = MAFIA_PHASE_NIGHT
send_message("Night [turn] started! Lockdown will end in 45 seconds.")
SEND_SIGNAL(src,COMSIG_MAFIA_SUNDOWN)
- next_phase_timer = addtimer(CALLBACK(src, .proc/resolve_night),night_phase_period,TIMER_STOPPABLE)
+ next_phase_timer = addtimer(CALLBACK(src,PROC_REF(resolve_night),night_phase_period,TIMER_STOPPABLE))
SStgui.update_uis(src)
/**
@@ -522,7 +522,7 @@
tally[votes[vote_type][votee]] = 1
else
tally[votes[vote_type][votee]] += 1
- sortTim(tally,/proc/cmp_numeric_dsc,associative=TRUE)
+ sortTim(tally,GLOBAL_PROC_REF(cmp_numeric_dsc),associative=TRUE)
return length(tally) ? tally[1] : null
/**
@@ -561,7 +561,7 @@
var/mob/living/carbon/human/H = new(get_turf(role.assigned_landmark))
H.equipOutfit(player_outfit)
H.status_flags |= GODMODE
- RegisterSignal(H,COMSIG_ATOM_UPDATE_OVERLAYS,.proc/display_votes)
+ RegisterSignal(H,COMSIG_ATOM_UPDATE_OVERLAYS,PROC_REF(display_votes))
var/datum/action/innate/mafia_panel/mafia_panel = new(null,src)
mafia_panel.Grant(H)
var/client/player_client = GLOB.directory[role.player_key]
diff --git a/code/modules/mafia/roles.dm b/code/modules/mafia/roles.dm
index 5fe9934d8ca..73a9ba4d7c1 100644
--- a/code/modules/mafia/roles.dm
+++ b/code/modules/mafia/roles.dm
@@ -336,10 +336,9 @@
/datum/mafia_role/lawyer/proc/try_to_roleblock(datum/mafia_controller/game)
if(current_target)
- RegisterSignal(current_target,COMSIG_MAFIA_CAN_PERFORM_ACTION, .proc/prevent_action)
+ RegisterSignal(current_target,COMSIG_MAFIA_CAN_PERFORM_ACTION,PROC_REF(prevent_action))
/datum/mafia_role/lawyer/proc/release(datum/mafia_controller/game)
- . = ..()
if(current_target)
UnregisterSignal(current_target, COMSIG_MAFIA_CAN_PERFORM_ACTION)
current_target = null
diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm
index e4887768e0f..81b34a842ad 100644
--- a/code/modules/mapping/reader.dm
+++ b/code/modules/mapping/reader.dm
@@ -421,8 +421,9 @@
//then instance the /turf and, if multiple tiles are presents, simulates the DMM underlays piling effect
var/first_turf_index = 1
- while(!ispath(members[first_turf_index], /turf)) //find first /turf object in members
- first_turf_index++
+ if(LAZYLEN(members) && LAZYACCESS(members, first_turf_index))
+ while(!ispath(members[first_turf_index], /turf)) //find first /turf object in members
+ first_turf_index++
//turn off base new Initialization until the whole thing is loaded
SSatoms.map_loader_begin()
diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm
index 204f423ced5..d163f84bbf3 100644
--- a/code/modules/mining/aux_base.dm
+++ b/code/modules/mining/aux_base.dm
@@ -284,7 +284,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
return
anti_spam_cd = 1
- addtimer(CALLBACK(src, .proc/clear_cooldown), 50)
+ addtimer(CALLBACK(src,PROC_REF(clear_cooldown)), 50)
var/turf/landing_spot = get_turf(src)
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 19edd94f3a0..65d4da18174 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -40,8 +40,8 @@
/obj/item/kinetic_crusher/Initialize()
. = ..()
- 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/kinetic_crusher/ComponentInitialize()
. = ..()
@@ -120,7 +120,7 @@
D.fire()
charged = FALSE
update_icon()
- addtimer(CALLBACK(src, .proc/Recharge), charge_time)
+ addtimer(CALLBACK(src,PROC_REF(Recharge)), charge_time)
return
if(proximity_flag && isliving(target))
var/mob/living/L = target
@@ -420,7 +420,7 @@
continue
playsound(L, 'sound/magic/fireball.ogg', 20, 1)
new /obj/effect/temp_visual/fire(L.loc)
- addtimer(CALLBACK(src, .proc/pushback, L, user), 1) //no free backstabs, we push AFTER module stuff is done
+ addtimer(CALLBACK(src,PROC_REF(pushback), L, user), 1) //no free backstabs, we push AFTER module stuff is done
L.adjustFireLoss(bonus_value, forced = TRUE)
/obj/item/crusher_trophy/tail_spike/proc/pushback(mob/living/target, mob/living/user)
@@ -484,7 +484,7 @@
/obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user)
deadly_shot = TRUE
- addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
/obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot()
deadly_shot = FALSE
diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm
index aa30284fff9..55f6ffa43a2 100644
--- a/code/modules/mining/equipment/regenerative_core.dm
+++ b/code/modules/mining/equipment/regenerative_core.dm
@@ -31,7 +31,7 @@
/obj/item/organ/regenerative_core/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/inert_check), 2400)
+ addtimer(CALLBACK(src,PROC_REF(inert_check)), 2400)
/obj/item/organ/regenerative_core/proc/inert_check()
if(!preserved)
diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm
index 304c774056f..fff6645b332 100644
--- a/code/modules/mining/equipment/resonator.dm
+++ b/code/modules/mining/equipment/resonator.dm
@@ -72,7 +72,7 @@
transform = matrix()*0.75
animate(src, transform = matrix()*1.5, time = duration)
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/burst), duration, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src,PROC_REF(burst)), duration, TIMER_STOPPABLE)
/obj/effect/temp_visual/resonance/Destroy()
if(res)
diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm
index 013e72da44b..6c55435a959 100644
--- a/code/modules/mining/equipment/wormhole_jaunter.dm
+++ b/code/modules/mining/equipment/wormhole_jaunter.dm
@@ -21,7 +21,7 @@
/obj/item/wormhole_jaunter/equipped(mob/user, slot)
. = ..()
if(slot == SLOT_BELT)
- RegisterSignal(user, COMSIG_MOVABLE_CHASM_DROP, .proc/chasm_react)
+ RegisterSignal(user, COMSIG_MOVABLE_CHASM_DROP,PROC_REF(chasm_react))
/obj/item/wormhole_jaunter/dropped(mob/user)
. = ..()
@@ -103,4 +103,4 @@
L.DefaultCombatKnockdown(60)
if(ishuman(L))
shake_camera(L, 20, 1)
- addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/carbon,vomit)), 20)
diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm
index f19526c8f8d..de0da02ad33 100644
--- a/code/modules/mining/laborcamp/laborstacker.dm
+++ b/code/modules/mining/laborcamp/laborstacker.dm
@@ -28,7 +28,7 @@ GLOBAL_LIST(labor_sheet_values)
if(!initial(sheet.point_value) || (initial(sheet.merge_type) && initial(sheet.merge_type) != sheet_type)) //ignore no-value sheets and x/fifty subtypes
continue
sheet_list += list(list("ore" = initial(sheet.name), "value" = initial(sheet.point_value)))
- GLOB.labor_sheet_values = sortList(sheet_list, /proc/cmp_sheet_list)
+ GLOB.labor_sheet_values = sortList(sheet_list, GLOBAL_PROC_REF(cmp_sheet_list))
/proc/cmp_sheet_list(list/a, list/b)
return a["value"] - b["value"]
diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm
index 397cbfe4fa2..cee33048b42 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -45,7 +45,7 @@
name = harvested_name
desc = harvested_desc
harvested = TRUE
- addtimer(CALLBACK(src, .proc/regrow), rand(regrowth_time_low, regrowth_time_high))
+ addtimer(CALLBACK(src,PROC_REF(regrow)), rand(regrowth_time_low, regrowth_time_high))
return 1
/obj/structure/flora/ash/proc/regrow()
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index bdbb34aec68..3ff40d462b3 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -613,7 +613,7 @@
can_destroy = FALSE
- addtimer(CALLBACK(src, .proc/unvanish, user), 10 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(unvanish), user), 10 SECONDS)
/obj/effect/immortality_talisman/proc/unvanish(mob/user)
user.status_flags &= ~GODMODE
@@ -1054,7 +1054,7 @@
/obj/item/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
- INVOKE_ASYNC(src, .proc/attempt_lava, target, user, proximity_flag, click_parameters)
+ INVOKE_ASYNC(src,PROC_REF(attempt_lava), target, user, proximity_flag, click_parameters)
/obj/item/lava_staff/proc/attempt_lava(atom/target, mob/user, proximity_flag, click_parameters)
if(timer > world.time)
@@ -1132,7 +1132,7 @@
/obj/item/mayhem/attack_self(mob/user)
for(var/mob/living/carbon/human/H in range(7,user))
var/obj/effect/mine/pickup/bloodbath/B = new(H)
- INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H)
+ INVOKE_ASYNC(B, TYPE_PROC_REF(/obj/effect/mine/pickup/bloodbath/,mineEffect), H)
to_chat(user, span_notice("You shatter the bottle!"))
playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1)
message_admins(span_adminnotice("[ADMIN_LOOKUPFLW(user)] has activated a bottle of mayhem!"))
@@ -1244,11 +1244,11 @@
calculate_anger_mod(user)
timer = world.time + CLICK_CD_MELEE //by default, melee attacks only cause melee blasts, and have an accordingly short cooldown
if(proximity_flag)
- INVOKE_ASYNC(src, .proc/aoe_burst, T, user)
+ INVOKE_ASYNC(src,PROC_REF(aoe_burst), T, user)
log_combat(user, target, "fired 3x3 blast at", src)
else
if(ismineralturf(target) && get_dist(user, target) < 6) //target is minerals, we can hit it(even if we can't see it)
- INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user)
+ INVOKE_ASYNC(src,PROC_REF(cardinal_blasts), T, user)
timer = world.time + cooldown_time
else if(target in view(5, get_turf(user))) //if the target is in view, hit it
timer = world.time + cooldown_time
@@ -1259,12 +1259,12 @@
C.monster_damage_boost = FALSE
log_combat(user, target, "fired a chaser at", src)
else
- INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user) //otherwise, just do cardinal blast
+ INVOKE_ASYNC(src,PROC_REF(cardinal_blasts), T, user) //otherwise, just do cardinal blast
log_combat(user, target, "fired cardinal blast at", src)
else
to_chat(user, span_warning("That target is out of range!") )
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
/obj/item/hierophant_club/proc/calculate_anger_mod(mob/user) //we get stronger as the user loses health
chaser_cooldown = initial(chaser_cooldown)
@@ -1302,7 +1302,7 @@
user.visible_message(span_hierophant_warning("[user] starts fiddling with [src]'s pommel..."), \
span_notice("You start detaching the hierophant beacon..."))
timer = world.time + 51
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
if(do_after(user, 50, target = user) && !beacon)
var/turf/T = get_turf(user)
playsound(T,'sound/magic/blind.ogg', 200, 1, -4)
@@ -1314,7 +1314,7 @@
You can remove the beacon to place it again by striking it with the club.")
else
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
else
to_chat(user, span_warning("You need to be on solid ground to detach the beacon!"))
return
@@ -1331,7 +1331,7 @@
user.update_action_buttons_icon()
user.visible_message(span_hierophant_warning("[user] starts to glow faintly..."))
timer = world.time + 50
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_on"
var/obj/effect/temp_visual/hierophant/telegraph/edge/TE1 = new /obj/effect/temp_visual/hierophant/telegraph/edge(user.loc)
var/obj/effect/temp_visual/hierophant/telegraph/edge/TE2 = new /obj/effect/temp_visual/hierophant/telegraph/edge(beacon.loc)
@@ -1343,7 +1343,7 @@
to_chat(user, span_warning("The beacon is blocked by something, preventing teleportation!"))
user.update_action_buttons_icon()
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_off"
return
new /obj/effect/temp_visual/hierophant/telegraph(T, user)
@@ -1355,7 +1355,7 @@
if(user)
user.update_action_buttons_icon()
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
if(beacon)
beacon.icon_state = "hierophant_tele_off"
return
@@ -1364,7 +1364,7 @@
to_chat(user, span_warning("The beacon is blocked by something, preventing teleportation!"))
user.update_action_buttons_icon()
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_off"
return
user.log_message("teleported self from [AREACOORD(source)] to [beacon]")
@@ -1377,7 +1377,7 @@
var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, user, TRUE) //but absolutely will hurt enemies
B.damage = 30
for(var/mob/living/L in range(1, source))
- INVOKE_ASYNC(src, .proc/teleport_mob, source, L, T, user) //regardless, take all mobs near us along
+ INVOKE_ASYNC(src,PROC_REF(teleport_mob), source, L, T, user) //regardless, take all mobs near us along
sleep(6) //at this point the blasts detonate
if(beacon)
beacon.icon_state = "hierophant_tele_off"
@@ -1385,7 +1385,7 @@
qdel(TE1)
qdel(TE2)
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src,PROC_REF(prepare_icon_update))
if(beacon)
beacon.icon_state = "hierophant_tele_off"
teleporting = FALSE
@@ -1424,7 +1424,7 @@
sleep(2)
new /obj/effect/temp_visual/hierophant/blast(T, user, friendly_fire_check)
for(var/d in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/blast_wall, T, d, user)
+ INVOKE_ASYNC(src,PROC_REF(blast_wall), T, d, user)
/obj/item/hierophant_club/proc/blast_wall(turf/T, dir, mob/living/user) //make a wall of blasts blast_range tiles long
if(!T)
diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm
index 5c55a21164d..65c678e682d 100644
--- a/code/modules/mining/machine_processing.dm
+++ b/code/modules/mining/machine_processing.dm
@@ -23,7 +23,7 @@
/obj/machinery/mineral/proc/register_input_turf()
input_turf = get_step(src, input_dir)
if(input_turf) // make sure there is actually a turf
- RegisterSignal(input_turf, list(COMSIG_ATOM_CREATED, COMSIG_ATOM_ENTERED), .proc/pickup_item)
+ RegisterSignal(input_turf, list(COMSIG_ATOM_CREATED, COMSIG_ATOM_ENTERED),PROC_REF(pickup_item))
/// Unregisters signals that are registered the machine's input turf, if it has one.
/obj/machinery/mineral/proc/unregister_input_turf()
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index e92e2c52202..26822b0a4bd 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -343,7 +343,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
else
user.visible_message(span_warning("[user] strikes \the [src], causing a chain reaction!"), span_danger("You strike \the [src], causing a chain reaction."))
log_game("[key_name(user)] has primed a [name] for detonation at [AREACOORD(bombturf)]")
- det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE)
+ det_timer = addtimer(CALLBACK(src,PROC_REF(detonate), notify_admins), det_time, TIMER_STOPPABLE)
/obj/item/gibtonite/proc/detonate(notify_admins)
if(primed)
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/caps.dm b/code/modules/mob/dead/new_player/sprite_accessories/caps.dm
index 822fcf960da..d9746724906 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/caps.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/caps.dm
@@ -1,4 +1,4 @@
-datum/sprite_accessory/caps
+/datum/sprite_accessory/caps
icon = 'icons/mob/mutant_bodyparts.dmi'
color_src = HAIR
relevant_layers = list(BODY_ADJ_LAYER)
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
index 074a86dc552..ca93133d820 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
@@ -800,7 +800,7 @@
icon_state = "husky"
matrixed_sections = MATRIX_RED_GREEN
-datum/sprite_accessory/tails/mam_tails/insect
+/datum/sprite_accessory/tails/mam_tails/insect
name = "Insect"
icon_state = "insect"
matrixed_sections = MATRIX_RED
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index c0a9ef3f608..aea5a4f086a 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -152,7 +152,7 @@
newcolor = BLOOD_COLOR_XENO
add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY)
// but only for a few seconds
- addtimer(CALLBACK(src, /atom/.proc/remove_atom_colour, TEMPORARY_COLOUR_PRIORITY, newcolor), 6 SECONDS)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,remove_atom_colour), TEMPORARY_COLOUR_PRIORITY, newcolor), 6 SECONDS)
/mob/living/proc/phasein(obj/effect/decal/cleanable/B)
if(src.mob_transforming)
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index 9186822a452..3d7dce13023 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -83,7 +83,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
next_ask = world.time + askDelay
searching = TRUE
update_icon()
- addtimer(CALLBACK(src, .proc/check_success), askDelay)
+ addtimer(CALLBACK(src,PROC_REF(check_success)), askDelay)
/obj/item/mmi/posibrain/proc/check_success()
searching = FALSE
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index 241b2a3d00f..1da03160dc0 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -50,7 +50,7 @@
leaping = 1
weather_immunities += "lava"
update_icons()
- throw_at(A, MAX_ALIEN_LEAP_DIST, 1, src, FALSE, TRUE, callback = CALLBACK(src, .proc/leap_end))
+ throw_at(A, MAX_ALIEN_LEAP_DIST, 1, src, FALSE, TRUE, callback = CALLBACK(src,PROC_REF(leap_end)))
/mob/living/carbon/alien/humanoid/hunter/proc/leap_end()
leaping = 0
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index 8a14d9f3886..3ce94c06c87 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -142,7 +142,7 @@
recent_queen_death = 1
owner.throw_alert("alien_noqueen", /atom/movable/screen/alert/alien_vulnerable)
- addtimer(CALLBACK(src, .proc/clear_queen_death), QUEEN_DEATH_DEBUFF_DURATION)
+ addtimer(CALLBACK(src,PROC_REF(clear_queen_death)), QUEEN_DEATH_DEBUFF_DURATION)
/obj/item/organ/alien/hivenode/proc/clear_queen_death()
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index 3dc0b4fd7f8..82878ad7ffc 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -51,7 +51,7 @@
/obj/item/organ/body_egg/alien_embryo/egg_process()
if(stage < 5 && prob(3))
stage++
- INVOKE_ASYNC(src, .proc/RefreshInfectionImage)
+ INVOKE_ASYNC(src,PROC_REF(RefreshInfectionImage))
if(stage == 5 && prob(50))
for(var/datum/surgery/S in owner.surgeries)
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index 0651558c42e..486c9773676 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -34,7 +34,7 @@
/obj/item/clothing/mask/facehugger/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -100,7 +100,7 @@
/obj/item/clothing/mask/facehugger/proc/on_entered(atom/target)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, /atom/.proc/HasProximity, target)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/,HasProximity), target)
return
/obj/item/clothing/mask/facehugger/on_found(mob/finder)
@@ -118,7 +118,7 @@
return
if(stat == CONSCIOUS)
icon_state = "[initial(icon_state)]_thrown"
- addtimer(CALLBACK(src, .proc/clear_throw_icon_state), 15)
+ addtimer(CALLBACK(src,PROC_REF(clear_throw_icon_state)), 15)
/obj/item/clothing/mask/facehugger/proc/clear_throw_icon_state()
if(icon_state == "[initial(icon_state)]_thrown")
@@ -190,7 +190,7 @@
// early returns and validity checks done: attach.
attached++
//ensure we detach once we no longer need to be attached
- addtimer(CALLBACK(src, .proc/detach), MAX_IMPREGNATION_TIME)
+ addtimer(CALLBACK(src,PROC_REF(detach)), MAX_IMPREGNATION_TIME)
if(!sterile)
@@ -199,7 +199,7 @@
GoIdle() //so it doesn't jump the people that tear it off
- addtimer(CALLBACK(src, .proc/Impregnate, M), rand(MIN_IMPREGNATION_TIME, MAX_IMPREGNATION_TIME))
+ addtimer(CALLBACK(src,PROC_REF(Impregnate), M), rand(MIN_IMPREGNATION_TIME, MAX_IMPREGNATION_TIME))
/obj/item/clothing/mask/facehugger/proc/detach()
attached = 0
@@ -242,7 +242,7 @@
stat = UNCONSCIOUS
icon_state = "[initial(icon_state)]_inactive"
- addtimer(CALLBACK(src, .proc/GoActive), rand(MIN_ACTIVE_TIME, MAX_ACTIVE_TIME))
+ addtimer(CALLBACK(src,PROC_REF(GoActive)), rand(MIN_ACTIVE_TIME, MAX_ACTIVE_TIME))
/obj/item/clothing/mask/facehugger/proc/Die()
if(stat == DEAD)
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 2224268db64..7db2b361414 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -259,7 +259,7 @@
jitteriness += 1000
do_jitter_animation(jitteriness)
stuttering += 2
- addtimer(CALLBACK(src, .proc/secondary_shock, should_stun), 20)
+ addtimer(CALLBACK(src,PROC_REF(secondary_shock), should_stun), 20)
return shock_damage
///Called slightly after electrocute act to reduce jittering and apply a secondary stun.
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index da8cee906e6..32509a6df13 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -10,7 +10,7 @@
if(ckey)
SSsecondwind.i_died(ckey)
if(!gibbed)
- INVOKE_ASYNC(src, .proc/emote, "deathgasp")
+ INVOKE_ASYNC(src,PROC_REF(emote), "deathgasp")
SWplz = new
SWplz.Grant(src)
diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm
index 60f78630f65..09d9fbfb138 100644
--- a/code/modules/mob/living/carbon/emote.dm
+++ b/code/modules/mob/living/carbon/emote.dm
@@ -506,7 +506,7 @@
hasPickedUp = TRUE
damageMult = rock.throwforce
if(!timerEnabled)
- addtimer(CALLBACK(src, .proc/reset_damage), 2.5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(reset_damage)), 2.5 SECONDS)
timerEnabled = TRUE
COOLDOWN_START(src, rock_cooldown, 2.5 SECONDS)
to_chat(user, span_notice("You find a nice hefty throwing rock!"))
@@ -546,7 +546,7 @@
hasPickedUp = TRUE
damageMult = brick.throwforce
if(!timerEnabled)
- addtimer(CALLBACK(src, .proc/reset_damage), 2.5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(reset_damage)), 2.5 SECONDS)
timerEnabled = TRUE
COOLDOWN_START(src, brick_cooldown, 2.5 SECONDS)
to_chat(user, span_notice("You find a nice weighty brick!"))
@@ -589,7 +589,7 @@
hasPickedUp = TRUE
damageMult = snowball.throwforce
if(!timerEnabled)
- addtimer(CALLBACK(src, .proc/reset_damage), 2.5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(reset_damage)), 2.5 SECONDS)
timerEnabled = TRUE
COOLDOWN_START(src, snowball_cooldown, 2.5 SECONDS)
to_chat(user, span_notice("You pack together a nice round snowball!"))
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 4e6aac4bcbd..5cf84f158bd 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -51,7 +51,7 @@
if(SSticker.HasRoundStarted())
SSblackbox.ReportDeath(src)
if(is_devil(src))
- INVOKE_ASYNC(is_devil(src), /datum/antagonist/devil.proc/beginResurrectionCheck, src)
+ INVOKE_ASYNC(is_devil(src), TYPE_PROC_REF(/datum/antagonist/devil,beginResurrectionCheck), src)
/mob/living/carbon/human/proc/makeSkeleton()
ADD_TRAIT(src, TRAIT_DISFIGURED, TRAIT_GENERIC)
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 353c137e3db..d76e833d939 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -244,7 +244,7 @@
//rock paper scissors emote handling
/mob/living/carbon/human/proc/beginRockPaperScissors(chosen_move)
GLOB.rockpaperscissors_players[src] = list(chosen_move, ROCKPAPERSCISSORS_NOT_DECIDED)
- do_after_advanced(src, ROCKPAPERSCISSORS_TIME_LIMIT, src, DO_AFTER_REQUIRES_USER_ON_TURF|DO_AFTER_NO_COEFFICIENT|DO_AFTER_NO_PROGRESSBAR|DO_AFTER_DISALLOW_MOVING_ABSOLUTE_USER, CALLBACK(src, .proc/rockpaperscissors_tick))
+ do_after_advanced(src, ROCKPAPERSCISSORS_TIME_LIMIT, src, DO_AFTER_REQUIRES_USER_ON_TURF|DO_AFTER_NO_COEFFICIENT|DO_AFTER_NO_PROGRESSBAR|DO_AFTER_DISALLOW_MOVING_ABSOLUTE_USER, CALLBACK(src,PROC_REF(rockpaperscissors_tick)))
var/new_entry = GLOB.rockpaperscissors_players[src]
if(new_entry[2] == ROCKPAPERSCISSORS_NOT_DECIDED)
to_chat(src, "You put your hand back down.")
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 25e8911a1b1..2e9e363e054 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -268,15 +268,14 @@ GLOBAL_LIST_INIT(personalitytrait2description, list(
var/bandaid_max_time = initial(BP.current_gauze.covering_lifespan)
var/bandaid_time = BP.get_covering_timeleft(COVERING_BANDAGE, COVERING_TIME_TRUE)
// how much life we have left in these bandages
- switch(bandaid_time)
- if((bandaid_max_time * BANDAGE_GOODLIFE_DURATION) to INFINITY)
- msg += "fresh "
- if((bandaid_max_time * BANDAGE_MIDLIFE_DURATION) to (bandaid_max_time * BANDAGE_GOODLIFE_DURATION))
- msg += "slightly worn "
- if((bandaid_max_time * BANDAGE_ENDLIFE_DURATION) to (bandaid_max_time * BANDAGE_MIDLIFE_DURATION))
- msg += "badly worn "
- if(-INFINITY to (bandaid_max_time * BANDAGE_ENDLIFE_DURATION))
- msg += "nearly ruined "
+ if(bandaid_time > bandaid_max_time * BANDAGE_GOODLIFE_DURATION)
+ msg += "fresh "
+ else if(bandaid_time > bandaid_max_time * BANDAGE_MIDLIFE_DURATION)
+ msg += "slightly worn "
+ else if(bandaid_time > bandaid_max_time * BANDAGE_ENDLIFE_DURATION)
+ msg += "badly worn "
+ else
+ msg += "nearly ruined "
msg += "[BP.current_gauze.name]"
if(has_bleed_wounds)
msg += span_warning(" covering a bleeding wound!\n")
@@ -288,15 +287,14 @@ GLOBAL_LIST_INIT(personalitytrait2description, list(
var/bandaid_max_time = initial(BP.current_suture.covering_lifespan)
var/bandaid_time = BP.get_covering_timeleft(COVERING_SUTURE, COVERING_TIME_TRUE)
// how much life we have left in these bandages
- switch(bandaid_time)
- if((bandaid_max_time * SUTURE_GOODLIFE_DURATION) to INFINITY)
- msg += "sturdy "
- if((bandaid_max_time * SUTURE_MIDLIFE_DURATION) to (bandaid_max_time * SUTURE_GOODLIFE_DURATION))
- msg += "slightly frayed "
- if((bandaid_max_time * SUTURE_ENDLIFE_DURATION) to (bandaid_max_time * SUTURE_MIDLIFE_DURATION))
- msg += "badly frayed "
- if(-INFINITY to (bandaid_max_time * SUTURE_ENDLIFE_DURATION))
- msg += "nearly popped "
+ if(bandaid_time > bandaid_max_time * SUTURE_GOODLIFE_DURATION)
+ msg += "sturdy "
+ else if(bandaid_time > bandaid_max_time * SUTURE_MIDLIFE_DURATION)
+ msg += "slightly frayed "
+ else if(bandaid_time > bandaid_max_time * SUTURE_ENDLIFE_DURATION)
+ msg += "badly frayed "
+ else
+ msg += "nearly popped "
msg += "[BP.current_suture.name]"
if(has_bleed_wounds)
msg += span_warning(" covering a bleeding wound!\n")
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 1bb6c3069f0..2bf9ec1a326 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -44,7 +44,7 @@ GLOBAL_VAR_INIT(crotch_call_cooldown, 0)
if(CONFIG_GET(flag/disable_stambuffer))
enable_intentional_sprint_mode()
- RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, /atom.proc/clean_blood)
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, TYPE_PROC_REF(/atom,clean_blood))
GLOB.human_list += src
// var/datum/atom_hud/data/human/genital/pornHud = GLOB.huds[GENITAL_PORNHUD]
// pornHud.add_to_hud(src)
@@ -60,7 +60,7 @@ GLOBAL_VAR_INIT(crotch_call_cooldown, 0)
AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE)
AddElement(/datum/element/flavor_text, _name = "Background Info Notes", _addendum = "Put information about your character's background!", _always_show = TRUE, _save_key = "background_info_notes", _examine_no_preview = TRUE)
AddElement(/datum/element/flavor_text, _name = "F-list link", _always_show = FALSE, _save_key = "flist", _examine_no_preview = TRUE, _attach_internet_link = TRUE)
- RegisterSignal(src, COMSIG_HUMAN_UPDATE_GENITALS, .proc/signal_update_genitals)
+ RegisterSignal(src, COMSIG_HUMAN_UPDATE_GENITALS,PROC_REF(signal_update_genitals))
/mob/living/carbon/human/Destroy()
QDEL_NULL(physiology)
@@ -234,7 +234,7 @@ GLOBAL_VAR_INIT(crotch_call_cooldown, 0)
..()
var/mob/living/simple_animal/bot/mulebot/MB = AM
if(istype(MB))
- INVOKE_ASYNC(MB, /mob/living/simple_animal/bot/mulebot/.proc/RunOver, src)
+ INVOKE_ASYNC(MB, TYPE_PROC_REF(/mob/living/simple_animal/bot/mulebot/,RunOver), src)
spreadFire(AM)
@@ -1056,7 +1056,7 @@ GLOBAL_VAR_INIT(crotch_call_cooldown, 0)
electrocution_skeleton_anim = mutable_appearance(icon, "electrocuted_base")
electrocution_skeleton_anim.appearance_flags |= RESET_COLOR|KEEP_APART
add_overlay(electrocution_skeleton_anim)
- addtimer(CALLBACK(src, .proc/end_electrocution_animation, electrocution_skeleton_anim), anim_duration)
+ addtimer(CALLBACK(src,PROC_REF(end_electrocution_animation), electrocution_skeleton_anim), anim_duration)
else //or just do a generic animation
flick_overlay_view(image(icon,src,"electrocuted_generic",ABOVE_MOB_LAYER), src, anim_duration)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 6f961181fc7..1da7f85f0a4 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -823,27 +823,27 @@
var/msg = span_notice("[src]'s [LB.name] is ")
var/list/damage_words = list()
if(brutedamage || burndamage || bleeddamage)
- switch(brutedamage)
- if(1 to (limb_max_damage*0.4))
- damage_words += LB.light_brute_msg
- if((limb_max_damage*0.4) to (limb_max_damage*0.8))
- damage_words += LB.medium_brute_msg
- if((limb_max_damage*0.8) to INFINITY)
- damage_words += LB.heavy_brute_msg
- switch(burndamage)
- if(1 to (limb_max_damage*0.4))
- damage_words += LB.light_burn_msg
- if((limb_max_damage*0.4) to (limb_max_damage*0.8))
- damage_words += LB.medium_burn_msg
- if((limb_max_damage*0.8) to INFINITY)
- damage_words += LB.heavy_burn_msg
- switch(bleeddamage)
- if(1 to (limb_max_damage*0.4))
- damage_words += LB.light_bleed_msg
- if((limb_max_damage*0.4) to (limb_max_damage*0.8))
- damage_words += LB.medium_bleed_msg
- if((limb_max_damage*0.8) to INFINITY)
- damage_words += LB.heavy_bleed_msg
+ if(brutedamage < limb_max_damage * 0.4)
+ damage_words += LB.light_brute_msg
+ else if(brutedamage < limb_max_damage * 0.8)
+ damage_words += LB.medium_brute_msg
+ else
+ damage_words += LB.heavy_brute_msg
+
+ if(burndamage < limb_max_damage * 0.4)
+ damage_words += LB.light_burn_msg
+ else if(burndamage < limb_max_damage * 0.8)
+ damage_words += LB.medium_burn_msg
+ else
+ damage_words += LB.heavy_burn_msg
+
+ if(bleeddamage < limb_max_damage * 0.4)
+ damage_words += LB.light_bleed_msg
+ else if(bleeddamage < limb_max_damage * 0.8)
+ damage_words += LB.medium_bleed_msg
+ else
+ damage_words += LB.heavy_bleed_msg
+
msg += span_alert(english_list(damage_words))
else
msg += span_green("intact")
@@ -870,16 +870,17 @@
message_bandage += "It is coated with "
var/bandaid_max_time = initial(LB.current_gauze.covering_lifespan)
var/bandaid_time = LB.get_covering_timeleft(COVERING_BANDAGE, COVERING_TIME_TRUE)
+
// how much life we have left in these bandages
- switch(bandaid_time)
- if((bandaid_max_time * BANDAGE_GOODLIFE_DURATION) to INFINITY)
- message_bandage += "fresh "
- if((bandaid_max_time * BANDAGE_MIDLIFE_DURATION) to (bandaid_max_time * BANDAGE_GOODLIFE_DURATION))
- message_bandage += "slightly worn "
- if((bandaid_max_time * BANDAGE_ENDLIFE_DURATION) to (bandaid_max_time * BANDAGE_MIDLIFE_DURATION))
- message_bandage += "badly worn "
- if(-INFINITY to (bandaid_max_time * BANDAGE_ENDLIFE_DURATION))
- message_bandage += "nearly ruined "
+ if(bandaid_time > bandaid_max_time * BANDAGE_GOODLIFE_DURATION)
+ message_bandage += "fresh "
+ else if(bandaid_time > bandaid_max_time * BANDAGE_MIDLIFE_DURATION)
+ message_bandage += "slightly worn "
+ else if(bandaid_time > bandaid_max_time * BANDAGE_ENDLIFE_DURATION)
+ message_bandage += "badly worn "
+ else
+ message_bandage += "nearly ruined "
+
message_bandage += "[LB.current_gauze.name]"
if(has_bleed_wounds)
message_bandage += span_warning(" covering a bleeding wound! ")
@@ -893,16 +894,17 @@
message_suture += "It is stitched up with "
var/bandaid_max_time = initial(LB.current_suture.covering_lifespan)
var/bandaid_time = LB.get_covering_timeleft(COVERING_SUTURE, COVERING_TIME_TRUE)
+
// how much life we have left in these bandages
- switch(bandaid_time)
- if((bandaid_max_time * SUTURE_GOODLIFE_DURATION) to INFINITY)
- message_suture += "sturdy "
- if((bandaid_max_time * SUTURE_MIDLIFE_DURATION) to (bandaid_max_time * SUTURE_GOODLIFE_DURATION))
- message_suture += "slightly frayed "
- if((bandaid_max_time * SUTURE_ENDLIFE_DURATION) to (bandaid_max_time * SUTURE_MIDLIFE_DURATION))
- message_suture += "badly frayed "
- if(-INFINITY to (bandaid_max_time * SUTURE_ENDLIFE_DURATION))
- message_suture += "nearly popped "
+ if(bandaid_time > bandaid_max_time * SUTURE_GOODLIFE_DURATION)
+ message_suture += "sturdy "
+ else if(bandaid_time > bandaid_max_time * SUTURE_MIDLIFE_DURATION)
+ message_suture += "slightly frayed "
+ else if(bandaid_time > bandaid_max_time * SUTURE_ENDLIFE_DURATION)
+ message_suture += "badly frayed "
+ else
+ message_suture += "nearly popped "
+
message_suture += "[LB.current_suture.name]"
if(has_bleed_wounds)
message_suture += span_warning(" closing a bleeding wound! ")
@@ -953,27 +955,26 @@
var/msg = "[src]'s [LB.name] is "
var/list/damage_words = list()
if(brutedamage || burndamage || bleeddamage)
- switch(brutedamage)
- if(1 to (limb_max_damage*0.4))
- damage_words += LB.light_brute_msg
- if((limb_max_damage*0.4) to (limb_max_damage*0.8))
- damage_words += LB.medium_brute_msg
- if((limb_max_damage*0.8) to INFINITY)
- damage_words += LB.heavy_brute_msg
- switch(burndamage)
- if(1 to (limb_max_damage*0.4))
- damage_words += LB.light_burn_msg
- if((limb_max_damage*0.4) to (limb_max_damage*0.8))
- damage_words += LB.medium_burn_msg
- if((limb_max_damage*0.8) to INFINITY)
- damage_words += LB.heavy_burn_msg
- switch(bleeddamage)
- if(1 to (limb_max_damage*0.4))
- damage_words += LB.light_bleed_msg
- if((limb_max_damage*0.4) to (limb_max_damage*0.8))
- damage_words += LB.medium_bleed_msg
- if((limb_max_damage*0.8) to INFINITY)
- damage_words += LB.heavy_bleed_msg
+ if(brutedamage < limb_max_damage * 0.4)
+ damage_words += LB.light_brute_msg
+ else if(brutedamage < limb_max_damage * 0.8)
+ damage_words += LB.medium_brute_msg
+ else
+ damage_words += LB.heavy_brute_msg
+
+ if(burndamage < limb_max_damage * 0.4)
+ damage_words += LB.light_burn_msg
+ else if(burndamage < limb_max_damage * 0.8)
+ damage_words += LB.medium_burn_msg
+ else
+ damage_words += LB.heavy_burn_msg
+
+ if(bleeddamage < limb_max_damage * 0.4)
+ damage_words += LB.light_bleed_msg
+ else if(bleeddamage < limb_max_damage * 0.8)
+ damage_words += LB.medium_bleed_msg
+ else
+ damage_words += LB.heavy_bleed_msg
msg += english_list(damage_words)
else
msg += "intact"
@@ -1000,16 +1001,17 @@
message_bandage += "It is coated with "
var/bandaid_max_time = initial(LB.current_gauze.covering_lifespan)
var/bandaid_time = LB.get_covering_timeleft(COVERING_BANDAGE, COVERING_TIME_TRUE)
+
// how much life we have left in these bandages
- switch(bandaid_time)
- if((bandaid_max_time * BANDAGE_GOODLIFE_DURATION) to INFINITY)
- message_bandage += "fresh "
- if((bandaid_max_time * BANDAGE_MIDLIFE_DURATION) to (bandaid_max_time * BANDAGE_GOODLIFE_DURATION))
- message_bandage += "slightly worn "
- if((bandaid_max_time * BANDAGE_ENDLIFE_DURATION) to (bandaid_max_time * BANDAGE_MIDLIFE_DURATION))
- message_bandage += "badly worn "
- if(-INFINITY to (bandaid_max_time * BANDAGE_ENDLIFE_DURATION))
- message_bandage += "nearly ruined "
+ if(bandaid_time > bandaid_max_time * BANDAGE_GOODLIFE_DURATION)
+ message_bandage += "fresh "
+ else if(bandaid_time > bandaid_max_time * BANDAGE_MIDLIFE_DURATION)
+ message_bandage += "slightly worn "
+ else if(bandaid_time > bandaid_max_time * BANDAGE_ENDLIFE_DURATION)
+ message_bandage += "badly worn "
+ else
+ message_bandage += "nearly ruined "
+
message_bandage += "[LB.current_gauze.name]"
if(has_bleed_wounds)
message_bandage += span_warning(" covering a bleeding wound! ")
@@ -1023,16 +1025,17 @@
message_suture += "It is stitched up with "
var/bandaid_max_time = initial(LB.current_suture.covering_lifespan)
var/bandaid_time = LB.get_covering_timeleft(COVERING_SUTURE, COVERING_TIME_TRUE)
+
// how much life we have left in these bandages
- switch(bandaid_time)
- if((bandaid_max_time * SUTURE_GOODLIFE_DURATION) to INFINITY)
- message_suture += "sturdy "
- if((bandaid_max_time * SUTURE_MIDLIFE_DURATION) to (bandaid_max_time * SUTURE_GOODLIFE_DURATION))
- message_suture += "slightly frayed "
- if((bandaid_max_time * SUTURE_ENDLIFE_DURATION) to (bandaid_max_time * SUTURE_MIDLIFE_DURATION))
- message_suture += "badly frayed "
- if(-INFINITY to (bandaid_max_time * SUTURE_ENDLIFE_DURATION))
- message_suture += "nearly popped "
+ if(bandaid_time > bandaid_max_time * SUTURE_GOODLIFE_DURATION)
+ message_suture += "sturdy "
+ else if(bandaid_time > bandaid_max_time * SUTURE_MIDLIFE_DURATION)
+ message_suture += "slightly frayed "
+ else if(bandaid_time > bandaid_max_time * SUTURE_ENDLIFE_DURATION)
+ message_suture += "badly frayed "
+ else
+ message_suture += "nearly popped "
+
message_suture += "[LB.current_suture.name]"
if(has_bleed_wounds)
message_suture += span_warning(" closing a bleeding wound! ")
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 8d49ed04e32..658c270c636 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1503,7 +1503,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(radiation > RAD_MOB_HAIRLOSS)
if(prob(15) && !(H.hair_style == "Bald") && (HAIR in species_traits))
to_chat(H, span_danger("Your hair starts to fall out in clumps..."))
- addtimer(CALLBACK(src, .proc/go_bald, H), 50)
+ addtimer(CALLBACK(src,PROC_REF(go_bald), H), 50)
/datum/species/proc/go_bald(mob/living/carbon/human/H)
if(QDELETED(H)) //may be called from a timer
@@ -1752,7 +1752,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
// for(var/i in 1 to 3)
// vol *= 0.75
// dist = round(dist*0.75)
- // addtimer(CALLBACK(src, .proc/bootysmack, get_turf(target), vol, dist), time)
+ // addtimer(CALLBACK(src,PROC_REF(bootysmack), get_turf(target), vol, dist), time)
// time += 0.5 SECONDS
target.adjustStaminaLoss(25)
user.visible_message(
diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
index 763cb079efe..3101fcd18a9 100644
--- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm
@@ -121,10 +121,10 @@
return INITIALIZE_HINT_QDEL
owner = new_owner
START_PROCESSING(SSobj, src)
- RegisterSignal(owner, COMSIG_MOB_CLICKED_SHIFT_ON, .proc/examinate_check)
- RegisterSignal(src, COMSIG_ATOM_HEARER_IN_VIEW, .proc/include_owner)
- RegisterSignal(owner, COMSIG_LIVING_REGENERATE_LIMBS, .proc/unlist_head)
- RegisterSignal(owner, COMSIG_LIVING_REVIVE, .proc/retrieve_head)
+ RegisterSignal(owner, COMSIG_MOB_CLICKED_SHIFT_ON,PROC_REF(examinate_check))
+ RegisterSignal(src, COMSIG_ATOM_HEARER_IN_VIEW,PROC_REF(include_owner))
+ RegisterSignal(owner, COMSIG_LIVING_REGENERATE_LIMBS,PROC_REF(unlist_head))
+ RegisterSignal(owner, COMSIG_LIVING_REVIVE,PROC_REF(retrieve_head))
/obj/item/dullahan_relay/proc/examinate_check(mob/source, atom/target)
if(source.client.eye == src)
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index 4db0573c1bd..dc15582fd27 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -57,8 +57,8 @@
g1 = GETGREENPART(default_color)
b1 = GETBLUEPART(default_color)
spec_updatehealth(H)
- RegisterSignal(C, COMSIG_ATOM_EMAG_ACT, .proc/on_emag_act)
- RegisterSignal(C, COMSIG_ATOM_EMP_ACT, .proc/on_emp_act)
+ RegisterSignal(C, COMSIG_ATOM_EMAG_ACT,PROC_REF(on_emag_act))
+ RegisterSignal(C, COMSIG_ATOM_EMP_ACT,PROC_REF(on_emp_act))
ethereal_light = H.mob_light()
/datum/species/ethereal/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
@@ -95,7 +95,7 @@
EMPeffect = TRUE
spec_updatehealth(H)
to_chat(H, span_notice("You feel the light of your body leave you."))
- addtimer(CALLBACK(src, .proc/stop_emp, H), (severity/5) SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //lights out
+ addtimer(CALLBACK(src,PROC_REF(stop_emp), H), (severity/5) SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //lights out
/datum/species/ethereal/proc/on_emag_act(mob/living/carbon/human/H, mob/user)
if(emageffect)
@@ -105,7 +105,7 @@
to_chat(user, span_notice("You tap [H] on the back with your card."))
H.visible_message(span_danger("[H] starts flickering in an array of colors!"))
handle_emag(H)
- addtimer(CALLBACK(src, .proc/stop_emag, H), 30 SECONDS) //Disco mode for 30 seconds! This doesn't affect the ethereal at all besides either annoying some players, or making someone look badass.
+ addtimer(CALLBACK(src,PROC_REF(stop_emag), H), 30 SECONDS) //Disco mode for 30 seconds! This doesn't affect the ethereal at all besides either annoying some players, or making someone look badass.
/datum/species/ethereal/spec_life(mob/living/carbon/human/H)
@@ -124,7 +124,7 @@
return
current_color = pick(ETHEREAL_COLORS)
spec_updatehealth(H)
- addtimer(CALLBACK(src, .proc/handle_emag, H), 5) //Call ourselves every 0.5 seconds to change color
+ addtimer(CALLBACK(src,PROC_REF(handle_emag), H), 5) //Call ourselves every 0.5 seconds to change color
/datum/species/ethereal/proc/stop_emag(mob/living/carbon/human/H)
emageffect = FALSE
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index 581a841ca09..9d41e41dee5 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -469,7 +469,7 @@
var/mob/living/carbon/human/H = owner
H.visible_message(span_warning("[H] starts vibrating!"), span_danger("You start charging your bluespace core..."))
playsound(get_turf(H), 'sound/weapons/flash.ogg', 25, 1)
- addtimer(CALLBACK(src, .proc/teleport, H), 15)
+ addtimer(CALLBACK(src,PROC_REF(teleport), H), 15)
/datum/action/innate/unstable_teleport/proc/teleport(mob/living/carbon/human/H)
H.visible_message(span_warning("[H] disappears in a shower of sparks!"), span_danger("You teleport!"))
@@ -558,7 +558,7 @@
/datum/species/golem/clockwork/on_species_gain(mob/living/carbon/human/H)
. = ..()
H.faction |= "ratvar"
- RegisterSignal(H, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(H, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/species/golem/clockwork/on_species_loss(mob/living/carbon/human/H)
if(!is_servant_of_ratvar(H))
@@ -666,7 +666,7 @@
H.forceMove(src)
cloth_golem = H
to_chat(cloth_golem, span_notice("You start gathering your life energy, preparing to rise again..."))
- addtimer(CALLBACK(src, .proc/revive), revive_time)
+ addtimer(CALLBACK(src,PROC_REF(revive)), revive_time)
else
return INITIALIZE_HINT_QDEL
@@ -920,7 +920,7 @@
badtime.appearance_flags = RESET_COLOR
H.overlays_standing[FIRE_LAYER+0.5] = badtime
H.apply_overlay(FIRE_LAYER+0.5)
- addtimer(CALLBACK(H, /mob/living/carbon/.proc/remove_overlay, FIRE_LAYER+0.5), 25)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/,remove_overlay), FIRE_LAYER+0.5), 25)
else
playsound(get_turf(owner),'sound/magic/RATTLEMEBONES.ogg', 100)
for(var/mob/living/L in orange(7, get_turf(owner)))
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index b07ed878b1d..4b1e1309c95 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -905,8 +905,8 @@
linked_mobs.Add(M)
if(!selflink)
to_chat(M, span_notice("You are now connected to [slimelink_owner.real_name]'s Slime Link."))
- RegisterSignal(M, COMSIG_MOB_DEATH , .proc/unlink_mob)
- RegisterSignal(M, COMSIG_PARENT_QDELETING, .proc/unlink_mob)
+ RegisterSignal(M, COMSIG_MOB_DEATH ,PROC_REF(unlink_mob))
+ RegisterSignal(M, COMSIG_PARENT_QDELETING,PROC_REF(unlink_mob))
var/datum/action/innate/linked_speech/action = new(src)
linked_actions.Add(action)
action.Grant(M)
diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
index 7a40b994a9b..41f0e2e91a8 100644
--- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm
@@ -38,7 +38,7 @@
H.faction |= "mushroom"
mush = new()
mush.teach(H, TRUE)
- RegisterSignal(C, COMSIG_MOB_ON_NEW_MIND, .proc/on_new_mind)
+ RegisterSignal(C, COMSIG_MOB_ON_NEW_MIND,PROC_REF(on_new_mind))
/datum/species/mush/proc/on_new_mind(mob/owner)
mush.teach(owner, TRUE) //make_temporary TRUE as it shouldn't carry over to other mobs on mind transfer_to.
diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm
index 5264be6fce5..d61fe9800e5 100644
--- a/code/modules/mob/living/carbon/human/species_types/synths.dm
+++ b/code/modules/mob/living/carbon/human/species_types/synths.dm
@@ -31,7 +31,7 @@
/datum/species/synth/on_species_gain(mob/living/carbon/human/H, datum/species/old_species)
..()
assume_disguise(old_species, H)
- // RegisterSignal(H, COMSIG_MOB_SAY, .proc/handle_speech)
+ // RegisterSignal(H, COMSIG_MOB_SAY,PROC_REF(handle_speech))
/datum/species/synth/on_species_loss(mob/living/carbon/human/H)
. = ..()
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index a10ff7ade63..d1684cfc00b 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -74,7 +74,7 @@
if(I.force >= best_force)
best_force = I.force
else
- addtimer(CALLBACK(src, .proc/pickup_and_wear, I), 5)
+ addtimer(CALLBACK(src,PROC_REF(pickup_and_wear), I), 5)
return TRUE
@@ -117,7 +117,7 @@
pickupTarget = null
pickupTimer = 0
else
- INVOKE_ASYNC(src, .proc/walk2derpless, pickupTarget.loc)
+ INVOKE_ASYNC(src,PROC_REF(walk2derpless), pickupTarget.loc)
if(Adjacent(pickupTarget) || Adjacent(pickupTarget.loc)) // next to target
drop_all_held_items() // who cares about these items, i want that one!
if(isturf(pickupTarget.loc)) // on floor
@@ -131,7 +131,7 @@
if(!pickpocketing)
pickpocketing = TRUE
M.visible_message("[src] starts trying to take [pickupTarget] from [M]", "[src] tries to take [pickupTarget]!")
- INVOKE_ASYNC(src, .proc/pickpocket, M)
+ INVOKE_ASYNC(src,PROC_REF(pickpocket), M)
return TRUE
switch(mode)
@@ -167,7 +167,7 @@
return TRUE
if(target != null)
- INVOKE_ASYNC(src, .proc/walk2derpless, target)
+ INVOKE_ASYNC(src,PROC_REF(walk2derpless), target)
// pickup any nearby weapon
if(!pickupTarget && prob(MONKEY_WEAPON_PROB))
@@ -252,7 +252,7 @@
if(target.pulledby != src && !istype(target.pulledby, /mob/living/carbon/monkey/))
- INVOKE_ASYNC(src, .proc/walk2derpless, target.loc)
+ INVOKE_ASYNC(src,PROC_REF(walk2derpless), target.loc)
if(Adjacent(target) && isturf(target.loc))
a_intent = INTENT_GRAB
@@ -265,11 +265,11 @@
frustration = 0
else if(!disposing_body)
- INVOKE_ASYNC(src, .proc/walk2derpless, bodyDisposal.loc)
+ INVOKE_ASYNC(src,PROC_REF(walk2derpless), bodyDisposal.loc)
if(Adjacent(bodyDisposal))
disposing_body = TRUE
- addtimer(CALLBACK(src, .proc/stuff_mob_in), 5)
+ addtimer(CALLBACK(src,PROC_REF(stuff_mob_in)), 5)
else
var/turf/olddist = get_dist(src, bodyDisposal)
@@ -410,7 +410,7 @@
var/mob/living/carbon/monkey/M = AM
if(!istype(M) || !M)
return
- INVOKE_ASYNC(src, .proc/knockOver, M)
+ INVOKE_ASYNC(src,PROC_REF(knockOver), M)
return
/mob/living/carbon/monkey/proc/monkeyDrop(obj/item/A)
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index e3092d04c35..5b23e9a4f2c 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -173,4 +173,4 @@
if(prob(10))
var/obj/item/clothing/head/helmet/justice/escape/helmet = new(src)
equip_to_slot_or_del(helmet,SLOT_HEAD)
- INVOKE_ASYNC(helmet, /obj/item.proc/attack_self, src) // todo encapsulate toggle
+ INVOKE_ASYNC(helmet, TYPE_PROC_REF(/obj/item,attack_self), src) // todo encapsulate toggle
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index e96aa2e212c..7dc19083fce 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -84,7 +84,7 @@
med_hud_set_status()
clear_typing_indicator()
if(!gibbed && !QDELETED(src))
- addtimer(CALLBACK(src, .proc/med_hud_set_status), (DEFIB_TIME_LIMIT * 10) + 1)
+ addtimer(CALLBACK(src,PROC_REF(med_hud_set_status)), (DEFIB_TIME_LIMIT * 10) + 1)
stop_pulling()
var/signal = SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed)
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 15a0f7d674e..88aa54e0e21 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -49,7 +49,7 @@
/datum/emote/living/chuckle/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 1, -1, 1, -1, 1 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 1, -1, 1, -1, 1 SECONDS)
/datum/emote/living/chuckle/get_sound(mob/living/M)
if(ishuman(M))
@@ -81,7 +81,7 @@
/datum/emote/living/cough/run_emote(mob/user, params)
. = ..()
// var/matrix/tf = matrix(user.transform)
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 2, -1, 1, -1, 1 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 2, -1, 1, -1, 1 SECONDS)
/datum/emote/living/cough/can_run_emote(mob/user, status_check = TRUE , intentional)
. = ..()
@@ -212,7 +212,7 @@
H.CloseWings()
else
H.OpenWings()
- addtimer(CALLBACK(H, open ? /mob/living/carbon/human/atom/.proc/OpenWings : /mob/living/carbon/human/atom/.proc/CloseWings), wing_time)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(open ? /mob/living/carbon/human/atom/.proc/OpenWings : /mob/living/carbon/human/atom/,CloseWings)), wing_time)
/datum/emote/living/flap/aflap
key = "aflap"
@@ -325,7 +325,7 @@
/datum/emote/living/giggle/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 1, -1, 1, -1, 0.5 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 1, -1, 1, -1, 0.5 SECONDS)
/datum/emote/living/giggle/get_sound(mob/living/M)
if(ishuman(M))
@@ -367,7 +367,7 @@
/datum/emote/living/jump/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, -1, 5, -4, 0, 0.8 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), -1, 5, -4, 0, 0.8 SECONDS)
/datum/emote/living/kiss
key = "kiss"
@@ -395,7 +395,7 @@
/datum/emote/living/audible/laugh/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 2, -2, 2, -2, 1.5 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 2, -2, 2, -2, 1.5 SECONDS)
/datum/emote/living/audible/laugh/get_sound(mob/living/user)
. = ..()
@@ -450,7 +450,7 @@
/datum/emote/living/nod/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_directional_tilt, 5, 0.5 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_directional_tilt), 5, 0.5 SECONDS)
/datum/emote/living/point
key = "point"
@@ -512,7 +512,7 @@
/datum/emote/living/shake/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 1, -1, 1, -1, 1.2 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 1, -1, 1, -1, 1.2 SECONDS)
/datum/emote/living/shiver
key = "shiver"
@@ -523,7 +523,7 @@
/datum/emote/living/shiver/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 1, -1, 1, -1, 1 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 1, -1, 1, -1, 1 SECONDS)
/datum/emote/living/sigh
key = "sigh"
@@ -566,7 +566,7 @@
/datum/emote/living/shake/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 2, -2, 2, -2, 1.5 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 2, -2, 2, -2, 1.5 SECONDS)
/datum/emote/living/sneeze/get_sound(mob/living/M)
if(ishuman(M))
@@ -1146,7 +1146,7 @@
/datum/emote/aflap/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, -1, 5, -4, 0, 0.8 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), -1, 5, -4, 0, 0.8 SECONDS)
/datum/emote/flaparms
key = "flapa"
@@ -1155,7 +1155,7 @@
/datum/emote/flapa/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, -1, 5, -4, 0, 0.8 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), -1, 5, -4, 0, 0.8 SECONDS)
/datum/emote/aflaparms
key = "aflapa"
@@ -1164,7 +1164,7 @@
/datum/emote/aflapa/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, -1, 5, -4, 0, 0.8 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), -1, 5, -4, 0, 0.8 SECONDS)
/datum/emote/wah
key = "wah"
@@ -1237,7 +1237,7 @@
/datum/emote/living/bwoing/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 2, -2, 2, -2, 0.6 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 2, -2, 2, -2, 0.6 SECONDS)
/datum/emote/living/bwoing/skip
key = "skip"
@@ -1253,7 +1253,7 @@
/datum/emote/living/bounce/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 2, 0, 2, 0, 1.5 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 2, 0, 2, 0, 1.5 SECONDS)
/datum/emote/plap
key = "plap"
@@ -1284,7 +1284,7 @@
/datum/emote/aie/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 0, 5, 0, 0, 0.8 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 0, 5, 0, 0, 0.8 SECONDS)
/datum/emote/nightstalker
@@ -1409,7 +1409,7 @@
/datum/emote/rattle/run_emote(mob/user, params)
. = ..()
- INVOKE_ASYNC(user, /atom/.proc/do_double_bounce, 1, -1, 1, -1, 1.5 SECONDS)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/atom/,do_double_bounce), 1, -1, 1, -1, 1.5 SECONDS)
/datum/emote/snakehiss
@@ -2209,7 +2209,7 @@ GLOBAL_LIST_INIT(special_phrases, list(
emote_type = EMOTE_AUDIBLE
sound = 'modular_coyote/sound/verbs/foxgecker.ogg'
- datum/emote/living/mow //cat looking ass playing brick game looking ass cat i swear to god I'm taking you to the vet merek
+/datum/emote/living/mow //cat looking ass playing brick game looking ass cat i swear to god I'm taking you to the vet merek
key = "mow"
key_third_person = "mows like an insane cat."
message = "mows!"
diff --git a/code/modules/mob/living/init_signals.dm b/code/modules/mob/living/init_signals.dm
index ec1e5b4241e..04aa2c76090 100644
--- a/code/modules/mob/living/init_signals.dm
+++ b/code/modules/mob/living/init_signals.dm
@@ -1,7 +1,7 @@
/// Called on [/mob/living/Initialize()], for the mob to register to relevant signals.
/mob/living/proc/register_init_signals()
- RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), .proc/on_knockedout_trait_gain)
- RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), .proc/on_knockedout_trait_loss)
+ RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT),PROC_REF(on_knockedout_trait_gain))
+ RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT),PROC_REF(on_knockedout_trait_loss))
/// Called when [TRAIT_KNOCKEDOUT] is added to the mob.
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index cdb31f55aea..de50b47b747 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -97,7 +97,7 @@
handle_diginvis() //AI becomes unable to see mob
if((movement_type & FLYING) && !(movement_type & FLOATING)) //TODO: Better floating
- INVOKE_ASYNC(src, /atom/movable.proc/float, TRUE)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable,float), TRUE)
if(!loc)
return FALSE
@@ -214,7 +214,7 @@
/mob/living/proc/gravity_animate()
if(!get_filter("gravity"))
add_filter("gravity",1, GRAVITY_MOTION_BLUR)
- INVOKE_ASYNC(src, .proc/gravity_pulse_animation)
+ INVOKE_ASYNC(src,PROC_REF(gravity_pulse_animation))
/mob/living/proc/gravity_pulse_animation()
animate(get_filter("gravity"), y = 1, time = 10)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index da7949589b1..6bf8dd13e67 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -3,7 +3,7 @@
add_verb(src, /mob/living/verb/subtler)
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -485,12 +485,12 @@
return
else
src.reset_perspective(T)
- RegisterSignal(src, COMSIG_MOB_CLIENT_CHANGE_VIEW, .proc/stop_looking_up) //no binos/scops
- RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/stop_looking_up)
- RegisterSignal(src, COMSIG_LIVING_STATUS_KNOCKDOWN, .proc/stop_looking_up)
- RegisterSignal(src, COMSIG_LIVING_STATUS_PARALYZE, .proc/stop_looking_up)
- RegisterSignal(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, .proc/stop_looking_up)
- RegisterSignal(src, COMSIG_LIVING_STATUS_SLEEP, .proc/stop_looking_up)
+ RegisterSignal(src, COMSIG_MOB_CLIENT_CHANGE_VIEW,PROC_REF(stop_looking_up)) //no binos/scops
+ RegisterSignal(src, COMSIG_MOVABLE_MOVED,PROC_REF(stop_looking_up))
+ RegisterSignal(src, COMSIG_LIVING_STATUS_KNOCKDOWN,PROC_REF(stop_looking_up))
+ RegisterSignal(src, COMSIG_LIVING_STATUS_PARALYZE,PROC_REF(stop_looking_up))
+ RegisterSignal(src, COMSIG_LIVING_STATUS_UNCONSCIOUS,PROC_REF(stop_looking_up))
+ RegisterSignal(src, COMSIG_LIVING_STATUS_SLEEP,PROC_REF(stop_looking_up))
/mob/living/proc/stop_looking_up()
reset_perspective(null)
@@ -923,7 +923,7 @@
else
throw_alert("gravity", /atom/movable/screen/alert/weightless)
if(!override && !is_flying())
- INVOKE_ASYNC(src, /atom/movable.proc/float, !has_gravity)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable,float), !has_gravity)
/mob/living/float(on)
if(throwing)
diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm
index a5a1fb41def..5050cbecd7e 100644
--- a/code/modules/mob/living/living_active_block.dm
+++ b/code/modules/mob/living/living_active_block.dm
@@ -103,7 +103,7 @@
var/delay = data.block_start_delay
combat_flags |= COMBAT_FLAG_ACTIVE_BLOCK_STARTING
animate(src, pixel_x = get_standard_pixel_x_offset(), pixel_y = get_standard_pixel_y_offset(), time = delay, FALSE, SINE_EASING | EASE_IN)
- if(!do_after_advanced(src, delay, src, DO_AFTER_REQUIRES_USER_ON_TURF|DO_AFTER_NO_COEFFICIENT, CALLBACK(src, .proc/continue_starting_active_block), MOBILITY_USE, null, null, I))
+ if(!do_after_advanced(src, delay, src, DO_AFTER_REQUIRES_USER_ON_TURF|DO_AFTER_NO_COEFFICIENT, CALLBACK(src,PROC_REF(continue_starting_active_block)), MOBILITY_USE, null, null, I))
to_chat(src, span_warning("You fail to raise [I]."))
combat_flags &= ~(COMBAT_FLAG_ACTIVE_BLOCK_STARTING)
animate(src, pixel_x = get_standard_pixel_x_offset(), pixel_y = get_standard_pixel_y_offset(), time = 2.5, FALSE, SINE_EASING | EASE_IN, ANIMATION_END_NOW)
diff --git a/code/modules/mob/living/living_active_parry.dm b/code/modules/mob/living/living_active_parry.dm
index e0b06f4e4b2..21a954f4820 100644
--- a/code/modules/mob/living/living_active_parry.dm
+++ b/code/modules/mob/living/living_active_parry.dm
@@ -79,7 +79,7 @@
adjustStaminaLossBuffered(data.parry_stamina_cost)
parry_start_time = world.time
successful_parries = list()
- addtimer(CALLBACK(src, .proc/end_parry_sequence), full_parry_duration)
+ addtimer(CALLBACK(src,PROC_REF(end_parry_sequence)), full_parry_duration)
if(data.parry_flags & PARRY_LOCK_ATTACKING)
ADD_TRAIT(src, TRAIT_MOBILITY_NOUSE, ACTIVE_PARRY_TRAIT)
if(data.parry_flags & PARRY_LOCK_SPRINTING)
@@ -340,7 +340,7 @@
if(owner)
attach_to(owner)
if(autorun)
- INVOKE_ASYNC(src, .proc/run_animation, windup, active, spindown)
+ INVOKE_ASYNC(src,PROC_REF(run_animation), windup, active, spindown)
/obj/effect/abstract/parry/main/Destroy()
detach_from(owner)
diff --git a/code/modules/mob/living/living_block.dm b/code/modules/mob/living/living_block.dm
index 4d2e8351466..2a7de7f67c0 100644
--- a/code/modules/mob/living/living_block.dm
+++ b/code/modules/mob/living/living_block.dm
@@ -27,7 +27,7 @@
return_list[BLOCK_RETURN_PROJECTILE_BLOCK_PERCENTAGE] = 100
return
var/list/obj/item/tocheck = get_blocking_items()
- sortTim(tocheck, /proc/cmp_numeric_dsc, TRUE)
+ sortTim(tocheck, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE)
// i don't like this
var/block_chance_modifier = round(damage / -3)
if(real_attack)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index f09b606a06b..bce55527724 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -537,10 +537,10 @@
if((GLOB.cult_narsie.souls == GLOB.cult_narsie.soul_goal) && (GLOB.cult_narsie.resolved == FALSE))
GLOB.cult_narsie.resolved = TRUE
sound_to_playing_players('sound/machines/alarm.ogg')
- addtimer(CALLBACK(GLOBAL_PROC, .proc/cult_ending_helper, 1), 120)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/ending_helper), 270)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(cult_ending_helper), 1), 120)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(ending_helper)), 270)
if(client)
- INVOKE_ASYNC(GLOBAL_PROC, .proc/makeNewConstruct, /mob/living/simple_animal/hostile/construct/harvester, src, null, TRUE) // must pass keyword args explicitly
+ INVOKE_ASYNC(GLOBAL_PROC_REF(makeNewConstruct), /mob/living/simple_animal/hostile/construct/harvester, src, null, TRUE) // must pass keyword args explicitly
else
switch(rand(1, 6))
if(1)
@@ -568,7 +568,7 @@
/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash)
if(get_eye_protection() < intensity && (override_blindness_check || !(HAS_TRAIT(src, TRAIT_BLIND))))
overlay_fullscreen("flash", type)
- addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25)
+ addtimer(CALLBACK(src,PROC_REF(clear_fullscreen), "flash", 25), 25)
return TRUE
return FALSE
diff --git a/code/modules/mob/living/living_mobility.dm b/code/modules/mob/living/living_mobility.dm
index 354e6bd9b6a..190661a37ae 100644
--- a/code/modules/mob/living/living_mobility.dm
+++ b/code/modules/mob/living/living_mobility.dm
@@ -171,7 +171,7 @@
//Handle citadel autoresist
if(CHECK_MOBILITY(src, MOBILITY_MOVE) && !(combat_flags & COMBAT_FLAG_INTENTIONALLY_RESTING) && canstand_involuntary && iscarbon(src) && client?.prefs?.autostand)//CIT CHANGE - adds autostanding as a preference
- addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto
+ addtimer(CALLBACK(src,PROC_REF(resist_a_rest), TRUE), 0) //CIT CHANGE - ditto
// Movespeed mods based on arms/legs quantity
if(!get_leg_ignore())
diff --git a/code/modules/mob/living/living_sprint.dm b/code/modules/mob/living/living_sprint.dm
index c0df19ba57f..00f5475a948 100644
--- a/code/modules/mob/living/living_sprint.dm
+++ b/code/modules/mob/living/living_sprint.dm
@@ -1,6 +1,6 @@
/mob/living/ComponentInitialize()
. = ..()
- RegisterSignal(src, list(SIGNAL_ADDTRAIT(TRAIT_SPRINT_LOCKED), SIGNAL_REMOVETRAIT(TRAIT_SPRINT_LOCKED)), .proc/update_sprint_lock)
+ RegisterSignal(src, list(SIGNAL_ADDTRAIT(TRAIT_SPRINT_LOCKED), SIGNAL_REMOVETRAIT(TRAIT_SPRINT_LOCKED)),PROC_REF(update_sprint_lock))
/mob/living/proc/update_sprint_icon()
var/atom/movable/screen/sprintbutton/S = locate() in hud_used?.static_inventory
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 6fc87adc2c1..c9ccc005c25 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -244,6 +244,7 @@
the_dead[M] = TRUE
var/eavesdropping
+
var/eavesrendered
if(eavesdrop_range)
eavesdropping = stars(message)
@@ -265,7 +266,7 @@
speech_bubble_recipients.Add(M.client)
var/image/I = image('icons/mob/talk.dmi', src, "[bubble_type][say_test(message)]", FLY_LAYER)
I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
- INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_recipients, 30)
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), I, speech_bubble_recipients, 30)
/mob/proc/binarycheck()
return FALSE
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 1d65712825a..54d708d0a47 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -131,7 +131,7 @@
create_eye()
if(client)
- INVOKE_ASYNC(src, .proc/apply_pref_name,"ai",client)
+ INVOKE_ASYNC(src,PROC_REF(apply_pref_name),"ai",client)
set_core_display_icon()
diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm
index 29543a792f8..0c56455c43a 100644
--- a/code/modules/mob/living/silicon/ai/death.dm
+++ b/code/modules/mob/living/silicon/ai/death.dm
@@ -23,7 +23,7 @@
GLOB.shuttle_caller_list -= src
SSshuttle.autoEvac()
- INVOKE_ASYNC(src, .proc/ShutOffDoomsdayDevice)
+ INVOKE_ASYNC(src,PROC_REF(ShutOffDoomsdayDevice))
if(explosive)
spawn(10)
diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm
index 4591720b798..5ce8818f190 100644
--- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm
@@ -50,7 +50,7 @@
/datum/camerachunk/proc/hasChanged(update_now = 0)
if(seenby.len || update_now)
- addtimer(CALLBACK(src, .proc/update), UPDATE_BUFFER, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(update)), UPDATE_BUFFER, TIMER_UNIQUE)
else
changed = 1
diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm
index cdaba8b963d..587d307e67e 100644
--- a/code/modules/mob/living/silicon/ai/life.dm
+++ b/code/modules/mob/living/silicon/ai/life.dm
@@ -175,7 +175,7 @@
blind_eyes(1)
update_sight()
to_chat(src, "You've lost power!")
- addtimer(CALLBACK(src, .proc/start_RestorePowerRoutine), 20)
+ addtimer(CALLBACK(src,PROC_REF(start_RestorePowerRoutine)), 20)
#undef POWER_RESTORATION_OFF
#undef POWER_RESTORATION_START
diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm
index 26a77a37e82..d061b5696f5 100644
--- a/code/modules/mob/living/silicon/death.dm
+++ b/code/modules/mob/living/silicon/death.dm
@@ -6,7 +6,7 @@
/mob/living/silicon/death(gibbed)
if(!gibbed)
- INVOKE_ASYNC(src, .proc/emote, "deathgasp")
+ INVOKE_ASYNC(src,PROC_REF(emote), "deathgasp")
diag_hud_set_status()
diag_hud_set_health()
update_health_hud()
diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm
index d92f4a5999c..1faab8c4476 100644
--- a/code/modules/mob/living/silicon/laws.dm
+++ b/code/modules/mob/living/silicon/laws.dm
@@ -9,7 +9,7 @@
throw_alert("newlaw", /atom/movable/screen/alert/newlaw)
if(announce && last_lawchange_announce != world.time)
to_chat(src, "Your laws have been changed.")
- addtimer(CALLBACK(src, .proc/show_laws), 0)
+ addtimer(CALLBACK(src,PROC_REF(show_laws)), 0)
last_lawchange_announce = world.time
/mob/living/silicon/proc/set_law_sixsixsix(law, announce = TRUE)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index a7fe9016946..4e95fa2273f 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -316,7 +316,7 @@
deltimer(radio_short_timerid)
radio_short = TRUE
to_chat(src, span_danger("Your radio shorts out!"))
- radio_short_timerid = addtimer(CALLBACK(src, .proc/unshort_radio), radio_short_cooldown, flags = TIMER_STOPPABLE)
+ radio_short_timerid = addtimer(CALLBACK(src,PROC_REF(unshort_radio)), radio_short_cooldown, flags = TIMER_STOPPABLE)
/mob/living/silicon/pai/proc/unshort_radio()
radio_short = FALSE
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index d9a78c45dfd..2e9612c6641 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -16,7 +16,7 @@
wires = new /datum/wires/robot(src)
AddElement(/datum/element/empprotection, EMP_PROTECT_WIRES)
- RegisterSignal(src, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, .proc/charge)
+ RegisterSignal(src, COMSIG_PROCESS_BORGCHARGER_OCCUPANT,PROC_REF(charge))
robot_modules_background = new()
robot_modules_background.icon_state = "block"
@@ -63,7 +63,7 @@
mmi.brainmob.real_name = src.real_name
mmi.brainmob.container = mmi
- INVOKE_ASYNC(src, .proc/updatename)
+ INVOKE_ASYNC(src,PROC_REF(updatename))
equippable_hats = typecacheof(equippable_hats)
@@ -334,11 +334,11 @@
/mob/living/silicon/robot/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weldingtool) && (user.a_intent != INTENT_HARM || user == src))
- INVOKE_ASYNC(src, .proc/attempt_welder_repair, W, user)
+ INVOKE_ASYNC(src,PROC_REF(attempt_welder_repair), W, user)
return
else if(istype(W, /obj/item/stack/cable_coil) && wiresexposed)
- INVOKE_ASYNC(src, .proc/attempt_cable_repair, W, user)
+ INVOKE_ASYNC(src,PROC_REF(attempt_cable_repair), W, user)
return
else if(istype(W, /obj/item/crowbar)) // crowbar means open or close the cover
@@ -747,7 +747,7 @@
cell = new /obj/item/stock_parts/cell/hyper(src, 25000)
radio = new /obj/item/radio/borg/syndicate(src)
laws = new /datum/ai_laws/syndicate_override()
- addtimer(CALLBACK(src, .proc/show_playstyle), 5)
+ addtimer(CALLBACK(src,PROC_REF(show_playstyle)), 5)
/mob/living/silicon/robot/modules/syndicate/proc/show_playstyle()
if(playstyle_string)
@@ -950,7 +950,7 @@
hat_offset = module.hat_offset
magpulse = module.magpulsing
- INVOKE_ASYNC(src, .proc/updatename)
+ INVOKE_ASYNC(src,PROC_REF(updatename))
/mob/living/silicon/robot/proc/place_on_head(obj/item/new_hat)
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index f1a62e67420..a38f9ee9b94 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -127,7 +127,7 @@
ResetModule()
return TRUE
- INVOKE_ASYNC(src, .proc/beep_boop_rogue_bot, user)
+ INVOKE_ASYNC(src,PROC_REF(beep_boop_rogue_bot), user)
return TRUE
/mob/living/silicon/robot/proc/beep_boop_rogue_bot(mob/user)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 80b3670414a..fc9e09d219a 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -207,7 +207,7 @@
R.module = RM
R.update_module_innate()
RM.rebuild_modules()
- INVOKE_ASYNC(RM, .proc/do_transform_animation)
+ INVOKE_ASYNC(RM,PROC_REF(do_transform_animation))
R.maxHealth = borghealth
R.health = min(borghealth, R.health)
qdel(src)
@@ -334,7 +334,7 @@
"Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "medical")
)
med_icons = sortList(med_icons)
- var/med_borg_icon = show_radial_menu(R, R , med_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/med_borg_icon = show_radial_menu(R, R , med_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(med_borg_icon)
if("Default")
cyborg_base_icon = "medical"
@@ -388,7 +388,7 @@
"Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "engineer")
)
engi_icons = sortList(engi_icons)
- var/engi_borg_icon = show_radial_menu(R, R , engi_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/engi_borg_icon = show_radial_menu(R, R , engi_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(engi_borg_icon)
if("Default")
cyborg_base_icon = "engineer"
@@ -427,7 +427,7 @@
"Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "sec"),
)
sec_icons = sortList(sec_icons)
- var/sec_borg_icon = show_radial_menu(R, R , sec_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/sec_borg_icon = show_radial_menu(R, R , sec_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(sec_borg_icon)
if("Default")
cyborg_base_icon = "sec"
@@ -475,7 +475,7 @@
var/static/list/peace_icons = sortList(list(
"Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "peace")
))
- var/peace_borg_icon = show_radial_menu(R, R , peace_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/peace_borg_icon = show_radial_menu(R, R , peace_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(peace_borg_icon)
if("Default")
cyborg_base_icon = "peace"
@@ -580,7 +580,7 @@
"(Service) Can" = image(icon = 'icons/mob/robots.dmi', icon_state = "kent"),
"(Service) Tophat" = image(icon = 'icons/mob/robots.dmi', icon_state = "tophat"),
)
- var/service_robot_icon = show_radial_menu(R, R , service_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/service_robot_icon = show_radial_menu(R, R , service_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(service_robot_icon)
if("(Service) Waitress")
cyborg_base_icon = "service_f"
@@ -641,7 +641,7 @@
"Lavaland" = image(icon = 'icons/mob/robots.dmi', icon_state = "miner"),
"Asteroid" = image(icon = 'icons/mob/robots.dmi', icon_state = "minerOLD")
)
- var/mining_borg_icon = show_radial_menu(R, R , mining_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/mining_borg_icon = show_radial_menu(R, R , mining_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(mining_borg_icon)
if("Lavaland")
cyborg_base_icon = "miner"
@@ -697,7 +697,7 @@
var/mob/living/silicon/robot/assault = loc
assault.faction += "wastebots" //So other assaultrons don't gank you for existing.
-obj/item/robot_module/assaultron/remove_module(obj/item/I, delete_after)
+/obj/item/robot_module/assaultron/remove_module(obj/item/I, delete_after)
..()
var/mob/living/silicon/robot/assault = loc
assault.faction -= "wastebots" //Removes the faction if the module is removed.
diff --git a/code/modules/mob/living/silicon/silicon_movement.dm b/code/modules/mob/living/silicon/silicon_movement.dm
index 590326eda1b..6cc0f42f88f 100644
--- a/code/modules/mob/living/silicon/silicon_movement.dm
+++ b/code/modules/mob/living/silicon/silicon_movement.dm
@@ -18,5 +18,5 @@
oldLoc = get_turf(oldLoc)
if(!QDELETED(builtInCamera) && !updating && oldLoc != get_turf(src))
updating = TRUE
- addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), SILICON_CAMERA_BUFFER)
+ addtimer(CALLBACK(src,PROC_REF(do_camera_update), oldLoc), SILICON_CAMERA_BUFFER)
#undef SILICON_CAMERA_BUFFER
diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
index 611a8815459..7d9989a67b2 100644
--- a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
+++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
@@ -28,12 +28,12 @@
if(ismob(AM) && AM == target)
visible_message("[src] flails his swords and cuts [AM]!")
playsound(src,'sound/effects/beepskyspinsabre.ogg',100,TRUE,-1)
- INVOKE_ASYNC(src, .proc/stun_attack, AM)
+ INVOKE_ASYNC(src,PROC_REF(stun_attack), AM)
/mob/living/simple_animal/bot/secbot/grievous/Initialize()
. = ..()
weapon = new baton_type(src)
- INVOKE_ASYNC(weapon, /obj/item.proc/attack_self, src)
+ INVOKE_ASYNC(weapon, TYPE_PROC_REF(/obj/item,attack_self), src)
/mob/living/simple_animal/bot/secbot/grievous/Destroy()
QDEL_NULL(weapon)
@@ -51,7 +51,7 @@
weapon.attack(C, src)
playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE, -1)
if(C.stat == DEAD)
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 2)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,update_icon)), 2)
back_to_idle()
@@ -107,7 +107,7 @@
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
- threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
if(!threatlevel)
continue
@@ -122,7 +122,7 @@
icon_state = "grievous-c"
visible_message("[src] points at [C.name]!")
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
break
else
continue
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index 9b54f79cfba..753dd489070 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -559,7 +559,7 @@ Pass a positive integer as an argument to override a bot's default speed.
turn_on() //Saves the AI the hassle of having to activate a bot manually.
access_card = all_access //Give the bot all-access while under the AI's command.
if(client)
- reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time
+ reset_access_timer_id = addtimer(CALLBACK (src,PROC_REF(bot_reset)), 600, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time
to_chat(src, span_notice("Priority waypoint set by [icon2html(calling_ai, src)] [caller]. Proceed to [end_area].
[path.len-1] meters to destination. You have been granted additional door access for 60 seconds."))
if(message)
to_chat(calling_ai, span_notice("[icon2html(src, calling_ai)] [name] called to [end_area]. [path.len-1] meters to destination."))
diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
index ebed677948a..dc46caaeecb 100644
--- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm
@@ -147,7 +147,7 @@
stolen_valor += C.job
update_titles()
- INVOKE_ASYNC(weapon, /obj/item/weapon/.proc/attack, C, src)
+ INVOKE_ASYNC(weapon, TYPE_PROC_REF(/obj/item/weapon/,attack), C, src)
C.Knockdown(20)
/mob/living/simple_animal/bot/cleanbot/attackby(obj/item/W, mob/user, params)
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index c4e736c8609..828f6fed8cf 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -171,7 +171,7 @@ Auto Patrol[]"},
/mob/living/simple_animal/bot/ed209/proc/retaliate(mob/living/carbon/human/H)
var/judgement_criteria = judgement_criteria()
- threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
threatlevel += 6
if(threatlevel >= 4)
target = H
@@ -223,7 +223,7 @@ Auto Patrol[]"},
var/threatlevel = 0
if((C.stat) || (C.lying))
continue
- threatlevel = C.assess_threat(judgement_criteria, lasercolor, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = C.assess_threat(judgement_criteria, lasercolor, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
//speak(C.real_name + text(": threat: []", threatlevel))
if(threatlevel < 4 )
continue
@@ -325,13 +325,13 @@ Auto Patrol[]"},
target = null
last_found = world.time
frustration = 0
- INVOKE_ASYNC(src, .proc/handle_automated_action) //ensure bot quickly responds
+ INVOKE_ASYNC(src,PROC_REF(handle_automated_action)) //ensure bot quickly responds
/mob/living/simple_animal/bot/ed209/proc/back_to_hunt()
anchored = FALSE
frustration = 0
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action) //ensure bot quickly responds
+ INVOKE_ASYNC(src,PROC_REF(handle_automated_action)) //ensure bot quickly responds
// look for a criminal in view of the bot
@@ -348,7 +348,7 @@ Auto Patrol[]"},
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
- threatlevel = C.assess_threat(judgement_criteria, lasercolor, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = C.assess_threat(judgement_criteria, lasercolor, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
if(!threatlevel)
continue
@@ -546,7 +546,7 @@ Auto Patrol[]"},
if(ishuman(C))
var/mob/living/carbon/human/H = C
var/judgement_criteria = judgement_criteria()
- threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
log_combat(src,C,"stunned")
if(declare_arrests)
var/area/location = get_area(src)
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index fc846e97fe4..6ac62966dc7 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -475,8 +475,8 @@
process_bot()
num_steps--
if(mode != BOT_IDLE)
- var/process_timer = addtimer(CALLBACK(src, .proc/process_bot), 2, TIMER_LOOP|TIMER_STOPPABLE)
- addtimer(CALLBACK(GLOBAL_PROC, /proc/deltimer, process_timer), (num_steps*2) + 1)
+ var/process_timer = addtimer(CALLBACK(src,PROC_REF(process_bot)), 2, TIMER_LOOP|TIMER_STOPPABLE)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(deltimer), process_timer), (num_steps*2) + 1)
/mob/living/simple_animal/bot/mulebot/proc/process_bot()
if(!on || client)
@@ -541,7 +541,7 @@
buzz(SIGH)
mode = BOT_WAIT_FOR_NAV
blockcount = 0
- addtimer(CALLBACK(src, .proc/process_blocked, next), 2 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(process_blocked), next), 2 SECONDS)
return
return
else
@@ -554,7 +554,7 @@
if(BOT_NAV) // calculate new path
mode = BOT_WAIT_FOR_NAV
- INVOKE_ASYNC(src, .proc/process_nav)
+ INVOKE_ASYNC(src,PROC_REF(process_nav))
/mob/living/simple_animal/bot/mulebot/proc/process_blocked(turf/next)
calc_path(avoid=next)
@@ -603,7 +603,7 @@
/mob/living/simple_animal/bot/mulebot/proc/start_home()
if(!on)
return
- INVOKE_ASYNC(src, .proc/do_start_home)
+ INVOKE_ASYNC(src,PROC_REF(do_start_home))
update_icon()
/mob/living/simple_animal/bot/mulebot/proc/do_start_home()
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index ac39b915b77..5b89877e41c 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -263,7 +263,7 @@ Auto Patrol: []"},
/mob/living/simple_animal/bot/secbot/proc/retaliate(mob/living/carbon/human/H)
var/judgement_criteria = judgement_criteria()
- threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
threatlevel += 6
if(threatlevel >= 4)
target = H
@@ -403,7 +403,7 @@ Auto Patrol: []"},
/mob/living/simple_animal/bot/secbot/proc/stun_attack(mob/living/carbon/C)
var/judgement_criteria = judgement_criteria()
icon_state = "secbot-c"
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 2)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/,update_icon)), 2)
var/threat = 5
if(ishuman(C))
if(stored_fashion)
@@ -415,12 +415,12 @@ Auto Patrol: []"},
C.stuttering = 5
C.DefaultCombatKnockdown(100)
var/mob/living/carbon/human/H = C
- threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
else
playsound(src, 'sound/weapons/egloves.ogg', 50, TRUE, -1)
C.DefaultCombatKnockdown(100)
C.stuttering = 5
- threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
log_combat(src,C,"stunned")
if(declare_arrests)
@@ -522,13 +522,13 @@ Auto Patrol: []"},
target = null
last_found = world.time
frustration = 0
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
/mob/living/simple_animal/bot/secbot/proc/back_to_hunt()
anchored = FALSE
frustration = 0
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
// look for a criminal in view of the bot
/mob/living/simple_animal/bot/secbot/proc/look_for_perp()
@@ -541,7 +541,7 @@ Auto Patrol: []"},
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
- threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src,PROC_REF(check_for_weapons)))
if(!threatlevel)
continue
@@ -553,7 +553,7 @@ Auto Patrol: []"},
playsound(loc, pick('sound/voice/beepsky/criminal.ogg', 'sound/voice/beepsky/justice.ogg', 'sound/voice/beepsky/freeze.ogg'), 50, FALSE)
visible_message(process_emote("TAUNT", target, threatlevel))
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src,PROC_REF(handle_automated_action))
break
else
continue
diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm
index 041eef217ed..3c3ac80d527 100644
--- a/code/modules/mob/living/simple_animal/corpse.dm
+++ b/code/modules/mob/living/simple_animal/corpse.dm
@@ -209,7 +209,7 @@
id = /obj/item/card/id
mask = /obj/item/clothing/mask/rat/bee
-obj/effect/mob_spawn/human/corpse/raider
+/obj/effect/mob_spawn/human/corpse/raider
uniform = /obj/item/clothing/under/jabroni
suit = /obj/item/clothing/suit/armor/heavy/metal
shoes = /obj/item/clothing/shoes/jackboots
@@ -217,7 +217,7 @@ obj/effect/mob_spawn/human/corpse/raider
hair_style = "Bald"
facial_hair_style = "Shaved"
-obj/effect/mob_spawn/human/corpse/raidermelee
+/obj/effect/mob_spawn/human/corpse/raidermelee
name = "Raider Melee Corpse"
uniform = /obj/item/clothing/under/jabroni
suit = /obj/item/clothing/suit/armor/light/leather/leather_jacket
@@ -253,7 +253,7 @@ obj/effect/mob_spawn/human/corpse/raidermelee
hair_style = "Bald"
facial_hair_style = "Shaved"
-obj/effect/mob_spawn/human/corpse/raiderbossalt
+/obj/effect/mob_spawn/human/corpse/raiderbossalt
name = "Raider Boss Corpse"
uniform = /obj/item/clothing/under/f13/mercc
suit = /obj/item/clothing/suit/armor/heavy/metal/reinforced
diff --git a/code/modules/mob/living/simple_animal/eldritch_demons.dm b/code/modules/mob/living/simple_animal/eldritch_demons.dm
index f9233a7fe30..8da0595afc4 100644
--- a/code/modules/mob/living/simple_animal/eldritch_demons.dm
+++ b/code/modules/mob/living/simple_animal/eldritch_demons.dm
@@ -85,7 +85,7 @@
var/datum/action/innate/mansus_speech/action = new(src)
linked_mobs[mob_linked] = action
action.Grant(mob_linked)
- RegisterSignal(mob_linked, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING) , .proc/unlink_mob)
+ RegisterSignal(mob_linked, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING) ,PROC_REF(unlink_mob))
return TRUE
/mob/living/simple_animal/hostile/eldritch/raw_prophet/proc/unlink_mob(mob/living/mob_linked)
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index 95d0f411e1d..f9b2db8585a 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -254,7 +254,7 @@
/mob/living/simple_animal/pet/dog/corgi/proc/place_on_head(obj/item/item_to_add, mob/user)
if(istype(item_to_add, /obj/item/grenade/plastic)) // last thing he ever wears, I guess
- INVOKE_ASYNC(item_to_add, /obj/item.proc/afterattack, src,user,1)
+ INVOKE_ASYNC(item_to_add, TYPE_PROC_REF(/obj/item,afterattack), src,user,1)
return
if(inventory_head)
@@ -460,7 +460,7 @@
if(prob(1))
emote("me", EMOTE_VISIBLE, pick("dances around.","chases its tail!"))
- INVOKE_ASYNC(GLOBAL_PROC, .proc/dance_rotate, src, null, TRUE)
+ INVOKE_ASYNC(GLOBAL_PROC_REF(dance_rotate), src, null, TRUE)
/mob/living/simple_animal/pet/dog/corgi/Ian/narsie_act()
playsound(src, 'sound/magic/demon_dies.ogg', 75, TRUE)
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
index fce350848f3..adc697f283c 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm
@@ -103,7 +103,7 @@
. = ..()
if(can_be_held)
//icon/item state is defined in mob_holder/drone_worn_icon()
- AddElement(/datum/element/mob_holder, null, 'icons/mob/clothing/head.dmi', 'icons/mob/inhands/clothing_righthand.dmi', 'icons/mob/inhands/clothing_lefthand.dmi', INV_SLOTBIT_HEAD, /datum/element/mob_holder.proc/drone_worn_icon)
+ AddElement(/datum/element/mob_holder, null, 'icons/mob/clothing/head.dmi', 'icons/mob/inhands/clothing_righthand.dmi', 'icons/mob/inhands/clothing_lefthand.dmi', INV_SLOTBIT_HEAD, TYPE_PROC_REF(/datum/element/mob_holder,drone_worn_icon))
/mob/living/simple_animal/drone/med_hud_set_health()
var/image/holder = hud_list[DIAG_HUD]
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index b09823be62e..59a375d9a7f 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -68,7 +68,7 @@
var/mob/M = AM
to_chat(M, span_notice("[icon2html(src, M)] Squeak!"))
if(istype(AM, /obj/item/reagent_containers/food/snacks/royalcheese))
- INVOKE_ASYNC(src, .proc/evolve)
+ INVOKE_ASYNC(src,PROC_REF(evolve))
qdel(AM)
/mob/living/simple_animal/mouse/handle_automated_action()
diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
index 8946f4512e1..7cf0bd6d726 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
@@ -31,7 +31,7 @@
/mob/living/simple_animal/hostile/guardian/charger/Shoot(atom/targeted_atom)
charging = 1
- throw_at(targeted_atom, range, 1, src, FALSE, TRUE, callback = CALLBACK(src, .proc/charging_end))
+ throw_at(targeted_atom, range, 1, src, FALSE, TRUE, callback = CALLBACK(src,PROC_REF(charging_end)))
/mob/living/simple_animal/hostile/guardian/charger/proc/charging_end()
charging = 0
diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
index ba633306dbf..ad064a6f508 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
@@ -38,7 +38,7 @@
return
if(isobj(A) && Adjacent(A))
if(bomb_cooldown <= world.time && !stat)
- var/datum/component/killerqueen/K = A.AddComponent(/datum/component/killerqueen, EXPLODE_HEAVY, CALLBACK(src, .proc/on_explode), CALLBACK(src, .proc/on_failure), \
+ var/datum/component/killerqueen/K = A.AddComponent(/datum/component/killerqueen, EXPLODE_HEAVY, CALLBACK(src,PROC_REF(on_explode)), CALLBACK(src,PROC_REF(on_failure)), \
examine_message = "It glows with a strange light!")
QDEL_IN(K, 1 MINUTES)
to_chat(src, "Success! Bomb armed!")
diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
index 3dfc0831984..e9412285b2c 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm
@@ -110,7 +110,7 @@
/obj/effect/snare/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index 3edd70db0c0..f0fc1b7b402 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -108,7 +108,7 @@
to_chat(user, span_info("You strap the armor plating to [A] and sharpen [A.p_their()] claws with the nail filer. This was a great idea."))
qdel(src)
-mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Several functions used from it.
+/mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Several functions used from it.
name = "Terrygold"
icon_state = "butterbear"
icon_living = "butterbear"
@@ -153,7 +153,7 @@ mob/living/simple_animal/hostile/bear/butter //The mighty companion to Cak. Seve
to_chat(src, span_notice("Your name is now \"new_name\"!"))
name = new_name
-mob/living/simple_animal/hostile/bear/butter/AttackingTarget() //Makes some attacks by the butter bear slip those who dare cross its path.
+/mob/living/simple_animal/hostile/bear/butter/AttackingTarget() //Makes some attacks by the butter bear slip those who dare cross its path.
var/atom/my_target = get_target()
if(!isliving(my_target))
return
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index 7d9ce1cba30..0757ed0d994 100644
--- a/code/modules/mob/living/simple_animal/hostile/bees.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bees.dm
@@ -210,7 +210,7 @@
return
beehome = BB
BB.bees |= src
- RegisterSignal(BB, COMSIG_PARENT_QDELETING, .proc/move_out)
+ RegisterSignal(BB, COMSIG_PARENT_QDELETING,PROC_REF(move_out))
/mob/living/simple_animal/hostile/poison/bees/proc/move_out()
if(!beehome)
@@ -326,7 +326,7 @@
/mob/living/simple_animal/hostile/poison/bees/short/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/death), 50 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(death)), 50 SECONDS)
/mob/living/simple_animal/hostile/poison/bees/short/frenly //these bees need to be frenly or they'd murder everyone
faction = list("neutral")
diff --git a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
index 401127972fb..dd44473f21e 100644
--- a/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bosses/paperwizard.dm
@@ -69,7 +69,7 @@
var/minions_chosen = pick(minions)
var/mob/living/simple_animal/hostile/stickman/S = new minions_chosen (get_step(boss,pick_n_take(directions)), 1)
S.faction = boss.faction
- RegisterSignal(S, COMSIG_PARENT_QDELETING, .proc/remove_from_list)
+ RegisterSignal(S, COMSIG_PARENT_QDELETING,PROC_REF(remove_from_list))
summoned_minions += S
/datum/action/boss/wizard_summon_minions/proc/remove_from_list(datum/source, forced)
diff --git a/code/modules/mob/living/simple_animal/hostile/f13/Securitron.dm b/code/modules/mob/living/simple_animal/hostile/f13/Securitron.dm
index 8d2148095e7..10f7ca4c3af 100644
--- a/code/modules/mob/living/simple_animal/hostile/f13/Securitron.dm
+++ b/code/modules/mob/living/simple_animal/hostile/f13/Securitron.dm
@@ -111,8 +111,8 @@
/mob/living/simple_animal/hostile/securitron/death()
do_sparks(3, TRUE, src)
for(var/i in 1 to 3)
- addtimer(CALLBACK(src, .proc/do_death_beep), i * 1 SECONDS)
- addtimer(CALLBACK(src, .proc/self_destruct), 4 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(do_death_beep)), i * 1 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(self_destruct)), 4 SECONDS)
return ..()
/mob/living/simple_animal/hostile/securitron/Aggro()
@@ -262,5 +262,5 @@
minimum_distance = 1
/mob/living/simple_animal/hostile/securitron/sentrybot/self_destruct/AttackingTarget()
- addtimer(CALLBACK(src, .proc/do_death_beep), 1 SECONDS)
- addtimer(CALLBACK(src, .proc/self_destruct), 2 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(do_death_beep)), 1 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(self_destruct)), 2 SECONDS)
diff --git a/code/modules/mob/living/simple_animal/hostile/f13/deathclaw.dm b/code/modules/mob/living/simple_animal/hostile/f13/deathclaw.dm
index 72f8f8ba25f..afd1f74f697 100644
--- a/code/modules/mob/living/simple_animal/hostile/f13/deathclaw.dm
+++ b/code/modules/mob/living/simple_animal/hostile/f13/deathclaw.dm
@@ -420,7 +420,7 @@
return
if(!charging)
visible_message(span_danger("\The [src] growls, enraged!"))
- addtimer(CALLBACK(src, .proc/Charge), 3)
+ addtimer(CALLBACK(src,PROC_REF(Charge)), 3)
. = ..() // I swear I looked at this like 10 times before, never once noticed this wasnt here, fmdakm
/mob/living/simple_animal/hostile/deathclaw/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
@@ -446,7 +446,7 @@
setDir(get_dir(src, T))
var/obj/effect/temp_visual/decoy/D = new /obj/effect/temp_visual/decoy(loc,src)
animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 1)
- throw_at(T, get_dist(src, T), 1, src, 0, callback = CALLBACK(src, .proc/charge_end))
+ throw_at(T, get_dist(src, T), 1, src, 0, callback = CALLBACK(src,PROC_REF(charge_end)))
/mob/living/simple_animal/hostile/deathclaw/proc/charge_end(list/effects_to_destroy)
charging = FALSE
diff --git a/code/modules/mob/living/simple_animal/hostile/f13/supermutant.dm b/code/modules/mob/living/simple_animal/hostile/f13/supermutant.dm
index d6da2b34258..87a7f41b000 100644
--- a/code/modules/mob/living/simple_animal/hostile/f13/supermutant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/f13/supermutant.dm
@@ -448,7 +448,7 @@
var/obj/effect/temp_visual/decoy/D = new /obj/effect/temp_visual/decoy(loc,src)
animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 1)
addtimer(3)
- throw_at(T, get_dist(src, T), 1, src, 0, callback = CALLBACK(src, .proc/charge_end))
+ throw_at(T, get_dist(src, T), 1, src, 0, callback = CALLBACK(src,PROC_REF(charge_end)))
/mob/living/simple_animal/hostile/supermutant/nightkin/rain/proc/charge_end(list/effects_to_destroy)
charging = FALSE
@@ -518,7 +518,7 @@
playsound(get_turf(src),'sound/magic/fireball.ogg', 200, 1)
for(var/d in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/fire_release_wall, d)
+ INVOKE_ASYNC(src,PROC_REF(fire_release_wall), d)
/mob/living/simple_animal/hostile/supermutant/nightkin/rangedmutant/rain/proc/fire_release_wall(dir)
var/list/hit_things = list(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index c7708c396a3..67f6ed02aa4 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -446,7 +446,6 @@
name = "Wrap"
panel = "Spider"
active = FALSE
- datum/action/spell_action/action = null
desc = "Wrap something or someone in a cocoon. If it's a living being, you'll also consume them, allowing you to lay eggs."
ranged_mousepointer = 'icons/effects/wrap_target.dmi'
action_icon = 'icons/mob/actions/actions_animal.dmi'
@@ -491,7 +490,7 @@
if(target_atom.anchored)
return
user.cocoon_target = target_atom
- INVOKE_ASYNC(user, /mob/living/simple_animal/hostile/poison/giant_spider/nurse/.proc/cocoon)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/mob/living/simple_animal/hostile/poison/giant_spider/nurse/,cocoon))
remove_ranged_ability()
return TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm
index 60d8483a3e9..933f8b5f214 100644
--- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm
+++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm
@@ -52,7 +52,7 @@
return
Infect(my_target)
to_chat(src, span_userdanger("With our egg laid, our death approaches rapidly..."))
- addtimer(CALLBACK(src, .proc/death), 100)
+ addtimer(CALLBACK(src,PROC_REF(death)), 100)
/obj/item/organ/body_egg/changeling_egg
name = "changeling egg"
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index b87adf5ce40..b82d6111449 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -231,7 +231,7 @@
return
var/atom/my_target = get_target()
if(dodging && my_target && in_melee && isturf(loc) && isturf(my_target.loc))
- var/datum/cb = CALLBACK(src,.proc/sidestep)
+ var/datum/cb = CALLBACK(src,PROC_REF(sidestep))
if(sidestep_per_cycle > 1) //For more than one just spread them equally - this could changed to some sensible distribution later
var/sidestep_delay = SSnpcpool.wait / sidestep_per_cycle
for(var/i in 1 to sidestep_per_cycle)
@@ -248,7 +248,7 @@
if(go2bed)
if(lonely_timer_id)
return
- lonely_timer_id = addtimer(CALLBACK(src, .proc/queue_unbirth), 30 SECONDS, TIMER_STOPPABLE)
+ lonely_timer_id = addtimer(CALLBACK(src,PROC_REF(queue_unbirth)), 30 SECONDS, TIMER_STOPPABLE)
else
if(!lonely_timer_id)
return
@@ -484,7 +484,7 @@
//What we do after closing in
/mob/living/simple_animal/hostile/proc/MeleeAction(patience = TRUE)
if(rapid_melee > 1)
- var/datum/callback/cb = CALLBACK(src, .proc/CheckAndAttack)
+ var/datum/callback/cb = CALLBACK(src,PROC_REF(CheckAndAttack))
var/delay = SSnpcpool.wait / rapid_melee
for(var/i in 1 to rapid_melee)
addtimer(cb, (i - 1)*delay)
@@ -612,7 +612,7 @@
minimum_distance = 1 //Stop moving away
if(melee_windup_sound)
playsound(src.loc, melee_windup_sound, 150, TRUE, distant_range = 4) //Play the windup sound effect to warn that an attack is coming.
- INVOKE_ASYNC(src, /atom/.proc/do_windup, melee_windup_magnitude, melee_windup_time) //Bouncing bitches.
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/,do_windup), melee_windup_magnitude, melee_windup_time) //Bouncing bitches.
if(do_after(user=src,delay=melee_windup_time,needhand=FALSE,progress=FALSE,required_mobility_flags=null,allow_movement=TRUE,stay_close=FALSE,public_progbar=FALSE))
my_target = get_target() //Switch targets if we did during our windup.
if(my_target && Adjacent(my_target)) //If we waited, check if we died or something before finishing the attack windup. If so, don't attack.
@@ -643,7 +643,7 @@
vision_range = aggro_vision_range
var/atom/my_target = get_target()
if(my_target && LAZYLEN(emote_taunt) && prob(taunt_chance))
- INVOKE_ASYNC(src, .proc/emote, "me", EMOTE_VISIBLE, "[pick(emote_taunt)] at [my_target].")
+ INVOKE_ASYNC(src,PROC_REF(emote), "me", EMOTE_VISIBLE, "[pick(emote_taunt)] at [my_target].")
taunt_chance = max(taunt_chance-7,2)
if(LAZYLEN(emote_taunt_sound))
var/taunt_choice = pick(emote_taunt_sound)
@@ -696,17 +696,17 @@
return
visible_message(span_danger("[src] [islist(ranged_message) ? pick(ranged_message) : ranged_message] at [A]!"))
if(rapid > 1)
- var/datum/callback/cb = CALLBACK(src, .proc/Shoot, A)
+ var/datum/callback/cb = CALLBACK(src,PROC_REF(Shoot), A)
for(var/i in 1 to rapid)
addtimer(cb, (i - 1)*rapid_fire_delay)
else
Shoot(A)
for(var/i in 1 to extra_projectiles)
- addtimer(CALLBACK(src, .proc/Shoot, A), i * auto_fire_delay)
+ addtimer(CALLBACK(src,PROC_REF(Shoot), A), i * auto_fire_delay)
ThrowSomething(A)
ranged_cooldown = world.time + ranged_cooldown_time
if(sound_after_shooting)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, sound_after_shooting, 100, 0, 0), sound_after_shooting_delay, TIMER_STOPPABLE)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(playsound), src, sound_after_shooting, 100, 0, 0), sound_after_shooting_delay, TIMER_STOPPABLE)
if(projectiletype)
if(LAZYLEN(variation_list[MOB_PROJECTILE]) >= 2) // Gotta have multiple different projectiles to cycle through
projectiletype = vary_from_list(variation_list[MOB_PROJECTILE], TRUE)
@@ -830,7 +830,7 @@
DestroyObjectsInDirection(direction)
-mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with megafauna destroying everything around them
+/mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with megafauna destroying everything around them
if(environment_smash)
EscapeConfinement()
for(var/dir in GLOB.cardinals)
@@ -902,7 +902,7 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega
if(lose_patience_timeout)
LosePatience()
- lose_patience_timer_id = addtimer(CALLBACK(src, .proc/LoseTarget), lose_patience_timeout, TIMER_STOPPABLE)
+ lose_patience_timer_id = addtimer(CALLBACK(src,PROC_REF(LoseTarget)), lose_patience_timeout, TIMER_STOPPABLE)
/mob/living/simple_animal/hostile/proc/LosePatience()
@@ -916,7 +916,7 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega
search_objects = 0
deltimer(search_objects_timer_id)
- search_objects_timer_id = addtimer(CALLBACK(src, .proc/RegainSearchObjects), search_objects_regain_time, TIMER_STOPPABLE)
+ search_objects_timer_id = addtimer(CALLBACK(src,PROC_REF(RegainSearchObjects)), search_objects_regain_time, TIMER_STOPPABLE)
/mob/living/simple_animal/hostile/proc/RegainSearchObjects(value)
@@ -971,7 +971,7 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega
if(!new_target)
return
target = WEAKREF(new_target)
- RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/handle_target_del, TRUE)
+ RegisterSignal(target, COMSIG_PARENT_QDELETING,PROC_REF(handle_target_del), TRUE)
/mob/living/simple_animal/hostile/proc/queue_unbirth()
SSidlenpcpool.add_to_culling(src)
@@ -1038,7 +1038,7 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega
visible_message(span_green("[src] shudders as the EMP overloads its servos!"))
LoseTarget()
toggle_ai(AI_OFF)
- addtimer(CALLBACK(src, .proc/un_emp_stun), min(intensity, 3 SECONDS))
+ addtimer(CALLBACK(src,PROC_REF(un_emp_stun)), min(intensity, 3 SECONDS))
/mob/living/simple_animal/hostile/proc/un_emp_stun()
active_emp_flags -= MOB_EMP_STUN
@@ -1055,7 +1055,7 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega
visible_message(span_green("[src] lets out a burst of static and whips its gun around wildly!"))
var/list/old_faction = faction
faction = null
- addtimer(CALLBACK(src, .proc/un_emp_berserk, old_faction), intensity SECONDS * 0.5)
+ addtimer(CALLBACK(src,PROC_REF(un_emp_berserk), old_faction), intensity SECONDS * 0.5)
/mob/living/simple_animal/hostile/proc/un_emp_berserk(list/unberserk)
active_emp_flags -= MOB_EMP_BERSERK
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
index 19646705363..2382a2fbc75 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
@@ -82,12 +82,12 @@
/obj/structure/leaper_bubble/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
- INVOKE_ASYNC(src, /atom/movable.proc/float, TRUE)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable,float), TRUE)
QDEL_IN(src, 100)
/obj/structure/leaper_bubble/Destroy()
@@ -217,7 +217,7 @@
if(AIStatus == AI_ON && ranged_cooldown <= world.time)
projectile_ready = TRUE
update_icons()
- throw_at(new_turf, max(3,get_dist(src,new_turf)), 1, src, FALSE, callback = CALLBACK(src, .proc/FinishHop))
+ throw_at(new_turf, max(3,get_dist(src,new_turf)), 1, src, FALSE, callback = CALLBACK(src,PROC_REF(FinishHop)))
/mob/living/simple_animal/hostile/jungle/leaper/proc/FinishHop()
density = TRUE
@@ -228,18 +228,18 @@
var/atom/my_target = get_target()
if(my_target && AIStatus == AI_ON && projectile_ready && !ckey)
face_atom(my_target)
- addtimer(CALLBACK(src, .proc/OpenFire, my_target), 5)
+ addtimer(CALLBACK(src,PROC_REF(OpenFire), my_target), 5)
/mob/living/simple_animal/hostile/jungle/leaper/proc/BellyFlop()
var/turf/new_turf = get_turf(get_target())
hopping = TRUE
mob_transforming = TRUE
new /obj/effect/temp_visual/leaper_crush(new_turf)
- addtimer(CALLBACK(src, .proc/BellyFlopHop, new_turf), 30)
+ addtimer(CALLBACK(src,PROC_REF(BellyFlopHop), new_turf), 30)
/mob/living/simple_animal/hostile/jungle/leaper/proc/BellyFlopHop(turf/T)
density = FALSE
- throw_at(T, get_dist(src,T),1,src, FALSE, callback = CALLBACK(src, .proc/Crush))
+ throw_at(T, get_dist(src,T),1,src, FALSE, callback = CALLBACK(src,PROC_REF(Crush)))
/mob/living/simple_animal/hostile/jungle/leaper/proc/Crush()
hopping = FALSE
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm
index f273a595db5..bdeb9db5947 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm
@@ -73,9 +73,9 @@
walk(src,0)
update_icons()
if(prob(50) && get_dist(src,my_target) <= 3 || forced_slash_combo)
- addtimer(CALLBACK(src, .proc/SlashCombo), ATTACK_INTERMISSION_TIME)
+ addtimer(CALLBACK(src,PROC_REF(SlashCombo)), ATTACK_INTERMISSION_TIME)
return
- addtimer(CALLBACK(src, .proc/LeapAttack), ATTACK_INTERMISSION_TIME + rand(0,3))
+ addtimer(CALLBACK(src,PROC_REF(LeapAttack)), ATTACK_INTERMISSION_TIME + rand(0,3))
return
attack_state = MOOK_ATTACK_RECOVERY
ResetNeutral()
@@ -85,9 +85,9 @@
attack_state = MOOK_ATTACK_ACTIVE
update_icons()
SlashAttack()
- addtimer(CALLBACK(src, .proc/SlashAttack), 3)
- addtimer(CALLBACK(src, .proc/SlashAttack), 6)
- addtimer(CALLBACK(src, .proc/AttackRecovery), 9)
+ addtimer(CALLBACK(src,PROC_REF(SlashAttack)), 3)
+ addtimer(CALLBACK(src,PROC_REF(SlashAttack)), 6)
+ addtimer(CALLBACK(src,PROC_REF(AttackRecovery)), 9)
/mob/living/simple_animal/hostile/jungle/mook/proc/SlashAttack()
var/atom/my_target = get_target()
@@ -119,7 +119,7 @@
playsound(src, 'sound/weapons/thudswoosh.ogg', 25, 1)
playsound(src, 'sound/voice/mook_leap_yell.ogg', 100, 1)
var/target_turf = get_turf(my_target)
- throw_at(target_turf, 7, 1, src, FALSE, callback = CALLBACK(src, .proc/AttackRecovery))
+ throw_at(target_turf, 7, 1, src, FALSE, callback = CALLBACK(src,PROC_REF(AttackRecovery)))
return
attack_state = MOOK_ATTACK_RECOVERY
ResetNeutral()
@@ -140,11 +140,11 @@
if(isliving(my_target))
var/mob/living/L = my_target
if(L.incapacitated() && L.stat != DEAD)
- addtimer(CALLBACK(src, .proc/WarmupAttack, TRUE), ATTACK_INTERMISSION_TIME)
+ addtimer(CALLBACK(src,PROC_REF(WarmupAttack), TRUE), ATTACK_INTERMISSION_TIME)
return
- addtimer(CALLBACK(src, .proc/WarmupAttack), ATTACK_INTERMISSION_TIME)
+ addtimer(CALLBACK(src,PROC_REF(WarmupAttack)), ATTACK_INTERMISSION_TIME)
return
- addtimer(CALLBACK(src, .proc/ResetNeutral), ATTACK_INTERMISSION_TIME)
+ addtimer(CALLBACK(src,PROC_REF(ResetNeutral)), ATTACK_INTERMISSION_TIME)
/mob/living/simple_animal/hostile/jungle/mook/proc/ResetNeutral()
if(attack_state != MOOK_ATTACK_RECOVERY)
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
index 6d30b16b764..81d43d83e14 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
@@ -136,7 +136,7 @@
if(get_dist(src,my_target) >= 4 && prob(40))
SolarBeamStartup(my_target)
return
- addtimer(CALLBACK(src, .proc/Volley), 5)
+ addtimer(CALLBACK(src,PROC_REF(Volley)), 5)
/mob/living/simple_animal/hostile/jungle/seedling/proc/SolarBeamStartup(mob/living/living_target)//It's more like requiem than final spark
if(combatant_state != SEEDLING_STATE_WARMUP || !get_target())
@@ -148,7 +148,7 @@
if(get_dist(src,living_target) > 7)
playsound(living_target,'sound/effects/seedling_chargeup.ogg', 100, 0)
solar_beam_identifier = world.time
- addtimer(CALLBACK(src, .proc/Beamu, living_target, solar_beam_identifier), 35)
+ addtimer(CALLBACK(src,PROC_REF(Beamu), living_target, solar_beam_identifier), 35)
/mob/living/simple_animal/hostile/jungle/seedling/proc/Beamu(mob/living/living_target, beam_id = 0)
if(combatant_state == SEEDLING_STATE_ACTIVE && living_target && beam_id == solar_beam_identifier)
@@ -168,7 +168,7 @@
living_target.adjust_fire_stacks(0.2)//Just here for the showmanship
living_target.IgniteMob()
playsound(living_target,'sound/weapons/sear.ogg', 50, 1)
- addtimer(CALLBACK(src, .proc/AttackRecovery), 5)
+ addtimer(CALLBACK(src,PROC_REF(AttackRecovery)), 5)
return
AttackRecovery()
@@ -176,10 +176,10 @@
if(combatant_state == SEEDLING_STATE_WARMUP && target)
combatant_state = SEEDLING_STATE_ACTIVE
update_icons()
- var/datum/callback/cb = CALLBACK(src, .proc/InaccurateShot)
+ var/datum/callback/cb = CALLBACK(src,PROC_REF(InaccurateShot))
for(var/i in 1 to 13)
addtimer(cb, i)
- addtimer(CALLBACK(src, .proc/AttackRecovery), 14)
+ addtimer(CALLBACK(src,PROC_REF(AttackRecovery)), 14)
/mob/living/simple_animal/hostile/jungle/seedling/proc/InaccurateShot()
var/atom/my_target = get_target()
@@ -203,7 +203,7 @@
ranged_cooldown = world.time + ranged_cooldown_time
if(my_target)
face_atom(my_target)
- addtimer(CALLBACK(src, .proc/ResetNeutral), 10)
+ addtimer(CALLBACK(src,PROC_REF(ResetNeutral)), 10)
/mob/living/simple_animal/hostile/jungle/seedling/proc/ResetNeutral()
combatant_state = SEEDLING_STATE_NEUTRAL
diff --git a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
index f3a8a78821a..1dcb5754647 100644
--- a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
@@ -233,13 +233,13 @@ Featuring:
if(mecha.defense_action && mecha.defense_action.owner && !mecha.defense_mode)
mecha.leg_overload_mode = 0
mecha.defense_action.Activate(TRUE)
- addtimer(CALLBACK(mecha.defense_action, /datum/action/innate/mecha/mech_defense_mode.proc/Activate, FALSE), 100) //10 seconds of defense, then toggle off
+ addtimer(CALLBACK(mecha.defense_action, TYPE_PROC_REF(/datum/action/innate/mecha/mech_defense_mode,Activate), FALSE), 100) //10 seconds of defense, then toggle off
else if(prob(retreat_chance))
//Speed boost if possible
if(mecha.overload_action && mecha.overload_action.owner && !mecha.leg_overload_mode)
mecha.overload_action.Activate(TRUE)
- addtimer(CALLBACK(mecha.overload_action, /datum/action/innate/mecha/mech_defense_mode.proc/Activate, FALSE), 100) //10 seconds of speeeeed, then toggle off
+ addtimer(CALLBACK(mecha.overload_action, TYPE_PROC_REF(/datum/action/innate/mecha/mech_defense_mode,Activate), FALSE), 100) //10 seconds of speeeeed, then toggle off
retreat_distance = 50
spawn(100)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/behemoth.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/behemoth.dm
index a5583ae3730..76b3b62e2f0 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/behemoth.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/behemoth.dm
@@ -95,7 +95,7 @@
. = ..()
stored_move_dirs &= ~direct
if(!stored_move_dirs)
- INVOKE_ASYNC(src, .proc/ground_slam, stomp_range, 1, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(ground_slam), stomp_range, 1, FALSE)
/// Slams the ground around the behemoth throwing back enemies caught nearby
/mob/living/simple_animal/hostile/megafauna/behemoth/proc/ground_slam(range, delay, do_damage)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index 9b8b30bafb0..b3d54f83bee 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -61,7 +61,7 @@ Difficulty: Medium
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter/AttackingTarget()
. = ..()
if(. && prob(12))
- INVOKE_ASYNC(src, .proc/dash)
+ INVOKE_ASYNC(src,PROC_REF(dash))
/obj/item/melee/transforming/cleaving_saw/miner //nerfed saw because it is very murdery
force = 6
@@ -112,7 +112,7 @@ Difficulty: Medium
if(QDELETED(my_target))
return
if(!CheckActionCooldown() || !Adjacent(my_target)) //some cheating
- INVOKE_ASYNC(src, .proc/quick_attack_loop)
+ INVOKE_ASYNC(src,PROC_REF(quick_attack_loop))
return
face_atom(my_target)
// if(isliving(my_target))
@@ -132,7 +132,7 @@ Difficulty: Medium
if(guidance)
adjustHealth(-2)
transform_weapon()
- INVOKE_ASYNC(src, .proc/quick_attack_loop)
+ INVOKE_ASYNC(src,PROC_REF(quick_attack_loop))
return TRUE
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
@@ -147,13 +147,13 @@ Difficulty: Medium
if(. && my_target && !targets_the_same)
wander = TRUE
transform_weapon()
- INVOKE_ASYNC(src, .proc/quick_attack_loop)
+ INVOKE_ASYNC(src,PROC_REF(quick_attack_loop))
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/OpenFire()
var/atom/my_target = get_target()
Goto(my_target, move_to_delay, minimum_distance)
if(get_dist(src, my_target) > MINER_DASH_RANGE && dash_cooldown <= world.time)
- INVOKE_ASYNC(src, .proc/dash, my_target)
+ INVOKE_ASYNC(src,PROC_REF(dash), my_target)
else
shoot_ka()
transform_weapon()
@@ -181,7 +181,7 @@ Difficulty: Medium
if(dashing || !CheckActionCooldown() || !Adjacent(my_target))
if(dashing && next_action <= world.time)
SetNextAction(1, considered_action = FALSE, immediate = FALSE, flush = TRUE)
- INVOKE_ASYNC(src, .proc/quick_attack_loop) //lets try that again.
+ INVOKE_ASYNC(src,PROC_REF(quick_attack_loop)) //lets try that again.
return
AttackingTarget()
@@ -251,7 +251,7 @@ Difficulty: Medium
/obj/effect/temp_visual/dir_setting/miner_death/Initialize(mapload, set_dir)
. = ..()
- INVOKE_ASYNC(src, .proc/fade_out)
+ INVOKE_ASYNC(src,PROC_REF(fade_out))
/obj/effect/temp_visual/dir_setting/miner_death/proc/fade_out()
var/matrix/M = new
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index 6d9e015eb94..1191823a612 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -77,15 +77,15 @@ Difficulty: Hard
blood_warp()
if(prob(25))
- INVOKE_ASYNC(src, .proc/blood_spray)
+ INVOKE_ASYNC(src,PROC_REF(blood_spray))
else if(prob(5+anger_modifier/2))
slaughterlings()
else
if(health > maxHealth/2 && !client)
- INVOKE_ASYNC(src, .proc/charge)
+ INVOKE_ASYNC(src,PROC_REF(charge))
else
- INVOKE_ASYNC(src, .proc/triple_charge)
+ INVOKE_ASYNC(src,PROC_REF(triple_charge))
/mob/living/simple_animal/hostile/megafauna/bubblegum/Initialize()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/captainarlem.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/captainarlem.dm
index c24e22843e4..21978dd7766 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/captainarlem.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/captainarlem.dm
@@ -58,10 +58,10 @@
eyebots()
else
if(health > maxHealth/2 && !client)
- INVOKE_ASYNC(src, .proc/charge)
+ INVOKE_ASYNC(src,PROC_REF(charge))
visible_message("\" FOR THE ENCLAVE!\"")
else
- INVOKE_ASYNC(src, .proc/triple_charge)
+ INVOKE_ASYNC(src,PROC_REF(triple_charge))
visible_message("\"YOUR RIDE IS OVER MUTIE, TIME TO DIE!\"")
/mob/living/simple_animal/hostile/megafauna/captainarlem/Initialize()
@@ -70,7 +70,7 @@
if(B != src)
return INITIALIZE_HINT_QDEL //There can be only one
-mob/living/simple_animal/hostile/megafauna/captainarlem/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
+/mob/living/simple_animal/hostile/megafauna/captainarlem/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect)
if(charging)
return
..()
@@ -178,7 +178,7 @@ mob/living/simple_animal/hostile/megafauna/captainarlem/do_attack_animation(atom
/mob/living/simple_animal/hostile/megafauna/captainarlem/death()
do_sparks(3, TRUE, src)
- addtimer(CALLBACK(src, .proc/self_destruct), 4 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(self_destruct)), 4 SECONDS)
return ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 6115de1efeb..314bf0fe203 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -79,7 +79,7 @@ Difficulty: Very Hard
double_spiral()
else
visible_message("\"Judgement.\"")
- INVOKE_ASYNC(src, .proc/spiral_shoot, pick(TRUE, FALSE))
+ INVOKE_ASYNC(src,PROC_REF(spiral_shoot), pick(TRUE, FALSE))
else if(prob(20))
ranged_cooldown = world.time + 2
@@ -90,7 +90,7 @@ Difficulty: Very Hard
blast()
else
ranged_cooldown = world.time + 20
- INVOKE_ASYNC(src, .proc/alternating_dir_shots)
+ INVOKE_ASYNC(src,PROC_REF(alternating_dir_shots))
/mob/living/simple_animal/hostile/megafauna/colossus/Initialize()
@@ -142,8 +142,8 @@ Difficulty: Very Hard
visible_message("\"Die.\"")
sleep(10)
- INVOKE_ASYNC(src, .proc/spiral_shoot)
- INVOKE_ASYNC(src, .proc/spiral_shoot, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(spiral_shoot))
+ INVOKE_ASYNC(src,PROC_REF(spiral_shoot), TRUE)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = FALSE, counter_start = 8)
var/turf/start_turf = get_step(src, pick(GLOB.alldirs))
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
index b3ee67fb878..01026038fd8 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
@@ -98,7 +98,7 @@ Difficulty: Extremely Hard
if(easy_attack)
snowball_machine_gun()
else
- INVOKE_ASYNC(src, .proc/ice_shotgun, 5, list(list(-180, -140, -100, -60, -20, 20, 60, 100, 140), list(-160, -120, -80, -40, 0, 40, 80, 120, 160)))
+ INVOKE_ASYNC(src,PROC_REF(ice_shotgun), 5, list(list(-180, -140, -100, -60, -20, 20, 60, 100, 140), list(-160, -120, -80, -40, 0, 40, 80, 120, 160)))
snowball_machine_gun(5 * 8, 5)
if(3)
if(easy_attack)
@@ -282,7 +282,7 @@ Difficulty: Extremely Hard
return
forceMove(user)
to_chat(user, span_notice("You feel a bit safer... but a demonic presence lurks in the back of your head..."))
- RegisterSignal(user, COMSIG_MOB_DEATH, .proc/resurrect)
+ RegisterSignal(user, COMSIG_MOB_DEATH,PROC_REF(resurrect))
/// Resurrects the targette when they die by cloning them into a new duplicate body and transferring their mind to the clone on a safe station turf
/obj/item/resurrection_crystal/proc/resurrect(mob/living/carbon/user, gibbed)
@@ -343,7 +343,7 @@ Difficulty: Extremely Hard
icon_state = "frozen"
/datum/status_effect/ice_block_talisman/on_apply()
- RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, .proc/owner_moved)
+ RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE,PROC_REF(owner_moved))
if(!owner.stat)
to_chat(owner, span_userdanger("You become frozen in a cube!"))
cube = icon('icons/effects/freeze.dmi', "ice_cube")
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index aa9c60bcb7f..52818054fc1 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -114,15 +114,15 @@ Difficulty: Medium
if(prob(15 + anger_modifier) && !client)
if(health < maxHealth/2)
- INVOKE_ASYNC(src, .proc/swoop_attack, TRUE, null, 50)
+ INVOKE_ASYNC(src,PROC_REF(swoop_attack), TRUE, null, 50)
else
fire_rain()
else if(prob(10+anger_modifier) && !client)
if(health > maxHealth/2)
- INVOKE_ASYNC(src, .proc/swoop_attack)
+ INVOKE_ASYNC(src,PROC_REF(swoop_attack))
else
- INVOKE_ASYNC(src, .proc/triple_swoop)
+ INVOKE_ASYNC(src,PROC_REF(triple_swoop))
else
fire_walls()
@@ -139,7 +139,7 @@ Difficulty: Medium
playsound(get_turf(src),'sound/magic/fireball.ogg', 200, 1)
for(var/d in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/fire_wall, d)
+ INVOKE_ASYNC(src,PROC_REF(fire_wall), d)
/mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_wall(dir)
var/list/hit_things = list(src)
@@ -314,7 +314,7 @@ Difficulty: Medium
/obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit)
. = ..()
- INVOKE_ASYNC(src, .proc/fall, flame_hit)
+ INVOKE_ASYNC(src,PROC_REF(fall), flame_hit)
/obj/effect/temp_visual/target/proc/fall(list/flame_hit)
var/turf/T = get_turf(src)
@@ -360,7 +360,7 @@ Difficulty: Medium
/obj/effect/temp_visual/dragon_flight/Initialize(mapload, negative)
. = ..()
- INVOKE_ASYNC(src, .proc/flight, negative)
+ INVOKE_ASYNC(src,PROC_REF(flight), negative)
/obj/effect/temp_visual/dragon_flight/proc/flight(negative)
if(negative)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index 73dbc735f84..1a89bb78a7b 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -161,10 +161,10 @@ Difficulty: Normal
if(ranged_cooldown <= world.time)
calculate_rage()
ranged_cooldown = world.time + max(5, ranged_cooldown_time - anger_modifier * 0.75)
- INVOKE_ASYNC(src, .proc/burst, get_turf(src))
+ INVOKE_ASYNC(src,PROC_REF(burst), get_turf(src))
else
burst_range = 3
- INVOKE_ASYNC(src, .proc/burst, get_turf(src), 0.25) //melee attacks on living mobs cause it to release a fast burst if on cooldown
+ INVOKE_ASYNC(src,PROC_REF(burst), get_turf(src), 0.25) //melee attacks on living mobs cause it to release a fast burst if on cooldown
if(L.stat == CONSCIOUS && L.health >= 30)
OpenFire()
return ..()
@@ -262,9 +262,9 @@ Difficulty: Normal
while(health && !QDELETED(my_target) && cross_counter)
cross_counter--
if(prob(60))
- INVOKE_ASYNC(src, .proc/cardinal_blasts, my_target)
+ INVOKE_ASYNC(src,PROC_REF(cardinal_blasts), my_target)
else
- INVOKE_ASYNC(src, .proc/diagonal_blasts, my_target)
+ INVOKE_ASYNC(src,PROC_REF(diagonal_blasts), my_target)
sleep(6 + target_slowness)
animate(src, color = oldcolor, time = 8)
addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
@@ -310,13 +310,13 @@ Difficulty: Normal
else if(prob(70 - anger_modifier)) //a cross blast of some type
if(prob(anger_modifier * (2 / target_slowness)) && health < maxHealth * 0.5) //we're super angry do it at all dirs
- INVOKE_ASYNC(src, .proc/alldir_blasts, my_target)
+ INVOKE_ASYNC(src,PROC_REF(alldir_blasts), my_target)
else if(prob(60))
- INVOKE_ASYNC(src, .proc/cardinal_blasts, my_target)
+ INVOKE_ASYNC(src,PROC_REF(cardinal_blasts), my_target)
else
- INVOKE_ASYNC(src, .proc/diagonal_blasts, my_target)
+ INVOKE_ASYNC(src,PROC_REF(diagonal_blasts), my_target)
else //just release a burst of power
- INVOKE_ASYNC(src, .proc/burst, get_turf(src))
+ INVOKE_ASYNC(src,PROC_REF(burst), get_turf(src))
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/diagonal_blasts(mob/victim) //fire diagonal cross blasts with a delay
var/turf/T = get_turf(victim)
@@ -327,7 +327,7 @@ Difficulty: Normal
sleep(2)
new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE)
for(var/d in GLOB.diagonals)
- INVOKE_ASYNC(src, .proc/blast_wall, T, d)
+ INVOKE_ASYNC(src,PROC_REF(blast_wall), T, d)
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/cardinal_blasts(mob/victim) //fire cardinal cross blasts with a delay
var/turf/T = get_turf(victim)
@@ -338,7 +338,7 @@ Difficulty: Normal
sleep(2)
new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE)
for(var/d in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/blast_wall, T, d)
+ INVOKE_ASYNC(src,PROC_REF(blast_wall), T, d)
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/alldir_blasts(mob/victim) //fire alldir cross blasts with a delay
var/turf/T = get_turf(victim)
@@ -349,7 +349,7 @@ Difficulty: Normal
sleep(2)
new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE)
for(var/d in GLOB.alldirs)
- INVOKE_ASYNC(src, .proc/blast_wall, T, d)
+ INVOKE_ASYNC(src,PROC_REF(blast_wall), T, d)
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/blast_wall(turf/T, set_dir) //make a wall of blasts beam_range tiles long
var/range = beam_range
@@ -368,13 +368,13 @@ Difficulty: Normal
return
arena_cooldown = world.time + initial(arena_cooldown)
for(var/d in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/arena_squares, T, d)
+ INVOKE_ASYNC(src,PROC_REF(arena_squares), T, d)
for(var/t in RANGE_TURFS(11, T))
if(t && get_dist(t, T) == 11)
new /obj/effect/temp_visual/hierophant/wall(t, src)
new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE)
if(get_dist(src, T) >= 11) //hey you're out of range I need to get closer to you!
- INVOKE_ASYNC(src, .proc/blink, T)
+ INVOKE_ASYNC(src,PROC_REF(blink), T)
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/arena_squares(turf/T, set_dir) //make a fancy effect extending from the arena targette
var/turf/previousturf = T
@@ -526,7 +526,7 @@ Difficulty: Normal
friendly_fire_check = is_friendly_fire
if(new_speed)
speed = new_speed
- addtimer(CALLBACK(src, .proc/seek_target), 1)
+ addtimer(CALLBACK(src,PROC_REF(seek_target)), 1)
/obj/effect/temp_visual/hierophant/chaser/proc/get_target_dir()
. = get_cardinal_dir(src, targetturf)
@@ -614,10 +614,10 @@ Difficulty: Normal
if(ismineralturf(loc)) //drill mineral turfs
var/turf/closed/mineral/M = loc
M.gets_drilled(caster)
- INVOKE_ASYNC(src, .proc/blast)
+ INVOKE_ASYNC(src,PROC_REF(blast))
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -637,7 +637,7 @@ Difficulty: Normal
/obj/effect/temp_visual/hierophant/blast/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
if(bursting)
- INVOKE_ASYNC(src, .proc/do_damage, get_turf(src))
+ INVOKE_ASYNC(src,PROC_REF(do_damage), get_turf(src))
/obj/effect/temp_visual/hierophant/blast/proc/do_damage(turf/T)
if(!damage)
@@ -693,7 +693,7 @@ Difficulty: Normal
if(H.beacon == src)
to_chat(user, span_notice("You start removing your hierophant beacon..."))
H.timer = world.time + 51
- INVOKE_ASYNC(H, /obj/item/hierophant_club.proc/prepare_icon_update)
+ INVOKE_ASYNC(H, TYPE_PROC_REF(/obj/item/hierophant_club,prepare_icon_update))
if(do_after(user, 50, target = src))
playsound(src,'sound/magic/blind.ogg', 200, 1, -4)
new /obj/effect/temp_visual/hierophant/telegraph/teleport(get_turf(src), user)
@@ -703,7 +703,7 @@ Difficulty: Normal
qdel(src)
else
H.timer = world.time
- INVOKE_ASYNC(H, /obj/item/hierophant_club.proc/prepare_icon_update)
+ INVOKE_ASYNC(H, TYPE_PROC_REF(/obj/item/hierophant_club,prepare_icon_update))
else
to_chat(user, span_hierophant_warning("You touch the beacon with the club, but nothing happens."))
else
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
index ab01d56534f..adf9fa5bbdc 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
@@ -92,7 +92,7 @@ Difficulty: Medium
speed = 0
move_to_delay = 1
charging = 1
- addtimer(CALLBACK(src, .proc/reset_charge), 50)
+ addtimer(CALLBACK(src,PROC_REF(reset_charge)), 50)
/mob/living/simple_animal/hostile/megafauna/legion/proc/reset_charge()
ranged = 1
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
index c5c087cd627..06b4925d455 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
@@ -151,7 +151,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
/mob/living/simple_animal/hostile/swarmer/ai/proc/StartAction(deci = 0)
stop_automated_movement = TRUE
AIStatus = AI_OFF
- addtimer(CALLBACK(src, .proc/EndAction), deci)
+ addtimer(CALLBACK(src,PROC_REF(EndAction)), deci)
/mob/living/simple_animal/hostile/swarmer/ai/proc/EndAction()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
index 7779f2b4107..16caaa87717 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
@@ -110,7 +110,7 @@ Difficulty: Hard
. = ..()
stored_move_dirs &= ~direct
if(!stored_move_dirs)
- INVOKE_ASYNC(src, .proc/ground_slam, stomp_range, 1)
+ INVOKE_ASYNC(src,PROC_REF(ground_slam), stomp_range, 1)
/// Slams the ground around the wendigo throwing back enemies caught nearby
/mob/living/simple_animal/hostile/megafauna/wendigo/proc/ground_slam(range, delay)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index 6bdf4df09f7..0fb47538dbb 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -160,15 +160,15 @@ While using this makes the system rely on OnFire, it still gives options for tim
if(boosted)
mychild.playsound_local(get_turf(mychild), 'sound/effects/magic.ogg', 40, 0)
to_chat(mychild, "Someone has activated your tumor. You will be returned to fight shortly, get ready!")
- addtimer(CALLBACK(src, .proc/return_elite), 30)
- INVOKE_ASYNC(src, .proc/arena_checks)
+ addtimer(CALLBACK(src,PROC_REF(return_elite)), 30)
+ INVOKE_ASYNC(src,PROC_REF(arena_checks))
if(TUMOR_INACTIVE)
activity = TUMOR_ACTIVE
var/mob/elitemind = null
visible_message(span_boldwarning("[src] begins to convulse. Your instincts tell you to step back."))
activator = user
if(!boosted)
- addtimer(CALLBACK(src, .proc/spawn_elite), 30)
+ addtimer(CALLBACK(src,PROC_REF(spawn_elite)), 30)
return
visible_message(span_boldwarning("Something within [src] stirs..."))
var/list/candidates = pollCandidatesForMob("Do you want to play as a lavaland elite?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, src, POLL_IGNORE_SENTIENCE_POTION)
@@ -177,7 +177,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
elitemind = pick(candidates)
elitemind.playsound_local(get_turf(elitemind), 'sound/effects/magic.ogg', 40, 0)
to_chat(elitemind, "You have been chosen to play as a Lavaland Elite.\nIn a few seconds, you will be summoned on Lavaland as a monster to fight your activator, in a fight to the death.\nYour attacks can be switched using the buttons on the top left of the HUD, and used by clicking on targets or tiles similar to a gun.\nWhile the opponent might have an upper hand with powerful mining equipment and tools, you have great power normally limited by AI mobs.\nIf you want to win, you'll have to use your powers in creative ways to ensure the kill. It's suggested you try using them all as soon as possible.\nShould you win, you'll receive extra information regarding what to do after. Good luck!")
- addtimer(CALLBACK(src, .proc/spawn_elite, elitemind), 100)
+ addtimer(CALLBACK(src,PROC_REF(spawn_elite), elitemind), 100)
else
visible_message(span_boldwarning("The stirring stops, and nothing emerges. Perhaps try again later."))
activity = TUMOR_INACTIVE
@@ -193,7 +193,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
mychild.key = elitemind.key
mychild.sentience_act()
icon_state = "tumor_popped"
- INVOKE_ASYNC(src, .proc/arena_checks)
+ INVOKE_ASYNC(src,PROC_REF(arena_checks))
/obj/structure/elite_tumor/proc/return_elite()
mychild.forceMove(loc)
@@ -240,11 +240,11 @@ While using this makes the system rely on OnFire, it still gives options for tim
/obj/structure/elite_tumor/proc/arena_checks()
if(activity != TUMOR_ACTIVE || QDELETED(src))
return
- INVOKE_ASYNC(src, .proc/fighters_check) //Checks to see if our fighters died.
- INVOKE_ASYNC(src, .proc/arena_trap) //Gets another arena trap queued up for when this one runs out.
- INVOKE_ASYNC(src, .proc/border_check) //Checks to see if our fighters got out of the arena somehow.
+ INVOKE_ASYNC(src,PROC_REF(fighters_check)) //Checks to see if our fighters died.
+ INVOKE_ASYNC(src,PROC_REF(arena_trap)) //Gets another arena trap queued up for when this one runs out.
+ INVOKE_ASYNC(src,PROC_REF(border_check)) //Checks to see if our fighters got out of the arena somehow.
if(!QDELETED(src))
- addtimer(CALLBACK(src, .proc/arena_checks), 50)
+ addtimer(CALLBACK(src,PROC_REF(arena_checks)), 50)
/obj/structure/elite_tumor/proc/fighters_check()
if(activator != null && activator.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(activator))
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
index 9e4db660f03..875a71c09b3 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
@@ -137,7 +137,7 @@
color = "#FF0000"
set_varspeed(0)
move_to_delay = 3
- addtimer(CALLBACK(src, .proc/reset_rage), 65)
+ addtimer(CALLBACK(src,PROC_REF(reset_rage)), 65)
/mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/reset_rage()
color = "#FFFFFF"
@@ -213,11 +213,11 @@
retract()
else
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/retract), 10, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src,PROC_REF(retract)), 10, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/broodmother/patch/Initialize(mapload, new_spawner)
. = ..()
- INVOKE_ASYNC(src, .proc/do_spiral) // shitty hack because we don't do sleeps in init
+ INVOKE_ASYNC(src,PROC_REF(do_spiral)) // shitty hack because we don't do sleeps in init
/obj/effect/temp_visual/goliath_tentacle/broodmother/patch/proc/do_spiral()
var/tentacle_locs = spiral_range_turfs(1, get_turf(src))
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
index 9bac94986de..b363719ab16 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
@@ -52,7 +52,7 @@
/mob/living/simple_animal/hostile/asteroid/elite/herald/death()
. = ..()
if(!is_mirror)
- addtimer(CALLBACK(src, .proc/become_ghost), 8)
+ addtimer(CALLBACK(src,PROC_REF(become_ghost)), 8)
if(my_mirror)
QDEL_NULL(my_mirror)
@@ -143,13 +143,13 @@
var/target_turf = get_turf(target)
var/angle_to_target = Get_Angle(src, target_turf)
shoot_projectile(target_turf, angle_to_target, FALSE)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 2)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 4)
+ addtimer(CALLBACK(src,PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 2)
+ addtimer(CALLBACK(src,PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 4)
if(health < maxHealth * 0.5)
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 10)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 12)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 14)
+ addtimer(CALLBACK(src,PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 10)
+ addtimer(CALLBACK(src,PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 12)
+ addtimer(CALLBACK(src,PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 14)
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_circleshot()
var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315)
@@ -166,11 +166,11 @@
if(!is_mirror)
icon_state = "herald_enraged"
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/herald_circleshot), 5)
+ addtimer(CALLBACK(src,PROC_REF(herald_circleshot)), 5)
if(health < maxHealth * 0.5)
playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/herald_circleshot), 15)
- addtimer(CALLBACK(src, .proc/unenrage), 20)
+ addtimer(CALLBACK(src,PROC_REF(herald_circleshot)), 15)
+ addtimer(CALLBACK(src,PROC_REF(unenrage)), 20)
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_teleshot(target)
ranged_cooldown = world.time + 30
@@ -271,4 +271,4 @@
return
owner.visible_message(span_danger("[owner]'s [src] emits a loud noise as [owner] is struck!"))
playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/reactionshot, owner), 10)
+ addtimer(CALLBACK(src,PROC_REF(reactionshot), owner), 10)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
index 48594bbdf4f..446b0bbb312 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
@@ -104,7 +104,7 @@
T = get_step(T, dir_to_target)
playsound(src,'sound/magic/demon_attack1.ogg', 200, 1)
visible_message(span_boldwarning("[src] prepares to charge!"))
- addtimer(CALLBACK(src, .proc/legionnaire_charge_2, dir_to_target, 0), 5)
+ addtimer(CALLBACK(src,PROC_REF(legionnaire_charge_2), dir_to_target, 0), 5)
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/legionnaire_charge_2(move_dir, times_ran)
if(times_ran >= 4)
@@ -133,7 +133,7 @@
//L.Paralyze(20)
L.Stun(20) //substituting this for the Paralyze from the line above, because we don't have tg paralysis stuff
L.adjustBruteLoss(50)
- addtimer(CALLBACK(src, .proc/legionnaire_charge_2, move_dir, (times_ran + 1)), 2)
+ addtimer(CALLBACK(src,PROC_REF(legionnaire_charge_2), move_dir, (times_ran + 1)), 2)
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/head_detach(target)
ranged_cooldown = world.time + 10
@@ -161,7 +161,7 @@
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/onHeadDeath()
myhead = null
- addtimer(CALLBACK(src, .proc/regain_head), 50)
+ addtimer(CALLBACK(src,PROC_REF(regain_head)), 50)
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/regain_head()
has_head = TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
index 9f7ac6a4ad4..f23fc4de426 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
@@ -118,7 +118,7 @@
new /obj/effect/temp_visual/hierophant/blast/pandora(T, src, null, null, list(owner))
T = get_step(T, angleused)
procsleft = procsleft - 1
- addtimer(CALLBACK(src, .proc/singular_shot_line, procsleft, angleused, T), 2)
+ addtimer(CALLBACK(src,PROC_REF(singular_shot_line), procsleft, angleused, T), 2)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/magic_box(target)
ranged_cooldown = world.time + cooldown_time
@@ -134,7 +134,7 @@
new /obj/effect/temp_visual/hierophant/telegraph(T, src)
new /obj/effect/temp_visual/hierophant/telegraph(source, src)
playsound(source,'sound/machines/airlockopen.ogg', 200, 1)
- addtimer(CALLBACK(src, .proc/pandora_teleport_2, T, source), 2)
+ addtimer(CALLBACK(src,PROC_REF(pandora_teleport_2), T, source), 2)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_2(turf/T, turf/source)
new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, src)
@@ -146,7 +146,7 @@
animate(src, alpha = 0, time = 2, easing = EASE_OUT) //fade out
visible_message(span_hierophant_warning("[src] fades out!"))
density = FALSE
- addtimer(CALLBACK(src, .proc/pandora_teleport_3, T), 2)
+ addtimer(CALLBACK(src,PROC_REF(pandora_teleport_3), T), 2)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_3(turf/T)
forceMove(T)
@@ -159,7 +159,7 @@
var/turf/T = get_turf(target)
new /obj/effect/temp_visual/hierophant/blast/pandora(T, src, null, null, list(owner))
var/max_size = 2
- addtimer(CALLBACK(src, .proc/aoe_squares_2, T, 0, max_size), 2)
+ addtimer(CALLBACK(src,PROC_REF(aoe_squares_2), T, 0, max_size), 2)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/aoe_squares_2(turf/T, ring, max_size)
if(ring > max_size)
@@ -167,7 +167,7 @@
for(var/t in spiral_range_turfs(ring, T))
if(get_dist(t, T) == ring)
new /obj/effect/temp_visual/hierophant/blast/pandora(t, src, null, null, list(owner))
- addtimer(CALLBACK(src, .proc/aoe_squares_2, T, (ring + 1), max_size), 2)
+ addtimer(CALLBACK(src,PROC_REF(aoe_squares_2), T, (ring + 1), max_size), 2)
//The specific version of hiero's squares pandora uses
/obj/effect/temp_visual/hierophant/blast/pandora
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
index 4d8367fb57b..2143a0fdd38 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
@@ -55,7 +55,7 @@
retreat_distance = 10
minimum_distance = 10
if(will_burrow)
- addtimer(CALLBACK(src, .proc/Burrow), chase_time)
+ addtimer(CALLBACK(src,PROC_REF(Burrow)), chase_time)
/mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget()
var/atom/my_target = get_target()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
index f7861cb177c..d3ede94b5ef 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
@@ -160,7 +160,7 @@
var/turf/closed/mineral/M = loc
M.gets_drilled()
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/tripanim), 7, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src,PROC_REF(tripanim)), 7, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/original/Initialize(mapload)
. = ..()
@@ -174,7 +174,7 @@
/obj/effect/temp_visual/goliath_tentacle/proc/tripanim()
icon_state = "Goliath_tentacle_wiggle"
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/trip), 3, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src,PROC_REF(trip)), 3, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/proc/trip()
var/latched = FALSE
@@ -196,7 +196,7 @@
retract()
else
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/retract), 10, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src,PROC_REF(retract)), 10, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/proc/retract()
icon_state = "Goliath_tentacle_retract"
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
index af70d71d924..c613205c1c1 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
@@ -93,7 +93,7 @@
. = ..()
if(swarming)
AddComponent(/datum/component/swarming) //oh god not the bees
- addtimer(CALLBACK(src, .proc/death), 100)
+ addtimer(CALLBACK(src,PROC_REF(death)), 100)
//Legion
/mob/living/simple_animal/hostile/asteroid/hivelord/legion
@@ -161,7 +161,7 @@
return
stored_mob = prefbreak
prefbreak.forceMove(src)
- RegisterSignal(prefbreak, COMSIG_PARENT_QDELETING, .proc/squirt_mob)
+ RegisterSignal(prefbreak, COMSIG_PARENT_QDELETING,PROC_REF(squirt_mob))
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/proc/squirt_mob()
visible_message(span_warning("The skulls on [src] wail in anger as they flee from their dying host!"))
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm
index 51718a4bc54..f9350e21a3a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/necropolis_tendril.dm
@@ -79,7 +79,7 @@
visible_message(span_boldannounce("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!"))
visible_message(span_warning("Something falls free of the tendril!"))
playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, 1, 1)
- addtimer(CALLBACK(src, .proc/collapse), 50)
+ addtimer(CALLBACK(src,PROC_REF(collapse)), 50)
/obj/effect/collapse/Destroy()
QDEL_NULL(emitted_light)
diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
index d693759f69e..1a3daabfc30 100644
--- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
@@ -89,7 +89,7 @@
/mob/living/simple_animal/hostile/mushroom/adjustHealth(amount, updating_health = TRUE, forced = FALSE) //Possibility to flee from a fight just to make it more visually interesting
if(!retreat_distance && prob(33))
retreat_distance = 5
- addtimer(CALLBACK(src, .proc/stop_retreat), 30)
+ addtimer(CALLBACK(src,PROC_REF(stop_retreat)), 30)
. = ..()
/mob/living/simple_animal/hostile/mushroom/proc/stop_retreat()
@@ -138,7 +138,7 @@
revive(full_heal = 1)
UpdateMushroomCap()
recovery_cooldown = 1
- addtimer(CALLBACK(src, .proc/recovery_recharge), 300)
+ addtimer(CALLBACK(src,PROC_REF(recovery_recharge)), 300)
/mob/living/simple_animal/hostile/mushroom/proc/recovery_recharge()
recovery_cooldown = 0
diff --git a/code/modules/mob/living/simple_animal/hostile/regalrat.dm b/code/modules/mob/living/simple_animal/hostile/regalrat.dm
index 7d546d83ef1..ecb659ae131 100644
--- a/code/modules/mob/living/simple_animal/hostile/regalrat.dm
+++ b/code/modules/mob/living/simple_animal/hostile/regalrat.dm
@@ -39,7 +39,7 @@
coffer.Grant(src)
riot = new /datum/action/cooldown/riot
riot.Grant(src)
- INVOKE_ASYNC(src, .proc/get_player)
+ INVOKE_ASYNC(src,PROC_REF(get_player))
/mob/living/simple_animal/hostile/regalrat/proc/get_player()
var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the Royal Rat, cheesey be his crown?", ROLE_SENTIENCE, null, FALSE, 100, POLL_IGNORE_SENTIENCE_POTION)
@@ -247,13 +247,13 @@
MOB_MINIMUM_DISTANCE_CHANGE_PER_TURN_CHANCE(100),
)
-/mob/living/simple_animal/hostile/rat/Initialize()
+/mob/living/simple_animal/hostile/rat/Initialize(mapload)
. = ..()
if(cheesy)
SSmobs.cheeserats += src
AddComponent(/datum/component/swarming)
AddElement(/datum/element/mob_holder, "mouse_gray")
- if(!is_smol)
+ if(!is_smol && !mapload)
do_alert_animation(src)
resize = 1.5
update_transform()
@@ -399,4 +399,4 @@
/mob/living/simple_animal/hostile/rat/skitter/curious/frenly/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/death), 50 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(death)), 50 SECONDS)
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index f66b05cd16e..96024af3167 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -21,7 +21,7 @@
for(var/turf/T in anchors)
var/datum/beam/B = Beam(T, "vine", time=INFINITY, maxdistance=5, beam_type=/obj/effect/ebeam/vine)
B.sleep_time = 10 //these shouldn't move, so let's slow down updates to 1 second (any slower and the deletion of the vines would be too slow)
- addtimer(CALLBACK(src, .proc/bear_fruit), growth_time)
+ addtimer(CALLBACK(src,PROC_REF(bear_fruit)), growth_time)
/**
* Spawns a venus human trap, then qdels itself.
@@ -41,7 +41,7 @@
/obj/effect/ebeam/vine/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -141,7 +141,7 @@
return
var/datum/beam/newVine = Beam(the_target, "vine", time=INFINITY, maxdistance = vine_grab_distance, beam_type=/obj/effect/ebeam/vine)
- RegisterSignal(newVine, COMSIG_PARENT_QDELETING, .proc/remove_vine, newVine)
+ RegisterSignal(newVine, COMSIG_PARENT_QDELETING,PROC_REF(remove_vine), newVine)
vines += newVine
if(isliving(the_target))
var/mob/living/L = the_target
@@ -203,5 +203,5 @@
* Arguments:
* * datum/beam/vine - The vine to be removed from the list.
*/
-mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
+/mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force)
vines -= vine
diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm
index 13bf5b80d4f..9101033d33a 100644
--- a/code/modules/mob/living/simple_animal/hostile/zombie.dm
+++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm
@@ -27,7 +27,7 @@
/mob/living/simple_animal/hostile/zombie/Initialize(mapload)
. = ..()
- INVOKE_ASYNC(src, .proc/setup_visuals)
+ INVOKE_ASYNC(src,PROC_REF(setup_visuals))
/mob/living/simple_animal/hostile/zombie/proc/setup_visuals()
var/datum/preferences/dummy_prefs = new
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 138ce7a70db..2749d723895 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -351,7 +351,7 @@ GLOBAL_LIST_EMPTY(playmob_cooldowns)
. = ..()
if(can_ghost_into)
AddElement(/datum/element/ghost_role_eligibility, free_ghosting = FALSE, penalize_on_ghost = TRUE)
- RegisterSignal(src, COMSIG_HOSTILE_CHECK_FACTION, .proc/infight_check)
+ RegisterSignal(src, COMSIG_HOSTILE_CHECK_FACTION,PROC_REF(infight_check))
/mob/living/simple_animal/proc/infight_check(mob/living/simple_animal/H)
if(SSmobs.debug_disable_mob_ceasefire)
@@ -459,7 +459,7 @@ GLOBAL_LIST_EMPTY(playmob_cooldowns)
can_ghost_into = TRUE
AddElement(/datum/element/ghost_role_eligibility, free_ghosting = TRUE, penalize_on_ghost = FALSE)
LAZYADD(GLOB.mob_spawners[initial(name)], src)
- // RegisterSignal(src, COMSIG_MOB_GHOSTIZE_FINAL, .proc/set_ghost_timeout)
+ // RegisterSignal(src, COMSIG_MOB_GHOSTIZE_FINAL,PROC_REF(set_ghost_timeout))
if(istype(user))
lazarused = TRUE
lazarused_by = WEAKREF(user)
@@ -727,7 +727,7 @@ GLOBAL_LIST_EMPTY(playmob_cooldowns)
if(death_sound)
playsound(get_turf(src),death_sound, 200, ignore_walls = TRUE, vary = FALSE, frequency = SOUND_FREQ_NORMALIZED(sound_pitch, vary_pitches[1], vary_pitches[2]))
if(deathmessage || !del_on_death)
- INVOKE_ASYNC(src, .proc/emote, "deathgasp")
+ INVOKE_ASYNC(src,PROC_REF(emote), "deathgasp")
if(del_on_death)
..(gibbed)
// if(prob(del_on_death*100))
diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm
index b983c9bef51..fd1d7eb5998 100644
--- a/code/modules/mob/living/simple_animal/slime/life.dm
+++ b/code/modules/mob/living/simple_animal/slime/life.dm
@@ -388,7 +388,7 @@
else if(CHECK_MOBILITY(src, MOBILITY_MOVE) && isturf(loc) && prob(33))
step(src, pick(GLOB.cardinals))
else if(!AIproc)
- INVOKE_ASYNC(src, .proc/AIprocess)
+ INVOKE_ASYNC(src,PROC_REF(AIprocess))
/mob/living/simple_animal/slime/handle_automated_movement()
return //slime random movement is currently handled in handle_targets()
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 25319c5722c..12580eeb9e4 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -644,7 +644,7 @@
if(stat == DEAD)
return
if(!silent)
- INVOKE_ASYNC(src, .proc/emote, "deathgasp")
+ INVOKE_ASYNC(src,PROC_REF(emote), "deathgasp")
ADD_TRAIT(src, TRAIT_FAKEDEATH, source)
ADD_TRAIT(src, TRAIT_DEATHCOMA, source)
tod = STATION_TIME_TIMESTAMP("hh:mm:ss", world.time)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 8f1e3faa552..97ba0fda097 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -214,7 +214,7 @@
M.show_message(msg, MSG_VISUAL, msg, MSG_AUDIBLE)
///Adds the functionality to self_message.
-mob/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, mob/target, target_message, visible_message_flags = NONE, pref_check)
+/mob/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, mob/target, target_message, visible_message_flags = NONE, pref_check)
. = ..()
//if(self_message && target != src)
//show_message(self_message, MSG_VISUAL, blind_message, MSG_AUDIBLE, pref_check)
@@ -411,8 +411,8 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA
if(isnull(client.recent_examines[A]) || client.recent_examines[A] < world.time)
result = A.examine(src)
client.recent_examines[A] = world.time + EXAMINE_MORE_TIME // set the value to when the examine cooldown ends
- RegisterSignal(A, COMSIG_PARENT_QDELETING, .proc/clear_from_recent_examines, override=TRUE) // to flush the value if deleted early
- addtimer(CALLBACK(src, .proc/clear_from_recent_examines, A), EXAMINE_MORE_TIME)
+ RegisterSignal(A, COMSIG_PARENT_QDELETING,PROC_REF(clear_from_recent_examines), override=TRUE) // to flush the value if deleted early
+ addtimer(CALLBACK(src,PROC_REF(clear_from_recent_examines), A), EXAMINE_MORE_TIME)
handle_eye_contact(A)
else
result = A.examine_more(src)
@@ -454,13 +454,13 @@ mob/visible_message(message, self_message, blind_message, vision_distance = DEFA
if(!istype(examined_carbon) || (!(examined_carbon.wear_mask && examined_carbon.wear_mask.flags_inv & HIDEFACE) && !(examined_carbon.head && examined_carbon.head.flags_inv & HIDEFACE)))
if(SEND_SIGNAL(src, COMSIG_MOB_EYECONTACT, examined_mob, TRUE) != COMSIG_BLOCK_EYECONTACT)
var/msg = span_smallnotice("You make eye contact with [examined_mob].")
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, src, msg), 3) // so the examine signal has time to fire and this will print after
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), src, msg), 3) // so the examine signal has time to fire and this will print after
var/mob/living/carbon/us_as_carbon = src // i know >casting as subtype, but this isn't really an inheritable check
if(!istype(us_as_carbon) || (!(us_as_carbon.wear_mask && us_as_carbon.wear_mask.flags_inv & HIDEFACE) && !(us_as_carbon.head && us_as_carbon.head.flags_inv & HIDEFACE)))
if(SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT)
var/msg = span_smallnotice("[src] makes eye contact with you.")
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, examined_mob, msg), 3)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), examined_mob, msg), 3)
//same as above
//note: ghosts can point, this is intended
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index f9c9b880057..a5028dbacbf 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -11,7 +11,7 @@
if(!length(message))
return
if(!findtext(message, "*")) //this is used to abort the play_AC_typing_indicator() in case someone is using an emote.
- INVOKE_ASYNC(src, .proc/play_AC_typing_indicator, message)
+ INVOKE_ASYNC(src,PROC_REF(play_AC_typing_indicator), message)
if(is_autowhisper)
return whisper_verb(message)
return say_verb(message)
@@ -29,7 +29,7 @@
return
clear_typing_indicator()
if(!findtext(message, "*")) //this is used to abort the play_AC_typing_indicator() in case someone is using an emote.
- INVOKE_ASYNC(src, .proc/play_AC_typing_indicator, message)
+ INVOKE_ASYNC(src,PROC_REF(play_AC_typing_indicator), message)
say(message)
/mob/verb/me_typing_indicator()
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index 9cd29c993d7..84a2c745803 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -17,7 +17,7 @@
return M.get_top_level_mob()
return src
-proc/get_top_level_mob(mob/S)
+/proc/get_top_level_mob(mob/S)
if(istype(S.loc,/mob)&&S.loc!=S)
var/mob/M=S.loc
return M.get_top_level_mob()
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 2b7a2bbb6b7..bd3749128ac 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -19,7 +19,7 @@
new /obj/effect/temp_visual/monkeyify(loc)
- transformation_timer = addtimer(CALLBACK(src, .proc/finish_monkeyize, tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE)
+ transformation_timer = addtimer(CALLBACK(src,PROC_REF(finish_monkeyize), tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE)
/mob/living/carbon/proc/finish_monkeyize(tr_flags)
transformation_timer = null
@@ -175,7 +175,7 @@
invisibility = INVISIBILITY_MAXIMUM
new /obj/effect/temp_visual/monkeyify/humanify(loc)
- transformation_timer = addtimer(CALLBACK(src, .proc/finish_humanize, tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE)
+ transformation_timer = addtimer(CALLBACK(src,PROC_REF(finish_humanize), tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE)
/mob/living/carbon/proc/finish_humanize(tr_flags)
transformation_timer = null
diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm
index ec378b035aa..6a5749b7471 100644
--- a/code/modules/mob/typing_indicator.dm
+++ b/code/modules/mob/typing_indicator.dm
@@ -40,7 +40,7 @@ GLOBAL_LIST_EMPTY(typing_indicator_overlays)
return
typing_indicator_current = state_override
add_overlay(state_override)
- typing_indicator_timerid = addtimer(CALLBACK(src, .proc/clear_typing_indicator), timeout_override, TIMER_STOPPABLE)
+ typing_indicator_timerid = addtimer(CALLBACK(src,PROC_REF(clear_typing_indicator)), timeout_override, TIMER_STOPPABLE)
/**
* Removes typing indicator.
@@ -60,7 +60,7 @@ GLOBAL_LIST_EMPTY(typing_indicator_overlays)
appearance_flags = RESET_COLOR | TILE_BOUND | PIXEL_SCALE
layer = ABOVE_FLY_LAYER
-mob/proc/toggle_typing_indicator()
+/mob/proc/toggle_typing_indicator()
if(!typing_indicator_current && typing_indicator_enabled)
display_typing_indicator()
else
diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm
index a81d9e32180..17a69b65b4e 100644
--- a/code/modules/modular_computers/laptop_vendor.dm
+++ b/code/modules/modular_computers/laptop_vendor.dm
@@ -305,6 +305,6 @@
credits -= total_price
say("Enjoy your new product!")
state = 3
- addtimer(CALLBACK(src, .proc/reset_order), 100)
+ addtimer(CALLBACK(src,PROC_REF(reset_order)), 100)
return TRUE
return FALSE
diff --git a/code/modules/newscaster/newscaster_machine.dm b/code/modules/newscaster/newscaster_machine.dm
index 78efd7c239a..bb72d1d7bb9 100644
--- a/code/modules/newscaster/newscaster_machine.dm
+++ b/code/modules/newscaster/newscaster_machine.dm
@@ -689,7 +689,7 @@ GLOBAL_LIST_EMPTY(allCasters)
say("Breaking news from [channel]!")
alert = TRUE
update_icon()
- addtimer(CALLBACK(src,.proc/remove_alert),alert_delay,TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(remove_alert)),alert_delay,TIMER_UNIQUE|TIMER_OVERRIDE)
playsound(loc, 'sound/machines/twobeep.ogg', 75, 1)
else
say("Attention! Wanted issue distributed!")
diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
index d8fc1a62c9f..565d4b69d24 100644
--- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
@@ -11,7 +11,7 @@
a_boost--
to_chat(H, span_notice("There are [a_boost] adrenaline boosts remaining."))
s_coold = 3
- addtimer(CALLBACK(src, .proc/ninjaboost_after), 70)
+ addtimer(CALLBACK(src,PROC_REF(ninjaboost_after)), 70)
/obj/item/clothing/suit/space/space_ninja/proc/ninjaboost_after()
var/mob/living/carbon/human/H = affecting
diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm
index fc4c318a98f..33ebc58e11d 100644
--- a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm
@@ -21,13 +21,13 @@ Contents:
animate(affecting, alpha = 15, time = 3 SECONDS)
affecting.visible_message(span_warning("[affecting.name] vanishes into thin air!"), \
span_notice("You are now mostly invisible to normal detection."))
- addtimer(CALLBACK(src, .proc/enable_signals), 3 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(enable_signals)), 3 SECONDS)
/obj/item/clothing/suit/space/space_ninja/proc/enable_signals()
if(!affecting)
return
- RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE), .proc/reduce_stealth)
- RegisterSignal(affecting, COMSIG_MOVABLE_BUMP, .proc/bumping_stealth)
+ RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_TELEPORTED, COMSIG_LIVING_GUN_PROCESS_FIRE),PROC_REF(reduce_stealth))
+ RegisterSignal(affecting, COMSIG_MOVABLE_BUMP,PROC_REF(bumping_stealth))
/obj/item/clothing/suit/space/space_ninja/proc/reduce_stealth(datum/source)
affecting.alpha = min(affecting.alpha + 40, 100)
diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm
index 481ca21ef5c..1590d9a4158 100644
--- a/code/modules/ninja/suit/suit_initialisation.dm
+++ b/code/modules/ninja/suit/suit_initialisation.dm
@@ -13,18 +13,18 @@
return //Not sure how this could happen.
s_busy = TRUE
to_chat(U, span_notice("Now initializing..."))
- addtimer(CALLBACK(src, .proc/ninitialize_two, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(ninitialize_two), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_two(delay, mob/living/carbon/human/U)
if(!lock_suit(U))//To lock the suit onto wearer.
s_busy = FALSE
return
to_chat(U, span_notice("Securing external locking mechanism...\nNeural-net established."))
- addtimer(CALLBACK(src, .proc/ninitialize_three, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(ninitialize_three), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_three(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("Extending neural-net interface...\nNow monitoring brain wave pattern..."))
- addtimer(CALLBACK(src, .proc/ninitialize_four, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(ninitialize_four), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_four(delay, mob/living/carbon/human/U)
if(U.stat == DEAD|| U.health <= 0)
@@ -35,15 +35,15 @@
lockIcons(U)//Check for icons.
U.regenerate_icons()
to_chat(U, span_notice("Linking neural-net interface...\nPattern\green GREEN, continuing operation."))
- addtimer(CALLBACK(src, .proc/ninitialize_five, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(ninitialize_five), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_five(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("VOID-shift device status: ONLINE.\nCLOAK-tech device status: ONLINE."))
- addtimer(CALLBACK(src, .proc/ninitialize_six, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(ninitialize_six), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_six(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("Primary system status: ONLINE.\nBackup system status: ONLINE.\nCurrent energy capacity: [DisplayEnergy(cell.charge)]."))
- addtimer(CALLBACK(src, .proc/ninitialize_seven, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(ninitialize_seven), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_seven(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("All systems operational. Welcome to SpiderOS, [U.real_name]."))
@@ -59,32 +59,32 @@
if(alert("Are you certain you wish to remove the suit? This will take time and remove all abilities.",,"Yes","No")=="No")
return
s_busy = TRUE
- addtimer(CALLBACK(src, .proc/deinitialize_two, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(deinitialize_two), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_two(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("Now de-initializing..."))
- addtimer(CALLBACK(src, .proc/deinitialize_three, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(deinitialize_three), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_three(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("Logging off, [U.real_name]. Shutting down SpiderOS."))
- addtimer(CALLBACK(src, .proc/deinitialize_four, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(deinitialize_four), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_four(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("Primary system status: OFFLINE.\nBackup system status: OFFLINE."))
- addtimer(CALLBACK(src, .proc/deinitialize_five, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(deinitialize_five), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_five(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("VOID-shift device status: OFFLINE.\nCLOAK-tech device status: OFFLINE."))
cancel_stealth()//Shutdowns stealth.
- addtimer(CALLBACK(src, .proc/deinitialize_six, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(deinitialize_six), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_six(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("Disconnecting neural-net interface...\greenSuccess."))
- addtimer(CALLBACK(src, .proc/deinitialize_seven, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(deinitialize_seven), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_seven(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("Disengaging neural-net interface...\greenSuccess."))
- addtimer(CALLBACK(src, .proc/deinitialize_eight, delay, U), delay)
+ addtimer(CALLBACK(src,PROC_REF(deinitialize_eight), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_eight(delay, mob/living/carbon/human/U)
to_chat(U, span_notice("Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: FINISHED."))
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index 4fe08c09c73..4bc344dabc6 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -228,7 +228,7 @@
user.visible_message(span_notice("With a sudden blaze, [H] stands back up."))
H.fakefire()
fulfillContract(H, 1)//Revival contracts are always signed in blood
- addtimer(CALLBACK(H, /mob/living/carbon/human.proc/fakefireextinguish), 5, TIMER_UNIQUE)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human,fakefireextinguish)), 5, TIMER_UNIQUE)
addtimer(CALLBACK(src, "resetcooldown"), 300, TIMER_UNIQUE)
else
..()
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 7c916bfd414..76854c63184 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -97,23 +97,23 @@
return FALSE
// Basic paper
if(istype(paper_copy, /obj/item/paper))
- do_copy_loop(CALLBACK(src, .proc/make_paper_copy), usr)
+ do_copy_loop(CALLBACK(src,PROC_REF(make_paper_copy)), usr)
return TRUE
// Devil contract paper.
if(istype(paper_copy, /obj/item/paper/contract/employment))
- do_copy_loop(CALLBACK(src, .proc/make_devil_paper_copy), usr)
+ do_copy_loop(CALLBACK(src,PROC_REF(make_devil_paper_copy)), usr)
return TRUE
// Copying photo.
if(photo_copy)
- do_copy_loop(CALLBACK(src, .proc/make_photo_copy), usr)
+ do_copy_loop(CALLBACK(src,PROC_REF(make_photo_copy)), usr)
return TRUE
// Copying Documents.
if(document_copy)
- do_copy_loop(CALLBACK(src, .proc/make_document_copy), usr)
+ do_copy_loop(CALLBACK(src,PROC_REF(make_document_copy)), usr)
return TRUE
// ASS COPY. By Miauw
if(ass)
- do_copy_loop(CALLBACK(src, .proc/make_ass_copy), usr)
+ do_copy_loop(CALLBACK(src,PROC_REF(make_ass_copy)), usr)
return TRUE
// Remove the paper/photo/document from the photocopier.
@@ -193,7 +193,7 @@
// break
addtimer(copy_cb, i SECONDS)
num_loops++
- addtimer(CALLBACK(src, .proc/reset_busy), num_loops SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(reset_busy)), num_loops SECONDS)
/**
* Sets busy to `FALSE`. Created as a proc so it can be used in callbacks.
diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm
index bf3798fa733..7727e43042c 100644
--- a/code/modules/paperwork/ticketmachine.dm
+++ b/code/modules/paperwork/ticketmachine.dm
@@ -165,7 +165,7 @@
/obj/machinery/ticket_machine/attack_hand(mob/living/carbon/user)
. = ..()
- INVOKE_ASYNC(src, .proc/attempt_ticket, user)
+ INVOKE_ASYNC(src,PROC_REF(attempt_ticket), user)
/obj/machinery/ticket_machine/proc/attempt_ticket(mob/living/carbon/user)
if(!ready)
@@ -192,7 +192,7 @@
tickets += theirticket
if(obj_flags & EMAGGED) //Emag the machine to destroy the HOP's life.
ready = FALSE
- addtimer(CALLBACK(src, .proc/reset_cooldown), cooldown)//Small cooldown to prevent piles of flaming tickets
+ addtimer(CALLBACK(src,PROC_REF(reset_cooldown)), cooldown)//Small cooldown to prevent piles of flaming tickets
theirticket.fire_act()
user.dropItemToGround(theirticket)
user.adjust_fire_stacks(1)
diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm
index 3adcdb7709a..f7fe7222e81 100644
--- a/code/modules/photography/camera/camera.dm
+++ b/code/modules/photography/camera/camera.dm
@@ -130,11 +130,11 @@
var/mob/living/carbon/human/H = user
if (HAS_TRAIT(H, TRAIT_PHOTOGRAPHER))
realcooldown *= 0.5
- addtimer(CALLBACK(src, .proc/cooldown), realcooldown)
+ addtimer(CALLBACK(src,PROC_REF(cooldown)), realcooldown)
icon_state = state_off
- INVOKE_ASYNC(src, .proc/captureimage, target, user, flag, picture_size_x - 1, picture_size_y - 1)
+ INVOKE_ASYNC(src,PROC_REF(captureimage), target, user, flag, picture_size_x - 1, picture_size_y - 1)
/obj/item/camera/proc/cooldown()
diff --git a/code/modules/pits/pits.dm b/code/modules/pits/pits.dm
index da471ee80c6..409b70a2c4b 100644
--- a/code/modules/pits/pits.dm
+++ b/code/modules/pits/pits.dm
@@ -11,7 +11,7 @@
layer = HIGH_TURF_LAYER
var/turf/open/indestructible/ground/outside/desert/parent
-obj/dugpit/New(lnk)
+/obj/dugpit/New(lnk)
..()
parent = lnk
diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm
index a1810070c33..6ee1f3fe63b 100644
--- a/code/modules/plumbing/plumbers/_plumb_machinery.dm
+++ b/code/modules/plumbing/plumbers/_plumb_machinery.dm
@@ -26,7 +26,7 @@
. = ..()
anchored = bolt
create_reagents(buffer, reagent_flags)
- AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated))
+ AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src,PROC_REF(can_be_rotated)))
/obj/machinery/plumbing/proc/can_be_rotated(mob/user,rotation_type)
return TRUE
diff --git a/code/modules/plumbing/plumbers/autohydro.dm b/code/modules/plumbing/plumbers/autohydro.dm
index 4d10ce4f5ed..1372b2c1d9f 100644
--- a/code/modules/plumbing/plumbers/autohydro.dm
+++ b/code/modules/plumbing/plumbers/autohydro.dm
@@ -34,7 +34,7 @@
/obj/machinery/hydroponics/constructable/automagic/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated))
+ AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src,PROC_REF(can_be_rotated)))
/obj/machinery/hydroponics/constructable/proc/can_be_rotated(mob/user, rotation_type)
diff --git a/code/modules/plumbing/plumbers/fermenter.dm b/code/modules/plumbing/plumbers/fermenter.dm
index d8fdd05bdcd..616769b8c09 100644
--- a/code/modules/plumbing/plumbers/fermenter.dm
+++ b/code/modules/plumbing/plumbers/fermenter.dm
@@ -41,14 +41,14 @@
if(move_dir == eat_dir)
return TRUE
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
/obj/machinery/plumbing/fermenter/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/ferment, AM)
+ INVOKE_ASYNC(src,PROC_REF(ferment), AM)
/obj/machinery/plumbing/fermenter/proc/ferment(atom/AM)
if(stat & NOPOWER)
diff --git a/code/modules/plumbing/plumbers/grinder_chemical.dm b/code/modules/plumbing/plumbers/grinder_chemical.dm
index 6a52cd4fac7..3826ed1a9a5 100644
--- a/code/modules/plumbing/plumbers/grinder_chemical.dm
+++ b/code/modules/plumbing/plumbers/grinder_chemical.dm
@@ -14,7 +14,7 @@
. = ..()
AddComponent(/datum/component/plumbing/simple_supply, bolt)
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -46,7 +46,7 @@
/obj/machinery/plumbing/grinder_chemical/proc/on_entered(atom/movable/AM)
SIGNAL_HANDLER
- INVOKE_ASYNC(src, .proc/grind, AM)
+ INVOKE_ASYNC(src,PROC_REF(grind), AM)
/obj/machinery/plumbing/grinder_chemical/proc/grind(atom/AM)
if(stat & NOPOWER)
diff --git a/code/modules/plumbing/plumbers/medipenrefill.dm b/code/modules/plumbing/plumbers/medipenrefill.dm
index 33714eeb9c4..52ab98c07d8 100644
--- a/code/modules/plumbing/plumbers/medipenrefill.dm
+++ b/code/modules/plumbing/plumbers/medipenrefill.dm
@@ -57,7 +57,7 @@
if(reagents.has_reagent(allowed[P.type], 10))
busy = TRUE
add_overlay("active")
- addtimer(CALLBACK(src, .proc/refill, P, user), 20)
+ addtimer(CALLBACK(src,PROC_REF(refill), P, user), 20)
qdel(P)
return
to_chat(user, span_danger("There aren't enough reagents to finish this operation."))
diff --git a/code/modules/pool/pool_structures.dm b/code/modules/pool/pool_structures.dm
index 179f607f806..417fbd27d90 100644
--- a/code/modules/pool/pool_structures.dm
+++ b/code/modules/pool/pool_structures.dm
@@ -77,7 +77,7 @@
jumper.AddElement(/datum/element/swimming)
sleep(1)
jumper.forceMove(T)
- addtimer(CALLBACK(src, .proc/dive, jumper, original_layer, original_px, original_py), 10)
+ addtimer(CALLBACK(src,PROC_REF(dive), jumper, original_layer, original_px, original_py), 10)
/obj/structure/pool/Lboard/proc/dive(mob/living/carbon/jumper, original_layer, original_px, original_py)
switch(rand(1, 100))
@@ -87,7 +87,7 @@
sleep(15)
backswim()
var/atom/throw_target = get_edge_target_turf(src, dir)
- jumper.throw_at(throw_target, 1, 1, callback = CALLBACK(src, .proc/on_finish_jump, jumper))
+ jumper.throw_at(throw_target, 1, 1, callback = CALLBACK(src,PROC_REF(on_finish_jump), jumper))
if(21 to 40)
jumper.visible_message(span_notice("[jumper] goes for a dive!"), \
@@ -95,7 +95,7 @@
sleep(20)
backswim()
var/atom/throw_target = get_edge_target_turf(src, dir)
- jumper.throw_at(throw_target, 2, 1, callback = CALLBACK(src, .proc/on_finish_jump, jumper))
+ jumper.throw_at(throw_target, 2, 1, callback = CALLBACK(src,PROC_REF(on_finish_jump), jumper))
if(41 to 60)
jumper.visible_message(span_notice("[jumper] goes for a long dive! Stay far away!"), \
@@ -103,7 +103,7 @@
sleep(25)
backswim()
var/atom/throw_target = get_edge_target_turf(src, dir)
- jumper.throw_at(throw_target, 3, 1, callback = CALLBACK(src, .proc/on_finish_jump, jumper))
+ jumper.throw_at(throw_target, 3, 1, callback = CALLBACK(src,PROC_REF(on_finish_jump), jumper))
if(61 to 80)
jumper.visible_message(span_notice("[jumper] goes for an awesome dive! Don't stand in [jumper.p_their()] way!"), \
@@ -111,14 +111,14 @@
sleep(30)
backswim()
var/atom/throw_target = get_edge_target_turf(src, dir)
- jumper.throw_at(throw_target, 4, 1, callback = CALLBACK(src, .proc/on_finish_jump, jumper))
+ jumper.throw_at(throw_target, 4, 1, callback = CALLBACK(src,PROC_REF(on_finish_jump), jumper))
if(81 to 91)
sleep(20)
backswim()
jumper.visible_message(span_danger("[jumper] misses [jumper.p_their()] step!"), \
span_userdanger("You misstep!"))
var/atom/throw_target = get_edge_target_turf(src, dir)
- jumper.throw_at(throw_target, 0, 1, callback = CALLBACK(src, .proc/on_finish_jump, jumper))
+ jumper.throw_at(throw_target, 0, 1, callback = CALLBACK(src,PROC_REF(on_finish_jump), jumper))
jumper.DefaultCombatKnockdown(100)
jumper.adjustBruteLoss(10)
@@ -133,7 +133,7 @@
jumper.visible_message(span_notice("[jumper] fails!"), \
span_userdanger("You can't quite do it!"))
var/atom/throw_target = get_edge_target_turf(src, dir)
- jumper.throw_at(throw_target, 1, 1, callback = CALLBACK(src, .proc/on_finish_jump, jumper))
+ jumper.throw_at(throw_target, 1, 1, callback = CALLBACK(src,PROC_REF(on_finish_jump), jumper))
else
jumper.fire_stacks = min(1,jumper.fire_stacks + 1)
jumper.IgniteMob()
@@ -142,8 +142,8 @@
jumper.visible_message(span_danger("[jumper] bursts into flames of pure awesomness!"), \
span_userdanger("No one can stop you now!"))
var/atom/throw_target = get_edge_target_turf(src, dir)
- jumper.throw_at(throw_target, 6, 1, callback = CALLBACK(src, .proc/on_finish_jump, jumper))
- addtimer(CALLBACK(src, .proc/togglejumping), 35)
+ jumper.throw_at(throw_target, 6, 1, callback = CALLBACK(src,PROC_REF(on_finish_jump), jumper))
+ addtimer(CALLBACK(src,PROC_REF(togglejumping)), 35)
reset_position(jumper, original_layer, original_px, original_py)
/obj/structure/pool/Lboard/proc/togglejumping()
diff --git a/code/modules/pool/pool_wires.dm b/code/modules/pool/pool_wires.dm
index d9b3d28b84d..04f1d2f7bf1 100644
--- a/code/modules/pool/pool_wires.dm
+++ b/code/modules/pool/pool_wires.dm
@@ -35,7 +35,7 @@
P.temperature_unlocked = FALSE
if(WIRE_SHOCK)
P.shocked = !P.shocked
- addtimer(CALLBACK(P, /obj/machinery/autolathe.proc/reset, wire), 60)
+ addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/machinery/autolathe,reset), wire), 60)
/datum/wires/poolcontroller/on_cut(wire, mend)
var/obj/machinery/pool/controller/P = holder
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index d66f14009b3..ec3a9779dc6 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -245,12 +245,12 @@
if(AMS.processing)
AMS.shutdown_core()
AMS.control_unit = null
- addtimer(CALLBACK(AMS, /obj/machinery/am_shielding.proc/controllerscan), 10)
+ addtimer(CALLBACK(AMS, TYPE_PROC_REF(/obj/machinery/am_shielding,controllerscan)), 10)
linked_shielding = list()
else
for(var/obj/machinery/am_shielding/AMS in linked_shielding)
AMS.update_icon()
- addtimer(CALLBACK(src, .proc/reset_shield_icon_delay), 20)
+ addtimer(CALLBACK(src,PROC_REF(reset_shield_icon_delay)), 20)
/obj/machinery/power/am_control_unit/proc/reset_shield_icon_delay()
shield_icon_delay = 0
@@ -263,7 +263,7 @@
for(var/obj/machinery/am_shielding/AMS in linked_cores)
stored_core_stability += AMS.stability
stored_core_stability/=linked_cores.len
- addtimer(CALLBACK(src, .proc/reset_stored_core_stability_delay), 40)
+ addtimer(CALLBACK(src,PROC_REF(reset_stored_core_stability_delay)), 40)
/obj/machinery/power/am_control_unit/proc/reset_stored_core_stability_delay()
stored_core_stability_delay = 0
diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm
index b5ef5829153..1348f455f39 100644
--- a/code/modules/power/antimatter/shielding.dm
+++ b/code/modules/power/antimatter/shielding.dm
@@ -30,7 +30,7 @@
/obj/machinery/am_shielding/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/controllerscan), 10)
+ addtimer(CALLBACK(src,PROC_REF(controllerscan)), 10)
/obj/machinery/am_shielding/proc/overheat()
visible_message(span_danger("[src] melts!"))
@@ -65,7 +65,7 @@
if(!control_unit)
if(!priorscan)
- addtimer(CALLBACK(src, .proc/controllerscan, 1), 20)
+ addtimer(CALLBACK(src,PROC_REF(controllerscan), 1), 20)
return
collapse()
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 111613ea351..69b0c92b2ef 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -188,7 +188,7 @@
name = "\improper [A.name] APC"
stat |= MAINT
update_icon()
- addtimer(CALLBACK(src, .proc/update), 5)
+ addtimer(CALLBACK(src,PROC_REF(update)), 5)
GLOB.apcs_list += src
@@ -1073,7 +1073,7 @@
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
return TRUE
@@ -1142,7 +1142,7 @@
return
to_chat(malf, "Beginning override of APC systems. This takes some time, and you cannot perform other actions during the process.")
malf.malfhack = src
- malf.malfhacking = addtimer(CALLBACK(malf, /mob/living/silicon/ai/.proc/malfhacked, src), 600, TIMER_STOPPABLE)
+ malf.malfhacking = addtimer(CALLBACK(malf, TYPE_PROC_REF(/mob/living/silicon/ai/,malfhacked), src), 600, TIMER_STOPPABLE)
var/atom/movable/screen/alert/hackingapc/A
A = malf.throw_alert("hackingapc", /atom/movable/screen/alert/hackingapc)
@@ -1462,7 +1462,7 @@
environ = 0
update_icon()
update()
- addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), severity*8)
+ addtimer(CALLBACK(src,PROC_REF(reset), APC_RESET_EMP), severity*8)
/obj/machinery/power/apc/blob_act(obj/structure/blob/B)
set_broken()
@@ -1489,7 +1489,7 @@
return
if( cell && cell.charge>=20)
cell.use(20)
- INVOKE_ASYNC(src, .proc/break_lights)
+ INVOKE_ASYNC(src,PROC_REF(break_lights))
/obj/machinery/power/apc/proc/break_lights()
for(var/obj/machinery/light/L in area)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 1a7302453c9..12d5a69d0f8 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -468,7 +468,7 @@ By design, d1 is the smallest direction and d2 is the highest
moveToNullspace()
powernet.remove_cable(src) //remove the cut cable from its powernet
- addtimer(CALLBACK(O, .proc/auto_propogate_cut_cable, O), 0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables
+ addtimer(CALLBACK(O,PROC_REF(auto_propogate_cut_cable), O), 0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables
// Disconnect machines connected to nodes
if(d1 == 0) // if we cut a node (O-X) cable
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index b2afaeb2587..42ecab7d11a 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -42,7 +42,7 @@
if(ratingdesc)
desc += " This one has a rating of [DisplayEnergy(maxcharge)], and you should not swallow it."
update_icon()
- RegisterSignal(src, COMSIG_ATOM_LICKED, .proc/lick_battery)
+ RegisterSignal(src, COMSIG_ATOM_LICKED,PROC_REF(lick_battery))
/obj/item/stock_parts/cell/Destroy()
STOP_PROCESSING(SSobj, src)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 2200536012c..d2d0a13d74e 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -291,7 +291,7 @@
update(0)
if(flicker_chance)
START_PROCESSING(SSmachines, src)
- RegisterSignal(src, COMSIG_ATOM_LICKED, .proc/lick_light)
+ RegisterSignal(src, COMSIG_ATOM_LICKED,PROC_REF(lick_light))
/obj/machinery/light/proc/lick_light(atom/A, mob/living/carbon/licker, obj/item/hand_item/tongue)
if(!iscarbon(licker) || !tongue)
diff --git a/code/modules/power/multiz.dm b/code/modules/power/multiz.dm
index 0b8d1eea40c..a9ef5344f7a 100644
--- a/code/modules/power/multiz.dm
+++ b/code/modules/power/multiz.dm
@@ -38,13 +38,13 @@
icon_state = "cablerelay-off"
to_chat(user, span_danger("Powernet connection lost. Attempting to re-establish. Ensure the relays below this one are connected too."))
find_relays()
- addtimer(CALLBACK(src, .proc/refresh), 20) //Wait a bit so we can find the one below, then get powering
+ addtimer(CALLBACK(src,PROC_REF(refresh)), 20) //Wait a bit so we can find the one below, then get powering
return TRUE
/obj/machinery/power/deck_relay/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/find_relays), 30)
- addtimer(CALLBACK(src, .proc/refresh), 50) //Wait a bit so we can find the one below, then get powering
+ addtimer(CALLBACK(src,PROC_REF(find_relays)), 30)
+ addtimer(CALLBACK(src,PROC_REF(refresh)), 50) //Wait a bit so we can find the one below, then get powering
///Handles re-acquiring + merging powernets found by find_relays()
/obj/machinery/power/deck_relay/proc/refresh()
diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm
index a57a8513907..41d8aecf637 100644
--- a/code/modules/power/rtg.dm
+++ b/code/modules/power/rtg.dm
@@ -76,7 +76,7 @@
span_italic("You hear a loud electrical crack!"))
playsound(src.loc, 'sound/magic/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(usr, GLOBAL_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/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index 01230877bf9..ebdd0f61447 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -19,7 +19,7 @@
/obj/machinery/field/containment/Initialize()
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -66,10 +66,10 @@
/obj/machinery/field/containment/proc/on_entered(mob/mover)
SIGNAL_HANDLER
if(isliving(mover))
- INVOKE_ASYNC(src, .proc/shock, mover)
+ INVOKE_ASYNC(src,PROC_REF(shock), mover)
if(ismachinery(mover) || isstructure(mover) || ismecha(mover))
- INVOKE_ASYNC(src, .proc/bump_field, mover)
+ INVOKE_ASYNC(src,PROC_REF(bump_field), mover)
/obj/machinery/field/containment/proc/set_master(master1,master2)
if(!master1 || !master2)
@@ -140,4 +140,4 @@
do_sparks(5, TRUE, AM.loc)
var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src)))
AM.throw_at(target, 200, 4)
- addtimer(CALLBACK(src, .proc/clear_shock), 5)
+ addtimer(CALLBACK(src,PROC_REF(clear_shock)), 5)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index d508d56fcaa..f11e42f26d9 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -95,7 +95,7 @@
/obj/machinery/power/emitter/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated))
+ AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src,PROC_REF(can_be_rotated)))
/obj/machinery/power/emitter/proc/can_be_rotated(mob/user,rotation_type)
if (anchored)
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index a9c66d51105..4fcc2cc095d 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -36,7 +36,7 @@
if(A)
var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/cult_effects.dmi', "ghostalertsie")
notify_ghosts("Nar'Sie has risen in \the [A.name]. Reach out to the Geometer to be given a new shell for your soul.", source = src, alert_overlay = alert_overlay, action=NOTIFY_ATTACK)
- INVOKE_ASYNC(src, .proc/narsie_spawn_animation)
+ INVOKE_ASYNC(src,PROC_REF(narsie_spawn_animation))
/obj/singularity/narsie/large/cult // For the new cult ending, guaranteed to end the round within 3 minutes
var/list/souls_needed = list()
@@ -67,7 +67,7 @@
if(player.stat != DEAD && player.loc && is_station_level(player.loc.z) && !iscultist(player) && !isanimal(player))
souls_needed[player] = TRUE
soul_goal = round(1 + LAZYLEN(souls_needed) * 0.75)
- INVOKE_ASYNC(src, .proc/begin_the_end)
+ INVOKE_ASYNC(src,PROC_REF(begin_the_end))
/obj/singularity/narsie/large/cult/proc/begin_the_end()
sleep(50)
@@ -82,7 +82,7 @@
if(resolved == FALSE)
resolved = TRUE
sound_to_playing_players('sound/machines/alarm.ogg')
- addtimer(CALLBACK(GLOBAL_PROC, .proc/cult_ending_helper), 120)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(cult_ending_helper)), 120)
/obj/singularity/narsie/large/cult/Destroy()
GLOB.cult_narsie = null
@@ -93,9 +93,9 @@
/proc/cult_ending_helper(no_explosion = 0)
if(no_explosion)
- Cinematic(CINEMATIC_CULT,world,CALLBACK(GLOBAL_PROC,/proc/ending_helper))
+ Cinematic(CINEMATIC_CULT,world,CALLBACK(GLOBAL_PROC,GLOBAL_PROC_REF(ending_helper)))
else
- Cinematic(CINEMATIC_CULT_NUKE,world,CALLBACK(GLOBAL_PROC,/proc/ending_helper))
+ Cinematic(CINEMATIC_CULT_NUKE,world,CALLBACK(GLOBAL_PROC,GLOBAL_PROC_REF(ending_helper)))
//ATTACK GHOST IGNORING PARENT RETURN VALUE
/obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob)
diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm
index 8f179c4c328..7884ca3dbc4 100644
--- a/code/modules/power/singularity/particle_accelerator/particle.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle.dm
@@ -25,7 +25,7 @@
/obj/effect/accelerated_particle/New(loc)
..()
- addtimer(CALLBACK(src, .proc/move), 1)
+ addtimer(CALLBACK(src,PROC_REF(move)), 1)
/obj/effect/accelerated_particle/Bump(atom/A)
@@ -46,7 +46,7 @@
/obj/effect/accelerated_particle/proc/on_entered(atom/A)
SIGNAL_HANDLER
if(isliving(A))
- INVOKE_ASYNC(src, .proc/toxmob, A)
+ INVOKE_ASYNC(src,PROC_REF(toxmob), A)
/obj/effect/accelerated_particle/ex_act(severity, target)
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 7ddc27f77b9..657b43dda86 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -35,7 +35,7 @@
panel.layer = FLY_LAYER
Make(S)
connect_to_network()
- RegisterSignal(SSsun, COMSIG_SUN_MOVED, .proc/queue_update_solar_exposure)
+ RegisterSignal(SSsun, COMSIG_SUN_MOVED,PROC_REF(queue_update_solar_exposure))
/obj/machinery/power/solar/Destroy()
unset_control() //remove from control computer
@@ -306,7 +306,7 @@
/obj/machinery/power/solar_control/Initialize()
. = ..()
azimuth_rate = SSsun.base_rotation
- RegisterSignal(SSsun, COMSIG_SUN_MOVED, .proc/timed_track)
+ RegisterSignal(SSsun, COMSIG_SUN_MOVED,PROC_REF(timed_track))
connect_to_network()
if(powernet)
set_panels(azimuth_target)
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 47979b3e9c2..fc57409898f 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -296,7 +296,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
GLOB.main_supermatter_engine = src
AddElement(/datum/element/bsa_blocker)
- RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, .proc/call_explode)
+ RegisterSignal(src, COMSIG_ATOM_BSA_BEAM,PROC_REF(call_explode))
soundloop = new(list(src), TRUE)
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index c78c2487394..d5bac170b20 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -86,7 +86,7 @@
D.adjust_money(min(power_produced, 1))
if(istype(linked_techweb))
linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 1)) // x4 coils = ~240/m point bonus for R&D
- addtimer(CALLBACK(src, .proc/reset_shocked), 10)
+ addtimer(CALLBACK(src,PROC_REF(reset_shocked)), 10)
zap_buckle_check(power)
playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
return power_produced
@@ -124,7 +124,7 @@
D.adjust_money(min(power_produced, 3))
if(istype(linked_techweb))
linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 3)) // x4 coils with a pulse per second or so = ~720/m point bonus for R&D
- addtimer(CALLBACK(src, .proc/reset_shocked), 10)
+ addtimer(CALLBACK(src,PROC_REF(reset_shocked)), 10)
zap_buckle_check(power)
playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5)
return power_produced
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index cc0ecf13a67..f10fa4784e3 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -132,7 +132,7 @@
energy_to_raise = energy_to_raise * 1.25
playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, TRUE, extrarange = 30)
- addtimer(CALLBACK(src, .proc/new_mini_ball), 100)
+ addtimer(CALLBACK(src,PROC_REF(new_mini_ball)), 100)
else if(energy < energy_to_lower && orbiting_balls.len)
energy_to_raise = energy_to_raise / 1.25
diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm
index 3a6dc7c7da4..c94fda93cec 100644
--- a/code/modules/power/tracker.dm
+++ b/code/modules/power/tracker.dm
@@ -21,7 +21,7 @@
. = ..()
Make(S)
connect_to_network()
- RegisterSignal(SSsun, COMSIG_SUN_MOVED, .proc/sun_update)
+ RegisterSignal(SSsun, COMSIG_SUN_MOVED,PROC_REF(sun_update))
/obj/machinery/power/tracker/Destroy()
unset_control() //remove from control computer
diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm
index 323f74d0efe..ad81312d4e2 100644
--- a/code/modules/procedural_mapping/mapGenerator.dm
+++ b/code/modules/procedural_mapping/mapGenerator.dm
@@ -108,7 +108,7 @@
if(!modules || !modules.len)
return
for(var/datum/mapGeneratorModule/mod in modules)
- INVOKE_ASYNC(mod, /datum/mapGeneratorModule.proc/generate)
+ INVOKE_ASYNC(mod, TYPE_PROC_REF(/datum/mapGeneratorModule,generate))
//Requests the mapGeneratorModule(s) to (re)generate this one turf
@@ -119,7 +119,7 @@
if(!modules || !modules.len)
return
for(var/datum/mapGeneratorModule/mod in modules)
- INVOKE_ASYNC(mod, /datum/mapGeneratorModule.proc/place, T)
+ INVOKE_ASYNC(mod, TYPE_PROC_REF(/datum/mapGeneratorModule,place), T)
//Replaces all paths in the module list with actual module datums
diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm
index c3675fd773a..cf36d77e859 100644
--- a/code/modules/projectiles/ammunition/_ammunition.dm
+++ b/code/modules/projectiles/ammunition/_ammunition.dm
@@ -212,9 +212,9 @@
return
var/turf/this_turf_here = get_turf(src)
if(still_warm && this_turf_here && this_turf_here.bullet_sizzle)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/items/welder.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected.
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(playsound), src, 'sound/items/welder.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected.
else if(this_turf_here && this_turf_here.bullet_bounce_sound)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, this_turf_here.bullet_bounce_sound, 60, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them.
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(playsound), src, this_turf_here.bullet_bounce_sound, 60, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them.
/obj/item/ammo_casing/proc/get_casing_destination(eject_direction, max_dist = 6, max_spread = 2)
if(!eject_direction)
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index ae2ac10025b..4c769267457 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -66,7 +66,7 @@
/datum/material/blackpowder = MATS_SHOTGUN_POWDER * MATS_AMMO_POWDER_HANDLOAD_MULT)
fire_power = CASING_POWER_SHOTGUN * CASING_POWER_MOD_HANDLOAD
-obj/item/ammo_casing/shotgun/executioner
+/obj/item/ammo_casing/shotgun/executioner
name = "executioner slug"
desc = "A 12 gauge lead slug purpose built to annihilate flesh on impact."
icon_state = "stunshell"
diff --git a/code/modules/projectiles/ammunition/caseless/rocket.dm b/code/modules/projectiles/ammunition/caseless/rocket.dm
index 5be59b47c59..4b3cf3cd946 100644
--- a/code/modules/projectiles/ammunition/caseless/rocket.dm
+++ b/code/modules/projectiles/ammunition/caseless/rocket.dm
@@ -55,7 +55,7 @@
icon_state = "nuclear"
projectile_type = /obj/item/projectile/bullet/mininuke
-obj/item/ammo_casing/caseless/mininuke/meganuke
+/obj/item/ammo_casing/caseless/mininuke/meganuke
name = "\improper Meganuke"
desc = "You thought a mininuke was high yield? try a mininuke that fires mininukes."
projectile_type = /obj/item/projectile/bullet/meganuke
diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm
index 4cc32236ba5..442aaea710b 100644
--- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm
+++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm
@@ -55,8 +55,8 @@
/obj/item/ammo_box/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_ATOM_POST_ADMIN_SPAWN, .proc/admin_load)
- RegisterSignal(src, COMSIG_GUN_MAG_ADMIN_RELOAD, .proc/admin_load)
+ RegisterSignal(src, COMSIG_ATOM_POST_ADMIN_SPAWN,PROC_REF(admin_load))
+ RegisterSignal(src, COMSIG_GUN_MAG_ADMIN_RELOAD,PROC_REF(admin_load))
/// An aheal, but for ammo boxes
/obj/item/ammo_box/proc/admin_load()
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index eadda26db96..2adf74c8278 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -267,8 +267,8 @@ ATTACHMENTS
/obj/item/gun/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_ATOM_POST_ADMIN_SPAWN, .proc/admin_fill_gun)
- RegisterSignal(src, COMSIG_GUN_MAG_ADMIN_RELOAD, .proc/admin_fill_gun)
+ RegisterSignal(src, COMSIG_ATOM_POST_ADMIN_SPAWN,PROC_REF(admin_fill_gun))
+ RegisterSignal(src, COMSIG_GUN_MAG_ADMIN_RELOAD,PROC_REF(admin_fill_gun))
/obj/item/gun/proc/admin_fill_gun()
return
@@ -465,7 +465,7 @@ ATTACHMENTS
else if(G.can_trigger_gun(user))
loop_counter++
var/stam_cost = G.getstamcost(user)
- addtimer(CALLBACK(G, /obj/item/gun.proc/process_fire, target, user, TRUE, params, null, stam_cost), loop_counter)
+ addtimer(CALLBACK(G, TYPE_PROC_REF(/obj/item/gun,process_fire), target, user, TRUE, params, null, stam_cost), loop_counter)
var/stam_cost = getstamcost(user)
@@ -841,7 +841,7 @@ ATTACHMENTS
user.client.change_view(zoom_out_amt)
user.client.pixel_x = world.icon_size*_x
user.client.pixel_y = world.icon_size*_y
- RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, .proc/rotate)
+ RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE,PROC_REF(rotate))
UnregisterSignal(user, COMSIG_MOVABLE_MOVED) //pls don't conflict with anything else using this signal
user.visible_message(span_notice("[user] looks down the scope of [src]."), span_notice("You look down the scope of [src]."))
else
@@ -851,7 +851,7 @@ ATTACHMENTS
user.client.pixel_y = 0
UnregisterSignal(user, COMSIG_ATOM_DIR_CHANGE)
user.visible_message(span_notice("[user] looks up from the scope of [src]."), span_notice("You look up from the scope of [src]."))
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_walk) //Extra proc to make sure your zoom resets for bug where you don't unzoom when toggling while moving
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(on_walk)) //Extra proc to make sure your zoom resets for bug where you don't unzoom when toggling while moving
/obj/item/gun/proc/on_walk(mob/living/user)
UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 13a999d57be..ad3926f0bc9 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -146,7 +146,7 @@ GLOBAL_LIST_EMPTY(gun_accepted_magazines)
playsound(src, "gun_insert_full_magazine", 70, 1)
if(!chambered)
chamber_round()
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/weapons/gun_chamber_round.ogg', 100, 1), 3)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(playsound), src, 'sound/weapons/gun_chamber_round.ogg', 100, 1), 3)
else
playsound(src, "gun_insert_empty_magazine", 70, 1)
new_mag.update_icon()
diff --git a/code/modules/projectiles/guns/ballistic/flintlock.dm b/code/modules/projectiles/guns/ballistic/flintlock.dm
index eaffb266f32..09f26757864 100644
--- a/code/modules/projectiles/guns/ballistic/flintlock.dm
+++ b/code/modules/projectiles/guns/ballistic/flintlock.dm
@@ -176,7 +176,7 @@
firing = TRUE
var/shoot_delay = round(max(gaussian(prefire_time, prefire_time * prefire_randomness), prefire_time * 0.75), 0.1)
fuse_loop.start()
- addtimer(CALLBACK(src, .proc/fire_at_cursor, user), shoot_delay)
+ addtimer(CALLBACK(src,PROC_REF(fire_at_cursor), user), shoot_delay)
update_icon()
return TRUE
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 6e3256a9dd7..fca0992be9f 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -139,7 +139,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/gun/energy/kinetic_accelerator/proc/empty_if_not_held()
if(!ismob(loc) && !istype(loc, /obj/item/integrated_circuit))
@@ -170,7 +170,7 @@
carried = 1
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/gun/energy/kinetic_accelerator/emp_act(severity)
return
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index 96a5440f13a..2be8681f718 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -71,7 +71,7 @@
return FALSE // Already full
soundloop.start()
charge_start_message()
- charge_timer = addtimer(CALLBACK(src, .proc/charge), recharge_rate, TIMER_UNIQUE|TIMER_STOPPABLE)
+ charge_timer = addtimer(CALLBACK(src,PROC_REF(charge)), recharge_rate, TIMER_UNIQUE|TIMER_STOPPABLE)
/obj/item/gun/magic/proc/charge()
recharge_newshot()
@@ -83,7 +83,7 @@
return FALSE
charges++
charge_partial_message()
- charge_timer = addtimer(CALLBACK(src, .proc/charge), recharge_rate, TIMER_UNIQUE|TIMER_STOPPABLE)
+ charge_timer = addtimer(CALLBACK(src,PROC_REF(charge)), recharge_rate, TIMER_UNIQUE|TIMER_STOPPABLE)
/obj/item/gun/magic/proc/charge_full_message()
audible_message("[src] lets out a satisfied hum and falls quiet.")
diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm
index 9df197059ad..95296a0a08f 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -262,7 +262,7 @@
current_user = null
if(istype(user))
current_user = user
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED,PROC_REF(on_mob_move))
/obj/item/gun/energy/beam_rifle/onMouseDrag(src_object, over_object, src_location, over_location, params, mob)
if(aiming)
diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm
index 1771b71998c..4e4cdc643b7 100644
--- a/code/modules/projectiles/guns/misc/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm
@@ -44,4 +44,4 @@
F.active = 1
F.icon_state = initial(F.icon_state) + "_active"
playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
- addtimer(CALLBACK(F, /obj/item/grenade.proc/prime), 15)
+ addtimer(CALLBACK(F, TYPE_PROC_REF(/obj/item/grenade,prime)), 15)
diff --git a/code/modules/projectiles/guns/misc/medbeam.dm b/code/modules/projectiles/guns/misc/medbeam.dm
index 8457385a10e..dae511dac87 100644
--- a/code/modules/projectiles/guns/misc/medbeam.dm
+++ b/code/modules/projectiles/guns/misc/medbeam.dm
@@ -52,7 +52,7 @@
current_target = target
active = TRUE
current_beam = new(user,current_target,time=6000,beam_icon_state="medbeam",btype=/obj/effect/ebeam/medical)
- INVOKE_ASYNC(current_beam, /datum/beam.proc/Start)
+ INVOKE_ASYNC(current_beam, TYPE_PROC_REF(/datum/beam,Start))
SSblackbox.record_feedback("tally", "gun_fired", 1, type)
diff --git a/code/modules/projectiles/multichance_projectile_hit_behaviour.dm b/code/modules/projectiles/multichance_projectile_hit_behaviour.dm
index 9b532899ca4..59c96a4c55d 100644
--- a/code/modules/projectiles/multichance_projectile_hit_behaviour.dm
+++ b/code/modules/projectiles/multichance_projectile_hit_behaviour.dm
@@ -63,7 +63,7 @@
if(prob(PROB_ARMS_HIT+firer_crit_shot_add))
if(!T.mcphb_arms_hit)
to_chat(firer, span_green("The [P] hits [T] on their arm, making it jitter and forcing it to move inconsistently!"))
- INVOKE_ASYNC(T, /mob.proc/emote, "me", EMOTE_VISIBLE, "'s arms jitter in pain!")
+ INVOKE_ASYNC(T, TYPE_PROC_REF(/mob,emote), "me", EMOTE_VISIBLE, "'s arms jitter in pain!")
T.mcphb_arms_hit = TRUE //arms got hit, so for a while don't do damage
T.melee_damage_lower *= TRGT_DEBUFF_MULT_DAM_ARMS_HIT
T.melee_damage_upper *= TRGT_DEBUFF_MULT_DAM_ARMS_HIT
@@ -104,7 +104,7 @@
if(prob(PROB_LEGS_HIT+firer_crit_shot_add))
if(!T.mcphb_legs_hit)
to_chat(firer, span_green("The [P] hits [T] on their legs, forcing them to trudge along!"))
- INVOKE_ASYNC(T, /mob.proc/emote, "me", EMOTE_VISIBLE, "'s legs jitter in pain!")
+ INVOKE_ASYNC(T, TYPE_PROC_REF(/mob,emote), "me", EMOTE_VISIBLE, "'s legs jitter in pain!")
T.mcphb_legs_hit = TRUE
T.move_to_delay *= SPEED_MULT_LEGS_HIT
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 54ca843301c..22f228adbed 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -771,7 +771,7 @@
fired = TRUE
randomize_damage()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
if(hitscan)
diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm
index db9239ee03b..3c6bb7c9dd4 100644
--- a/code/modules/projectiles/projectile/energy/net_snare.dm
+++ b/code/modules/projectiles/projectile/energy/net_snare.dm
@@ -37,7 +37,7 @@
if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged)
teletarget = com.target
- addtimer(CALLBACK(src, .proc/pop, teletarget), 30)
+ addtimer(CALLBACK(src,PROC_REF(pop), teletarget), 30)
/obj/effect/nettingportal/proc/pop(teletarget)
if(teletarget)
diff --git a/code/modules/projectiles/projectile/energy/stun.dm b/code/modules/projectiles/projectile/energy/stun.dm
index 7143de07b23..efbc439350f 100644
--- a/code/modules/projectiles/projectile/energy/stun.dm
+++ b/code/modules/projectiles/projectile/energy/stun.dm
@@ -32,7 +32,7 @@
C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
else if(tase_duration && (C.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(C, TRAIT_STUNIMMUNE) && !HAS_TRAIT(C, TRAIT_TASED_RESISTANCE))
C.apply_status_effect(strong_tase? STATUS_EFFECT_TASED : STATUS_EFFECT_TASED_WEAK, tase_duration)
- addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5)
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon,do_jitter_animation), jitter), 5)
/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
do_sparks(1, TRUE, src)
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 79728d54bb0..dac29c5011d 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -381,8 +381,8 @@
/obj/structure/closet/decay/Initialize()
. = ..()
if(auto_destroy)
- addtimer(CALLBACK(src, .proc/bust_open), 5 MINUTES)
- addtimer(CALLBACK(src, .proc/magicly_lock), 5)
+ addtimer(CALLBACK(src,PROC_REF(bust_open)), 5 MINUTES)
+ addtimer(CALLBACK(src,PROC_REF(magicly_lock)), 5)
/obj/structure/closet/decay/proc/magicly_lock()
if(!welded)
@@ -396,7 +396,7 @@
/obj/structure/closet/decay/proc/decay()
animate(src, alpha = 0, time = 30)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, src), 30)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(qdel), src), 30)
/obj/structure/closet/decay/open(mob/living/user)
. = ..()
@@ -404,12 +404,12 @@
if(icon_state == magic_icon) //check if we used the magic icon at all before giving it the lesser magic icon
unmagify()
else
- addtimer(CALLBACK(src, .proc/decay), 15 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(decay)), 15 SECONDS)
/obj/structure/closet/decay/proc/unmagify()
icon_state = weakened_icon
update_icon()
- addtimer(CALLBACK(src, .proc/decay), 15 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(decay)), 15 SECONDS)
icon_welded = "welded"
/obj/item/projectile/magic/aoe
@@ -505,7 +505,7 @@
return BULLET_ACT_BLOCK
var/turf/T = get_turf(target)
for(var/i=0, i<50, i+=10)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(explosion), T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i)
/obj/item/projectile/magic/aoe/fireball/lowpower
name = "bolt of fireball"
diff --git a/code/modules/projectiles/projectile/special/hallucination.dm b/code/modules/projectiles/projectile/special/hallucination.dm
index 3c51b5ac13f..c7d9d695cb2 100644
--- a/code/modules/projectiles/projectile/special/hallucination.dm
+++ b/code/modules/projectiles/projectile/special/hallucination.dm
@@ -100,7 +100,7 @@
layer = ABOVE_MOB_LAYER
hal_target.client.images += blood
animate(blood, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = 5)
- addtimer(CALLBACK(src, .proc/cleanup_blood), 5)
+ addtimer(CALLBACK(src,PROC_REF(cleanup_blood)), 5)
/obj/item/projectile/hallucination/proc/cleanup_blood(image/blood)
hal_target.client.images -= blood
@@ -171,7 +171,7 @@
if(hal_target.dna && hal_target.dna.check_mutation(HULK))
hal_target.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
else if((hal_target.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(hal_target, TRAIT_STUNIMMUNE))
- addtimer(CALLBACK(hal_target, /mob/living/carbon.proc/do_jitter_animation, 20), 5)
+ addtimer(CALLBACK(hal_target, TYPE_PROC_REF(/mob/living/carbon,do_jitter_animation), 20), 5)
/obj/item/projectile/hallucination/disabler
name = "disabler beam"
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index c9bf08a7012..1b10ca47cc5 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -479,7 +479,7 @@
if(total_matching_reagents == total_required_reagents && total_matching_catalysts == total_required_catalysts && matching_container && matching_other && meets_temp_requirement && can_special_react)
possible_reactions += C
- sortTim(possible_reactions, /proc/cmp_chemical_reactions_default, FALSE)
+ sortTim(possible_reactions, GLOBAL_PROC_REF(cmp_chemical_reactions_default), FALSE)
if(possible_reactions.len)
var/datum/chemical_reaction/selected_reaction = possible_reactions[1]
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index df4e6bb5492..2c988e3dace 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -95,16 +95,16 @@
/obj/machinery/chem_dispenser/Initialize()
. = ..()
- dispensable_reagents = sortList(dispensable_reagents, /proc/cmp_reagents_asc)
+ dispensable_reagents = sortList(dispensable_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
if(emagged_reagents)
- emagged_reagents = sortList(emagged_reagents, /proc/cmp_reagents_asc)
+ emagged_reagents = sortList(emagged_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
if(upgrade_reagents)
- upgrade_reagents = sortList(upgrade_reagents, /proc/cmp_reagents_asc)
+ upgrade_reagents = sortList(upgrade_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
if(upgrade_reagents2)
- upgrade_reagents2 = sortList(upgrade_reagents2, /proc/cmp_reagents_asc)
+ upgrade_reagents2 = sortList(upgrade_reagents2, GLOBAL_PROC_REF(cmp_reagents_asc))
if(upgrade_reagents3)
- upgrade_reagents3 = sortList(upgrade_reagents3, /proc/cmp_reagents_asc)
- dispensable_reagents = sortList(dispensable_reagents, /proc/cmp_reagents_asc)
+ upgrade_reagents3 = sortList(upgrade_reagents3, GLOBAL_PROC_REF(cmp_reagents_asc))
+ dispensable_reagents = sortList(dispensable_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
update_icon()
/obj/machinery/chem_dispenser/Destroy()
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index 848bd1eaea9..6e8a75dea1a 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -217,7 +217,7 @@
update_icon()
var/turf/source_turf = get_turf(src)
log_virus("A culture bottle was printed for the virus [A.admin_details()] at [loc_name(source_turf)] by [key_name(usr)]")
- addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 50)
+ addtimer(CALLBACK(src,PROC_REF(reset_replicator_cooldown)), 50)
. = TRUE
if("create_vaccine_bottle")
if (wait)
@@ -229,7 +229,7 @@
B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id))
wait = TRUE
update_icon()
- addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200)
+ addtimer(CALLBACK(src,PROC_REF(reset_replicator_cooldown)), 200)
. = TRUE
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index 792d71eee98..769f4faf6f9 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -234,7 +234,7 @@
var/offset = prob(50) ? -2 : 2
var/old_pixel_x = pixel_x
animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = -1) //start shaking
- addtimer(CALLBACK(src, .proc/stop_shaking, old_pixel_x), duration)
+ addtimer(CALLBACK(src,PROC_REF(stop_shaking), old_pixel_x), duration)
/obj/machinery/reagentgrinder/proc/stop_shaking(old_px)
animate(src)
@@ -248,7 +248,7 @@
playsound(src, 'sound/machines/blender.ogg', 50, 1)
else
playsound(src, 'sound/machines/juicer.ogg', 20, 1)
- addtimer(CALLBACK(src, .proc/stop_operating), time / speed)
+ addtimer(CALLBACK(src,PROC_REF(stop_operating)), time / speed)
/obj/machinery/reagentgrinder/proc/stop_operating()
operating = FALSE
diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
index 0caefc18a2f..bc0e59b06f8 100644
--- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm
+++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
@@ -38,7 +38,7 @@
/obj/machinery/smoke_machine/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated))
+ AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src,PROC_REF(can_be_rotated)))
/obj/machinery/smoke_machine/proc/can_be_rotated(mob/user, rotation_type)
return !anchored
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 567c07eff5d..0437377b6b5 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -2666,15 +2666,14 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_name = "glass of [name]"
glass_desc = description
for(var/taste in tastes)
- switch(tastes[taste])
- if(minimum_percent*2 to INFINITY)
- primary_tastes += taste
- if(minimum_percent to minimum_percent*2)
- secondary_tastes += taste
+ if(tastes[taste] > minimum_percent*2)
+ primary_tastes += taste
+ else if(tastes[taste] > minimum_percent)
+ secondary_tastes += taste
var/minimum_name_percent = 0.35
name = ""
- var/list/names_in_order = sortTim(names, /proc/cmp_numeric_dsc, TRUE)
+ var/list/names_in_order = sortTim(names, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE)
var/named = FALSE
for(var/fruit_name in names)
if(names[fruit_name] >= minimum_name_percent)
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 45a1fc86176..c60a64b6b6b 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -1025,8 +1025,8 @@
M.visible_message(span_warning("[M]'s body starts convulsing!"))
M.notify_ghost_cloning(source = M)
M.do_jitter_animation(10)
- addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 40) //jitter immediately, then again after 4 and 8 seconds
- addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 80)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living/carbon,do_jitter_animation), 10), 40) //jitter immediately, then again after 4 and 8 seconds
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living/carbon,do_jitter_animation), 10), 80)
spawn(100) //so the ghost has time to re-enter
if(iscarbon(M))
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 83bb4db339d..483a1caafd4 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -2641,7 +2641,7 @@
/datum/reagent/gravitum/reaction_obj(obj/O, volume)
O.AddElement(/datum/element/forced_gravity, 0)
- addtimer(CALLBACK(O, .proc/_RemoveElement, /datum/element/forced_gravity, 0), volume * time_multiplier)
+ addtimer(CALLBACK(O,PROC_REF(_RemoveElement), /datum/element/forced_gravity, 0), volume * time_multiplier)
/datum/reagent/gravitum/on_mob_add(mob/living/L)
L.AddElement(/datum/element/forced_gravity, 0) //0 is the gravity, and in this case weightless
diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm
index 2dc5a8e845d..cbf3d3600b0 100644
--- a/code/modules/reagents/chemistry/recipes/medicine.dm
+++ b/code/modules/reagents/chemistry/recipes/medicine.dm
@@ -6,7 +6,7 @@
required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/copper = 1)
required_catalysts = list(/datum/reagent/toxin/plasma = 5)
-datum/chemical_reaction/rezadone
+/datum/chemical_reaction/rezadone
name = "Rezadone"
id = /datum/reagent/medicine/rezadone
results = list(/datum/reagent/medicine/rezadone = 3)
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index 8e03d68525e..47631b94ac4 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -415,13 +415,13 @@
var/T3 = created_volume * 120
var/added_delay = 0.5 SECONDS
if(created_volume >= 75)
- addtimer(CALLBACK(src, .proc/zappy_zappy, holder, T1), added_delay)
+ addtimer(CALLBACK(src,PROC_REF(zappy_zappy), holder, T1), added_delay)
added_delay += 1.5 SECONDS
if(created_volume >= 40)
- addtimer(CALLBACK(src, .proc/zappy_zappy, holder, T2), added_delay)
+ addtimer(CALLBACK(src,PROC_REF(zappy_zappy), holder, T2), added_delay)
added_delay += 1.5 SECONDS
if(created_volume >= 10) //10 units minimum for lightning, 40 units for secondary blast, 75 units for tertiary blast.
- addtimer(CALLBACK(src, .proc/zappy_zappy, holder, T3), added_delay)
+ addtimer(CALLBACK(src,PROC_REF(zappy_zappy), holder, T3), added_delay)
..()
/datum/chemical_reaction/reagent_explosion/teslium_lightning/proc/zappy_zappy(datum/reagents/holder, power)
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index a4674029c5d..2ecc2eea4f5 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -125,11 +125,11 @@
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
+ M.qdel_timer = addtimer(CALLBACK(src,PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message(span_danger("The slime extract begins to vibrate violently!"))
- //addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime", HOSTILE_SPAWN), 50)
+ //addtimer(CALLBACK(src,PROC_REF(chemical_mob_spawn), holder, 5, "Gold Slime", HOSTILE_SPAWN), 50)
/datum/chemical_reaction/slime/slimemobspawn/lesser
name = "Slime Crit Lesser"
@@ -138,7 +138,7 @@
/datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message(span_danger("The slime extract begins to vibrate violently!"))
- //addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50)
+ //addtimer(CALLBACK(src,PROC_REF(chemical_mob_spawn), holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50)
/datum/chemical_reaction/slime/slimemobspawn/friendly
name = "Slime Crit Friendly"
@@ -147,7 +147,7 @@
/datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message(span_danger("The slime extract begins to vibrate adorably!"))
- //addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50)
+ //addtimer(CALLBACK(src,PROC_REF(chemical_mob_spawn), holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50)
//Silver
/datum/chemical_reaction/slime/slimebork
@@ -227,11 +227,11 @@
/datum/chemical_reaction/slime/slimefreeze/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message(span_danger("The slime extract starts to feel extremely cold!"))
- addtimer(CALLBACK(src, .proc/freeze, holder), 50)
+ addtimer(CALLBACK(src,PROC_REF(freeze), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
+ M.qdel_timer = addtimer(CALLBACK(src,PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimefreeze/proc/freeze(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -270,11 +270,11 @@
/datum/chemical_reaction/slime/slimefire/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message(span_danger("The slime extract begins to vibrate adorably!"))
- addtimer(CALLBACK(src, .proc/slime_burn, holder), 50)
+ addtimer(CALLBACK(src,PROC_REF(slime_burn), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
+ M.qdel_timer = addtimer(CALLBACK(src,PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimefire/proc/slime_burn(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -455,11 +455,11 @@
message_admins("Slime Explosion reaction started at [ADMIN_VERBOSEJMP(T)]. Last Fingerprint: [touch_msg]")
log_game("Slime Explosion reaction started at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].")
T.visible_message(span_danger("The slime extract begins to vibrate violently !"))
- addtimer(CALLBACK(src, .proc/boom, holder), 50)
+ addtimer(CALLBACK(src,PROC_REF(boom), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
+ M.qdel_timer = addtimer(CALLBACK(src,PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimeexplosion/proc/boom(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -580,7 +580,7 @@
required_other = TRUE
/datum/chemical_reaction/slime/slimestop/on_reaction(datum/reagents/holder, created_volume)
- addtimer(CALLBACK(src, .proc/slime_stop, holder), 5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(slime_stop), holder), 5 SECONDS)
/datum/chemical_reaction/slime/slimestop/proc/slime_stop(datum/reagents/holder)
var/obj/item/slime_extract/sepia/extract = holder.my_atom
@@ -655,7 +655,7 @@
S.visible_message(span_danger("Infused with plasma, the core begins to expand uncontrollably!"))
S.icon_state = "[S.base_state]_active"
S.active = TRUE
- addtimer(CALLBACK(S, /obj/item/grenade.proc/prime), rand(15,60))
+ addtimer(CALLBACK(S, TYPE_PROC_REF(/obj/item/grenade,prime)), rand(15,60))
qdel(holder.my_atom) //deleto
..()
@@ -671,7 +671,7 @@
S.visible_message(span_danger("Infused with slime jelly, the core begins to expand uncontrollably!"))
S.icon_state = "[S.base_state]_active"
S.active = TRUE
- addtimer(CALLBACK(S, /obj/item/grenade.proc/prime), rand(15,60))
+ addtimer(CALLBACK(S, TYPE_PROC_REF(/obj/item/grenade,prime)), rand(15,60))
qdel(holder.my_atom) //deleto
..()
diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm
index cd901b6e1ad..bf6aacd029a 100644
--- a/code/modules/reagents/chemistry/recipes/special.dm
+++ b/code/modules/reagents/chemistry/recipes/special.dm
@@ -180,7 +180,7 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
if(SSpersistence.initialized)
UpdateInfo()
else
- SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateInfo))
+ SSticker.OnRoundstart(CALLBACK(src,PROC_REF(UpdateInfo)))
/obj/item/paper/secretrecipe/proc/UpdateInfo()
var/datum/chemical_reaction/recipe = get_chemical_reaction(recipe_id)
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 58505071a6c..714a7c2bada 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -139,7 +139,7 @@
else if(bartender_check(target) && thrown)
visible_message(span_notice("[src] lands without spilling a single drop."))
transform = initial(transform)
- addtimer(CALLBACK(src, .proc/ForceResetRotation), 1)
+ addtimer(CALLBACK(src,PROC_REF(ForceResetRotation)), 1)
else
if(isturf(target) && reagents.reagent_list.len && thrownby)
diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm
index df1d3d6f3d7..9ce502cc19c 100644
--- a/code/modules/reagents/reagent_containers/chem_pack.dm
+++ b/code/modules/reagents/reagent_containers/chem_pack.dm
@@ -44,7 +44,7 @@
. += span_notice("Alt-click to seal it.")
-obj/item/reagent_containers/chem_pack/attack_self(mob/user)
+/obj/item/reagent_containers/chem_pack/attack_self(mob/user)
if(sealed)
return
..()
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 630061778f4..69621e7fb21 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -11,7 +11,7 @@
/obj/item/reagent_containers/glass/attack(mob/M, mob/user, obj/target)
// WARNING: This entire section is shitcode and prone to breaking at any time.
- INVOKE_ASYNC(src, .proc/attempt_feed, M, user, target) // for example, the arguments in this proc are wrong
+ INVOKE_ASYNC(src,PROC_REF(attempt_feed), M, user, target) // for example, the arguments in this proc are wrong
// but i don't have time to properly fix it right now.
/obj/item/reagent_containers/glass/proc/attempt_feed(mob/M, mob/user, obj/target)
@@ -61,7 +61,7 @@
log_reagent("INGESTION: SELF: [key_name(user)] (loc [user.loc] at [AREACOORD(T)]) - [reagents.log_list()]")
var/fraction = min(5/reagents.total_volume, 1)
reagents.reaction(M, INGEST, fraction)
- addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5, null, null, null, self_fed? "self swallowed" : "fed by [user]"), 5)
+ addtimer(CALLBACK(reagents, TYPE_PROC_REF(/datum/reagents,trans_to), M, 5, null, null, null, self_fed? "self swallowed" : "fed by [user]"), 5)
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 422a613a796..d03a6daa258 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -131,7 +131,7 @@
qdel(src)
return
update_icon()
- addtimer(CALLBACK(src, .proc/cyborg_recharge, user), 80)
+ addtimer(CALLBACK(src,PROC_REF(cyborg_recharge), user), 80)
/obj/item/reagent_containers/hypospray/medipen/proc/cyborg_recharge(mob/living/silicon/robot/user)
if(!reagents.total_volume && iscyborg(user))
@@ -508,7 +508,7 @@
/obj/item/hypospray/mkii/afterattack(atom/target, mob/user, proximity)
. = ..()
- INVOKE_ASYNC(src, .proc/attempt_inject, target, user, proximity)
+ INVOKE_ASYNC(src,PROC_REF(attempt_inject), target, user, proximity)
/obj/item/hypospray/mkii/proc/attempt_inject(atom/target, mob/user, proximity)
if(!vial || !proximity || !isliving(target))
diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm
index f50a060c7af..ac5c6ac5ad2 100644
--- a/code/modules/reagents/reagent_containers/medspray.dm
+++ b/code/modules/reagents/reagent_containers/medspray.dm
@@ -32,7 +32,7 @@
to_chat(user, span_notice("You will now apply the medspray's contents in [squirt_mode ? "short bursts":"extended sprays"]. You'll now use [amount_per_transfer_from_this] units per use."))
/obj/item/reagent_containers/medspray/attack(mob/living/L, mob/user, def_zone)
- INVOKE_ASYNC(src, .proc/attempt_spray, L, user, def_zone) // this is shitcode because the params for attack aren't even right but i'm not in the mood to refactor right now.
+ INVOKE_ASYNC(src,PROC_REF(attempt_spray), L, user, def_zone) // this is shitcode because the params for attack aren't even right but i'm not in the mood to refactor right now.
/obj/item/reagent_containers/medspray/proc/attempt_spray(mob/living/L, mob/user, def_zone)
if(!reagents || !reagents.total_volume)
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 0d38fd31f79..7235430ea04 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -29,7 +29,7 @@
return DEFAULT_VOLUME_TINY/2 + reagents.total_volume / reagents.maximum_volume * DEFAULT_VOLUME_TINY
/obj/item/reagent_containers/pill/attack(mob/living/M, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1)
- INVOKE_ASYNC(src, .proc/attempt_feed, M, user)
+ INVOKE_ASYNC(src,PROC_REF(attempt_feed), M, user)
/obj/item/reagent_containers/pill/proc/attempt_feed(mob/living/M, mob/living/user)
if(!canconsume(M, user))
@@ -51,7 +51,7 @@
var/makes_me_think = pick(strings("redpill.json", "redpill_questions"))
if(icon_state == "pill4" && prob(5)) //you take the red pill - you stay in Wonderland, and I show you how deep the rabbit hole goes
- addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, M, span_notice("[makes_me_think]")), 50)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), M, span_notice("[makes_me_think]")), 50)
log_combat(user, M, "fed", reagents.log_list())
if(reagents.total_volume)
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index fe62a98112c..f4305942c69 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -90,7 +90,7 @@
log_reagent("SPRAY: [key_name(usr)] fired [src] ([REF(src)]) [COORD(T)] at [A] ([REF(A)]) [COORD(A)] (chempuff: [D.reagents.log_list()])")
var/wait_step = max(round(2+ spray_delay * INVERSE(range)), 2)
last_spray = world.time
- INVOKE_ASYNC(src, .proc/do_spray, A, wait_step, D, range, puff_reagent_left)
+ INVOKE_ASYNC(src,PROC_REF(do_spray), A, wait_step, D, range, puff_reagent_left)
return TRUE
/obj/item/reagent_containers/spray/proc/do_spray(atom/A, wait_step, obj/effect/decal/chempuff/D, range, puff_reagent_left)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 91a6cd4e8ac..e8d629006fc 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -58,7 +58,7 @@
/obj/item/reagent_containers/syringe/afterattack(atom/target, mob/user, proximity)
. = ..()
- INVOKE_ASYNC(src, .proc/attempt_inject, target, user, proximity)
+ INVOKE_ASYNC(src,PROC_REF(attempt_inject), target, user, proximity)
/obj/item/reagent_containers/syringe/proc/attempt_inject(atom/target, mob/user, proximity)
if(busy)
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index ab1934f291b..aef95724790 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -132,7 +132,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
return
use_power(6)
affecting = loc.contents - src // moved items will be all in loc
- addtimer(CALLBACK(src, .proc/convey, affecting), 1)
+ addtimer(CALLBACK(src,PROC_REF(convey), affecting), 1)
/obj/machinery/conveyor/proc/convey(list/affecting)
var/turf/T = get_step(src, movedir)
diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm
index aa618f2699c..7e57491d771 100644
--- a/code/modules/recycling/disposal/construction.dm
+++ b/code/modules/recycling/disposal/construction.dm
@@ -30,7 +30,7 @@
if(flip)
var/datum/component/simple_rotation/rotcomp = GetComponent(/datum/component/simple_rotation)
- INVOKE_ASYNC(CALLBACK(rotcomp, /datum/component/simple_rotation.proc/BaseRot, ROTATION_FLIP))
+ INVOKE_ASYNC(CALLBACK(rotcomp, TYPE_PROC_REF(/datum/component/simple_rotation,BaseRot), ROTATION_FLIP))
update_icon()
@@ -89,7 +89,7 @@
/obj/structure/disposalconstruct/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated), CALLBACK(src, .proc/after_rot))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS ,null,CALLBACK(src,PROC_REF(can_be_rotated)), CALLBACK(src,PROC_REF(after_rot)))
/obj/structure/disposalconstruct/proc/after_rot(mob/user,rotation_type)
if(rotation_type == ROTATION_FLIP)
diff --git a/code/modules/recycling/disposal/holder.dm b/code/modules/recycling/disposal/holder.dm
index 37b052399d4..146d91e07e8 100644
--- a/code/modules/recycling/disposal/holder.dm
+++ b/code/modules/recycling/disposal/holder.dm
@@ -70,9 +70,9 @@
var/delay = world.tick_lag
var/datum/move_loop/our_loop = SSmove_manager.move_disposals(src, delay = delay, timeout = delay * count)
if(our_loop)
- RegisterSignal(our_loop, COMSIG_MOVELOOP_PREPROCESS_CHECK, .proc/pre_move)
- RegisterSignal(our_loop, COMSIG_MOVELOOP_POSTPROCESS, .proc/try_expel)
- RegisterSignal(our_loop, COMSIG_PARENT_QDELETING, .proc/movement_stop)
+ RegisterSignal(our_loop, COMSIG_MOVELOOP_PREPROCESS_CHECK,PROC_REF(pre_move))
+ RegisterSignal(our_loop, COMSIG_MOVELOOP_POSTPROCESS,PROC_REF(try_expel))
+ RegisterSignal(our_loop, COMSIG_PARENT_QDELETING,PROC_REF(movement_stop))
current_pipe = loc
/obj/structure/disposalholder/proc/pre_move(datum/move_loop/source)
diff --git a/code/modules/recycling/disposal/outlet.dm b/code/modules/recycling/disposal/outlet.dm
index 8994983effc..9d0f36f932f 100644
--- a/code/modules/recycling/disposal/outlet.dm
+++ b/code/modules/recycling/disposal/outlet.dm
@@ -44,9 +44,9 @@
if((start_eject + 30) < world.time)
start_eject = world.time
playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 0, 0)
- addtimer(CALLBACK(src, .proc/expel_holder, H, TRUE), 20)
+ addtimer(CALLBACK(src,PROC_REF(expel_holder), H, TRUE), 20)
else
- addtimer(CALLBACK(src, .proc/expel_holder, H), 20)
+ addtimer(CALLBACK(src,PROC_REF(expel_holder), H), 20)
/obj/structure/disposaloutlet/proc/expel_holder(obj/structure/disposalholder/H, playsound=FALSE)
if(playsound)
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 642c8708de3..619e5620a03 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -43,7 +43,7 @@ Note: Must be placed within 3 tiles of the R&D Console
loaded_item = O
to_chat(user, span_notice("You add the [O.name] to the [src.name]!"))
flick("d_analyzer_la", src)
- addtimer(CALLBACK(src, .proc/finish_loading), 10)
+ addtimer(CALLBACK(src,PROC_REF(finish_loading)), 10)
if (linked_console)
linked_console.updateUsrDialog()
@@ -74,7 +74,7 @@ Note: Must be placed within 3 tiles of the R&D Console
if(!innermode)
flick("d_analyzer_process", src)
busy = TRUE
- addtimer(CALLBACK(src, .proc/reset_busy), 24)
+ addtimer(CALLBACK(src,PROC_REF(reset_busy)), 24)
use_power(250)
if(thing == loaded_item)
loaded_item = null
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 6081e51697f..ed0d6a180f9 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -494,7 +494,7 @@
use_power(500000)
investigate_log("Experimentor has drained power from its APC", INVESTIGATE_EXPERIMENTOR)
- addtimer(CALLBACK(src, .proc/reset_exp), resetTime)
+ addtimer(CALLBACK(src,PROC_REF(reset_exp)), resetTime)
/obj/machinery/rnd/experimentor/proc/reset_exp()
update_icon()
@@ -560,7 +560,7 @@
cooldown = TRUE
call(src,realProc)(user)
if(!QDELETED(src))
- addtimer(CALLBACK(src, .proc/cd), cooldownMax)
+ addtimer(CALLBACK(src,PROC_REF(cd)), cooldownMax)
else
to_chat(user, span_notice("You aren't quite sure what to do with this yet."))
@@ -577,7 +577,7 @@
/obj/item/relic/proc/corgicannon(mob/user)
playsound(src, "sparks", rand(25,50), 1)
var/mob/living/simple_animal/pet/dog/corgi/C = new/mob/living/simple_animal/pet/dog/corgi(get_turf(user))
- C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, .proc/throwSmoke, C))
+ C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src,PROC_REF(throwSmoke), C))
warn_admins(user, "Corgi Cannon", 0)
/obj/item/relic/proc/clean(mob/user)
@@ -627,7 +627,7 @@
/obj/item/relic/proc/explode(mob/user)
to_chat(user, span_danger("[src] begins to heat up!"))
- addtimer(CALLBACK(src, .proc/do_explode, user), rand(35, 100))
+ addtimer(CALLBACK(src,PROC_REF(do_explode), user), rand(35, 100))
/obj/item/relic/proc/do_explode(mob/user)
if(loc == user)
@@ -638,7 +638,7 @@
/obj/item/relic/proc/teleport(mob/user)
to_chat(user, span_notice("[src] begins to vibrate!"))
- addtimer(CALLBACK(src, .proc/do_the_teleport, user), rand(10, 30))
+ addtimer(CALLBACK(src,PROC_REF(do_the_teleport), user), rand(10, 30))
/obj/item/relic/proc/do_the_teleport(mob/user)
var/turf/userturf = get_turf(user)
diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm
index c7202a12ca1..9060dfc5a96 100644
--- a/code/modules/research/machinery/_production.dm
+++ b/code/modules/research/machinery/_production.dm
@@ -26,8 +26,8 @@
cached_designs = list()
stored_research = new
host_research = SSresearch.science_tech
- INVOKE_ASYNC(src, .proc/update_research)
- materials = AddComponent(/datum/component/remote_materials, "lathe", mapload, _after_insert=CALLBACK(src, .proc/AfterMaterialInsert))
+ INVOKE_ASYNC(src,PROC_REF(update_research))
+ materials = AddComponent(/datum/component/remote_materials, "lathe", mapload, _after_insert=CALLBACK(src,PROC_REF(AfterMaterialInsert)))
RefreshParts()
/obj/machinery/rnd/production/Destroy()
@@ -171,8 +171,8 @@
if(production_animation)
flick(production_animation, src)
var/timecoeff = D.lathe_time_factor * print_cost_coeff
- addtimer(CALLBACK(src, .proc/reset_busy), (20 * timecoeff * amount) ** 0.5)
- addtimer(CALLBACK(src, .proc/do_print, D.build_path, amount, efficient_mats, D.dangerous_construction, usr), (20 * timecoeff * amount) ** 0.5)
+ addtimer(CALLBACK(src,PROC_REF(reset_busy)), (20 * timecoeff * amount) ** 0.5)
+ addtimer(CALLBACK(src,PROC_REF(do_print), D.build_path, amount, efficient_mats, D.dangerous_construction, usr), (20 * timecoeff * amount) ** 0.5)
return TRUE
/obj/machinery/rnd/production/proc/search(string)
diff --git a/code/modules/research/nanites/nanite_chamber.dm b/code/modules/research/nanites/nanite_chamber.dm
index 19a73d42fbd..1dedf5b09a3 100644
--- a/code/modules/research/nanites/nanite_chamber.dm
+++ b/code/modules/research/nanites/nanite_chamber.dm
@@ -63,11 +63,11 @@
//TODO OMINOUS MACHINE SOUNDS
set_busy(TRUE, "Initializing injection protocol...", "[initial(icon_state)]_raising")
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Priming nanites...", "[initial(icon_state)]_active"),40)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Injecting...", "[initial(icon_state)]_active"),70)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Activating nanites...", "[initial(icon_state)]_falling"),110)
- addtimer(CALLBACK(src, .proc/complete_injection, locked_state),130)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "Priming nanites...", "[initial(icon_state)]_active"),40)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "Injecting...", "[initial(icon_state)]_active"),70)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "Activating nanites...", "[initial(icon_state)]_falling"),110)
+ addtimer(CALLBACK(src,PROC_REF(complete_injection), locked_state),130)
/obj/machinery/nanite_chamber/proc/complete_injection(locked_state)
//TODO MACHINE DING
@@ -90,11 +90,11 @@
//TODO OMINOUS MACHINE SOUNDS
set_busy(TRUE, "Initializing cleanup protocol...", "[initial(icon_state)]_raising")
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Pinging nanites...", "[initial(icon_state)]_active"),40)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Initiating graceful self-destruct sequence...", "[initial(icon_state)]_active"),70)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Removing debris...", "[initial(icon_state)]_falling"),110)
- addtimer(CALLBACK(src, .proc/complete_removal, locked_state),130)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "Pinging nanites...", "[initial(icon_state)]_active"),40)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "Initiating graceful self-destruct sequence...", "[initial(icon_state)]_active"),70)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "Removing debris...", "[initial(icon_state)]_falling"),110)
+ addtimer(CALLBACK(src,PROC_REF(complete_removal), locked_state),130)
/obj/machinery/nanite_chamber/proc/complete_removal(locked_state)
//TODO MACHINE DING
diff --git a/code/modules/research/nanites/nanite_chamber_computer.dm b/code/modules/research/nanites/nanite_chamber_computer.dm
index d0f7fff97f9..3be6621f8ad 100644
--- a/code/modules/research/nanites/nanite_chamber_computer.dm
+++ b/code/modules/research/nanites/nanite_chamber_computer.dm
@@ -100,7 +100,7 @@
UnregisterSignal(chamber, COMSIG_PARENT_QDELETING)
chamber = new_chamber
if(chamber)
- RegisterSignal(chamber, COMSIG_PARENT_QDELETING, .proc/react_to_chamber_del)
+ RegisterSignal(chamber, COMSIG_PARENT_QDELETING,PROC_REF(react_to_chamber_del))
/obj/machinery/computer/nanite_chamber_control/proc/react_to_chamber_del(datum/source)
SIGNAL_HANDLER
diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm
index b00554e52c8..d8292ab9287 100644
--- a/code/modules/research/nanites/nanite_programs/healing.dm
+++ b/code/modules/research/nanites/nanite_programs/healing.dm
@@ -222,7 +222,7 @@
/datum/nanite_program/defib/on_trigger(comm_message)
host_mob.notify_ghost_cloning("Your heart is being defibrillated by nanites. Re-enter your corpse if you want to be revived!")
- addtimer(CALLBACK(src, .proc/zap), 50)
+ addtimer(CALLBACK(src,PROC_REF(zap)), 50)
/datum/nanite_program/defib/proc/check_revivable()
if(!iscarbon(host_mob)) //nonstandard biology
diff --git a/code/modules/research/nanites/nanite_programs/sensor.dm b/code/modules/research/nanites/nanite_programs/sensor.dm
index 260811445b8..61ff8963260 100644
--- a/code/modules/research/nanites/nanite_programs/sensor.dm
+++ b/code/modules/research/nanites/nanite_programs/sensor.dm
@@ -36,7 +36,7 @@
/datum/nanite_program/sensor/repeat/on_trigger(comm_message)
var/datum/nanite_extra_setting/ES = extra_settings[NES_DELAY]
- addtimer(CALLBACK(src, .proc/send_code), ES.get_value() * 10)
+ addtimer(CALLBACK(src,PROC_REF(send_code)), ES.get_value() * 10)
/datum/nanite_program/sensor/relay_repeat
name = "Relay Signal Repeater"
@@ -53,7 +53,7 @@
/datum/nanite_program/sensor/relay_repeat/on_trigger(comm_message)
var/datum/nanite_extra_setting/ES = extra_settings[NES_DELAY]
- addtimer(CALLBACK(src, .proc/send_code), ES.get_value() * 10)
+ addtimer(CALLBACK(src,PROC_REF(send_code)), ES.get_value() * 10)
/datum/nanite_program/sensor/relay_repeat/send_code()
var/datum/nanite_extra_setting/relay = extra_settings[NES_RELAY_CHANNEL]
@@ -245,10 +245,10 @@
/datum/nanite_program/sensor/voice/on_mob_add()
. = ..()
- RegisterSignal(host_mob, COMSIG_MOVABLE_HEAR, .proc/on_hear)
+ RegisterSignal(host_mob, COMSIG_MOVABLE_HEAR,PROC_REF(on_hear))
/datum/nanite_program/sensor/voice/on_mob_remove()
- UnregisterSignal(host_mob, COMSIG_MOVABLE_HEAR, .proc/on_hear)
+ UnregisterSignal(host_mob, COMSIG_MOVABLE_HEAR,PROC_REF(on_hear))
/datum/nanite_program/sensor/voice/proc/on_hear(datum/source, list/hearing_args)
var/datum/nanite_extra_setting/sentence = extra_settings[NES_SENTENCE]
diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm
index 1a9f36ac3e9..1d39566c79a 100644
--- a/code/modules/research/nanites/nanite_programs/suppression.dm
+++ b/code/modules/research/nanites/nanite_programs/suppression.dm
@@ -11,7 +11,7 @@
/datum/nanite_program/sleepy/on_trigger(comm_message)
to_chat(host_mob, span_warning("You start to feel very sleepy..."))
host_mob.drowsyness += 20
- addtimer(CALLBACK(host_mob, /mob/living.proc/Sleeping, 200), rand(60,200))
+ addtimer(CALLBACK(host_mob, TYPE_PROC_REF(/mob/living,Sleeping), 200), rand(60,200))
/datum/nanite_program/paralyzing
name = "Paralysis"
diff --git a/code/modules/research/nanites/nanite_programs/weapon.dm b/code/modules/research/nanites/nanite_programs/weapon.dm
index 1979a6d8042..ef1303fc3c9 100644
--- a/code/modules/research/nanites/nanite_programs/weapon.dm
+++ b/code/modules/research/nanites/nanite_programs/weapon.dm
@@ -84,7 +84,7 @@
/datum/nanite_program/explosive/on_trigger(comm_message)
host_mob.visible_message(span_warning("[host_mob] starts emitting a high-pitched buzzing, and [host_mob.p_their()] skin begins to glow..."),\
span_userdanger("You start emitting a high-pitched buzzing, and your skin begins to glow..."))
- addtimer(CALLBACK(src, .proc/boom), clamp((nanites.nanite_volume * 0.35), 25, 150))
+ addtimer(CALLBACK(src,PROC_REF(boom)), clamp((nanites.nanite_volume * 0.35), 25, 150))
/datum/nanite_program/explosive/proc/boom()
var/nanite_amount = nanites.nanite_volume
@@ -178,7 +178,7 @@
sent_directive = ES.get_value()
brainwash(host_mob, sent_directive)
log_game("A mind control nanite program brainwashed [key_name(host_mob)] with the objective '[sent_directive]'.")
- addtimer(CALLBACK(src, .proc/end_brainwashing), 600)
+ addtimer(CALLBACK(src,PROC_REF(end_brainwashing)), 600)
/datum/nanite_program/comm/mind_control/proc/end_brainwashing()
if(host_mob.mind && host_mob.mind.has_antag_datum(/datum/antagonist/brainwashed))
diff --git a/code/modules/research/nanites/public_chamber.dm b/code/modules/research/nanites/public_chamber.dm
index 5def27035b0..f3dcce79d8b 100644
--- a/code/modules/research/nanites/public_chamber.dm
+++ b/code/modules/research/nanites/public_chamber.dm
@@ -45,9 +45,9 @@
//TODO OMINOUS MACHINE SOUNDS
set_busy(TRUE, "[initial(icon_state)]_raising")
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),60)
- addtimer(CALLBACK(src, .proc/complete_injection, locked_state, attacker),80)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "[initial(icon_state)]_active"),20)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "[initial(icon_state)]_falling"),60)
+ addtimer(CALLBACK(src,PROC_REF(complete_injection), locked_state, attacker),80)
/obj/machinery/public_nanite_chamber/proc/complete_injection(locked_state, mob/living/attacker)
//TODO MACHINE DING
@@ -72,9 +72,9 @@
locked = TRUE
set_busy(TRUE, "[initial(icon_state)]_raising")
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),40)
- addtimer(CALLBACK(src, .proc/complete_cloud_change, locked_state, attacker),60)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "[initial(icon_state)]_active"),20)
+ addtimer(CALLBACK(src,PROC_REF(set_busy), TRUE, "[initial(icon_state)]_falling"),40)
+ addtimer(CALLBACK(src,PROC_REF(complete_cloud_change), locked_state, attacker),60)
/obj/machinery/public_nanite_chamber/proc/complete_cloud_change(locked_state, mob/living/attacker)
locked = locked_state
@@ -149,7 +149,7 @@
. = TRUE
- addtimer(CALLBACK(src, .proc/try_inject_nanites, attacker), 30) //If someone is shoved in give them a chance to get out before the injection starts
+ addtimer(CALLBACK(src,PROC_REF(try_inject_nanites), attacker), 30) //If someone is shoved in give them a chance to get out before the injection starts
/obj/machinery/public_nanite_chamber/proc/try_inject_nanites(mob/living/attacker)
if(occupant)
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 874129b75d5..106f59393b8 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -45,7 +45,7 @@
if(. & EMP_PROTECT_SELF)
return
stat |= EMPED
- addtimer(CALLBACK(src, .proc/unemp), severity*9)
+ addtimer(CALLBACK(src,PROC_REF(unemp)), severity*9)
refresh_working()
/obj/machinery/rnd/server/proc/unemp()
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index d95b73a6924..b577c903281 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -68,7 +68,7 @@
var/icon/bluespace
/datum/status_effect/slimerecall/on_apply()
- RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/resistField)
+ RegisterSignal(owner, COMSIG_LIVING_RESIST,PROC_REF(resistField))
to_chat(owner, span_danger("You feel a sudden tug from an unknown force, and feel a pull to bluespace!"))
to_chat(owner, span_notice("Resist if you wish avoid the force!"))
bluespace = icon('icons/effects/effects.dmi',"chronofield")
@@ -102,7 +102,7 @@
var/obj/structure/ice_stasis/cube
/datum/status_effect/frozenstasis/on_apply()
- RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/breakCube)
+ RegisterSignal(owner, COMSIG_LIVING_RESIST,PROC_REF(breakCube))
cube = new /obj/structure/ice_stasis(get_turf(owner))
owner.forceMove(cube)
owner.status_flags |= GODMODE
@@ -236,7 +236,7 @@
duration = -1
alert_type = null
-datum/status_effect/rebreathing/tick()
+/datum/status_effect/rebreathing/tick()
owner.adjustOxyLoss(-6, 0) //Just a bit more than normal breathing.
///////////////////////////////////////////////////////
@@ -528,7 +528,7 @@ datum/status_effect/rebreathing/tick()
ADD_TRAIT(owner, TRAIT_NOSLIPWATER, "slimestatus")
return ..()
-datum/status_effect/stabilized/blue/on_remove()
+/datum/status_effect/stabilized/blue/on_remove()
REMOVE_TRAIT(owner, TRAIT_NOSLIPWATER, "slimestatus")
return ..()
diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm
index 32cdc8b91c9..e2dd19976d9 100644
--- a/code/modules/research/xenobiology/crossbreeding/burning.dm
+++ b/code/modules/research/xenobiology/crossbreeding/burning.dm
@@ -242,7 +242,7 @@ Burning extracts:
/obj/item/slimecross/burning/oil/do_effect(mob/user)
user.visible_message(span_danger("[src] begins to shake with rapidly increasing force!"))
- addtimer(CALLBACK(src, .proc/boom), 50)
+ addtimer(CALLBACK(src,PROC_REF(boom)), 50)
/obj/item/slimecross/burning/oil/proc/boom()
explosion(get_turf(src), 2, 4, 4) //Same area as normal oils, but increased high-impact values by one each, then decreased light by 2.
diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm
index ff155ecf567..a5202155153 100644
--- a/code/modules/research/xenobiology/crossbreeding/charged.dm
+++ b/code/modules/research/xenobiology/crossbreeding/charged.dm
@@ -173,7 +173,7 @@ Charged extracts:
/obj/item/slimecross/charged/gold/do_effect(mob/user)
user.visible_message(span_warning("[src] starts shuddering violently!"))
- addtimer(CALLBACK(src, .proc/startTimer), 50)
+ addtimer(CALLBACK(src,PROC_REF(startTimer)), 50)
/obj/item/slimecross/charged/gold/proc/startTimer()
START_PROCESSING(SSobj, src)
@@ -197,7 +197,7 @@ Charged extracts:
/obj/item/slimecross/charged/oil/do_effect(mob/user)
user.visible_message(span_danger("[src] begins to shake with rapidly increasing force!"))
- addtimer(CALLBACK(src, .proc/boom), 50)
+ addtimer(CALLBACK(src,PROC_REF(boom)), 50)
/obj/item/slimecross/charged/oil/proc/boom()
explosion(get_turf(src), 3, 2, 1) //Much smaller effect than normal oils, but devastatingly strong where it does hit.
diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm
index 3f2a66e01fd..ccdc1b33b62 100644
--- a/code/modules/research/xenobiology/crossbreeding/chilling.dm
+++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm
@@ -264,7 +264,7 @@ Chilling extracts:
/obj/item/slimecross/chilling/oil/do_effect(mob/user)
user.visible_message(span_danger("[src] begins to shake with muted intensity!"))
- addtimer(CALLBACK(src, .proc/boom), 50)
+ addtimer(CALLBACK(src,PROC_REF(boom)), 50)
/obj/item/slimecross/chilling/oil/proc/boom()
explosion(get_turf(src), -1, -1, 10, 0) //Large radius, but mostly light damage, and no flash.
diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm
index 79570cc46d0..dc2126e3c1e 100644
--- a/code/modules/research/xenobiology/xenobio_camera.dm
+++ b/code/modules/research/xenobiology/xenobio_camera.dm
@@ -51,7 +51,7 @@
potion_action = new
hotkey_help = new
stored_slimes = list()
- RegisterSignal(src, COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del)
+ RegisterSignal(src, COMSIG_ATOM_CONTENTS_DEL,PROC_REF(on_contents_del))
/obj/machinery/computer/camera_advanced/xenobio/Destroy()
stored_slimes = null
@@ -107,12 +107,12 @@
hotkey_help.Grant(user)
actions += hotkey_help
- RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL, .proc/XenoSlimeClickCtrl)
- RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT, .proc/XenoSlimeClickAlt)
- RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT, .proc/XenoSlimeClickShift)
- RegisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT, .proc/XenoTurfClickShift)
- RegisterSignal(user, COMSIG_XENO_TURF_CLICK_CTRL, .proc/XenoTurfClickCtrl)
- RegisterSignal(user, COMSIG_XENO_MONKEY_CLICK_CTRL, .proc/XenoMonkeyClickCtrl)
+ RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL,PROC_REF(XenoSlimeClickCtrl))
+ RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT,PROC_REF(XenoSlimeClickAlt))
+ RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT,PROC_REF(XenoSlimeClickShift))
+ RegisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT,PROC_REF(XenoTurfClickShift))
+ RegisterSignal(user, COMSIG_XENO_TURF_CLICK_CTRL,PROC_REF(XenoTurfClickCtrl))
+ RegisterSignal(user, COMSIG_XENO_MONKEY_CLICK_CTRL,PROC_REF(XenoMonkeyClickCtrl))
/obj/machinery/computer/camera_advanced/xenobio/remove_eye_control(mob/living/user)
UnregisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL)
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 665401102a5..6f1a1b299c9 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -254,7 +254,7 @@
to_chat(user, span_warning("Your glow is already enhanced!"))
return
species.update_glow(user, 5)
- addtimer(CALLBACK(species, /datum/species/jelly/luminescent.proc/update_glow, user, LUMINESCENT_DEFAULT_GLOW), 600)
+ addtimer(CALLBACK(species, TYPE_PROC_REF(/datum/species/jelly/luminescent,update_glow), user, LUMINESCENT_DEFAULT_GLOW), 600)
to_chat(user, span_notice("You start glowing brighter."))
if(SLIME_ACTIVATE_MAJOR)
@@ -460,7 +460,7 @@
return
to_chat(user, span_notice("You feel your skin harden and become more resistant."))
species.armor += 25
- addtimer(CALLBACK(src, .proc/reset_armor, species), 1200)
+ addtimer(CALLBACK(src,PROC_REF(reset_armor), species), 1200)
return 450
if(SLIME_ACTIVATE_MAJOR)
diff --git a/code/modules/ruins/icemoonruin_code/hotsprings.dm b/code/modules/ruins/icemoonruin_code/hotsprings.dm
index 12704924b4b..7fec472dfa5 100644
--- a/code/modules/ruins/icemoonruin_code/hotsprings.dm
+++ b/code/modules/ruins/icemoonruin_code/hotsprings.dm
@@ -23,7 +23,7 @@ GLOBAL_LIST_EMPTY(cursed_minds)
if(GLOB.cursed_minds[L.mind])
return
GLOB.cursed_minds[L.mind] = TRUE
- RegisterSignal(L.mind, COMSIG_PARENT_QDELETING, .proc/remove_from_cursed)
+ RegisterSignal(L.mind, COMSIG_PARENT_QDELETING,PROC_REF(remove_from_cursed))
L = wabbajack(L, "animal") // Appearance randomization removed so citadel players don't get randomized into some ungodly ugly creature and complain
var/turf/T = find_safe_turf()
L.forceMove(T)
diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
index 46e566508be..6e18789fa5e 100644
--- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
+++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
@@ -159,7 +159,7 @@
toggle_the_gate()
/obj/structure/necropolis_gate/proc/autoclose_in(wait)
- addtimer(CALLBACK(src, .proc/autoclose), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(autoclose)), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE)
/obj/structure/necropolis_gate/locked
@@ -298,7 +298,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
. = ..()
icon_state = "[tile_key][rand(1, tile_random_sprite_max)]"
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
@@ -328,7 +328,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
switch(fall_on_cross)
if(COLLAPSE_ON_CROSS, DESTROY_ON_CROSS)
if((I && I.w_class >= WEIGHT_CLASS_BULKY) || (L && !(L.movement_type & FLYING) && L.mob_size >= MOB_SIZE_HUMAN)) //too heavy! too big! aaah!
- INVOKE_ASYNC(src, .proc/collapse)
+ INVOKE_ASYNC(src,PROC_REF(collapse))
if(UNIQUE_EFFECT)
crossed_effect(AM)
@@ -347,7 +347,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
if(break_that_sucker)
QDEL_IN(src, 10)
else
- addtimer(CALLBACK(src, .proc/rebuild), 55)
+ addtimer(CALLBACK(src,PROC_REF(rebuild)), 55)
/obj/structure/stone_tile/proc/rebuild()
pixel_x = initial(pixel_x)
diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
index 47be724c5b7..476b18da9c0 100644
--- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm
+++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
@@ -24,7 +24,7 @@
know it'll be worth it.")
icon_state = "slots2"
playsound(src, 'sound/lavaland/cursed_slot_machine.ogg', 50, 0)
- addtimer(CALLBACK(src, .proc/determine_victor, user), 50)
+ addtimer(CALLBACK(src,PROC_REF(determine_victor), user), 50)
/obj/structure/cursed_slot_machine/proc/determine_victor(mob/living/user)
icon_state = "slots1"
@@ -50,7 +50,7 @@
/obj/structure/cursed_money/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/collapse), 600)
+ addtimer(CALLBACK(src,PROC_REF(collapse)), 600)
/obj/structure/cursed_money/proc/collapse()
visible_message("[src] falls in on itself, \
diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm
index 7ffe568044b..87ecc81ad12 100644
--- a/code/modules/security_levels/keycard_authentication.dm
+++ b/code/modules/security_levels/keycard_authentication.dm
@@ -28,7 +28,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
/obj/machinery/keycard_auth/Initialize()
. = ..()
- ev = GLOB.keycard_events.addEvent("triggerEvent", CALLBACK(src, .proc/triggerEvent))
+ ev = GLOB.keycard_events.addEvent("triggerEvent", CALLBACK(src,PROC_REF(triggerEvent)))
/obj/machinery/keycard_auth/Destroy()
GLOB.keycard_events.clearEvent("triggerEvent", ev)
@@ -93,7 +93,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
event = event_type
waiting = 1
GLOB.keycard_events.fireEvent("triggerEvent", src, trigger_id)
- addtimer(CALLBACK(src, .proc/eventSent), 20)
+ addtimer(CALLBACK(src,PROC_REF(eventSent)), 20)
/obj/machinery/keycard_auth/proc/eventSent()
triggerer = null
@@ -104,7 +104,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
icon_state = "auth_on"
first_id = trigger_id
event_source = source
- addtimer(CALLBACK(src, .proc/eventTriggered), 20)
+ addtimer(CALLBACK(src,PROC_REF(eventTriggered)), 20)
/obj/machinery/keycard_auth/proc/eventTriggered()
icon_state = "auth_off"
diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm
index da855c0cf2e..92284a45957 100644
--- a/code/modules/shuttle/arrivals.dm
+++ b/code/modules/shuttle/arrivals.dm
@@ -197,7 +197,7 @@
if(mode != SHUTTLE_CALL)
AnnounceArrival(mob, rank)
else
- LAZYADD(queued_announces, CALLBACK(GLOBAL_PROC, .proc/AnnounceArrival, mob, rank))
+ LAZYADD(queued_announces, CALLBACK(usr, GLOBAL_PROC_REF(AnnounceArrival), mob, rank))
/obj/docking_port/mobile/arrivals/vv_edit_var(var_name, var_value)
switch(var_name)
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm
index c23ce92a07f..b53fc83dfe6 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -181,7 +181,7 @@ All ShuttleMove procs go here
for(var/obj/machinery/door/airlock/A in range(1, src)) // includes src
A.shuttledocked = FALSE
A.air_tight = TRUE
- addtimer(CALLBACK(A, /obj/machinery/door/.proc/close), 0)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/door/,close)), 0)
/obj/machinery/door/airlock/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
. = ..()
diff --git a/code/modules/shuttle/ripple.dm b/code/modules/shuttle/ripple.dm
index 4bf6eac0ebe..2a0bdf7f9ca 100644
--- a/code/modules/shuttle/ripple.dm
+++ b/code/modules/shuttle/ripple.dm
@@ -14,7 +14,7 @@
/obj/effect/abstract/ripple/Initialize(mapload, time_left)
. = ..()
animate(src, alpha=255, time=time_left)
- addtimer(CALLBACK(src, .proc/stop_animation), 8, TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(src,PROC_REF(stop_animation)), 8, TIMER_CLIENT_TIME)
/obj/effect/abstract/ripple/proc/stop_animation()
icon_state = "medi_holo_no_anim"
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index 47a8b537d78..69f2bc0e9c6 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -94,7 +94,7 @@
L.visible_message(span_revennotice("A strange purple glow wraps itself around [L] as [L.p_they()] suddenly fall[L.p_s()] unconscious."),
span_revendanger("[desc]"))
// Don't let them sit suround unconscious forever
- addtimer(CALLBACK(src, .proc/sleeper_dreams, L), 100)
+ addtimer(CALLBACK(src,PROC_REF(sleeper_dreams), L), 100)
// Existing sleepers
for(var/i in found)
@@ -181,7 +181,7 @@
. = ..()
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/smithing/anvil.dm b/code/modules/smithing/anvil.dm
index 7bde3b1cf1e..80d3e8290c3 100644
--- a/code/modules/smithing/anvil.dm
+++ b/code/modules/smithing/anvil.dm
@@ -108,7 +108,7 @@ GLOBAL_LIST_INIT(anvil_recipes, list(
/obj/structure/anvil/Initialize(mapload)
. = ..()
- RegisterSignal(src, COMSIG_CLICK_ALT, .proc/ResetAnvil) // emergency way to reset the anvil incase something goes wrong.
+ RegisterSignal(src, COMSIG_CLICK_ALT,PROC_REF(ResetAnvil)) // emergency way to reset the anvil incase something goes wrong.
currentquality = anvilquality
/obj/structure/anvil/attackby(obj/item/I, mob/user)
diff --git a/code/modules/smithing/finished_items.dm b/code/modules/smithing/finished_items.dm
index 98ff5adfd57..49259df4abc 100644
--- a/code/modules/smithing/finished_items.dm
+++ b/code/modules/smithing/finished_items.dm
@@ -73,8 +73,8 @@
/obj/item/melee/smith/twohand/Initialize()
. = ..()
- 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/melee/smith/twohand/proc/on_wield(obj/item/source, mob/user)
wielded = TRUE
diff --git a/code/modules/spells/spell_but_good.dm b/code/modules/spells/spell_but_good.dm
index 120ec806c14..c0596fd0eec 100644
--- a/code/modules/spells/spell_but_good.dm
+++ b/code/modules/spells/spell_but_good.dm
@@ -55,7 +55,7 @@
if(!isliving(loc)) // fuck
qdel(src)
return
- RegisterSignal(loc, COMSIG_MOB_CLICKON, .proc/intercept_click)
+ RegisterSignal(loc, COMSIG_MOB_CLICKON,PROC_REF(intercept_click))
owner = WEAKREF(loc)
/obj/item/hand_item/caster/Destroy()
diff --git a/code/modules/spells/spell_types/area_teleport.dm b/code/modules/spells/spell_types/area_teleport.dm
index fa4be10141b..359c69c7479 100644
--- a/code/modules/spells/spell_types/area_teleport.dm
+++ b/code/modules/spells/spell_types/area_teleport.dm
@@ -15,7 +15,7 @@
return
invocation(thearea,user)
if(charge_type == "recharge" && recharge)
- INVOKE_ASYNC(src, .proc/start_recharge)
+ INVOKE_ASYNC(src,PROC_REF(start_recharge))
cast(targets,thearea,user)
after_cast(targets)
diff --git a/code/modules/spells/spell_types/cone_spells.dm b/code/modules/spells/spell_types/cone_spells.dm
index 26dd1579861..b0aa076794b 100644
--- a/code/modules/spells/spell_types/cone_spells.dm
+++ b/code/modules/spells/spell_types/cone_spells.dm
@@ -114,4 +114,4 @@
var/list/cone_turfs = cone_helper(get_turf(user), user.dir, cone_levels)
for(var/list/turf_list in cone_turfs)
level_counter++
- addtimer(CALLBACK(src, .proc/do_cone_effects, turf_list, level_counter), 2 * level_counter)
+ addtimer(CALLBACK(src,PROC_REF(do_cone_effects), turf_list, level_counter), 2 * level_counter)
diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm
index a970f0045c5..4becb00cf9b 100644
--- a/code/modules/spells/spell_types/construct_spells.dm
+++ b/code/modules/spells/spell_types/construct_spells.dm
@@ -213,7 +213,7 @@
target.playsound_local(get_turf(target), 'sound/hallucinations/i_see_you1.ogg', 50, 1)
user.playsound_local(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1)
target.become_blind(ABYSSAL_GAZE_BLIND)
- addtimer(CALLBACK(src, .proc/cure_blindness, target), 40)
+ addtimer(CALLBACK(src,PROC_REF(cure_blindness), target), 40)
target.adjust_bodytemperature(-200)
/obj/effect/proc_holder/spell/targeted/abyssal_gaze/proc/cure_blindness(mob/target)
diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm
index 8e9b8dbf026..3c576603edb 100644
--- a/code/modules/spells/spell_types/devil.dm
+++ b/code/modules/spells/spell_types/devil.dm
@@ -161,7 +161,7 @@
client.eye = src
visible_message(span_warning("[src] appears in a fiery blaze!"))
playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1)
- addtimer(CALLBACK(src, .proc/fakefireextinguish), 15, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(fakefireextinguish)), 15, TIMER_UNIQUE)
/obj/effect/proc_holder/spell/targeted/sintouch
name = "Sin Touch"
diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm
index 2abe80c8caa..4766eb484d3 100644
--- a/code/modules/spells/spell_types/ethereal_jaunt.dm
+++ b/code/modules/spells/spell_types/ethereal_jaunt.dm
@@ -19,7 +19,7 @@
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets,mob/user = usr) //magnets, so mostly hardcoded
play_sound("enter",user)
for(var/mob/living/target in targets)
- INVOKE_ASYNC(src, .proc/do_jaunt, target)
+ INVOKE_ASYNC(src,PROC_REF(do_jaunt), target)
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/do_jaunt(mob/living/target)
target.mob_transforming = 1
diff --git a/code/modules/spells/spell_types/genetic.dm b/code/modules/spells/spell_types/genetic.dm
index 8a71ac617e2..cd7908e1c83 100644
--- a/code/modules/spells/spell_types/genetic.dm
+++ b/code/modules/spells/spell_types/genetic.dm
@@ -28,7 +28,7 @@
for(var/A in traits)
ADD_TRAIT(target, A, GENETICS_SPELL)
active_on += target
- addtimer(CALLBACK(src, .proc/remove, target), duration)
+ addtimer(CALLBACK(src,PROC_REF(remove), target), duration)
/obj/effect/proc_holder/spell/targeted/genetic/Destroy()
. = ..()
diff --git a/code/modules/spells/spell_types/knock.dm b/code/modules/spells/spell_types/knock.dm
index e622b4a1cad..25f808a5dc3 100644
--- a/code/modules/spells/spell_types/knock.dm
+++ b/code/modules/spells/spell_types/knock.dm
@@ -16,9 +16,9 @@
SEND_SOUND(user, sound('sound/magic/knock.ogg'))
for(var/turf/T in targets)
for(var/obj/machinery/door/door in T.contents)
- INVOKE_ASYNC(src, .proc/open_door, door)
+ INVOKE_ASYNC(src,PROC_REF(open_door), door)
for(var/obj/structure/closet/C in T.contents)
- INVOKE_ASYNC(src, .proc/open_closet, C)
+ INVOKE_ASYNC(src,PROC_REF(open_closet), C)
/obj/effect/proc_holder/spell/aoe_turf/knock/proc/open_door(obj/machinery/door/door)
if(istype(door, /obj/machinery/door/airlock))
diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm
index bc835c89a56..865eeba41b0 100644
--- a/code/modules/spells/spell_types/lichdom.dm
+++ b/code/modules/spells/spell_types/lichdom.dm
@@ -111,7 +111,7 @@
return
if(!mind.current || (mind.current && mind.current.stat == DEAD))
- addtimer(CALLBACK(src, .proc/rise), respawn_time, TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(rise)), respawn_time, TIMER_UNIQUE)
/obj/item/phylactery/proc/rise()
if(mind.current && mind.current.stat != DEAD)
diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm
index d641be3ae3e..6372c39ae94 100644
--- a/code/modules/spells/spell_types/spacetime_distortion.dm
+++ b/code/modules/spells/spell_types/spacetime_distortion.dm
@@ -35,7 +35,7 @@
perform(turf_steps,user=user)
/obj/effect/proc_holder/spell/spacetime_dist/after_cast(list/targets)
- addtimer(CALLBACK(src, .proc/clean_turfs), duration)
+ addtimer(CALLBACK(src,PROC_REF(clean_turfs)), duration)
/obj/effect/proc_holder/spell/spacetime_dist/cast(list/targets, mob/user = usr)
effects = list()
@@ -83,7 +83,7 @@
. = ..()
setDir(pick(GLOB.cardinals))
var/static/list/loc_connections = list(
- COMSIG_ATOM_ENTERED = .proc/on_entered,
+ COMSIG_ATOM_ENTERED =PROC_REF(on_entered),
)
AddElement(/datum/element/connect_loc, loc_connections)
diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm
index d72a6e33775..0f412ebdeba 100644
--- a/code/modules/surgery/organs/augments_arms.dm
+++ b/code/modules/surgery/organs/augments_arms.dm
@@ -31,7 +31,7 @@
items_list += I
// ayy only dropped signal for performance, we can't possibly have shitcode that doesn't call it when removing items from a mob, right?
// .. right??!
- RegisterSignal(I, COMSIG_ITEM_DROPPED, .proc/magnetic_catch)
+ RegisterSignal(I, COMSIG_ITEM_DROPPED,PROC_REF(magnetic_catch))
/obj/item/organ/cyberimp/arm/proc/magnetic_catch(datum/source, mob/user)
. = COMPONENT_DROPPED_RELOCATION
@@ -285,7 +285,7 @@
/obj/item/organ/cyberimp/arm/shield/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE)
. = ..()
if(.)
- RegisterSignal(M, COMSIG_LIVING_ACTIVE_BLOCK_START, .proc/on_signal)
+ RegisterSignal(M, COMSIG_LIVING_ACTIVE_BLOCK_START,PROC_REF(on_signal))
/obj/item/organ/cyberimp/arm/shield/Remove(special = FALSE)
UnregisterSignal(owner, COMSIG_LIVING_ACTIVE_BLOCK_START)
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index 867820d2570..6ca9ab6b035 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -24,7 +24,7 @@
synthesizing = TRUE
to_chat(owner, span_notice("You feel less hungry..."))
owner.adjust_nutrition(50)
- addtimer(CALLBACK(src, .proc/synth_cool), 50)
+ addtimer(CALLBACK(src,PROC_REF(synth_cool)), 50)
/obj/item/organ/cyberimp/chest/nutriment/proc/synth_cool()
synthesizing = FALSE
@@ -69,7 +69,7 @@
else if(!do_heal)
convalescence_time = world.time + DEF_CONVALESCENCE_TIME
if(. && (do_heal || world.time < convalescence_time))
- addtimer(CALLBACK(src, .proc/heal), 3 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(heal)), 3 SECONDS)
else
cooldown = revive_cost + world.time
reviving = FALSE
@@ -117,7 +117,7 @@
if(H.stat != DEAD && prob(severity/2) && H.can_heartattack())
H.set_heartattack(TRUE)
to_chat(H, span_userdanger("You feel a horrible agony in your chest!"))
- addtimer(CALLBACK(src, .proc/undo_heart_attack), (60 * severity/100) SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(undo_heart_attack)), (60 * severity/100) SECONDS)
/obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack()
var/mob/living/carbon/human/H = owner
@@ -166,7 +166,7 @@
on = TRUE
if(allow_thrust(0.01))
ion_trail.start()
- RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/move_react)
+ RegisterSignal(owner, COMSIG_MOVABLE_MOVED,PROC_REF(move_react))
owner.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/cybernetic)
if(!silent)
to_chat(owner, span_notice("You turn your thrusters set on."))
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index a4b825dbba5..1e453a37be9 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -112,7 +112,7 @@
return
crit_fail = TRUE
organ_flags |= ORGAN_FAILING
- addtimer(CALLBACK(src, .proc/reboot), 0.9 * severity)
+ addtimer(CALLBACK(src,PROC_REF(reboot)), 0.9 * severity)
/obj/item/organ/cyberimp/brain/anti_stun/proc/reboot()
crit_fail = FALSE
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index 92cb695d883..1f5939aa2b9 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -330,7 +330,7 @@
if(!silent)
to_chat(owner, span_warning("Your [src] clicks and makes a whining noise, before shooting out a beam of light!"))
active = TRUE
- RegisterSignal(owner, COMSIG_ATOM_DIR_CHANGE, .proc/update_visuals)
+ RegisterSignal(owner, COMSIG_ATOM_DIR_CHANGE,PROC_REF(update_visuals))
cycle_mob_overlay()
/obj/item/organ/eyes/robotic/glow/proc/deactivate(silent = FALSE)
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 2e7e4d88710..ba968bac369 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -31,7 +31,7 @@
/obj/item/organ/heart/Remove(special = FALSE)
if(!special)
- addtimer(CALLBACK(src, .proc/stop_if_unowned), 12 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(stop_if_unowned)), 12 SECONDS)
return ..()
/obj/item/organ/heart/proc/stop_if_unowned()
@@ -44,7 +44,7 @@
user.visible_message("[user] squeezes [src] to \
make it beat again!",span_notice("You squeeze [src] to make it beat again!"))
Restart()
- addtimer(CALLBACK(src, .proc/stop_if_unowned), 80)
+ addtimer(CALLBACK(src,PROC_REF(stop_if_unowned)), 80)
/obj/item/organ/heart/proc/Stop()
beating = 0
@@ -98,7 +98,7 @@
owner.set_heartattack(TRUE)
failed = TRUE
-obj/item/organ/heart/slime
+/obj/item/organ/heart/slime
name = "slime heart"
desc = "It seems we've gotten to the slimy core of the matter."
icon_state = "heart-s-on"
@@ -199,7 +199,7 @@ obj/item/organ/heart/slime
if(. & EMP_PROTECT_SELF)
return
Stop()
- addtimer(CALLBACK(src, .proc/Restart), 0.2*severity SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(Restart)), 0.2*severity SECONDS)
damage += severity
/obj/item/organ/heart/cybernetic/upgraded
@@ -213,7 +213,7 @@ obj/item/organ/heart/slime
var/rid = /datum/reagent/medicine/epinephrine
var/ramount = 10
-obj/item/organ/heart/cybernetic/upgraded/on_life()
+/obj/item/organ/heart/cybernetic/upgraded/on_life()
. = ..()
if(!.)
return
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index 7e58ff0c0c7..5bf48ee6d13 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -33,7 +33,7 @@
/obj/item/organ/Initialize()
. = ..()
if(organ_flags & ORGAN_EDIBLE)
- AddComponent(/datum/component/edible, food_reagents, null, RAW | MEAT | GROSS, null, 10, null, null, null, CALLBACK(src, .proc/OnEatFrom))
+ AddComponent(/datum/component/edible, food_reagents, null, RAW | MEAT | GROSS, null, 10, null, null, null, CALLBACK(src,PROC_REF(OnEatFrom)))
START_PROCESSING(SSobj, src)
/obj/item/organ/Destroy()
diff --git a/code/modules/surgery/organs/soda_organ.dm b/code/modules/surgery/organs/soda_organ.dm
index 1de913958f0..3ecb18bea04 100644
--- a/code/modules/surgery/organs/soda_organ.dm
+++ b/code/modules/surgery/organs/soda_organ.dm
@@ -91,7 +91,7 @@
/obj/item/organ/sodie_organ/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE)
. = ..()
- RegisterSignal(M, COMSIG_CARBON_REAGENT_POST_LIFE, .proc/bank_sauce)
+ RegisterSignal(M, COMSIG_CARBON_REAGENT_POST_LIFE,PROC_REF(bank_sauce))
/obj/item/organ/sodie_organ/Remove(special = FALSE)
UnregisterSignal(owner, COMSIG_CARBON_REAGENT_POST_LIFE)
diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm
index 5550eb4570a..27d3cc1ef89 100644
--- a/code/modules/surgery/organs/stomach.dm
+++ b/code/modules/surgery/organs/stomach.dm
@@ -132,8 +132,8 @@
/obj/item/organ/stomach/ethereal/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
- RegisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, .proc/charge)
- RegisterSignal(owner, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_electrocute)
+ RegisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT,PROC_REF(charge))
+ RegisterSignal(owner, COMSIG_LIVING_ELECTROCUTE_ACT,PROC_REF(on_electrocute))
/obj/item/organ/stomach/ethereal/Remove(mob/living/carbon/M, special = 0)
UnregisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT)
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index d5d879bc457..1f9ecdbd8de 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -112,15 +112,15 @@
M.dna.species.say_mod = say_mod
if(length(initial_accents) || length(accents))
//M.UnregisterSignal(M, COMSIG_MOB_SAY)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech, override = TRUE)
+ RegisterSignal(M, COMSIG_MOB_SAY,PROC_REF(handle_speech), override = TRUE)
/obj/item/organ/tongue/Remove(special = FALSE)
if(!QDELETED(owner))
if(say_mod && owner.dna?.species)
owner.dna.species.say_mod = initial(owner.dna.species.say_mod)
- UnregisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
- //owner.RegisterSignal(owner, COMSIG_MOB_SAY, /mob/living/carbon/.proc/handle_tongueless_speech)
+ UnregisterSignal(owner, COMSIG_MOB_SAY,PROC_REF(handle_speech))
+ //owner.RegisterSignal(owner, TYPE_PROC_REF(COMSIG_MOB_SAY, /mob/living/carbon/,handle_tongueless_speech))
return ..()
/obj/item/organ/tongue/could_speak_language(language)
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index a9b1d7b8086..6dcbf65f311 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -405,7 +405,7 @@
for(var/iter in 1 to 5 * power_multiplier)
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(GLOBAL_PROC, .proc/_step, L, direction? direction : pick(GLOB.cardinals)), 10 * (iter - 1))
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(_step), L, direction? direction : pick(GLOB.cardinals)), 10 * (iter - 1))
//WALK
else if((findtext(message, walk_words)))
@@ -494,7 +494,7 @@
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "dance"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/,emote), "dance"), 5 * i)
i++
//JUMP
@@ -504,7 +504,7 @@
var/mob/living/L = V
if(prob(25))
addtimer(CALLBACK(L, /atom/movable/proc/say, "HOW HIGH?!!"), 5 * i)
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "jump"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/,emote), "jump"), 5 * i)
i++
//SALUTE
@@ -512,7 +512,7 @@
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "salute"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/,emote), "salute"), 5 * i)
i++
//PLAY DEAD
@@ -520,7 +520,7 @@
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "deathgasp"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/,emote), "deathgasp"), 5 * i)
i++
//PLEASE CLAP
@@ -528,7 +528,7 @@
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "clap"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/,emote), "clap"), 5 * i)
i++
else
@@ -733,7 +733,7 @@
else
E.enthrallTally += power_multiplier*1.25 //thinking about it, I don't know how this can proc
if(E.lewd)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, span_nicegreen("[E.enthrallGender] is so nice to listen to.")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, span_nicegreen("[E.enthrallGender] is so nice to listen to.")), 5)
E.cooldown += 1
//REWARD mixable works
@@ -745,13 +745,13 @@
if(L == user)
continue
if (E.lewd)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, span_love("[E.enthrallGender] has praised me!!")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, span_love("[E.enthrallGender] has praised me!!")), 5)
if(HAS_TRAIT(L, TRAIT_MASO))
E.enthrallTally -= power_multiplier
E.resistanceTally += power_multiplier
E.cooldown += 1
else
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, span_nicegreen("I've been praised for doing a good job!")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, span_nicegreen("I've been praised for doing a good job!")), 5)
E.resistanceTally -= power_multiplier
E.enthrallTally += power_multiplier
var/descmessage = "[(E.lewd?"I feel so happy! I'm a good pet who [E.enthrallGender] loves!":"I did a good job!")]"
@@ -774,11 +774,11 @@
descmessage += "And yet, it feels so good..!" //I don't really understand masco, is this the right sort of thing they like?
E.enthrallTally += power_multiplier
E.resistanceTally -= power_multiplier
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "I've let [E.enthrallGender] down...!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "I've let [E.enthrallGender] down...!"), 5)
else
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, span_warning("I've let [E.enthrallGender] down...")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, span_warning("I've let [E.enthrallGender] down...")), 5)
else
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, span_warning("I've failed [E.master]...")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, span_warning("I've failed [E.master]...")), 5)
E.resistanceTally += power_multiplier
E.enthrallTally += power_multiplier
E.cooldown += 1
@@ -812,9 +812,9 @@
E.status = null
user.emote("snap")
if(E.lewd)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve."), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve."), 5)
else
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "The snapping of [E.master]'s fingers brings you back to being under their influence."), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "The snapping of [E.master]'s fingers brings you back to being under their influence."), 5)
to_chat(user, "You wake up [L]!")
//tier 1
@@ -947,7 +947,7 @@
ADD_TRAIT(C, TRAIT_MUTE, "enthrall")
else
C.silent += ((10 * power_multiplier) * E.phase)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You are unable to speak!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, "You are unable to speak!"), 5)
to_chat(user, "You silence [C].")
E.cooldown += 3
@@ -967,7 +967,7 @@
var/mob/living/L = V
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
E.status = "Antiresist"
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "Your mind clouds over, as you find yourself unable to resist!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "Your mind clouds over, as you find yourself unable to resist!"), 5)
E.statusStrength = (1 * power_multiplier * E.phase)
E.cooldown += 15//Too short? yes, made 15
to_chat(user, "You frustrate [L]'s attempts at resisting.")
@@ -980,7 +980,7 @@
E.deltaResist += (power_multiplier)
E.owner_resist()
E.cooldown += 2
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You are spurred into resisting from [user]'s words!'"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, "You are spurred into resisting from [user]'s words!'"), 5)
to_chat(user, "You spark resistance in [C].")
//FORGET (A way to cancel the process)
@@ -988,9 +988,9 @@
for(var/mob/living/carbon/C in listeners)
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
if(E.phase == 4)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, span_warning("You're unable to forget about [(E.lewd?"the dominating presence of [E.enthrallGender]":"[E.master]")]!")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, span_warning("You're unable to forget about [(E.lewd?"the dominating presence of [E.enthrallGender]":"[E.master]")]!")), 5)
continue
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, span_warning("You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, span_warning("You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!")), 5)
C.Sleeping(50)
switch(E.phase)
if(1 to 2)
@@ -1001,9 +1001,9 @@
E.phase = 0
E.cooldown = 0
if(E.lewd)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened."), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, "You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened."), 5)
else
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You revert to who you were before, with no memory of what happened with [E.master]."), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, "You revert to who you were before, with no memory of what happened with [E.master]."), 5)
to_chat(user, "You put [C] into a sleeper state, ready to turn them back at the snap of your fingers.")
//ATTRACT
@@ -1013,7 +1013,7 @@
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
L.throw_at(get_step_towards(user,L), 3 * power_multiplier, 1 * power_multiplier)
E.cooldown += 3
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You are drawn towards [user]!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You are drawn towards [user]!"), 5)
to_chat(user, "You draw [L] towards you!")
//SLEEP
@@ -1024,7 +1024,7 @@
if(2 to INFINITY)
C.Sleeping(45 * power_multiplier)
E.cooldown += 10
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "Drowsiness suddenly overwhelms you as you fall asleep!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, "Drowsiness suddenly overwhelms you as you fall asleep!"), 5)
to_chat(user, "You send [C] to sleep.")
//STRIP
@@ -1038,7 +1038,7 @@
for(var/obj/item/W in items)
if(W == H.wear_suit)
H.dropItemToGround(W, TRUE)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Before you can even think about it, you quickly remove your clothes in response to [(E.lewd?"your [E.enthrallGender]'s command'":"[E.master]'s directive'")]."), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), H, "Before you can even think about it, you quickly remove your clothes in response to [(E.lewd?"your [E.enthrallGender]'s command'":"[E.master]'s directive'")]."), 5)
E.cooldown += 10
//WALK
@@ -1051,7 +1051,7 @@
if(L.m_intent != MOVE_INTENT_WALK)
L.toggle_move_intent()
E.cooldown += 1
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You slow down to a walk."), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You slow down to a walk."), 5)
to_chat(user, "You encourage [L] to slow down.")
//RUN
@@ -1064,7 +1064,7 @@
if(L.m_intent != MOVE_INTENT_RUN)
L.toggle_move_intent()
E.cooldown += 1
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You speed up into a jog!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You speed up into a jog!"), 5)
to_chat(user, "You encourage [L] to pick up the pace!")
//LIE DOWN
@@ -1076,7 +1076,7 @@
if(2 to INFINITY)
L.lay_down()
E.cooldown += 10
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[(E.lewd?"You eagerly lie down!":"You suddenly lie down!")]"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "[(E.lewd?"You eagerly lie down!":"You suddenly lie down!")]"), 5)
to_chat(user, "You encourage [L] to lie down.")
//KNOCKDOWN
@@ -1088,7 +1088,7 @@
if(2 to INFINITY)
L.DefaultCombatKnockdown(30 * power_multiplier * E.phase)
E.cooldown += 8
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You suddenly drop to the ground!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You suddenly drop to the ground!"), 5)
to_chat(user, "You encourage [L] to drop down to the ground.")
//tier3
@@ -1107,7 +1107,7 @@
for (var/trigger in E.customTriggers)
speaktrigger += "[trigger], "
to_chat(user, "[C] whispers, \"[speaktrigger] are my triggers.\"")//So they don't trigger themselves!
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, span_notice("You whisper your triggers to [(E.lewd?"Your [E.enthrallGender]":"[E.master]")].")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, span_notice("You whisper your triggers to [(E.lewd?"Your [E.enthrallGender]":"[E.master]")].")), 5)
//CUSTOM TRIGGERS
@@ -1142,7 +1142,7 @@
E.customTriggers[trigger] = trigger2
log_reagent("FERMICHEM: [H] has been implanted by [user] with [trigger], triggering [trigger2].")
E.mental_capacity -= 5
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, span_notice("[(E.lewd?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger.")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), H, span_notice("[(E.lewd?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger.")), 5)
to_chat(user, "You sucessfully set the trigger word [trigger] in [H]")
else
to_chat(user, span_warning("Your pet looks at you confused, it seems they don't understand that effect!"))
@@ -1203,7 +1203,7 @@
objective = replacetext(lowertext(objective), "strangle", "meow at")
message_admins("[H] has been implanted by [user] with the objective [objective].")
log_reagent("FERMICHEM: [H] has been implanted by [user] with the objective [objective] via MKUltra.")
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, span_notice("[(E.lewd?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective.")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), H, span_notice("[(E.lewd?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective.")), 5)
brainwash(H, objective)
E.mental_capacity -= 200
to_chat(user, "You sucessfully give an objective to [H]")
@@ -1232,7 +1232,7 @@
if(E.phase > 1)
if(user.ckey == E.enthrallID && user.real_name == E.master.real_name)
E.master = user
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, span_nicegreen("[(E.lewd?"You hear the words of your [E.enthrallGender] again!! They're back!!":"You recognise the voice of [E.master].")]")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), H, span_nicegreen("[(E.lewd?"You hear the words of your [E.enthrallGender] again!! They're back!!":"You recognise the voice of [E.master].")]")), 5)
to_chat(user, "[H] looks at you with sparkling eyes, recognising you!")
//I dunno how to do state objectives without them revealing they're an antag
@@ -1247,7 +1247,7 @@
E.status = "heal"
E.statusStrength = (5 * power_multiplier)
E.cooldown += 5
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You begin to lick your wounds."), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You begin to lick your wounds."), 5)
L.Stun(15 * power_multiplier)
to_chat(user, "[L] begins to lick their wounds.")
@@ -1260,7 +1260,7 @@
if(3 to INFINITY)
L.Stun(40 * power_multiplier)
E.cooldown += 8
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "Your muscles freeze up!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "Your muscles freeze up!"), 5)
to_chat(user, "You cause [L] to freeze up!")
//HALLUCINATE
@@ -1281,7 +1281,7 @@
switch(E.phase)
if(3 to INFINITY)
L.adjust_bodytemperature(50 * power_multiplier)//This seems nuts, reduced it, but then it didn't do anything, so I reverted it.
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You feel your metabolism speed up!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You feel your metabolism speed up!"), 5)
to_chat(user, "You speed [L]'s metabolism up!")
//COLD
@@ -1292,7 +1292,7 @@
switch(E.phase)
if(3 to INFINITY)
L.adjust_bodytemperature(-50 * power_multiplier)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You feel your metabolism slow down!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You feel your metabolism slow down!"), 5)
to_chat(user, "You slow [L]'s metabolism down!")
//GET UP
@@ -1306,7 +1306,7 @@
L.SetAllImmobility(0)
L.SetUnconscious(0) //i said get up i don't care if you're being tased
E.cooldown += 10 //This could be really strong
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You jump to your feet from sheer willpower!"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You jump to your feet from sheer willpower!"), 5)
to_chat(user, "You spur [L] to their feet!")
//PACIFY
@@ -1318,7 +1318,7 @@
if(3)//Tier 3 only
E.status = "pacify"
E.cooldown += 10
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You feel like never hurting anyone ever again."), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), L, "You feel like never hurting anyone ever again."), 5)
to_chat(user, "You remove any intent to harm from [L]'s mind.")
//CHARGE
diff --git a/code/modules/tgs/v3210/api.dm b/code/modules/tgs/v3210/api.dm
index 666201a3225..f4c43b6a541 100644
--- a/code/modules/tgs/v3210/api.dm
+++ b/code/modules/tgs/v3210/api.dm
@@ -102,7 +102,7 @@
#if DM_VERSION >= 515
call_ext(SERVICE_INTERFACE_DLL, SERVICE_INTERFACE_FUNCTION)(instance_name, command) //trust no retval
#else
- 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
#endif
return TRUE
diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm
index 73d56426c1b..c9d3b4ea72c 100644
--- a/code/modules/tgui_panel/tgui_panel.dm
+++ b/code/modules/tgui_panel/tgui_panel.dm
@@ -16,7 +16,7 @@
/datum/tgui_panel/New(client/client)
src.client = client
window = new(client, "browseroutput")
- window.subscribe(src, .proc/on_message)
+ window.subscribe(src,PROC_REF(on_message))
/datum/tgui_panel/Del()
window.unsubscribe(src)
@@ -48,8 +48,8 @@
window.send_asset(get_asset_datum(/datum/asset/spritesheet/chat))
initialized_at = world.time
- addtimer(CALLBACK(src, .proc/request_telemetry), 1 SECONDS)
- addtimer(CALLBACK(src, .proc/on_initialize_timed_out), 10 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(request_telemetry)), 1 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(on_initialize_timed_out)), 10 SECONDS)
/**
* private
diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm
index 31e570cd943..455ee8bdf0a 100644
--- a/code/modules/tooltip/tooltip.dm
+++ b/code/modules/tooltip/tooltip.dm
@@ -88,7 +88,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/unit_tests/combat.dm b/code/modules/unit_tests/combat.dm
index 1bf0883bd78..73a58d8930e 100644
--- a/code/modules/unit_tests/combat.dm
+++ b/code/modules/unit_tests/combat.dm
@@ -53,9 +53,9 @@
var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human)
var/obj/item/storage/toolbox/toolbox = allocate(/obj/item/storage/toolbox)
- RegisterSignal(toolbox, COMSIG_ITEM_PRE_ATTACK, .proc/pre_attack_hit)
- RegisterSignal(toolbox, COMSIG_ITEM_ATTACK, .proc/attack_hit)
- RegisterSignal(toolbox, COMSIG_ITEM_AFTERATTACK, .proc/post_attack_hit)
+ RegisterSignal(toolbox, COMSIG_ITEM_PRE_ATTACK,PROC_REF(pre_attack_hit))
+ RegisterSignal(toolbox, COMSIG_ITEM_ATTACK,PROC_REF(attack_hit))
+ RegisterSignal(toolbox, COMSIG_ITEM_AFTERATTACK,PROC_REF(post_attack_hit))
attacker.put_in_active_hand(toolbox, forced = TRUE)
attacker.a_intent_change(INTENT_HARM)
diff --git a/code/modules/unit_tests/emoting.dm b/code/modules/unit_tests/emoting.dm
index 5795ab34374..2e9fefe0815 100644
--- a/code/modules/unit_tests/emoting.dm
+++ b/code/modules/unit_tests/emoting.dm
@@ -3,7 +3,7 @@
/datum/unit_test/emoting/Run()
var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human)
- RegisterSignal(human, COMSIG_MOB_EMOTE, .proc/on_emote_used)
+ RegisterSignal(human, COMSIG_MOB_EMOTE,PROC_REF(on_emote_used))
human.say("*shrug")
TEST_ASSERT_EQUAL(emotes_used, 1, "Human did not shrug")
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index 6ae1577dbf9..8f6a376224c 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -134,7 +134,7 @@
// playsound(src, 'sound/vehicles/skateboard_roll.ogg', 50, TRUE)
// if(prob (25))
// sparks.start() //the most radical way to start plasma fires
-// addtimer(CALLBACK(src, .proc/grind), 2)
+// addtimer(CALLBACK(src,PROC_REF(grind)), 2)
// return
// else
// grinding = FALSE
diff --git a/code/modules/vehicles/speedbike.dm b/code/modules/vehicles/speedbike.dm
index adbc79b16b8..33d07eb9194 100644
--- a/code/modules/vehicles/speedbike.dm
+++ b/code/modules/vehicles/speedbike.dm
@@ -44,7 +44,7 @@
icon = 'icons/obj/car.dmi'
icon_state = "speedwagon"
layer = LYING_MOB_LAYER
- var/static/mutable_appearance/overlay = mutable_appearance(icon, "speedwagon_cover", ABOVE_MOB_LAYER)
+ var/mutable_appearance/overlay
max_buckled_mobs = 4
var/crash_all = FALSE //CHAOS
pixel_y = -48
@@ -52,6 +52,7 @@
/obj/vehicle/ridden/space/speedwagon/Initialize()
. = ..()
+ overlay = mutable_appearance(icon, "speedwagon_cover", ABOVE_MOB_LAYER)
add_overlay(overlay)
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
D.vehicle_move_delay = 0
diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm
index 25e39a51537..d5749997543 100644
--- a/code/modules/vehicles/wheelchair.dm
+++ b/code/modules/vehicles/wheelchair.dm
@@ -26,7 +26,7 @@
/obj/vehicle/ridden/wheelchair/ComponentInitialize() //Since it's technically a chair I want it to have chair properties
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, .proc/can_user_rotate),CALLBACK(src, .proc/can_be_rotated),null)
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src,PROC_REF(can_user_rotate),CALLBACK(src),PROC_REF(can_be_rotated),null))
/obj/vehicle/ridden/wheelchair/obj_destruction(damage_flag)
new /obj/item/stack/rods(drop_location(), 1)
diff --git a/code/modules/vending/brahminvendordm.dm b/code/modules/vending/brahminvendordm.dm
index 03aae646508..d0a10d7e7fa 100644
--- a/code/modules/vending/brahminvendordm.dm
+++ b/code/modules/vending/brahminvendordm.dm
@@ -68,7 +68,7 @@ GLOBAL_VAR(orbital_cow_cooldown)
COOLDOWN_START(src, clickyclick, 4 SECONDS)
playsound(src, 'sound/machines/keyboard_beep.ogg', 40, ignore_walls = TRUE)
user.show_message(span_notice("You press one or more buttons on the uplink..."))
- addtimer(CALLBACK(src, .proc/claim_beacon, user), 3 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(claim_beacon), user), 3 SECONDS)
/obj/item/brahmin_beacon/proc/claim_beacon(mob/user)
if(!GLOB.orbital_cow_catapult_ready)
@@ -84,9 +84,9 @@ GLOBAL_VAR(orbital_cow_cooldown)
playsound(src, 'sound/machines/fuckedup_fax.ogg', 80, ignore_walls = TRUE)
if(in_range(src, user))
user.show_message(span_notice("...and the uplink starts making noises like it's doing something!"))
- addtimer(CALLBACK(src, .proc/drop_cow, user), 7.5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(drop_cow), user), 7.5 SECONDS)
addtimer(VARSET_CALLBACK(GLOB, orbital_cow_catapult_ready, TRUE), COW_CANNON_RELOAD_DELAY)
- addtimer(CALLBACK(src, .proc/reset_beacon), COW_CANNON_RELOAD_DELAY)
+ addtimer(CALLBACK(src,PROC_REF(reset_beacon)), COW_CANNON_RELOAD_DELAY)
/obj/item/brahmin_beacon/proc/drop_cow(mob/user)
var/obj/structure/closet/supplypod/bluespacepod/pod = new()
@@ -109,7 +109,7 @@ GLOBAL_VAR(orbital_cow_cooldown)
var/turf/hereiam = get_turf(src)
hereiam.visible_message(span_userdanger("[src] starts beeping furiously! HIT THE DECK!"))
new /obj/effect/abstract/DPtarget(get_turf(src), pod)
- addtimer(CALLBACK(src, .proc/reset_beacon), 7.5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(reset_beacon)), 7.5 SECONDS)
/obj/item/brahmin_beacon/proc/reset_beacon(mob/user)
delivering_cow = FALSE
@@ -120,6 +120,6 @@ GLOBAL_VAR(orbital_cow_cooldown)
if(beeps_left-- < 0)
beeps_left = initial(beeps_left)
return
- addtimer(CALLBACK(src, .proc/beep_loop), 0.2 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(beep_loop)), 0.2 SECONDS)
#undef COW_CANNON_RELOAD_DELAY
diff --git a/code/modules/vore/eating/belly_obj.dm b/code/modules/vore/eating/belly_obj.dm
index b16ae3ad311..18004e01c4f 100644
--- a/code/modules/vore/eating/belly_obj.dm
+++ b/code/modules/vore/eating/belly_obj.dm
@@ -252,15 +252,15 @@
/obj/vore_belly/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_VORE_DEVOUR_ATOM, .proc/nom_mob)
- RegisterSignal(src, COMSIG_VORE_STOP_SOUNDS, .proc/stop_sounds)
- RegisterSignal(src, COMSIG_VORE_AUTO_EMOTE, .proc/auto_emote)
- RegisterSignal(src, COMSIG_VORE_ADD_BELLY, .proc/add_belly)
- RegisterSignal(src, COMSIG_BELLY_EXPEL_SPECIFIC, .proc/release_specific_contents)
- RegisterSignal(src, COMSIG_VORE_EXPEL_MOB_OOC, .proc/ooc_escape)
- RegisterSignal(src, COMSIG_VORE_EXPEL_ALL, .proc/release_all_contents)
- RegisterSignal(src, COMSIG_VORE_RECALCULATE_SLOWDOWN, .proc/update_slowdowns)
- RegisterSignal(src, COMSIG_BELLY_HANDLE_TRASH, .proc/hork_trash)
+ RegisterSignal(src, COMSIG_VORE_DEVOUR_ATOM,PROC_REF(nom_mob))
+ RegisterSignal(src, COMSIG_VORE_STOP_SOUNDS,PROC_REF(stop_sounds))
+ RegisterSignal(src, COMSIG_VORE_AUTO_EMOTE,PROC_REF(auto_emote))
+ RegisterSignal(src, COMSIG_VORE_ADD_BELLY,PROC_REF(add_belly))
+ RegisterSignal(src, COMSIG_BELLY_EXPEL_SPECIFIC,PROC_REF(release_specific_contents))
+ RegisterSignal(src, COMSIG_VORE_EXPEL_MOB_OOC,PROC_REF(ooc_escape))
+ RegisterSignal(src, COMSIG_VORE_EXPEL_ALL,PROC_REF(release_all_contents))
+ RegisterSignal(src, COMSIG_VORE_RECALCULATE_SLOWDOWN,PROC_REF(update_slowdowns))
+ RegisterSignal(src, COMSIG_BELLY_HANDLE_TRASH,PROC_REF(hork_trash))
/obj/vore_belly/Destroy()
// be kind, undefined
@@ -294,11 +294,11 @@
SIGNAL_HANDLER
owner = new_owner
START_PROCESSING(SSvore, src)
- RegisterSignal(new_owner, COMSIG_VORE_STOP_SOUNDS, .proc/stop_sounds)
- RegisterSignal(new_owner, COMSIG_BELLY_EXPEL_SPECIFIC, .proc/release_specific_contents)
- RegisterSignal(new_owner, COMSIG_VORE_EXPEL_MOB_OOC, .proc/ooc_escape)
- RegisterSignal(new_owner, COMSIG_VORE_EXPEL_ALL, .proc/release_all_contents)
- RegisterSignal(new_owner, COMSIG_MOB_APPLY_DAMAGE, .proc/pass_damage) // OUR APC IS UNDER ATTACK
+ RegisterSignal(new_owner, COMSIG_VORE_STOP_SOUNDS,PROC_REF(stop_sounds))
+ RegisterSignal(new_owner, COMSIG_BELLY_EXPEL_SPECIFIC,PROC_REF(release_specific_contents))
+ RegisterSignal(new_owner, COMSIG_VORE_EXPEL_MOB_OOC,PROC_REF(ooc_escape))
+ RegisterSignal(new_owner, COMSIG_VORE_EXPEL_ALL,PROC_REF(release_all_contents))
+ RegisterSignal(new_owner, COMSIG_MOB_APPLY_DAMAGE,PROC_REF(pass_damage)) // OUR APC IS UNDER ATTACK
// Called whenever an atom enters this belly
/obj/vore_belly/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
@@ -311,10 +311,10 @@
SEND_SIGNAL(src, COMSIG_BELLY_EXPEL_SPECIFIC, living_prey) // oops! out you go!
return
living_prey.become_blind("belly_[REF(src)]")
- RegisterSignal(living_prey, COMSIG_MOB_DEATH, .proc/digestion_death)
- RegisterSignal(living_prey, COMSIG_MOB_GHOSTIZE, .proc/stop_sounds_ghostize)
- RegisterSignal(living_prey, COMSIG_LIVING_RESIST, .proc/relay_resist)
- RegisterSignal(living_prey, COMSIG_ATOM_RELAYMOVE, .proc/relay_resist)
+ RegisterSignal(living_prey, COMSIG_MOB_DEATH,PROC_REF(digestion_death))
+ RegisterSignal(living_prey, COMSIG_MOB_GHOSTIZE,PROC_REF(stop_sounds_ghostize))
+ RegisterSignal(living_prey, COMSIG_LIVING_RESIST,PROC_REF(relay_resist))
+ RegisterSignal(living_prey, COMSIG_ATOM_RELAYMOVE,PROC_REF(relay_resist))
if(CHECK_PREFS(living_prey, VOREPREF_VORE_MESSAGES))
var/raw_desc //Let's use this to avoid needing to write the reformat code twice
if(absorbed_desc && SEND_SIGNAL(living_prey, COMSIG_VORE_ABSORBED_STATE))
@@ -330,7 +330,7 @@
formatted_desc = replacetext(formatted_desc, "%prey", living_prey) //replace with whatever mob entered into this belly
to_chat(living_prey, span_notice("[formatted_desc]"), pref_check = VOREPREF_VORE_MESSAGES)
- RegisterSignal(arrived, COMSIG_PARENT_PREQDELETED, .proc/trigger_slowdown_update)
+ RegisterSignal(arrived, COMSIG_PARENT_PREQDELETED,PROC_REF(trigger_slowdown_update))
//Generic entered message
SEND_SIGNAL(arrived, COMSIG_VORE_ATOM_DEVOURED, src, owner)
SEND_SIGNAL(arrived, COMSIG_VORE_UPDATE_PANEL)
@@ -623,7 +623,7 @@
// M.updateVRPanel()
// Setup the autotransfer checks if needed
if(!isnull(transferlocation) && autotransferchance > 0)
- addtimer(CALLBACK(src, .proc/check_autotransfer, movable_prey), autotransferwait)
+ addtimer(CALLBACK(src,PROC_REF(check_autotransfer), movable_prey), autotransferwait)
/obj/vore_belly/proc/check_autotransfer(atom/movable/movable_prey)
// Some sanity checks
@@ -634,7 +634,7 @@
return
SEND_SIGNAL(src, COMSIG_VORE_UPDATE_PANEL)
// Didn't transfer, so wait before retrying
- addtimer(CALLBACK(src, .proc/check_autotransfer, movable_prey), autotransferwait)
+ addtimer(CALLBACK(src,PROC_REF(check_autotransfer), movable_prey), autotransferwait)
///Transfers contents from one belly to another
/obj/vore_belly/proc/transfer_contents(atom/movable/movable_prey, obj/vore_belly/target, silent = FALSE)
@@ -845,13 +845,13 @@
send_voremessage(living_prey, struggle_messages_outside, struggle_messages_inside)
if(!escapechance && owner.stat != CONSCIOUS)
- INVOKE_ASYNC(src, .proc/attempt_escape, living_prey) //If owner is stat (dead, KO) we can actually escape
+ INVOKE_ASYNC(src,PROC_REF(attempt_escape), living_prey) //If owner is stat (dead, KO) we can actually escape
return
if(!escapable) //If the stomach has escapable enabled.
return
if(prob(escapechance)) //Let's have it check to see if the prey escapes first.
- INVOKE_ASYNC(src, .proc/attempt_escape, living_prey)
+ INVOKE_ASYNC(src,PROC_REF(attempt_escape), living_prey)
if(prob(transferchance) && transferlocation) //Next, let's have it see if they end up getting into an even bigger mess then when they started.
var/list/assbellies = list()
SEND_SIGNAL(src, COMSIG_VORE_GET_BELLIES, assbellies, TRUE)
diff --git a/code/modules/vore/eating/living.dm b/code/modules/vore/eating/living.dm
index a753a64f74d..565bcd5a551 100644
--- a/code/modules/vore/eating/living.dm
+++ b/code/modules/vore/eating/living.dm
@@ -1,7 +1,7 @@
///////////////////// Mob Living /////////////////////
/mob/living/ComponentInitialize()
. = ..()
- RegisterSignal(src, list(COMSIG_MOB_CLIENT_LOGIN, COMSIG_MOB_KEY_CHANGE), .proc/vorify)
+ RegisterSignal(src, list(COMSIG_MOB_CLIENT_LOGIN, COMSIG_MOB_KEY_CHANGE),PROC_REF(vorify))
/mob/living/proc/vorify()
if(!CHECK_PREFS(src, VOREPREF_MASTER))
diff --git a/code/modules/vore/eating/vore_core.dm b/code/modules/vore/eating/vore_core.dm
index 010f8fb5e59..23d402a1933 100644
--- a/code/modules/vore/eating/vore_core.dm
+++ b/code/modules/vore/eating/vore_core.dm
@@ -34,31 +34,31 @@
/datum/component/vore/Initialize()
if(!SSvore.should_have_vore(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_MOB_CLIENT_LOGIN), .proc/setup_vore)
- RegisterSignal(parent, list(COMSIG_VORE_SAVE_PREFS), .proc/save_prefs)
- RegisterSignal(parent, list(COMSIG_VORE_LOAD_PREFS), .proc/load_prefs)
- RegisterSignal(parent, list(COMSIG_VORE_ABSORBED_STATE), .proc/absorbed_state)
- RegisterSignal(parent, list(COMSIG_VORE_ADD_BELLY), .proc/add_belly)
- RegisterSignal(parent, list(COMSIG_VORE_REMOVE_BELLY), .proc/remove_belly)
- RegisterSignal(parent, list(COMSIG_VORE_GET_BELLIES), .proc/get_bellies)
- RegisterSignal(parent, list(COMSIG_VORE_HAS_BELLIES), .proc/has_belly)
- RegisterSignal(parent, list(COMSIG_VORE_VERIFY_BELLY), .proc/verify_belly)
- RegisterSignal(parent, list(COMSIG_VORE_SET_SELECTED_BELLY), .proc/select_belly)
- RegisterSignal(parent, list(COMSIG_VORE_SWAP_BELLY_INDEX), .proc/swap_belly_index)
- RegisterSignal(parent, list(COMSIG_VORE_DO_VORE), .proc/vore_attack)
- RegisterSignal(parent, list(COMSIG_VORE_SNIFF_LIVING), .proc/sniff_mob)
- RegisterSignal(parent, list(COMSIG_VORE_UPDATE_PANEL), .proc/update_vore_panel)
- RegisterSignal(parent, list(COMSIG_VORE_TOGGLE_VOREMODE), .proc/toggle_voremode)
- RegisterSignal(parent, list(COMSIG_VORE_GET_VOREMODE), .proc/get_voremode)
- RegisterSignal(parent, list(COMSIG_VORE_CAN_EAT), .proc/can_eat)
- RegisterSignal(parent, list(COMSIG_VORE_CAN_BE_EATEN), .proc/can_be_eaten)
- RegisterSignal(parent, list(COMSIG_VORE_CAN_BE_FED_PREY), .proc/can_be_fed_prey)
- RegisterSignal(parent, list(COMSIG_VORE_RECALCULATE_SLOWDOWN), .proc/update_slowdowns)
- RegisterSignal(parent, list(COMSIG_VORE_CHECK_EDIBILITY), .proc/can_eat_item)
- RegisterSignal(parent, list(COMSIG_VORE_DO_MESSAGE), .proc/do_voremessage)
- RegisterSignal(parent, list(COMSIG_VORE_EXISTS), .proc/setup_vore)
- RegisterSignal(parent, list(COMSIG_PARENT_EXAMINE), .proc/examine_bellies)
- RegisterSignal(parent, list(COMSIG_MOB_DEATH), .proc/you_died) // casual
+ RegisterSignal(parent, list(COMSIG_MOB_CLIENT_LOGIN),PROC_REF(setup_vore))
+ RegisterSignal(parent, list(COMSIG_VORE_SAVE_PREFS),PROC_REF(save_prefs))
+ RegisterSignal(parent, list(COMSIG_VORE_LOAD_PREFS),PROC_REF(load_prefs))
+ RegisterSignal(parent, list(COMSIG_VORE_ABSORBED_STATE),PROC_REF(absorbed_state))
+ RegisterSignal(parent, list(COMSIG_VORE_ADD_BELLY),PROC_REF(add_belly))
+ RegisterSignal(parent, list(COMSIG_VORE_REMOVE_BELLY),PROC_REF(remove_belly))
+ RegisterSignal(parent, list(COMSIG_VORE_GET_BELLIES),PROC_REF(get_bellies))
+ RegisterSignal(parent, list(COMSIG_VORE_HAS_BELLIES),PROC_REF(has_belly))
+ RegisterSignal(parent, list(COMSIG_VORE_VERIFY_BELLY),PROC_REF(verify_belly))
+ RegisterSignal(parent, list(COMSIG_VORE_SET_SELECTED_BELLY),PROC_REF(select_belly))
+ RegisterSignal(parent, list(COMSIG_VORE_SWAP_BELLY_INDEX),PROC_REF(swap_belly_index))
+ RegisterSignal(parent, list(COMSIG_VORE_DO_VORE),PROC_REF(vore_attack))
+ RegisterSignal(parent, list(COMSIG_VORE_SNIFF_LIVING),PROC_REF(sniff_mob))
+ RegisterSignal(parent, list(COMSIG_VORE_UPDATE_PANEL),PROC_REF(update_vore_panel))
+ RegisterSignal(parent, list(COMSIG_VORE_TOGGLE_VOREMODE),PROC_REF(toggle_voremode))
+ RegisterSignal(parent, list(COMSIG_VORE_GET_VOREMODE),PROC_REF(get_voremode))
+ RegisterSignal(parent, list(COMSIG_VORE_CAN_EAT),PROC_REF(can_eat))
+ RegisterSignal(parent, list(COMSIG_VORE_CAN_BE_EATEN),PROC_REF(can_be_eaten))
+ RegisterSignal(parent, list(COMSIG_VORE_CAN_BE_FED_PREY),PROC_REF(can_be_fed_prey))
+ RegisterSignal(parent, list(COMSIG_VORE_RECALCULATE_SLOWDOWN),PROC_REF(update_slowdowns))
+ RegisterSignal(parent, list(COMSIG_VORE_CHECK_EDIBILITY),PROC_REF(can_eat_item))
+ RegisterSignal(parent, list(COMSIG_VORE_DO_MESSAGE),PROC_REF(do_voremessage))
+ RegisterSignal(parent, list(COMSIG_VORE_EXISTS),PROC_REF(setup_vore))
+ RegisterSignal(parent, list(COMSIG_PARENT_EXAMINE),PROC_REF(examine_bellies))
+ RegisterSignal(parent, list(COMSIG_MOB_DEATH),PROC_REF(you_died)) // casual
START_PROCESSING(SSvore, src)
if(isliving(parent))
var/mob/living/master = parent
@@ -214,7 +214,7 @@
SEND_SIGNAL(master, COMSIG_VORE_EXPEL_ALL, TRUE, TRUE)
/datum/component/vore/proc/add_belly(mob/living/source, obj/vore_belly/gut)
- RegisterSignal(gut, list(COMSIG_VORE_UPDATE_PANEL), .proc/update_vore_panel)
+ RegisterSignal(gut, list(COMSIG_VORE_UPDATE_PANEL),PROC_REF(update_vore_panel))
vore_organs |= gut
/datum/component/vore/proc/remove_belly(mob/living/source, obj/vore_belly/gut)
@@ -390,7 +390,7 @@
if(!SEND_SIGNAL(living_pred, COMSIG_VORE_CAN_BE_FED_PREY))
to_chat(master, span_alert("[living_pred] would prefer not to be fed!"))
return FALSE // they cont want to eat em
- INVOKE_ASYNC(src, .proc/feed_prey_to_predator, living_pred, movable_prey)
+ INVOKE_ASYNC(src,PROC_REF(feed_prey_to_predator), living_pred, movable_prey)
if(VORETYPE_FEED_US_TO_PRED)
if(!master.Adjacent(living_pred))
to_chat(master, span_alert("You are too far away from [living_pred]!"))
@@ -408,7 +408,7 @@
if(!SEND_SIGNAL(living_pred, COMSIG_VORE_CAN_BE_FED_PREY))
to_chat(master, span_alert("[living_pred] would prefer not to be fed prey!"))
return FALSE // they cont want to eat em
- INVOKE_ASYNC(src, .proc/feed_self_to_other, living_pred)
+ INVOKE_ASYNC(src,PROC_REF(feed_self_to_other), living_pred)
if(VORETYPE_EAT_PREY)
if(!master.Adjacent(movable_prey))
to_chat(master, span_alert("You are too far away from [movable_prey]!"))
@@ -423,7 +423,7 @@
if(!can_eat()) // just in case
to_chat(master, span_alert("You can't eat [movable_prey] right now!"))
return FALSE
- INVOKE_ASYNC(src, .proc/devour_prey, movable_prey)
+ INVOKE_ASYNC(src,PROC_REF(devour_prey), movable_prey)
return TRUE
/datum/component/vore/proc/devour_prey(atom/movable/movable_prey)
@@ -622,7 +622,7 @@
to_chat(probably_master, span_alert("Okay! See you on the other side!"))
qdel(master)
else
- INVOKE_ASYNC(src, .proc/you_died)
+ INVOKE_ASYNC(src,PROC_REF(you_died))
if("Fall out")
to_chat(probably_master, span_alert("Ejecting your corpse!"))
SEND_SIGNAL(master.loc, COMSIG_BELLY_EXPEL_SPECIFIC, master)
diff --git a/code/modules/vore/eating/vorepanel.dm b/code/modules/vore/eating/vorepanel.dm
index ece38384151..94595e534bb 100644
--- a/code/modules/vore/eating/vorepanel.dm
+++ b/code/modules/vore/eating/vorepanel.dm
@@ -32,7 +32,7 @@
/datum/vore_look/New(mob/living/new_host)
if(istype(new_host))
host = new_host
- RegisterSignal(host, COMSIG_PARENT_QDELETING, .proc/disown)
+ RegisterSignal(host, COMSIG_PARENT_QDELETING,PROC_REF(disown))
. = ..()
/datum/vore_look/Destroy()
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index 5c3d1092e4a..439a15b91bd 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -64,7 +64,7 @@
not even death can stop, you will rise again!")
var/revive_time = rand(revive_time_min, revive_time_max)
var/flags = TIMER_STOPPABLE
- timer_id = addtimer(CALLBACK(src, .proc/zombify), revive_time, flags)
+ timer_id = addtimer(CALLBACK(src,PROC_REF(zombify)), revive_time, flags)
/obj/item/organ/zombie_infection/proc/zombify()
timer_id = null
diff --git a/config/resources.txt b/config/resources.txt
index f742419f101..4648b5cb893 100644
--- a/config/resources.txt
+++ b/config/resources.txt
@@ -4,7 +4,7 @@
# To use this, the compile option PRELOAD_RSC must be set to 0 to keep byond from preloading resources
#EXTERNAL_RSC_URLS http://tgstation13.download/byond/tgstationv2.zip
-EXTERNAL_RSC_URLS http://resources.coyotebayou.com/coyotebayou-rsc-2022-12-6.zip
+#EXTERNAL_RSC_URLS http://resources.coyotebayou.com/coyotebayou-rsc-2022-12-6.zip
########################
# Browser Asset Config #
diff --git a/dependencies.sh b/dependencies.sh
index 7b314c222d7..1327545a0d5 100644
--- a/dependencies.sh
+++ b/dependencies.sh
@@ -4,8 +4,8 @@
#Final authority on what's required to fully build the project
# byond version
-export BYOND_MAJOR=514
-export BYOND_MINOR=1571
+export BYOND_MAJOR=515
+export BYOND_MINOR=1633
#rust_g git tag
export RUST_G_VERSION=0.5.0
@@ -15,7 +15,7 @@ export NODE_VERSION=18
export NODE_VERSION_PRECISE=18.13.0
# SpacemanDMM git tag
-export SPACEMAN_DMM_VERSION=suite-1.7.1
+export SPACEMAN_DMM_VERSION=suite-1.8
# Python version for mapmerge and other tools
export PYTHON_VERSION=3.7.9
diff --git a/fortune13.dme b/fortune13.dme
index a95330b8629..0196f6d402f 100644
--- a/fortune13.dme
+++ b/fortune13.dme
@@ -15,6 +15,7 @@
// BEGIN_INCLUDE
#include "_maps\_basemap.dm"
+#include "code\__byond_version_compat.dm"
#include "code\_compile_options.dm"
#include "code\world.dm"
#include "code\__DEFINES\_auxtools.dm"
diff --git a/modular_citadel/code/datums/components/souldeath.dm b/modular_citadel/code/datums/components/souldeath.dm
index ab45210a466..2860bd4dad2 100644
--- a/modular_citadel/code/datums/components/souldeath.dm
+++ b/modular_citadel/code/datums/components/souldeath.dm
@@ -6,13 +6,13 @@
/datum/component/souldeath/Initialize()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/unequip)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(unequip))
/datum/component/souldeath/proc/equip(datum/source, mob/living/equipper, slot)
if(!slot || equip_slot == slot)
wearer = equipper
- RegisterSignal(wearer, COMSIG_MOB_DEATH, .proc/die, TRUE)
+ RegisterSignal(wearer, COMSIG_MOB_DEATH,PROC_REF(die), TRUE)
signal = TRUE
else
if(signal)
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index b1006567384..9d8ec803448 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -128,8 +128,8 @@
master = get_mob_by_key(enthrallID)
//if(M.ckey == enthrallID)
// owner.remove_status_effect(src)//At the moment, a user can enthrall themselves, toggle this back in if that should be removed.
- RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist) //Do resistance calc if resist is pressed#
- RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/owner_hear)
+ RegisterSignal(owner, COMSIG_LIVING_RESIST,PROC_REF(owner_resist)) //Do resistance calc if resist is pressed#
+ RegisterSignal(owner, COMSIG_MOVABLE_HEAR,PROC_REF(owner_hear))
mental_capacity = 500 - M.getOrganLoss(ORGAN_SLOT_BRAIN)//It's their brain!
lewd = (owner.client?.prefs.cit_toggles & HYPNO) && (master.client?.prefs.cit_toggles & HYPNO)
var/message = "[(lewd ? "I am a good pet for [enthrallGender]." : "[master] is a really inspirational person!")]"
@@ -484,14 +484,14 @@
//Speak (Forces player to talk)
if (lowertext(customTriggers[trigger][1]) == "speak")//trigger2
var/saytext = "Your mouth moves on it's own before you can even catch it."
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, span_notice("[saytext]")), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, span_notice("[saytext]")), 5)
addtimer(CALLBACK(C, /atom/movable/proc/say, "[customTriggers[trigger][2]]"), 5)
log_reagent("FERMICHEM: MKULTRA: [owner] ckey: [owner.key] has been forced to say: \"[customTriggers[trigger][2]]\" from previous trigger.")
//Echo (repeats message!) allows customisation, but won't display var calls! Defaults to hypnophrase.
else if (lowertext(customTriggers[trigger][1]) == "echo")//trigger2
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "[customTriggers[trigger][2]]"), 5)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(to_chat), C, "[customTriggers[trigger][2]]"), 5)
//(to_chat(owner, "[customTriggers[trigger][2]]"))//trigger3
//Shocking truth!
diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm
index bce548169b7..fe251c6cfa1 100644
--- a/modular_citadel/code/modules/client/loadout/head.dm
+++ b/modular_citadel/code/modules/client/loadout/head.dm
@@ -473,7 +473,7 @@
"NCR Trooper",
)*/
-datum/gear/head/steelpot_bandolier
+/datum/gear/head/steelpot_bandolier
name = "NCR bandolier helmet"
path = /obj/item/clothing/head/f13/ncr/steelpot_bandolier
subcategory = LOADOUT_SUBCATEGORY_HEAD_HELMETS
diff --git a/modular_citadel/code/modules/clothing/trek.dm b/modular_citadel/code/modules/clothing/trek.dm
index 35080a789ad..e8d2452687c 100644
--- a/modular_citadel/code/modules/clothing/trek.dm
+++ b/modular_citadel/code/modules/clothing/trek.dm
@@ -69,27 +69,27 @@
armor = ARMOR_VALUE_LIGHT
var/unbuttoned = 0
- verb/toggle()
- set name = "Toggle coat buttons"
- set category = "Object"
- set src in usr
-
- var/mob/living/L = usr
- if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE))
- return FALSE
-
- switch(unbuttoned)
- if(0)
- icon_state = "[initial(icon_state)]_open"
- item_state = "[initial(item_state)]_open"
- unbuttoned = 1
- to_chat(usr,"You unbutton the coat.")
- if(1)
- icon_state = "[initial(icon_state)]"
- item_state = "[initial(item_state)]"
- unbuttoned = 0
- to_chat(usr,"You button up the coat.")
- usr.update_inv_wear_suit()
+/obj/item/clothing/suit/storage/fluff/fedcoat/verb/toggle()
+ set name = "Toggle coat buttons"
+ set category = "Object"
+ set src in usr
+
+ var/mob/living/L = usr
+ if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE))
+ return FALSE
+
+ switch(unbuttoned)
+ if(0)
+ icon_state = "[initial(icon_state)]_open"
+ item_state = "[initial(item_state)]_open"
+ unbuttoned = 1
+ to_chat(usr,"You unbutton the coat.")
+ if(1)
+ icon_state = "[initial(icon_state)]"
+ item_state = "[initial(item_state)]"
+ unbuttoned = 0
+ to_chat(usr,"You button up the coat.")
+ usr.update_inv_wear_suit()
//Variants
/obj/item/clothing/suit/storage/fluff/fedcoat/medsci
diff --git a/modular_citadel/code/modules/mentor/mentorhelp.dm b/modular_citadel/code/modules/mentor/mentorhelp.dm
index d3be97f4c90..f19bb711909 100644
--- a/modular_citadel/code/modules/mentor/mentorhelp.dm
+++ b/modular_citadel/code/modules/mentor/mentorhelp.dm
@@ -8,7 +8,7 @@
//remove out mentorhelp verb temporarily to prevent spamming of mentors.
remove_verb(src, /client/verb/mentorhelp)
- addtimer(CALLBACK(GLOBAL_PROC, /proc/add_verb, src, /client/verb/mentorhelp), 30 SECONDS)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(add_verb), src, /client/verb/mentorhelp), 30 SECONDS)
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg || !mob)
diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
index e14fccc3a04..6446aece5f4 100644
--- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -2,7 +2,7 @@
The Recolourable Energy Gun
*//////////////////////////////////////////////////////////////////////////////////////////////
-obj/item/gun/energy/e_gun/cx
+/obj/item/gun/energy/e_gun/cx
name = "\improper CX Model D Energy Gun"
desc = "An overpriced hybrid energy gun with two settings: disable, and kill. Manufactured by CX Armories. Has a polychromic coating."
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
@@ -14,18 +14,18 @@ obj/item/gun/energy/e_gun/cx
flight_y_offset = 10
var/body_color = "#252528"
-obj/item/gun/energy/e_gun/cx/ComponentInitialize()
+/obj/item/gun/energy/e_gun/cx/ComponentInitialize()
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
-obj/item/gun/energy/e_gun/cx/update_overlays()
+/obj/item/gun/energy/e_gun/cx/update_overlays()
. = ..()
var/mutable_appearance/body_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "cxegun_body")
if(body_color)
body_overlay.color = body_color
. += body_overlay
-obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
+/obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
. = ..()
if(!in_range(src, user)) //Basic checks to prevent abuse
return
@@ -39,7 +39,7 @@ obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
update_icon()
-obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
+/obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(isinhands)
var/mutable_appearance/body_inhand = mutable_appearance(icon_file, "cxe_body")
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index 826c6a67a6d..b194c723cc5 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -59,7 +59,7 @@
N.nanite_volume += -10*cached_purity
..()
-datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
+/datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
for(var/active_obj in react_objs)
if(O == active_obj)
return
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 261e342c2d8..499b1b80a5a 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -349,7 +349,7 @@
RateUpLim = 15
FermiChem = TRUE
-datum/chemical_reaction/fermi/eigenstate
+/datum/chemical_reaction/fermi/eigenstate
name = "Eigenstasium"
id = /datum/reagent/fermi/eigenstate
results = list(/datum/reagent/fermi/eigenstate = 1)
diff --git a/modular_citadel/code/modules/reagents/objects/clothes.dm b/modular_citadel/code/modules/reagents/objects/clothes.dm
index 04f7fa513a9..992c416b940 100644
--- a/modular_citadel/code/modules/reagents/objects/clothes.dm
+++ b/modular_citadel/code/modules/reagents/objects/clothes.dm
@@ -38,14 +38,14 @@
/obj/item/clothing/head/hattip/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_HEAD)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY,PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
/obj/item/clothing/head/hattip/dropped(mob/M)
. = ..()
UnregisterSignal(M, COMSIG_MOB_SAY)
- addtimer(CALLBACK(src, .proc/root_and_toot), 200)
+ addtimer(CALLBACK(src,PROC_REF(root_and_toot)), 200)
/obj/item/clothing/head/hattip/proc/root_and_toot()
if(QDELETED(src) || isnull(loc))
diff --git a/modular_coyote/code/game/objects/structures/firebow.dm b/modular_coyote/code/game/objects/structures/firebow.dm
index 93da9db6eca..baf2e78a92b 100644
--- a/modular_coyote/code/game/objects/structures/firebow.dm
+++ b/modular_coyote/code/game/objects/structures/firebow.dm
@@ -70,7 +70,7 @@
/obj/item/firebow/proc/StartBurning(mob/user)
cinder = TRUE
heat = 1500
- addtimer(CALLBACK(src, .proc/Extinguish, user), burnLength)
+ addtimer(CALLBACK(src,PROC_REF(Extinguish), user), burnLength)
UpdateIcon()
/obj/item/firebow/proc/Extinguish(mob/user)
diff --git a/modular_coyote/code/game/objects/structures/sacredwell.dm b/modular_coyote/code/game/objects/structures/sacredwell.dm
index c0c8e7186ae..5c459a72ab3 100644
--- a/modular_coyote/code/game/objects/structures/sacredwell.dm
+++ b/modular_coyote/code/game/objects/structures/sacredwell.dm
@@ -236,7 +236,7 @@ GLOBAL_LIST_EMPTY(sacred_well_items)
if(debug)
say("cooldown started!!")
set_light(1, -1, "#f9ff48")
- addtimer(CALLBACK(src, .proc/end_cooldown), 1.5 MINUTES)
+ addtimer(CALLBACK(src,PROC_REF(end_cooldown)), 1.5 MINUTES)
/obj/structure/sacredwell/proc/end_cooldown() //might need to fiddle w/ this......
if(debug)
diff --git a/modular_coyote/code/mailbird.dm b/modular_coyote/code/mailbird.dm
index d88154254b4..688bdab3152 100644
--- a/modular_coyote/code/mailbird.dm
+++ b/modular_coyote/code/mailbird.dm
@@ -82,9 +82,9 @@
var/delayRespond = rand(2,4) SECONDS
var/delayAnim = delayRespond + rand(1,2) SECONDS
var/delayQuery = delayAnim + 1.5 SECONDS
- addtimer(CALLBACK(src, .proc/respond), delayRespond)
- addtimer(CALLBACK(src, .proc/arrive), delayAnim)
- addtimer(CALLBACK(src, .proc/queryCaller), delayQuery)
+ addtimer(CALLBACK(src,PROC_REF(respond)), delayRespond)
+ addtimer(CALLBACK(src,PROC_REF(arrive)), delayAnim)
+ addtimer(CALLBACK(src,PROC_REF(queryCaller)), delayQuery)
/obj/effect/mailbird/proc/respond()
playsound(src.loc, 'modular_coyote/sound/mobsounds/crowrespond.ogg', 50, FALSE) //Magic numbers bad. Oh well. 50 is volume (average) and FALSE is for whether or not playsound should go through walls.
@@ -152,7 +152,7 @@
qdel(src)
return
component.unsetTarget()
- addtimer(CALLBACK(src, .proc/deliver), rand(60, 90) SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(deliver)), rand(60, 90) SECONDS)
/obj/effect/mailbird/proc/deliver()
icon_state = "crow-glide"
@@ -176,7 +176,7 @@
component.changeTarget(following)
pixel_y = 60
pixel_x = -100
- addtimer(CALLBACK(src, .proc/dropAndLeave, success), 0.5 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(dropAndLeave), success), 0.5 SECONDS)
playsound(src.loc, 'modular_coyote/sound/mobsounds/crowrespond.ogg', 50, FALSE)
animate(src, pixel_y = 30, pixel_x = 0, time = 0.5 SECONDS, flags = ANIMATION_PARALLEL)
animate(src, alpha = 255, time = 0.1 SECONDS, flags = ANIMATION_PARALLEL)
@@ -187,7 +187,7 @@
to_chat(following, span_info("A crow swoops in and gently deposits \a [mail] at your feet."))
else
to_chat(following, span_warning("The crow returns \the [mail], unable to find someone to deliver to."))
- addtimer(CALLBACK(src, .proc/fadeAway), 0.4 SECONDS)
+ addtimer(CALLBACK(src,PROC_REF(fadeAway)), 0.4 SECONDS)
animate(src, pixel_y = 60, pixel_x = 100, time = 0.5 SECONDS)
/obj/effect/mailbird/proc/fadeAway()
@@ -206,7 +206,7 @@
return COMPONENT_INCOMPATIBLE
target = newTarget
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED,PROC_REF(move_react))
/datum/component/mailbird_movement/proc/unsetTarget()
UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
@@ -217,7 +217,7 @@
return COMPONENT_INCOMPATIBLE
unsetTarget()
target = newTarget
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED,PROC_REF(move_react))
/datum/component/mailbird_movement/proc/move_react(atom/moved, atom/oldloc, direction)
var/atom/movable/A = parent
diff --git a/modular_coyote/code/modules/mapping/ambient_lighting.dm b/modular_coyote/code/modules/mapping/ambient_lighting.dm
index 3ddc081c8a6..fa6dda96a94 100644
--- a/modular_coyote/code/modules/mapping/ambient_lighting.dm
+++ b/modular_coyote/code/modules/mapping/ambient_lighting.dm
@@ -1,7 +1,7 @@
/area/f13/ambientlighting/LateInitialize()
. = ..()
- RegisterSignal(src, COMSIG_EXIT_AREA, .proc/HandleExitLighting)
- RegisterSignal(src, COMSIG_ENTER_AREA, .proc/HandleEnterLighting)
+ RegisterSignal(src, COMSIG_EXIT_AREA,PROC_REF(HandleExitLighting))
+ RegisterSignal(src, COMSIG_ENTER_AREA,PROC_REF(HandleEnterLighting))
/area/f13/ambientlighting/proc/HandleExitLighting(datum/source, mob/user)
if(!iscarbon(user))
diff --git a/modular_coyote/code/modules/mechanical_erp/merp_component.dm b/modular_coyote/code/modules/mechanical_erp/merp_component.dm
index 3c3767707c4..ed0b5424ec6 100644
--- a/modular_coyote/code/modules/mechanical_erp/merp_component.dm
+++ b/modular_coyote/code/modules/mechanical_erp/merp_component.dm
@@ -53,14 +53,14 @@
/datum/component/merp/Initialize()
if(!SSmerp.should_merp(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_MOB_CLIENT_LOGIN), .proc/setup_merp)
- RegisterSignal(parent, list(COMSIG_MERP_GIVE_MERP_INITIATOR), .proc/give_initiator)
- RegisterSignal(parent, list(COMSIG_MERP_GIVE_HAND_BIT), .proc/give_merp_item)
- RegisterSignal(parent, list(COMSIG_MERP_DO_PLAP), .proc/plap)
- RegisterSignal(parent, list(COMSIG_MERP_GET_PLAPPED), .proc/get_plapped)
- RegisterSignal(parent, list(COMSIG_MERP_KILL_COMBO), .proc/combo_died) // ):
- RegisterSignal(parent, list(COMSIG_MERP_PLAP_EXPIRED), .proc/plap_died) // ):
- RegisterSignal(parent, list(COMSIG_MERP_GET_OTHER_COMBOS), .proc/get_combos)
+ RegisterSignal(parent, list(COMSIG_MOB_CLIENT_LOGIN),PROC_REF(setup_merp))
+ RegisterSignal(parent, list(COMSIG_MERP_GIVE_MERP_INITIATOR),PROC_REF(give_initiator))
+ RegisterSignal(parent, list(COMSIG_MERP_GIVE_HAND_BIT),PROC_REF(give_merp_item))
+ RegisterSignal(parent, list(COMSIG_MERP_DO_PLAP),PROC_REF(plap))
+ RegisterSignal(parent, list(COMSIG_MERP_GET_PLAPPED),PROC_REF(get_plapped))
+ RegisterSignal(parent, list(COMSIG_MERP_KILL_COMBO),PROC_REF(combo_died)) // ):
+ RegisterSignal(parent, list(COMSIG_MERP_PLAP_EXPIRED),PROC_REF(plap_died)) // ):
+ RegisterSignal(parent, list(COMSIG_MERP_GET_OTHER_COMBOS),PROC_REF(get_combos))
START_PROCESSING(SSmerp, src)
setup_merp()
diff --git a/modular_coyote/code/modules/misc_patches.dm b/modular_coyote/code/modules/misc_patches.dm
index c72a4b7fede..4002c4a7f26 100644
--- a/modular_coyote/code/modules/misc_patches.dm
+++ b/modular_coyote/code/modules/misc_patches.dm
@@ -14,7 +14,7 @@
/obj/item/reagent_containers/food/drinks/Initialize(mapload)
. = ..()
- RegisterSignal(src, COMSIG_ATOM_LICKED, .proc/LapDrink)
+ RegisterSignal(src, COMSIG_ATOM_LICKED,PROC_REF(LapDrink))
/obj/item/reagent_containers/food/drinks/Destroy()
diff --git a/modular_coyote/code/modules/regeneration/sleepingpart/regenerate_sleeping.dm b/modular_coyote/code/modules/regeneration/sleepingpart/regenerate_sleeping.dm
index 28b75c70617..788c1c03cbc 100644
--- a/modular_coyote/code/modules/regeneration/sleepingpart/regenerate_sleeping.dm
+++ b/modular_coyote/code/modules/regeneration/sleepingpart/regenerate_sleeping.dm
@@ -27,7 +27,7 @@
/datum/component/sleeping_regeneration/RegisterWithParent()
. = ..()
var/mob/living/M = parent
- RegisterSignal(M, COMSIG_MOB_SLEEPING, .proc/OnSleep)
+ RegisterSignal(M, COMSIG_MOB_SLEEPING,PROC_REF(OnSleep))
// We need to unregister it from calling when the component is removed, this is just because it can be a permanent/stacking effect. We dont want that.
/datum/component/sleeping_regeneration/UnregisterFromParent()
diff --git a/modular_coyote/eris/code/gun_firemode.dm b/modular_coyote/eris/code/gun_firemode.dm
index ad5ba6ff299..545d2fa7b06 100644
--- a/modular_coyote/eris/code/gun_firemode.dm
+++ b/modular_coyote/eris/code/gun_firemode.dm
@@ -198,7 +198,7 @@
fire_type_default = GUN_FIREMODE_AUTO
shoot_delay_default = GUN_FIRE_RATE_200
-datum/firemode/automatic/rpm250
+/datum/firemode/automatic/rpm250
name = "Fully Automatic"
desc = "Automatic - 250 RPM."
fire_type_default = GUN_FIREMODE_AUTO
diff --git a/modular_coyote/eris/code/living_recoil.dm b/modular_coyote/eris/code/living_recoil.dm
index 22945b4cef6..0898ac963d1 100644
--- a/modular_coyote/eris/code/living_recoil.dm
+++ b/modular_coyote/eris/code/living_recoil.dm
@@ -55,7 +55,7 @@ mob/proc/handle_movement_recoil() // Used in movement/mob.dm
G.check_safety_cursor(src)
if(recoil > 0)
- recoil_reduction_timer = addtimer(CALLBACK(src, .proc/calc_recoil), 0.1 SECONDS, TIMER_STOPPABLE)
+ recoil_reduction_timer = addtimer(CALLBACK(src,PROC_REF(calc_recoil)), 0.1 SECONDS, TIMER_STOPPABLE)
else
if(!istype(G))
remove_cursor()
diff --git a/modular_coyote/eris/code/mods/_upgrades.dm b/modular_coyote/eris/code/mods/_upgrades.dm
index 8129849be30..e6efca0fcd0 100644
--- a/modular_coyote/eris/code/mods/_upgrades.dm
+++ b/modular_coyote/eris/code/mods/_upgrades.dm
@@ -39,10 +39,10 @@
var/list/weapon_upgrades = list() //variable name(string) -> num
/datum/component/item_upgrade/RegisterWithParent()
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ_NOHIT, .proc/attempt_install)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
- RegisterSignal(parent, COMSIG_UPGRADE_REMOVE, .proc/uninstall)
- RegisterSignal(parent, COMSIG_GET_UPGRADES, .proc/get_upgrades)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ_NOHIT,PROC_REF(attempt_install))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(on_examine))
+ RegisterSignal(parent, COMSIG_UPGRADE_REMOVE,PROC_REF(uninstall))
+ RegisterSignal(parent, COMSIG_GET_UPGRADES,PROC_REF(get_upgrades))
/datum/component/item_upgrade/proc/attempt_install(datum/source, atom/movable/target, mob/living/user)
return can_apply(target, user) && apply(target, user)
@@ -104,8 +104,8 @@
var/obj/item/I = parent
I.forceMove(A)
A.item_upgrades.Add(I)
- RegisterSignal(A, COMSIG_UPGRADE_APPVAL, .proc/apply_values)
- RegisterSignal(A, COMSIG_UPGRADE_ADDVAL, .proc/add_values)
+ RegisterSignal(A, COMSIG_UPGRADE_APPVAL,PROC_REF(apply_values))
+ RegisterSignal(A, COMSIG_UPGRADE_ADDVAL,PROC_REF(add_values))
A.AddComponent(/datum/component/upgrade_removal)
A.refresh_upgrades()
return TRUE
@@ -452,7 +452,7 @@
dupe_mode = COMPONENT_DUPE_UNIQUE
/datum/component/upgrade_removal/RegisterWithParent()
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attempt_uninstall)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(attempt_uninstall))
/datum/component/upgrade_removal/UnregisterFromParent()
UnregisterSignal(parent, COMSIG_PARENT_ATTACKBY)
diff --git a/modular_sand/code/datums/components/autoplapper.dm b/modular_sand/code/datums/components/autoplapper.dm
index 989a514138d..d099bd51a75 100644
--- a/modular_sand/code/datums/components/autoplapper.dm
+++ b/modular_sand/code/datums/components/autoplapper.dm
@@ -73,8 +73,8 @@
else
to_chat(pLapper, span_notice("First action recorded! Perform it again to start looping that action!"))
plap_listening = TRUE
- RegisterSignal(pLapper, COMSIG_SPLURT_INTERACTION_PITCHED, .proc/check_finalized) // quietly wait for anotehr plap of our kind
- plap_ignore_timer = addtimer(CALLBACK(src, .proc/give_up), SSinteractions.max_autoplap_interval, TIMER_CLIENT_TIME | TIMER_STOPPABLE)
+ RegisterSignal(pLapper, COMSIG_SPLURT_INTERACTION_PITCHED,PROC_REF(check_finalized)) // quietly wait for anotehr plap of our kind
+ plap_ignore_timer = addtimer(CALLBACK(src,PROC_REF(give_up)), SSinteractions.max_autoplap_interval, TIMER_CLIENT_TIME | TIMER_STOPPABLE)
SEND_SIGNAL(pLapper, COMSIG_SPLURT_ADD_AUTOPLAPPER, src)
/datum/autoplapper/Destroy(force, ...)
diff --git a/modular_sand/code/datums/components/container_item/container_item.dm b/modular_sand/code/datums/components/container_item/container_item.dm
index fda012cb0ea..872a710e202 100644
--- a/modular_sand/code/datums/components/container_item/container_item.dm
+++ b/modular_sand/code/datums/components/container_item/container_item.dm
@@ -3,7 +3,7 @@
/datum/component/container_item/Initialize()
. = ..()
- RegisterSignal(parent, COMSIG_CONTAINER_TRY_ATTACH, .proc/try_attach)
+ RegisterSignal(parent, COMSIG_CONTAINER_TRY_ATTACH,PROC_REF(try_attach))
/// Called when parent is added to the container.
/datum/component/container_item/proc/try_attach(datum/source, atom/container, mob/user)
diff --git a/modular_sand/code/datums/components/glory_kill.dm b/modular_sand/code/datums/components/glory_kill.dm
index 94267c23c08..aee9f5e9340 100644
--- a/modular_sand/code/datums/components/glory_kill.dm
+++ b/modular_sand/code/datums/components/glory_kill.dm
@@ -41,10 +41,10 @@
/datum/component/glory_kill/RegisterWithParent()
. = ..()
- RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/glory_kill)
- RegisterSignal(parent, COMSIG_MOB_APPLY_DAMAGE, .proc/health_modified)
- RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/on_death)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examined)
+ RegisterSignal(parent, COMSIG_CLICK_ALT,PROC_REF(glory_kill))
+ RegisterSignal(parent, COMSIG_MOB_APPLY_DAMAGE,PROC_REF(health_modified))
+ RegisterSignal(parent, COMSIG_MOB_DEATH,PROC_REF(on_death))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE,PROC_REF(examined))
/datum/component/glory_kill/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_CLICK_ALT, COMSIG_MOB_APPLY_DAMAGE, COMSIG_MOB_DEATH, COMSIG_MOB_EXAMINATE))
diff --git a/modular_sand/code/datums/components/interaction_menu_granter.dm b/modular_sand/code/datums/components/interaction_menu_granter.dm
index 0b49b2d91d3..34e4e214e19 100644
--- a/modular_sand/code/datums/components/interaction_menu_granter.dm
+++ b/modular_sand/code/datums/components/interaction_menu_granter.dm
@@ -69,11 +69,11 @@
/datum/component/interaction_menu_granter/RegisterWithParent()
. = ..()
- RegisterSignal(parent, COMSIG_CLICK_CTRL_SHIFT, .proc/open_menu)
- RegisterSignal(parent, COMSIG_SPLURT_REMOVE_AUTOPLAPPER, .proc/kill_autoplapper)
- RegisterSignal(parent, COMSIG_SPLURT_ADD_AUTOPLAPPER, .proc/confirm_autoplap)
- RegisterSignal(parent, COMSIG_SPLURT_SOMEONE_CUMMED, .proc/stop_all_autoplappers)
- RegisterSignal(parent, COMSIG_SPLURT_I_CAME, .proc/stop_all_autoplappers)
+ RegisterSignal(parent, COMSIG_CLICK_CTRL_SHIFT,PROC_REF(open_menu))
+ RegisterSignal(parent, COMSIG_SPLURT_REMOVE_AUTOPLAPPER,PROC_REF(kill_autoplapper))
+ RegisterSignal(parent, COMSIG_SPLURT_ADD_AUTOPLAPPER,PROC_REF(confirm_autoplap))
+ RegisterSignal(parent, COMSIG_SPLURT_SOMEONE_CUMMED,PROC_REF(stop_all_autoplappers))
+ RegisterSignal(parent, COMSIG_SPLURT_I_CAME,PROC_REF(stop_all_autoplappers))
/datum/component/interaction_menu_granter/Destroy(force, ...)
weaktarget = null
@@ -457,7 +457,7 @@
/datum/component/interaction_menu_granter/proc/queue_save()
if(savetimer)
deltimer(savetimer)
- savetimer = addtimer(CALLBACK(src, .proc/save_prefs), 4 SECONDS, TIMER_STOPPABLE) // save in 4 seconds
+ savetimer = addtimer(CALLBACK(src,PROC_REF(save_prefs)), 4 SECONDS, TIMER_STOPPABLE) // save in 4 seconds
/datum/component/interaction_menu_granter/proc/save_prefs()
var/mob/living/self = parent
diff --git a/modular_sand/code/datums/components/riding.dm b/modular_sand/code/datums/components/riding.dm
index 9c486d38f48..00d088c0fdf 100644
--- a/modular_sand/code/datums/components/riding.dm
+++ b/modular_sand/code/datums/components/riding.dm
@@ -1,6 +1,6 @@
/datum/component/riding/human/Initialize()
. = ..()
- RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/update_dir)
+ RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE,PROC_REF(update_dir))
/datum/component/riding/human/proc/update_dir(mob/source, dir, newdir)
var/mob/living/carbon/human/H = source
diff --git a/modular_sand/code/datums/components/storage/concrete/dresser.dm b/modular_sand/code/datums/components/storage/concrete/dresser.dm
index 03233081ef2..a3dc1bbdb2c 100644
--- a/modular_sand/code/datums/components/storage/concrete/dresser.dm
+++ b/modular_sand/code/datums/components/storage/concrete/dresser.dm
@@ -9,8 +9,8 @@
/datum/component/storage/concrete/dresser/Initialize()
if(..())
return ELEMENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/signal_show_attempt, TRUE)
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW, .proc/signal_show_attempt, TRUE)
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND,PROC_REF(signal_show_attempt), TRUE)
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW,PROC_REF(signal_show_attempt), TRUE)
/datum/component/storage/concrete/dresser/user_show_to_mob(mob/M, force, trigger_on_found)
. = ..()
diff --git a/modular_sand/code/datums/elements/holder_micro.dm b/modular_sand/code/datums/elements/holder_micro.dm
index c395706a937..536ee82a843 100644
--- a/modular_sand/code/datums/elements/holder_micro.dm
+++ b/modular_sand/code/datums/elements/holder_micro.dm
@@ -3,9 +3,9 @@
/datum/element/mob_holder/micro/Attach(datum/target, worn_state, alt_worn, right_hand, left_hand, inv_slots = NONE, proctype, escape_on_find)
. = ..()
- RegisterSignal(target, COMSIG_CLICK_ALT, .proc/mob_try_pickup_micro, TRUE)
- RegisterSignal(target, COMSIG_MICRO_PICKUP_FEET, .proc/mob_pickup_micro_feet)
- RegisterSignal(target, COMSIG_MOB_RESIZED, .proc/on_resize)
+ RegisterSignal(target, COMSIG_CLICK_ALT,PROC_REF(mob_try_pickup_micro), TRUE)
+ RegisterSignal(target, COMSIG_MICRO_PICKUP_FEET,PROC_REF(mob_pickup_micro_feet))
+ RegisterSignal(target, COMSIG_MOB_RESIZED,PROC_REF(on_resize))
/datum/element/mob_holder/micro/Detach(datum/source, force)
. = ..()
diff --git a/modular_sand/code/datums/elements/skirt_peeking.dm b/modular_sand/code/datums/elements/skirt_peeking.dm
index 426900d7911..ccfba68bbbd 100644
--- a/modular_sand/code/datums/elements/skirt_peeking.dm
+++ b/modular_sand/code/datums/elements/skirt_peeking.dm
@@ -6,8 +6,8 @@
if(!ishuman(peeked))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(peeked, COMSIG_PARENT_EXAMINE, .proc/on_examine)
- RegisterSignal(peeked, COMSIG_PARENT_EXAMINE_MORE, .proc/on_closer_look)
+ RegisterSignal(peeked, COMSIG_PARENT_EXAMINE,PROC_REF(on_examine))
+ RegisterSignal(peeked, COMSIG_PARENT_EXAMINE_MORE,PROC_REF(on_closer_look))
/datum/element/skirt_peeking/proc/can_skirt_peek(mob/living/carbon/human/peeked, mob/peeker)
var/mob/living/living_peeker = peeker
@@ -105,7 +105,7 @@
examine_content += span_purple(string)
// Let's see if we caught them, addtimer so it appears after the peek.
- addtimer(CALLBACK(src, .proc/try_notice, peeked, peeker), 1)
+ addtimer(CALLBACK(src,PROC_REF(try_notice), peeked, peeker), 1)
/// Alright, they've peeked us and everything, did we notice it though?
/datum/element/skirt_peeking/proc/try_notice(mob/living/carbon/human/peeked, mob/living/peeker)
diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/self/cb_does_it_better/coy_head.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/self/cb_does_it_better/coy_head.dm
index 6e6fe0d3cf5..a4d098ede64 100644
--- a/modular_sand/code/datums/interactions/interaction_datums/lewd/self/cb_does_it_better/coy_head.dm
+++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/self/cb_does_it_better/coy_head.dm
@@ -302,7 +302,7 @@
////////////////////
//Good Boy 1A10//
////////////////////
-datum/interaction/lewd/mutual/good_boy
+/datum/interaction/lewd/mutual/good_boy
description = "Partner/Head - Call them a good boy."
simple_sounds = null
require_user_hands = FALSE // yap yap
@@ -328,7 +328,7 @@ datum/interaction/lewd/mutual/good_boy
////////////////////
//Good Girl 1A11//
////////////////////
-datum/interaction/lewd/mutual/good_girl
+/datum/interaction/lewd/mutual/good_girl
description = "Partner/Head - Call them a good girl."
simple_sounds = null
require_user_hands = FALSE // yap yap
@@ -354,7 +354,7 @@ datum/interaction/lewd/mutual/good_girl
////////////////////
//Praise them 1A12//
////////////////////
-datum/interaction/lewd/mutual/praise_them
+/datum/interaction/lewd/mutual/praise_them
description = "Partner/Head - Praise them."
simple_sounds = null
require_user_hands = FALSE // yap yap
@@ -380,7 +380,7 @@ datum/interaction/lewd/mutual/praise_them
////////////////////
//Play with their mouth 1A13//
////////////////////
-datum/interaction/lewd/mutual/mouth_play
+/datum/interaction/lewd/mutual/mouth_play
description = "Partner/Head - Play with their mouth."
simple_sounds = null
require_user_hands = FALSE // yap yap
@@ -406,7 +406,7 @@ datum/interaction/lewd/mutual/mouth_play
////////////////////
//Beg to be bred, FE 1A14//
////////////////////
-datum/interaction/lewd/mutual/nesting_behavior
+/datum/interaction/lewd/mutual/nesting_behavior
description = "Partner/Head - Beg them to breed you, Feminine Edition."
simple_sounds = null
require_user_hands = FALSE // yap yap
@@ -433,7 +433,7 @@ datum/interaction/lewd/mutual/nesting_behavior
////////////////////
//Beg to be bred, ME 1A15//
////////////////////
-datum/interaction/lewd/mutual/nesting_behavior_butt
+/datum/interaction/lewd/mutual/nesting_behavior_butt
description = "Partner/Head - Beg them to breed you, Butt Edition."
simple_sounds = null
require_user_hands = FALSE // yap yap
@@ -459,7 +459,7 @@ datum/interaction/lewd/mutual/nesting_behavior_butt
////////////////////
//Play with their hair 1A16//
////////////////////
-datum/interaction/lewd/mutual/hair_play
+/datum/interaction/lewd/mutual/hair_play
description = "Partner/Head - Play with their hair."
simple_sounds = null
require_user_hands = FALSE // yap yap
diff --git a/modular_sand/code/datums/interactions/interaction_datums/lewd/self/coyote_self_lewdness.dm b/modular_sand/code/datums/interactions/interaction_datums/lewd/self/coyote_self_lewdness.dm
index dc887df8e63..9486ed264f6 100644
--- a/modular_sand/code/datums/interactions/interaction_datums/lewd/self/coyote_self_lewdness.dm
+++ b/modular_sand/code/datums/interactions/interaction_datums/lewd/self/coyote_self_lewdness.dm
@@ -118,7 +118,7 @@
/////////////////
//Squirm Lewdly//
////////////////
-datum/interaction/lewd/self/lewd_squirm
+/datum/interaction/lewd/self/lewd_squirm
description = "Self/Crotch - Squirm lewdly."
require_user_hands = TRUE //True or false, you have to have hands to do whatever this action is.
@@ -142,7 +142,7 @@ datum/interaction/lewd/self/lewd_squirm
////////////////////
//Dirty Talk - Soft//
////////////////////
-datum/interaction/lewd/self/dirtytalksoft
+/datum/interaction/lewd/self/dirtytalksoft
description = "Self/Crotch - Talk dirty (tame)."
simple_sounds = null
require_user_hands = FALSE // yap yap
@@ -188,7 +188,7 @@ datum/interaction/lewd/self/dirtytalksoft
/////////////////
//Rub Clit//
////////////////
-datum/interaction/lewd/self/rub_clit //lewd makes it pink, the name is just what the code calls it. Step 2 on this line. Step 3 is just below it.
+/datum/interaction/lewd/self/rub_clit //lewd makes it pink, the name is just what the code calls it. Step 2 on this line. Step 3 is just below it.
description = "Self/Crotch - Rub your clitoris." //This naming convention is to help players who want to filter functions. In this case its Self, as in, yourSELF, and a function of the 'area' crotch. Then it describes what you're doing to the area.
// Self/Partner for the left hand side.
// Head/Neck/Body/Arms/Stomach/Crotch/Thighs/Legs/Tail for the right hand side.
@@ -224,7 +224,7 @@ datum/interaction/lewd/self/rub_clit //lewd makes it pink, the name is just what
/////////////////
//Jerk Hard/////
////////////////
-datum/interaction/lewd/self/jerk_hard //lewd makes it pink, the name is just what the code calls it. Step 2 on this line. Step 3 is just below it.
+/datum/interaction/lewd/self/jerk_hard //lewd makes it pink, the name is just what the code calls it. Step 2 on this line. Step 3 is just below it.
description = "Self/Crotch - Jerk yourself off hard." //This naming convention is to help players who want to filter functions. In this case its Self, as in, yourSELF, and a function of the 'area' crotch. Then it describes what you're doing to the area.
// Self/Partner for the left hand side.
// Head/Neck/Body/Arms/Stomach/Crotch/Thighs/Legs/Tail for the right hand side.
@@ -265,7 +265,7 @@ datum/interaction/lewd/self/jerk_hard //lewd makes it pink, the name is just wha
//////////////////////////
//Play with own nips/////
////////////////////////
-datum/interaction/lewd/self/nip_play //lewd makes it pink, the name is just what the code calls it. Step 2 on this line. Step 3 is just below it.
+/datum/interaction/lewd/self/nip_play //lewd makes it pink, the name is just what the code calls it. Step 2 on this line. Step 3 is just below it.
description = "Self/Crotch - Play with your nipples." //This naming convention is to help players who want to filter functions. In this case its Self, as in, yourSELF, and a function of the 'area' crotch. Then it describes what you're doing to the area.
// Self/Partner for the left hand side.
// Head/Neck/Body/Arms/Stomach/Crotch/Thighs/Legs/Tail for the right hand side.
@@ -307,7 +307,7 @@ datum/interaction/lewd/self/nip_play //lewd makes it pink, the name is just what
//////////////////////////
//Autofellate/////
////////////////////////
-datum/interaction/lewd/self/autofellate
+/datum/interaction/lewd/self/autofellate
description = "Self/Crotch - Suck yourself off."
simple_sounds = null
require_user_hands = FALSE // yap yap
diff --git a/modular_sand/code/datums/traits/neutral.dm b/modular_sand/code/datums/traits/neutral.dm
index ea574d896b9..e60c83684d6 100644
--- a/modular_sand/code/datums/traits/neutral.dm
+++ b/modular_sand/code/datums/traits/neutral.dm
@@ -48,11 +48,11 @@
/datum/quirk/estrous_active/add()
// Add examine hook
- RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/quirk_examine_estrous_active)
+ RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE,PROC_REF(quirk_examine_estrous_active))
// Add organ change hooks
- RegisterSignal(quirk_holder, COMSIG_MOB_ORGAN_ADD, .proc/update_heat_type)
- RegisterSignal(quirk_holder, COMSIG_MOB_ORGAN_REMOVE, .proc/update_heat_type)
+ RegisterSignal(quirk_holder, COMSIG_MOB_ORGAN_ADD,PROC_REF(update_heat_type))
+ RegisterSignal(quirk_holder, COMSIG_MOB_ORGAN_REMOVE,PROC_REF(update_heat_type))
/datum/quirk/estrous_active/remove()
// Remove signals
diff --git a/modular_sand/code/datums/wires/firealarm.dm b/modular_sand/code/datums/wires/firealarm.dm
index cb8ef5f71ff..08b8ea2f58f 100644
--- a/modular_sand/code/datums/wires/firealarm.dm
+++ b/modular_sand/code/datums/wires/firealarm.dm
@@ -37,7 +37,7 @@
A.detecting = !A.detecting
if(WIRE_FIRE_TRIGGER)
A.alarm()
- addtimer(CALLBACK(A, /obj/machinery/firealarm.proc/reset, wire), 1000)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/firealarm,reset), wire), 1000)
/datum/wires/firealarm/on_cut(index, mend)
var/obj/machinery/firealarm/A = holder
diff --git a/modular_sand/code/game/objects/items/borg_shapeshifter.dm b/modular_sand/code/game/objects/items/borg_shapeshifter.dm
index f9917d3ce79..194e575a27e 100644
--- a/modular_sand/code/game/objects/items/borg_shapeshifter.dm
+++ b/modular_sand/code/game/objects/items/borg_shapeshifter.dm
@@ -136,7 +136,7 @@
"Clown" = image(icon = 'icons/mob/robots.dmi', icon_state = "clown"),
"Syndicate" = image(icon = 'icons/mob/robots.dmi', icon_state = "synd_sec")
))
- var/module_selection = show_radial_menu(R, R , module_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/module_selection = show_radial_menu(R, R , module_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!module_selection)
return FALSE
@@ -145,7 +145,7 @@
var/static/list/standard_icons = sortList(list(
"Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "robot")
))
- var/borg_icon = show_radial_menu(R, R , standard_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , standard_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -171,7 +171,7 @@
wide.pixel_x = -16
med_icons[a] = wide
med_icons = sortList(med_icons)
- var/borg_icon = show_radial_menu(R, R , med_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , med_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -235,7 +235,7 @@
wide.pixel_x = -16
engi_icons[a] = wide
engi_icons = sortList(engi_icons)
- var/borg_icon = show_radial_menu(R, R , engi_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , engi_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -305,7 +305,7 @@
wide.pixel_x = -16
sec_icons[a] = wide
sec_icons = sortList(sec_icons)
- var/borg_icon = show_radial_menu(R, R , sec_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , sec_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -380,7 +380,7 @@
wide.pixel_x = -16
service_icons[a] = wide
service_icons = sortList(service_icons)
- var/borg_icon = show_radial_menu(R, R , service_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , service_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -464,7 +464,7 @@
wide.pixel_x = -16
mining_icons[a] = wide
mining_icons = sortList(mining_icons)
- var/borg_icon = show_radial_menu(R, R , mining_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , mining_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -516,7 +516,7 @@
"Spider" = image(icon = 'modular_citadel/icons/mob/robots.dmi', icon_state = "whitespider"),
"Drake" = image(icon = 'modular_sand/icons/mob/cyborg/drakemech.dmi', icon_state = "drakepeacebox")
))
- var/borg_icon = show_radial_menu(R, R , peace_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , peace_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -540,7 +540,7 @@
var/static/list/clown_icons = sortList(list(
"Default" = image(icon = 'icons/mob/robots.dmi', icon_state = "clown")
))
- var/borg_icon = show_radial_menu(R, R , clown_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , clown_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -555,7 +555,7 @@
"Medical" = image(icon = 'icons/mob/robots.dmi', icon_state = "synd_medical"),
"Assault" = image(icon = 'icons/mob/robots.dmi', icon_state = "synd_sec")
))
- var/borg_icon = show_radial_menu(R, R , syndicatejack_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/borg_icon = show_radial_menu(R, R , syndicatejack_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
if(!borg_icon)
return FALSE
switch(borg_icon)
@@ -632,7 +632,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, signalCache)
- RegisterSignal(user, signalCache, .proc/disrupt)
+ RegisterSignal(user, signalCache,PROC_REF(disrupt))
listeningTo = user
/obj/item/borg_shapeshifter/proc/deactivate(mob/living/silicon/robot/user)
diff --git a/modular_sand/code/game/objects/items/fleshlight.dm b/modular_sand/code/game/objects/items/fleshlight.dm
index b0c2f7c8ad5..78cf0f7d5ec 100644
--- a/modular_sand/code/game/objects/items/fleshlight.dm
+++ b/modular_sand/code/game/objects/items/fleshlight.dm
@@ -666,7 +666,7 @@
playsound(src, 'sound/machines/ping.ogg', 50, FALSE)
to_chat(user, "[P] has been linked up successfully.")
update_portal()
- RegisterSignal(user, COMSIG_PARENT_QDELETING, .proc/drop_out)
+ RegisterSignal(user, COMSIG_PARENT_QDELETING,PROC_REF(drop_out))
else
to_chat(user, "One of these pieces has already been paired.")
else
@@ -710,7 +710,7 @@
to_chat(user, span_notice("The panties are not linked to a portal fleshlight."))
else
update_portal()
- RegisterSignal(user, COMSIG_PARENT_QDELETING, .proc/drop_out)
+ RegisterSignal(user, COMSIG_PARENT_QDELETING,PROC_REF(drop_out))
else
update_portal()
UnregisterSignal(user, COMSIG_PARENT_QDELETING)
diff --git a/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm b/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm
index 945f95424df..8fbbcf14f44 100644
--- a/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/modular_sand/code/modules/clothing/spacesuits/chronosuit.dm
@@ -135,12 +135,12 @@
user.Stun(INFINITY)
animate(user, color = "#00ccee", time = 3)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_2, user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src,PROC_REF(phase_2), user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE)
/obj/item/clothing/suit/space/chronos/proc/phase_2(mob/living/carbon/human/user, turf/to_turf, phase_in_ds)
if(teleporting && activated && user)
animate(user, alpha = 0, time = 2)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_3, user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src,PROC_REF(phase_3), user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
@@ -148,14 +148,14 @@
if(teleporting && activated && user)
user.forceMove(to_turf)
animate(user, alpha = 255, time = phase_in_ds)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_4, user, to_turf), phase_in_ds, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src,PROC_REF(phase_4), user, to_turf), phase_in_ds, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
/obj/item/clothing/suit/space/chronos/proc/phase_4(mob/living/carbon/human/user, turf/to_turf)
if(teleporting && activated && user)
animate(user, color = "#ffffff", time = 3)
- phase_timer_id = addtimer(CALLBACK(src, .proc/finish_chronowalk, user, to_turf), 3, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src,PROC_REF(finish_chronowalk), user, to_turf), 3, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
diff --git a/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm b/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm
index c6190c83949..e9c38bdcac8 100644
--- a/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm
@@ -108,9 +108,9 @@
if(prob(explodioprobemp))
playsound(src.loc, 'sound/effects/fuse.ogg', 60, 1, 10)
visible_message("The power module on the [src] begins to smoke, glowing with an alarming warmth! Get away from it, now!")
- addtimer(CALLBACK(src, .proc/detonate),50)
+ addtimer(CALLBACK(src,PROC_REF(detonate),50))
else
- addtimer(CALLBACK(src, .proc/revivemessage), rebootdelay)
+ addtimer(CALLBACK(src,PROC_REF(revivemessage)), rebootdelay)
return
/obj/item/clothing/suit/space/hardsuit/powerarmor/proc/revivemessage() //we use this proc to add a timer, so we can have it take a while to boot
diff --git a/modular_sand/code/modules/mining/equipment/kinetic_crusher.dm b/modular_sand/code/modules/mining/equipment/kinetic_crusher.dm
index 7cedccf6ff7..5e351037db6 100644
--- a/modular_sand/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/modular_sand/code/modules/mining/equipment/kinetic_crusher.dm
@@ -75,7 +75,7 @@
/obj/item/crusher_trophy/brokentech/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
. = ..()
if(cooldowntime < world.time)
- INVOKE_ASYNC(src, .proc/invokesmoke, user)
+ INVOKE_ASYNC(src,PROC_REF(invokesmoke), user)
/obj/item/crusher_trophy/brokentech/proc/invokesmoke(mob/living/user)
cooldown = world.time + cooldowntime
@@ -207,7 +207,7 @@
D.fire()
charged = FALSE
update_icon()
- addtimer(CALLBACK(src, .proc/Recharge), charge_time)
+ addtimer(CALLBACK(src,PROC_REF(Recharge)), charge_time)
return
if(proximity_flag && isliving(target))
var/mob/living/L = target
@@ -397,7 +397,7 @@
D.fire()
charged = FALSE
update_icon()
- addtimer(CALLBACK(src, .proc/Recharge), charge_time)
+ addtimer(CALLBACK(src,PROC_REF(Recharge)), charge_time)
return
if(proximity_flag && isliving(target))
var/mob/living/L = target
diff --git a/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm b/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm
index 6fa85fd385d..7591dfea9eb 100644
--- a/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm
@@ -226,8 +226,8 @@
/obj/item/crucible/Initialize(mapload)
. = ..()
- RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/wield)
- RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/unwield)
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD,PROC_REF(wield))
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD,PROC_REF(unwield))
/obj/item/crucible/ComponentInitialize()
. = ..()
@@ -637,7 +637,7 @@
/obj/item/clothing/accessory/lavawalk/ComponentInitialize()
. = ..()
lavawalk = new(src)
- RegisterSignal(lavawalk, COMSIG_ACTION_TRIGGER, .proc/activate)
+ RegisterSignal(lavawalk, COMSIG_ACTION_TRIGGER,PROC_REF(activate))
/obj/item/clothing/accessory/lavawalk/Destroy()
. = ..()
@@ -673,7 +673,7 @@
//L.balloon_alert(L, "activated")
ADD_TRAIT(L, TRAIT_ASHSTORM_IMMUNE, src)
ADD_TRAIT(L, TRAIT_LAVA_IMMUNE, src)
- timer = addtimer(CALLBACK(src, .proc/reset_user, L), effectduration)
+ timer = addtimer(CALLBACK(src,PROC_REF(reset_user), L), effectduration)
action.StartCooldown()
/obj/item/clothing/accessory/lavawalk/proc/reset_user(mob/living/user)
diff --git a/modular_sand/code/modules/mob/emote.dm b/modular_sand/code/modules/mob/emote.dm
index e725562c1ce..6a67f2071e6 100644
--- a/modular_sand/code/modules/mob/emote.dm
+++ b/modular_sand/code/modules/mob/emote.dm
@@ -11,7 +11,7 @@
I.icon_state = state
M.vis_contents += I
animate(I, alpha = 255, time = 5, easing = BOUNCE_EASING, pixel_y = 10)
- addtimer(CALLBACK(GLOBAL_PROC, /proc/finish_flick, M, I), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(usr, GLOBAL_PROC_REF(finish_flick), M, I), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
/proc/finish_flick(mob/M, I)
M.vis_contents -= I
diff --git a/modular_sand/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_sand/code/modules/mob/living/silicon/robot/robot_modules.dm
index c52935fbd48..6fd57945eac 100644
--- a/modular_sand/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/modular_sand/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -156,7 +156,7 @@
"BootyNukie" = image(icon = 'modular_splurt/icons/mob/robots.dmi', icon_state = "bootynukie"), // SPLURT Addon (Hyper Port)
"BootyGorlex" = image(icon = 'modular_splurt/icons/mob/robots.dmi', icon_state = "bootygorlex") // SPLURT Addon (Hyper Port)
))
- var/syndiejack_icon = show_radial_menu(R, R , syndicatejack_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE)
+ var/syndiejack_icon = show_radial_menu(R, R , syndicatejack_icons, custom_check = CALLBACK(src,PROC_REF(check_menu), R), radius = 42, require_near = TRUE)
switch(syndiejack_icon)
if("Saboteur")
cyborg_base_icon = "synd_engi"
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index b4a8993f4e1..042d2fec7c8 100644
--- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -36,13 +36,13 @@ Removes slaughterlings (because they are bullshit), instead replacing them with
blood_warp()
bloodsmacks()
if(prob(25))
- INVOKE_ASYNC(src, .proc/blood_spray)
- INVOKE_ASYNC(src, .proc/bloodsmacks)
+ INVOKE_ASYNC(src,PROC_REF(blood_spray))
+ INVOKE_ASYNC(src,PROC_REF(bloodsmacks))
else
if(health > maxHealth/2 && !client)
- INVOKE_ASYNC(src, .proc/charge)
+ INVOKE_ASYNC(src,PROC_REF(charge))
else
- INVOKE_ASYNC(src, .proc/triple_charge)
+ INVOKE_ASYNC(src,PROC_REF(triple_charge))
/mob/living/simple_animal/hostile/megafauna/bubblegum/charge()
bloodsmacks()
@@ -71,7 +71,7 @@ Removes slaughterlings (because they are bullshit), instead replacing them with
mobcount++
if(mobcount)
var/hand = rand(0,1)
- INVOKE_ASYNC(src, .proc/bloodsmack, T, hand)
+ INVOKE_ASYNC(src,PROC_REF(bloodsmack), T, hand)
/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodsmack(turf/T, handedness)
if(handedness)
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm
index 1e1efc46092..ecd43177c6f 100644
--- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm
@@ -86,7 +86,7 @@ Difficulty: Medium
var/range = 20
var/list/turfs = list()
turfs = line_target(0, range, at)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
+ INVOKE_ASYNC(src,PROC_REF(fire_line), turfs)
/mob/living/simple_animal/hostile/megafauna/dragon/glaurung/OpenFire()
if(swooping)
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/rogueprocess.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/rogueprocess.dm
index c392c9e0dd9..9cb0b4e8913 100644
--- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/rogueprocess.dm
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/rogueprocess.dm
@@ -68,57 +68,57 @@
switch(anger_modifier)
if(0 to 25)
if(prob(50))
- INVOKE_ASYNC(src, .proc/plasmashot, target)
+ INVOKE_ASYNC(src,PROC_REF(plasmashot), target)
if(prob(80))
sleep(6)
- INVOKE_ASYNC(src, .proc/plasmashot, target)
+ INVOKE_ASYNC(src,PROC_REF(plasmashot), target)
if(prob(50))
sleep(6)
- INVOKE_ASYNC(src, .proc/plasmashot, target)
+ INVOKE_ASYNC(src,PROC_REF(plasmashot), target)
else
animate(src, color = "#ff0000", time = 3)
sleep(4)
- INVOKE_ASYNC(src, .proc/shockwave, src.dir, 7, 2.5)
+ INVOKE_ASYNC(src,PROC_REF(shockwave), src.dir, 7, 2.5)
if(25 to 50)
if(prob(60))
special = TRUE
- INVOKE_ASYNC(src, .proc/plasmaburst, target, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(plasmaburst), target, FALSE)
sleep(6)
- INVOKE_ASYNC(src, .proc/plasmaburst, target, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(plasmaburst), target, TRUE)
if(prob(50))
sleep(6)
- INVOKE_ASYNC(src, .proc/plasmashot, target, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(plasmashot), target, FALSE)
if(prob(50))
sleep(6)
- INVOKE_ASYNC(src, .proc/plasmashot, target, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(plasmashot), target, FALSE)
special = FALSE
else
special = TRUE
animate(src, color = "#ff0000", time = 3)
sleep(4)
- INVOKE_ASYNC(src, .proc/shockwave, WEST, 10, TRUE)
- INVOKE_ASYNC(src, .proc/shockwave, EAST, 10, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(shockwave), WEST, 10, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(shockwave), EAST, 10, TRUE)
sleep(7)
- INVOKE_ASYNC(src, .proc/shockwave, NORTH, 10, TRUE)
- INVOKE_ASYNC(src, .proc/shockwave, SOUTH, 10, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(shockwave), NORTH, 10, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(shockwave), SOUTH, 10, TRUE)
animate(src, color = initial(color), time = 5)
special = FALSE
if(50 to INFINITY)
if(prob(75))
if(prob(60))
- INVOKE_ASYNC(src, .proc/plasmaburst, target)
+ INVOKE_ASYNC(src,PROC_REF(plasmaburst), target)
special = TRUE
animate(src, color = "#ff0000", time = 3)
sleep(5)
- INVOKE_ASYNC(src, .proc/shockwave, src.dir, 15)
+ INVOKE_ASYNC(src,PROC_REF(shockwave), src.dir, 15)
if(prob(60))
sleep(5)
- INVOKE_ASYNC(src, .proc/plasmaburst, target)
+ INVOKE_ASYNC(src,PROC_REF(plasmaburst), target)
sleep(5)
- INVOKE_ASYNC(src, .proc/plasmaburst, target)
+ INVOKE_ASYNC(src,PROC_REF(plasmaburst), target)
if(prob(50))
sleep(5)
- INVOKE_ASYNC(src, .proc/plasmaburst, target)
+ INVOKE_ASYNC(src,PROC_REF(plasmaburst), target)
animate(src, color = initial(color), time = 3)
special = FALSE
else
@@ -129,11 +129,11 @@
animate(src, color = "#ff0000", time = 3)
special = TRUE
sleep(3)
- INVOKE_ASYNC(src, .proc/plasmaburst, left, TRUE)
- INVOKE_ASYNC(src, .proc/plasmaburst, right, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(plasmaburst), left, TRUE)
+ INVOKE_ASYNC(src,PROC_REF(plasmaburst), right, FALSE)
sleep(3)
- INVOKE_ASYNC(src, .proc/plasmashot, up, FALSE)
- INVOKE_ASYNC(src, .proc/plasmashot, down, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(plasmashot), up, FALSE)
+ INVOKE_ASYNC(src,PROC_REF(plasmashot), down, FALSE)
sleep(10)
animate(src, color = initial(color), time = 3)
special = FALSE
@@ -142,13 +142,13 @@
sleep(3)
special = TRUE
for(var/dire in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/shockwave, dire, 7, TRUE, 3)
+ INVOKE_ASYNC(src,PROC_REF(shockwave), dire, 7, TRUE, 3)
sleep(6)
animate(src, color = initial(color), time = 3)
special = FALSE
else
special = TRUE
- INVOKE_ASYNC(src, .proc/ultishockwave, 7, 5)
+ INVOKE_ASYNC(src,PROC_REF(ultishockwave), 7, 5)
sleep(10)
special = FALSE
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm
index 8372abd7a26..2d2348f7687 100644
--- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/candy.dm
@@ -116,7 +116,7 @@
new /obj/effect/temp_visual/dir_setting/bloodsplatter/candy(T, get_dir(T, target))
T = get_step(T, dir_to_target)
sleep(1)
- addtimer(CALLBACK(src, .proc/blood_charge_2, dir_to_target, 0), 5)
+ addtimer(CALLBACK(src,PROC_REF(blood_charge_2), dir_to_target, 0), 5)
/mob/living/simple_animal/hostile/asteroid/elite/candy/proc/bloodytrap(mob/target)
playsound(src,'sound/magic/Blind.ogg', 200, 1)
@@ -229,7 +229,7 @@
//L.Paralyze(20)
L.Stun(20) //substituting this for the Paralyze from the line above, because we don't have tg paralysis stuff
L.adjustBruteLoss(50)
- addtimer(CALLBACK(src, .proc/blood_charge_2, move_dir, (times_ran + 1)), 2)
+ addtimer(CALLBACK(src,PROC_REF(blood_charge_2), move_dir, (times_ran + 1)), 2)
/obj/effect/temp_visual/dir_setting/bloodsplatter/candy
duration = 10
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm
index d4796330271..09b3bf60241 100644
--- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm
@@ -114,7 +114,7 @@
/mob/living/simple_animal/hostile/asteroid/elite/drakeling/proc/lava_around()
ranged_cooldown = world.time + 50
for(var/d in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/lava_wall, d, 5)
+ INVOKE_ASYNC(src,PROC_REF(lava_wall), d, 5)
/mob/living/simple_animal/hostile/asteroid/elite/drakeling/proc/fire_spew()
ranged_cooldown = world.time + 25
@@ -129,7 +129,7 @@
visible_message(span_boldwarning("[src] violently puffs smoke!They're going to make a fire moat!"))
sleep(5)
for(var/d in GLOB.alldirs)
- INVOKE_ASYNC(src, .proc/fire_wall, d, 10)
+ INVOKE_ASYNC(src,PROC_REF(fire_wall), d, 10)
// Drakeling helpers
diff --git a/modular_sand/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/modular_sand/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index e1beced5b0f..1b893c6f3af 100644
--- a/modular_sand/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/modular_sand/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -5,7 +5,7 @@
/obj/machinery/chem_dispenser/Initialize(mapload)
if(upgrade_reagents4)
- upgrade_reagents4 = sortList(upgrade_reagents4, /proc/cmp_reagents_asc)
+ upgrade_reagents4 = sortList(upgrade_reagents4, GLOBAL_PROC_REF(cmp_reagents_asc))
. = ..()
/obj/machinery/chem_dispenser/drinks
diff --git a/modular_sand/code/modules/resize/resizing.dm b/modular_sand/code/modules/resize/resizing.dm
index 913fcbb294a..73f5a5dbccc 100644
--- a/modular_sand/code/modules/resize/resizing.dm
+++ b/modular_sand/code/modules/resize/resizing.dm
@@ -66,7 +66,7 @@
user.forceMove(target.loc)
user.sizediffStamLoss(target)
user.add_movespeed_modifier(/datum/movespeed_modifier/stomp, TRUE) //Full stop
- addtimer(CALLBACK(user, /mob/.proc/remove_movespeed_modifier, MOVESPEED_ID_STOMP, TRUE), 3) //0.3 seconds
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/,remove_movespeed_modifier), MOVESPEED_ID_STOMP, TRUE), 3) //0.3 seconds
if(iscarbon(user))
if(istype(user) && user.dna.features["taur"] == "Naga" || user.dna.features["taur"] == "Tentacle")
target.visible_message(span_danger("[src] carefully rolls their tail over [target]!"), span_danger("[src]'s huge tail rolls over you!"))
@@ -81,7 +81,7 @@
user.sizediffBruteloss(target)
playsound(loc, 'sound/misc/splort.ogg', 50, 1)
user.add_movespeed_modifier(/datum/movespeed_modifier/stomp, TRUE)
- addtimer(CALLBACK(user, /mob/.proc/remove_movespeed_modifier, MOVESPEED_ID_STOMP, TRUE), 10) //1 second
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/,remove_movespeed_modifier), MOVESPEED_ID_STOMP, TRUE), 10) //1 second
//user.Stun(20)
if(iscarbon(user))
if(istype(user) && (user.dna.features["taur"] == "Naga" || user.dna.features["taur"] == "Tentacle"))
@@ -96,7 +96,7 @@
user.sizediffStamLoss(target)
user.sizediffStun(target)
user.add_movespeed_modifier(/datum/movespeed_modifier/stomp, TRUE)
- addtimer(CALLBACK(user, /mob/.proc/remove_movespeed_modifier, MOVESPEED_ID_STOMP, TRUE), 7)//About 3/4th a second
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/,remove_movespeed_modifier), MOVESPEED_ID_STOMP, TRUE), 7)//About 3/4th a second
if(iscarbon(user))
var/feetCover = (user.wear_suit && (user.wear_suit.body_parts_covered & FEET)) || (user.w_uniform && (user.w_uniform.body_parts_covered & FEET) || (user.shoes && (user.shoes.body_parts_covered & FEET)))
if(feetCover)
diff --git a/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm b/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm
index b693d9b8400..6fa23209f63 100644
--- a/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm
+++ b/modular_sand/code/modules/ruins/lavalandruin_code/doom.dm
@@ -78,8 +78,8 @@
for(var/mob/living/simple_animal/hostile/asteroid/elite/candy/C in view(15))
candylist += C
if(candylist.len)
- INVOKE_ASYNC(src, /obj/machinery/door/airlock/titanium/doomed/locked.proc/close)
- addtimer(CALLBACK(src, .proc/bolt), 5)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/machinery/door/airlock/titanium/doomed/locked,close))
+ addtimer(CALLBACK(src,PROC_REF(bolt)), 5)
/obj/machinery/door/airlock/titanium/doomed/locked/process()
. = ..()
diff --git a/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm b/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm
index d001b41fda6..fe2530ba996 100644
--- a/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm
+++ b/modular_sand/code/modules/ruins/lavalandruin_code/misc.dm
@@ -73,7 +73,7 @@
/obj/effect/wrath/Initialize(mapload)
. = ..()
megalist = list("Cockblock", "Cockblock", "Cockblock") //cockblock just to be sure that no one goes through the wrath wall in the 10 minute grace period
- addtimer(CALLBACK(src, .proc/updatemegalist), 6000) //10 minutes delay so that all megafauna can spawn and etc.
+ addtimer(CALLBACK(src,PROC_REF(updatemegalist)), 6000) //10 minutes delay so that all megafauna can spawn and etc.
/obj/effect/wrath/proc/updatemegalist()
megalist = list()
diff --git a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/chastity_belt.dm b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/chastity_belt.dm
index b0e76c32e3b..f6e72e4093c 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/chastity_belt.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/chastity_belt.dm
@@ -109,7 +109,7 @@
ENABLE_BITFIELD(G.genital_flags, GENITAL_CHASTENED)
H.update_genitals()
- RegisterSignal(src, COMSIG_MOB_ITEM_DROPPING, .proc/mob_can_unequip)
+ RegisterSignal(src, COMSIG_MOB_ITEM_DROPPING,PROC_REF(mob_can_unequip))
/obj/item/clothing/underwear/chastity_belt/proc/mob_can_unequip(obj/item/source, force, newloc, no_move, invdrop, silent)
if(force)
diff --git a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/chastity_cage.dm b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/chastity_cage.dm
index 02105fbd3cb..d114a5ad32c 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/chastity_cage.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/chastity_cage.dm
@@ -99,8 +99,8 @@
is_overlay_on = TRUE
H.update_genitals()
- RegisterSignal(H, COMSIG_MOB_ITEM_EQUIPPED, .proc/mob_equipped_item)
- RegisterSignal(H, COMSIG_MOB_ITEM_DROPPED, .proc/mob_dropped_item)
+ RegisterSignal(H, COMSIG_MOB_ITEM_EQUIPPED,PROC_REF(mob_equipped_item))
+ RegisterSignal(H, COMSIG_MOB_ITEM_DROPPED,PROC_REF(mob_dropped_item))
/obj/item/genital_equipment/chastity_cage/item_removing(datum/source, obj/item/organ/genital/G, mob/user)
. = TRUE
diff --git a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/metal_chastity_cage.dm b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/metal_chastity_cage.dm
index b600c0d9c02..bb8f28c4cba 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/metal_chastity_cage.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/chastity/metal_chastity_cage.dm
@@ -13,7 +13,7 @@
. = ..()
var/mob/living/carbon/human/H = equipment.get_wearer()
- RegisterSignal(H, COMSIG_MOVABLE_MOVED, .proc/on_move)
+ RegisterSignal(H, COMSIG_MOVABLE_MOVED,PROC_REF(on_move))
skin_overlay = mutable_appearance(icon, "worn_[icon_state]_[cage_sprite]_skin", skin_overlay_layer)
skin_overlay.color = G.color
diff --git a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/genital_equipment.dm b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/genital_equipment.dm
index 428b16cafce..1cc52b1fd00 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/genital_equipment.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/genital_equipment/genital_equipment.dm
@@ -5,10 +5,10 @@
/obj/item/genital_equipment/ComponentInitialize()
. = ..()
var/list/procs_list = list(
- "before_inserting" = CALLBACK(src, .proc/item_inserting),
- "after_inserting" = CALLBACK(src, .proc/item_inserted),
- "before_removing" = CALLBACK(src, .proc/item_removing),
- "after_removing" = CALLBACK(src, .proc/item_removed)
+ "before_inserting" = CALLBACK(src,PROC_REF(item_inserting)),
+ "after_inserting" = CALLBACK(src,PROC_REF(item_inserted)),
+ "before_removing" = CALLBACK(src,PROC_REF(item_removing)),
+ "after_removing" = CALLBACK(src,PROC_REF(item_removed))
)
AddComponent(/datum/component/genital_equipment, genital_slot, procs_list)
equipment = GetComponent(/datum/component/genital_equipment)
diff --git a/modular_splurt/code/game/objects/items/lewd_items/leash.dm b/modular_splurt/code/game/objects/items/lewd_items/leash.dm
index 88ed837f87b..fdd35bdfe57 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/leash.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/leash.dm
@@ -45,8 +45,8 @@ Icons, maybe?
/datum/status_effect/leash_pet/on_apply()
- //redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist))))
- RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist)
+ //redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src,PROC_REF(owner_resist)))))
+ RegisterSignal(owner, COMSIG_LIVING_RESIST,PROC_REF(owner_resist))
redirect_component = owner
if(!owner.stat)
to_chat(owner, span_userdanger("You have been leashed!"))
@@ -103,11 +103,11 @@ Icons, maybe?
user.apply_status_effect(/datum/status_effect/leash_dom) //Is the leasher
leash_pet = C //Save pet reference for later
leash_master = user //Save dom reference for later
- //mobhook_leash_pet = leash_pet.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_pet_move)))
- RegisterSignal(leash_pet, COMSIG_MOVABLE_MOVED, .proc/on_pet_move)
+ //mobhook_leash_pet = leash_pet.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src,PROC_REF(on_pet_move))))
+ RegisterSignal(leash_pet, COMSIG_MOVABLE_MOVED,PROC_REF(on_pet_move))
mobhook_leash_pet = leash_pet
- //mobhook_leash_master = leash_master.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_master_move)))
- RegisterSignal(leash_master, COMSIG_MOVABLE_MOVED, .proc/on_master_move)
+ //mobhook_leash_master = leash_master.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src,PROC_REF(on_master_move))))
+ RegisterSignal(leash_master, COMSIG_MOVABLE_MOVED,PROC_REF(on_master_move))
mobhook_leash_master = leash_master
leash_used = 1
if(!leash_pet.has_status_effect(/datum/status_effect/leash_dom)) //Add slowdown if the pet didn't leash themselves
@@ -339,7 +339,7 @@ Icons, maybe?
if(leash_master == "null")
return
//Dropping procs any time the leash changes slots. So, we will wait a tick and see if the leash was actually dropped
- addtimer(CALLBACK(src, .proc/drop_effects, user, silent), 1)
+ addtimer(CALLBACK(src,PROC_REF(drop_effects), user, silent), 1)
/obj/item/leash/proc/drop_effects(mob/user, silent)
if(leash_master.is_holding_item_of_type(/obj/item/leash) || istype(leash_master.get_item_by_slot(ITEM_SLOT_BELT), /obj/item/leash))
@@ -348,8 +348,8 @@ Icons, maybe?
viewing.show_message(span_notice("[leash_master] has dropped the leash."), 1)
//DOM HAS DROPPED LEASH. PET IS FREE. SCP HAS BREACHED CONTAINMENT.
leash_pet.remove_movespeed_modifier(MOVESPEED_ID_LEASH)
- //mobhook_leash_freepet = leash_pet.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_freepet_move)))
- RegisterSignal(leash_pet, COMSIG_MOVABLE_MOVED, .proc/on_freepet_move)
+ //mobhook_leash_freepet = leash_pet.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src,PROC_REF(on_freepet_move))))
+ RegisterSignal(leash_pet, COMSIG_MOVABLE_MOVED,PROC_REF(on_freepet_move))
mobhook_leash_freepet = leash_pet
leash_master.remove_status_effect(/datum/status_effect/leash_dom) //No dom with no leash. We will get a new dom if the leash is picked back up.
leash_master = "null"
@@ -360,7 +360,7 @@ Icons, maybe?
. = ..()
if(leash_used == 0) //Don't apply statuses with a fresh leash. Keeps things clean on the backend.
return
- addtimer(CALLBACK(src, .proc/equip_effects, user), 2)
+ addtimer(CALLBACK(src,PROC_REF(equip_effects), user), 2)
/obj/item/leash/proc/equip_effects(mob/user)
if(leash_pet == "null")
@@ -370,8 +370,8 @@ Icons, maybe?
leash_master = "null"
return
leash_master.apply_status_effect(/datum/status_effect/leash_dom)
- //mobhook_leash_master = leash_master.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src, .proc/on_master_move)))
- RegisterSignal(leash_master, COMSIG_MOVABLE_MOVED, .proc/on_master_move)
+ //mobhook_leash_master = leash_master.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED = CALLBACK(src,PROC_REF(on_master_move))))
+ RegisterSignal(leash_master, COMSIG_MOVABLE_MOVED,PROC_REF(on_master_move))
mobhook_leash_master = leash_master
leash_pet.remove_status_effect(/datum/status_effect/leash_freepet)
//QDEL_NULL(mobhook_leash_freepet)
diff --git a/modular_splurt/code/game/objects/items/lewd_items/rope.dm b/modular_splurt/code/game/objects/items/lewd_items/rope.dm
index d950844904b..8cf53ed9900 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/rope.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/rope.dm
@@ -434,14 +434,14 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
roped_mob.clear_cuffs(roped_mob.legcuffed, 0)
roped_mob = new_mob
if(roped_mob != null)
- RegisterSignal(roped_mob, COMSIG_MOVABLE_MOVED, .proc/on_mob_move)
+ RegisterSignal(roped_mob, COMSIG_MOVABLE_MOVED,PROC_REF(on_mob_move))
/obj/item/restraints/bondage_rope/proc/set_roped_master(mob/living/carbon/new_master)
if(roped_master != null && roped_mob != roped_master)
UnregisterSignal(roped_master, COMSIG_MOVABLE_MOVED)
roped_master = new_master
if(roped_master != null && roped_mob != roped_master)
- RegisterSignal(roped_master, COMSIG_MOVABLE_MOVED, .proc/on_master_move)
+ RegisterSignal(roped_master, COMSIG_MOVABLE_MOVED,PROC_REF(on_master_move))
/obj/item/restraints/bondage_rope/proc/set_roped_object(obj/new_object, new_object_type)
if(roped_object != null)
@@ -450,7 +450,7 @@ GLOBAL_LIST_INIT(bondage_rope_slowdowns, list(
roped_object_type = new_object_type
set_rope_slowdown(roped_mob)
if(roped_object != null)
- RegisterSignal(roped_object, COMSIG_MOVABLE_MOVED, .proc/on_object_move)
+ RegisterSignal(roped_object, COMSIG_MOVABLE_MOVED,PROC_REF(on_object_move))
// Returns true, if roped mob can tug their object behind them
/obj/item/restraints/bondage_rope/proc/can_move_object()
diff --git a/modular_splurt/code/game/objects/items/lewd_items/vibrator.dm b/modular_splurt/code/game/objects/items/lewd_items/vibrator.dm
index be625903c65..2aa12adef50 100644
--- a/modular_splurt/code/game/objects/items/lewd_items/vibrator.dm
+++ b/modular_splurt/code/game/objects/items/lewd_items/vibrator.dm
@@ -21,8 +21,8 @@
/obj/item/electropack/vibrator/ComponentInitialize()
. = ..()
var/list/procs_list = list(
- "before_inserting" = CALLBACK(src, .proc/item_inserting),
- "after_inserting" = CALLBACK(src, .proc/item_inserted),
+ "before_inserting" = CALLBACK(src,PROC_REF(item_inserting)),
+ "after_inserting" = CALLBACK(src,PROC_REF(item_inserted)),
)
AddComponent(/datum/component/genital_equipment, list(ORGAN_SLOT_VAGINA, ORGAN_SLOT_ANUS, ORGAN_SLOT_PENIS, ORGAN_SLOT_BREASTS, ORGAN_SLOT_BUTT, ORGAN_SLOT_BELLY), procs_list)
diff --git a/modular_sunset/code/game/objects/sunsetmisc.dm b/modular_sunset/code/game/objects/sunsetmisc.dm
index d266281177d..c755b5d55a5 100644
--- a/modular_sunset/code/game/objects/sunsetmisc.dm
+++ b/modular_sunset/code/game/objects/sunsetmisc.dm
@@ -1,4 +1,4 @@
-obj/item/bighorn_flag
+/obj/item/bighorn_flag
name = "Bighorn flag"
desc = "A flag depicting the head of a bighorner. It's the symbol of the town of Bighorn."
icon = 'modular_sunset/icons/structures/bighorn_flag.dmi'
@@ -9,7 +9,7 @@ obj/item/bighorn_flag
w_class = 4
layer = 4.1
-obj/item/bighorn_sign
+/obj/item/bighorn_sign
name = "Bighorn sign"
desc = "A repurposed highway sign with the spray painted name of 'Bighorn'."
icon = 'modular_sunset/icons/structures/bighorn_sign.dmi'
@@ -20,7 +20,7 @@ obj/item/bighorn_sign
w_class = 4
layer = 5
-obj/item/trade_sign
+/obj/item/trade_sign
name = "Trade sign"
desc = "A wooden sign with seemingly hand forged lettering bolted to it."
icon = 'modular_sunset/icons/structures/sunset_signs.dmi'
diff --git a/tgui/packages/tgui-dev-server/dreamseeker.js b/tgui/packages/tgui-dev-server/dreamseeker.js
index c11ecad1b0d..1faa713af01 100644
--- a/tgui/packages/tgui-dev-server/dreamseeker.js
+++ b/tgui/packages/tgui-dev-server/dreamseeker.js
@@ -27,6 +27,9 @@ export class DreamSeeker {
.map(key => encodeURIComponent(key)
+ '=' + encodeURIComponent(params[key]))
.join('&');
+ logger.log(
+ `topic call at ${this.client.defaults.baseURL + '/dummy?' + query}`
+ );
return this.client.get('/dummy?' + query);
}
}
diff --git a/tgui/packages/tgui-dev-server/reloader.js b/tgui/packages/tgui-dev-server/reloader.js
index 22527890409..2440509620e 100644
--- a/tgui/packages/tgui-dev-server/reloader.js
+++ b/tgui/packages/tgui-dev-server/reloader.js
@@ -67,7 +67,8 @@ export const findCacheRoot = async () => {
const onCacheRootFound = cacheRoot => {
logger.log(`found cache at '${cacheRoot}'`);
- // Plant a dummy
+ // Plant a dummy browser window file,
+ // we'll be using this to avoid world topic. For byond 514.
fs.closeSync(fs.openSync(cacheRoot + '/dummy', 'w'));
};
@@ -93,6 +94,8 @@ export const reloadByondCache = async bundleDir => {
// Clear garbage
const garbage = await resolveGlob(cacheDir, './*.+(bundle|chunk|hot-update).*');
try {
+ // Plant a dummy, we're avoiding world topic by placing it here..?
+ fs.closeSync(fs.openSync(cacheRoot + '/dummy', 'w'));
for (let file of garbage) {
fs.unlinkSync(file);
}
diff --git a/tgui/packages/tgui-panel/themes.js b/tgui/packages/tgui-panel/themes.js
index 1ef6caaf459..11a2fcd1820 100644
--- a/tgui/packages/tgui-panel/themes.js
+++ b/tgui/packages/tgui-panel/themes.js
@@ -82,7 +82,7 @@ export const setClientTheme = name => {
});
}
if (name === 'dark') {
- Byond.winset({
+ return Byond.winset({
// Main windows
'infowindow.background-color': COLOR_DARK_BG,
'infowindow.text-color': COLOR_DARK_TEXT,
diff --git a/tgui/public/tgui-common.bundle.js b/tgui/public/tgui-common.bundle.js
new file mode 100644
index 00000000000..14254837b6a
--- /dev/null
+++ b/tgui/public/tgui-common.bundle.js
@@ -0,0 +1 @@
+(self.webpackChunktgui_workspace=self.webpackChunktgui_workspace||[]).push([["tgui-common"],{46877:function(e,t,n){"use strict";t.__esModule=!0,t.createPopper=void 0,t.popperGenerator=v;var r=d(n(86310)),o=d(n(99470)),i=d(n(24403)),a=d(n(84416)),u=(d(n(59493)),d(n(3738))),s=d(n(82053)),c=(d(n(53131)),d(n(13611)),d(n(63992)),d(n(76197))),l=d(n(76316));t.detectOverflow=l["default"];var f=n(50695);n(63570);function d(e){return e&&e.__esModule?e:{"default":e}}var p={placement:"bottom",modifiers:[],strategy:"absolute"};function h(){for(var e=arguments.length,t=new Array(e),n=0;n0&&(0,o.round)(u.width)/e.offsetWidth||1,c=e.offsetHeight>0&&(0,o.round)(u.height)/e.offsetHeight||1);var l=((0,r.isElement)(e)?(0,i["default"])(e):window).visualViewport,f=!(0,a["default"])()&&n,d=(u.left+(f&&l?l.offsetLeft:0))/s,p=(u.top+(f&&l?l.offsetTop:0))/c,h=u.width/s,v=u.height/c;return{width:h,height:v,top:p,right:d+h,bottom:p+v,left:d,x:d,y:p}};var r=n(50695),o=n(49055),i=u(n(34510)),a=u(n(55812));function u(e){return e&&e.__esModule?e:{"default":e}}},96087:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n,r){var o="clippingParents"===t?function(e){var t=(0,a["default"])((0,d["default"])(e)),n=["absolute","fixed"].indexOf((0,c["default"])(e).position)>=0,r=n&&(0,l.isHTMLElement)(e)?(0,u["default"])(e):e;if(!(0,l.isElement)(r))return[];return t.filter((function(e){return(0,l.isElement)(e)&&(0,p["default"])(e,r)&&"body"!==(0,h["default"])(e)}))}(e):[].concat(t),i=[].concat(o,[n]),s=i[0],f=i.reduce((function(t,n){var o=y(e,n,r);return t.top=(0,m.max)(o.top,t.top),t.right=(0,m.min)(o.right,t.right),t.bottom=(0,m.min)(o.bottom,t.bottom),t.left=(0,m.max)(o.left,t.left),t}),y(e,s,r));return f.width=f.right-f.left,f.height=f.bottom-f.top,f.x=f.left,f.y=f.top,f};var r=n(63570),o=g(n(93596)),i=g(n(48532)),a=g(n(24403)),u=g(n(84416)),s=g(n(45385)),c=g(n(59493)),l=n(50695),f=g(n(41012)),d=g(n(1534)),p=g(n(1676)),h=g(n(72417)),v=g(n(1656)),m=n(49055);function g(e){return e&&e.__esModule?e:{"default":e}}function y(e,t,n){return t===r.viewport?(0,v["default"])((0,o["default"])(e,n)):(0,l.isElement)(t)?function(e,t){var n=(0,f["default"])(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):(0,v["default"])((0,i["default"])((0,s["default"])(e)))}},86310:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){void 0===n&&(n=!1);var f=(0,a.isHTMLElement)(t),d=(0,a.isHTMLElement)(t)&&function(e){var t=e.getBoundingClientRect(),n=(0,l.round)(t.width)/e.offsetWidth||1,r=(0,l.round)(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),p=(0,s["default"])(t),h=(0,r["default"])(e,d,n),v={scrollLeft:0,scrollTop:0},m={x:0,y:0};(f||!f&&!n)&&(("body"!==(0,i["default"])(t)||(0,c["default"])(p))&&(v=(0,o["default"])(t)),(0,a.isHTMLElement)(t)?((m=(0,r["default"])(t,!0)).x+=t.clientLeft,m.y+=t.clientTop):p&&(m.x=(0,u["default"])(p)));return{x:h.left+v.scrollLeft-m.x,y:h.top+v.scrollTop-m.y,width:h.width,height:h.height}};var r=f(n(41012)),o=f(n(29806)),i=f(n(72417)),a=n(50695),u=f(n(47948)),s=f(n(45385)),c=f(n(63937)),l=n(49055);function f(e){return e&&e.__esModule?e:{"default":e}}},59493:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,o["default"])(e).getComputedStyle(e)};var r,o=(r=n(34510))&&r.__esModule?r:{"default":r}},45385:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(((0,r.isElement)(e)?e.ownerDocument:e.document)||window.document).documentElement};var r=n(50695)},48532:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=(0,r["default"])(e),s=(0,a["default"])(e),c=null==(t=e.ownerDocument)?void 0:t.body,l=(0,u.max)(n.scrollWidth,n.clientWidth,c?c.scrollWidth:0,c?c.clientWidth:0),f=(0,u.max)(n.scrollHeight,n.clientHeight,c?c.scrollHeight:0,c?c.clientHeight:0),d=-s.scrollLeft+(0,i["default"])(e),p=-s.scrollTop;"rtl"===(0,o["default"])(c||n).direction&&(d+=(0,u.max)(n.clientWidth,c?c.clientWidth:0)-l);return{width:l,height:f,x:d,y:p}};var r=s(n(45385)),o=s(n(59493)),i=s(n(47948)),a=s(n(63365)),u=n(49055);function s(e){return e&&e.__esModule?e:{"default":e}}},15346:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},99470:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=e.offsetWidth,r=e.offsetHeight;Math.abs(t.width-n)<=1&&(n=t.width);Math.abs(t.height-r)<=1&&(r=t.height);return{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}};var r,o=(r=n(41012))&&r.__esModule?r:{"default":r}},72417:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e?(e.nodeName||"").toLowerCase():null}},29806:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return e!==(0,o["default"])(e)&&(0,i.isHTMLElement)(e)?(0,a["default"])(e):(0,r["default"])(e)};var r=u(n(63365)),o=u(n(34510)),i=n(50695),a=u(n(15346));function u(e){return e&&e.__esModule?e:{"default":e}}},84416:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=f(e);for(;n&&(0,u["default"])(n)&&"static"===(0,i["default"])(n).position;)n=f(n);if(n&&("html"===(0,o["default"])(n)||"body"===(0,o["default"])(n)&&"static"===(0,i["default"])(n).position))return t;return n||function(e){var t=/firefox/i.test((0,c["default"])());if(/Trident/i.test((0,c["default"])())&&(0,a.isHTMLElement)(e)){if("fixed"===(0,i["default"])(e).position)return null}var n=(0,s["default"])(e);(0,a.isShadowRoot)(n)&&(n=n.host);for(;(0,a.isHTMLElement)(n)&&["html","body"].indexOf((0,o["default"])(n))<0;){var r=(0,i["default"])(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t};var r=l(n(34510)),o=l(n(72417)),i=l(n(59493)),a=n(50695),u=l(n(91285)),s=l(n(1534)),c=l(n(77708));function l(e){return e&&e.__esModule?e:{"default":e}}function f(e){return(0,a.isHTMLElement)(e)&&"fixed"!==(0,i["default"])(e).position?e.offsetParent:null}},1534:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){if("html"===(0,r["default"])(e))return e;return e.assignedSlot||e.parentNode||((0,i.isShadowRoot)(e)?e.host:null)||(0,o["default"])(e)};var r=a(n(72417)),o=a(n(45385)),i=n(50695);function a(e){return e&&e.__esModule?e:{"default":e}}},6072:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function s(e){if(["html","body","#document"].indexOf((0,i["default"])(e))>=0)return e.ownerDocument.body;if((0,a.isHTMLElement)(e)&&(0,o["default"])(e))return e;return s((0,r["default"])(e))};var r=u(n(1534)),o=u(n(63937)),i=u(n(72417)),a=n(50695);function u(e){return e&&e.__esModule?e:{"default":e}}},93596:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=(0,r["default"])(e),u=(0,o["default"])(e),s=n.visualViewport,c=u.clientWidth,l=u.clientHeight,f=0,d=0;if(s){c=s.width,l=s.height;var p=(0,a["default"])();(p||!p&&"fixed"===t)&&(f=s.offsetLeft,d=s.offsetTop)}return{width:c,height:l,x:f+(0,i["default"])(e),y:d}};var r=u(n(34510)),o=u(n(45385)),i=u(n(47948)),a=u(n(55812));function u(e){return e&&e.__esModule?e:{"default":e}}},34510:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}},63365:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}};var r,o=(r=n(34510))&&r.__esModule?r:{"default":r}},47948:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,r["default"])((0,o["default"])(e)).left+(0,i["default"])(e).scrollLeft};var r=a(n(41012)),o=a(n(45385)),i=a(n(63365));function a(e){return e&&e.__esModule?e:{"default":e}}},50695:function(e,t,n){"use strict";t.__esModule=!0,t.isElement=function(e){var t=(0,o["default"])(e).Element;return e instanceof t||e instanceof Element},t.isHTMLElement=function(e){var t=(0,o["default"])(e).HTMLElement;return e instanceof t||e instanceof HTMLElement},t.isShadowRoot=function(e){if("undefined"==typeof ShadowRoot)return!1;var t=(0,o["default"])(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot};var r,o=(r=n(34510))&&r.__esModule?r:{"default":r}},55812:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(){return!/^((?!chrome|android).)*safari/i.test((0,o["default"])())};var r,o=(r=n(77708))&&r.__esModule?r:{"default":r}},63937:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)};var r,o=(r=n(59493))&&r.__esModule?r:{"default":r}},91285:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return["table","td","th"].indexOf((0,o["default"])(e))>=0};var r,o=(r=n(72417))&&r.__esModule?r:{"default":r}},24403:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function s(e,t){var n;void 0===t&&(t=[]);var u=(0,r["default"])(e),c=u===(null==(n=e.ownerDocument)?void 0:n.body),l=(0,i["default"])(u),f=c?[l].concat(l.visualViewport||[],(0,a["default"])(u)?u:[]):u,d=t.concat(f);return c?d:d.concat(s((0,o["default"])(f)))};var r=u(n(6072)),o=u(n(1534)),i=u(n(34510)),a=u(n(63937));function u(e){return e&&e.__esModule?e:{"default":e}}},63570:function(e,t){"use strict";t.__esModule=!0,t.write=t.viewport=t.variationPlacements=t.top=t.start=t.right=t.reference=t.read=t.popper=t.placements=t.modifierPhases=t.main=t.left=t.end=t.clippingParents=t.bottom=t.beforeWrite=t.beforeRead=t.beforeMain=t.basePlacements=t.auto=t.afterWrite=t.afterRead=t.afterMain=void 0;t.top="top";var n="bottom";t.bottom=n;var r="right";t.right=r;var o="left";t.left=o;var i="auto";t.auto=i;var a=["top",n,r,o];t.basePlacements=a;var u="start";t.start=u;var s="end";t.end=s;t.clippingParents="clippingParents";t.viewport="viewport";t.popper="popper";t.reference="reference";var c=a.reduce((function(e,t){return e.concat([t+"-"+u,t+"-"+s])}),[]);t.variationPlacements=c;var l=[].concat(a,[i]).reduce((function(e,t){return e.concat([t,t+"-"+u,t+"-"+s])}),[]);t.placements=l;var f="beforeRead";t.beforeRead=f;var d="read";t.read=d;var p="afterRead";t.afterRead=p;var h="beforeMain";t.beforeMain=h;var v="main";t.main=v;var m="afterMain";t.afterMain=m;var g="beforeWrite";t.beforeWrite=g;var y="write";t.write=y;var b="afterWrite";t.afterWrite=b;var x=[f,d,p,h,v,m,g,y,b];t.modifierPhases=x},42346:function(e,t,n){"use strict";t.__esModule=!0;var r={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};t.popperGenerator=t.detectOverflow=t.createPopperLite=t.createPopperBase=t.createPopper=void 0;var o=n(63570);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===o[e]||(t[e]=o[e]))}));var i=n(73694);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===i[e]||(t[e]=i[e]))}));var a=n(46877);t.popperGenerator=a.popperGenerator,t.detectOverflow=a.detectOverflow,t.createPopperBase=a.createPopper;var u=n(28153);t.createPopper=u.createPopper;var s=n(3922);t.createPopperLite=s.createPopper},43154:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(72417))&&r.__esModule?r:{"default":r},i=n(50695);var a={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},a=t.elements[e];(0,i.isHTMLElement)(a)&&(0,o["default"])(a)&&(Object.assign(a.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?a.removeAttribute(e):a.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],a=t.attributes[e]||{},u=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});(0,i.isHTMLElement)(r)&&(0,o["default"])(r)&&(Object.assign(r.style,u),Object.keys(a).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]};t["default"]=a},82562:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=d(n(63992)),o=d(n(99470)),i=d(n(1676)),a=d(n(84416)),u=d(n(63185)),s=n(54155),c=d(n(45499)),l=d(n(92806)),f=n(63570);n(50695);function d(e){return e&&e.__esModule?e:{"default":e}}var p=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,(0,c["default"])("number"!=typeof e?e:(0,l["default"])(e,f.basePlacements))};var h={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,c=e.options,l=n.elements.arrow,d=n.modifiersData.popperOffsets,h=(0,r["default"])(n.placement),v=(0,u["default"])(h),m=[f.left,f.right].indexOf(h)>=0?"height":"width";if(l&&d){var g=p(c.padding,n),y=(0,o["default"])(l),b="y"===v?f.top:f.left,x="y"===v?f.bottom:f.right,w=n.rects.reference[m]+n.rects.reference[v]-d[v]-n.rects.popper[m],E=d[v]-n.rects.reference[v],_=(0,a["default"])(l),D=_?"y"===v?_.clientHeight||0:_.clientWidth||0:0,C=w/2-E/2,k=g[b],A=D-y[m]-g[x],S=D/2-y[m]/2+C,N=(0,s.within)(k,S,A),O=v;n.modifiersData[i]=((t={})[O]=N,t.centerOffset=N-S,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&(0,i["default"])(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};t["default"]=h},94698:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0,t.mapToStyles=p;var r=n(63570),o=f(n(84416)),i=f(n(34510)),a=f(n(45385)),u=f(n(59493)),s=f(n(63992)),c=f(n(4529)),l=n(49055);function f(e){return e&&e.__esModule?e:{"default":e}}var d={top:"auto",right:"auto",bottom:"auto",left:"auto"};function p(e){var t,n=e.popper,s=e.popperRect,c=e.placement,f=e.variation,p=e.offsets,h=e.position,v=e.gpuAcceleration,m=e.adaptive,g=e.roundOffsets,y=e.isFixed,b=p.x,x=void 0===b?0:b,w=p.y,E=void 0===w?0:w,_="function"==typeof g?g({x:x,y:E}):{x:x,y:E};x=_.x,E=_.y;var D=p.hasOwnProperty("x"),C=p.hasOwnProperty("y"),k=r.left,A=r.top,S=window;if(m){var N=(0,o["default"])(n),O="clientHeight",F="clientWidth";if(N===(0,i["default"])(n)&&(N=(0,a["default"])(n),"static"!==(0,u["default"])(N).position&&"absolute"===h&&(O="scrollHeight",F="scrollWidth")),c===r.top||(c===r.left||c===r.right)&&f===r.end)A=r.bottom,E-=(y&&N===S&&S.visualViewport?S.visualViewport.height:N[O])-s.height,E*=v?1:-1;if(c===r.left||(c===r.top||c===r.bottom)&&f===r.end)k=r.right,x-=(y&&N===S&&S.visualViewport?S.visualViewport.width:N[F])-s.width,x*=v?1:-1}var M,T=Object.assign({position:h},m&&d),I=!0===g?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:(0,l.round)(t*r)/r||0,y:(0,l.round)(n*r)/r||0}}({x:x,y:E}):{x:x,y:E};return x=I.x,E=I.y,v?Object.assign({},T,((M={})[A]=C?"0":"",M[k]=D?"0":"",M.transform=(S.devicePixelRatio||1)<=1?"translate("+x+"px, "+E+"px)":"translate3d("+x+"px, "+E+"px, 0)",M)):Object.assign({},T,((t={})[A]=C?E+"px":"",t[k]=D?x+"px":"",t.transform="",t))}var h={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,u=n.roundOffsets,l=void 0===u||u,f={placement:(0,s["default"])(t.placement),variation:(0,c["default"])(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,p(Object.assign({},f,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,p(Object.assign({},f,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};t["default"]=h},84841:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(34510))&&r.__esModule?r:{"default":r};var i={passive:!0};var a={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,a=r.scroll,u=void 0===a||a,s=r.resize,c=void 0===s||s,l=(0,o["default"])(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return u&&f.forEach((function(e){e.addEventListener("scroll",n.update,i)})),c&&l.addEventListener("resize",n.update,i),function(){u&&f.forEach((function(e){e.removeEventListener("scroll",n.update,i)})),c&&l.removeEventListener("resize",n.update,i)}},data:{}};t["default"]=a},69161:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=l(n(37436)),o=l(n(63992)),i=l(n(45979)),a=l(n(76316)),u=l(n(93004)),s=n(63570),c=l(n(4529));function l(e){return e&&e.__esModule?e:{"default":e}}var f={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,l=e.name;if(!t.modifiersData[l]._skip){for(var f=n.mainAxis,d=void 0===f||f,p=n.altAxis,h=void 0===p||p,v=n.fallbackPlacements,m=n.padding,g=n.boundary,y=n.rootBoundary,b=n.altBoundary,x=n.flipVariations,w=void 0===x||x,E=n.allowedAutoPlacements,_=t.options.placement,D=(0,o["default"])(_),C=v||(D===_||!w?[(0,r["default"])(_)]:function(e){if((0,o["default"])(e)===s.auto)return[];var t=(0,r["default"])(e);return[(0,i["default"])(e),t,(0,i["default"])(t)]}(_)),k=[_].concat(C).reduce((function(e,n){return e.concat((0,o["default"])(n)===s.auto?(0,u["default"])(t,{placement:n,boundary:g,rootBoundary:y,padding:m,flipVariations:w,allowedAutoPlacements:E}):n)}),[]),A=t.rects.reference,S=t.rects.popper,N=new Map,O=!0,F=k[0],M=0;M=0,P=L?"width":"height",j=(0,a["default"])(t,{placement:T,boundary:g,rootBoundary:y,altBoundary:b,padding:m}),V=L?B?s.right:s.left:B?s.bottom:s.top;A[P]>S[P]&&(V=(0,r["default"])(V));var R=(0,r["default"])(V),z=[];if(d&&z.push(j[I]<=0),h&&z.push(j[V]<=0,j[R]<=0),z.every((function(e){return e}))){F=T,O=!1;break}N.set(T,z)}if(O)for(var K=function(e){var t=k.find((function(t){var n=N.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return F=t,"break"},U=w?3:1;U>0;U--){if("break"===K(U))break}t.placement!==F&&(t.modifiersData[l]._skip=!0,t.placement=F,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};t["default"]=f},96965:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=n(63570),i=(r=n(76316))&&r.__esModule?r:{"default":r};function a(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function u(e){return[o.top,o.right,o.bottom,o.left].some((function(t){return e[t]>=0}))}var s={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,c=(0,i["default"])(t,{elementContext:"reference"}),l=(0,i["default"])(t,{altBoundary:!0}),f=a(c,r),d=a(l,o,s),p=u(f),h=u(d);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:d,isReferenceHidden:p,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":h})}};t["default"]=s},73694:function(e,t,n){"use strict";t.__esModule=!0,t.preventOverflow=t.popperOffsets=t.offset=t.hide=t.flip=t.eventListeners=t.computeStyles=t.arrow=t.applyStyles=void 0;var r=d(n(43154));t.applyStyles=r["default"];var o=d(n(82562));t.arrow=o["default"];var i=d(n(94698));t.computeStyles=i["default"];var a=d(n(84841));t.eventListeners=a["default"];var u=d(n(69161));t.flip=u["default"];var s=d(n(96965));t.hide=s["default"];var c=d(n(71832));t.offset=c["default"];var l=d(n(87883));t.popperOffsets=l["default"];var f=d(n(77600));function d(e){return e&&e.__esModule?e:{"default":e}}t.preventOverflow=f["default"]},71832:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0,t.distanceAndSkiddingToXY=a;var r,o=(r=n(63992))&&r.__esModule?r:{"default":r},i=n(63570);function a(e,t,n){var r=(0,o["default"])(e),a=[i.left,i.top].indexOf(r)>=0?-1:1,u="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=u[0],c=u[1];return s=s||0,c=(c||0)*a,[i.left,i.right].indexOf(r)>=0?{x:c,y:s}:{x:s,y:c}}var u={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,u=void 0===o?[0,0]:o,s=i.placements.reduce((function(e,n){return e[n]=a(n,t.rects,u),e}),{}),c=s[t.placement],l=c.x,f=c.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=f),t.modifiersData[r]=s}};t["default"]=u},87883:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(4320))&&r.__esModule?r:{"default":r};var i={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=(0,o["default"])({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};t["default"]=i},77600:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=n(63570),o=h(n(63992)),i=h(n(63185)),a=h(n(1072)),u=n(54155),s=h(n(99470)),c=h(n(84416)),l=h(n(76316)),f=h(n(4529)),d=h(n(40321)),p=n(49055);function h(e){return e&&e.__esModule?e:{"default":e}}var v={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,h=e.name,v=n.mainAxis,m=void 0===v||v,g=n.altAxis,y=void 0!==g&&g,b=n.boundary,x=n.rootBoundary,w=n.altBoundary,E=n.padding,_=n.tether,D=void 0===_||_,C=n.tetherOffset,k=void 0===C?0:C,A=(0,l["default"])(t,{boundary:b,rootBoundary:x,padding:E,altBoundary:w}),S=(0,o["default"])(t.placement),N=(0,f["default"])(t.placement),O=!N,F=(0,i["default"])(S),M=(0,a["default"])(F),T=t.modifiersData.popperOffsets,I=t.rects.reference,B=t.rects.popper,L="function"==typeof k?k(Object.assign({},t.rects,{placement:t.placement})):k,P="number"==typeof L?{mainAxis:L,altAxis:L}:Object.assign({mainAxis:0,altAxis:0},L),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(T){if(m){var R,z="y"===F?r.top:r.left,K="y"===F?r.bottom:r.right,U="y"===F?"height":"width",Y=T[F],H=Y+A[z],W=Y-A[K],$=D?-B[U]/2:0,G=N===r.start?I[U]:B[U],q=N===r.start?-B[U]:-I[U],Z=t.elements.arrow,X=D&&Z?(0,s["default"])(Z):{width:0,height:0},Q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:(0,d["default"])(),J=Q[z],ee=Q[K],te=(0,u.within)(0,I[U],X[U]),ne=O?I[U]/2-$-te-J-P.mainAxis:G-te-J-P.mainAxis,re=O?-I[U]/2+$+te+ee+P.mainAxis:q+te+ee+P.mainAxis,oe=t.elements.arrow&&(0,c["default"])(t.elements.arrow),ie=oe?"y"===F?oe.clientTop||0:oe.clientLeft||0:0,ae=null!=(R=null==j?void 0:j[F])?R:0,ue=Y+ne-ae-ie,se=Y+re-ae,ce=(0,u.within)(D?(0,p.min)(H,ue):H,Y,D?(0,p.max)(W,se):W);T[F]=ce,V[F]=ce-Y}if(y){var le,fe="x"===F?r.top:r.left,de="x"===F?r.bottom:r.right,pe=T[M],he="y"===M?"height":"width",ve=pe+A[fe],me=pe-A[de],ge=-1!==[r.top,r.left].indexOf(S),ye=null!=(le=null==j?void 0:j[M])?le:0,be=ge?ve:pe-I[he]-B[he]-ye+P.altAxis,xe=ge?pe+I[he]+B[he]-ye-P.altAxis:me,we=D&&ge?(0,u.withinMaxClamp)(be,pe,xe):(0,u.within)(D?be:ve,pe,D?xe:me);T[M]=we,V[M]=we-pe}t.modifiersData[h]=V}},requiresIfExists:["offset"]};t["default"]=v},3922:function(e,t,n){"use strict";t.__esModule=!0,t.defaultModifiers=t.createPopper=void 0;var r=n(46877);t.popperGenerator=r.popperGenerator,t.detectOverflow=r.detectOverflow;var o=s(n(84841)),i=s(n(87883)),a=s(n(94698)),u=s(n(43154));function s(e){return e&&e.__esModule?e:{"default":e}}var c=[o["default"],i["default"],a["default"],u["default"]];t.defaultModifiers=c;var l=(0,r.popperGenerator)({defaultModifiers:c});t.createPopper=l},28153:function(e,t,n){"use strict";t.__esModule=!0;var r={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};t.defaultModifiers=t.createPopperLite=t.createPopper=void 0;var o=n(46877);t.popperGenerator=o.popperGenerator,t.detectOverflow=o.detectOverflow;var i=m(n(84841)),a=m(n(87883)),u=m(n(94698)),s=m(n(43154)),c=m(n(71832)),l=m(n(69161)),f=m(n(77600)),d=m(n(82562)),p=m(n(96965)),h=n(3922);t.createPopperLite=h.createPopper;var v=n(73694);function m(e){return e&&e.__esModule?e:{"default":e}}Object.keys(v).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===v[e]||(t[e]=v[e]))}));var g=[i["default"],a["default"],u["default"],s["default"],c["default"],l["default"],f["default"],d["default"],p["default"]];t.defaultModifiers=g;var y=(0,o.popperGenerator)({defaultModifiers:g});t.createPopperLite=t.createPopper=y},93004:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,u=n.placement,s=n.boundary,c=n.rootBoundary,l=n.padding,f=n.flipVariations,d=n.allowedAutoPlacements,p=void 0===d?o.placements:d,h=(0,r["default"])(u),v=h?f?o.variationPlacements:o.variationPlacements.filter((function(e){return(0,r["default"])(e)===h})):o.basePlacements,m=v.filter((function(e){return p.indexOf(e)>=0}));0===m.length&&(m=v);var g=m.reduce((function(t,n){return t[n]=(0,i["default"])(e,{placement:n,boundary:s,rootBoundary:c,padding:l})[(0,a["default"])(n)],t}),{});return Object.keys(g).sort((function(e,t){return g[e]-g[t]}))};var r=u(n(4529)),o=n(63570),i=u(n(76316)),a=u(n(63992));function u(e){return e&&e.__esModule?e:{"default":e}}},4320:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.reference,u=e.element,s=e.placement,c=s?(0,r["default"])(s):null,l=s?(0,o["default"])(s):null,f=n.x+n.width/2-u.width/2,d=n.y+n.height/2-u.height/2;switch(c){case a.top:t={x:f,y:n.y-u.height};break;case a.bottom:t={x:f,y:n.y+n.height};break;case a.right:t={x:n.x+n.width,y:d};break;case a.left:t={x:n.x-u.width,y:d};break;default:t={x:n.x,y:n.y}}var p=c?(0,i["default"])(c):null;if(null!=p){var h="y"===p?"height":"width";switch(l){case a.start:t[p]=t[p]-(n[h]/2-u[h]/2);break;case a.end:t[p]=t[p]+(n[h]/2-u[h]/2)}}return t};var r=u(n(63992)),o=u(n(4529)),i=u(n(63185)),a=n(63570);function u(e){return e&&e.__esModule?e:{"default":e}}},82053:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=undefined,n(e())}))}))),t}}},76316:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,d=n.placement,p=void 0===d?e.placement:d,h=n.strategy,v=void 0===h?e.strategy:h,m=n.boundary,g=void 0===m?s.clippingParents:m,y=n.rootBoundary,b=void 0===y?s.viewport:y,x=n.elementContext,w=void 0===x?s.popper:x,E=n.altBoundary,_=void 0!==E&&E,D=n.padding,C=void 0===D?0:D,k=(0,l["default"])("number"!=typeof C?C:(0,f["default"])(C,s.basePlacements)),A=w===s.popper?s.reference:s.popper,S=e.rects.popper,N=e.elements[_?A:w],O=(0,r["default"])((0,c.isElement)(N)?N:N.contextElement||(0,o["default"])(e.elements.popper),g,b,v),F=(0,i["default"])(e.elements.reference),M=(0,a["default"])({reference:F,element:S,strategy:"absolute",placement:p}),T=(0,u["default"])(Object.assign({},S,M)),I=w===s.popper?T:F,B={top:O.top-I.top+k.top,bottom:I.bottom-O.bottom+k.bottom,left:O.left-I.left+k.left,right:I.right-O.right+k.right},L=e.modifiersData.offset;if(w===s.popper&&L){var P=L[p];Object.keys(B).forEach((function(e){var t=[s.right,s.bottom].indexOf(e)>=0?1:-1,n=[s.top,s.bottom].indexOf(e)>=0?"y":"x";B[e]+=P[n]*t}))}return B};var r=d(n(96087)),o=d(n(45385)),i=d(n(41012)),a=d(n(4320)),u=d(n(1656)),s=n(63570),c=n(50695),l=d(n(45499)),f=d(n(92806));function d(e){return e&&e.__esModule?e:{"default":e}}},92806:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}},23387:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0?"x":"y"}},37436:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/left|right|bottom|top/g,(function(e){return n[e]}))};var n={left:"right",right:"left",bottom:"top",top:"bottom"}},45979:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/start|end/g,(function(e){return n[e]}))};var n={start:"end",end:"start"}},4529:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.split("-")[1]}},49055:function(e,t){"use strict";t.__esModule=!0,t.round=t.min=t.max=void 0;var n=Math.max;t.max=n;var r=Math.min;t.min=r;var o=Math.round;t.round=o},76197:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}},45499:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},(0,o["default"])(),e)};var r,o=(r=n(40321))&&r.__esModule?r:{"default":r}},3738:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=function(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}(e);return r.modifierPhases.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])};var r=n(63570)},1656:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}},13611:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=new Set;return e.filter((function(e){var r=t(e);if(!n.has(r))return n.add(r),!0}))}},77708:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(){var e=navigator.userAgentData;if(null!=e&&e.brands)return e.brands.map((function(e){return e.brand+"/"+e.version})).join(" ");return navigator.userAgent}},53131:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){e.forEach((function(t){[].concat(Object.keys(t),i).filter((function(e,t,n){return n.indexOf(e)===t})).forEach((function(n){switch(n){case"name":t.name;break;case"enabled":t.enabled;break;case"phase":o.modifierPhases.indexOf(t.phase);break;case"fn":t.fn;break;case"effect":null!=t.effect&&t.effect;break;case"requires":null!=t.requires&&Array.isArray(t.requires);break;case"requiresIfExists":Array.isArray(t.requiresIfExists)}t.requires&&t.requires.forEach((function(t){e.find((function(e){return e.name===t}))}))}))}))};(r=n(23387))&&r.__esModule;var r,o=n(63570);var i=["name","enabled","phase","fn","effect","requires","options"]},54155:function(e,t,n){"use strict";t.__esModule=!0,t.within=o,t.withinMaxClamp=function(e,t,n){var r=o(e,t,n);return r>n?n:r};var r=n(49055);function o(e,t,n){return(0,r.max)(e,(0,r.min)(t,n))}},79030:function(e,t,n){"use strict";var r=n(48609),o=n(29141),i=TypeError;e.exports=function(e){if(r(e))return e;throw i(o(e)+" is not a function")}},82269:function(e,t,n){"use strict";var r=n(99418),o=n(29141),i=TypeError;e.exports=function(e){if(r(e))return e;throw i(o(e)+" is not a constructor")}},1198:function(e,t,n){"use strict";var r=n(48609),o=String,i=TypeError;e.exports=function(e){if("object"==typeof e||r(e))return e;throw i("Can't set "+o(e)+" as a prototype")}},21650:function(e,t,n){"use strict";var r=n(42847),o=n(8356),i=n(92867).f,a=r("unscopables"),u=Array.prototype;u[a]==undefined&&i(u,a,{configurable:!0,value:o(null)}),e.exports=function(e){u[a][e]=!0}},1491:function(e,t,n){"use strict";var r=n(59524).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},99078:function(e,t,n){"use strict";var r=n(52625),o=TypeError;e.exports=function(e,t){if(r(t,e))return e;throw o("Incorrect invocation")}},8782:function(e,t,n){"use strict";var r=n(46840),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw i(o(e)+" is not an object")}},13338:function(e){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},29613:function(e,t,n){"use strict";var r=n(3440);e.exports=r((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},89746:function(e,t,n){"use strict";var r,o,i,a=n(13338),u=n(4098),s=n(25511),c=n(48609),l=n(46840),f=n(35821),d=n(13149),p=n(29141),h=n(90460),v=n(83972),m=n(92867).f,g=n(52625),y=n(45526),b=n(97916),x=n(42847),w=n(93054),E=n(29017),_=E.enforce,D=E.get,C=s.Int8Array,k=C&&C.prototype,A=s.Uint8ClampedArray,S=A&&A.prototype,N=C&&y(C),O=k&&y(k),F=Object.prototype,M=s.TypeError,T=x("toStringTag"),I=w("TYPED_ARRAY_TAG"),B="TypedArrayConstructor",L=a&&!!b&&"Opera"!==d(s.opera),P=!1,j={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},V={BigInt64Array:8,BigUint64Array:8},R=function(e){if(!l(e))return!1;var t=d(e);return"DataView"===t||f(j,t)||f(V,t)},z=function(e){if(!l(e))return!1;var t=d(e);return f(j,t)||f(V,t)};for(r in j)(i=(o=s[r])&&o.prototype)?_(i)[B]=o:L=!1;for(r in V)(i=(o=s[r])&&o.prototype)&&(_(i)[B]=o);if((!L||!c(N)||N===Function.prototype)&&(N=function(){throw M("Incorrect invocation")},L))for(r in j)s[r]&&b(s[r],N);if((!L||!O||O===F)&&(O=N.prototype,L))for(r in j)s[r]&&b(s[r].prototype,O);if(L&&y(S)!==O&&b(S,O),u&&!f(O,T))for(r in P=!0,m(O,T,{get:function(){return l(this)?this[I]:undefined}}),j)s[r]&&h(s[r],I,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:L,TYPED_ARRAY_TAG:P&&I,aTypedArray:function(e){if(z(e))return e;throw M("Target is not a typed array")},aTypedArrayConstructor:function(e){if(c(e)&&(!b||g(N,e)))return e;throw M(p(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(u){if(n)for(var o in j){var i=s[o];if(i&&f(i.prototype,e))try{delete i.prototype[e]}catch(a){try{i.prototype[e]=t}catch(c){}}}O[e]&&!n||v(O,e,n?t:L&&k[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(u){if(b){if(n)for(r in j)if((o=s[r])&&f(o,e))try{delete o[e]}catch(i){}if(N[e]&&!n)return;try{return v(N,e,n?t:L&&N[e]||t)}catch(i){}}for(r in j)!(o=s[r])||o[e]&&!n||v(o,e,t)}},getTypedArrayConstructor:function K(e){var t=y(e);if(l(t)){var n=D(t);return n&&f(n,B)?n[B]:K(t)}},isView:R,isTypedArray:z,TypedArray:N,TypedArrayPrototype:O}},78463:function(e,t,n){"use strict";var r=n(25511),o=n(38457),i=n(4098),a=n(13338),u=n(2142),s=n(90460),c=n(83856),l=n(3440),f=n(99078),d=n(53893),p=n(60780),h=n(93614),v=n(65359),m=n(45526),g=n(97916),y=n(86658).f,b=n(92867).f,x=n(7381),w=n(51450),E=n(13453),_=n(29017),D=u.PROPER,C=u.CONFIGURABLE,k=_.get,A=_.set,S="ArrayBuffer",N="DataView",O="prototype",F="Wrong index",M=r[S],T=M,I=T&&T[O],B=r[N],L=B&&B[O],P=Object.prototype,j=r.Array,V=r.RangeError,R=o(x),z=o([].reverse),K=v.pack,U=v.unpack,Y=function(e){return[255&e]},H=function(e){return[255&e,e>>8&255]},W=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},$=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},G=function(e){return K(e,23,4)},q=function(e){return K(e,52,8)},Z=function(e,t){b(e[O],t,{get:function(){return k(this)[t]}})},X=function(e,t,n,r){var o=h(n),i=k(e);if(o+t>i.byteLength)throw V(F);var a=k(i.buffer).bytes,u=o+i.byteOffset,s=w(a,u,u+t);return r?s:z(s)},Q=function(e,t,n,r,o,i){var a=h(n),u=k(e);if(a+t>u.byteLength)throw V(F);for(var s=k(u.buffer).bytes,c=a+u.byteOffset,l=r(+o),f=0;fne;)(ee=te[ne++])in T||s(T,ee,M[ee]);I.constructor=T}g&&m(L)!==P&&g(L,P);var re=new B(new T(2)),oe=o(L.setInt8);re.setInt8(0,2147483648),re.setInt8(1,2147483649),!re.getInt8(0)&&re.getInt8(1)||c(L,{setInt8:function(e,t){oe(this,e,t<<24>>24)},setUint8:function(e,t){oe(this,e,t<<24>>24)}},{unsafe:!0})}else I=(T=function(e){f(this,I);var t=h(e);A(this,{bytes:R(j(t),0),byteLength:t}),i||(this.byteLength=t)})[O],L=(B=function(e,t,n){f(this,L),f(e,I);var r=k(e).byteLength,o=d(t);if(o<0||o>r)throw V("Wrong offset");if(o+(n=n===undefined?r-o:p(n))>r)throw V("Wrong length");A(this,{buffer:e,byteLength:n,byteOffset:o}),i||(this.buffer=e,this.byteLength=n,this.byteOffset=o)})[O],i&&(Z(T,"byteLength"),Z(B,"buffer"),Z(B,"byteLength"),Z(B,"byteOffset")),c(L,{getInt8:function(e){return X(this,1,e)[0]<<24>>24},getUint8:function(e){return X(this,1,e)[0]},getInt16:function(e){var t=X(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=X(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return $(X(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return $(X(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return U(X(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return U(X(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){Q(this,1,e,Y,t)},setUint8:function(e,t){Q(this,1,e,Y,t)},setInt16:function(e,t){Q(this,2,e,H,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){Q(this,2,e,H,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){Q(this,4,e,W,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){Q(this,4,e,W,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){Q(this,4,e,G,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){Q(this,8,e,q,t,arguments.length>2?arguments[2]:undefined)}});E(T,S),E(B,N),e.exports={ArrayBuffer:T,DataView:B}},96833:function(e,t,n){"use strict";var r=n(39134),o=n(46085),i=n(83440),a=n(80323),u=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),s=i(n),c=o(e,s),l=o(t,s),f=arguments.length>2?arguments[2]:undefined,d=u((f===undefined?s:o(f,s))-l,s-c),p=1;for(l0;)l in n?n[c]=n[l]:a(n,c),c+=p,l+=p;return n}},7381:function(e,t,n){"use strict";var r=n(39134),o=n(46085),i=n(83440);e.exports=function(e){for(var t=r(this),n=i(t),a=arguments.length,u=o(a>1?arguments[1]:undefined,n),s=a>2?arguments[2]:undefined,c=s===undefined?n:o(s,n);c>u;)t[u++]=e;return t}},11421:function(e,t,n){"use strict";var r=n(40975).forEach,o=n(38575)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},13093:function(e,t,n){"use strict";var r=n(83440);e.exports=function(e,t){for(var n=0,o=r(t),i=new e(o);o>n;)i[n]=t[n++];return i}},58578:function(e,t,n){"use strict";var r=n(66343),o=n(68609),i=n(39134),a=n(6350),u=n(92443),s=n(99418),c=n(83440),l=n(15072),f=n(49267),d=n(26405),p=Array;e.exports=function(e){var t=i(e),n=s(this),h=arguments.length,v=h>1?arguments[1]:undefined,m=v!==undefined;m&&(v=r(v,h>2?arguments[2]:undefined));var g,y,b,x,w,E,_=d(t),D=0;if(!_||this===p&&u(_))for(g=c(t),y=n?new this(g):p(g);g>D;D++)E=m?v(t[D],D):t[D],l(y,D,E);else for(w=(x=f(t,_)).next,y=n?new this:[];!(b=o(w,x)).done;D++)E=m?a(x,v,[b.value,D],!0):b.value,l(y,D,E);return y.length=D,y}},16077:function(e,t,n){"use strict";var r=n(19091),o=n(46085),i=n(83440),a=function(e){return function(t,n,a){var u,s=r(t),c=i(s),l=o(a,c);if(e&&n!=n){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((e||l in s)&&s[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},40975:function(e,t,n){"use strict";var r=n(66343),o=n(38457),i=n(89753),a=n(39134),u=n(83440),s=n(56940),c=o([].push),l=function(e){var t=1==e,n=2==e,o=3==e,l=4==e,f=6==e,d=7==e,p=5==e||f;return function(h,v,m,g){for(var y,b,x=a(h),w=i(x),E=r(v,m),_=u(w),D=0,C=g||s,k=t?C(h,_):n||d?C(h,0):undefined;_>D;D++)if((p||D in w)&&(b=E(y=w[D],D,x),e))if(t)k[D]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return D;case 2:c(k,y)}else switch(e){case 4:return!1;case 7:c(k,y)}return f?-1:o||l?l:k}};e.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},10303:function(e,t,n){"use strict";var r=n(42177),o=n(19091),i=n(53893),a=n(83440),u=n(38575),s=Math.min,c=[].lastIndexOf,l=!!c&&1/[1].lastIndexOf(1,-0)<0,f=u("lastIndexOf"),d=l||!f;e.exports=d?function(e){if(l)return r(c,this,arguments)||0;var t=o(this),n=a(t),u=n-1;for(arguments.length>1&&(u=s(u,i(arguments[1]))),u<0&&(u=n+u);u>=0;u--)if(u in t&&t[u]===e)return u||0;return-1}:c},731:function(e,t,n){"use strict";var r=n(3440),o=n(42847),i=n(88088),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},38575:function(e,t,n){"use strict";var r=n(3440);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){return 1},1)}))}},55202:function(e,t,n){"use strict";var r=n(79030),o=n(39134),i=n(89753),a=n(83440),u=TypeError,s=function(e){return function(t,n,s,c){r(n);var l=o(t),f=i(l),d=a(l),p=e?d-1:0,h=e?-1:1;if(s<2)for(;;){if(p in f){c=f[p],p+=h;break}if(p+=h,e?p<0:d<=p)throw u("Reduce of empty array with no initial value")}for(;e?p>=0:d>p;p+=h)p in f&&(c=n(c,f[p],p,l));return c}};e.exports={left:s(!1),right:s(!0)}},76628:function(e,t,n){"use strict";var r=n(4098),o=n(64739),i=TypeError,a=Object.getOwnPropertyDescriptor,u=r&&!function(){if(this!==undefined)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=u?function(e,t){if(o(e)&&!a(e,"length").writable)throw i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},51450:function(e,t,n){"use strict";var r=n(46085),o=n(83440),i=n(15072),a=Array,u=Math.max;e.exports=function(e,t,n){for(var s=o(e),c=r(t,s),l=r(n===undefined?s:n,s),f=a(u(l-c,0)),d=0;c0;)e[r]=e[--r];r!==i++&&(e[r]=n)}return e},a=function(e,t,n,r){for(var o=t.length,i=n.length,a=0,u=0;a1?arguments[1]:undefined);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!b(this,e)}}),i(d,n?{get:function(e){var t=b(this,e);return t&&t.value},set:function(e,t){return y(this,0===e?0:e,t)}}:{add:function(e){return y(this,e=0===e?0:e,e)}}),p&&r(d,"size",{get:function(){return v(this).size}}),f},setStrong:function(e,t,n){var r=t+" Iterator",o=g(t),i=g(r);l(e,t,(function(e,t){m(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?f("keys"==t?n.key:"values"==t?n.value:[n.key,n.value],!1):(e.target=undefined,f(undefined,!0))}),n?"entries":"values",!n,!0),d(t)}}},94034:function(e,t,n){"use strict";var r=n(38457),o=n(83856),i=n(94986).getWeakData,a=n(99078),u=n(8782),s=n(92625),c=n(46840),l=n(6111),f=n(40975),d=n(35821),p=n(29017),h=p.set,v=p.getterFor,m=f.find,g=f.findIndex,y=r([].splice),b=0,x=function(e){return e.frozen||(e.frozen=new w)},w=function(){this.entries=[]},E=function(e,t){return m(e.entries,(function(e){return e[0]===t}))};w.prototype={get:function(e){var t=E(this,e);if(t)return t[1]},has:function(e){return!!E(this,e)},set:function(e,t){var n=E(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&y(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,n,r){var f=e((function(e,o){a(e,p),h(e,{type:t,id:b++,frozen:undefined}),s(o)||l(o,e[r],{that:e,AS_ENTRIES:n})})),p=f.prototype,m=v(t),g=function(e,t,n){var r=m(e),o=i(u(t),!0);return!0===o?x(r).set(t,n):o[r.id]=n,e};return o(p,{"delete":function(e){var t=m(this);if(!c(e))return!1;var n=i(e);return!0===n?x(t)["delete"](e):n&&d(n,t.id)&&delete n[t.id]},has:function(e){var t=m(this);if(!c(e))return!1;var n=i(e);return!0===n?x(t).has(e):n&&d(n,t.id)}}),o(p,n?{get:function(e){var t=m(this);if(c(e)){var n=i(e);return!0===n?x(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return g(this,e,t)}}:{add:function(e){return g(this,e,!0)}}),f}}},18207:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(38457),a=n(50330),u=n(83972),s=n(94986),c=n(6111),l=n(99078),f=n(48609),d=n(92625),p=n(46840),h=n(3440),v=n(32938),m=n(13453),g=n(5283);e.exports=function(e,t,n){var y=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),x=y?"set":"add",w=o[e],E=w&&w.prototype,_=w,D={},C=function(e){var t=i(E[e]);u(E,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(b&&!p(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return b&&!p(e)?undefined:t(this,0===e?0:e)}:"has"==e?function(e){return!(b&&!p(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(a(e,!f(w)||!(b||E.forEach&&!h((function(){(new w).entries().next()})))))_=n.getConstructor(t,e,y,x),s.enable();else if(a(e,!0)){var k=new _,A=k[x](b?{}:-0,1)!=k,S=h((function(){k.has(1)})),N=v((function(e){new w(e)})),O=!b&&h((function(){for(var e=new w,t=5;t--;)e[x](t,t);return!e.has(-0)}));N||((_=t((function(e,t){l(e,E);var n=g(new w,e,_);return d(t)||c(t,n[x],{that:n,AS_ENTRIES:y}),n}))).prototype=E,E.constructor=_),(S||O)&&(C("delete"),C("has"),y&&C("get")),(O||A)&&C(x),b&&E.clear&&delete E.clear}return D[e]=_,r({global:!0,constructor:!0,forced:_!=w},D),m(_,e),b||n.setStrong(_,e,y),_}},25361:function(e,t,n){"use strict";var r=n(35821),o=n(32884),i=n(18593),a=n(92867);e.exports=function(e,t,n){for(var u=o(t),s=a.f,c=i.f,l=0;l"+s+""+t+">"}},49764:function(e){"use strict";e.exports=function(e,t){return{value:e,done:t}}},90460:function(e,t,n){"use strict";var r=n(4098),o=n(92867),i=n(12311);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},12311:function(e){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},15072:function(e,t,n){"use strict";var r=n(21266),o=n(92867),i=n(12311);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},39901:function(e,t,n){"use strict";var r=n(38457),o=n(3440),i=n(99335).start,a=RangeError,u=isFinite,s=Math.abs,c=Date.prototype,l=c.toISOString,f=r(c.getTime),d=r(c.getUTCDate),p=r(c.getUTCFullYear),h=r(c.getUTCHours),v=r(c.getUTCMilliseconds),m=r(c.getUTCMinutes),g=r(c.getUTCMonth),y=r(c.getUTCSeconds);e.exports=o((function(){return"0385-07-25T07:06:39.999Z"!=l.call(new Date(-50000000000001))}))||!o((function(){l.call(new Date(NaN))}))?function(){if(!u(f(this)))throw a("Invalid time value");var e=this,t=p(e),n=v(e),r=t<0?"-":t>9999?"+":"";return r+i(s(t),r?6:4,0)+"-"+i(g(e)+1,2,0)+"-"+i(d(e),2,0)+"T"+i(h(e),2,0)+":"+i(m(e),2,0)+":"+i(y(e),2,0)+"."+i(n,3,0)+"Z"}:l},52653:function(e,t,n){"use strict";var r=n(8782),o=n(79910),i=TypeError;e.exports=function(e){if(r(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw i("Incorrect hint");return o(this,e)}},39836:function(e,t,n){"use strict";var r=n(1402),o=n(92867);e.exports=function(e,t,n){return n.get&&r(n.get,t,{getter:!0}),n.set&&r(n.set,t,{setter:!0}),o.f(e,t,n)}},83972:function(e,t,n){"use strict";var r=n(48609),o=n(92867),i=n(1402),a=n(60095);e.exports=function(e,t,n,u){u||(u={});var s=u.enumerable,c=u.name!==undefined?u.name:t;if(r(n)&&i(n,c,u),u.global)s?e[t]=n:a(t,n);else{try{u.unsafe?e[t]&&(s=!0):delete e[t]}catch(l){}s?e[t]=n:o.f(e,t,{value:n,enumerable:!1,configurable:!u.nonConfigurable,writable:!u.nonWritable})}return e}},83856:function(e,t,n){"use strict";var r=n(83972);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},60095:function(e,t,n){"use strict";var r=n(25511),o=Object.defineProperty;e.exports=function(e,t){try{o(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},80323:function(e,t,n){"use strict";var r=n(29141),o=TypeError;e.exports=function(e,t){if(!delete e[t])throw o("Cannot delete property "+r(t)+" of "+r(e))}},4098:function(e,t,n){"use strict";var r=n(3440);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4246:function(e){"use strict";var t="object"==typeof document&&document.all,n=void 0===t&&t!==undefined;e.exports={all:t,IS_HTMLDDA:n}},9639:function(e,t,n){"use strict";var r=n(25511),o=n(46840),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},30684:function(e){"use strict";var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},98861:function(e,t,n){"use strict";var r=n(46032).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},87789:function(e,t,n){"use strict";var r=n(79346),o=n(68173);e.exports=!r&&!o&&"object"==typeof window&&"object"==typeof document},40073:function(e){"use strict";e.exports="function"==typeof Bun&&Bun&&"string"==typeof Bun.version},79346:function(e){"use strict";e.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},79920:function(e,t,n){"use strict";var r=n(46032);e.exports=/MSIE|Trident/.test(r)},50988:function(e,t,n){"use strict";var r=n(46032),o=n(25511);e.exports=/ipad|iphone|ipod/i.test(r)&&o.Pebble!==undefined},39050:function(e,t,n){"use strict";var r=n(46032);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},68173:function(e,t,n){"use strict";var r=n(86790),o=n(25511);e.exports="process"==r(o.process)},63938:function(e,t,n){"use strict";var r=n(46032);e.exports=/web0s(?!.*chrome)/i.test(r)},46032:function(e,t,n){"use strict";var r=n(53242);e.exports=r("navigator","userAgent")||""},88088:function(e,t,n){"use strict";var r,o,i=n(25511),a=n(46032),u=i.process,s=i.Deno,c=u&&u.versions||s&&s.version,l=c&&c.v8;l&&(o=(r=l.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},51737:function(e,t,n){"use strict";var r=n(46032).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},51264:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},579:function(e,t,n){"use strict";var r=n(38457),o=Error,i=r("".replace),a=String(o("zxcasd").stack),u=/\n\s*at [^:]*:[^\n]*/,s=u.test(a);e.exports=function(e,t){if(s&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=i(e,u,"");return e}},77385:function(e,t,n){"use strict";var r=n(3440),o=n(12311);e.exports=!r((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},65439:function(e,t,n){"use strict";var r=n(25511),o=n(18593).f,i=n(90460),a=n(83972),u=n(60095),s=n(25361),c=n(50330);e.exports=function(e,t){var n,l,f,d,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||u(h,{}):(r[h]||{}).prototype)for(l in t){if(d=t[l],f=e.dontCallGetSet?(p=o(n,l))&&p.value:n[l],!c(v?l:h+(m?".":"#")+l,e.forced)&&f!==undefined){if(typeof d==typeof f)continue;s(d,f)}(e.sham||f&&f.sham)&&i(d,"sham",!0),a(n,l,d,e)}}},3440:function(e){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},3306:function(e,t,n){"use strict";n(34067);var r=n(42481),o=n(83972),i=n(34062),a=n(3440),u=n(42847),s=n(90460),c=u("species"),l=RegExp.prototype;e.exports=function(e,t,n,f){var d=u(e),p=!a((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),h=p&&!a((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags="",n[d]=/./[d]),n.exec=function(){return t=!0,null},n[d](""),!t}));if(!p||!h||n){var v=r(/./[d]),m=t(d,""[e],(function(e,t,n,o,a){var u=r(e),s=t.exec;return s===i||s===l.exec?p&&!a?{done:!0,value:v(t,n,o)}:{done:!0,value:u(n,t,o)}:{done:!1}}));o(String.prototype,e,m[0]),o(l,d,m[1])}f&&s(l[d],"sham",!0)}},44094:function(e,t,n){"use strict";var r=n(64739),o=n(83440),i=n(30684),a=n(66343);e.exports=function u(e,t,n,s,c,l,f,d){for(var p,h=c,v=0,m=!!f&&a(f,d);v0&&r(p)?h=u(e,t,p,o(p),h,l-1)-1:(i(h+1),e[h]=p),h++),v++;return h}},14097:function(e,t,n){"use strict";var r=n(3440);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},42177:function(e,t,n){"use strict";var r=n(61120),o=Function.prototype,i=o.apply,a=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(i):function(){return a.apply(i,arguments)})},66343:function(e,t,n){"use strict";var r=n(42481),o=n(79030),i=n(61120),a=r(r.bind);e.exports=function(e,t){return o(e),t===undefined?e:i?a(e,t):function(){return e.apply(t,arguments)}}},61120:function(e,t,n){"use strict";var r=n(3440);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},87637:function(e,t,n){"use strict";var r=n(38457),o=n(79030),i=n(46840),a=n(35821),u=n(92098),s=n(61120),c=Function,l=r([].concat),f=r([].join),d={},p=function(e,t,n){if(!a(d,t)){for(var r=[],o=0;o]*>)/g,l=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,r,f,d){var p=n+e.length,h=r.length,v=l;return f!==undefined&&(f=o(f),v=c),u(d,v,(function(o,u){var c;switch(a(u,0)){case"$":return"$";case"&":return e;case"`":return s(t,0,n);case"'":return s(t,p);case"<":c=f[s(u,1,-1)];break;default:var l=+u;if(0===l)return o;if(l>h){var d=i(l/10);return 0===d?o:d<=h?r[d-1]===undefined?a(u,1):r[d-1]+a(u,1):o}c=r[l-1]}return c===undefined?"":c}))}},25511:function(e,t,n){"use strict";var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},35821:function(e,t,n){"use strict";var r=n(38457),o=n(39134),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},94083:function(e){"use strict";e.exports={}},74394:function(e,t,n){"use strict";var r=n(25511);e.exports=function(e,t){var n=r.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))}},44648:function(e,t,n){"use strict";var r=n(53242);e.exports=r("document","documentElement")},46999:function(e,t,n){"use strict";var r=n(4098),o=n(3440),i=n(9639);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},65359:function(e){"use strict";var t=Array,n=Math.abs,r=Math.pow,o=Math.floor,i=Math.log,a=Math.LN2;e.exports={pack:function(e,u,s){var c,l,f,d=t(s),p=8*s-u-1,h=(1<>1,m=23===u?r(2,-24)-r(2,-77):0,g=e<0||0===e&&1/e<0?1:0,y=0;for((e=n(e))!=e||e===Infinity?(l=e!=e?1:0,c=h):(c=o(i(e)/a),e*(f=r(2,-c))<1&&(c--,f*=2),(e+=c+v>=1?m/f:m*r(2,1-v))*f>=2&&(c++,f/=2),c+v>=h?(l=0,c=h):c+v>=1?(l=(e*f-1)*r(2,u),c+=v):(l=e*r(2,v-1)*r(2,u),c=0));u>=8;)d[y++]=255&l,l/=256,u-=8;for(c=c<0;)d[y++]=255&c,c/=256,p-=8;return d[--y]|=128*g,d},unpack:function(e,t){var n,o=e.length,i=8*o-t-1,a=(1<>1,s=i-7,c=o-1,l=e[c--],f=127&l;for(l>>=7;s>0;)f=256*f+e[c--],s-=8;for(n=f&(1<<-s)-1,f>>=-s,s+=t;s>0;)n=256*n+e[c--],s-=8;if(0===f)f=1-u;else{if(f===a)return n?NaN:l?-Infinity:Infinity;n+=r(2,t),f-=u}return(l?-1:1)*n*r(2,f-t)}}},89753:function(e,t,n){"use strict";var r=n(38457),o=n(3440),i=n(86790),a=Object,u=r("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?u(e,""):a(e)}:a},5283:function(e,t,n){"use strict";var r=n(48609),o=n(46840),i=n(97916);e.exports=function(e,t,n){var a,u;return i&&r(a=t.constructor)&&a!==n&&o(u=a.prototype)&&u!==n.prototype&&i(e,u),e}},91634:function(e,t,n){"use strict";var r=n(38457),o=n(48609),i=n(45065),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},31738:function(e,t,n){"use strict";var r=n(46840),o=n(90460);e.exports=function(e,t){r(t)&&"cause"in t&&o(e,"cause",t.cause)}},94986:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(94083),a=n(46840),u=n(35821),s=n(92867).f,c=n(86658),l=n(26661),f=n(77311),d=n(93054),p=n(14097),h=!1,v=d("meta"),m=0,g=function(e){s(e,v,{value:{objectID:"O"+m++,weakData:{}}})},y=e.exports={enable:function(){y.enable=function(){},h=!0;var e=c.f,t=o([].splice),n={};n[v]=1,e(n).length&&(c.f=function(n){for(var r=e(n),o=0,i=r.length;oy;y++)if((x=O(e[y]))&&c(v,x))return x;return new h(!1)}m=l(e,g)}for(w=C?e.next:m.next;!(E=o(w,m)).done;){try{x=O(E.value)}catch(F){d(m,"throw",F)}if("object"==typeof x&&x&&c(v,x))return x}return new h(!1)}},94648:function(e,t,n){"use strict";var r=n(68609),o=n(8782),i=n(87869);e.exports=function(e,t,n){var a,u;o(e);try{if(!(a=i(e,"return"))){if("throw"===t)throw n;return n}a=r(a,e)}catch(s){u=!0,a=s}if("throw"===t)throw n;if(u)throw a;return o(a),n}},40897:function(e,t,n){"use strict";var r=n(98852).IteratorPrototype,o=n(8356),i=n(12311),a=n(13453),u=n(87804),s=function(){return this};e.exports=function(e,t,n,c){var l=t+" Iterator";return e.prototype=o(r,{next:i(+!c,n)}),a(e,l,!1,!0),u[l]=s,e}},63424:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(65787),a=n(2142),u=n(48609),s=n(40897),c=n(45526),l=n(97916),f=n(13453),d=n(90460),p=n(83972),h=n(42847),v=n(87804),m=n(98852),g=a.PROPER,y=a.CONFIGURABLE,b=m.IteratorPrototype,x=m.BUGGY_SAFARI_ITERATORS,w=h("iterator"),E="keys",_="values",D="entries",C=function(){return this};e.exports=function(e,t,n,a,h,m,k){s(n,t,a);var A,S,N,O=function(e){if(e===h&&B)return B;if(!x&&e in T)return T[e];switch(e){case E:case _:case D:return function(){return new n(this,e)}}return function(){return new n(this)}},F=t+" Iterator",M=!1,T=e.prototype,I=T[w]||T["@@iterator"]||h&&T[h],B=!x&&I||O(h),L="Array"==t&&T.entries||I;if(L&&(A=c(L.call(new e)))!==Object.prototype&&A.next&&(i||c(A)===b||(l?l(A,b):u(A[w])||p(A,w,C)),f(A,F,!0,!0),i&&(v[F]=C)),g&&h==_&&I&&I.name!==_&&(!i&&y?d(T,"name",_):(M=!0,B=function(){return o(I,this)})),h)if(S={values:O(_),keys:m?B:O(E),entries:O(D)},k)for(N in S)(x||M||!(N in T))&&p(T,N,S[N]);else r({target:t,proto:!0,forced:x||M},S);return i&&!k||T[w]===B||p(T,w,B,{name:h}),v[t]=B,S}},98852:function(e,t,n){"use strict";var r,o,i,a=n(3440),u=n(48609),s=n(46840),c=n(8356),l=n(45526),f=n(83972),d=n(42847),p=n(65787),h=d("iterator"),v=!1;[].keys&&("next"in(i=[].keys())?(o=l(l(i)))!==Object.prototype&&(r=o):v=!0),!s(r)||a((function(){var e={};return r[h].call(e)!==e}))?r={}:p&&(r=c(r)),u(r[h])||f(r,h,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:v}},87804:function(e){"use strict";e.exports={}},83440:function(e,t,n){"use strict";var r=n(60780);e.exports=function(e){return r(e.length)}},1402:function(e,t,n){"use strict";var r=n(3440),o=n(48609),i=n(35821),a=n(4098),u=n(2142).CONFIGURABLE,s=n(91634),c=n(29017),l=c.enforce,f=c.get,d=Object.defineProperty,p=a&&!r((function(){return 8!==d((function(){}),"length",{value:8}).length})),h=String(String).split("String"),v=e.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!i(e,"name")||u&&e.name!==t)&&(a?d(e,"name",{value:t,configurable:!0}):e.name=t),p&&n&&i(n,"arity")&&e.length!==n.arity&&d(e,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?a&&d(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=undefined)}catch(o){}var r=l(e);return i(r,"source")||(r.source=h.join("string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return o(this)&&f(this).source||s(this)}),"toString")},48277:function(e){"use strict";var t=Math.expm1,n=Math.exp;e.exports=!t||t(10)>22025.465794806718||t(10)<22025.465794806718||-2e-17!=t(-2e-17)?function(e){var t=+e;return 0==t?t:t>-1e-6&&t<1e-6?t+t*t/2:n(t)-1}:t},36344:function(e,t,n){"use strict";var r=n(54768),o=Math.abs,i=Math.pow,a=i(2,-52),u=i(2,-23),s=i(2,127)*(2-u),c=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=+e,l=o(i),f=r(i);return ls||n!=n?f*Infinity:f*n}},84234:function(e){"use strict";var t=Math.log,n=Math.LOG10E;e.exports=Math.log10||function(e){return t(e)*n}},77477:function(e){"use strict";var t=Math.log;e.exports=Math.log1p||function(e){var n=+e;return n>-1e-8&&n<1e-8?n-n*n/2:t(1+n)}},54768:function(e){"use strict";e.exports=Math.sign||function(e){var t=+e;return 0==t||t!=t?t:t<0?-1:1}},6730:function(e){"use strict";var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var r=+e;return(r>0?n:t)(r)}},5934:function(e,t,n){"use strict";var r,o,i,a,u,s,c,l,f=n(25511),d=n(66343),p=n(18593).f,h=n(3017).set,v=n(39050),m=n(50988),g=n(63938),y=n(68173),b=f.MutationObserver||f.WebKitMutationObserver,x=f.document,w=f.process,E=f.Promise,_=p(f,"queueMicrotask"),D=_&&_.value;D||(r=function(){var e,t;for(y&&(e=w.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},v||y||g||!b||!x?!m&&E&&E.resolve?((c=E.resolve(undefined)).constructor=E,l=d(c.then,c),a=function(){l(r)}):y?a=function(){w.nextTick(r)}:(h=d(h,f),a=function(){h(r)}):(u=!0,s=x.createTextNode(""),new b(r).observe(s,{characterData:!0}),a=function(){s.data=u=!u})),e.exports=D||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},26149:function(e,t,n){"use strict";var r=n(79030),o=TypeError,i=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw o("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new i(e)}},88124:function(e,t,n){"use strict";var r=n(39599);e.exports=function(e,t){return e===undefined?arguments.length<2?"":t:r(e)}},96215:function(e,t,n){"use strict";var r=n(23939),o=TypeError;e.exports=function(e){if(r(e))throw o("The method doesn't accept regular expressions");return e}},90059:function(e,t,n){"use strict";var r=n(25511).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},39302:function(e,t,n){"use strict";var r=n(25511),o=n(3440),i=n(38457),a=n(39599),u=n(93842).trim,s=n(87780),c=i("".charAt),l=r.parseFloat,f=r.Symbol,d=f&&f.iterator,p=1/l(s+"-0")!=-Infinity||d&&!o((function(){l(Object(d))}));e.exports=p?function(e){var t=u(a(e)),n=l(t);return 0===n&&"-"==c(t,0)?-0:n}:l},89466:function(e,t,n){"use strict";var r=n(25511),o=n(3440),i=n(38457),a=n(39599),u=n(93842).trim,s=n(87780),c=r.parseInt,l=r.Symbol,f=l&&l.iterator,d=/^[+-]?0x/i,p=i(d.exec),h=8!==c(s+"08")||22!==c(s+"0x16")||f&&!o((function(){c(Object(f))}));e.exports=h?function(e,t){var n=u(a(e));return c(n,t>>>0||(p(d,n)?16:10))}:c},24293:function(e,t,n){"use strict";var r=n(4098),o=n(38457),i=n(68609),a=n(3440),u=n(27911),s=n(13963),c=n(70704),l=n(39134),f=n(89753),d=Object.assign,p=Object.defineProperty,h=o([].concat);e.exports=!d||a((function(){if(r&&1!==d({b:1},d(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=d({},e)[n]||u(d({},t)).join("")!=o}))?function(e,t){for(var n=l(e),o=arguments.length,a=1,d=s.f,p=c.f;o>a;)for(var v,m=f(arguments[a++]),g=d?h(u(m),d(m)):u(m),y=g.length,b=0;y>b;)v=g[b++],r&&!i(p,m,v)||(n[v]=m[v]);return n}:d},8356:function(e,t,n){"use strict";var r,o=n(8782),i=n(9672),a=n(51264),u=n(94083),s=n(44648),c=n(9639),l=n(50331),f="prototype",d="script",p=l("IE_PROTO"),h=function(){},v=function(e){return"<"+d+">"+e+""+d+">"},m=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},g=function(){try{r=new ActiveXObject("htmlfile")}catch(i){}var e,t,n;g="undefined"!=typeof document?document.domain&&r?m(r):(t=c("iframe"),n="java"+d+":",t.style.display="none",s.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):m(r);for(var o=a.length;o--;)delete g[f][a[o]];return g()};u[p]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(h[f]=o(e),n=new h,h[f]=null,n[p]=e):n=g(),t===undefined?n:i.f(n,t)}},9672:function(e,t,n){"use strict";var r=n(4098),o=n(78590),i=n(92867),a=n(8782),u=n(19091),s=n(27911);t.f=r&&!o?Object.defineProperties:function(e,t){a(e);for(var n,r=u(t),o=s(t),c=o.length,l=0;c>l;)i.f(e,n=o[l++],r[n]);return e}},92867:function(e,t,n){"use strict";var r=n(4098),o=n(46999),i=n(78590),a=n(8782),u=n(21266),s=TypeError,c=Object.defineProperty,l=Object.getOwnPropertyDescriptor,f="enumerable",d="configurable",p="writable";t.f=r?i?function(e,t,n){if(a(e),t=u(t),a(n),"function"==typeof e&&"prototype"===t&&"value"in n&&p in n&&!n[p]){var r=l(e,t);r&&r[p]&&(e[t]=n.value,n={configurable:d in n?n[d]:r[d],enumerable:f in n?n[f]:r[f],writable:!1})}return c(e,t,n)}:c:function(e,t,n){if(a(e),t=u(t),a(n),o)try{return c(e,t,n)}catch(r){}if("get"in n||"set"in n)throw s("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},18593:function(e,t,n){"use strict";var r=n(4098),o=n(68609),i=n(70704),a=n(12311),u=n(19091),s=n(21266),c=n(35821),l=n(46999),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=u(e),t=s(t),l)try{return f(e,t)}catch(n){}if(c(e,t))return a(!o(i.f,e,t),e[t])}},26661:function(e,t,n){"use strict";var r=n(86790),o=n(19091),i=n(86658).f,a=n(51450),u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return u&&"Window"==r(e)?function(e){try{return i(e)}catch(t){return a(u)}}(e):i(o(e))}},86658:function(e,t,n){"use strict";var r=n(61698),o=n(51264).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},13963:function(e,t){"use strict";t.f=Object.getOwnPropertySymbols},45526:function(e,t,n){"use strict";var r=n(35821),o=n(48609),i=n(39134),a=n(50331),u=n(16308),s=a("IE_PROTO"),c=Object,l=c.prototype;e.exports=u?c.getPrototypeOf:function(e){var t=i(e);if(r(t,s))return t[s];var n=t.constructor;return o(n)&&t instanceof n?n.prototype:t instanceof c?l:null}},77311:function(e,t,n){"use strict";var r=n(3440),o=n(46840),i=n(86790),a=n(29613),u=Object.isExtensible,s=r((function(){u(1)}));e.exports=s||a?function(e){return!!o(e)&&(!a||"ArrayBuffer"!=i(e))&&(!u||u(e))}:u},52625:function(e,t,n){"use strict";var r=n(38457);e.exports=r({}.isPrototypeOf)},61698:function(e,t,n){"use strict";var r=n(38457),o=n(35821),i=n(19091),a=n(16077).indexOf,u=n(94083),s=r([].push);e.exports=function(e,t){var n,r=i(e),c=0,l=[];for(n in r)!o(u,n)&&o(r,n)&&s(l,n);for(;t.length>c;)o(r,n=t[c++])&&(~a(l,n)||s(l,n));return l}},27911:function(e,t,n){"use strict";var r=n(61698),o=n(51264);e.exports=Object.keys||function(e){return r(e,o)}},70704:function(e,t){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,o=r&&!n.call({1:2},1);t.f=o?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},17446:function(e,t,n){"use strict";var r=n(65787),o=n(25511),i=n(3440),a=n(51737);e.exports=r||!i((function(){if(!(a&&a<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete o[e]}}))},97916:function(e,t,n){"use strict";var r=n(38457),o=n(8782),i=n(1198);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=r(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(a){}return function(n,r){return o(n),i(r),t?e(n,r):n.__proto__=r,n}}():undefined)},33903:function(e,t,n){"use strict";var r=n(4098),o=n(38457),i=n(27911),a=n(19091),u=o(n(70704).f),s=o([].push),c=function(e){return function(t){for(var n,o=a(t),c=i(o),l=c.length,f=0,d=[];l>f;)n=c[f++],r&&!u(o,n)||s(d,e?[n,o[n]]:o[n]);return d}};e.exports={entries:c(!0),values:c(!1)}},28006:function(e,t,n){"use strict";var r=n(23371),o=n(13149);e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},79910:function(e,t,n){"use strict";var r=n(68609),o=n(48609),i=n(46840),a=TypeError;e.exports=function(e,t){var n,u;if("string"===t&&o(n=e.toString)&&!i(u=r(n,e)))return u;if(o(n=e.valueOf)&&!i(u=r(n,e)))return u;if("string"!==t&&o(n=e.toString)&&!i(u=r(n,e)))return u;throw a("Can't convert object to primitive value")}},32884:function(e,t,n){"use strict";var r=n(53242),o=n(38457),i=n(86658),a=n(13963),u=n(8782),s=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(u(e)),n=a.f;return n?s(t,n(e)):t}},18524:function(e,t,n){"use strict";var r=n(25511);e.exports=r},15058:function(e){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},9325:function(e,t,n){"use strict";var r=n(25511),o=n(46795),i=n(48609),a=n(50330),u=n(91634),s=n(42847),c=n(87789),l=n(79346),f=n(65787),d=n(88088),p=o&&o.prototype,h=s("species"),v=!1,m=i(r.PromiseRejectionEvent),g=a("Promise",(function(){var e=u(o),t=e!==String(o);if(!t&&66===d)return!0;if(f&&(!p["catch"]||!p["finally"]))return!0;if(!d||d<51||!/native code/.test(e)){var n=new o((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};if((n.constructor={})[h]=r,!(v=n.then((function(){}))instanceof r))return!0}return!t&&(c||l)&&!m}));e.exports={CONSTRUCTOR:g,REJECTION_EVENT:m,SUBCLASSING:v}},46795:function(e,t,n){"use strict";var r=n(25511);e.exports=r.Promise},77125:function(e,t,n){"use strict";var r=n(8782),o=n(46840),i=n(26149);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},40554:function(e,t,n){"use strict";var r=n(46795),o=n(32938),i=n(9325).CONSTRUCTOR;e.exports=i||!o((function(e){r.all(e).then(undefined,(function(){}))}))},64692:function(e,t,n){"use strict";var r=n(92867).f;e.exports=function(e,t,n){n in e||r(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})}},65921:function(e){"use strict";var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}},e.exports=t},84639:function(e,t,n){"use strict";var r=n(68609),o=n(8782),i=n(48609),a=n(86790),u=n(34062),s=TypeError;e.exports=function(e,t){var n=e.exec;if(i(n)){var c=r(n,e,t);return null!==c&&o(c),c}if("RegExp"===a(e))return r(u,e,t);throw s("RegExp#exec called on incompatible receiver")}},34062:function(e,t,n){"use strict";var r,o,i=n(68609),a=n(38457),u=n(39599),s=n(52673),c=n(86325),l=n(71928),f=n(8356),d=n(29017).get,p=n(62986),h=n(74842),v=l("native-string-replace",String.prototype.replace),m=RegExp.prototype.exec,g=m,y=a("".charAt),b=a("".indexOf),x=a("".replace),w=a("".slice),E=(o=/b*/g,i(m,r=/a/,"a"),i(m,o,"a"),0!==r.lastIndex||0!==o.lastIndex),_=c.BROKEN_CARET,D=/()??/.exec("")[1]!==undefined;(E||D||_||p||h)&&(g=function(e){var t,n,r,o,a,c,l,p=this,h=d(p),C=u(e),k=h.raw;if(k)return k.lastIndex=p.lastIndex,t=i(g,k,C),p.lastIndex=k.lastIndex,t;var A=h.groups,S=_&&p.sticky,N=i(s,p),O=p.source,F=0,M=C;if(S&&(N=x(N,"y",""),-1===b(N,"g")&&(N+="g"),M=w(C,p.lastIndex),p.lastIndex>0&&(!p.multiline||p.multiline&&"\n"!==y(C,p.lastIndex-1))&&(O="(?: "+O+")",M=" "+M,F++),n=new RegExp("^(?:"+O+")",N)),D&&(n=new RegExp("^"+O+"$(?!\\s)",N)),E&&(r=p.lastIndex),o=i(m,S?n:p,M),S?o?(o.input=w(o.input,F),o[0]=w(o[0],F),o.index=p.lastIndex,p.lastIndex+=o[0].length):p.lastIndex=0:E&&o&&(p.lastIndex=p.global?o.index+o[0].length:r),D&&o&&o.length>1&&i(v,o[0],n,(function(){for(a=1;ab)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},49290:function(e,t,n){"use strict";var r=n(92625),o=TypeError;e.exports=function(e){if(r(e))throw o("Can't call method on "+e);return e}},87091:function(e){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},23852:function(e,t,n){"use strict";var r,o=n(25511),i=n(42177),a=n(48609),u=n(40073),s=n(46032),c=n(92098),l=n(44020),f=o.Function,d=/MSIE .\./.test(s)||u&&((r=o.Bun.version.split(".")).length<3||0==r[0]&&(r[1]<3||3==r[1]&&0==r[2]));e.exports=function(e,t){var n=t?2:1;return d?function(r,o){var u=l(arguments.length,1)>n,s=a(r)?r:f(r),d=u?c(arguments,n):[],p=u?function(){i(s,this,d)}:s;return t?e(p,o):e(p)}:e}},97194:function(e,t,n){"use strict";var r=n(53242),o=n(92867),i=n(42847),a=n(4098),u=i("species");e.exports=function(e){var t=r(e),n=o.f;a&&t&&!t[u]&&n(t,u,{configurable:!0,get:function(){return this}})}},13453:function(e,t,n){"use strict";var r=n(92867).f,o=n(35821),i=n(42847)("toStringTag");e.exports=function(e,t,n){e&&!n&&(e=e.prototype),e&&!o(e,i)&&r(e,i,{configurable:!0,value:t})}},50331:function(e,t,n){"use strict";var r=n(71928),o=n(93054),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},45065:function(e,t,n){"use strict";var r=n(25511),o=n(60095),i="__core-js_shared__",a=r[i]||o(i,{});e.exports=a},71928:function(e,t,n){"use strict";var r=n(65787),o=n(45065);(e.exports=function(e,t){return o[e]||(o[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.27.1",mode:r?"pure":"global",copyright:"\xa9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.27.1/LICENSE",source:"https://github.com/zloirock/core-js"})},75693:function(e,t,n){"use strict";var r=n(8782),o=n(82269),i=n(92625),a=n(42847)("species");e.exports=function(e,t){var n,u=r(e).constructor;return u===undefined||i(n=r(u)[a])?t:o(n)}},86651:function(e,t,n){"use strict";var r=n(3440);e.exports=function(e){return r((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},59524:function(e,t,n){"use strict";var r=n(38457),o=n(53893),i=n(39599),a=n(49290),u=r("".charAt),s=r("".charCodeAt),c=r("".slice),l=function(e){return function(t,n){var r,l,f=i(a(t)),d=o(n),p=f.length;return d<0||d>=p?e?"":undefined:(r=s(f,d))<55296||r>56319||d+1===p||(l=s(f,d+1))<56320||l>57343?e?u(f,d):r:e?c(f,d,d+2):l-56320+(r-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},8751:function(e,t,n){"use strict";var r=n(46032);e.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(r)},99335:function(e,t,n){"use strict";var r=n(38457),o=n(60780),i=n(39599),a=n(82341),u=n(49290),s=r(a),c=r("".slice),l=Math.ceil,f=function(e){return function(t,n,r){var a,f,d=i(u(t)),p=o(n),h=d.length,v=r===undefined?" ":i(r);return p<=h||""==v?d:((f=s(v,l((a=p-h)/v.length))).length>a&&(f=c(f,0,a)),e?d+f:f+d)}};e.exports={start:f(!1),end:f(!0)}},82341:function(e,t,n){"use strict";var r=n(53893),o=n(39599),i=n(49290),a=RangeError;e.exports=function(e){var t=o(i(this)),n="",u=r(e);if(u<0||u==Infinity)throw a("Wrong number of repetitions");for(;u>0;(u>>>=1)&&(t+=t))1&u&&(n+=t);return n}},91898:function(e,t,n){"use strict";var r=n(93842).end,o=n(44082);e.exports=o("trimEnd")?function(){return r(this)}:"".trimEnd},44082:function(e,t,n){"use strict";var r=n(2142).PROPER,o=n(3440),i=n(87780);e.exports=function(e){return o((function(){return!!i[e]()||"\u200b\x85\u180e"!=="\u200b\x85\u180e"[e]()||r&&i[e].name!==e}))}},92368:function(e,t,n){"use strict";var r=n(93842).start,o=n(44082);e.exports=o("trimStart")?function(){return r(this)}:"".trimStart},93842:function(e,t,n){"use strict";var r=n(38457),o=n(49290),i=n(39599),a=n(87780),u=r("".replace),s="["+a+"]",c=RegExp("^"+s+s+"*"),l=RegExp(s+s+"*$"),f=function(e){return function(t){var n=i(o(t));return 1&e&&(n=u(n,c,"")),2&e&&(n=u(n,l,"")),n}};e.exports={start:f(1),end:f(2),trim:f(3)}},60265:function(e,t,n){"use strict";var r=n(88088),o=n(3440);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},31572:function(e,t,n){"use strict";var r=n(68609),o=n(53242),i=n(42847),a=n(83972);e.exports=function(){var e=o("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,u=i("toPrimitive");t&&!t[u]&&a(t,u,(function(e){return r(n,this)}),{arity:1})}},47862:function(e,t,n){"use strict";var r=n(60265);e.exports=r&&!!Symbol["for"]&&!!Symbol.keyFor},3017:function(e,t,n){"use strict";var r,o,i,a,u=n(25511),s=n(42177),c=n(66343),l=n(48609),f=n(35821),d=n(3440),p=n(44648),h=n(92098),v=n(9639),m=n(44020),g=n(39050),y=n(68173),b=u.setImmediate,x=u.clearImmediate,w=u.process,E=u.Dispatch,_=u.Function,D=u.MessageChannel,C=u.String,k=0,A={},S="onreadystatechange";try{r=u.location}catch(T){}var N=function(e){if(f(A,e)){var t=A[e];delete A[e],t()}},O=function(e){return function(){N(e)}},F=function(e){N(e.data)},M=function(e){u.postMessage(C(e),r.protocol+"//"+r.host)};b&&x||(b=function(e){m(arguments.length,1);var t=l(e)?e:_(e),n=h(arguments,1);return A[++k]=function(){s(t,undefined,n)},o(k),k},x=function(e){delete A[e]},y?o=function(e){w.nextTick(O(e))}:E&&E.now?o=function(e){E.now(O(e))}:D&&!g?(a=(i=new D).port2,i.port1.onmessage=F,o=c(a.postMessage,a)):u.addEventListener&&l(u.postMessage)&&!u.importScripts&&r&&"file:"!==r.protocol&&!d(M)?(o=M,u.addEventListener("message",F,!1)):o=S in v("script")?function(e){p.appendChild(v("script"))[S]=function(){p.removeChild(this),N(e)}}:function(e){setTimeout(O(e),0)}),e.exports={set:b,clear:x}},43270:function(e,t,n){"use strict";var r=n(38457);e.exports=r(1..valueOf)},46085:function(e,t,n){"use strict";var r=n(53893),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},3114:function(e,t,n){"use strict";var r=n(73716),o=TypeError;e.exports=function(e){var t=r(e,"number");if("number"==typeof t)throw o("Can't convert number to bigint");return BigInt(t)}},93614:function(e,t,n){"use strict";var r=n(53893),o=n(60780),i=RangeError;e.exports=function(e){if(e===undefined)return 0;var t=r(e),n=o(t);if(t!==n)throw i("Wrong length or index");return n}},19091:function(e,t,n){"use strict";var r=n(89753),o=n(49290);e.exports=function(e){return r(o(e))}},53893:function(e,t,n){"use strict";var r=n(6730);e.exports=function(e){var t=+e;return t!=t||0===t?0:r(t)}},60780:function(e,t,n){"use strict";var r=n(53893),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},39134:function(e,t,n){"use strict";var r=n(49290),o=Object;e.exports=function(e){return o(r(e))}},13129:function(e,t,n){"use strict";var r=n(91459),o=RangeError;e.exports=function(e,t){var n=r(e);if(n%t)throw o("Wrong offset");return n}},91459:function(e,t,n){"use strict";var r=n(53893),o=RangeError;e.exports=function(e){var t=r(e);if(t<0)throw o("The argument can't be less than 0");return t}},73716:function(e,t,n){"use strict";var r=n(68609),o=n(46840),i=n(32437),a=n(87869),u=n(79910),s=n(42847),c=TypeError,l=s("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var n,s=a(e,l);if(s){if(t===undefined&&(t="default"),n=r(s,e,t),!o(n)||i(n))return n;throw c("Can't convert object to primitive value")}return t===undefined&&(t="number"),u(e,t)}},21266:function(e,t,n){"use strict";var r=n(73716),o=n(32437);e.exports=function(e){var t=r(e,"string");return o(t)?t:t+""}},23371:function(e,t,n){"use strict";var r={};r[n(42847)("toStringTag")]="z",e.exports="[object z]"===String(r)},39599:function(e,t,n){"use strict";var r=n(13149),o=String;e.exports=function(e){if("Symbol"===r(e))throw TypeError("Cannot convert a Symbol value to a string");return o(e)}},29141:function(e){"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(n){return"Object"}}},63541:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(68609),a=n(4098),u=n(1187),s=n(89746),c=n(78463),l=n(99078),f=n(12311),d=n(90460),p=n(22796),h=n(60780),v=n(93614),m=n(13129),g=n(21266),y=n(35821),b=n(13149),x=n(46840),w=n(32437),E=n(8356),_=n(52625),D=n(97916),C=n(86658).f,k=n(68071),A=n(40975).forEach,S=n(97194),N=n(92867),O=n(18593),F=n(29017),M=n(5283),T=F.get,I=F.set,B=F.enforce,L=N.f,P=O.f,j=Math.round,V=o.RangeError,R=c.ArrayBuffer,z=R.prototype,K=c.DataView,U=s.NATIVE_ARRAY_BUFFER_VIEWS,Y=s.TYPED_ARRAY_TAG,H=s.TypedArray,W=s.TypedArrayPrototype,$=s.aTypedArrayConstructor,G=s.isTypedArray,q="BYTES_PER_ELEMENT",Z="Wrong length",X=function(e,t){$(e);for(var n=0,r=t.length,o=new e(r);r>n;)o[n]=t[n++];return o},Q=function(e,t){L(e,t,{get:function(){return T(this)[t]}})},J=function(e){var t;return _(z,e)||"ArrayBuffer"==(t=b(e))||"SharedArrayBuffer"==t},ee=function(e,t){return G(e)&&!w(t)&&t in e&&p(+t)&&t>=0},te=function(e,t){return t=g(t),ee(e,t)?f(2,e[t]):P(e,t)},ne=function(e,t,n){return t=g(t),!(ee(e,t)&&x(n)&&y(n,"value"))||y(n,"get")||y(n,"set")||n.configurable||y(n,"writable")&&!n.writable||y(n,"enumerable")&&!n.enumerable?L(e,t,n):(e[t]=n.value,e)};a?(U||(O.f=te,N.f=ne,Q(W,"buffer"),Q(W,"byteOffset"),Q(W,"byteLength"),Q(W,"length")),r({target:"Object",stat:!0,forced:!U},{getOwnPropertyDescriptor:te,defineProperty:ne}),e.exports=function(e,t,n){var a=e.match(/\d+$/)[0]/8,s=e+(n?"Clamped":"")+"Array",c="get"+e,f="set"+e,p=o[s],g=p,y=g&&g.prototype,b={},w=function(e,t){L(e,t,{get:function(){return function(e,t){var n=T(e);return n.view[c](t*a+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var o=T(e);n&&(r=(r=j(r))<0?0:r>255?255:255&r),o.view[f](t*a+o.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};U?u&&(g=t((function(e,t,n,r){return l(e,y),M(x(t)?J(t)?r!==undefined?new p(t,m(n,a),r):n!==undefined?new p(t,m(n,a)):new p(t):G(t)?X(g,t):i(k,g,t):new p(v(t)),e,g)})),D&&D(g,H),A(C(p),(function(e){e in g||d(g,e,p[e])})),g.prototype=y):(g=t((function(e,t,n,r){l(e,y);var o,u,s,c=0,f=0;if(x(t)){if(!J(t))return G(t)?X(g,t):i(k,g,t);o=t,f=m(n,a);var d=t.byteLength;if(r===undefined){if(d%a)throw V(Z);if((u=d-f)<0)throw V(Z)}else if((u=h(r)*a)+f>d)throw V(Z);s=u/a}else s=v(t),o=new R(u=s*a);for(I(e,{buffer:o,byteOffset:f,byteLength:u,length:s,view:new K(o)});c1?arguments[1]:undefined,D=_!==undefined,C=c(w);if(C&&!l(C))for(b=(y=s(w,C)).next,w=[];!(g=o(b,y)).done;)w.push(g.value);for(D&&E>2&&(_=r(_,arguments[2])),n=u(w),h=new(d(x))(n),v=f(h),t=0;n>t;t++)m=D?_(w[t],t):w[t],h[t]=v?p(m):+m;return h}},35927:function(e,t,n){"use strict";var r=n(89746),o=n(75693),i=r.aTypedArrayConstructor,a=r.getTypedArrayConstructor;e.exports=function(e){return i(o(e,a(e)))}},93054:function(e,t,n){"use strict";var r=n(38457),o=0,i=Math.random(),a=r(1..toString);e.exports=function(e){return"Symbol("+(e===undefined?"":e)+")_"+a(++o+i,36)}},79415:function(e,t,n){"use strict";var r=n(60265);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},78590:function(e,t,n){"use strict";var r=n(4098),o=n(3440);e.exports=r&&o((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},44020:function(e){"use strict";var t=TypeError;e.exports=function(e,n){if(e2?arguments[2]:undefined,u=o(w,this);a?n=a(y(),u?i(this):w):(n=u?this:s(w),c(n,g,"Error")),t!==undefined&&c(n,"message",h(t)),m&&c(n,"stack",f(n.stack,1)),d(n,r);var l=[];return p(e,b,{that:l}),c(n,"errors",l),n};a?a(x,y):u(x,y,{name:!0});var w=x.prototype=s(y.prototype,{constructor:l(1,x),message:l(1,""),name:l(1,"AggregateError")});r({global:!0,constructor:!0,arity:2},{AggregateError:x})},89150:function(e,t,n){"use strict";n(86265)},72674:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(78463),a=n(97194),u="ArrayBuffer",s=i[u];r({global:!0,constructor:!0,forced:o[u]!==s},{ArrayBuffer:s}),a(u)},64432:function(e,t,n){"use strict";var r=n(65439),o=n(89746);r({target:"ArrayBuffer",stat:!0,forced:!o.NATIVE_ARRAY_BUFFER_VIEWS},{isView:o.isView})},97750:function(e,t,n){"use strict";var r=n(65439),o=n(42481),i=n(3440),a=n(78463),u=n(8782),s=n(46085),c=n(60780),l=n(75693),f=a.ArrayBuffer,d=a.DataView,p=d.prototype,h=o(f.prototype.slice),v=o(p.getUint8),m=o(p.setUint8);r({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:i((function(){return!new f(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(h&&t===undefined)return h(u(this),e);for(var n=u(this).byteLength,r=s(e,n),o=s(t===undefined?n:t,n),i=new(l(this,f))(c(o-r)),a=new d(this),p=new d(i),g=0;r=51||!o((function(){var e=[];return e[v]=!1,e.concat()[0]!==e})),g=d("concat"),y=function(e){if(!a(e))return!1;var t=e[v];return t!==undefined?!!t:i(e)};r({target:"Array",proto:!0,arity:1,forced:!m||!g},{concat:function(e){var t,n,r,o,i,a=u(this),d=f(a,0),p=0;for(t=-1,r=arguments.length;t1?arguments[1]:undefined)}})},47676:function(e,t,n){"use strict";var r=n(65439),o=n(7381),i=n(21650);r({target:"Array",proto:!0},{fill:o}),i("fill")},84836:function(e,t,n){"use strict";var r=n(65439),o=n(40975).filter;r({target:"Array",proto:!0,forced:!n(731)("filter")},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},98452:function(e,t,n){"use strict";var r=n(65439),o=n(40975).findIndex,i=n(21650),a="findIndex",u=!0;a in[]&&Array(1)[a]((function(){u=!1})),r({target:"Array",proto:!0,forced:u},{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i(a)},13307:function(e,t,n){"use strict";var r=n(65439),o=n(40975).find,i=n(21650),a="find",u=!0;a in[]&&Array(1)[a]((function(){u=!1})),r({target:"Array",proto:!0,forced:u},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i(a)},73790:function(e,t,n){"use strict";var r=n(65439),o=n(44094),i=n(79030),a=n(39134),u=n(83440),s=n(56940);r({target:"Array",proto:!0},{flatMap:function(e){var t,n=a(this),r=u(n);return i(e),(t=s(n,0)).length=o(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},66108:function(e,t,n){"use strict";var r=n(65439),o=n(44094),i=n(39134),a=n(83440),u=n(53893),s=n(56940);r({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=i(this),n=a(t),r=s(t,0);return r.length=o(r,t,t,n,0,e===undefined?1:u(e)),r}})},40324:function(e,t,n){"use strict";var r=n(65439),o=n(11421);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},52650:function(e,t,n){"use strict";var r=n(65439),o=n(58578);r({target:"Array",stat:!0,forced:!n(32938)((function(e){Array.from(e)}))},{from:o})},40873:function(e,t,n){"use strict";var r=n(65439),o=n(16077).includes,i=n(3440),a=n(21650);r({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),a("includes")},83754:function(e,t,n){"use strict";var r=n(65439),o=n(42481),i=n(16077).indexOf,a=n(38575),u=o([].indexOf),s=!!u&&1/u([1],1,-0)<0,c=a("indexOf");r({target:"Array",proto:!0,forced:s||!c},{indexOf:function(e){var t=arguments.length>1?arguments[1]:undefined;return s?u(this,e,t)||0:i(this,e,t)}})},21361:function(e,t,n){"use strict";n(65439)({target:"Array",stat:!0},{isArray:n(64739)})},20452:function(e,t,n){"use strict";var r=n(19091),o=n(21650),i=n(87804),a=n(29017),u=n(92867).f,s=n(63424),c=n(49764),l=n(65787),f=n(4098),d="Array Iterator",p=a.set,h=a.getterFor(d);e.exports=s(Array,"Array",(function(e,t){p(this,{type:d,target:r(e),index:0,kind:t})}),(function(){var e=h(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=undefined,c(undefined,!0)):c("keys"==n?r:"values"==n?t[r]:[r,t[r]],!1)}),"values");var v=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!l&&f&&"values"!==v.name)try{u(v,"name",{value:"values"})}catch(m){}},19037:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(89753),a=n(19091),u=n(38575),s=o([].join),c=i!=Object,l=u("join",",");r({target:"Array",proto:!0,forced:c||!l},{join:function(e){return s(a(this),e===undefined?",":e)}})},96967:function(e,t,n){"use strict";var r=n(65439),o=n(10303);r({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},93340:function(e,t,n){"use strict";var r=n(65439),o=n(40975).map;r({target:"Array",proto:!0,forced:!n(731)("map")},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},35391:function(e,t,n){"use strict";var r=n(65439),o=n(3440),i=n(99418),a=n(15072),u=Array;r({target:"Array",stat:!0,forced:o((function(){function e(){}return!(u.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(i(this)?this:u)(t);t>e;)a(n,e,arguments[e++]);return n.length=t,n}})},36147:function(e,t,n){"use strict";var r=n(65439),o=n(55202).right,i=n(38575),a=n(88088),u=n(68173);r({target:"Array",proto:!0,forced:!i("reduceRight")||!u&&a>79&&a<83},{reduceRight:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},15490:function(e,t,n){"use strict";var r=n(65439),o=n(55202).left,i=n(38575),a=n(88088),u=n(68173);r({target:"Array",proto:!0,forced:!i("reduce")||!u&&a>79&&a<83},{reduce:function(e){var t=arguments.length;return o(this,e,t,t>1?arguments[1]:undefined)}})},23128:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(64739),a=o([].reverse),u=[1,2];r({target:"Array",proto:!0,forced:String(u)===String(u.reverse())},{reverse:function(){return i(this)&&(this.length=this.length),a(this)}})},49866:function(e,t,n){"use strict";var r=n(65439),o=n(64739),i=n(99418),a=n(46840),u=n(46085),s=n(83440),c=n(19091),l=n(15072),f=n(42847),d=n(731),p=n(92098),h=d("slice"),v=f("species"),m=Array,g=Math.max;r({target:"Array",proto:!0,forced:!h},{slice:function(e,t){var n,r,f,d=c(this),h=s(d),y=u(e,h),b=u(t===undefined?h:t,h);if(o(d)&&(n=d.constructor,(i(n)&&(n===m||o(n.prototype))||a(n)&&null===(n=n[v]))&&(n=undefined),n===m||n===undefined))return p(d,y,b);for(r=new(n===undefined?m:n)(g(b-y,0)),f=0;y1?arguments[1]:undefined)}})},53260:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(79030),a=n(39134),u=n(83440),s=n(80323),c=n(39599),l=n(3440),f=n(89497),d=n(38575),p=n(98861),h=n(79920),v=n(88088),m=n(51737),g=[],y=o(g.sort),b=o(g.push),x=l((function(){g.sort(undefined)})),w=l((function(){g.sort(null)})),E=d("sort"),_=!l((function(){if(v)return v<70;if(!(p&&p>3)){if(h)return!0;if(m)return m<603;var e,t,n,r,o="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)g.push({k:t+r,v:n})}for(g.sort((function(e,t){return t.v-e.v})),r=0;rc(n)?1:-1}}(e)),n=u(o),r=0;rx-r+n;m--)d(b,m-1)}else if(n>r)for(m=x-r;m>w;m--)y=m+n-1,(g=m+r-1)in b?b[y]=b[g]:d(b,y);for(m=0;m94906265.62425156?a(t)+s:o(t-1+u(t-1)*u(t+1))}})},86628:function(e,t,n){"use strict";var r=n(65439),o=Math.asinh,i=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function u(e){var t=+e;return isFinite(t)&&0!=t?t<0?-u(-t):i(t+a(t*t+1)):t}})},48432:function(e,t,n){"use strict";var r=n(65439),o=Math.atanh,i=Math.log;r({target:"Math",stat:!0,forced:!(o&&1/o(-0)<0)},{atanh:function(e){var t=+e;return 0==t?t:i((1+t)/(1-t))/2}})},39081:function(e,t,n){"use strict";var r=n(65439),o=n(54768),i=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(e){var t=+e;return o(t)*a(i(t),1/3)}})},84666:function(e,t,n){"use strict";var r=n(65439),o=Math.floor,i=Math.log,a=Math.LOG2E;r({target:"Math",stat:!0},{clz32:function(e){var t=e>>>0;return t?31-o(i(t+.5)*a):32}})},12687:function(e,t,n){"use strict";var r=n(65439),o=n(48277),i=Math.cosh,a=Math.abs,u=Math.E;r({target:"Math",stat:!0,forced:!i||i(710)===Infinity},{cosh:function(e){var t=o(a(e)-1)+1;return(t+1/(t*u*u))*(u/2)}})},97015:function(e,t,n){"use strict";var r=n(65439),o=n(48277);r({target:"Math",stat:!0,forced:o!=Math.expm1},{expm1:o})},73838:function(e,t,n){"use strict";n(65439)({target:"Math",stat:!0},{fround:n(36344)})},35559:function(e,t,n){"use strict";var r=n(65439),o=Math.hypot,i=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,arity:2,forced:!!o&&o(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,r,o=0,u=0,s=arguments.length,c=0;u0?(r=n/c)*r:n;return c===Infinity?Infinity:c*a(o)}})},86378:function(e,t,n){"use strict";var r=n(65439),o=n(3440),i=Math.imul;r({target:"Math",stat:!0,forced:o((function(){return-5!=i(4294967295,5)||2!=i.length}))},{imul:function(e,t){var n=65535,r=+e,o=+t,i=n&r,a=n&o;return 0|i*a+((n&r>>>16)*a+i*(n&o>>>16)<<16>>>0)}})},93550:function(e,t,n){"use strict";n(65439)({target:"Math",stat:!0},{log10:n(84234)})},98102:function(e,t,n){"use strict";n(65439)({target:"Math",stat:!0},{log1p:n(77477)})},30584:function(e,t,n){"use strict";var r=n(65439),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(e){return o(e)/i}})},95379:function(e,t,n){"use strict";n(65439)({target:"Math",stat:!0},{sign:n(54768)})},92091:function(e,t,n){"use strict";var r=n(65439),o=n(3440),i=n(48277),a=Math.abs,u=Math.exp,s=Math.E;r({target:"Math",stat:!0,forced:o((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){var t=+e;return a(t)<1?(i(t)-i(-t))/2:(u(t-1)-u(-t-1))*(s/2)}})},73398:function(e,t,n){"use strict";var r=n(65439),o=n(48277),i=Math.exp;r({target:"Math",stat:!0},{tanh:function(e){var t=+e,n=o(t),r=o(-t);return n==Infinity?1:r==Infinity?-1:(n-r)/(i(t)+i(-t))}})},77545:function(e,t,n){"use strict";n(13453)(Math,"Math",!0)},72430:function(e,t,n){"use strict";n(65439)({target:"Math",stat:!0},{trunc:n(6730)})},23794:function(e,t,n){"use strict";var r=n(65439),o=n(65787),i=n(4098),a=n(25511),u=n(18524),s=n(38457),c=n(50330),l=n(35821),f=n(5283),d=n(52625),p=n(32437),h=n(73716),v=n(3440),m=n(86658).f,g=n(18593).f,y=n(92867).f,b=n(43270),x=n(93842).trim,w="Number",E=a[w],_=u[w],D=E.prototype,C=a.TypeError,k=s("".slice),A=s("".charCodeAt),S=function(e){var t=h(e,"number");return"bigint"==typeof t?t:N(t)},N=function(e){var t,n,r,o,i,a,u,s,c=h(e,"number");if(p(c))throw C("Cannot convert a Symbol value to a number");if("string"==typeof c&&c.length>2)if(c=x(c),43===(t=A(c,0))||45===t){if(88===(n=A(c,2))||120===n)return NaN}else if(48===t){switch(A(c,1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+c}for(a=(i=k(c,2)).length,u=0;uo)return NaN;return parseInt(i,r)}return+c},O=c(w,!E(" 0o1")||!E("0b1")||E("+0x1")),F=function(e){return d(D,e)&&v((function(){b(e)}))},M=function(e){var t=arguments.length<1?0:E(S(e));return F(this)?f(Object(t),this,M):t};M.prototype=D,O&&!o&&(D.constructor=M),r({global:!0,constructor:!0,wrap:!0,forced:O},{Number:M});var T=function(e,t){for(var n,r=i?m(t):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;r.length>o;o++)l(t,n=r[o])&&!l(e,n)&&y(e,n,g(t,n))};o&&_&&T(u[w],_),(O||o)&&T(u[w],E)},55349:function(e,t,n){"use strict";n(65439)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)})},27495:function(e,t,n){"use strict";n(65439)({target:"Number",stat:!0},{isFinite:n(90059)})},59798:function(e,t,n){"use strict";n(65439)({target:"Number",stat:!0},{isInteger:n(22796)})},33089:function(e,t,n){"use strict";n(65439)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},37881:function(e,t,n){"use strict";var r=n(65439),o=n(22796),i=Math.abs;r({target:"Number",stat:!0},{isSafeInteger:function(e){return o(e)&&i(e)<=9007199254740991}})},78876:function(e,t,n){"use strict";n(65439)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991})},9344:function(e,t,n){"use strict";n(65439)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991})},86071:function(e,t,n){"use strict";var r=n(65439),o=n(39302);r({target:"Number",stat:!0,forced:Number.parseFloat!=o},{parseFloat:o})},84717:function(e,t,n){"use strict";var r=n(65439),o=n(89466);r({target:"Number",stat:!0,forced:Number.parseInt!=o},{parseInt:o})},86649:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(53893),a=n(43270),u=n(82341),s=n(3440),c=RangeError,l=String,f=Math.floor,d=o(u),p=o("".slice),h=o(1..toFixed),v=function b(e,t,n){return 0===t?n:t%2==1?b(e,t-1,n*e):b(e*e,t/2,n)},m=function(e,t,n){for(var r=-1,o=n;++r<6;)o+=t*e[r],e[r]=o%1e7,o=f(o/1e7)},g=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=f(r/t),r=r%t*1e7},y=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=l(e[t]);n=""===n?r:n+d("0",7-r.length)+r}return n};r({target:"Number",proto:!0,forced:s((function(){return"0.000"!==h(8e-5,3)||"1"!==h(.9,0)||"1.25"!==h(1.255,2)||"1000000000000000128"!==h(0xde0b6b3a7640080,0)}))||!s((function(){h({})}))},{toFixed:function(e){var t,n,r,o,u=a(this),s=i(e),f=[0,0,0,0,0,0],h="",b="0";if(s<0||s>20)throw c("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return l(u);if(u<0&&(h="-",u=-u),u>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(u*v(2,69,1))-69)<0?u*v(2,-t,1):u/v(2,t,1),n*=4503599627370496,(t=52-t)>0){for(m(f,0,n),r=s;r>=7;)m(f,1e7,0),r-=7;for(m(f,v(10,r,1),0),r=t-1;r>=23;)g(f,1<<23),r-=23;g(f,1<0?h+((o=b.length)<=s?"0."+d("0",s-o)+b:p(b,0,o-s)+"."+p(b,o-s)):h+b}})},424:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(3440),a=n(43270),u=o(1..toPrecision);r({target:"Number",proto:!0,forced:i((function(){return"1"!==u(1,undefined)}))||!i((function(){u({})}))},{toPrecision:function(e){return e===undefined?u(a(this)):u(a(this),e)}})},51829:function(e,t,n){"use strict";var r=n(65439),o=n(24293);r({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},93543:function(e,t,n){"use strict";n(65439)({target:"Object",stat:!0,sham:!n(4098)},{create:n(8356)})},51647:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(17446),a=n(79030),u=n(39134),s=n(92867);o&&r({target:"Object",proto:!0,forced:i},{__defineGetter__:function(e,t){s.f(u(this),e,{get:a(t),enumerable:!0,configurable:!0})}})},44589:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(9672).f;r({target:"Object",stat:!0,forced:Object.defineProperties!==i,sham:!o},{defineProperties:i})},9024:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(92867).f;r({target:"Object",stat:!0,forced:Object.defineProperty!==i,sham:!o},{defineProperty:i})},60291:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(17446),a=n(79030),u=n(39134),s=n(92867);o&&r({target:"Object",proto:!0,forced:i},{__defineSetter__:function(e,t){s.f(u(this),e,{set:a(t),enumerable:!0,configurable:!0})}})},62412:function(e,t,n){"use strict";var r=n(65439),o=n(33903).entries;r({target:"Object",stat:!0},{entries:function(e){return o(e)}})},96064:function(e,t,n){"use strict";var r=n(65439),o=n(14097),i=n(3440),a=n(46840),u=n(94986).onFreeze,s=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){s(1)})),sham:!o},{freeze:function(e){return s&&a(e)?s(u(e)):e}})},61640:function(e,t,n){"use strict";var r=n(65439),o=n(6111),i=n(15072);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return o(e,(function(e,n){i(t,e,n)}),{AS_ENTRIES:!0}),t}})},62506:function(e,t,n){"use strict";var r=n(65439),o=n(3440),i=n(19091),a=n(18593).f,u=n(4098),s=o((function(){a(1)}));r({target:"Object",stat:!0,forced:!u||s,sham:!u},{getOwnPropertyDescriptor:function(e,t){return a(i(e),t)}})},10828:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(32884),a=n(19091),u=n(18593),s=n(15072);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,r=a(e),o=u.f,c=i(r),l={},f=0;c.length>f;)(n=o(r,t=c[f++]))!==undefined&&s(l,t,n);return l}})},69270:function(e,t,n){"use strict";var r=n(65439),o=n(3440),i=n(26661).f;r({target:"Object",stat:!0,forced:o((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})},31656:function(e,t,n){"use strict";var r=n(65439),o=n(60265),i=n(3440),a=n(13963),u=n(39134);r({target:"Object",stat:!0,forced:!o||i((function(){a.f(1)}))},{getOwnPropertySymbols:function(e){var t=a.f;return t?t(u(e)):[]}})},50077:function(e,t,n){"use strict";var r=n(65439),o=n(3440),i=n(39134),a=n(45526),u=n(16308);r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!u},{getPrototypeOf:function(e){return a(i(e))}})},32961:function(e,t,n){"use strict";var r=n(65439),o=n(77311);r({target:"Object",stat:!0,forced:Object.isExtensible!==o},{isExtensible:o})},86181:function(e,t,n){"use strict";var r=n(65439),o=n(3440),i=n(46840),a=n(86790),u=n(29613),s=Object.isFrozen;r({target:"Object",stat:!0,forced:o((function(){s(1)}))||u},{isFrozen:function(e){return!i(e)||!(!u||"ArrayBuffer"!=a(e))||!!s&&s(e)}})},58055:function(e,t,n){"use strict";var r=n(65439),o=n(3440),i=n(46840),a=n(86790),u=n(29613),s=Object.isSealed;r({target:"Object",stat:!0,forced:o((function(){s(1)}))||u},{isSealed:function(e){return!i(e)||!(!u||"ArrayBuffer"!=a(e))||!!s&&s(e)}})},81011:function(e,t,n){"use strict";n(65439)({target:"Object",stat:!0},{is:n(87091)})},94625:function(e,t,n){"use strict";var r=n(65439),o=n(39134),i=n(27911);r({target:"Object",stat:!0,forced:n(3440)((function(){i(1)}))},{keys:function(e){return i(o(e))}})},66807:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(17446),a=n(39134),u=n(21266),s=n(45526),c=n(18593).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupGetter__:function(e){var t,n=a(this),r=u(e);do{if(t=c(n,r))return t.get}while(n=s(n))}})},90146:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(17446),a=n(39134),u=n(21266),s=n(45526),c=n(18593).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupSetter__:function(e){var t,n=a(this),r=u(e);do{if(t=c(n,r))return t.set}while(n=s(n))}})},43015:function(e,t,n){"use strict";var r=n(65439),o=n(46840),i=n(94986).onFreeze,a=n(14097),u=n(3440),s=Object.preventExtensions;r({target:"Object",stat:!0,forced:u((function(){s(1)})),sham:!a},{preventExtensions:function(e){return s&&o(e)?s(i(e)):e}})},82034:function(e,t,n){"use strict";var r=n(65439),o=n(46840),i=n(94986).onFreeze,a=n(14097),u=n(3440),s=Object.seal;r({target:"Object",stat:!0,forced:u((function(){s(1)})),sham:!a},{seal:function(e){return s&&o(e)?s(i(e)):e}})},84641:function(e,t,n){"use strict";n(65439)({target:"Object",stat:!0},{setPrototypeOf:n(97916)})},84005:function(e,t,n){"use strict";var r=n(23371),o=n(83972),i=n(28006);r||o(Object.prototype,"toString",i,{unsafe:!0})},58928:function(e,t,n){"use strict";var r=n(65439),o=n(33903).values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},60586:function(e,t,n){"use strict";var r=n(65439),o=n(39302);r({global:!0,forced:parseFloat!=o},{parseFloat:o})},16664:function(e,t,n){"use strict";var r=n(65439),o=n(89466);r({global:!0,forced:parseInt!=o},{parseInt:o})},95938:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(79030),a=n(26149),u=n(15058),s=n(6111);r({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=a.f(t),r=n.resolve,c=n.reject,l=u((function(){var n=i(t.resolve),a=[],u=0,c=1;s(e,(function(e){var i=u++,s=!1;c++,o(n,t,e).then((function(e){s||(s=!0,a[i]={status:"fulfilled",value:e},--c||r(a))}),(function(e){s||(s=!0,a[i]={status:"rejected",reason:e},--c||r(a))}))})),--c||r(a)}));return l.error&&c(l.value),n.promise}})},38977:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(79030),a=n(26149),u=n(15058),s=n(6111);r({target:"Promise",stat:!0,forced:n(40554)},{all:function(e){var t=this,n=a.f(t),r=n.resolve,c=n.reject,l=u((function(){var n=i(t.resolve),a=[],u=0,l=1;s(e,(function(e){var i=u++,s=!1;l++,o(n,t,e).then((function(e){s||(s=!0,a[i]=e,--l||r(a))}),c)})),--l||r(a)}));return l.error&&c(l.value),n.promise}})},24875:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(79030),a=n(53242),u=n(26149),s=n(15058),c=n(6111),l="No one promise resolved";r({target:"Promise",stat:!0},{any:function(e){var t=this,n=a("AggregateError"),r=u.f(t),f=r.resolve,d=r.reject,p=s((function(){var r=i(t.resolve),a=[],u=0,s=1,p=!1;c(e,(function(e){var i=u++,c=!1;s++,o(r,t,e).then((function(e){c||p||(p=!0,f(e))}),(function(e){c||p||(c=!0,a[i]=e,--s||d(new n(a,l)))}))})),--s||d(new n(a,l))}));return p.error&&d(p.value),r.promise}})},49361:function(e,t,n){"use strict";var r=n(65439),o=n(65787),i=n(9325).CONSTRUCTOR,a=n(46795),u=n(53242),s=n(48609),c=n(83972),l=a&&a.prototype;if(r({target:"Promise",proto:!0,forced:i,real:!0},{"catch":function(e){return this.then(undefined,e)}}),!o&&s(a)){var f=u("Promise").prototype["catch"];l["catch"]!==f&&c(l,"catch",f,{unsafe:!0})}},54064:function(e,t,n){"use strict";var r,o,i,a=n(65439),u=n(65787),s=n(68173),c=n(25511),l=n(68609),f=n(83972),d=n(97916),p=n(13453),h=n(97194),v=n(79030),m=n(48609),g=n(46840),y=n(99078),b=n(75693),x=n(3017).set,w=n(5934),E=n(74394),_=n(15058),D=n(65921),C=n(29017),k=n(46795),A=n(9325),S=n(26149),N="Promise",O=A.CONSTRUCTOR,F=A.REJECTION_EVENT,M=A.SUBCLASSING,T=C.getterFor(N),I=C.set,B=k&&k.prototype,L=k,P=B,j=c.TypeError,V=c.document,R=c.process,z=S.f,K=z,U=!!(V&&V.createEvent&&c.dispatchEvent),Y="unhandledrejection",H=function(e){var t;return!(!g(e)||!m(t=e.then))&&t},W=function(e,t){var n,r,o,i=t.value,a=1==t.state,u=a?e.ok:e.fail,s=e.resolve,c=e.reject,f=e.domain;try{u?(a||(2===t.rejection&&X(t),t.rejection=1),!0===u?n=i:(f&&f.enter(),n=u(i),f&&(f.exit(),o=!0)),n===e.promise?c(j("Promise-chain cycle")):(r=H(n))?l(r,n,s,c):s(n)):c(i)}catch(d){f&&!o&&f.exit(),c(d)}},$=function(e,t){e.notified||(e.notified=!0,w((function(){for(var n,r=e.reactions;n=r.get();)W(n,e);e.notified=!1,t&&!e.rejection&&q(e)})))},G=function(e,t,n){var r,o;U?((r=V.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),c.dispatchEvent(r)):r={promise:t,reason:n},!F&&(o=c["on"+e])?o(r):e===Y&&E("Unhandled promise rejection",n)},q=function(e){l(x,c,(function(){var t,n=e.facade,r=e.value;if(Z(e)&&(t=_((function(){s?R.emit("unhandledRejection",r,n):G(Y,n,r)})),e.rejection=s||Z(e)?2:1,t.error))throw t.value}))},Z=function(e){return 1!==e.rejection&&!e.parent},X=function(e){l(x,c,(function(){var t=e.facade;s?R.emit("rejectionHandled",t):G("rejectionhandled",t,e.value)}))},Q=function(e,t,n){return function(r){e(t,r,n)}},J=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,$(e,!0))},ee=function ne(e,t,n){if(!e.done){e.done=!0,n&&(e=n);try{if(e.facade===t)throw j("Promise can't be resolved itself");var r=H(t);r?w((function(){var n={done:!1};try{l(r,t,Q(ne,n,e),Q(J,n,e))}catch(o){J(n,o,e)}})):(e.value=t,e.state=1,$(e,!1))}catch(o){J({done:!1},o,e)}}};if(O&&(L=function(e){y(this,P),v(e),l(r,this);var t=T(this);try{e(Q(ee,t),Q(J,t))}catch(n){J(t,n)}},P=L.prototype,(r=function(e){I(this,{type:N,done:!1,notified:!1,parent:!1,reactions:new D,rejection:!1,state:0,value:undefined})}).prototype=f(P,"then",(function(e,t){var n=T(this),r=z(b(this,L));return n.parent=!0,r.ok=!m(e)||e,r.fail=m(t)&&t,r.domain=s?R.domain:undefined,0==n.state?n.reactions.add(r):w((function(){W(r,n)})),r.promise})),o=function(){var e=new r,t=T(e);this.promise=e,this.resolve=Q(ee,t),this.reject=Q(J,t)},S.f=z=function(e){return e===L||undefined===e?new o(e):K(e)},!u&&m(k)&&B!==Object.prototype)){i=B.then,M||f(B,"then",(function(e,t){var n=this;return new L((function(e,t){l(i,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete B.constructor}catch(te){}d&&d(B,P)}a({global:!0,constructor:!0,wrap:!0,forced:O},{Promise:L}),p(L,N,!1,!0),h(N)},31625:function(e,t,n){"use strict";var r=n(65439),o=n(65787),i=n(46795),a=n(3440),u=n(53242),s=n(48609),c=n(75693),l=n(77125),f=n(83972),d=i&&i.prototype;if(r({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){d["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=c(this,u("Promise")),n=s(e);return this.then(n?function(n){return l(t,e()).then((function(){return n}))}:e,n?function(n){return l(t,e()).then((function(){throw n}))}:e)}}),!o&&s(i)){var p=u("Promise").prototype["finally"];d["finally"]!==p&&f(d,"finally",p,{unsafe:!0})}},37759:function(e,t,n){"use strict";n(54064),n(38977),n(49361),n(79024),n(91525),n(15078)},79024:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(79030),a=n(26149),u=n(15058),s=n(6111);r({target:"Promise",stat:!0,forced:n(40554)},{race:function(e){var t=this,n=a.f(t),r=n.reject,c=u((function(){var a=i(t.resolve);s(e,(function(e){o(a,t,e).then(n.resolve,r)}))}));return c.error&&r(c.value),n.promise}})},91525:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(26149);r({target:"Promise",stat:!0,forced:n(9325).CONSTRUCTOR},{reject:function(e){var t=i.f(this);return o(t.reject,undefined,e),t.promise}})},15078:function(e,t,n){"use strict";var r=n(65439),o=n(53242),i=n(65787),a=n(46795),u=n(9325).CONSTRUCTOR,s=n(77125),c=o("Promise"),l=i&&!u;r({target:"Promise",stat:!0,forced:i||u},{resolve:function(e){return s(l&&this===c?a:this,e)}})},96161:function(e,t,n){"use strict";var r=n(65439),o=n(42177),i=n(79030),a=n(8782);r({target:"Reflect",stat:!0,forced:!n(3440)((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return o(i(e),t,a(n))}})},12977:function(e,t,n){"use strict";var r=n(65439),o=n(53242),i=n(42177),a=n(87637),u=n(82269),s=n(8782),c=n(46840),l=n(8356),f=n(3440),d=o("Reflect","construct"),p=Object.prototype,h=[].push,v=f((function(){function e(){}return!(d((function(){}),[],e)instanceof e)})),m=!f((function(){d((function(){}))})),g=v||m;r({target:"Reflect",stat:!0,forced:g,sham:g},{construct:function(e,t){u(e),s(t);var n=arguments.length<3?e:u(arguments[2]);if(m&&!v)return d(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return i(h,r,t),new(i(a,e,r))}var o=n.prototype,f=l(c(o)?o:p),g=i(e,f,t);return c(g)?g:f}})},30687:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(8782),a=n(21266),u=n(92867);r({target:"Reflect",stat:!0,forced:n(3440)((function(){Reflect.defineProperty(u.f({},1,{value:1}),1,{value:2})})),sham:!o},{defineProperty:function(e,t,n){i(e);var r=a(t);i(n);try{return u.f(e,r,n),!0}catch(o){return!1}}})},68136:function(e,t,n){"use strict";var r=n(65439),o=n(8782),i=n(18593).f;r({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=i(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},64434:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(8782),a=n(18593);r({target:"Reflect",stat:!0,sham:!o},{getOwnPropertyDescriptor:function(e,t){return a.f(i(e),t)}})},24010:function(e,t,n){"use strict";var r=n(65439),o=n(8782),i=n(45526);r({target:"Reflect",stat:!0,sham:!n(16308)},{getPrototypeOf:function(e){return i(o(e))}})},43207:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(46840),a=n(8782),u=n(72040),s=n(18593),c=n(45526);r({target:"Reflect",stat:!0},{get:function l(e,t){var n,r,f=arguments.length<3?e:arguments[2];return a(e)===f?e[t]:(n=s.f(e,t))?u(n)?n.value:n.get===undefined?undefined:o(n.get,f):i(r=c(e))?l(r,t,f):void 0}})},73055:function(e,t,n){"use strict";n(65439)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},17847:function(e,t,n){"use strict";var r=n(65439),o=n(8782),i=n(77311);r({target:"Reflect",stat:!0},{isExtensible:function(e){return o(e),i(e)}})},36825:function(e,t,n){"use strict";n(65439)({target:"Reflect",stat:!0},{ownKeys:n(32884)})},51301:function(e,t,n){"use strict";var r=n(65439),o=n(53242),i=n(8782);r({target:"Reflect",stat:!0,sham:!n(14097)},{preventExtensions:function(e){i(e);try{var t=o("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},51517:function(e,t,n){"use strict";var r=n(65439),o=n(8782),i=n(1198),a=n(97916);a&&r({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){o(e),i(t);try{return a(e,t),!0}catch(n){return!1}}})},68527:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(8782),a=n(46840),u=n(72040),s=n(3440),c=n(92867),l=n(18593),f=n(45526),d=n(12311);r({target:"Reflect",stat:!0,forced:s((function(){var e=function(){},t=c.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}))},{set:function p(e,t,n){var r,s,h,v=arguments.length<4?e:arguments[3],m=l.f(i(e),t);if(!m){if(a(s=f(e)))return p(s,t,n,v);m=d(0)}if(u(m)){if(!1===m.writable||!a(v))return!1;if(r=l.f(v,t)){if(r.get||r.set||!1===r.writable)return!1;r.value=n,c.f(v,t,r)}else c.f(v,t,d(0,n))}else{if((h=m.set)===undefined)return!1;o(h,v,n)}return!0}})},64028:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(13453);r({global:!0},{Reflect:{}}),i(o.Reflect,"Reflect",!0)},52634:function(e,t,n){"use strict";var r=n(4098),o=n(25511),i=n(38457),a=n(50330),u=n(5283),s=n(90460),c=n(86658).f,l=n(52625),f=n(23939),d=n(39599),p=n(83904),h=n(86325),v=n(64692),m=n(83972),g=n(3440),y=n(35821),b=n(29017).enforce,x=n(97194),w=n(42847),E=n(62986),_=n(74842),D=w("match"),C=o.RegExp,k=C.prototype,A=o.SyntaxError,S=i(k.exec),N=i("".charAt),O=i("".replace),F=i("".indexOf),M=i("".slice),T=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,I=/a/g,B=/a/g,L=new C(I)!==I,P=h.MISSED_STICKY,j=h.UNSUPPORTED_Y,V=r&&(!L||P||E||_||g((function(){return B[D]=!1,C(I)!=I||C(B)==B||"/a/i"!=C(I,"i")})));if(a("RegExp",V)){for(var R=function(e,t){var n,r,o,i,a,c,h=l(k,this),v=f(e),m=t===undefined,g=[],x=e;if(!h&&v&&m&&e.constructor===R)return e;if((v||l(k,e))&&(e=e.source,m&&(t=p(x))),e=e===undefined?"":d(e),t=t===undefined?"":d(t),x=e,E&&"dotAll"in I&&(r=!!t&&F(t,"s")>-1)&&(t=O(t,/s/g,"")),n=t,P&&"sticky"in I&&(o=!!t&&F(t,"y")>-1)&&j&&(t=O(t,/y/g,"")),_&&(i=function(e){for(var t,n=e.length,r=0,o="",i=[],a={},u=!1,s=!1,c=0,l="";r<=n;r++){if("\\"===(t=N(e,r)))t+=N(e,++r);else if("]"===t)u=!1;else if(!u)switch(!0){case"["===t:u=!0;break;case"("===t:S(T,M(e,r+1))&&(r+=2,s=!0),o+=t,c++;continue;case">"===t&&s:if(""===l||y(a,l))throw new A("Invalid capture group name");a[l]=!0,i[i.length]=[l,c],s=!1,l="";continue}s?l+=t:o+=t}return[o,i]}(e),e=i[0],g=i[1]),a=u(C(e,t),h?this:k,R),(r||o||g.length)&&(c=b(a),r&&(c.dotAll=!0,c.raw=R(function(e){for(var t,n=e.length,r=0,o="",i=!1;r<=n;r++)"\\"!==(t=N(e,r))?i||"."!==t?("["===t?i=!0:"]"===t&&(i=!1),o+=t):o+="[\\s\\S]":o+=t+N(e,++r);return o}(e),n)),o&&(c.sticky=!0),g.length&&(c.groups=g)),e!==x)try{s(a,"source",""===x?"(?:)":x)}catch(w){}return a},z=c(C),K=0;z.length>K;)v(R,C,z[K++]);k.constructor=R,R.prototype=k,m(o,"RegExp",R,{constructor:!0})}x("RegExp")},34067:function(e,t,n){"use strict";var r=n(65439),o=n(34062);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},58023:function(e,t,n){"use strict";var r=n(25511),o=n(4098),i=n(39836),a=n(52673),u=n(3440),s=r.RegExp,c=s.prototype;o&&u((function(){var e=!0;try{s(".","d")}catch(u){e=!1}var t={},n="",r=e?"dgimsy":"gimsy",o=function(e,r){Object.defineProperty(t,e,{get:function(){return n+=r,!0}})},i={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var a in e&&(i.hasIndices="d"),i)o(a,i[a]);return Object.getOwnPropertyDescriptor(c,"flags").get.call(t)!==r||n!==r}))&&i(c,"flags",{configurable:!0,get:a})},85574:function(e,t,n){"use strict";var r=n(4098),o=n(86325).MISSED_STICKY,i=n(86790),a=n(39836),u=n(29017).get,s=RegExp.prototype,c=TypeError;r&&o&&a(s,"sticky",{configurable:!0,get:function(){if(this===s)return undefined;if("RegExp"===i(this))return!!u(this).sticky;throw c("Incompatible receiver, RegExp required")}})},78607:function(e,t,n){"use strict";n(34067);var r,o,i=n(65439),a=n(68609),u=n(48609),s=n(8782),c=n(39599),l=(r=!1,(o=/[ac]/).exec=function(){return r=!0,/./.exec.apply(this,arguments)},!0===o.test("abc")&&r),f=/./.test;i({target:"RegExp",proto:!0,forced:!l},{test:function(e){var t=s(this),n=c(e),r=t.exec;if(!u(r))return a(f,t,n);var o=a(r,t,n);return null!==o&&(s(o),!0)}})},21313:function(e,t,n){"use strict";var r=n(2142).PROPER,o=n(83972),i=n(8782),a=n(39599),u=n(3440),s=n(83904),c="toString",l=RegExp.prototype[c],f=u((function(){return"/a/b"!=l.call({source:"a",flags:"b"})})),d=r&&l.name!=c;(f||d)&&o(RegExp.prototype,c,(function(){var e=i(this);return"/"+a(e.source)+"/"+a(s(e))}),{unsafe:!0})},46177:function(e,t,n){"use strict";n(18207)("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(88511))},42255:function(e,t,n){"use strict";n(46177)},47763:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("anchor")},{anchor:function(e){return o(this,"a","name",e)}})},14330:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("big")},{big:function(){return o(this,"big","","")}})},44245:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("blink")},{blink:function(){return o(this,"blink","","")}})},12870:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("bold")},{bold:function(){return o(this,"b","","")}})},42200:function(e,t,n){"use strict";var r=n(65439),o=n(59524).codeAt;r({target:"String",proto:!0},{codePointAt:function(e){return o(this,e)}})},41707:function(e,t,n){"use strict";var r,o=n(65439),i=n(42481),a=n(18593).f,u=n(60780),s=n(39599),c=n(96215),l=n(49290),f=n(83196),d=n(65787),p=i("".endsWith),h=i("".slice),v=Math.min,m=f("endsWith");o({target:"String",proto:!0,forced:!!(d||m||(r=a(String.prototype,"endsWith"),!r||r.writable))&&!m},{endsWith:function(e){var t=s(l(this));c(e);var n=arguments.length>1?arguments[1]:undefined,r=t.length,o=n===undefined?r:v(u(n),r),i=s(e);return p?p(t,i,o):h(t,o-i.length,o)===i}})},2896:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("fixed")},{fixed:function(){return o(this,"tt","","")}})},68134:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("fontcolor")},{fontcolor:function(e){return o(this,"font","color",e)}})},26269:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("fontsize")},{fontsize:function(e){return o(this,"font","size",e)}})},5923:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(46085),a=RangeError,u=String.fromCharCode,s=String.fromCodePoint,c=o([].join);r({target:"String",stat:!0,arity:1,forced:!!s&&1!=s.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,o=0;r>o;){if(t=+arguments[o++],i(t,1114111)!==t)throw a(t+" is not a valid code point");n[o]=t<65536?u(t):u(55296+((t-=65536)>>10),t%1024+56320)}return c(n,"")}})},47543:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(96215),a=n(49290),u=n(39599),s=n(83196),c=o("".indexOf);r({target:"String",proto:!0,forced:!s("includes")},{includes:function(e){return!!~c(u(a(this)),u(i(e)),arguments.length>1?arguments[1]:undefined)}})},10073:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("italics")},{italics:function(){return o(this,"i","","")}})},20861:function(e,t,n){"use strict";var r=n(59524).charAt,o=n(39599),i=n(29017),a=n(63424),u=n(49764),s="String Iterator",c=i.set,l=i.getterFor(s);a(String,"String",(function(e){c(this,{type:s,string:o(e),index:0})}),(function(){var e,t=l(this),n=t.string,o=t.index;return o>=n.length?u(undefined,!0):(e=r(n,o),t.index+=e.length,u(e,!1))}))},25767:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("link")},{link:function(e){return o(this,"a","href",e)}})},64622:function(e,t,n){"use strict";var r=n(65439),o=n(68609),i=n(42481),a=n(40897),u=n(49764),s=n(49290),c=n(60780),l=n(39599),f=n(8782),d=n(92625),p=n(86790),h=n(23939),v=n(83904),m=n(87869),g=n(83972),y=n(3440),b=n(42847),x=n(75693),w=n(1491),E=n(84639),_=n(29017),D=n(65787),C=b("matchAll"),k="RegExp String",A=k+" Iterator",S=_.set,N=_.getterFor(A),O=RegExp.prototype,F=TypeError,M=i("".indexOf),T=i("".matchAll),I=!!T&&!y((function(){T("a",/./)})),B=a((function(e,t,n,r){S(this,{type:A,regexp:e,string:t,global:n,unicode:r,done:!1})}),k,(function(){var e=N(this);if(e.done)return u(undefined,!0);var t=e.regexp,n=e.string,r=E(t,n);return null===r?(e.done=!0,u(undefined,!0)):e.global?(""===l(r[0])&&(t.lastIndex=w(n,c(t.lastIndex),e.unicode)),u(r,!1)):(e.done=!0,u(r,!1))})),L=function(e){var t,n,r,o=f(this),i=l(e),a=x(o,RegExp),u=l(v(o));return t=new a(a===RegExp?o.source:o,u),n=!!~M(u,"g"),r=!!~M(u,"u"),t.lastIndex=c(o.lastIndex),new B(t,i,n,r)};r({target:"String",proto:!0,forced:I},{matchAll:function(e){var t,n,r,i,a=s(this);if(d(e)){if(I)return T(a,e)}else{if(h(e)&&(t=l(s(v(e))),!~M(t,"g")))throw F("`.matchAll` does not allow non-global regexes");if(I)return T(a,e);if((r=m(e,C))===undefined&&D&&"RegExp"==p(e)&&(r=L),r)return o(r,e,a)}return n=l(a),i=new RegExp(e,"g"),D?o(L,i,n):i[C](n)}}),D||C in O||g(O,C,L)},38947:function(e,t,n){"use strict";var r=n(68609),o=n(3306),i=n(8782),a=n(92625),u=n(60780),s=n(39599),c=n(49290),l=n(87869),f=n(1491),d=n(84639);o("match",(function(e,t,n){return[function(t){var n=c(this),o=a(t)?undefined:l(t,e);return o?r(o,t,n):new RegExp(t)[e](s(n))},function(e){var r=i(this),o=s(e),a=n(t,r,o);if(a.done)return a.value;if(!r.global)return d(r,o);var c=r.unicode;r.lastIndex=0;for(var l,p=[],h=0;null!==(l=d(r,o));){var v=s(l[0]);p[h]=v,""===v&&(r.lastIndex=f(o,u(r.lastIndex),c)),h++}return 0===h?null:p}]}))},9436:function(e,t,n){"use strict";var r=n(65439),o=n(99335).end;r({target:"String",proto:!0,forced:n(8751)},{padEnd:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},3741:function(e,t,n){"use strict";var r=n(65439),o=n(99335).start;r({target:"String",proto:!0,forced:n(8751)},{padStart:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},94095:function(e,t,n){"use strict";var r=n(65439),o=n(38457),i=n(19091),a=n(39134),u=n(39599),s=n(83440),c=o([].push),l=o([].join);r({target:"String",stat:!0},{raw:function(e){for(var t=i(a(e).raw),n=s(t),r=arguments.length,o=[],f=0;n>f;){if(c(o,u(t[f++])),f===n)return l(o,"");fe.length?-1:""===t?n:y(e,t,n)};r({target:"String",proto:!0},{replaceAll:function(e,t){var n,r,i,h,_,D,C,k,A,S=a(this),N=0,O=0,F="";if(!s(e)){if((n=c(e))&&(r=l(a(d(e))),!~y(r,"g")))throw g("`.replaceAll` does not allow non-global regexes");if(i=f(e,m))return o(i,e,S,t);if(v&&n)return b(l(S),e,t)}for(h=l(S),_=l(e),(D=u(t))||(t=l(t)),C=_.length,k=w(1,C),N=E(h,_,0);-1!==N;)A=D?l(t(_,N,h)):p(_,h,N,[],undefined,t),F+=x(h,O,N)+A,O=N+C,N=E(h,_,N+k);return O=O&&(N+=C(u,O,T)+j,O=T+M.length)}return N+C(u,O)}]}),!!u((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!k||A)},39704:function(e,t,n){"use strict";var r=n(68609),o=n(3306),i=n(8782),a=n(92625),u=n(49290),s=n(87091),c=n(39599),l=n(87869),f=n(84639);o("search",(function(e,t,n){return[function(t){var n=u(this),o=a(t)?undefined:l(t,e);return o?r(o,t,n):new RegExp(t)[e](c(n))},function(e){var r=i(this),o=c(e),a=n(t,r,o);if(a.done)return a.value;var u=r.lastIndex;s(u,0)||(r.lastIndex=0);var l=f(r,o);return s(r.lastIndex,u)||(r.lastIndex=u),null===l?-1:l.index}]}))},59732:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("small")},{small:function(){return o(this,"small","","")}})},36240:function(e,t,n){"use strict";var r=n(42177),o=n(68609),i=n(38457),a=n(3306),u=n(8782),s=n(92625),c=n(23939),l=n(49290),f=n(75693),d=n(1491),p=n(60780),h=n(39599),v=n(87869),m=n(51450),g=n(84639),y=n(34062),b=n(86325),x=n(3440),w=b.UNSUPPORTED_Y,E=4294967295,_=Math.min,D=[].push,C=i(/./.exec),k=i(D),A=i("".slice),S=!x((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));a("split",(function(e,t,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var i=h(l(this)),a=n===undefined?E:n>>>0;if(0===a)return[];if(e===undefined)return[i];if(!c(e))return o(t,i,e,a);for(var u,s,f,d=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),v=0,g=new RegExp(e.source,p+"g");(u=o(y,g,i))&&!((s=g.lastIndex)>v&&(k(d,A(i,v,u.index)),u.length>1&&u.index=a));)g.lastIndex===u.index&&g.lastIndex++;return v===i.length?!f&&C(g,"")||k(d,""):k(d,A(i,v)),d.length>a?m(d,0,a):d}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:o(t,this,e,n)}:t,[function(t,n){var r=l(this),a=s(t)?undefined:v(t,e);return a?o(a,t,r,n):o(i,h(r),t,n)},function(e,r){var o=u(this),a=h(e),s=n(i,o,a,r,i!==t);if(s.done)return s.value;var c=f(o,RegExp),l=o.unicode,v=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(w?"g":"y"),m=new c(w?"^(?:"+o.source+")":o,v),y=r===undefined?E:r>>>0;if(0===y)return[];if(0===a.length)return null===g(m,a)?[a]:[];for(var b=0,x=0,D=[];x1?arguments[1]:undefined,t.length)),r=s(e);return p?p(t,r,n):h(t,n,n+r.length)===r}})},70796:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("strike")},{strike:function(){return o(this,"strike","","")}})},78800:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("sub")},{sub:function(){return o(this,"sub","","")}})},92421:function(e,t,n){"use strict";var r=n(65439),o=n(10782);r({target:"String",proto:!0,forced:n(86651)("sup")},{sup:function(){return o(this,"sup","","")}})},69534:function(e,t,n){"use strict";n(20640);var r=n(65439),o=n(91898);r({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==o},{trimEnd:o})},3716:function(e,t,n){"use strict";var r=n(65439),o=n(92368);r({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==o},{trimLeft:o})},20640:function(e,t,n){"use strict";var r=n(65439),o=n(91898);r({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==o},{trimRight:o})},73702:function(e,t,n){"use strict";n(3716);var r=n(65439),o=n(92368);r({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==o},{trimStart:o})},97713:function(e,t,n){"use strict";var r=n(65439),o=n(93842).trim;r({target:"String",proto:!0,forced:n(44082)("trim")},{trim:function(){return o(this)}})},45465:function(e,t,n){"use strict";n(68666)("asyncIterator")},73245:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(68609),a=n(38457),u=n(65787),s=n(4098),c=n(60265),l=n(3440),f=n(35821),d=n(52625),p=n(8782),h=n(19091),v=n(21266),m=n(39599),g=n(12311),y=n(8356),b=n(27911),x=n(86658),w=n(26661),E=n(13963),_=n(18593),D=n(92867),C=n(9672),k=n(70704),A=n(83972),S=n(71928),N=n(50331),O=n(94083),F=n(93054),M=n(42847),T=n(39479),I=n(68666),B=n(31572),L=n(13453),P=n(29017),j=n(40975).forEach,V=N("hidden"),R="Symbol",z="prototype",K=P.set,U=P.getterFor(R),Y=Object[z],H=o.Symbol,W=H&&H[z],$=o.TypeError,G=o.QObject,q=_.f,Z=D.f,X=w.f,Q=k.f,J=a([].push),ee=S("symbols"),te=S("op-symbols"),ne=S("wks"),re=!G||!G[z]||!G[z].findChild,oe=s&&l((function(){return 7!=y(Z({},"a",{get:function(){return Z(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=q(Y,t);r&&delete Y[t],Z(e,t,n),r&&e!==Y&&Z(Y,t,r)}:Z,ie=function(e,t){var n=ee[e]=y(W);return K(n,{type:R,tag:e,description:t}),s||(n.description=t),n},ae=function(e,t,n){e===Y&&ae(te,t,n),p(e);var r=v(t);return p(n),f(ee,r)?(n.enumerable?(f(e,V)&&e[V][r]&&(e[V][r]=!1),n=y(n,{enumerable:g(0,!1)})):(f(e,V)||Z(e,V,g(1,{})),e[V][r]=!0),oe(e,r,n)):Z(e,r,n)},ue=function(e,t){p(e);var n=h(t),r=b(n).concat(de(n));return j(r,(function(t){s&&!i(ce,n,t)||ae(e,t,n[t])})),e},se=function(e,t){return t===undefined?y(e):ue(y(e),t)},ce=function(e){var t=v(e),n=i(Q,this,t);return!(this===Y&&f(ee,t)&&!f(te,t))&&(!(n||!f(this,t)||!f(ee,t)||f(this,V)&&this[V][t])||n)},le=function(e,t){var n=h(e),r=v(t);if(n!==Y||!f(ee,r)||f(te,r)){var o=q(n,r);return!o||!f(ee,r)||f(n,V)&&n[V][r]||(o.enumerable=!0),o}},fe=function(e){var t=X(h(e)),n=[];return j(t,(function(e){f(ee,e)||f(O,e)||J(n,e)})),n},de=function(e){var t=e===Y,n=X(t?te:h(e)),r=[];return j(n,(function(e){!f(ee,e)||t&&!f(Y,e)||J(r,ee[e])})),r};c||(H=function(){if(d(W,this))throw $("Symbol is not a constructor");var e=arguments.length&&arguments[0]!==undefined?m(arguments[0]):undefined,t=F(e),n=function r(e){this===Y&&i(r,te,e),f(this,V)&&f(this[V],t)&&(this[V][t]=!1),oe(this,t,g(1,e))};return s&&re&&oe(Y,t,{configurable:!0,set:n}),ie(t,e)},A(W=H[z],"toString",(function(){return U(this).tag})),A(H,"withoutSetter",(function(e){return ie(F(e),e)})),k.f=ce,D.f=ae,C.f=ue,_.f=le,x.f=w.f=fe,E.f=de,T.f=function(e){return ie(M(e),e)},s&&(Z(W,"description",{configurable:!0,get:function(){return U(this).description}}),u||A(Y,"propertyIsEnumerable",ce,{unsafe:!0}))),r({global:!0,constructor:!0,wrap:!0,forced:!c,sham:!c},{Symbol:H}),j(b(ne),(function(e){I(e)})),r({target:R,stat:!0,forced:!c},{useSetter:function(){re=!0},useSimple:function(){re=!1}}),r({target:"Object",stat:!0,forced:!c,sham:!s},{create:se,defineProperty:ae,defineProperties:ue,getOwnPropertyDescriptor:le}),r({target:"Object",stat:!0,forced:!c},{getOwnPropertyNames:fe}),B(),L(H,R),O[V]=!0},12231:function(e,t,n){"use strict";var r=n(65439),o=n(4098),i=n(25511),a=n(38457),u=n(35821),s=n(48609),c=n(52625),l=n(39599),f=n(92867).f,d=n(25361),p=i.Symbol,h=p&&p.prototype;if(o&&s(p)&&(!("description"in h)||p().description!==undefined)){var v={},m=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:l(arguments[0]),t=c(h,this)?new p(e):e===undefined?p():p(e);return""===e&&(v[t]=!0),t};d(m,p),m.prototype=h,h.constructor=m;var g="Symbol(test)"==String(p("test")),y=a(h.valueOf),b=a(h.toString),x=/^Symbol\((.*)\)[^)]+$/,w=a("".replace),E=a("".slice);f(h,"description",{configurable:!0,get:function(){var e=y(this);if(u(v,e))return"";var t=b(e),n=g?E(t,7,-1):w(t,x,"$1");return""===n?undefined:n}}),r({global:!0,constructor:!0,forced:!0},{Symbol:m})}},11418:function(e,t,n){"use strict";var r=n(65439),o=n(53242),i=n(35821),a=n(39599),u=n(71928),s=n(47862),c=u("string-to-symbol-registry"),l=u("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!s},{"for":function(e){var t=a(e);if(i(c,t))return c[t];var n=o("Symbol")(t);return c[t]=n,l[n]=t,n}})},80407:function(e,t,n){"use strict";n(68666)("hasInstance")},30414:function(e,t,n){"use strict";n(68666)("isConcatSpreadable")},70890:function(e,t,n){"use strict";n(68666)("iterator")},92414:function(e,t,n){"use strict";n(73245),n(11418),n(49590),n(282),n(31656)},49590:function(e,t,n){"use strict";var r=n(65439),o=n(35821),i=n(32437),a=n(29141),u=n(71928),s=n(47862),c=u("symbol-to-string-registry");r({target:"Symbol",stat:!0,forced:!s},{keyFor:function(e){if(!i(e))throw TypeError(a(e)+" is not a symbol");if(o(c,e))return c[e]}})},75712:function(e,t,n){"use strict";n(68666)("matchAll")},20926:function(e,t,n){"use strict";n(68666)("match")},93604:function(e,t,n){"use strict";n(68666)("replace")},62278:function(e,t,n){"use strict";n(68666)("search")},76494:function(e,t,n){"use strict";n(68666)("species")},76685:function(e,t,n){"use strict";n(68666)("split")},24200:function(e,t,n){"use strict";var r=n(68666),o=n(31572);r("toPrimitive"),o()},75914:function(e,t,n){"use strict";var r=n(53242),o=n(68666),i=n(13453);o("toStringTag"),i(r("Symbol"),"Symbol")},14965:function(e,t,n){"use strict";n(68666)("unscopables")},37313:function(e,t,n){"use strict";var r=n(38457),o=n(89746),i=r(n(96833)),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("copyWithin",(function(e,t){return i(a(this),e,t,arguments.length>2?arguments[2]:undefined)}))},93349:function(e,t,n){"use strict";var r=n(89746),o=n(40975).every,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},13317:function(e,t,n){"use strict";var r=n(89746),o=n(7381),i=n(3114),a=n(13149),u=n(68609),s=n(38457),c=n(3440),l=r.aTypedArray,f=r.exportTypedArrayMethod,d=s("".slice);f("fill",(function(e){var t=arguments.length;l(this);var n="Big"===d(a(this),0,3)?i(e):+e;return u(o,this,n,t>1?arguments[1]:undefined,t>2?arguments[2]:undefined)}),c((function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e})))},23238:function(e,t,n){"use strict";var r=n(89746),o=n(40975).filter,i=n(43657),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("filter",(function(e){var t=o(a(this),e,arguments.length>1?arguments[1]:undefined);return i(this,t)}))},92404:function(e,t,n){"use strict";var r=n(89746),o=n(40975).findIndex,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},84904:function(e,t,n){"use strict";var r=n(89746),o=n(40975).find,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},24953:function(e,t,n){"use strict";n(63541)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},80733:function(e,t,n){"use strict";n(63541)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},97248:function(e,t,n){"use strict";var r=n(89746),o=n(40975).forEach,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",(function(e){o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},54272:function(e,t,n){"use strict";var r=n(1187);(0,n(89746).exportTypedArrayStaticMethod)("from",n(68071),r)},49836:function(e,t,n){"use strict";var r=n(89746),o=n(16077).includes,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},83200:function(e,t,n){"use strict";var r=n(89746),o=n(16077).indexOf,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},64249:function(e,t,n){"use strict";n(63541)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},27744:function(e,t,n){"use strict";n(63541)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},72781:function(e,t,n){"use strict";n(63541)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},95012:function(e,t,n){"use strict";var r=n(25511),o=n(3440),i=n(38457),a=n(89746),u=n(20452),s=n(42847)("iterator"),c=r.Uint8Array,l=i(u.values),f=i(u.keys),d=i(u.entries),p=a.aTypedArray,h=a.exportTypedArrayMethod,v=c&&c.prototype,m=!o((function(){v[s].call([1])})),g=!!v&&v.values&&v[s]===v.values&&"values"===v.values.name,y=function(){return l(p(this))};h("entries",(function(){return d(p(this))}),m),h("keys",(function(){return f(p(this))}),m),h("values",y,m||!g,{name:"values"}),h(s,y,m||!g,{name:"values"})},55430:function(e,t,n){"use strict";var r=n(89746),o=n(38457),i=r.aTypedArray,a=r.exportTypedArrayMethod,u=o([].join);a("join",(function(e){return u(i(this),e)}))},32194:function(e,t,n){"use strict";var r=n(89746),o=n(42177),i=n(10303),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return o(i,a(this),t>1?[e,arguments[1]]:[e])}))},24793:function(e,t,n){"use strict";var r=n(89746),o=n(40975).map,i=n(35927),a=r.aTypedArray;(0,r.exportTypedArrayMethod)("map",(function(e){return o(a(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(i(e))(t)}))}))},94098:function(e,t,n){"use strict";var r=n(89746),o=n(1187),i=r.aTypedArrayConstructor;(0,r.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(i(this))(t);t>e;)n[e]=arguments[e++];return n}),o)},13917:function(e,t,n){"use strict";var r=n(89746),o=n(55202).right,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return o(i(this),e,t,t>1?arguments[1]:undefined)}))},15882:function(e,t,n){"use strict";var r=n(89746),o=n(55202).left,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return o(i(this),e,t,t>1?arguments[1]:undefined)}))},15883:function(e,t,n){"use strict";var r=n(89746),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=Math.floor;i("reverse",(function(){for(var e,t=this,n=o(t).length,r=a(n/2),i=0;i1?arguments[1]:undefined,1),n=s(e);if(m)return o(p,this,n,t);var r=this.length,i=a(n),c=0;if(i+t>r)throw l("Wrong length");for(;ci;)c[i]=n[i++];return c}),i((function(){new Int8Array(1).slice()})))},21040:function(e,t,n){"use strict";var r=n(89746),o=n(40975).some,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},48106:function(e,t,n){"use strict";var r=n(25511),o=n(42481),i=n(3440),a=n(79030),u=n(89497),s=n(89746),c=n(98861),l=n(79920),f=n(88088),d=n(51737),p=s.aTypedArray,h=s.exportTypedArrayMethod,v=r.Uint16Array,m=v&&o(v.prototype.sort),g=!(!m||i((function(){m(new v(2),null)}))&&i((function(){m(new v(2),{})}))),y=!!m&&!i((function(){if(f)return f<74;if(c)return c<67;if(l)return!0;if(d)return d<602;var e,t,n=new v(516),r=Array(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(m(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));h("sort",(function(e){return e!==undefined&&a(e),y?m(this,e):u(p(this),function(e){return function(t,n){return e!==undefined?+e(t,n)||0:n!=n?-1:t!=t?1:0===t&&0===n?1/t>0&&1/n<0?1:-1:t>n}}(e))}),!y||g)},50140:function(e,t,n){"use strict";var r=n(89746),o=n(60780),i=n(46085),a=n(35927),u=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",(function(e,t){var n=u(this),r=n.length,s=i(e,r);return new(a(n))(n.buffer,n.byteOffset+s*n.BYTES_PER_ELEMENT,o((t===undefined?r:i(t,r))-s))}))},95577:function(e,t,n){"use strict";var r=n(25511),o=n(42177),i=n(89746),a=n(3440),u=n(92098),s=r.Int8Array,c=i.aTypedArray,l=i.exportTypedArrayMethod,f=[].toLocaleString,d=!!s&&a((function(){f.call(new s(1))}));l("toLocaleString",(function(){return o(f,d?u(c(this)):c(this),u(arguments))}),a((function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()}))||!a((function(){s.prototype.toLocaleString.call([1,2])})))},66325:function(e,t,n){"use strict";var r=n(89746).exportTypedArrayMethod,o=n(3440),i=n(25511),a=n(38457),u=i.Uint8Array,s=u&&u.prototype||{},c=[].toString,l=a([].join);o((function(){c.call({})}))&&(c=function(){return l(this)});var f=s.toString!=c;r("toString",c,f)},5546:function(e,t,n){"use strict";n(63541)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},31233:function(e,t,n){"use strict";n(63541)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},85862:function(e,t,n){"use strict";n(63541)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},13802:function(e,t,n){"use strict";n(63541)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0)},86023:function(e,t,n){"use strict";var r,o=n(14097),i=n(25511),a=n(38457),u=n(83856),s=n(94986),c=n(18207),l=n(94034),f=n(46840),d=n(29017).enforce,p=n(3440),h=n(26942),v=Object,m=Array.isArray,g=v.isExtensible,y=v.isFrozen,b=v.isSealed,x=v.freeze,w=v.seal,E={},_={},D=!i.ActiveXObject&&"ActiveXObject"in i,C=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},k=c("WeakMap",C,l),A=k.prototype,S=a(A.set);if(h)if(D){r=l.getConstructor(C,"WeakMap",!0),s.enable();var N=a(A["delete"]),O=a(A.has),F=a(A.get);u(A,{"delete":function(e){if(f(e)&&!g(e)){var t=d(this);return t.frozen||(t.frozen=new r),N(this,e)||t.frozen["delete"](e)}return N(this,e)},has:function(e){if(f(e)&&!g(e)){var t=d(this);return t.frozen||(t.frozen=new r),O(this,e)||t.frozen.has(e)}return O(this,e)},get:function(e){if(f(e)&&!g(e)){var t=d(this);return t.frozen||(t.frozen=new r),O(this,e)?F(this,e):t.frozen.get(e)}return F(this,e)},set:function(e,t){if(f(e)&&!g(e)){var n=d(this);n.frozen||(n.frozen=new r),O(this,e)?S(this,e,t):n.frozen.set(e,t)}else S(this,e,t);return this}})}else o&&p((function(){var e=x([]);return S(new k,e,1),!y(e)}))&&u(A,{set:function(e,t){var n;return m(e)&&(y(e)?n=E:b(e)&&(n=_)),S(this,e,t),n==E&&x(e),n==_&&w(e),this}})},13989:function(e,t,n){"use strict";n(86023)},48989:function(e,t,n){"use strict";n(18207)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(94034))},89330:function(e,t,n){"use strict";n(48989)},24053:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(3017).clear;r({global:!0,bind:!0,enumerable:!0,forced:o.clearImmediate!==i},{clearImmediate:i})},69207:function(e,t,n){"use strict";n(24053),n(72357)},24288:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(5934),a=n(79030),u=n(44020),s=n(68173),c=o.process;r({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(e){u(arguments.length,1),a(e);var t=s&&c.domain;i(t?t.bind(e):e)}})},72357:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(3017).set,a=n(23852),u=o.setImmediate?a(i,!1):i;r({global:!0,bind:!0,enumerable:!0,forced:o.setImmediate!==u},{setImmediate:u})},39514:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(23852)(o.setInterval,!0);r({global:!0,bind:!0,forced:o.setInterval!==i},{setInterval:i})},78402:function(e,t,n){"use strict";var r=n(65439),o=n(25511),i=n(23852)(o.setTimeout,!0);r({global:!0,bind:!0,forced:o.setTimeout!==i},{setTimeout:i})},50010:function(e,t,n){"use strict";n(39514),n(78402)},90928:function(e,t,n){"use strict";var r;function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}!function(i){var a,u,s,c=arguments,l=(a=/d{1,4}|D{3,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|W{1,2}|[LlopSZN]|"[^"]*"|'[^']*'/g,u=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,s=/[^-+\dA-Z]/g,function(e,t,n,r){if(1!==c.length||"string"!==v(e)||/\d/.test(e)||(t=e,e=undefined),(e=e||0===e?e:new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var o=(t=String(l.masks[t]||t||l.masks["default"])).slice(0,4);"UTC:"!==o&&"GMT:"!==o||(t=t.slice(4),n=!0,"GMT:"===o&&(r=!0));var i=function(){return n?"getUTC":"get"},m=function(){return e[i()+"Date"]()},g=function(){return e[i()+"Day"]()},y=function(){return e[i()+"Month"]()},b=function(){return e[i()+"FullYear"]()},x=function(){return e[i()+"Hours"]()},w=function(){return e[i()+"Minutes"]()},E=function(){return e[i()+"Seconds"]()},_=function(){return e[i()+"Milliseconds"]()},D=function(){return n?0:e.getTimezoneOffset()},C=function(){return p(e)},k=function(){return h(e)},A={d:function(){return m()},dd:function(){return f(m())},ddd:function(){return l.i18n.dayNames[g()]},DDD:function(){return d({y:b(),m:y(),d:m(),_:i(),dayName:l.i18n.dayNames[g()],short:!0})},dddd:function(){return l.i18n.dayNames[g()+7]},DDDD:function(){return d({y:b(),m:y(),d:m(),_:i(),dayName:l.i18n.dayNames[g()+7]})},m:function(){return y()+1},mm:function(){return f(y()+1)},mmm:function(){return l.i18n.monthNames[y()]},mmmm:function(){return l.i18n.monthNames[y()+12]},yy:function(){return String(b()).slice(2)},yyyy:function(){return f(b(),4)},h:function(){return x()%12||12},hh:function(){return f(x()%12||12)},H:function(){return x()},HH:function(){return f(x())},M:function(){return w()},MM:function(){return f(w())},s:function(){return E()},ss:function(){return f(E())},l:function(){return f(_(),3)},L:function(){return f(Math.floor(_()/10))},t:function(){return x()<12?l.i18n.timeNames[0]:l.i18n.timeNames[1]},tt:function(){return x()<12?l.i18n.timeNames[2]:l.i18n.timeNames[3]},T:function(){return x()<12?l.i18n.timeNames[4]:l.i18n.timeNames[5]},TT:function(){return x()<12?l.i18n.timeNames[6]:l.i18n.timeNames[7]},Z:function(){return r?"GMT":n?"UTC":(String(e).match(u)||[""]).pop().replace(s,"").replace(/GMT\+0000/g,"UTC")},o:function(){return(D()>0?"-":"+")+f(100*Math.floor(Math.abs(D())/60)+Math.abs(D())%60,4)},p:function(){return(D()>0?"-":"+")+f(Math.floor(Math.abs(D())/60),2)+":"+f(Math.floor(Math.abs(D())%60),2)},S:function(){return["th","st","nd","rd"][m()%10>3?0:(m()%100-m()%10!=10)*m()%10]},W:function(){return C()},WW:function(){return f(C())},N:function(){return k()}};return t.replace(a,(function(e){return e in A?A[e]():e.slice(1,e.length-1)}))});l.masks={"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",paddedShortDate:"mm/dd/yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"},l.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]};var f=function(e,t){for(e=String(e),t=t||2;e.lengthe.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?n-1:0),o=1;o/gm),Z=m(/\${[\w\W]*}/gm),X=m(/^data-[\-\w.\u00B7-\uFFFF]/),Q=m(/^aria-[\-\w]+$/),J=m(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ee=m(/^(?:\w+script|data):/i),te=m(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ne=m(/^html$/i),re=function(){function e(){return"undefined"==typeof window?null:window}return e}(),oe=function(){function t(t,n){if("object"!==e(t)||"function"!=typeof t.createPolicy)return null;var r=null,o="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(o)&&(r=n.currentScript.getAttribute(o));var i="dompurify"+(r?"#"+r:"");try{return t.createPolicy(i,{createHTML:function(){function e(e){return e}return e}(),createScriptURL:function(){function e(e){return e}return e}()})}catch(a){return null}}return t}();function ie(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:re(),n=function(){function e(e){return ie(e)}return e}();if(n.version="2.4.3",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,i=t.document,a=t.DocumentFragment,u=t.HTMLTemplateElement,s=t.Node,c=t.Element,l=t.NodeFilter,f=t.NamedNodeMap,d=void 0===f?t.NamedNodeMap||t.MozNamedAttrMap:f,p=t.HTMLFormElement,h=t.DOMParser,m=t.trustedTypes,g=c.prototype,y=L(g,"cloneNode"),b=L(g,"nextSibling"),x=L(g,"childNodes"),M=L(g,"parentNode");if("function"==typeof u){var T=i.createElement("template");T.content&&T.content.ownerDocument&&(i=T.content.ownerDocument)}var ae=oe(m,r),ue=ae?ae.createHTML(""):"",se=i,ce=se.implementation,le=se.createNodeIterator,fe=se.createDocumentFragment,de=se.getElementsByTagName,pe=r.importNode,he={};try{he=B(i).documentMode?i.documentMode:{}}catch(Mt){}var ve={};n.isSupported="function"==typeof M&&ce&&"undefined"!=typeof ce.createHTMLDocument&&9!==he;var me,ge,ye=G,be=q,xe=Z,we=X,Ee=Q,_e=ee,De=te,Ce=J,ke=null,Ae=I({},[].concat(o(P),o(j),o(V),o(z),o(U))),Se=null,Ne=I({},[].concat(o(Y),o(H),o(W),o($))),Oe=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Fe=null,Me=null,Te=!0,Ie=!0,Be=!1,Le=!1,Pe=!1,je=!1,Ve=!1,Re=!1,ze=!1,Ke=!1,Ue=!0,Ye=!1,He="user-content-",We=!0,$e=!1,Ge={},qe=null,Ze=I({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Xe=null,Qe=I({},["audio","video","img","source","image","track"]),Je=null,et=I({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),tt="http://www.w3.org/1998/Math/MathML",nt="http://www.w3.org/2000/svg",rt="http://www.w3.org/1999/xhtml",ot=rt,it=!1,at=null,ut=I({},[tt,nt,rt],C),st=["application/xhtml+xml","text/html"],ct="text/html",lt=null,ft=i.createElement("form"),dt=function(){function e(e){return e instanceof RegExp||e instanceof Function}return e}(),pt=function(){function t(t){lt&<===t||(t&&"object"===e(t)||(t={}),t=B(t),me=me=-1===st.indexOf(t.PARSER_MEDIA_TYPE)?ct:t.PARSER_MEDIA_TYPE,ge="application/xhtml+xml"===me?C:D,ke="ALLOWED_TAGS"in t?I({},t.ALLOWED_TAGS,ge):Ae,Se="ALLOWED_ATTR"in t?I({},t.ALLOWED_ATTR,ge):Ne,at="ALLOWED_NAMESPACES"in t?I({},t.ALLOWED_NAMESPACES,C):ut,Je="ADD_URI_SAFE_ATTR"in t?I(B(et),t.ADD_URI_SAFE_ATTR,ge):et,Xe="ADD_DATA_URI_TAGS"in t?I(B(Qe),t.ADD_DATA_URI_TAGS,ge):Qe,qe="FORBID_CONTENTS"in t?I({},t.FORBID_CONTENTS,ge):Ze,Fe="FORBID_TAGS"in t?I({},t.FORBID_TAGS,ge):{},Me="FORBID_ATTR"in t?I({},t.FORBID_ATTR,ge):{},Ge="USE_PROFILES"in t&&t.USE_PROFILES,Te=!1!==t.ALLOW_ARIA_ATTR,Ie=!1!==t.ALLOW_DATA_ATTR,Be=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Le=t.SAFE_FOR_TEMPLATES||!1,Pe=t.WHOLE_DOCUMENT||!1,Re=t.RETURN_DOM||!1,ze=t.RETURN_DOM_FRAGMENT||!1,Ke=t.RETURN_TRUSTED_TYPE||!1,Ve=t.FORCE_BODY||!1,Ue=!1!==t.SANITIZE_DOM,Ye=t.SANITIZE_NAMED_PROPS||!1,We=!1!==t.KEEP_CONTENT,$e=t.IN_PLACE||!1,Ce=t.ALLOWED_URI_REGEXP||Ce,ot=t.NAMESPACE||rt,t.CUSTOM_ELEMENT_HANDLING&&dt(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Oe.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&dt(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Oe.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Oe.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Le&&(Ie=!1),ze&&(Re=!0),Ge&&(ke=I({},o(U)),Se=[],!0===Ge.html&&(I(ke,P),I(Se,Y)),!0===Ge.svg&&(I(ke,j),I(Se,H),I(Se,$)),!0===Ge.svgFilters&&(I(ke,V),I(Se,H),I(Se,$)),!0===Ge.mathMl&&(I(ke,z),I(Se,W),I(Se,$))),t.ADD_TAGS&&(ke===Ae&&(ke=B(ke)),I(ke,t.ADD_TAGS,ge)),t.ADD_ATTR&&(Se===Ne&&(Se=B(Se)),I(Se,t.ADD_ATTR,ge)),t.ADD_URI_SAFE_ATTR&&I(Je,t.ADD_URI_SAFE_ATTR,ge),t.FORBID_CONTENTS&&(qe===Ze&&(qe=B(qe)),I(qe,t.FORBID_CONTENTS,ge)),We&&(ke["#text"]=!0),Pe&&I(ke,["html","head","body"]),ke.table&&(I(ke,["tbody"]),delete Fe.tbody),v&&v(t),lt=t)}return t}(),ht=I({},["mi","mo","mn","ms","mtext"]),vt=I({},["foreignobject","desc","title","annotation-xml"]),mt=I({},["title","style","font","a","script"]),gt=I({},j);I(gt,V),I(gt,R);var yt=I({},z);I(yt,K);var bt=function(){function e(e){var t=M(e);t&&t.tagName||(t={namespaceURI:ot,tagName:"template"});var n=D(e.tagName),r=D(t.tagName);return!!at[e.namespaceURI]&&(e.namespaceURI===nt?t.namespaceURI===rt?"svg"===n:t.namespaceURI===tt?"svg"===n&&("annotation-xml"===r||ht[r]):Boolean(gt[n]):e.namespaceURI===tt?t.namespaceURI===rt?"math"===n:t.namespaceURI===nt?"math"===n&&vt[r]:Boolean(yt[n]):e.namespaceURI===rt?!(t.namespaceURI===nt&&!vt[r])&&!(t.namespaceURI===tt&&!ht[r])&&!yt[n]&&(mt[n]||!gt[n]):!("application/xhtml+xml"!==me||!at[e.namespaceURI]))}return e}(),xt=function(){function e(e){_(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(Mt){try{e.outerHTML=ue}catch(Mt){e.remove()}}}return e}(),wt=function(){function e(e,t){try{_(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(Mt){_(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Se[e])if(Re||ze)try{xt(t)}catch(Mt){}else try{t.setAttribute(e,"")}catch(Mt){}}return e}(),Et=function(){function e(e){var t,n;if(Ve)e=""+e;else{var r=k(e,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===me&&ot===rt&&(e=''+e+"");var o=ae?ae.createHTML(e):e;if(ot===rt)try{t=(new h).parseFromString(o,me)}catch(Mt){}if(!t||!t.documentElement){t=ce.createDocument(ot,"template",null);try{t.documentElement.innerHTML=it?ue:o}catch(Mt){}}var a=t.body||t.documentElement;return e&&n&&a.insertBefore(i.createTextNode(n),a.childNodes[0]||null),ot===rt?de.call(t,Pe?"html":"body")[0]:Pe?t.documentElement:a}return e}(),_t=function(){function e(e){return le.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)}return e}(),Dt=function(){function e(e){return e instanceof p&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof d)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)}return e}(),Ct=function(){function t(t){return"object"===e(s)?t instanceof s:t&&"object"===e(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName}return t}(),kt=function(){function e(e,t,r){ve[e]&&w(ve[e],(function(e){e.call(n,t,r,lt)}))}return e}(),At=function(){function e(e){var t;if(kt("beforeSanitizeElements",e,null),Dt(e))return xt(e),!0;if(O(/[\u0080-\uFFFF]/,e.nodeName))return xt(e),!0;var r=ge(e.nodeName);if(kt("uponSanitizeElement",e,{tagName:r,allowedTags:ke}),e.hasChildNodes()&&!Ct(e.firstElementChild)&&(!Ct(e.content)||!Ct(e.content.firstElementChild))&&O(/<[/\w]/g,e.innerHTML)&&O(/<[/\w]/g,e.textContent))return xt(e),!0;if("select"===r&&O(/=0;--a)o.insertBefore(y(i[a],!0),b(e))}return xt(e),!0}return e instanceof c&&!bt(e)?(xt(e),!0):"noscript"!==r&&"noembed"!==r||!O(/<\/no(script|embed)/i,e.innerHTML)?(Le&&3===e.nodeType&&(t=e.textContent,t=A(t,ye," "),t=A(t,be," "),t=A(t,xe," "),e.textContent!==t&&(_(n.removed,{element:e.cloneNode()}),e.textContent=t)),kt("afterSanitizeElements",e,null),!1):(xt(e),!0)}return e}(),St=function(){function e(e,t,n){if(Ue&&("id"===t||"name"===t)&&(n in i||n in ft))return!1;if(Ie&&!Me[t]&&O(we,t));else if(Te&&O(Ee,t));else if(!Se[t]||Me[t]){if(!(Nt(e)&&(Oe.tagNameCheck instanceof RegExp&&O(Oe.tagNameCheck,e)||Oe.tagNameCheck instanceof Function&&Oe.tagNameCheck(e))&&(Oe.attributeNameCheck instanceof RegExp&&O(Oe.attributeNameCheck,t)||Oe.attributeNameCheck instanceof Function&&Oe.attributeNameCheck(t))||"is"===t&&Oe.allowCustomizedBuiltInElements&&(Oe.tagNameCheck instanceof RegExp&&O(Oe.tagNameCheck,n)||Oe.tagNameCheck instanceof Function&&Oe.tagNameCheck(n))))return!1}else if(Je[t]);else if(O(Ce,A(n,De,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==S(n,"data:")||!Xe[e])if(Be&&!O(_e,A(n,De,"")));else if(n)return!1;return!0}return e}(),Nt=function(){function e(e){return e.indexOf("-")>0}return e}(),Ot=function(){function t(t){var r,o,i,a;kt("beforeSanitizeAttributes",t,null);var u=t.attributes;if(u){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Se};for(a=u.length;a--;){var c=r=u[a],l=c.name,f=c.namespaceURI;if(o="value"===l?r.value:N(r.value),i=ge(l),s.attrName=i,s.attrValue=o,s.keepAttr=!0,s.forceKeepAttr=undefined,kt("uponSanitizeAttribute",t,s),o=s.attrValue,!s.forceKeepAttr&&(wt(l,t),s.keepAttr))if(O(/\/>/i,o))wt(l,t);else{Le&&(o=A(o,ye," "),o=A(o,be," "),o=A(o,xe," "));var d=ge(t.nodeName);if(St(d,i,o)){if(!Ye||"id"!==i&&"name"!==i||(wt(l,t),o=He+o),ae&&"object"===e(m)&&"function"==typeof m.getAttributeType)if(f);else switch(m.getAttributeType(d,i)){case"TrustedHTML":o=ae.createHTML(o);break;case"TrustedScriptURL":o=ae.createScriptURL(o)}try{f?t.setAttributeNS(f,l,o):t.setAttribute(l,o),E(n.removed)}catch(Mt){}}}}kt("afterSanitizeAttributes",t,null)}}return t}(),Ft=function(){function e(t){var n,r=_t(t);for(kt("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)kt("uponSanitizeShadowNode",n,null),At(n)||(n.content instanceof a&&e(n.content),Ot(n));kt("afterSanitizeShadowDOM",t,null)}return e}();return n.sanitize=function(o){var i,u,c,l,f,d=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if((it=!o)&&(o="\x3c!--\x3e"),"string"!=typeof o&&!Ct(o)){if("function"!=typeof o.toString)throw F("toString is not a function");if("string"!=typeof(o=o.toString()))throw F("dirty is not a string, aborting")}if(!n.isSupported){if("object"===e(t.toStaticHTML)||"function"==typeof t.toStaticHTML){if("string"==typeof o)return t.toStaticHTML(o);if(Ct(o))return t.toStaticHTML(o.outerHTML)}return o}if(je||pt(d),n.removed=[],"string"==typeof o&&($e=!1),$e){if(o.nodeName){var p=ge(o.nodeName);if(!ke[p]||Fe[p])throw F("root node is forbidden and cannot be sanitized in-place")}}else if(o instanceof s)1===(u=(i=Et("\x3c!----\x3e")).ownerDocument.importNode(o,!0)).nodeType&&"BODY"===u.nodeName||"HTML"===u.nodeName?i=u:i.appendChild(u);else{if(!Re&&!Le&&!Pe&&-1===o.indexOf("<"))return ae&&Ke?ae.createHTML(o):o;if(!(i=Et(o)))return Re?null:Ke?ue:""}i&&Ve&&xt(i.firstChild);for(var h=_t($e?o:i);c=h.nextNode();)3===c.nodeType&&c===l||At(c)||(c.content instanceof a&&Ft(c.content),Ot(c),l=c);if(l=null,$e)return o;if(Re){if(ze)for(f=fe.call(i.ownerDocument);i.firstChild;)f.appendChild(i.firstChild);else f=i;return Se.shadowroot&&(f=pe.call(r,f,!0)),f}var v=Pe?i.outerHTML:i.innerHTML;return Pe&&ke["!doctype"]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&O(ne,i.ownerDocument.doctype.name)&&(v="\n"+v),Le&&(v=A(v,ye," "),v=A(v,be," "),v=A(v,xe," ")),ae&&Ke?ae.createHTML(v):v},n.setConfig=function(e){pt(e),je=!0},n.clearConfig=function(){lt=null,je=!1},n.isValidAttribute=function(e,t,n){lt||pt({});var r=ge(e),o=ge(t);return St(r,o,n)},n.addHook=function(e,t){"function"==typeof t&&(ve[e]=ve[e]||[],_(ve[e],t))},n.removeHook=function(e){if(ve[e])return E(ve[e])},n.removeHooks=function(e){ve[e]&&(ve[e]=[])},n.removeAllHooks=function(){ve={}},n}return ie()}()},22182:function(e,t){"use strict";t.__esModule=!0,t.Fragment=t.EMPTY_OBJ=t.Component=void 0,t._CI=Se,t._HI=P,t._M=Oe,t._MCCC=Ie,t._ME=Me,t._MFCC=Be,t._MP=ke,t._MR=ye,t._RFC=Ne,t.__render=Re,t.createComponentVNode=function(e,t,n,r,i){var a=new N(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),r,function(e,t,n){var r=(32768&e?t.render:t).defaultProps;if(o(r))return n;if(o(n))return c(r,null);return k(n,r)}(e,t,n),function(e,t,n){if(4&e)return n;var r=(32768&e?t.render:t).defaultHooks;if(o(r))return n;if(o(n))return r;return k(n,r)}(e,t,i),t);_.createVNode&&_.createVNode(a);return a},t.createFragment=M,t.createPortal=function(e,t){var n=P(e);return O(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,r,o){e||(e=t),ze(n,e,r,o)}},t.createTextVNode=F,t.createVNode=O,t.directClone=T,t.findDOMfromVNode=y,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case"$F":return 8192;default:return 1}},t.linkEvent=function(e,t){if(a(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&o(e.children)&&L(e,t.children),void 0!==t.className&&(o(e.className)&&(e.className=t.className||null),t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?c(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.options=void 0,t.render=ze,t.rerender=$e,t.version=void 0;var n=Array.isArray;function r(e){var t=typeof e;return"string"===t||"number"===t}function o(e){return null==e}function i(e){return null===e||!1===e||!0===e||void 0===e}function a(e){return"function"==typeof e}function u(e){return"string"==typeof e}function s(e){return null===e}function c(e,t){var n={};if(e)for(var r in e)n[r]=e[r];if(t)for(var o in t)n[o]=t[o];return n}function l(e){return!s(e)&&"object"==typeof e}var f={};t.EMPTY_OBJ=f;function d(e){return e.substr(2).toLowerCase()}function p(e,t){e.appendChild(t)}function h(e,t,n){s(n)?p(e,t):e.insertBefore(t,n)}function v(e,t){e.removeChild(t)}function m(e){for(var t=0;t0,h=s(d),v=u(d)&&d[0]===S;p||h||v?(o=o||t.slice(0,l),(p||v)&&(f=T(f)),(h||v)&&(f.key=S+l),o.push(f)):o&&o.push(f),f.flags|=65536}}a=0===(o=o||t).length?1:8}else(o=t).flags|=65536,81920&t.flags&&(o=T(t)),a=2;return e.children=o,e.childFlags=a,e}function P(e){return i(e)||r(e)?F(e,null):n(e)?M(e,0,null):16384&e.flags?T(e):e}var j="http://www.w3.org/1999/xlink",V="http://www.w3.org/XML/1998/namespace",R={"xlink:actuate":j,"xlink:arcrole":j,"xlink:href":j,"xlink:role":j,"xlink:show":j,"xlink:title":j,"xlink:type":j,"xml:base":V,"xml:lang":V,"xml:space":V};function z(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var K=z(0),U=z(null),Y=z(!0);function H(e,t){var n=t.$EV;return n||(n=t.$EV=z(null)),n[e]||1==++K[e]&&(U[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?$(t,!0,e,X(t)):t.stopPropagation()}}(e):function(e){return function(t){$(t,!1,e,X(t))}}(e);return document.addEventListener(d(e),t),t}(e)),n}function W(e,t){var n=t.$EV;n&&n[e]&&(0==--K[e]&&(document.removeEventListener(d(e),U[e]),U[e]=null),n[e]=null)}function $(e,t,n,r){var o=function(e){return a(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&o.disabled)return;var i=o.$EV;if(i){var u=i[n];if(u&&(r.dom=o,u.event?u.event(u.data,e):u(e),e.cancelBubble))return}o=o.parentNode}while(!s(o))}function G(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function q(){return this.defaultPrevented}function Z(){return this.cancelBubble}function X(e){var t={dom:document};return e.isDefaultPrevented=q,e.isPropagationStopped=Z,e.stopPropagation=G,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function Q(e,t,n){if(e[t]){var r=e[t];r.event?r.event(r.data,n):r(n)}else{var o=t.toLowerCase();e[o]&&e[o](n)}}function J(e,t){var n=function(n){var r=this.$V;if(r){var o=r.props||f,i=r.dom;if(u(e))Q(o,e,n);else for(var s=0;s-1&&t.options[a]&&(u=t.options[a].value),n&&o(u)&&(u=e.defaultValue),ae(r,u)}}var ce,le,fe=J("onInput",pe),de=J("onChange");function pe(e,t,n){var r=e.value,i=t.value;if(o(r)){if(n){var a=e.defaultValue;o(a)||a===i||(t.defaultValue=a,t.value=a)}}else i!==r&&(t.defaultValue=r,t.value=r)}function he(e,t,n,r,o,i){64&e?ie(r,n):256&e?se(r,n,o,t):128&e&&pe(r,n,o),i&&(n.$V=t)}function ve(e,t,n){64&e?function(e,t){te(t.type)?(ee(e,"change",re),ee(e,"click",oe)):ee(e,"input",ne)}(t,n):256&e?function(e){ee(e,"change",ue)}(t):128&e&&function(e,t){ee(e,"input",fe),t.onChange&&ee(e,"change",de)}(t,n)}function me(e){return e.type&&te(e.type)?!o(e.checked):!o(e.value)}function ge(e){e&&!A(e,null)&&e.current&&(e.current=null)}function ye(e,t,n){e&&(a(e)||void 0!==e.current)&&n.push((function(){A(e,t)||void 0===e.current||(e.current=t)}))}function be(e,t){xe(e),b(e,t)}function xe(e){var t,n=e.flags,r=e.children;if(481&n){t=e.ref;var i=e.props;ge(t);var u=e.childFlags;if(!s(i))for(var c=Object.keys(i),l=0,d=c.length;l0;for(var u in a&&(i=me(n))&&ve(t,r,n),n)Ce(u,null,n[u],r,o,i,null);a&&he(t,e,r,n,!0,i)}function Ae(e,t,n){var r=P(e.render(t,e.state,n)),o=n;return a(e.getChildContext)&&(o=c(n,e.getChildContext())),e.$CX=o,r}function Se(e,t,n,r,o,i){var u=new t(n,r),c=u.$N=Boolean(t.getDerivedStateFromProps||u.getSnapshotBeforeUpdate);if(u.$SVG=o,u.$L=i,e.children=u,u.$BS=!1,u.context=r,u.props===f&&(u.props=n),c)u.state=w(u,n,u.state);else if(a(u.componentWillMount)){u.$BR=!0,u.componentWillMount();var l=u.$PS;if(!s(l)){var d=u.state;if(s(d))u.state=l;else for(var p in l)d[p]=l[p];u.$PS=null}u.$BR=!1}return u.$LI=Ae(u,n,r),u}function Ne(e,t){var n=e.props||f;return 32768&e.flags?e.type.render(n,e.ref,t):e.type(n,t)}function Oe(e,t,n,r,o,i){var a=e.flags|=16384;481&a?Me(e,t,n,r,o,i):4&a?function(e,t,n,r,o,i){var a=Se(e,e.type,e.props||f,n,r,i);Oe(a.$LI,t,a.$CX,r,o,i),Ie(e.ref,a,i)}(e,t,n,r,o,i):8&a?(!function(e,t,n,r,o,i){Oe(e.children=P(Ne(e,n)),t,n,r,o,i)}(e,t,n,r,o,i),Be(e,i)):512&a||16&a?Fe(e,t,o):8192&a?function(e,t,n,r,o,i){var a=e.children,u=e.childFlags;12&u&&0===a.length&&(u=e.childFlags=2,a=e.children=I());2===u?Oe(a,n,t,r,o,i):Te(a,n,t,r,o,i)}(e,n,t,r,o,i):1024&a&&function(e,t,n,r,o){Oe(e.children,e.ref,t,!1,null,o);var i=I();Fe(i,n,r),e.dom=i.dom}(e,n,t,o,i)}function Fe(e,t,n){var r=e.dom=document.createTextNode(e.children);s(t)||h(t,r,n)}function Me(e,t,n,r,i,a){var u=e.flags,c=e.props,l=e.className,f=e.childFlags,d=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,r=r||(32&u)>0),p=e.children;if(o(l)||""===l||(r?d.setAttribute("class",l):d.className=l),16===f)D(d,p);else if(1!==f){var v=r&&"foreignObject"!==e.type;2===f?(16384&p.flags&&(e.children=p=T(p)),Oe(p,d,n,v,null,a)):8!==f&&4!==f||Te(p,d,n,v,null,a)}s(t)||h(t,d,i),s(c)||ke(e,u,c,d,r),ye(e.ref,d,a)}function Te(e,t,n,r,o,i){for(var a=0;a0,c!==l){var h=c||f;if((u=l||f)!==f)for(var v in(d=(448&i)>0)&&(p=me(u)),u){var m=h[v],g=u[v];m!==g&&Ce(v,m,g,s,r,p,e)}if(h!==f)for(var y in h)o(u[y])&&!o(h[y])&&Ce(y,h[y],null,s,r,p,e)}var b=t.children,x=t.className;e.className!==x&&(o(x)?s.removeAttribute("class"):r?s.setAttribute("class",x):s.className=x);4096&i?function(e,t){e.textContent!==t&&(e.textContent=t)}(s,b):Pe(e.childFlags,t.childFlags,e.children,b,s,n,r&&"foreignObject"!==t.type,null,e,a);d&&he(i,t,s,u,!1,p);var w=t.ref,E=e.ref;E!==w&&(ge(E),ye(w,s,a))}(e,t,r,u,h,d):4&h?function(e,t,n,r,o,i,u){var l=t.children=e.children;if(s(l))return;l.$L=u;var d=t.props||f,p=t.ref,h=e.ref,v=l.state;if(!l.$N){if(a(l.componentWillReceiveProps)){if(l.$BR=!0,l.componentWillReceiveProps(d,r),l.$UN)return;l.$BR=!1}s(l.$PS)||(v=c(v,l.$PS),l.$PS=null)}je(l,v,d,n,r,o,!1,i,u),h!==p&&(ge(h),ye(p,l,u))}(e,t,n,r,u,l,d):8&h?function(e,t,n,r,i,u,s){var c=!0,l=t.props||f,d=t.ref,p=e.props,h=!o(d),v=e.children;h&&a(d.onComponentShouldUpdate)&&(c=d.onComponentShouldUpdate(p,l));if(!1!==c){h&&a(d.onComponentWillUpdate)&&d.onComponentWillUpdate(p,l);var m=P(Ne(t,r));Le(v,m,n,r,i,u,s),t.children=m,h&&a(d.onComponentDidUpdate)&&d.onComponentDidUpdate(p,l)}else t.children=v}(e,t,n,r,u,l,d):16&h?function(e,t){var n=t.children,r=t.dom=e.dom;n!==e.children&&(r.nodeValue=n)}(e,t):512&h?t.dom=e.dom:8192&h?function(e,t,n,r,o,i){var a=e.children,u=t.children,s=e.childFlags,c=t.childFlags,l=null;12&c&&0===u.length&&(c=t.childFlags=2,u=t.children=I());var f=0!=(2&c);if(12&s){var d=a.length;(8&s&&8&c||f||!f&&u.length>d)&&(l=y(a[d-1],!1).nextSibling)}Pe(s,c,a,u,n,r,o,l,e,i)}(e,t,n,r,u,d):function(e,t,n,r){var o=e.ref,a=t.ref,u=t.children;if(Pe(e.childFlags,t.childFlags,e.children,u,o,n,!1,null,e,r),t.dom=e.dom,o!==a&&!i(u)){var s=u.dom;v(o,s),p(a,s)}}(e,t,r,d)}function Pe(e,t,n,r,o,i,a,u,s,c){switch(e){case 2:switch(t){case 2:Le(n,r,o,i,a,u,c);break;case 1:be(n,o);break;case 16:xe(n),D(o,r);break;default:!function(e,t,n,r,o,i){xe(e),Te(t,n,r,o,y(e,!0),i),b(e,n)}(n,r,o,i,a,c)}break;case 1:switch(t){case 2:Oe(r,o,i,a,u,c);break;case 1:break;case 16:D(o,r);break;default:Te(r,o,i,a,u,c)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:D(n,t))}(n,r,o);break;case 2:Ee(o),Oe(r,o,i,a,u,c);break;case 1:Ee(o);break;default:Ee(o),Te(r,o,i,a,u,c)}break;default:switch(t){case 16:we(n),D(o,r);break;case 2:_e(o,s,n),Oe(r,o,i,a,u,c);break;case 1:_e(o,s,n);break;default:var l=0|n.length,f=0|r.length;0===l?f>0&&Te(r,o,i,a,u,c):0===f?_e(o,s,n):8===t&&8===e?function(e,t,n,r,o,i,a,u,s,c){var l,f,d=i-1,p=a-1,h=0,v=e[h],m=t[h];e:{for(;v.key===m.key;){if(16384&m.flags&&(t[h]=m=T(m)),Le(v,m,n,r,o,u,c),e[h]=m,++h>d||h>p)break e;v=e[h],m=t[h]}for(v=e[d],m=t[p];v.key===m.key;){if(16384&m.flags&&(t[p]=m=T(m)),Le(v,m,n,r,o,u,c),e[d]=m,p--,h>--d||h>p)break e;v=e[d],m=t[p]}}if(h>d){if(h<=p)for(f=(l=p+1)p)for(;h<=d;)be(e[h++],n);else!function(e,t,n,r,o,i,a,u,s,c,l,f,d){var p,h,v,m=0,g=u,b=u,w=i-u+1,E=a-u+1,_=new Int32Array(E+1),D=w===r,C=!1,k=0,A=0;if(o<4||(w|E)<32)for(m=g;m<=i;++m)if(p=e[m],Au?C=!0:k=u,16384&h.flags&&(t[u]=h=T(h)),Le(p,h,s,n,c,l,d),++A;break}!D&&u>a&&be(p,s)}else D||be(p,s);else{var S={};for(m=b;m<=a;++m)S[t[m].key]=m;for(m=g;m<=i;++m)if(p=e[m],Ag;)be(e[g++],s);_[u-b]=m+1,k>u?C=!0:k=u,16384&(h=t[u]).flags&&(t[u]=h=T(h)),Le(p,h,s,n,c,l,d),++A}else D||be(p,s);else D||be(p,s)}if(D)_e(s,f,e),Te(t,s,n,c,l,d);else if(C){var N=function(e){var t=0,n=0,r=0,o=0,i=0,a=0,u=0,s=e.length;s>Ve&&(Ve=s,ce=new Int32Array(s),le=new Int32Array(s));for(;n>1]]0&&(le[n]=ce[i-1]),ce[i]=n)}i=o+1;var c=new Int32Array(i);a=ce[i-1];for(;i-- >0;)c[i]=a,a=le[a],ce[i]=0;return c}(_);for(u=N.length-1,m=E-1;m>=0;m--)0===_[m]?(16384&(h=t[k=m+b]).flags&&(t[k]=h=T(h)),Oe(h,s,n,c,(v=k+1)=0;m--)0===_[m]&&(16384&(h=t[k=m+b]).flags&&(t[k]=h=T(h)),Oe(h,s,n,c,(v=k+1)a?a:i,d=0;da)for(d=f;d=55296&&r<=56319&&t+1=56320&&n<=57343?1024*(r-55296)+n-56320+65536:r}function w(e){return/^\n* /.test(e)}function E(e,t,n,r,o,i,a,u){var c,l,f=0,d=null,p=!1,h=!1,v=-1!==r,y=-1,E=g(l=x(e,0))&&l!==s&&!m(l)&&45!==l&&63!==l&&58!==l&&44!==l&&91!==l&&93!==l&&123!==l&&125!==l&&35!==l&&38!==l&&42!==l&&33!==l&&124!==l&&61!==l&&62!==l&&39!==l&&34!==l&&37!==l&&64!==l&&96!==l&&function(e){return!m(e)&&58!==e}(x(e,e.length-1));if(t||a)for(c=0;c=65536?c+=2:c++){if(!g(f=x(e,c)))return 5;E=E&&b(f,d,u),d=f}else{for(c=0;c=65536?c+=2:c++){if(10===(f=x(e,c)))p=!0,v&&(h=h||c-y-1>r&&" "!==e[y+1],y=c);else if(!g(f))return 5;E=E&&b(f,d,u),d=f}h=h||v&&c-y-1>r&&" "!==e[y+1]}return p||h?n>9&&w(e)?5:a?2===i?5:2:h?4:3:!E||a||o(e)?2===i?5:2:1}function _(e,t,n,r,i){e.dump=function(){if(0===t.length)return 2===e.quotingType?'""':"''";if(!e.noCompatMode&&(-1!==l.indexOf(t)||f.test(t)))return 2===e.quotingType?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,n),u=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),s=r||e.flowLevel>-1&&n>=e.flowLevel;switch(E(t,s,e.indent,u,(function(t){return function(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n"+D(t,e.indent)+C(h(function(e,t){var n,r,o=/(\n+)([^\n]*)/g,i=(u=e.indexOf("\n"),u=-1!==u?u:e.length,o.lastIndex=u,k(e.slice(0,u),t)),a="\n"===e[0]||" "===e[0];var u;for(;r=o.exec(e);){var s=r[1],c=r[2];n=" "===c[0],i+=s+(a||n||""===c?"":"\n")+k(c,t),a=n}return i}(t,u),a));case 5:return'"'+function(e){for(var t,n="",r=0,o=0;o=65536?o+=2:o++)r=x(e,o),!(t=c[r])&&g(r)?(n+=e[o],r>=65536&&(n+=e[o+1])):n+=t||d(r);return n}(t)+'"';default:throw new o("impossible error: invalid scalar style")}}()}function D(e,t){var n=w(e)?String(t):"",r="\n"===e[e.length-1];return n+(r&&("\n"===e[e.length-2]||"\n"===e)?"+":r?"":"-")+"\n"}function C(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function k(e,t){if(""===e||" "===e[0])return e;for(var n,r,o=/ [^ ]/g,i=0,a=0,u=0,s="";n=o.exec(e);)(u=n.index)-i>t&&(r=a>i?a:u,s+="\n"+e.slice(i,r),i=r+1),a=u;return s+="\n",e.length-i>t&&a>i?s+=e.slice(i,a)+"\n"+e.slice(a+1):s+=e.slice(i),s.slice(1)}function A(e,t,n,r){var o,i,a,u="",s=e.tag;for(o=0,i=n.length;o tag resolver accepts not "'+f+'" style');r=l.represent[f](t,f)}e.dump=r}return!0}return!1}function N(e,t,n,r,i,u,s){e.tag=null,e.dump=n,S(e,n,!1)||S(e,n,!0);var c,l=a.call(e.dump),f=r;r&&(r=e.flowLevel<0||e.flowLevel>t);var d,p,h="[object Object]"===l||"[object Array]"===l;if(h&&(p=-1!==(d=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||p||2!==e.indent&&t>0)&&(i=!1),p&&e.usedDuplicates[d])e.dump="*ref_"+d;else{if(h&&p&&!e.usedDuplicates[d]&&(e.usedDuplicates[d]=!0),"[object Object]"===l)r&&0!==Object.keys(e.dump).length?(!function(e,t,n,r){var i,a,u,s,c,l,f="",d=e.tag,p=Object.keys(n);if(!0===e.sortKeys)p.sort();else if("function"==typeof e.sortKeys)p.sort(e.sortKeys);else if(e.sortKeys)throw new o("sortKeys must be a boolean or a function");for(i=0,a=p.length;i1024)&&(e.dump&&10===e.dump.charCodeAt(0)?l+="?":l+="? "),l+=e.dump,c&&(l+=v(e,t)),N(e,t+1,s,!0,c)&&(e.dump&&10===e.dump.charCodeAt(0)?l+=":":l+=": ",f+=l+=e.dump));e.tag=d,e.dump=f||"{}"}(e,t,e.dump,i),p&&(e.dump="&ref_"+d+e.dump)):(!function(e,t,n){var r,o,i,a,u,s="",c=e.tag,l=Object.keys(n);for(r=0,o=l.length;r1024&&(u+="? "),u+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),N(e,t,a,!1,!1)&&(s+=u+=e.dump));e.tag=c,e.dump="{"+s+"}"}(e,t,e.dump),p&&(e.dump="&ref_"+d+" "+e.dump));else if("[object Array]"===l)r&&0!==e.dump.length?(e.noArrayIndent&&!s&&t>0?A(e,t-1,e.dump,i):A(e,t,e.dump,i),p&&(e.dump="&ref_"+d+e.dump)):(!function(e,t,n){var r,o,i,a="",u=e.tag;for(r=0,o=n.length;r",e.dump=c+" "+e.dump)}return!0}function O(e,t){var n,r,o=[],i=[];for(F(e,o,i),n=0,r=i.length;n>10),56320+(e-65536&1023))}for(var w=new Array(256),E=new Array(256),_=0;_<256;_++)w[_]=b(_)?1:0,E[_]=b(_);function D(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||a,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function C(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return n.snippet=i(n),new o(t,n)}function k(e,t){throw C(e,t)}function A(e,t){e.onWarning&&e.onWarning.call(null,C(e,t))}var S={YAML:function(e,t,n){var r,o,i;null!==e.version&&k(e,"duplication of %YAML directive"),1!==n.length&&k(e,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&k(e,"ill-formed argument of the YAML directive"),o=parseInt(r[1],10),i=parseInt(r[2],10),1!==o&&k(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=i<2,1!==i&&2!==i&&A(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r,o;2!==n.length&&k(e,"TAG directive accepts exactly two arguments"),r=n[0],o=n[1],f.test(r)||k(e,"ill-formed tag handle (first argument) of the TAG directive"),u.call(e.tagMap,r)&&k(e,'there is a previously declared suffix for "'+r+'" tag handle'),d.test(o)||k(e,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch(i){k(e,"tag prefix is malformed: "+o)}e.tagMap[r]=o}};function N(e,t,n,r){var o,i,a,u;if(t1&&(e.result+=r.repeat("\n",t-1))}function L(e,t){var n,r,o=e.tag,i=e.anchor,a=[],u=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=a),r=e.input.charCodeAt(e.position);0!==r&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,k(e,"tab characters must not be used in indentation")),45===r)&&m(e.input.charCodeAt(e.position+1));)if(u=!0,e.position++,T(e,!0,-1)&&e.lineIndent<=t)a.push(null),r=e.input.charCodeAt(e.position);else if(n=e.line,V(e,t,3,!1,!0),a.push(e.result),T(e,!0,-1),r=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==r)k(e,"bad indentation of a sequence entry");else if(e.lineIndentt?D=1:e.lineIndent===t?D=0:e.lineIndentt?D=1:e.lineIndent===t?D=0:e.lineIndentt)&&(b&&(a=e.line,u=e.lineStart,s=e.position),V(e,t,4,!0,o)&&(b?g=e.result:y=e.result),b||(F(e,d,p,h,g,y,a,u,s),h=g=y=null),T(e,!0,-1),c=e.input.charCodeAt(e.position)),(e.line===i||e.lineIndent>t)&&0!==c)k(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===i?k(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?k(e,"repeat of an indentation width identifier"):(f=t+i-1,l=!0)}if(v(a)){do{a=e.input.charCodeAt(++e.position)}while(v(a));if(35===a)do{a=e.input.charCodeAt(++e.position)}while(!h(a)&&0!==a)}for(;0!==a;){for(M(e),e.lineIndent=0,a=e.input.charCodeAt(e.position);(!l||e.lineIndentf&&(f=e.lineIndent),h(a))d++;else{if(e.lineIndent0){for(o=a,i=0;o>0;o--)(a=y(u=e.input.charCodeAt(++e.position)))>=0?i=(i<<4)+a:k(e,"expected hexadecimal character");e.result+=x(i),e.position++}else k(e,"unknown escape sequence");n=r=e.position}else h(u)?(N(e,n,r,!0),B(e,T(e,!1,t)),n=r=e.position):e.position===e.lineStart&&I(e)?k(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}k(e,"unexpected end of the stream within a double quoted scalar")}(e,b)?A=!0:!function(e){var t,n,r;if(42!==(r=e.input.charCodeAt(e.position)))return!1;for(r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!m(r)&&!g(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&k(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),u.call(e.anchorMap,n)||k(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],T(e,!0,-1),!0}(e)?function(e,t,n){var r,o,i,a,u,s,c,l,f=e.kind,d=e.result;if(m(l=e.input.charCodeAt(e.position))||g(l)||35===l||38===l||42===l||33===l||124===l||62===l||39===l||34===l||37===l||64===l||96===l)return!1;if((63===l||45===l)&&(m(r=e.input.charCodeAt(e.position+1))||n&&g(r)))return!1;for(e.kind="scalar",e.result="",o=i=e.position,a=!1;0!==l;){if(58===l){if(m(r=e.input.charCodeAt(e.position+1))||n&&g(r))break}else if(35===l){if(m(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&I(e)||n&&g(l))break;if(h(l)){if(u=e.line,s=e.lineStart,c=e.lineIndent,T(e,!1,-1),e.lineIndent>=t){a=!0,l=e.input.charCodeAt(e.position);continue}e.position=i,e.line=u,e.lineStart=s,e.lineIndent=c;break}}a&&(N(e,o,i,!1),B(e,e.line-u),o=i=e.position,a=!1),v(l)||(i=e.position+1),l=e.input.charCodeAt(++e.position)}return N(e,o,i,!1),!!e.result||(e.kind=f,e.result=d,!1)}(e,b,1===n)&&(A=!0,null===e.tag&&(e.tag="?")):(A=!0,null===e.tag&&null===e.anchor||k(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===D&&(A=c&&L(e,_))),null===e.tag)null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);else if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&k(e,'unacceptable node kind for !> tag; it should be "scalar", not "'+e.kind+'"'),l=0,f=e.implicitTypes.length;l"),null!==e.result&&p.kind!==e.kind&&k(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+p.kind+'", not "'+e.kind+'"'),p.resolve(e.result,e.tag)?(e.result=p.construct(e.result,e.tag),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):k(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||A}function R(e){var t,n,r,o,i=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(o=e.input.charCodeAt(e.position))&&(T(e,!0,-1),o=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==o));){for(a=!0,o=e.input.charCodeAt(++e.position),t=e.position;0!==o&&!m(o);)o=e.input.charCodeAt(++e.position);for(r=[],(n=e.input.slice(t,e.position)).length<1&&k(e,"directive name must not be less than one character in length");0!==o;){for(;v(o);)o=e.input.charCodeAt(++e.position);if(35===o){do{o=e.input.charCodeAt(++e.position)}while(0!==o&&!h(o));break}if(h(o))break;for(t=e.position;0!==o&&!m(o);)o=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}0!==o&&M(e),u.call(S,n)?S[n](e,n,r):A(e,'unknown document directive "'+n+'"')}T(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,T(e,!0,-1)):a&&k(e,"directives end mark is expected"),V(e,e.lineIndent-1,4,!1,!0),T(e,!0,-1),e.checkLineBreaks&&c.test(e.input.slice(i,e.position))&&A(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&I(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,T(e,!0,-1)):e.positionu&&(t=r-u+(i=" ... ").length),n-r>u&&(n=r+u-(a=" ...").length),{str:i+e.slice(t,n).replace(/\t/g,"\u2192")+a,pos:r-t+i.length}}function i(e,t){return r.repeat(" ",t-e.length)+e}e.exports=function(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),"number"!=typeof t.indent&&(t.indent=1),"number"!=typeof t.linesBefore&&(t.linesBefore=3),"number"!=typeof t.linesAfter&&(t.linesAfter=2);for(var n,a=/\r?\n|\r|\0/g,u=[0],s=[],c=-1;n=a.exec(e.buffer);)s.push(n.index),u.push(n.index+n[0].length),e.position<=n.index&&c<0&&(c=u.length-2);c<0&&(c=u.length-1);var l,f,d="",p=Math.min(e.line+t.linesAfter,s.length).toString().length,h=t.maxLength-(t.indent+p+3);for(l=1;l<=t.linesBefore&&!(c-l<0);l++)f=o(e.buffer,u[c-l],s[c-l],e.position-(u[c]-u[c-l]),h),d=r.repeat(" ",t.indent)+i((e.line-l+1).toString(),p)+" | "+f.str+"\n"+d;for(f=o(e.buffer,u[c],s[c],e.position,h),d+=r.repeat(" ",t.indent)+i((e.line+1).toString(),p)+" | "+f.str+"\n",d+=r.repeat("-",t.indent+p+3+f.pos)+"^\n",l=1;l<=t.linesAfter&&!(c+l>=s.length);l++)f=o(e.buffer,u[c+l],s[c+l],e.position-(u[c]-u[c+l]),h),d+=r.repeat(" ",t.indent)+i((e.line+l+1).toString(),p)+" | "+f.str+"\n";return d.replace(/\n$/,"")}},85243:function(e,t,n){"use strict";var r=n(14956),o=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],i=["scalar","sequence","mapping"];e.exports=function(e,t){var n,a;if(t=t||{},Object.keys(t).forEach((function(t){if(-1===o.indexOf(t))throw new r('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=(n=t.styleAliases||null,a={},null!==n&&Object.keys(n).forEach((function(e){n[e].forEach((function(t){a[String(t)]=e}))})),a),-1===i.indexOf(this.kind))throw new r('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}},80258:function(e,t,n){"use strict";var r=n(85243),o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";e.exports=new r("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=0,i=e.length,a=o;for(n=0;n64)){if(t<0)return!1;r+=6}return r%8==0},construct:function(e){var t,n,r=e.replace(/[\r\n=]/g,""),i=r.length,a=o,u=0,s=[];for(t=0;t>16&255),s.push(u>>8&255),s.push(255&u)),u=u<<6|a.indexOf(r.charAt(t));return 0===(n=i%4*6)?(s.push(u>>16&255),s.push(u>>8&255),s.push(255&u)):18===n?(s.push(u>>10&255),s.push(u>>2&255)):12===n&&s.push(u>>4&255),new Uint8Array(s)},predicate:function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},represent:function(e){var t,n,r="",i=0,a=e.length,u=o;for(t=0;t>18&63],r+=u[i>>12&63],r+=u[i>>6&63],r+=u[63&i]),i=(i<<8)+e[t];return 0===(n=a%3)?(r+=u[i>>18&63],r+=u[i>>12&63],r+=u[i>>6&63],r+=u[63&i]):2===n?(r+=u[i>>10&63],r+=u[i>>4&63],r+=u[i<<2&63],r+=u[64]):1===n&&(r+=u[i>>2&63],r+=u[i<<4&63],r+=u[64],r+=u[64]),r}})},43788:function(e,t,n){"use strict";var r=n(85243);e.exports=new r("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},22207:function(e,t,n){"use strict";var r=n(16310),o=n(85243),i=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var a=/^[-+]?[0-9]+e/;e.exports=new o("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!i.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||r.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(r.isNegativeZero(e))return"-0.0";return n=e.toString(10),a.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"})},27561:function(e,t,n){"use strict";var r=n(16310),o=n(85243);function i(e){return 48<=e&&e<=55}function a(e){return 48<=e&&e<=57}e.exports=new o("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=e.length,o=0,u=!1;if(!r)return!1;if("-"!==(t=e[o])&&"+"!==t||(t=e[++o]),"0"===t){if(o+1===r)return!0;if("b"===(t=e[++o])){for(o++;o=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},2738:function(e,t,n){"use strict";var r=n(85243);e.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},95308:function(e,t,n){"use strict";var r=n(85243);e.exports=new r("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}})},67574:function(e,t,n){"use strict";var r=n(85243);e.exports=new r("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)},construct:function(){return null},predicate:function(e){return null===e},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"})},33088:function(e,t,n){"use strict";var r=n(85243),o=Object.prototype.hasOwnProperty,i=Object.prototype.toString;e.exports=new r("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,r,a,u,s=[],c=e;for(t=0,n=c.length;t=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),S(n),v}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;S(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:O(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),v}},e}(e.exports);try{regeneratorRuntime=t}catch(n){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},9084:function(){"use strict";self.fetch||(self.fetch=function(e,t){return t=t||{},new Promise((function(n,r){var o=new XMLHttpRequest,i=[],a=[],u={},s=function l(){return{ok:2==(o.status/100|0),statusText:o.statusText,status:o.status,url:o.responseURL,text:function(){return Promise.resolve(o.responseText)},json:function(){return Promise.resolve(o.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([o.response]))},clone:l,headers:{keys:function(){return i},entries:function(){return a},get:function(e){return u[e.toLowerCase()]},has:function(e){return e.toLowerCase()in u}}}};for(var c in o.open(t.method||"get",e,!0),o.onload=function(){o.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(e,t,n){i.push(t=t.toLowerCase()),a.push([t,n]),u[t]=u[t]?u[t]+","+n:n})),n(s())},o.onerror=r,o.withCredentials="include"==t.credentials,t.headers)o.setRequestHeader(c,t.headers[c]);o.send(t.body||null)}))})},45445:function(e,t){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.uniqBy=t.uniq=t.toKeyedArray=t.toArray=t.sortBy=t.sort=t.reduce=t.range=t.map=t.filter=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var r in e)t.call(e,r)&&n.push(e[r]);return n}return[]};t.toKeyedArray=function(e,t){return void 0===t&&(t="key"),n((function(e,n){var r;return Object.assign(((r={})[t]=n,r),e)}))(e)};t.filter=function(e){return function(t){if(null===t||t===undefined)return t;if(Array.isArray(t)){for(var n=[],r=0;ru)return 1}return 0},o=function(){for(var e=arguments.length,t=new Array(e),n=0;n1?n-1:0),o=1;o1?o-1:0),a=1;a1?r-1:0),i=1;in?n:e};t.clamp01=function(e){return e<0?0:e>1?1:e};t.scale=function(e,t,n){return(e-t)/(n-t)};t.round=function(e,t){return!e||isNaN(e)?e:(t|=0,i=+((e*=n=Math.pow(10,t))>0)|-(e<0),o=Math.abs(e%1)>=.4999999999854481,r=Math.floor(e),o&&(e=r+(i>0)),(o?e:Math.round(e))/n);var n,r,o,i};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(Math.max(t,0))};var n=function(e,t){return t&&e>=t[0]&&e<=t[1]};t.inRange=n;t.keyOfMatchingRange=function(e,t){for(var r=0,o=Object.keys(t);r1?o-1:0),a=1;a1?t-1:0),r=1;r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(u&&s){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),d}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=undefined),d}},e}function r(e,t,n,r,o,i,a){try{var u=e[i](a),s=u.value}catch(c){return void n(c)}u.done?t(s):Promise.resolve(s).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function u(e){r(a,o,i,u,s,"next",e)}function s(e){r(a,o,i,u,s,"throw",e)}u(undefined)}))}}t.__esModule=!0,t.storage=t.IMPL_MEMORY=t.IMPL_LOCAL_STORAGE=t.IMPL_INDEXED_DB=void 0;t.IMPL_MEMORY=0;t.IMPL_LOCAL_STORAGE=1;t.IMPL_INDEXED_DB=2;var i="storage-v1",a="readwrite",u=function(e){return function(){try{return Boolean(e())}catch(t){return!1}}},s=u((function(){return window.localStorage&&window.localStorage.getItem})),c=u((function(){return(window.indexedDB||window.msIndexedDB)&&(window.IDBTransaction||window.msIDBTransaction)})),l=function(){function e(){this.impl=0,this.store={}}var t=e.prototype;return t.get=function(e){return this.store[e]},t.set=function(e,t){this.store[e]=t},t.remove=function(e){this.store[e]=undefined},t.clear=function(){this.store={}},e}(),f=function(){function e(){this.impl=1}var t=e.prototype;return t.get=function(e){var t=localStorage.getItem(e);if("string"==typeof t)return JSON.parse(t)},t.set=function(e,t){localStorage.setItem(e,JSON.stringify(t))},t.remove=function(e){localStorage.removeItem(e)},t.clear=function(){localStorage.clear()},e}(),d=function(){function e(){this.impl=2,this.dbPromise=new Promise((function(e,t){var n=(window.indexedDB||window.msIndexedDB).open("tgui",1);n.onupgradeneeded=function(){try{n.result.createObjectStore(i)}catch(e){t(new Error("Failed to upgrade IDB: "+n.error))}},n.onsuccess=function(){return e(n.result)},n.onerror=function(){t(new Error("Failed to open IDB: "+n.error))}}))}var t=e.prototype;return t.getStore=function(e){return this.dbPromise.then((function(t){return t.transaction(i,e).objectStore(i)}))},t.get=function(){var e=o(n().mark((function t(e){var r;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getStore("readonly");case 2:return r=t.sent,t.abrupt("return",new Promise((function(t,n){var o=r.get(e);o.onsuccess=function(){return t(o.result)},o.onerror=function(){return n(o.error)}})));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.set=function(){var e=o(n().mark((function t(e,r){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return null===r&&(r=undefined),t.next=3,this.getStore(a);case 3:t.sent.put(r,e);case 5:case"end":return t.stop()}}),t,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.remove=function(){var e=o(n().mark((function t(e){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getStore(a);case 2:t.sent["delete"](e);case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.clear=function(){var e=o(n().mark((function t(){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getStore(a);case 2:e.sent.clear();case 4:case"end":return e.stop()}}),t,this)})));return function(){return e.apply(this,arguments)}}(),e}(),p=function(){function e(){this.backendPromise=o(n().mark((function e(){var t;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!c()){e.next=10;break}return e.prev=1,t=new d,e.next=5,t.dbPromise;case 5:return e.abrupt("return",t);case 8:e.prev=8,e.t0=e["catch"](1);case 10:if(!s()){e.next=12;break}return e.abrupt("return",new f);case 12:return e.abrupt("return",new l);case 13:case"end":return e.stop()}}),e,null,[[1,8]])})))()}var t=e.prototype;return t.get=function(){var e=o(n().mark((function t(e){var r;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return r=t.sent,t.abrupt("return",r.get(e));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.set=function(){var e=o(n().mark((function t(e,r){var o;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return o=t.sent,t.abrupt("return",o.set(e,r));case 4:case"end":return t.stop()}}),t,this)})));return function(t,n){return e.apply(this,arguments)}}(),t.remove=function(){var e=o(n().mark((function t(e){var r;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return r=t.sent,t.abrupt("return",r.remove(e));case 4:case"end":return t.stop()}}),t,this)})));return function(t){return e.apply(this,arguments)}}(),t.clear=function(){var e=o(n().mark((function t(){var e;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.backendPromise;case 2:return e=t.sent,t.abrupt("return",e.clear());case 4:case"end":return t.stop()}}),t,this)})));return function(){return e.apply(this,arguments)}}(),e}(),h=new p;t.storage=h},85260:function(e,t){"use strict";function n(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",apos:"'"};return e.replace(/
/gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},95592:function(e,t){"use strict";t.__esModule=!0,t.sleep=t.debounce=void 0;t.debounce=function(e,t,n){var r;return void 0===n&&(n=!1),function(){for(var o=arguments.length,i=new Array(o),a=0;a3?u(a):null,b=String(a.key),x=String(a.char),w=a.location,E=a.keyCode||(a.keyCode=b)&&b.charCodeAt(0)||0,_=a.charCode||(a.charCode=x)&&x.charCodeAt(0)||0,D=a.bubbles,C=a.cancelable,k=a.repeat,A=a.locale,S=a.view||e;if(a.which||(a.which=a.keyCode),"initKeyEvent"in d)d.initKeyEvent(t,D,C,S,p,v,h,m,E,_);else if(0>>0),t=Element.prototype,n=t.querySelector,r=t.querySelectorAll;function o(t,n,r){t.setAttribute(e,null);var o=n.call(t,String(r).replace(/(^|,\s*)(:scope([ >]|$))/g,(function(t,n,r,o){return n+"["+e+"]"+(o||" ")})));return t.removeAttribute(e),o}t.querySelector=function(e){return o(this,n,e)},t.querySelectorAll=function(e){return o(this,r,e)}}()}}(window),function(e){var t=e.WeakMap||function(){var e,t=0,n=!1,r=!1;function o(t,o,i){r=i,n=!1,e=undefined,t.dispatchEvent(o)}function i(e){this.value=e}function u(){t++,this.__ce__=new a("@DOMMap:"+t+Math.random())}return i.prototype.handleEvent=function(t){n=!0,r?t.currentTarget.removeEventListener(t.type,this,!1):e=this.value},u.prototype={constructor:u,"delete":function(e){return o(e,this.__ce__,!0),n},get:function(t){o(t,this.__ce__,!1);var n=e;return e=undefined,n},has:function(e){return o(e,this.__ce__,!1),n},set:function(e,t){return o(e,this.__ce__,!0),e.addEventListener(this.__ce__.type,new i(t),!1),this}},u}();function n(){}function r(e,t,n){function o(e){o.once&&(e.currentTarget.removeEventListener(e.type,t,o),o.removed=!0),o.passive&&(e.preventDefault=r.preventDefault),"function"==typeof o.callback?o.callback.call(this,e):o.callback&&o.callback.handleEvent(e),o.passive&&delete e.preventDefault}return o.type=e,o.callback=t,o.capture=!!n.capture,o.passive=!!n.passive,o.once=!!n.once,o.removed=!1,o}n.prototype=(Object.create||Object)(null),r.preventDefault=function(){};var o,i,a=e.CustomEvent,u=e.dispatchEvent,s=e.addEventListener,c=e.removeEventListener,l=0,f=function(){l++},d=[].indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},p=function(e){return"".concat(e.capture?"1":"0",e.passive?"1":"0",e.once?"1":"0")};try{s("_",f,{once:!0}),u(new a("_")),u(new a("_")),c("_",f,{once:!0})}catch(h){}1!==l&&(i=new t,o=function(e){if(e){var t=e.prototype;t.addEventListener=function(e){return function(t,o,a){if(a&&"boolean"!=typeof a){var u,s,c,l=i.get(this),f=p(a);l||i.set(this,l=new n),t in l||(l[t]={handler:[],wrap:[]}),s=l[t],(u=d.call(s.handler,o))<0?(u=s.handler.push(o)-1,s.wrap[u]=c=new n):c=s.wrap[u],f in c||(c[f]=r(t,o,a),e.call(this,t,c[f],c[f].capture))}else e.call(this,t,o,a)}}(t.addEventListener),t.removeEventListener=function(e){return function(t,n,r){if(r&&"boolean"!=typeof r){var o,a,u,s,c=i.get(this);if(c&&t in c&&(u=c[t],-1<(a=d.call(u.handler,n))&&(o=p(r))in(s=u.wrap[a]))){for(o in e.call(this,t,s[o],s[o].capture),delete s[o],s)return;u.handler.splice(a,1),u.wrap.splice(a,1),0===u.handler.length&&delete c[t]}}else e.call(this,t,n,r)}}(t.removeEventListener)}},e.EventTarget?o(EventTarget):(o(e.Text),o(e.Element||e.HTMLElement),o(e.HTMLDocument),o(e.Window||{prototype:e}),o(e.XMLHttpRequest)))}(window)},9556:function(e){"use strict";!function(t,n){var r,o,i=t.html5||{},a=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,s="_html5shiv",c=0,l={};function f(){var e=v.elements;return"string"==typeof e?e.split(" "):e}function d(e){var t=l[e[s]];return t||(t={},c++,e[s]=c,l[c]=t),t}function p(e,t,r){return t||(t=n),o?t.createElement(e):(r||(r=d(t)),!(i=r.cache[e]?r.cache[e].cloneNode():u.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e)).canHaveChildren||a.test(e)||i.tagUrn?i:r.frag.appendChild(i));var i}function h(e){e||(e=n);var t=d(e);return!v.shivCSS||r||t.hasCSS||(t.hasCSS=!!function(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),o||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return v.shivMethods?p(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+f().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(v,t.frag)}(e,t),e}!function(){try{var e=n.createElement("a");e.innerHTML="",r="hidden"in e,o=1==e.childNodes.length||function(){n.createElement("a");var e=n.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(t){r=!0,o=!0}}();var v={elements:i.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:"3.7.3",shivCSS:!1!==i.shivCSS,supportsUnknownElements:o,shivMethods:!1!==i.shivMethods,type:"default",shivDocument:h,createElement:p,createDocumentFragment:function(e,t){if(e||(e=n),o)return e.createDocumentFragment();for(var r=(t=t||d(e)).frag.cloneNode(),i=0,a=f(),u=a.length;i=0||(o[n]=e[n]);return o}(t,c),o=Object.assign({tgui:1,window_id:window.__windowId__},r);null!==n&&n!==undefined&&(o.payload=JSON.stringify(n)),Byond.topic(o)};t.sendMessage=m;var g=function(e,t){void 0===t&&(t={}),"object"!=typeof t||null===t||Array.isArray(t)?l.error("Payload for act() must be an object, got this:",t):m({type:"act/"+e,payload:t})};t.sendAct=g;var y=function(e){return e.backend||{}};t.selectBackend=y;t.useBackend=function(e){var t=e.store,n=y(t.getState());return Object.assign({},n,{act:g})};t.useLocalState=function(e,t,n){var r,o=e.store,i=null!=(r=y(o.getState()).shared)?r:{},a=t in i?i[t]:n;return[a,function(e){o.dispatch(d({key:t,nextState:"function"==typeof e?e(a):e}))}]};t.useSharedState=function(e,t,n){var r,o=e.store,i=null!=(r=y(o.getState()).shared)?r:{},a=t in i?i[t]:n;return[a,function(e){m({type:"setSharedState",key:t,value:JSON.stringify("function"==typeof e?e(a):e)||""})}]}},71472:function(e,t,n){"use strict";t.__esModule=!0,t.AnimatedNumber=void 0;var r=n(5339),o=n(58734);function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}var a=function(e){return"number"==typeof e&&Number.isFinite(e)&&!Number.isNaN(e)},u=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={value:0},a(t.initial)?n.state.value=t.initial:a(t.value)&&(n.state.value=Number(t.value)),n}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n);var u=o.prototype;return u.tick=function(){var e=this.props,t=this.state,n=Number(t.value),r=Number(e.value);if(a(r)){var o=.5*n+.5*r;this.setState({value:o})}},u.componentDidMount=function(){var e=this;this.timer=setInterval((function(){return e.tick()}),50)},u.componentWillUnmount=function(){clearTimeout(this.timer)},u.render=function(){var e,t=this.props,n=this.state,o=t.format,i=t.children,u=n.value,s=t.value;if(!a(s))return s||null;if(o)e=o(u);else{var c=String(s).split(".")[1],l=c?c.length:0;e=(0,r.toFixed)(u,(0,r.clamp)(l,0,8))}return"function"==typeof i?i(e,u):e},o}(o.Component);t.AnimatedNumber=u},64910:function(e,t,n){"use strict";t.__esModule=!0,t.Blink=void 0;var r=n(58734);function o(e,t){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},o(e,t)}var i=function(e){var t,n;function i(){var t;return(t=e.call(this)||this).state={hidden:!1},t}n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,o(t,n);var a=i.prototype;return a.createTimer=function(){var e=this,t=this.props,n=t.interval,r=void 0===n?1e3:n,o=t.time,i=void 0===o?1e3:o;clearInterval(this.interval),clearTimeout(this.timer),this.setState({hidden:!1}),this.interval=setInterval((function(){e.setState({hidden:!0}),e.timer=setTimeout((function(){e.setState({hidden:!1})}),i)}),r+i)},a.componentDidMount=function(){this.createTimer()},a.componentDidUpdate=function(e){e.interval===this.props.interval&&e.time===this.props.time||this.createTimer()},a.componentWillUnmount=function(){clearInterval(this.interval),clearTimeout(this.timer)},a.render=function(e){return(0,r.createVNode)(1,"span",null,e.children,0,{style:{visibility:this.state.hidden?"hidden":"visible"}})},i}(r.Component);t.Blink=i},59618:function(e,t,n){"use strict";t.__esModule=!0,t.BlockQuote=void 0;var r=n(58734),o=n(59641),i=n(2433),a=["className"];t.BlockQuote=function(e){var t=e.className,n=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,a);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["BlockQuote",t])},n)))}},2433:function(e,t,n){"use strict";t.__esModule=!0,t.unit=t.halfUnit=t.computeBoxProps=t.computeBoxClassName=t.Box=void 0;var r=n(59641),o=n(58734),i=n(33421),a=n(35891),u=["as","className","children"];var s=function(e){return"string"==typeof e?e.endsWith("px")&&!Byond.IS_LTE_IE8?parseFloat(e)/12+"rem":e:"number"==typeof e?Byond.IS_LTE_IE8?12*e+"px":e+"rem":void 0};t.unit=s;var c=function(e){return"string"==typeof e?s(e):"number"==typeof e?s(.5*e):void 0};t.halfUnit=c;var l=function(e){if("string"==typeof e)return a.CSS_COLORS.includes(e)},f=function(e){return function(t,n){"number"!=typeof n&&"string"!=typeof n||(t[e]=n)}},d=function(e,t){return function(n,r){"number"!=typeof r&&"string"!=typeof r||(n[e]=t(r))}},p=function(e,t){return function(n,r){r&&(n[e]=t)}},h=function(e,t,n){return function(r,o){if("number"==typeof o||"string"==typeof o)for(var i=0;i0&&(t.style=s),t};t.computeBoxProps=g;var y=function(e){var t=e.textColor||e.color,n=e.backgroundColor;return(0,r.classes)([l(t)&&"color-"+t,l(n)&&"color-bg-"+n])};t.computeBoxClassName=y;var b=function(e){var t=e.as,n=void 0===t?"div":t,r=e.className,a=e.children,s=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,u);if("function"==typeof a)return a(g(e));var c="string"==typeof r?r+" "+y(s):y(s),l=g(s);return(0,o.createVNode)(i.VNodeFlags.HtmlElement,n,c,a,i.ChildFlags.UnknownChildren,l)};t.Box=b,b.defaultHooks=r.pureComponentHooks},83474:function(e,t,n){"use strict";t.__esModule=!0,t.ButtonInput=t.ButtonConfirm=t.ButtonCheckbox=t.Button=void 0;var r=n(58734),o=n(98805),i=n(59641),a=n(17488),u=n(2433),s=n(19529),c=n(88078),l=["className","fluid","icon","iconRotation","iconSpin","iconColor","iconPosition","color","disabled","selected","tooltip","tooltipPosition","ellipsis","compact","circular","content","children","onclick","onClick"],f=["checked"],d=["confirmContent","confirmColor","confirmIcon","icon","color","content","onClick"],p=["fluid","content","icon","iconRotation","iconSpin","tooltip","tooltipPosition","color","placeholder","maxLength"];function h(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,v(e,t)}function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}function m(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var g=(0,a.createLogger)("Button"),y=function(e){var t=e.className,n=e.fluid,a=e.icon,f=e.iconRotation,d=e.iconSpin,p=e.iconColor,h=e.iconPosition,v=e.color,y=e.disabled,b=e.selected,x=e.tooltip,w=e.tooltipPosition,E=e.ellipsis,_=e.compact,D=e.circular,C=e.content,k=e.children,A=e.onclick,S=e.onClick,N=m(e,l),O=!(!C&&!k);A&&g.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling");var F=(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Box,Object.assign({className:(0,i.classes)(["Button",n&&"Button--fluid",y&&"Button--disabled",b&&"Button--selected",O&&"Button--hasContent",E&&"Button--ellipsis",D&&"Button--circular",_&&"Button--compact",h&&"Button--iconPosition--"+h,v&&"string"==typeof v?"Button--color--"+v:"Button--color--default",t]),tabIndex:!y&&"0",unselectable:Byond.IS_LTE_IE8,onClick:function(e){!y&&S&&S(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;if(t===o.KEY_SPACE||t===o.KEY_ENTER)return e.preventDefault(),void(!y&&S&&S(e));t!==o.KEY_ESCAPE||e.preventDefault()}},N,{children:[a&&"right"!==h&&(0,r.createComponentVNode)(2,s.Icon,{name:a,color:p,rotation:f,spin:d}),C,k,a&&"right"===h&&(0,r.createComponentVNode)(2,s.Icon,{name:a,color:p,rotation:f,spin:d})]})));return x&&(F=(0,r.createComponentVNode)(2,c.Tooltip,{content:x,position:w,children:F})),F};t.Button=y,y.defaultHooks=i.pureComponentHooks;var b=function(e){var t=e.checked,n=m(e,f);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,y,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=b,y.Checkbox=b;var x=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}h(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmContent,o=void 0===n?"Confirm?":n,i=t.confirmColor,a=void 0===i?"bad":i,u=t.confirmIcon,s=t.icon,c=t.color,l=t.content,f=t.onClick,p=m(t,d);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,y,Object.assign({content:this.state.clickedOnce?o:l,icon:this.state.clickedOnce?u:s,color:this.state.clickedOnce?a:c,onClick:function(){return e.state.clickedOnce?f():e.setClickedOnce(!0)}},p)))},t}(r.Component);t.ButtonConfirm=x,y.Confirm=x;var w=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={inInput:!1},t}h(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,a=t.content,l=t.icon,f=t.iconRotation,d=t.iconSpin,h=t.tooltip,v=t.tooltipPosition,g=t.color,y=void 0===g?"default":g,b=(t.placeholder,t.maxLength,m(t,p)),x=(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Box,Object.assign({className:(0,i.classes)(["Button",n&&"Button--fluid","Button--color--"+y])},b,{onClick:function(){return e.setInInput(!0)},children:[l&&(0,r.createComponentVNode)(2,s.Icon,{name:l,rotation:f,spin:d}),(0,r.createVNode)(1,"div",null,a,0),(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===o.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===o.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef)]})));return h&&(x=(0,r.createComponentVNode)(2,c.Tooltip,{content:h,position:v,children:x})),x},t}(r.Component);t.ButtonInput=w,y.Input=w},5061:function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var r=n(58734),o=n(59641),i=n(95592),a=n(17488),u=n(2433),s=["params"],c=["params"],l=["params"];function f(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}function d(e,t){return d=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},d(e,t)}var p=(0,a.createLogger)("ByondUi"),h=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(o[n]=e[n]);return o}(t,u),g=this.state.viewBox,y=function(e,t,n,r){if(0===e.length)return[];var i=(0,o.zipWith)(Math.min).apply(void 0,e),a=(0,o.zipWith)(Math.max).apply(void 0,e);n!==undefined&&(i[0]=n[0],a[0]=n[1]),r!==undefined&&(i[1]=r[0],a[1]=r[1]);var u=(0,o.map)((function(e){return(0,o.zipWith)((function(e,t,n,r){return(e-t)/(n-t)*r}))(e,i,a,t)}))(e);return u}(i,g,s,c);if(y.length>0){var b=y[0],x=y[y.length-1];y.push([g[0]+v,x[1]]),y.push([g[0]+v,-v]),y.push([-v,-v]),y.push([-v,b[1]])}var w=function(e){for(var t="",n=0;n=0||(o[n]=e[n]);return o}(t,a);return(0,r.createComponentVNode)(2,o.Box,{mb:1,children:[(0,r.createVNode)(1,"div","Table",[(0,r.createVNode)(1,"div","Table__cell",(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Button,Object.assign({fluid:!0,color:c,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},d,{children:l}))),2),f&&(0,r.createVNode)(1,"div","Table__cell Table__cell--collapsing",f,0)],0),n&&(0,r.createComponentVNode)(2,o.Box,{mt:1,children:u})]})},s}(r.Component);t.Collapsible=s},61392:function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var r=n(58734),o=n(59641),i=n(2433),a=["content","children","className","color","backgroundColor"];var u=function(e){var t=e.content,n=(e.children,e.className),u=e.color,s=e.backgroundColor,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,a);return c.color=t?null:"transparent",c.backgroundColor=u||s,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["ColorBox",n,(0,i.computeBoxClassName)(c)]),t||".",0,Object.assign({},(0,i.computeBoxProps)(c))))};t.ColorBox=u,u.defaultHooks=o.pureComponentHooks},94972:function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var r=n(58734),o=n(59641),i=n(2433),a=["className","children"];t.Dimmer=function(e){var t=e.className,n=e.children,u=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,a);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Dimmer"].concat(t))},u,{children:(0,r.createVNode)(1,"div","Dimmer__inner",n,0)})))}},47873:function(e,t,n){"use strict";t.__esModule=!0,t.Divider=void 0;var r=n(58734),o=n(59641);t.Divider=function(e){var t=e.vertical,n=e.hidden;return(0,r.createVNode)(1,"div",(0,o.classes)(["Divider",n&&"Divider--hidden",t?"Divider--vertical":"Divider--horizontal"]))}},7359:function(e,t,n){"use strict";t.__esModule=!0,t.DraggableControl=void 0;var r=n(58734),o=n(5339),i=n(59641),a=n(71472);function u(e,t){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},u(e,t)}var s=function(e,t){return e.screenX*t[0]+e.screenY*t[1]},c=function(e){var t,n;function i(t){var n;return(n=e.call(this,t)||this).inputRef=(0,r.createRef)(),n.state={value:t.value,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props,r=t.value,o=t.dragMatrix;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:s(e,o),value:r,internalValue:r}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),n.props.updateRate||400),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,u=t.stepPixelSize,c=t.dragMatrix;n.setState((function(t){var n=Object.assign({},t),l=s(e,c)-n.origin;if(t.dragging){var f=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+l*a/u,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+f,r,i),n.origin=s(e,c)}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,u=i.value,s=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,u),o&&o(e,u);else if(n.inputRef){var c=n.inputRef.current;c.value=s;try{c.focus(),c.select()}catch(l){}}},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,u(t,n),i.prototype.render=function(){var e=this,t=this.state,n=t.dragging,i=t.editing,u=t.value,s=t.suppressingFlicker,c=this.props,l=c.animated,f=c.value,d=c.unit,p=c.minValue,h=c.maxValue,v=c.unclamped,m=c.format,g=c.onChange,y=c.onDrag,b=c.children,x=c.height,w=c.lineHeight,E=c.fontSize,_=f;(n||s)&&(_=u);var D=function(e){return e+(d?" "+d:"")},C=l&&!n&&!s&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:_,format:m,children:D})||D(m?m(_):_),k=(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:i?undefined:"none",height:x,"line-height":w,"font-size":E},onBlur:function(t){var n;i&&(n=v?parseFloat(t.target.value):(0,o.clamp)(parseFloat(t.target.value),p,h),Number.isNaN(n)?e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),g&&g(t,n),y&&y(t,n)))},onKeyDown:function(t){var n;if(13===t.keyCode)return n=v?parseFloat(t.target.value):(0,o.clamp)(parseFloat(t.target.value),p,h),Number.isNaN(n)?void e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),g&&g(t,n),void(y&&y(t,n)));27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef);return b({dragging:n,editing:i,value:f,displayValue:_,displayElement:C,inputElement:k,handleDragStart:this.handleDragStart})},i}(r.Component);t.DraggableControl=c,c.defaultHooks=i.pureComponentHooks,c.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50,dragMatrix:[1,0]}},73185:function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var r=n(58734),o=n(59641),i=n(2433),a=n(19529),u=["icon","iconRotation","iconSpin","color","over","noscroll","nochevron","width","onClick","selected","disabled","displayText"],s=["className"];function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}function l(e,t){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},l(e,t)}var f=function(e){var t,n;function f(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=f).prototype=Object.create(n.prototype),t.prototype.constructor=t,l(t,n);var d=f.prototype;return d.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},d.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},d.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},d.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,r.createComponentVNode)(2,i.Box,{className:"Dropdown__menuentry",onClick:function(){e.setSelected(t)},children:t},t)}));return n.length?n:"No Options Found"},d.render=function(){var e=this,t=this.props,n=t.icon,l=t.iconRotation,f=t.iconSpin,d=t.color,p=void 0===d?"default":d,h=t.over,v=t.noscroll,m=t.nochevron,g=t.width,y=(t.onClick,t.selected,t.disabled),b=t.displayText,x=c(t,u),w=x.className,E=c(x,s),_=h?!this.state.open:this.state.open,D=this.state.open?(0,r.createVNode)(1,"div",(0,o.classes)([v?"Dropdown__menu-noscroll":"Dropdown__menu",h&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:g}},null,(function(t){e.menuRef=t})):null;return(0,r.createVNode)(1,"div","Dropdown",[(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({width:g,className:(0,o.classes)(["Dropdown__control","Button","Button--color--"+p,y&&"Button--disabled",w])},E,{onClick:function(){y&&!e.state.open||e.setOpen(!e.state.open)},children:[n&&(0,r.createComponentVNode)(2,a.Icon,{name:n,rotation:l,spin:f,mr:1}),(0,r.createVNode)(1,"span","Dropdown__selected-text",b||this.state.selected,0),!!m||(0,r.createVNode)(1,"span","Dropdown__arrow-button",(0,r.createComponentVNode)(2,a.Icon,{name:_?"chevron-up":"chevron-down"}),2)]}))),D],0)},f}(r.Component);t.Dropdown=f},22427:function(e,t,n){"use strict";t.__esModule=!0,t.computeFlexProps=t.computeFlexItemProps=t.Flex=void 0;var r=n(58734),o=n(59641),i=n(2433),a=["className","direction","wrap","align","justify","inline"],u=["className","style","grow","order","shrink","basis","align"];function s(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.direction,r=e.wrap,i=e.align,u=e.justify,c=e.inline,l=s(e,a);return Object.assign({className:(0,o.classes)(["Flex",Byond.IS_LTE_IE10&&("column"===n?"Flex--iefix--column":"Flex--iefix"),c&&"Flex--inline",t]),style:Object.assign({},l.style,{"flex-direction":n,"flex-wrap":!0===r?"wrap":r,"align-items":i,"justify-content":u})},l)};t.computeFlexProps=c;var l=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},c(e))))};t.Flex=l,l.defaultHooks=o.pureComponentHooks;var f=function(e){var t=e.className,n=e.style,r=e.grow,a=e.order,c=e.shrink,l=e.basis,f=void 0===l?e.width:l,d=e.align,p=s(e,u);return Object.assign({className:(0,o.classes)(["Flex__item",Byond.IS_LTE_IE10&&"Flex__item--iefix",Byond.IS_LTE_IE10&&r>0&&"Flex__item--iefix--grow",t]),style:Object.assign({},n,{"flex-grow":r!==undefined&&Number(r),"flex-shrink":c!==undefined&&Number(c),"flex-basis":(0,i.unit)(f),order:a,"align-self":d})},p)};t.computeFlexItemProps=f;var d=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({},f(e))))};d.defaultHooks=o.pureComponentHooks,l.Item=d},47176:function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var r=n(58734),o=n(84148),i=n(59641),a=["children"],u=["size","style"];function s(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.children,n=s(e,a);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table,Object.assign({},n,{children:(0,r.createComponentVNode)(2,o.Table.Row,{children:t})})))};t.Grid=c,c.defaultHooks=i.pureComponentHooks;var l=function(e){var t=e.size,n=void 0===t?1:t,i=e.style,a=s(e,u);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},i)},a)))};t.GridColumn=l,c.defaultHooks=i.pureComponentHooks,c.Column=l},19529:function(e,t,n){"use strict";t.__esModule=!0,t.IconStack=t.Icon=void 0;var r=n(58734),o=n(59641),i=n(2433),a=["name","size","spin","className","style","rotation","inverse"],u=["className","style","children"];function s(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=/-o$/,l=function(e){var t=e.name,n=e.size,u=e.spin,l=e.className,f=e.style,d=void 0===f?{}:f,p=e.rotation,h=(e.inverse,s(e,a));n&&(d["font-size"]=100*n+"%"),"number"==typeof p&&(d.transform="rotate("+p+"deg)");var v="";t.startsWith("tg-")?v=t:v=(c.test(t)?"far ":"fas ")+"fa-"+t.replace(c,"")+(u?" fa-spin":"");return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({as:"i",className:(0,o.classes)(["Icon",l,v]),style:d},h)))};t.Icon=l,l.defaultHooks=o.pureComponentHooks;var f=function(e){var t=e.className,n=e.style,a=void 0===n?{}:n,c=e.children,l=s(e,u);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({as:"span","class":(0,o.classes)(["IconStack",t]),style:a},l,{children:c})))};t.IconStack=f,l.Stack=f},8314:function(e,t,n){"use strict";t.__esModule=!0,t.InfinitePlane=void 0;var r=n(58734),o=n(2433),i=n(34559),a=n(38327),u=n(83474),s=["children","backgroundImage","imageWidth"];function c(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function l(e,t){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},l(e,t)}var f=function(e){var t,n;function f(){var t;return(t=e.call(this)||this).state={mouseDown:!1,left:0,top:0,lastLeft:0,lastTop:0,zoom:1},t.handleMouseDown=t.handleMouseDown.bind(c(t)),t.handleMouseMove=t.handleMouseMove.bind(c(t)),t.onMouseUp=t.onMouseUp.bind(c(t)),t.doOffsetMouse=t.doOffsetMouse.bind(c(t)),t}n=e,(t=f).prototype=Object.create(n.prototype),t.prototype.constructor=t,l(t,n);var d=f.prototype;return d.componentDidMount=function(){window.addEventListener("mouseup",this.onMouseUp),window.addEventListener("mousedown",this.doOffsetMouse),window.addEventListener("mousemove",this.doOffsetMouse),window.addEventListener("mouseup",this.doOffsetMouse)},d.componentWillUnmount=function(){window.removeEventListener("mouseup",this.onMouseUp),window.removeEventListener("mousedown",this.doOffsetMouse),window.removeEventListener("mousemove",this.doOffsetMouse),window.removeEventListener("mouseup",this.doOffsetMouse)},d.doOffsetMouse=function(e){var t=this.state.zoom;e.screenZoomX=e.screenX*Math.pow(t,-1),e.screenZoomY=e.screenY*Math.pow(t,-1)},d.handleMouseDown=function(e){this.setState((function(t){return{mouseDown:!0,lastLeft:e.clientX-t.left,lastTop:e.clientY-t.top}}))},d.onMouseUp=function(){this.setState({mouseDown:!1})},d.handleMouseMove=function(e){this.state.mouseDown&&this.setState((function(t){return{left:e.clientX-t.lastLeft,top:e.clientY-t.lastTop}}))},d.render=function(){var e=this,t=this.props,n=t.children,c=t.backgroundImage,l=t.imageWidth,f=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(t,s),d=this.state,p=d.left,h=d.top,v=d.zoom;return(0,r.normalizeProps)((0,r.createVNode)(1,"div",null,[(0,r.createVNode)(1,"div",null,null,1,{onMouseDown:this.handleMouseDown,onMouseMove:this.handleMouseMove,style:{position:"fixed",height:"100%",width:"100%","background-image":'url("'+c+'")',"background-position":p+"px "+h+"px","background-repeat":"repeat","background-size":v*l+"px"}}),(0,r.createVNode)(1,"div",null,n,0,{onMouseDown:this.handleMouseDown,onMouseMove:this.handleMouseMove,style:{position:"fixed",transform:"translate("+p+"px, "+h+"px) scale("+v+")","transform-origin":"top left",height:"100%",width:"100%"}}),(0,r.createComponentVNode)(2,i.Stack,{position:"absolute",width:"100%",children:[(0,r.createComponentVNode)(2,i.Stack.Item,{children:(0,r.createComponentVNode)(2,u.Button,{icon:"minus",onClick:function(){return e.setState({zoom:Math.max(v-.1,.5)})}})}),(0,r.createComponentVNode)(2,i.Stack.Item,{grow:1,children:(0,r.createComponentVNode)(2,a.ProgressBar,{minValue:.5,value:v,maxValue:1.5,children:[v,"x"]})}),(0,r.createComponentVNode)(2,i.Stack.Item,{children:(0,r.createComponentVNode)(2,u.Button,{icon:"plus",onClick:function(){return e.setState({zoom:Math.min(v+.1,1.5)})}})})]})],4,Object.assign({},(0,o.computeBoxProps)(Object.assign({},f,{style:Object.assign({},f.style,{overflow:"hidden",position:"relative"})}))),null,this.ref))},f}(r.Component);t.InfinitePlane=f},80747:function(e,t,n){"use strict";t.__esModule=!0,t.toInputValue=t.Input=void 0;var r=n(58734),o=n(59641),i=n(2433),a=n(98805),u=["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"],s=["className","fluid","monospace"];function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}function l(e,t){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},l(e,t)}var f=function(e){return"number"!=typeof e&&"string"!=typeof e?"":String(e)};t.toInputValue=f;var d=function(e){var t,n;function d(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,r=t.props.onInput;n||t.setEditing(!0),r&&r(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,r=t.props.onChange;n&&(t.setEditing(!1),r&&r(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,r=n.onInput,o=n.onChange,i=n.onEnter;return e.keyCode===a.KEY_ENTER?(t.setEditing(!1),o&&o(e,e.target.value),r&&r(e,e.target.value),i&&i(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):e.keyCode===a.KEY_ESCAPE?(t.setEditing(!1),e.target.value=f(t.props.value),void e.target.blur()):void 0},t}n=e,(t=d).prototype=Object.create(n.prototype),t.prototype.constructor=t,l(t,n);var p=d.prototype;return p.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=f(e)),this.props.autoFocus&&setTimeout((function(){return t.focus()}),1)},p.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.inputRef.current;i&&!n&&r!==o&&(i.value=f(o))},p.setEditing=function(e){this.setState({editing:e})},p.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,a=c(e,u),l=a.className,f=a.fluid,d=a.monospace,p=c(a,s);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Input",f&&"Input--fluid",d&&"Input--monospace",l])},p,{children:[(0,r.createVNode)(1,"div","Input__baseline",".",16),(0,r.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},d}(r.Component);t.Input=d},1690:function(e,t,n){"use strict";t.__esModule=!0,t.Knob=void 0;var r=n(58734),o=n(5339),i=n(59641),a=n(2433),u=n(7359),s=n(27709),c=["animated","format","maxValue","minValue","unclamped","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","style","fillValue","color","ranges","size","bipolar","children"];t.Knob=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,l=e.maxValue,f=e.minValue,d=e.unclamped,p=e.onChange,h=e.onDrag,v=e.step,m=e.stepPixelSize,g=e.suppressFlicker,y=e.unit,b=e.value,x=e.className,w=e.style,E=e.fillValue,_=e.color,D=e.ranges,C=void 0===D?{}:D,k=e.size,A=void 0===k?1:k,S=e.bipolar,N=(e.children,function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,c));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,format:n,maxValue:l,minValue:f,unclamped:d,onChange:p,onDrag:h,step:v,stepPixelSize:m,suppressFlicker:g,unit:y,value:b},{children:function(e){var t=e.dragging,n=(e.editing,e.value),u=e.displayValue,s=e.displayElement,c=e.inputElement,d=e.handleDragStart,p=(0,o.scale)(null!=E?E:u,f,l),h=(0,o.scale)(u,f,l),v=_||(0,o.keyOfMatchingRange)(null!=E?E:n,C)||"default",m=Math.min(270*(h-.5),225);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Knob","Knob--color--"+v,S&&"Knob--bipolar",x,(0,a.computeBoxClassName)(N)]),[(0,r.createVNode)(1,"div","Knob__circle",(0,r.createVNode)(1,"div","Knob__cursorBox",(0,r.createVNode)(1,"div","Knob__cursor"),2,{style:{transform:"rotate("+m+"deg)"}}),2),t&&(0,r.createVNode)(1,"div","Knob__popupValue",s,0),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringTrackPivot",(0,r.createVNode)(32,"circle","Knob__ringTrack",null,1,{cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringFillPivot",(0,r.createVNode)(32,"circle","Knob__ringFill",null,1,{style:{"stroke-dashoffset":Math.max(((S?2.75:2)-1.5*p)*Math.PI*50,0)},cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),c],0,Object.assign({},(0,a.computeBoxProps)(Object.assign({style:Object.assign({"font-size":A+"em"},w)},N)),{onMouseDown:d})))}})))}},72568:function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var r=n(58734),o=n(22427),i=["children","wrap"],a=["label","children","mx"];function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var s=function(e){var t=e.children,n=e.wrap,a=u(e,i);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({mx:-.5,wrap:n,align:"stretch",justify:"space-between"},a,{children:t})))};t.LabeledControls=s;s.Item=function(e){var t=e.label,n=e.children,i=e.mx,s=void 0===i?1:i,c=u(e,a);return(0,r.createComponentVNode)(2,o.Flex.Item,{mx:s,children:(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({height:"100%",direction:"column",align:"center",textAlign:"center",justify:"space-between"},c,{children:[(0,r.createComponentVNode)(2,o.Flex.Item),(0,r.createComponentVNode)(2,o.Flex.Item,{children:n}),(0,r.createComponentVNode)(2,o.Flex.Item,{color:"label",children:t})]})))})}},37806:function(e,t,n){"use strict";t.__esModule=!0,t.LabeledList=void 0;var r=n(58734),o=n(59641),i=n(2433),a=n(47873),u=function(e){var t=e.children;return(0,r.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=u,u.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.label,a=e.labelColor,u=void 0===a?"label":a,s=e.color,c=e.textAlign,l=e.buttons,f=e.content,d=e.children;return(0,r.createVNode)(1,"tr",(0,o.classes)(["LabeledList__row",t]),[(0,r.createComponentVNode)(2,i.Box,{as:"td",color:u,className:(0,o.classes)(["LabeledList__cell","LabeledList__label"]),children:n?n+":":null}),(0,r.createComponentVNode)(2,i.Box,{as:"td",color:s,textAlign:c,className:(0,o.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:l?undefined:2,children:[f,d]}),l&&(0,r.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",l,0)],0)};s.defaultHooks=o.pureComponentHooks;var c=function(e){var t=e.size?(0,i.unit)(Math.max(0,e.size-1)):0;return(0,r.createVNode)(1,"tr","LabeledList__row",(0,r.createVNode)(1,"td",null,(0,r.createComponentVNode)(2,a.Divider),2,{colSpan:3,style:{"padding-top":t,"padding-bottom":t}}),2)};c.defaultHooks=o.pureComponentHooks,u.Item=s,u.Divider=c},2522:function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var r=n(58734),o=n(59641),i=n(2433),a=n(94972),u=["className","children"];t.Modal=function(e){var t=e.className,n=e.children,s=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,u);return(0,r.createComponentVNode)(2,a.Dimmer,{children:(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Modal",t,(0,i.computeBoxClassName)(s)]),n,0,Object.assign({},(0,i.computeBoxProps)(s))))})}},43819:function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var r=n(58734),o=n(59641),i=n(2433),a=["active","className","color","info","warning","success","danger"];var u=function(e){var t=e.active,n=e.className,u=e.color,s=e.info,c=(e.warning,e.success),l=e.danger,f=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,a);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:t&&(0,o.classes)(["NoticeBox",u&&"NoticeBox--color--"+u,s&&"NoticeBox--type--info",c&&"NoticeBox--type--success",l&&"NoticeBox--type--danger",n])},f)))};t.NoticeBox=u,u.defaultHooks=o.pureComponentHooks},27709:function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var r=n(58734),o=n(5339),i=n(59641),a=n(71472),u=n(2433);function s(e,t){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},s(e,t)}var c=function(e){var t,n;function c(t){var n;n=e.call(this,t)||this;var i=t.value;return n.inputRef=(0,r.createRef)(),n.state={value:i,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),n.props.updateRate||400),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,u=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),s=n.origin-e.screenY;if(t.dragging){var c=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+s*a/u,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+c,r,i),n.origin=e.screenY}else Math.abs(s)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,u=i.value,s=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,u),o&&o(e,u);else if(n.inputRef){var c=n.inputRef.current;c.value=s;try{c.focus(),c.select()}catch(l){}}},n}return n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,s(t,n),c.prototype.render=function(){var e=this,t=this.state,n=t.dragging,s=t.editing,c=t.value,l=t.suppressingFlicker,f=this.props,d=f.className,p=f.fluid,h=f.animated,v=f.value,m=f.unit,g=f.minValue,y=f.maxValue,b=f.height,x=f.width,w=f.lineHeight,E=f.fontSize,_=f.format,D=f.onChange,C=f.onDrag,k=v;(n||l)&&(k=c);var A=function(e){return(0,r.createVNode)(1,"div","NumberInput__content",e+(m?" "+m:""),0,{unselectable:Byond.IS_LTE_IE8})},S=h&&!n&&!l&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:k,format:_,children:A})||A(_?_(k):k);return(0,r.createComponentVNode)(2,u.Box,{className:(0,i.classes)(["NumberInput",p&&"NumberInput--fluid",d]),minWidth:x,minHeight:b,lineHeight:w,fontSize:E,onMouseDown:this.handleDragStart,children:[(0,r.createVNode)(1,"div","NumberInput__barContainer",(0,r.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,o.clamp)((k-g)/(y-g)*100,0,100)+"%"}}),2),S,(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:s?undefined:"none",height:b,"line-height":w,"font-size":E},onBlur:function(t){if(s){var n=(0,o.clamp)(parseFloat(t.target.value),g,y);Number.isNaN(n)?e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),D&&D(t,n),C&&C(t,n))}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(parseFloat(t.target.value),g,y);return Number.isNaN(n)?void e.setState({editing:!1}):(e.setState({editing:!1,value:n}),e.suppressFlicker(),D&&D(t,n),void(C&&C(t,n)))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},c}(r.Component);t.NumberInput=c,c.defaultHooks=i.pureComponentHooks,c.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},88530:function(e,t,n){"use strict";t.__esModule=!0,t.Popper=void 0;var r=n(42346),o=n(58734);function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}var a=function(e){var t,n;function a(){var t;return(t=e.call(this)||this).renderedContent=void 0,t.popperInstance=void 0,a.id+=1,t}n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n);var u=a.prototype;return u.componentDidMount=function(){var e=this,t=this.props,n=t.additionalStyles,i=t.options;if(this.renderedContent=document.createElement("div"),n)for(var a=0,u=Object.entries(n);a=0||(o[n]=e[n]);return o}(e,u),y=(0,o.scale)(n,c,f),b=v!==undefined,x=d||(0,o.keyOfMatchingRange)(n,h)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar","ProgressBar--color--"+x,t,(0,a.computeBoxClassName)(g)]),[(0,r.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,o.clamp01)(y)+"%",right:m?0:null,left:m?null:0}}),(0,r.createVNode)(1,"div","ProgressBar__content",b?v:(0,o.toFixed)(100*y)+"%",0)],4,Object.assign({},(0,a.computeBoxProps)(g))))};t.ProgressBar=s,s.defaultHooks=i.pureComponentHooks},41003:function(e,t,n){"use strict";t.__esModule=!0,t.RoundGauge=void 0;var r=n(58734),o=n(5339),i=n(59641),a=n(71472),u=n(2433),s=["value","minValue","maxValue","ranges","alertAfter","format","size","className","style"];t.RoundGauge=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,a.AnimatedNumber,Object.assign({},e)));var t=e.value,n=e.minValue,c=void 0===n?1:n,l=e.maxValue,f=void 0===l?1:l,d=e.ranges,p=e.alertAfter,h=e.format,v=e.size,m=void 0===v?1:v,g=e.className,y=e.style,b=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,s),x=(0,o.scale)(t,c,f),w=(0,o.clamp01)(x),E=d?{}:{primary:[0,1]};d&&Object.keys(d).forEach((function(e){var t=d[e];E[e]=[(0,o.scale)(t[0],c,f),(0,o.scale)(t[1],c,f)]}));var _=null;return p=0||(o[n]=e[n]);return o}(e,u),p=(0,o.canRender)(n)||(0,o.canRender)(i);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Section",Byond.IS_LTE_IE8&&"Section--iefix",s&&"Section--fill",c&&"Section--fitted",l&&"Section--scrollable",t,(0,a.computeBoxClassName)(d)]),[p&&(0,r.createVNode)(1,"div","Section__title",[(0,r.createVNode)(1,"span","Section__titleText",n,0),(0,r.createVNode)(1,"div","Section__buttons",i,0)],4),(0,r.createVNode)(1,"div","Section__rest",(0,r.createVNode)(1,"div","Section__content",f,0,null,null,this.scrollableRef),2)],0,Object.assign({},(0,a.computeBoxProps)(d))))},c}(r.Component);t.Section=c},12299:function(e,t,n){"use strict";t.__esModule=!0,t.Slider=void 0;var r=n(58734),o=n(5339),i=n(59641),a=n(2433),u=n(7359),s=n(27709),c=["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","fillValue","color","ranges","children"];t.Slider=function(e){if(Byond.IS_LTE_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,l=e.maxValue,f=e.minValue,d=e.onChange,p=e.onDrag,h=e.step,v=e.stepPixelSize,m=e.suppressFlicker,g=e.unit,y=e.value,b=e.className,x=e.fillValue,w=e.color,E=e.ranges,_=void 0===E?{}:E,D=e.children,C=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,c),k=D!==undefined;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.DraggableControl,Object.assign({dragMatrix:[1,0]},{animated:t,format:n,maxValue:l,minValue:f,onChange:d,onDrag:p,step:h,stepPixelSize:v,suppressFlicker:m,unit:g,value:y},{children:function(e){var t=e.dragging,n=(e.editing,e.value),u=e.displayValue,s=e.displayElement,c=e.inputElement,d=e.handleDragStart,p=x!==undefined&&null!==x,h=((0,o.scale)(n,f,l),(0,o.scale)(null!=x?x:u,f,l)),v=(0,o.scale)(u,f,l),m=w||(0,o.keyOfMatchingRange)(null!=x?x:n,_)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Slider","ProgressBar","ProgressBar--color--"+m,b,(0,a.computeBoxClassName)(C)]),[(0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar__fill",p&&"ProgressBar__fill--animated"]),null,1,{style:{width:100*(0,o.clamp01)(h)+"%",opacity:.4}}),(0,r.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,o.clamp01)(Math.min(h,v))+"%"}}),(0,r.createVNode)(1,"div","Slider__cursorOffset",[(0,r.createVNode)(1,"div","Slider__cursor"),(0,r.createVNode)(1,"div","Slider__pointer"),t&&(0,r.createVNode)(1,"div","Slider__popupValue",s,0)],0,{style:{width:100*(0,o.clamp01)(v)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",k?D:s,0),c],0,Object.assign({},(0,a.computeBoxProps)(C),{onMouseDown:d})))}})))}},34559:function(e,t,n){"use strict";t.__esModule=!0,t.Stack=void 0;var r=n(58734),o=n(59641),i=n(22427),a=["className","vertical","fill"],u=["className"],s=["className","hidden"];function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var l=function(e){var t=e.className,n=e.vertical,u=e.fill,s=c(e,a);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Flex,Object.assign({className:(0,o.classes)(["Stack",u&&"Stack--fill",n?"Stack--vertical":"Stack--horizontal",t]),direction:n?"column":"row"},s)))};t.Stack=l;l.Item=function(e){var t=e.className,n=c(e,u);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Flex.Item,Object.assign({className:(0,o.classes)(["Stack__item",t])},n)))};l.Divider=function(e){var t=e.className,n=e.hidden,a=c(e,s);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Flex.Item,Object.assign({className:(0,o.classes)(["Stack__item","Stack__divider",n&&"Stack__divider--hidden",t])},a)))}},84148:function(e,t,n){"use strict";t.__esModule=!0,t.TableRow=t.TableCell=t.Table=void 0;var r=n(58734),o=n(59641),i=n(2433),a=["className","collapsing","children"],u=["className","header"],s=["className","collapsing","header"];function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var l=function(e){var t=e.className,n=e.collapsing,u=e.children,s=c(e,a);return(0,r.normalizeProps)((0,r.createVNode)(1,"table",(0,o.classes)(["Table",n&&"Table--collapsing",t,(0,i.computeBoxClassName)(s)]),(0,r.createVNode)(1,"tbody",null,u,0),2,Object.assign({},(0,i.computeBoxProps)(s))))};t.Table=l,l.defaultHooks=o.pureComponentHooks;var f=function(e){var t=e.className,n=e.header,a=c(e,u);return(0,r.normalizeProps)((0,r.createVNode)(1,"tr",(0,o.classes)(["Table__row",n&&"Table__row--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(a))))};t.TableRow=f,f.defaultHooks=o.pureComponentHooks;var d=function(e){var t=e.className,n=e.collapsing,a=e.header,u=c(e,s);return(0,r.normalizeProps)((0,r.createVNode)(1,"td",(0,o.classes)(["Table__cell",n&&"Table__cell--collapsing",a&&"Table__cell--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(u))))};t.TableCell=d,d.defaultHooks=o.pureComponentHooks,l.Row=f,l.Cell=d},72173:function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var r=n(58734),o=n(59641),i=n(2433),a=n(19529),u=["className","vertical","fill","fluid","children"],s=["className","selected","color","icon","leftSlot","rightSlot","children"];function c(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var l=function(e){var t=e.className,n=e.vertical,a=e.fill,s=e.fluid,l=e.children,f=c(e,u);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",a&&"Tabs--fill",s&&"Tabs--fluid",t,(0,i.computeBoxClassName)(f)]),l,0,Object.assign({},(0,i.computeBoxProps)(f))))};t.Tabs=l;l.Tab=function(e){var t=e.className,n=e.selected,u=e.color,l=e.icon,f=e.leftSlot,d=e.rightSlot,p=e.children,h=c(e,s);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tab","Tabs__Tab","Tab--color--"+u,n&&"Tab--selected",t].concat((0,i.computeBoxClassName)(h))),[(0,o.canRender)(f)&&(0,r.createVNode)(1,"div","Tab__left",f,0)||!!l&&(0,r.createVNode)(1,"div","Tab__left",(0,r.createComponentVNode)(2,a.Icon,{name:l}),2),(0,r.createVNode)(1,"div","Tab__text",p,0),(0,o.canRender)(d)&&(0,r.createVNode)(1,"div","Tab__right",d,0)],0,Object.assign({},(0,i.computeBoxProps)(h))))}},48370:function(e,t,n){"use strict";t.__esModule=!0,t.TextArea=void 0;var r=n(58734),o=n(59641),i=n(2433),a=n(80747),u=n(98805),s=["onChange","onKeyDown","onKeyPress","onInput","onFocus","onBlur","onEnter","value","maxLength","placeholder"],c=["className","fluid"];function l(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}function f(e,t){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},f(e,t)}var d=function(e){var t,n;function d(t,n){var o;(o=e.call(this,t,n)||this).textareaRef=(0,r.createRef)(),o.fillerRef=(0,r.createRef)(),o.state={editing:!1};var i=t.dontUseTabForIndent,s=void 0!==i&&i;return o.handleOnInput=function(e){var t=o.state.editing,n=o.props.onInput;t||o.setEditing(!0),n&&n(e,e.target.value)},o.handleOnChange=function(e){var t=o.state.editing,n=o.props.onChange;t&&o.setEditing(!1),n&&n(e,e.target.value)},o.handleKeyPress=function(e){var t=o.state.editing,n=o.props.onKeyPress;t||o.setEditing(!0),n&&n(e,e.target.value)},o.handleKeyDown=function(e){var t=o.state.editing,n=o.props.onKeyDown;if(e.keyCode===u.KEY_ESCAPE)return o.setEditing(!1),e.target.value=(0,a.toInputValue)(o.props.value),void e.target.blur();if((t||o.setEditing(!0),!s)&&9===(e.keyCode||e.which)){e.preventDefault();var r=e.target,i=r.value,c=r.selectionStart,l=r.selectionEnd;e.target.value=i.substring(0,c)+"\t"+i.substring(l),e.target.selectionEnd=c+1}n&&n(e,e.target.value)},o.handleFocus=function(e){o.state.editing||o.setEditing(!0)},o.handleBlur=function(e){var t=o.state.editing,n=o.props.onChange;t&&(o.setEditing(!1),n&&n(e,e.target.value))},o}n=e,(t=d).prototype=Object.create(n.prototype),t.prototype.constructor=t,f(t,n);var p=d.prototype;return p.componentDidMount=function(){var e=this.props.value,t=this.textareaRef.current;t&&(t.value=(0,a.toInputValue)(e))},p.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.textareaRef.current;i&&!n&&r!==o&&(i.value=(0,a.toInputValue)(o))},p.setEditing=function(e){this.setState({editing:e})},p.getValue=function(){return this.textareaRef.current&&this.textareaRef.current.value},p.render=function(){var e=this.props,t=(e.onChange,e.onKeyDown,e.onKeyPress,e.onInput,e.onFocus,e.onBlur,e.onEnter,e.value,e.maxLength),n=e.placeholder,a=l(e,s),u=a.className,f=a.fluid,d=l(a,c);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["TextArea",f&&"TextArea--fluid",u])},d,{children:(0,r.createVNode)(128,"textarea","TextArea__textarea",null,1,{placeholder:n,onChange:this.handleOnChange,onKeyDown:this.handleKeyDown,onKeyPress:this.handleKeyPress,onInput:this.handleOnInput,onFocus:this.handleFocus,onBlur:this.handleBlur,maxLength:t},null,this.textareaRef)})))},d}(r.Component);t.TextArea=d},14315:function(e,t,n){"use strict";t.__esModule=!0,t.TimeDisplay=void 0;var r=n(59576),o=n(58734);function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}var a=function(e){return"number"==typeof e&&Number.isFinite(e)&&!Number.isNaN(e)},u=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).timer=null,n.last_seen_value=undefined,n.state={value:0},a(t.value)&&(n.state.value=Number(t.value),n.last_seen_value=Number(t.value)),n}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n);var u=o.prototype;return u.componentDidUpdate=function(){var e=this;this.props.auto!==undefined&&(clearInterval(this.timer),this.timer=setInterval((function(){return e.tick()}),100))},u.tick=function(){var e=Number(this.state.value);this.props.value!==this.last_seen_value&&(this.last_seen_value=this.props.value,e=this.props.value);var t="up"===this.props.auto?1:-1,n=Math.max(0,e+t);this.setState({value:n})},u.componentDidMount=function(){var e=this;this.props.auto!==undefined&&(this.timer=setInterval((function(){return e.tick()}),100))},u.componentWillUnmount=function(){clearInterval(this.timer)},u.render=function(){var e=this.state.value;return a(e)?(0,r.formatTime)(e):this.state.value||null},o}(o.Component);t.TimeDisplay=u},88078:function(e,t,n){"use strict";t.__esModule=!0,t.Tooltip=void 0;var r=n(58734),o=n(88530);function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}var a=function(e){var t,n;function a(){var t;return(t=e.call(this)||this).state={hovered:!1},t}n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n);var u=a.prototype;return u.componentDidMount=function(){var e=this,t=(0,r.findDOMfromVNode)(this.$LI,!0);t.addEventListener("mouseenter",(function(){e.setState({hovered:!0})})),t.addEventListener("mouseleave",(function(){e.setState({hovered:!1})}))},u.render=function(){return(0,r.createComponentVNode)(2,o.Popper,{options:{placement:this.props.position||"auto"},popperContent:(0,r.createVNode)(1,"div","Tooltip",this.props.content,0,{style:{opacity:this.state.hovered?1:0}}),additionalStyles:{"pointer-events":"none"},children:this.props.children})},a}(r.Component);t.Tooltip=a},50930:function(e,t,n){"use strict";t.__esModule=!0,t.Tooltip=t.TimeDisplay=t.TextArea=t.Tabs=t.Table=t.Stack=t.Slider=t.Section=t.RoundGauge=t.ProgressBar=t.Popper=t.NumberInput=t.NoticeBox=t.Modal=t.LabeledList=t.LabeledControls=t.Knob=t.Input=t.InfinitePlane=t.Icon=t.Grid=t.Flex=t.Dropdown=t.DraggableControl=t.Divider=t.Dimmer=t.ColorBox=t.Collapsible=t.Chart=t.ByondUi=t.Button=t.Box=t.BlockQuote=t.Blink=t.AnimatedNumber=void 0;var r=n(71472);t.AnimatedNumber=r.AnimatedNumber;var o=n(64910);t.Blink=o.Blink;var i=n(59618);t.BlockQuote=i.BlockQuote;var a=n(2433);t.Box=a.Box;var u=n(83474);t.Button=u.Button;var s=n(5061);t.ByondUi=s.ByondUi;var c=n(85249);t.Chart=c.Chart;var l=n(9066);t.Collapsible=l.Collapsible;var f=n(61392);t.ColorBox=f.ColorBox;var d=n(94972);t.Dimmer=d.Dimmer;var p=n(47873);t.Divider=p.Divider;var h=n(7359);t.DraggableControl=h.DraggableControl;var v=n(73185);t.Dropdown=v.Dropdown;var m=n(22427);t.Flex=m.Flex;var g=n(47176);t.Grid=g.Grid;var y=n(19529);t.Icon=y.Icon;var b=n(8314);t.InfinitePlane=b.InfinitePlane;var x=n(80747);t.Input=x.Input;var w=n(1690);t.Knob=w.Knob;var E=n(72568);t.LabeledControls=E.LabeledControls;var _=n(37806);t.LabeledList=_.LabeledList;var D=n(2522);t.Modal=D.Modal;var C=n(43819);t.NoticeBox=C.NoticeBox;var k=n(27709);t.NumberInput=k.NumberInput;var A=n(38327);t.ProgressBar=A.ProgressBar;var S=n(88530);t.Popper=S.Popper;var N=n(41003);t.RoundGauge=N.RoundGauge;var O=n(95657);t.Section=O.Section;var F=n(12299);t.Slider=F.Slider;var M=n(34559);t.Stack=M.Stack;var T=n(84148);t.Table=T.Table;var I=n(72173);t.Tabs=I.Tabs;var B=n(48370);t.TextArea=B.TextArea;var L=n(14315);t.TimeDisplay=L.TimeDisplay;var P=n(88078);t.Tooltip=P.Tooltip},35891:function(e,t){"use strict";t.__esModule=!0,t.getGasLabel=t.getGasColor=t.UI_UPDATE=t.UI_INTERACTIVE=t.UI_DISABLED=t.UI_CLOSE=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"},reagent:{acidicbuffer:"#fbc314",basicbuffer:"#3853a4"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#8f4a4b"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"Green Team",freq:1219,color:"#34fd34"},{name:"Yellow Team",freq:1221,color:"#fdfd34"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#fcdf03"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"Responders",freq:1209,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var n=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"},{id:"hydrogen",name:"Hydrogen",label:"H\u2082",color:"white"}];t.getGasLabel=function(e,t){var r=String(e).toLowerCase(),o=n.find((function(e){return e.id===r||e.name.toLowerCase()===r}));return o&&o.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),r=n.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return r&&r.color}},54215:function(e,t,n){"use strict";t.__esModule=!0,t.KitchenSink=void 0;var r=n(58734),o=n(54777),i=n(50930),a=n(33677),u=n(69321);t.KitchenSink=function(e,t){var n=e.panel,s=(0,o.useLocalState)(t,"kitchenSinkTheme")[0],c=(0,o.useLocalState)(t,"pageIndex",0),l=c[0],f=c[1],d=u.keys().map((function(e){return u(e)})),p=d[l],h=n?a.Pane:a.Window;return(0,r.createComponentVNode)(2,h,{title:"Kitchen Sink",width:600,height:500,theme:s,children:(0,r.createComponentVNode)(2,i.Flex,{height:"100%",children:[(0,r.createComponentVNode)(2,i.Flex.Item,{m:1,mr:0,children:(0,r.createComponentVNode)(2,i.Section,{fill:!0,fitted:!0,children:(0,r.createComponentVNode)(2,i.Tabs,{vertical:!0,children:d.map((function(e,t){return(0,r.createComponentVNode)(2,i.Tabs.Tab,{color:"transparent",selected:t===l,onClick:function(){return f(t)},children:e.meta.title},t)}))})})}),(0,r.createComponentVNode)(2,i.Flex.Item,{position:"relative",grow:1,children:(0,r.createComponentVNode)(2,h.Content,{scrollable:!0,children:p.meta.render()})})]})})}},46789:function(e,t,n){"use strict";t.__esModule=!0,t.toggleKitchenSink=t.toggleDebugLayout=t.openExternalBrowser=void 0;var r=n(82544),o=(0,r.createAction)("debug/toggleKitchenSink");t.toggleKitchenSink=o;var i=(0,r.createAction)("debug/toggleDebugLayout");t.toggleDebugLayout=i;var a=(0,r.createAction)("debug/openExternalBrowser");t.openExternalBrowser=a},4663:function(e,t,n){"use strict";t.__esModule=!0,t.useDebug=void 0;var r=n(82544),o=n(85470);t.useDebug=function(e){return(0,r.useSelector)(e,o.selectDebug)}},11079:function(e,t,n){"use strict";t.__esModule=!0,t.useDebug=t.relayMiddleware=t.debugReducer=t.debugMiddleware=t.KitchenSink=void 0;var r=n(4663);t.useDebug=r.useDebug;var o=n(54215);t.KitchenSink=o.KitchenSink;var i=n(42236);t.debugMiddleware=i.debugMiddleware,t.relayMiddleware=i.relayMiddleware;var a=n(32432);t.debugReducer=a.debugReducer},42236:function(e,t,n){"use strict";t.__esModule=!0,t.relayMiddleware=t.debugMiddleware=void 0;var r=n(98805),o=n(46725),i=n(82611),a=n(46789),u=["backend/update","chat/message"];t.debugMiddleware=function(e){return(0,i.acquireHotKey)(r.KEY_F11),(0,i.acquireHotKey)(r.KEY_F12),o.globalEvents.on("keydown",(function(t){t.code===r.KEY_F11&&e.dispatch((0,a.toggleDebugLayout)()),t.code===r.KEY_F12&&e.dispatch((0,a.toggleKitchenSink)()),t.ctrl&&t.alt&&t.code===r.KEY_BACKSPACE&&setTimeout((function(){throw new Error("OOPSIE WOOPSIE!! UwU We made a fucky wucky!! A wittle fucko boingo! The code monkeys at our headquarters are working VEWY HAWD to fix this!")}))})),function(e){return function(t){return e(t)}}};t.relayMiddleware=function(e){var t=n(60207),s="?external"===location.search;return s?t.subscribe((function(t){var n=t.type,r=t.payload;"relay"===n&&r.windowId===window.__windowId__&&e.dispatch(Object.assign({},r.action,{relayed:!0}))})):((0,i.acquireHotKey)(r.KEY_F10),o.globalEvents.on("keydown",(function(t){t===r.KEY_F10&&e.dispatch((0,a.openExternalBrowser)())}))),function(e){return function(n){var r=n.type,o=(n.payload,n.relayed);if(r!==a.openExternalBrowser.type)return!u.includes(r)||o||s||t.sendMessage({type:"relay",payload:{windowId:window.__windowId__,action:n}}),e(n);window.open(location.href+"?external","_blank")}}}},32432:function(e,t){"use strict";t.__esModule=!0,t.debugReducer=void 0;t.debugReducer=function(e,t){void 0===e&&(e={});var n=t.type;t.payload;return"debug/toggleKitchenSink"===n?Object.assign({},e,{kitchenSink:!e.kitchenSink}):"debug/toggleDebugLayout"===n?Object.assign({},e,{debugLayout:!e.debugLayout}):e}},85470:function(e,t){"use strict";t.__esModule=!0,t.selectDebug=void 0;t.selectDebug=function(e){return e.debug}},54655:function(e,t,n){"use strict";t.__esModule=!0,t.storeWindowGeometry=t.setupDrag=t.setWindowSize=t.setWindowPosition=t.setWindowKey=t.resizeStartHandler=t.recallWindowGeometry=t.getWindowSize=t.getWindowPosition=t.getScreenSize=t.getScreenPosition=t.dragStartHandler=void 0;var r=n(22800),o=n(13212);function i(){i=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",u=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(N){c=function(e,t,n){return e[t]=n}}function l(e,t,n,o){var i=t&&t.prototype instanceof p?t:p,a=Object.create(i.prototype),u=new k(o||[]);return r(a,"_invoke",{value:E(e,n,u)}),a}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(N){return{type:"throw",arg:N}}}e.wrap=l;var d={};function p(){}function h(){}function v(){}var m={};c(m,a,(function(){return this}));var g=Object.getPrototypeOf,y=g&&g(g(A([])));y&&y!==t&&n.call(y,a)&&(m=y);var b=v.prototype=p.prototype=Object.create(m);function x(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function o(r,i,a,u){var s=f(e[r],e,i);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){o("next",e,a,u)}),(function(e){o("throw",e,a,u)})):t.resolve(l).then((function(e){c.value=e,a(c)}),(function(e){return o("throw",e,a,u)}))}u(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function E(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var u=_(a,n);if(u){if(u===d)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=f(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===d)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(undefined===r)return t.delegate=null,"throw"===n&&e.iterator["return"]&&(t.method="return",t.arg=undefined,_(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),d;var o=f(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,d;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=undefined),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function D(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(D,this),this.reset(!0)}function A(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(u&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),d}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:A(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=undefined),d}},e}function a(e,t,n,r,o,i,a){try{var u=e[i](a),s=u.value}catch(c){return void n(c)}u.done?t(s):Promise.resolve(s).then(r,o)}function u(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function u(e){a(i,r,o,u,s,"next",e)}function s(e){a(i,r,o,u,s,"throw",e)}u(undefined)}))}}var s,c,l,f,d,p=(0,n(17488).createLogger)("drag"),h=window.__windowId__,v=!1,m=!1,g=[0,0];t.setWindowKey=function(e){h=e};var y=function(){return[window.screenLeft,window.screenTop]};t.getWindowPosition=y;var b=function(){return[window.innerWidth,window.innerHeight]};t.getWindowSize=b;var x=function(e){var t=(0,o.vecAdd)(e,g);return Byond.winset(window.__windowId__,{pos:t[0]+","+t[1]})};t.setWindowPosition=x;var w=function(e){return Byond.winset(window.__windowId__,{size:e[0]+"x"+e[1]})};t.setWindowSize=w;var E=function(){return[0-g[0],0-g[1]]};t.getScreenPosition=E;var _=function(){return[window.screen.availWidth,window.screen.availHeight]};t.getScreenSize=_;var D=function(e,t,n){void 0===n&&(n=50);for(var r,o=[t],i=0;is&&(o[a]=s-t[a],i=!0)}return[i,o]};t.dragStartHandler=function(e){var t;p.log("drag start"),v=!0,c=[window.screenLeft-e.screenX,window.screenTop-e.screenY],null==(t=e.target)||t.focus(),document.addEventListener("mousemove",O),document.addEventListener("mouseup",N),O(e)};var N=function T(e){p.log("drag end"),O(e),document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",T),v=!1,C()},O=function(e){v&&(e.preventDefault(),x((0,o.vecAdd)([e.screenX,e.screenY],c)))};t.resizeStartHandler=function(e,t){return function(n){var r;l=[e,t],p.log("resize start",l),m=!0,c=[window.screenLeft-n.screenX,window.screenTop-n.screenY],f=[window.innerWidth,window.innerHeight],null==(r=n.target)||r.focus(),document.addEventListener("mousemove",M),document.addEventListener("mouseup",F),M(n)}};var F=function I(e){p.log("resize end",d),M(e),document.removeEventListener("mousemove",M),document.removeEventListener("mouseup",I),m=!1,C()},M=function(e){m&&(e.preventDefault(),(d=(0,o.vecAdd)(f,(0,o.vecMultiply)(l,(0,o.vecAdd)([e.screenX,e.screenY],(0,o.vecInverse)([window.screenLeft,window.screenTop]),c,[1,1]))))[0]=Math.max(d[0],150),d[1]=Math.max(d[1],50),w(d))}},46725:function(e,t,n){"use strict";t.__esModule=!0,t.setupGlobalEvents=t.removeScrollableNode=t.globalEvents=t.canStealFocus=t.addScrollableNode=t.KeyEvent=void 0;var r=n(20474),o=n(98805),i=new r.EventEmitter;t.globalEvents=i;var a,u=!1;t.setupGlobalEvents=function(e){void 0===e&&(e={}),u=!!e.ignoreWindowFocus};var s=!0,c=function y(e,t){u?s=!0:(a&&(clearTimeout(a),a=null),t?a=setTimeout((function(){return y(e)})):s!==e&&(s=e,i.emit(e?"window-focus":"window-blur"),i.emit("window-focus-change",e)))},l=null,f=function(e){var t=String(e.tagName).toLowerCase();return"input"===t||"textarea"===t};t.canStealFocus=f;var d=function b(){l&&(l.removeEventListener("blur",b),l=null)},p=null,h=null,v=[];t.addScrollableNode=function(e){v.push(e)};t.removeScrollableNode=function(e){var t=v.indexOf(e);t>=0&&v.splice(t,1)};window.addEventListener("mousemove",(function(e){var t=e.target;t!==h&&(h=t,function(e){if(!l&&s)for(var t=document.body;e&&e!==t;){if(v.includes(e)){if(e.contains(p))return;return p=e,void e.focus()}e=e.parentNode}}(t))})),window.addEventListener("focusin",(function(e){if(h=null,p=e.target,c(!0),f(e.target))return t=e.target,d(),void(l=t).addEventListener("blur",d);var t})),window.addEventListener("focusout",(function(e){h=null,c(!1,!0)})),window.addEventListener("blur",(function(e){h=null,c(!1,!0)})),window.addEventListener("beforeunload",(function(e){c(!1)}));var m={},g=function(){function e(e,t,n){this.event=e,this.type=t,this.code=window.event?e.which:e.keyCode,this.ctrl=e.ctrlKey,this.shift=e.shiftKey,this.alt=e.altKey,this.repeat=!!n}var t=e.prototype;return t.hasModifierKeys=function(){return this.ctrl||this.alt||this.shift},t.isModifierKey=function(){return this.code===o.KEY_CTRL||this.code===o.KEY_SHIFT||this.code===o.KEY_ALT},t.isDown=function(){return"keydown"===this.type},t.isUp=function(){return"keyup"===this.type},t.toString=function(){return this._str||(this._str="",this.ctrl&&(this._str+="Ctrl+"),this.alt&&(this._str+="Alt+"),this.shift&&(this._str+="Shift+"),this.code>=48&&this.code<=90?this._str+=String.fromCharCode(this.code):this.code>=o.KEY_F1&&this.code<=o.KEY_F12?this._str+="F"+(this.code-111):this._str+="["+this.code+"]"),this._str},e}();t.KeyEvent=g,document.addEventListener("keydown",(function(e){if(!f(e.target)){var t=e.keyCode,n=new g(e,"keydown",m[t]);i.emit("keydown",n),i.emit("key",n),m[t]=!0}})),document.addEventListener("keyup",(function(e){if(!f(e.target)){var t=e.keyCode,n=new g(e,"keyup");i.emit("keyup",n),i.emit("key",n),m[t]=!1}}))},60747:function(e,t){"use strict";t.__esModule=!0,t.focusWindow=t.focusMap=void 0;t.focusMap=function(){Byond.winset("mapwindow.map",{focus:!0})};t.focusWindow=function(){Byond.winset(window.__windowId__,{focus:!0})}},59576:function(e,t,n){"use strict";t.__esModule=!0,t.formatTime=t.formatSiUnit=t.formatSiBaseTenUnit=t.formatPower=t.formatMoney=t.formatDb=void 0;var r=n(5339),o=["f","p","n","\u03bc","m"," ","k","M","G","T","P","E","Z","Y","R","Q","F","N","H"],i=o.indexOf(" "),a=function(e,t,n){if(void 0===t&&(t=-i),void 0===n&&(n=""),"number"!=typeof e||!Number.isFinite(e))return e;var a=Math.floor(Math.log10(e)),u=Math.floor(Math.max(3*t,a)),s=Math.floor(a/3),c=Math.floor(u/3),l=(0,r.clamp)(i+c,0,o.length),f=o[l],d=e/Math.pow(1e3,c),p=s>t?2+3*c-u:0;return((0,r.toFixed)(d,p)+" "+f+n).trim()};t.formatSiUnit=a;t.formatPower=function(e,t){return void 0===t&&(t=0),a(e,t,"W")};t.formatMoney=function(e,t){if(void 0===t&&(t=0),!Number.isFinite(e))return e;var n=(0,r.round)(e,t);t>0&&(n=(0,r.toFixed)(e,t));var o=(n=String(n)).length,i=n.indexOf(".");-1===i&&(i=o);for(var a="",u=0;u0&&u=0?"+":"\u2013",o=Math.abs(t);return n+(o=o===Infinity?"Inf":(0,r.toFixed)(o,2))+" dB"};var u=["","\xb7 10\xb3","\xb7 10\u2076","\xb7 10\u2079","\xb7 10\xb9\xb2","\xb7 10\xb9\u2075","\xb7 10\xb9\u2078","\xb7 10\xb2\xb9","\xb7 10\xb2\u2074","\xb7 10\xb2\u2077","\xb7 10\xb3\u2070","\xb7 10\xb3\xb3","\xb7 10\xb3\u2076","\xb7 10\xb3\u2079"],s=u.indexOf(" ");t.formatSiBaseTenUnit=function(e,t,n){if(void 0===t&&(t=-s),void 0===n&&(n=""),"number"!=typeof e||!Number.isFinite(e))return e;var o=Math.floor(Math.log10(e)),i=Math.floor(Math.max(3*t,o)),a=Math.floor(o/3),c=Math.floor(i/3),l=(0,r.clamp)(s+c,0,u.length),f=u[l],d=e/Math.pow(1e3,c),p=a>t?2+3*c-i:0;return((0,r.toFixed)(d,p)+" "+f+" "+n).trim()};t.formatTime=function(e,t){var n=(0,r.toFixed)(Math.floor(e/10%60)),o=(0,r.toFixed)(Math.floor(e/600%60)),i=(0,r.toFixed)(Math.floor(e/36e3%24));if("short"===t)return""+(i>0?i+"h":"")+(o>0?o+"m":"")+(n>0?n+"s":"");var a=n.padStart(2,"0"),u=o.padStart(2,"0");return i.padStart(2,"0")+":"+u+":"+a}},82611:function(e,t,n){"use strict";t.__esModule=!0,t.setupHotKeys=t.releaseHotKey=t.releaseHeldKeys=t.acquireHotKey=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{"default":e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var u=o?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(r,a,u):r[a]=e[a]}r["default"]=e,n&&n.set(e,r);return r}(n(98805)),o=n(46725);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var a=(0,n(17488).createLogger)("hotkeys"),u={},s=[r.KEY_ESCAPE,r.KEY_ENTER,r.KEY_SPACE,r.KEY_TAB,r.KEY_CTRL,r.KEY_SHIFT,r.KEY_UP,r.KEY_DOWN,r.KEY_LEFT,r.KEY_RIGHT,r.KEY_F5],c={},l=function(e){var t=String(e);if("Ctrl+F5"!==t&&"Ctrl+R"!==t){if("Ctrl+F"!==t&&!(e.event.defaultPrevented||e.isModifierKey()||s.includes(e.code))){var n,r=16===(n=e.code)?"Shift":17===n?"Ctrl":18===n?"Alt":33===n?"Northeast":34===n?"Southeast":35===n?"Southwest":36===n?"Northwest":37===n?"West":38===n?"North":39===n?"East":40===n?"South":45===n?"Insert":46===n?"Delete":n>=48&&n<=57||n>=65&&n<=90?String.fromCharCode(n):n>=96&&n<=105?"Numpad"+(n-96):n>=112&&n<=123?"F"+(n-111):188===n?",":189===n?"-":190===n?".":void 0;if(r){var o=u[r];if(o)return a.debug("macro",o),Byond.command(o);if(e.isDown()&&!c[r]){c[r]=!0;var i='KeyDown "'+r+'"';return a.debug(i),Byond.command(i)}if(e.isUp()&&c[r]){c[r]=!1;var l='KeyUp "'+r+'"';return a.debug(l),Byond.command(l)}}}}else location.reload()};t.acquireHotKey=function(e){s.push(e)};t.releaseHotKey=function(e){var t=s.indexOf(e);t>=0&&s.splice(t,1)};var f=function(){for(var e=0,t=Object.keys(c);e=0||(o[n]=e[n]);return o}var l=function(e){var t=e.className,n=e.theme,a=void 0===n?"nanotrasen":n,s=e.children,l=c(e,u);return(0,r.createVNode)(1,"div","theme-"+a,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Layout",t].concat((0,i.computeBoxClassName)(l))),s,0,Object.assign({},(0,i.computeBoxProps)(l)))),2)};t.Layout=l;var f=function(e){var t=e.className,n=e.scrollable,a=e.children,u=c(e,s);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Layout__content",n&&"Layout__content--scrollable",t].concat((0,i.computeBoxClassName)(u))),a,0,Object.assign({},(0,i.computeBoxProps)(u))))};f.defaultHooks={onComponentDidMount:function(e){return(0,a.addScrollableNode)(e)},onComponentWillUnmount:function(e){return(0,a.removeScrollableNode)(e)}},l.Content=f},39080:function(e,t,n){"use strict";t.__esModule=!0,t.NtosWindow=void 0;var r=n(58734),o=n(96525),i=n(54777),a=n(50930),u=n(60685),s=function(e,t){var n=e.title,s=e.width,c=void 0===s?575:s,l=e.height,f=void 0===l?700:l,d=e.theme,p=void 0===d?"ntos":d,h=e.children,v=(0,i.useBackend)(t),m=v.act,g=v.data,y=g.PC_device_theme,b=g.PC_batteryicon,x=g.PC_showbatteryicon,w=g.PC_batterypercent,E=g.PC_ntneticon,_=g.PC_apclinkicon,D=g.PC_stationtime,C=g.PC_programheaders,k=void 0===C?[]:C,A=g.PC_showexitprogram;return(0,r.createComponentVNode)(2,u.Window,{title:n,width:c,height:f,theme:p,children:(0,r.createVNode)(1,"div","NtosWindow",[(0,r.createVNode)(1,"div","NtosWindow__header NtosHeader",[(0,r.createVNode)(1,"div","NtosHeader__left",[(0,r.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:2,children:D}),(0,r.createComponentVNode)(2,a.Box,{inline:!0,italic:!0,mr:2,opacity:.33,children:["ntos"===y&&"NtOS","syndicate"===y&&"Syndix"]})],4),(0,r.createVNode)(1,"div","NtosHeader__right",[k.map((function(e){return(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(e.icon)})},e.icon)})),(0,r.createComponentVNode)(2,a.Box,{inline:!0,children:E&&(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(E)})}),!(!x||!b)&&(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:[(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(b)}),w&&w]}),_&&(0,r.createComponentVNode)(2,a.Box,{inline:!0,mr:1,children:(0,r.createVNode)(1,"img","NtosHeader__icon",null,1,{src:(0,o.resolveAsset)(_)})}),!!A&&(0,r.createComponentVNode)(2,a.Button,{width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-minimize-o",tooltip:"Minimize",tooltipPosition:"bottom",onClick:function(){return m("PC_minimize")}}),!!A&&(0,r.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"window-close-o",tooltip:"Close",tooltipPosition:"bottom-start",onClick:function(){return m("PC_exit")}}),!A&&(0,r.createComponentVNode)(2,a.Button,{mr:"-3px",width:"26px",lineHeight:"22px",textAlign:"center",color:"transparent",icon:"power-off",tooltip:"Power off",tooltipPosition:"bottom-start",onClick:function(){return m("PC_shutdown")}})],0)],4),h],0)})};t.NtosWindow=s;s.Content=function(e){return(0,r.createVNode)(1,"div","NtosWindow__content",(0,r.normalizeProps)((0,r.createComponentVNode)(2,u.Window.Content,Object.assign({},e))),2)}},49517:function(e,t,n){"use strict";t.__esModule=!0,t.Pane=void 0;var r=n(58734),o=n(59641),i=n(54777),a=n(50930),u=n(11079),s=n(3378),c=["theme","children","className"],l=["className","fitted","children"];function f(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var d=function(e,t){var n=e.theme,l=e.children,d=e.className,p=f(e,c),h=(0,i.useBackend)(t).suspended,v=(0,u.useDebug)(t).debugLayout;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.Layout,Object.assign({className:(0,o.classes)(["Window",d]),theme:n},p,{children:(0,r.createComponentVNode)(2,a.Box,{fillPositionedParent:!0,className:v&&"debug-layout",children:!h&&l})})))};t.Pane=d;d.Content=function(e){var t=e.className,n=e.fitted,i=e.children,a=f(e,l);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.Layout.Content,Object.assign({className:(0,o.classes)(["Window__content",t])},a,{children:n&&i||(0,r.createVNode)(1,"div","Window__contentPadding",i,0)})))}},60685:function(e,t,n){"use strict";t.__esModule=!0,t.Window=void 0;var r=n(58734),o=n(59641),i=n(82544),a=n(85260),u=n(54777),s=n(50930),c=n(35891),l=n(11079),f=(n(46789),n(54655)),d=n(17488),p=n(3378),h=["className","fitted","children"];function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}var m=(0,d.createLogger)("Window"),g=[400,600],y=function(e){var t,n;function s(){return e.apply(this,arguments)||this}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,v(t,n);var d=s.prototype;return d.componentDidMount=function(){var e=(0,u.useBackend)(this.context).suspended,t=this.props.canClose,n=void 0===t||t;e||(Byond.winset(window.__windowId__,{"can-close":Boolean(n)}),m.log("mounting"),this.updateGeometry())},d.componentDidUpdate=function(e){(this.props.width!==e.width||this.props.height!==e.height)&&this.updateGeometry()},d.updateGeometry=function(){var e,t=(0,u.useBackend)(this.context).config,n=Object.assign({size:g},t.window);this.props.width&&this.props.height&&(n.size=[this.props.width,this.props.height]),null!=(e=t.window)&&e.key&&(0,f.setWindowKey)(t.window.key),(0,f.recallWindowGeometry)(n)},d.render=function(){var e,t=this.props,n=t.canClose,s=void 0===n||n,d=t.theme,h=t.title,v=t.children,g=t.buttons,y=(0,u.useBackend)(this.context),b=y.config,w=y.suspended,E=(0,l.useDebug)(this.context).debugLayout,_=(0,i.useDispatch)(this.context),D=null==(e=b.window)?void 0:e.fancy,C=b.user&&(b.user.observer?b.status=0||(o[n]=e[n]);return o}(e,h);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,p.Layout.Content,Object.assign({className:(0,o.classes)(["Window__content",t])},a,{children:n&&i||(0,r.createVNode)(1,"div","Window__contentPadding",i,0)})))};var b=function(e){switch(e){case c.UI_INTERACTIVE:return"good";case c.UI_UPDATE:return"average";case c.UI_DISABLED:default:return"bad"}},x=function(e,t){var n=e.className,u=e.title,c=e.status,l=e.canClose,f=e.fancy,d=e.onDragStart,p=e.onClose,h=e.children;(0,i.useDispatch)(t);return(0,r.createVNode)(1,"div",(0,o.classes)(["TitleBar",n]),[c===undefined&&(0,r.createComponentVNode)(2,s.Icon,{className:"TitleBar__statusIcon",name:"tools",opacity:.5})||(0,r.createComponentVNode)(2,s.Icon,{className:"TitleBar__statusIcon",color:b(c),name:"eye"}),(0,r.createVNode)(1,"div","TitleBar__dragZone",null,1,{onMousedown:function(e){return f&&d(e)}}),(0,r.createVNode)(1,"div","TitleBar__title",["string"==typeof u&&u===u.toLowerCase()&&(0,a.toTitleCase)(u)||u,!!h&&(0,r.createVNode)(1,"div","TitleBar__buttons",h,0)],0),!1,Boolean(f&&l)&&(0,r.createVNode)(1,"div","TitleBar__close TitleBar__clickable",Byond.IS_LTE_IE8?"x":"\xd7",0,{onclick:p})],0)}},33677:function(e,t,n){"use strict";t.__esModule=!0,t.Window=t.Pane=t.NtosWindow=t.Layout=void 0;var r=n(3378);t.Layout=r.Layout;var o=n(39080);t.NtosWindow=o.NtosWindow;var i=n(49517);t.Pane=i.Pane;var a=n(60685);t.Window=a.Window},74489:function(e,t){"use strict";t.__esModule=!0,t.captureExternalLinks=void 0;t.captureExternalLinks=function(){document.addEventListener("click",(function(e){for(var t=e.target;;){if(!t||t===document.body)return;if("a"===String(t.tagName).toLowerCase())break;t=t.parentElement}var n=t.getAttribute("href")||"";if(!("?"===n.charAt(0)||n.startsWith("byond://"))){e.preventDefault();var r=n;r.toLowerCase().startsWith("www")&&(r="https://"+r),Byond.topic({tgui:1,window_id:window.__windowId__,type:"openLink",url:r})}}))}},17488:function(e,t,n){"use strict";t.__esModule=!0,t.logger=t.createLogger=void 0;n(60207);var r=0,o=1,i=2,a=3,u=4,s=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o=i){var a=[t].concat(r).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;Byond.topic({tgui:1,window_id:window.__windowId__,type:"log",ns:t,message:a})}},c=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),o=0;oe.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function i(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}t.defaults={async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1};var a=/[&<>"']/,u=new RegExp(a.source,"g"),s=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,c=new RegExp(s.source,"g"),l={"&":"&","<":"<",">":">",'"':""","'":"'"},f=function(e){return l[e]};function d(e,t){if(t){if(a.test(e))return e.replace(u,f)}else if(s.test(e))return e.replace(c,f);return e}var p=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function h(e){return e.replace(p,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var v=/(^|[^\[])\^/g;function m(e,t){e="string"==typeof e?e:e.source,t=t||"";var n={replace:function(t,r){return r=(r=r.source||r).replace(v,"$1"),e=e.replace(t,r),n},getRegex:function(){return new RegExp(e,t)}};return n}var g=/[^\w:]/g,y=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function b(e,t,n){if(e){var r;try{r=decodeURIComponent(h(n)).replace(g,"").toLowerCase()}catch(o){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!y.test(n)&&(n=function(e,t){x[" "+e]||(w.test(e)?x[" "+e]=e+"/":x[" "+e]=A(e,"/",!0));e=x[" "+e];var n=-1===e.indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(E,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(_,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(o){return null}return n}var x={},w=/^[^:]+:\/*[^/]*$/,E=/^([^:]+:)[\s\S]*$/,_=/^([^:]+:\/*[^/]*)[\s\S]*$/;var D={exec:function(){}};function C(e){for(var t,n,r=1;r=0&&"\\"===n[o];)r=!r;return r?"|":" |"})).split(/ \|/),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else for(;n.length1;)1&t&&(n+=e),t>>=1,e+=e;return n+e}function O(e,t,n,r){var o=t.href,i=t.title?d(t.title):null,a=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){r.state.inLink=!0;var u={type:"link",raw:n,href:o,title:i,text:a,tokens:r.inlineTokens(a)};return r.state.inLink=!1,u}return{type:"image",raw:n,href:o,title:i,text:d(a)}}var F=function(){function e(e){this.options=e||t.defaults}var n=e.prototype;return n.space=function(e){var t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}},n.code=function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:A(n,"\n")}}},n.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var r=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=r.length?e.slice(r.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline._escapes,"$1"):t[2],text:r}}},n.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var r=A(n,"#");this.options.pedantic?n=r.trim():r&&!/ $/.test(r)||(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}},n.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},n.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var n=t[0].replace(/^ *>[ \t]?/gm,""),r=this.lexer.state.top;this.lexer.state.top=!0;var o=this.lexer.blockTokens(n);return this.lexer.state.top=r,{type:"blockquote",raw:t[0],tokens:o,text:n}}},n.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,r,o,i,a,u,s,c,l,f,d,p,h=t[1].trim(),v=h.length>1,m={type:"list",raw:"",ordered:v,start:v?+h.slice(0,-1):"",loose:!1,items:[]};h=v?"\\d{1,9}\\"+h.slice(-1):"\\"+h,this.options.pedantic&&(h=v?h:"[*+-]");for(var g=new RegExp("^( {0,3}"+h+")((?:[\t ][^\\n]*)?(?:\\n|$))");e&&(p=!1,t=g.exec(e))&&!this.rules.block.hr.test(e);){if(n=t[0],e=e.substring(n.length),c=t[2].split("\n",1)[0].replace(/^\t+/,(function(e){return" ".repeat(3*e.length)})),l=e.split("\n",1)[0],this.options.pedantic?(i=2,d=c.trimLeft()):(i=(i=t[2].search(/[^ ]/))>4?1:i,d=c.slice(i),i+=t[1].length),u=!1,!c&&/^ *$/.test(l)&&(n+=l+"\n",e=e.substring(l.length+1),p=!0),!p)for(var y=new RegExp("^ {0,"+Math.min(3,i-1)+"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))"),b=new RegExp("^ {0,"+Math.min(3,i-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),x=new RegExp("^ {0,"+Math.min(3,i-1)+"}(?:```|~~~)"),w=new RegExp("^ {0,"+Math.min(3,i-1)+"}#");e&&(l=f=e.split("\n",1)[0],this.options.pedantic&&(l=l.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!x.test(l))&&!w.test(l)&&!y.test(l)&&!b.test(e);){if(l.search(/[^ ]/)>=i||!l.trim())d+="\n"+l.slice(i);else{if(u)break;if(c.search(/[^ ]/)>=4)break;if(x.test(c))break;if(w.test(c))break;if(b.test(c))break;d+="\n"+l}u||l.trim()||(u=!0),n+=f+"\n",e=e.substring(f.length+1),c=l.slice(i)}m.loose||(s?m.loose=!0:/\n *\n *$/.test(n)&&(s=!0)),this.options.gfm&&(r=/^\[[ xX]\] /.exec(d))&&(o="[ ] "!==r[0],d=d.replace(/^\[[ xX]\] +/,"")),m.items.push({type:"list_item",raw:n,task:!!r,checked:o,loose:!1,text:d}),m.raw+=n}m.items[m.items.length-1].raw=n.trimRight(),m.items[m.items.length-1].text=d.trimRight(),m.raw=m.raw.trimRight();var E=m.items.length;for(a=0;a0&&_.some((function(e){return/\n.*\n/.test(e.raw)}));m.loose=D}if(m.loose)for(a=0;a$/,"$1").replace(this.rules.inline._escapes,"$1"):"",o=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline._escapes,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:r,title:o}}},n.table=function(e){var t=this.rules.block.table.exec(e);if(t){var n={type:"table",header:k(t[1]).map((function(e){return{text:e}})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(n.header.length===n.align.length){n.raw=t[0];var r,o,i,a,u=n.align.length;for(r=0;r/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):d(t[0]):t[0]}},n.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var r=A(n.slice(0,-1),"\\");if((n.length-r.length)%2==0)return}else{var o=function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=e.length,r=0,o=0;o-1){var i=(0===t[0].indexOf("!")?5:4)+t[1].length+o;t[2]=t[2].substring(0,o),t[0]=t[0].substring(0,i).trim(),t[3]=""}}var a=t[2],u="";if(this.options.pedantic){var s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);s&&(a=s[1],u=s[3])}else u=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(n)?a.slice(1):a.slice(1,-1)),O(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:u?u.replace(this.rules.inline._escapes,"$1"):u},t[0],this.lexer)}},n.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=(n[2]||n[1]).replace(/\s+/g," ");if(!(r=t[r.toLowerCase()])){var o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return O(n,r,n[0],this.lexer)}},n.emStrong=function(e,t,n){void 0===n&&(n="");var r=this.rules.inline.emStrong.lDelim.exec(e);if(r&&(!r[3]||!n.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var o=r[1]||r[2]||"";if(!o||o&&(""===n||this.rules.inline.punctuation.exec(n))){var i,a,u=r[0].length-1,s=u,c=0,l="*"===r[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(l.lastIndex=0,t=t.slice(-1*e.length+u);null!=(r=l.exec(t));)if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6])if(a=i.length,r[3]||r[4])s+=a;else if(!((r[5]||r[6])&&u%3)||(u+a)%3){if(!((s-=a)>0)){a=Math.min(a,a+s+c);var f=e.slice(0,u+r.index+(r[0].length-i.length)+a);if(Math.min(u,a)%2){var d=f.slice(1,-1);return{type:"em",raw:f,text:d,tokens:this.lexer.inlineTokens(d)}}var p=f.slice(2,-2);return{type:"strong",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}else c+=a}}},n.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),r=/[^ ]/.test(n),o=/^ /.test(n)&&/ $/.test(n);return r&&o&&(n=n.substring(1,n.length-1)),n=d(n,!0),{type:"codespan",raw:t[0],text:n}}},n.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},n.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}},n.autolink=function(e,t){var n,r,o=this.rules.inline.autolink.exec(e);if(o)return r="@"===o[2]?"mailto:"+(n=d(this.options.mangle?t(o[1]):o[1])):n=d(o[1]),{type:"link",raw:o[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}},n.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var r,o;if("@"===n[2])o="mailto:"+(r=d(this.options.mangle?t(n[0]):n[0]));else{var i;do{i=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(i!==n[0]);r=d(n[0]),o="www."===n[1]?"http://"+n[0]:n[0]}return{type:"link",raw:n[0],text:r,href:o,tokens:[{type:"text",raw:r,text:r}]}}},n.inlineText=function(e,t){var n,r=this.rules.inline.text.exec(e);if(r)return n=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):d(r[0]):r[0]:d(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:n}},e}(),M={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:D,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};M.def=m(M.def).replace("label",M._label).replace("title",M._title).getRegex(),M.bullet=/(?:[*+-]|\d{1,9}[.)])/,M.listItemStart=m(/^( *)(bull) */).replace("bull",M.bullet).getRegex(),M.list=m(M.list).replace(/bull/g,M.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+M.def.source+")").getRegex(),M._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",M._comment=/|$)/,M.html=m(M.html,"i").replace("comment",M._comment).replace("tag",M._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),M.paragraph=m(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.blockquote=m(M.blockquote).replace("paragraph",M.paragraph).getRegex(),M.normal=C({},M),M.gfm=C({},M.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),M.gfm.table=m(M.gfm.table).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.gfm.paragraph=m(M._paragraph).replace("hr",M.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",M.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",M._tag).getRegex(),M.pedantic=C({},M.normal,{html:m("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?\\1> *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",M._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:D,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:m(M.normal._paragraph).replace("hr",M.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",M.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var T={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:D,tag:"^comment|^[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:D,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),r+=""+n+";";return r}T._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",T.punctuation=m(T.punctuation).replace(/punctuation/g,T._punctuation).getRegex(),T.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,T.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,T._comment=m(M._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),T.emStrong.lDelim=m(T.emStrong.lDelim).replace(/punct/g,T._punctuation).getRegex(),T.emStrong.rDelimAst=m(T.emStrong.rDelimAst,"g").replace(/punct/g,T._punctuation).getRegex(),T.emStrong.rDelimUnd=m(T.emStrong.rDelimUnd,"g").replace(/punct/g,T._punctuation).getRegex(),T._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,T._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,T._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,T.autolink=m(T.autolink).replace("scheme",T._scheme).replace("email",T._email).getRegex(),T._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,T.tag=m(T.tag).replace("comment",T._comment).replace("attribute",T._attribute).getRegex(),T._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,T._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,T._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,T.link=m(T.link).replace("label",T._label).replace("href",T._href).replace("title",T._title).getRegex(),T.reflink=m(T.reflink).replace("label",T._label).replace("ref",M._label).getRegex(),T.nolink=m(T.nolink).replace("ref",M._label).getRegex(),T.reflinkSearch=m(T.reflinkSearch,"g").replace("reflink",T.reflink).replace("nolink",T.nolink).getRegex(),T.normal=C({},T),T.pedantic=C({},T.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:m(/^!?\[(label)\]\((.*?)\)/).replace("label",T._label).getRegex(),reflink:m(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",T._label).getRegex()}),T.gfm=C({},T.normal,{escape:m(T.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\0?t[t.length-1].raw+="\n":t.push(n);else if(n=this.tokenizer.code(e))e=e.substring(n.raw.length),!(r=t[t.length-1])||"paragraph"!==r.type&&"text"!==r.type?t.push(n):(r.raw+="\n"+n.raw,r.text+="\n"+n.text,this.inlineQueue[this.inlineQueue.length-1].src=r.text);else if(n=this.tokenizer.fences(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.heading(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.hr(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.blockquote(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.list(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.html(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.def(e))e=e.substring(n.raw.length),!(r=t[t.length-1])||"paragraph"!==r.type&&"text"!==r.type?this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title}):(r.raw+="\n"+n.raw,r.text+="\n"+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=r.text);else if(n=this.tokenizer.table(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.lheading(e))e=e.substring(n.raw.length),t.push(n);else if(o=e,this.options.extensions&&this.options.extensions.startBlock&&function(){var t=Infinity,n=e.slice(1),r=void 0;a.options.extensions.startBlock.forEach((function(e){"number"==typeof(r=e.call({lexer:this},n))&&r>=0&&(t=Math.min(t,r))})),t=0&&(o=e.substring(0,t+1))}(),this.state.top&&(n=this.tokenizer.paragraph(o)))r=t[t.length-1],i&&"paragraph"===r.type?(r.raw+="\n"+n.raw,r.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):t.push(n),i=o.length!==e.length,e=e.substring(n.raw.length);else if(n=this.tokenizer.text(e))e=e.substring(n.raw.length),(r=t[t.length-1])&&"text"===r.type?(r.raw+="\n"+n.raw,r.text+="\n"+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=r.text):t.push(n);else if(e){var u="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(u)}return this.state.top=!0,t},a.inline=function(e,t){return void 0===t&&(t=[]),this.inlineQueue.push({src:e,tokens:t}),t},a.inlineTokens=function(e,t){var n,r,o,i=this;void 0===t&&(t=[]);var a,u,s,c=e;if(this.tokens.links){var l=Object.keys(this.tokens.links);if(l.length>0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(c));)l.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(c=c.slice(0,a.index)+"["+N("a",a[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(c));)c=c.slice(0,a.index)+"["+N("a",a[0].length-2)+"]"+c.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(c));)c=c.slice(0,a.index+a[0].length-2)+"++"+c.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;e;)if(u||(s=""),u=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((function(r){return!!(n=r.call({lexer:i},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0)}))))if(n=this.tokenizer.escape(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.tag(e))e=e.substring(n.raw.length),(r=t[t.length-1])&&"text"===n.type&&"text"===r.type?(r.raw+=n.raw,r.text+=n.text):t.push(n);else if(n=this.tokenizer.link(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(n.raw.length),(r=t[t.length-1])&&"text"===n.type&&"text"===r.type?(r.raw+=n.raw,r.text+=n.text):t.push(n);else if(n=this.tokenizer.emStrong(e,c,s))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.codespan(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.br(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.del(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.autolink(e,B))e=e.substring(n.raw.length),t.push(n);else if(this.state.inLink||!(n=this.tokenizer.url(e,B))){if(o=e,this.options.extensions&&this.options.extensions.startInline&&function(){var t=Infinity,n=e.slice(1),r=void 0;i.options.extensions.startInline.forEach((function(e){"number"==typeof(r=e.call({lexer:this},n))&&r>=0&&(t=Math.min(t,r))})),t=0&&(o=e.substring(0,t+1))}(),n=this.tokenizer.inlineText(o,I))e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(s=n.raw.slice(-1)),u=!0,(r=t[t.length-1])&&"text"===r.type?(r.raw+=n.raw,r.text+=n.text):t.push(n);else if(e){var f="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent)break;throw new Error(f)}}else e=e.substring(n.raw.length),t.push(n);return t},r=e,i=[{key:"rules",get:function(){return{block:M,inline:T}}}],(o=null)&&n(r.prototype,o),i&&n(r,i),Object.defineProperty(r,"prototype",{writable:!1}),e}(),P=function(){function e(e){this.options=e||t.defaults}var n=e.prototype;return n.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var o=this.options.highlight(e,r);null!=o&&o!==e&&(n=!0,e=o)}return e=e.replace(/\n$/,"")+"\n",r?''+(n?e:d(e,!0))+"
\n":""+(n?e:d(e,!0))+"
\n"},n.blockquote=function(e){return"\n"+e+"
\n"},n.html=function(e){return e},n.heading=function(e,t,n,r){return this.options.headerIds?"\n":""+e+"\n"},n.hr=function(){return this.options.xhtml?"
\n":"
\n"},n.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+""+r+">\n"},n.listitem=function(e){return""+e+"\n"},n.checkbox=function(e){return" "},n.paragraph=function(e){return""+e+"
\n"},n.table=function(e,t){return t&&(t=""+t+""),"\n"},n.tablerow=function(e){return"\n"+e+"
\n"},n.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+""+n+">\n"},n.strong=function(e){return""+e+""},n.em=function(e){return""+e+""},n.codespan=function(e){return""+e+"
"},n.br=function(){return this.options.xhtml?"
":"
"},n.del=function(e){return""+e+""},n.link=function(e,t,n){if(null===(e=b(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"+n+""},n.image=function(e,t,n){if(null===(e=b(this.options.sanitize,this.options.baseUrl,e)))return n;var r='":">"},n.text=function(e){return e},e}(),j=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),V=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,r=0;if(this.seen.hasOwnProperty(n)){r=this.seen[e];do{n=e+"-"+ ++r}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=r,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),R=function(){function e(e){this.options=e||t.defaults,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new j,this.slugger=new V}e.parse=function(t,n){return new e(n).parse(t)},e.parseInline=function(t,n){return new e(n).parseInline(t)};var n=e.prototype;return n.parse=function(e,t){void 0===t&&(t=!0);var n,r,o,i,a,u,s,c,l,f,d,p,v,m,g,y,b,x,w,E="",_=e.length;for(n=0;n<_;n++)if(f=e[n],!(this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[f.type])||!1===(w=this.options.extensions.renderers[f.type].call({parser:this},f))&&["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(f.type))switch(f.type){case"space":continue;case"hr":E+=this.renderer.hr();continue;case"heading":E+=this.renderer.heading(this.parseInline(f.tokens),f.depth,h(this.parseInline(f.tokens,this.textRenderer)),this.slugger);continue;case"code":E+=this.renderer.code(f.text,f.lang,f.escaped);continue;case"table":for(c="",s="",i=f.header.length,r=0;r0&&"paragraph"===g.tokens[0].type?(g.tokens[0].text=x+" "+g.tokens[0].text,g.tokens[0].tokens&&g.tokens[0].tokens.length>0&&"text"===g.tokens[0].tokens[0].type&&(g.tokens[0].tokens[0].text=x+" "+g.tokens[0].tokens[0].text)):g.tokens.unshift({type:"text",text:x}):m+=x),m+=this.parse(g.tokens,v),l+=this.renderer.listitem(m,b,y);E+=this.renderer.list(l,d,p);continue;case"html":E+=this.renderer.html(f.text);continue;case"paragraph":E+=this.renderer.paragraph(this.parseInline(f.tokens));continue;case"text":for(l=f.tokens?this.parseInline(f.tokens):f.text;n+1<_&&"text"===e[n+1].type;)l+="\n"+((f=e[++n]).tokens?this.parseInline(f.tokens):f.text);E+=t?this.renderer.paragraph(l):l;continue;default:var D='Token with "'+f.type+'" type was not found.';if(this.options.silent)return;throw new Error(D)}else E+=w||"";return E},n.parseInline=function(e,t){t=t||this.renderer;var n,r,o,i="",a=e.length;for(n=0;nAn error occurred:
"+d(e.message+"",!0)+"
";throw e}try{var s=L.lex(e,t);if(t.walkTokens){if(t.async)return Promise.all(z.walkTokens(s,t.walkTokens)).then((function(){return R.parse(s,t)}))["catch"](u);z.walkTokens(s,t.walkTokens)}return R.parse(s,t)}catch(c){u(c)}}z.options=z.setOptions=function(e){var n;return C(z.defaults,e),n=z.defaults,t.defaults=n,z},z.getDefaults=i,z.defaults=t.defaults,z.use=function(){for(var e=z.defaults.extensions||{renderers:{},childTokens:{}},t=arguments.length,n=new Array(t),r=0;rAn error occurred:
"+d(r.message+"",!0)+"
";throw r}},z.Parser=R,z.parser=R.parse,z.Renderer=P,z.TextRenderer=j,z.Lexer=L,z.lexer=L.lex,z.Tokenizer=F,z.Slugger=V,z.parse=z;var K=z.options,U=z.setOptions,Y=z.use,H=z.walkTokens,W=z.parseInline,$=z,G=R.parse,q=L.lex;t.Lexer=L,t.Parser=R,t.Renderer=P,t.Slugger=V,t.TextRenderer=j,t.Tokenizer=F,t.getDefaults=i,t.lexer=q,t.marked=z,t.options=K,t.parse=$,t.parseInline=W,t.parser=G,t.setOptions=U,t.use=Y,t.walkTokens=H},60207:function(e,t){"use strict";t.__esModule=!0,t.subscribe=t.setupHotReloading=t.sendMessage=t.sendLogEntry=void 0;var n=[];t.subscribe=function(e){return n.push(e)};t.sendMessage=function(e){};t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}}}]);
\ No newline at end of file
diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js
index 1d134a43359..d8b99de8433 100644
--- a/tgui/public/tgui-panel.bundle.js
+++ b/tgui/public/tgui-panel.bundle.js
@@ -1 +1 @@
-!function(){var e,t={75052:function(e,t){"use strict";t.__esModule=!0,t.Color=void 0;var n=1e-4,r=function(){function e(e,t,n,r){void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),void 0===r&&(r=1),this.r=e,this.g=t,this.b=n,this.a=r}return e.prototype.toString=function(){return"rgba("+(0|this.r)+", "+(0|this.g)+", "+(0|this.b)+", "+(0|this.a)+")"},e}();t.Color=r,r.fromHex=function(e){return new r(parseInt(e.substr(1,2),16),parseInt(e.substr(3,2),16),parseInt(e.substr(5,2),16))},r.lerp=function(e,t,n){return new r((t.r-e.r)*n+e.r,(t.g-e.g)*n+e.g,(t.b-e.b)*n+e.b,(t.a-e.a)*n+e.a)},r.lookup=function(e,t){void 0===t&&(t=[]);var o=t.length;if(o<2)throw new Error("Needs at least two colors!");var i=e*(o-1);if(e=.9999)return t[o-1];var a=i%1,c=0|i;return r.lerp(t[c],t[c+1],a)}},34685:function(e,t){"use strict";t.__esModule=!0,t.createUuid=void 0;t.createUuid=function(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?n:3&n|8).toString(16)}))}},43996:function(e,t,n){"use strict";t.__esModule=!0,t.Notifications=void 0;var r=n(58734),o=n(50930),i=function(e){var t=e.children;return(0,r.createVNode)(1,"div","Notifications",t,0)};t.Notifications=i;i.Item=function(e){var t=e.rightSlot,n=e.children;return(0,r.createComponentVNode)(2,o.Flex,{align:"center",className:"Notification",children:[(0,r.createComponentVNode)(2,o.Flex.Item,{className:"Notification__content",grow:1,children:n}),t&&(0,r.createComponentVNode)(2,o.Flex.Item,{className:"Notification__rightSlot",children:t})]})}},56350:function(e,t,n){"use strict";t.__esModule=!0,t.Panel=void 0;var r=n(58734),o=n(50930),i=n(33677),a=n(8585),c=n(13489),s=n(80271),u=n(43996),l=n(47319),d=n(46568);t.Panel=function(e,t){if(Byond.IS_LTE_IE10)return(0,r.createComponentVNode)(2,h);var n=(0,a.useAudio)(t),g=(0,d.useSettings)(t),p=(0,s.useGame)(t);return(0,r.createComponentVNode)(2,i.Pane,{theme:g.theme,children:(0,r.createComponentVNode)(2,o.Stack,{fill:!0,vertical:!0,children:[(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,o.Section,{fitted:!0,children:(0,r.createComponentVNode)(2,o.Stack,{mr:1,align:"center",children:[(0,r.createComponentVNode)(2,o.Stack.Item,{grow:!0,overflowX:"auto",children:(0,r.createComponentVNode)(2,c.ChatTabs)}),(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,l.PingIndicator)}),(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,o.Button,{color:"grey",selected:n.visible,icon:"music",tooltip:"Music player",tooltipPosition:"bottom-start",onClick:function(){return n.toggle()}})}),(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,o.Button,{icon:g.visible?"times":"cog",selected:g.visible,tooltip:g.visible?"Close settings":"Open settings",tooltipPosition:"bottom-start",onClick:function(){return g.toggle()}})})]})})}),n.visible&&(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,o.Section,{children:(0,r.createComponentVNode)(2,a.NowPlayingWidget)})}),g.visible&&(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,d.SettingsPanel)}),(0,r.createComponentVNode)(2,o.Stack.Item,{grow:!0,children:(0,r.createComponentVNode)(2,o.Section,{fill:!0,fitted:!0,position:"relative",children:[(0,r.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:(0,r.createComponentVNode)(2,c.ChatPanel,{lineHeight:g.lineHeight})}),(0,r.createComponentVNode)(2,u.Notifications,{children:[p.connectionLostAt&&(0,r.createComponentVNode)(2,u.Notifications.Item,{rightSlot:(0,r.createComponentVNode)(2,o.Button,{color:"white",onClick:function(){return Byond.command(".reconnect")},children:"Reconnect"}),children:"You are either AFK, experiencing lag or the connection has closed."}),p.roundRestartedAt&&(0,r.createComponentVNode)(2,u.Notifications.Item,{children:"The connection has been closed because the server is restarting. Please wait while you automatically reconnect."})]})]})})]})})};var h=function(e,t){var n=(0,d.useSettings)(t);return(0,r.createComponentVNode)(2,i.Pane,{theme:n.theme,children:(0,r.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:[(0,r.createComponentVNode)(2,o.Button,{style:{position:"fixed",top:"1em",right:"2em","z-index":1e3},selected:n.visible,onClick:function(){return n.toggle()},children:"Settings"}),n.visible&&(0,r.createComponentVNode)(2,d.SettingsPanel)||(0,r.createComponentVNode)(2,c.ChatPanel,{lineHeight:n.lineHeight})]})})}},26525:function(e,t,n){"use strict";t.__esModule=!0,t.NowPlayingWidget=void 0;var r=n(58734),o=n(5339),i=n(82544),a=n(50930),c=n(46568),s=n(36964);t.NowPlayingWidget=function(e,t){var n,u=(0,i.useSelector)(t,s.selectAudio),l=(0,i.useDispatch)(t),d=(0,c.useSettings)(t),h=null==(n=u.meta)?void 0:n.title;return(0,r.createComponentVNode)(2,a.Flex,{align:"center",children:[u.playing&&(0,r.createFragment)([(0,r.createComponentVNode)(2,a.Flex.Item,{shrink:0,mx:.5,color:"label",children:"Now playing:"}),(0,r.createComponentVNode)(2,a.Flex.Item,{mx:.5,grow:1,style:{"white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"},children:h||"Unknown Track"})],4)||(0,r.createComponentVNode)(2,a.Flex.Item,{grow:1,color:"label",children:"Nothing to play."}),u.playing&&(0,r.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,r.createComponentVNode)(2,a.Button,{tooltip:"Stop",icon:"stop",onClick:function(){return l({type:"audio/stopMusic"})}})}),(0,r.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,r.createComponentVNode)(2,a.Knob,{minValue:0,maxValue:1,value:d.adminMusicVolume,step:.0025,stepPixelSize:1,format:function(e){return(0,o.toFixed)(100*e)+"%"},onDrag:function(e,t){return d.update({adminMusicVolume:t})}})})]})}},20158:function(e,t,n){"use strict";t.__esModule=!0,t.useAudio=void 0;var r=n(82544),o=n(36964);t.useAudio=function(e){var t=(0,r.useSelector)(e,o.selectAudio),n=(0,r.useDispatch)(e);return Object.assign({},t,{toggle:function(){return n({type:"audio/toggle"})}})}},8585:function(e,t,n){"use strict";t.__esModule=!0,t.useAudio=t.audioReducer=t.audioMiddleware=t.NowPlayingWidget=void 0;var r=n(20158);t.useAudio=r.useAudio;var o=n(64508);t.audioMiddleware=o.audioMiddleware;var i=n(26525);t.NowPlayingWidget=i.NowPlayingWidget;var a=n(4612);t.audioReducer=a.audioReducer},64508:function(e,t,n){"use strict";t.__esModule=!0,t.audioMiddleware=void 0;var r=n(26882),o=["url"];t.audioMiddleware=function(e){var t=new r.AudioPlayer;return t.onPlay((function(){e.dispatch({type:"audio/playing"})})),t.onStop((function(){e.dispatch({type:"audio/stopped"})})),function(e){return function(n){var r=n.type,i=n.payload;if("audio/playMusic"===r){var a=i.url,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(i,o);return t.play(a,c),e(n)}if("audio/stopMusic"===r)return t.stop(),e(n);if("settings/update"===r||"settings/load"===r){var s=null==i?void 0:i.adminMusicVolume;return"number"==typeof s&&t.setVolume(s),e(n)}return e(n)}}}},26882:function(e,t,n){"use strict";function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&e.node.currentTime>=e.options.end&&e.stop())}),1e3))}var t=e.prototype;return t.destroy=function(){this.node&&(this.node.stop(),document.removeChild(this.node),clearInterval(this.playbackInterval))},t.play=function(e,t){void 0===t&&(t={}),this.node&&(i.log("playing",e,t),this.options=t,this.node.src=e)},t.stop=function(){if(this.node){if(this.playing)for(var e,t=r(this.onStopSubscribers);!(e=t()).done;)(0,e.value)();i.log("stopping"),this.playing=!1,this.node.src=""}},t.setVolume=function(e){this.node&&(this.volume=e,this.node.volume=e)},t.onPlay=function(e){this.node&&this.onPlaySubscribers.push(e)},t.onStop=function(e){this.node&&this.onStopSubscribers.push(e)},e}();t.AudioPlayer=a},4612:function(e,t){"use strict";t.__esModule=!0,t.audioReducer=void 0;var n={visible:!1,playing:!1,track:null};t.audioReducer=function(e,t){void 0===e&&(e=n);var r=t.type,o=t.payload;return"audio/playing"===r?Object.assign({},e,{visible:!0,playing:!0}):"audio/stopped"===r?Object.assign({},e,{visible:!1,playing:!1}):"audio/playMusic"===r?Object.assign({},e,{meta:o}):"audio/stopMusic"===r?Object.assign({},e,{visible:!1,playing:!1,meta:null}):"audio/toggle"===r?Object.assign({},e,{visible:!e.visible}):e}},36964:function(e,t){"use strict";t.__esModule=!0,t.selectAudio=void 0;t.selectAudio=function(e){return e.audio}},54059:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPageSettings=void 0;var r=n(58734),o=n(82544),i=n(50930),a=n(8719),c=n(93156),s=n(26416);t.ChatPageSettings=function(e,t){var n=(0,o.useSelector)(t,s.selectCurrentChatPage),u=(0,o.useDispatch)(t);return(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Stack,{align:"center",children:[(0,r.createComponentVNode)(2,i.Stack.Item,{grow:1,children:(0,r.createComponentVNode)(2,i.Input,{fluid:!0,value:n.name,onChange:function(e,t){return u((0,a.updateChatPage)({pageId:n.id,name:t}))}})}),(0,r.createComponentVNode)(2,i.Stack.Item,{children:(0,r.createComponentVNode)(2,i.Button,{icon:"times",color:"red",onClick:function(){return u((0,a.removeChatPage)({pageId:n.id}))},children:"Remove"})})]}),(0,r.createComponentVNode)(2,i.Divider),(0,r.createComponentVNode)(2,i.Section,{title:"Messages to display",level:2,children:[c.MESSAGE_TYPES.filter((function(e){return!e.important&&!e.admin})).map((function(e){return(0,r.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return u((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)})),(0,r.createComponentVNode)(2,i.Collapsible,{mt:1,color:"transparent",title:"Admin stuff",children:c.MESSAGE_TYPES.filter((function(e){return!e.important&&e.admin})).map((function(e){return(0,r.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return u((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)}))})]})]})}},15273:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPanel=void 0;var r=n(58734),o=n(59641),i=n(50930),a=n(54587);function c(e,t){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},c(e,t)}var s=function(e){var t,n;function s(){var t;return(t=e.call(this)||this).ref=(0,r.createRef)(),t.state={scrollTracking:!0},t.handleScrollTrackingChange=function(e){return t.setState({scrollTracking:e})},t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,c(t,n);var u=s.prototype;return u.componentDidMount=function(){a.chatRenderer.mount(this.ref.current),a.chatRenderer.events.on("scrollTrackingChanged",this.handleScrollTrackingChange),this.componentDidUpdate()},u.componentWillUnmount=function(){a.chatRenderer.events.off("scrollTrackingChanged",this.handleScrollTrackingChange)},u.componentDidUpdate=function(e){requestAnimationFrame((function(){a.chatRenderer.ensureScrollTracking()})),(!e||(0,o.shallowDiffers)(this.props,e))&&a.chatRenderer.assignStyle({width:"100%","white-space":"pre-wrap","font-size":this.props.fontSize,"line-height":this.props.lineHeight})},u.render=function(){var e=this.state.scrollTracking;return(0,r.createFragment)([(0,r.createVNode)(1,"div","Chat",null,1,null,null,this.ref),!e&&(0,r.createComponentVNode)(2,i.Button,{className:"Chat__scrollButton",icon:"arrow-down",onClick:function(){return a.chatRenderer.scrollToBottom()},children:"Scroll to bottom"})],0)},s}(r.Component);t.ChatPanel=s},3682:function(e,t,n){"use strict";t.__esModule=!0,t.ChatTabs=void 0;var r=n(58734),o=n(82544),i=n(50930),a=n(8719),c=n(26416),s=n(93164),u=function(e){var t=e.value;return(0,r.createComponentVNode)(2,i.Box,{style:{"font-size":"0.7em","border-radius":"0.25em",width:"1.7em","line-height":"1.55em","background-color":"crimson",color:"#fff"},children:Math.min(t,99)})};t.ChatTabs=function(e,t){var n=(0,o.useSelector)(t,c.selectChatPages),l=(0,o.useSelector)(t,c.selectCurrentChatPage),d=(0,o.useDispatch)(t);return(0,r.createComponentVNode)(2,i.Flex,{align:"center",children:[(0,r.createComponentVNode)(2,i.Flex.Item,{children:(0,r.createComponentVNode)(2,i.Tabs,{textAlign:"center",children:n.map((function(e){return(0,r.createComponentVNode)(2,i.Tabs.Tab,{selected:e===l,rightSlot:e.unreadCount>0&&(0,r.createComponentVNode)(2,u,{value:e.unreadCount}),onClick:function(){return d((0,a.changeChatPage)({pageId:e.id}))},children:e.name},e.id)}))})}),(0,r.createComponentVNode)(2,i.Flex.Item,{ml:1,children:(0,r.createComponentVNode)(2,i.Button,{color:"transparent",icon:"plus",onClick:function(){d((0,a.addChatPage)()),d((0,s.openChatSettings)())}})})]})}},8719:function(e,t,n){"use strict";t.__esModule=!0,t.updateMessageCount=t.updateChatPage=t.toggleAcceptedType=t.saveChatToDisk=t.removeChatPage=t.rebuildChat=t.loadChat=t.changeScrollTracking=t.changeChatPage=t.addChatPage=void 0;var r=n(82544),o=n(64577),i=(0,r.createAction)("chat/load");t.loadChat=i;var a=(0,r.createAction)("chat/rebuild");t.rebuildChat=a;var c=(0,r.createAction)("chat/updateMessageCount");t.updateMessageCount=c;var s=(0,r.createAction)("chat/addPage",(function(){return{payload:(0,o.createPage)()}}));t.addChatPage=s;var u=(0,r.createAction)("chat/changePage");t.changeChatPage=u;var l=(0,r.createAction)("chat/updatePage");t.updateChatPage=l;var d=(0,r.createAction)("chat/toggleAcceptedType");t.toggleAcceptedType=d;var h=(0,r.createAction)("chat/removePage");t.removeChatPage=h;var g=(0,r.createAction)("chat/changeScrollTracking");t.changeScrollTracking=g;var p=(0,r.createAction)("chat/saveToDisk");t.saveChatToDisk=p},93156:function(e,t){"use strict";t.__esModule=!0,t.MESSAGE_TYPE_WARNING=t.MESSAGE_TYPE_UNKNOWN=t.MESSAGE_TYPE_SYSTEM=t.MESSAGE_TYPE_RADIO=t.MESSAGE_TYPE_OOC=t.MESSAGE_TYPE_MODCHAT=t.MESSAGE_TYPE_LOCALCHAT=t.MESSAGE_TYPE_INTERNAL=t.MESSAGE_TYPE_INFO=t.MESSAGE_TYPE_EVENTCHAT=t.MESSAGE_TYPE_DEBUG=t.MESSAGE_TYPE_DEADCHAT=t.MESSAGE_TYPE_COMBAT=t.MESSAGE_TYPE_ATTACKLOG=t.MESSAGE_TYPE_ADMINPM=t.MESSAGE_TYPE_ADMINLOG=t.MESSAGE_TYPE_ADMINCHAT=t.MESSAGE_TYPES=t.MESSAGE_SAVE_INTERVAL=t.MESSAGE_PRUNE_INTERVAL=t.MAX_VISIBLE_MESSAGES=t.MAX_PERSISTED_MESSAGES=t.IMAGE_RETRY_MESSAGE_AGE=t.IMAGE_RETRY_LIMIT=t.IMAGE_RETRY_DELAY=t.COMBINE_MAX_TIME_WINDOW=t.COMBINE_MAX_MESSAGES=void 0;t.MAX_VISIBLE_MESSAGES=2500;t.MAX_PERSISTED_MESSAGES=1e3;t.MESSAGE_SAVE_INTERVAL=1e4;t.MESSAGE_PRUNE_INTERVAL=6e4;t.COMBINE_MAX_MESSAGES=5;t.COMBINE_MAX_TIME_WINDOW=5e3;t.IMAGE_RETRY_DELAY=250;t.IMAGE_RETRY_LIMIT=10;t.IMAGE_RETRY_MESSAGE_AGE=6e4;var n="unknown";t.MESSAGE_TYPE_UNKNOWN=n;t.MESSAGE_TYPE_INTERNAL="internal";var r="system";t.MESSAGE_TYPE_SYSTEM=r;var o="localchat";t.MESSAGE_TYPE_LOCALCHAT=o;var i="radio";t.MESSAGE_TYPE_RADIO=i;var a="info";t.MESSAGE_TYPE_INFO=a;var c="warning";t.MESSAGE_TYPE_WARNING=c;var s="deadchat";t.MESSAGE_TYPE_DEADCHAT=s;t.MESSAGE_TYPE_OOC="ooc";var u="adminpm";t.MESSAGE_TYPE_ADMINPM=u;var l="combat";t.MESSAGE_TYPE_COMBAT=l;var d="adminchat";t.MESSAGE_TYPE_ADMINCHAT=d;var h="modchat";t.MESSAGE_TYPE_MODCHAT=h;t.MESSAGE_TYPE_EVENTCHAT="eventchat";var g="adminlog";t.MESSAGE_TYPE_ADMINLOG=g;var p="attacklog";t.MESSAGE_TYPE_ATTACKLOG=p;var f="debug";t.MESSAGE_TYPE_DEBUG=f;var m=[{type:r,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounce",important:!0},{type:o,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote, .subtle"},{type:i,name:"Radio",description:"All departments of radio messages",selector:".alert, .minorannounce, .syndradio, .centcomradio, .aiprivradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .suppradio, .servradio, .radio, .deptradio, .binarysay, .newscaster, .resonate, .vaultradio, .ncrradio, .bosradio, .enclaveradio, .denradio, .legionradio, .rangerradio, .townradio, .respondersradio, .khansradio"},{type:a,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice, .info, .sinister, .cult, .infoplain, .announce, .hear, .smallnotice, .holoparasite"},{type:c,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .alertsyndie, .warningplain"},{type:s,name:"Deadchat",description:"All of deadchat",selector:".deadsay, .ghostalert"},{type:"ooc",name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .oocplain, .adminobserverooc"},{type:"looc",name:"LOOC",description:"Local Out of Character message. Important, always on.",selector:".filter_looc, .looc",important:!0},{type:u,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".pm, .adminhelp"},{type:l,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:n,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:d,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:h,name:"Mod Chat",description:"MSAY messages",selector:".mod_channel",admin:!0},{type:g,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:p,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:f,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",admin:!0}];t.MESSAGE_TYPES=m},13489:function(e,t,n){"use strict";t.__esModule=!0,t.chatReducer=t.chatMiddleware=t.ChatTabs=t.ChatPanel=t.ChatPageSettings=void 0;var r=n(54059);t.ChatPageSettings=r.ChatPageSettings;var o=n(15273);t.ChatPanel=o.ChatPanel;var i=n(3682);t.ChatTabs=i.ChatTabs;var a=n(4165);t.chatMiddleware=a.chatMiddleware;var c=n(83547);t.chatReducer=c.chatReducer},4165:function(e,t,n){"use strict";t.__esModule=!0,t.chatMiddleware=void 0;var r,o=(r=n(37900))&&r.__esModule?r:{"default":r},i=n(22800),a=n(93164),c=n(14173),s=n(8719),u=n(93156),l=n(64577),d=n(54587),h=n(26416);function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),N(n),d}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:T(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=undefined),d}},e}function m(e,t,n,r,o,i,a){try{var c=e[i](a),s=c.value}catch(u){return void n(u)}c.done?t(s):Promise.resolve(s).then(r,o)}function v(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){m(i,r,o,a,c,"next",e)}function c(e){m(i,r,o,a,c,"throw",e)}a(undefined)}))}}var y=["a","iframe","link","video"],b=function(){var e=v(f().mark((function t(e){var n,r,o;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=(0,h.selectChat)(e.getState()),r=Math.max(0,d.chatRenderer.messages.length-u.MAX_PERSISTED_MESSAGES),o=d.chatRenderer.messages.slice(r).map((function(e){return(0,l.serializeMessage)(e)})),i.storage.set("chat-state",n),i.storage.set("chat-messages",o);case 5:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}(),S=function(){var e=v(f().mark((function t(e){var n,r,a,c,u,h,p;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.all([i.storage.get("chat-state"),i.storage.get("chat-messages")]);case 2:if(n=t.sent,r=n[0],a=n[1],!(r&&r.version<=4)){t.next=8;break}return e.dispatch((0,s.loadChat)()),t.abrupt("return");case 8:if(a){for(c=g(a);!(u=c()).done;)(h=u.value).html&&(h.html=o["default"].sanitize(h.html,{FORBID_TAGS:y}));p=[].concat(a,[(0,l.createMessage)({type:"internal/reconnected"})]),d.chatRenderer.processBatch(p,{prepend:!0})}e.dispatch((0,s.loadChat)(r));case 10:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}();t.chatMiddleware=function(e){var t=!1,n=!1;return d.chatRenderer.events.on("batchProcessed",(function(t){n&&e.dispatch((0,s.updateMessageCount)(t))})),d.chatRenderer.events.on("scrollTrackingChanged",(function(t){e.dispatch((0,s.changeScrollTracking)(t))})),setInterval((function(){return b(e)}),u.MESSAGE_SAVE_INTERVAL),function(r){return function(o){var i=o.type,u=o.payload;if(t||(t=!0,S(e)),"chat/message"!==i){if(i===s.loadChat.type){r(o);var l=(0,h.selectCurrentChatPage)(e.getState());return d.chatRenderer.changePage(l),d.chatRenderer.onStateLoaded(),void(n=!0)}if(i!==s.changeChatPage.type&&i!==s.addChatPage.type&&i!==s.removeChatPage.type&&i!==s.toggleAcceptedType.type){if(i===s.rebuildChat.type)return d.chatRenderer.rebuildChat(),r(o);if(i!==a.updateSettings.type&&i!==a.loadSettings.type){if("roundrestart"===i)return b(e),r(o);if(i!==s.saveChatToDisk.type)return r(o);d.chatRenderer.saveToDisk()}else{r(o);var g=(0,c.selectSettings)(e.getState());d.chatRenderer.setHighlight(g.highlightText,g.highlightColor,g.matchWord,g.matchCase)}}else{r(o);var p=(0,h.selectCurrentChatPage)(e.getState());d.chatRenderer.changePage(p)}}else{var f=Array.isArray(u)?u:[u];d.chatRenderer.processBatch(f)}}}}},64577:function(e,t,n){"use strict";t.__esModule=!0,t.serializeMessage=t.isSameMessage=t.createPage=t.createMessage=t.createMainPage=t.canPageAcceptType=void 0;var r=n(34685),o=n(93156);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&(C[N.id]=Object.assign({},N,{unreadCount:N.unreadCount+A}))}return Object.assign({},e,{pageById:C})}if(r===o.addChatPage.type)return Object.assign({},e,{currentPageId:s.id,pages:[].concat(e.pages,[s.id]),pageById:Object.assign({},e.pageById,(n={},n[s.id]=s,n))});if(r===o.changeChatPage.type){var x,P=s.pageId,k=Object.assign({},e.pageById[P],{unreadCount:0});return Object.assign({},e,{currentPageId:P,pageById:Object.assign({},e.pageById,(x={},x[P]=k,x))})}if(r===o.updateChatPage.type){var O,L=s.pageId,R=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(s,a),G=Object.assign({},e.pageById[L],R);return Object.assign({},e,{pageById:Object.assign({},e.pageById,(O={},O[L]=G,O))})}if(r===o.toggleAcceptedType.type){var V,B=s.pageId,j=s.type,D=Object.assign({},e.pageById[B]);return D.acceptedTypes=Object.assign({},D.acceptedTypes),D.acceptedTypes[j]=!D.acceptedTypes[j],Object.assign({},e,{pageById:Object.assign({},e.pageById,(V={},V[B]=D,V))})}if(r===o.removeChatPage.type){var F=s.pageId,Y=Object.assign({},e,{pages:[].concat(e.pages),pageById:Object.assign({},e.pageById)});return delete Y.pageById[F],Y.pages=Y.pages.filter((function(e){return e!==F})),0===Y.pages.length&&(Y.pages.push(u.id),Y.pageById[u.id]=u,Y.currentPageId=u.id),Y.currentPageId&&Y.currentPageId!==F||(Y.currentPageId=Y.pages[0]),Y}return e}},54587:function(e,t,n){"use strict";t.__esModule=!0,t.chatRenderer=void 0;var r=n(20474),o=n(59641),i=n(17488),a=n(93156),c=n(64577),s=n(3517);function u(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=a.IMAGE_RETRY_LIMIT)d.error("failed to load an image after "+n+" attempts");else{var r=t.src;t.src=null,t.src=r+"#"+n,t.setAttribute("data-reload-n",n+1)}}),a.IMAGE_RETRY_DELAY)},m=function(e){var t=e.node,n=e.times;if(t&&n){var r=t.querySelector(".Chat__badge"),i=r||document.createElement("div");i.textContent=n,i.className=(0,o.classes)(["Chat__badge","Chat__badge--animate"]),requestAnimationFrame((function(){i.className="Chat__badge"})),r||t.appendChild(i)}},v=function(){function e(){var e=this;this.loaded=!1,this.rootNode=null,this.queue=[],this.messages=[],this.visibleMessages=[],this.page=null,this.events=new r.EventEmitter,this.scrollNode=null,this.scrollTracking=!0,this.handleScroll=function(t){var n=e.scrollNode,r=n.scrollHeight,o=n.scrollTop+n.offsetHeight,i=Math.abs(r-o)<24;i!==e.scrollTracking&&(e.scrollTracking=i,e.events.emit("scrollTrackingChanged",i),d.debug("tracking",e.scrollTracking))},this.ensureScrollTracking=function(){e.scrollTracking&&e.scrollToBottom()},setInterval((function(){return e.pruneMessages()}),a.MESSAGE_PRUNE_INTERVAL)}var t=e.prototype;return t.isReady=function(){return this.loaded&&this.rootNode&&this.page},t.mount=function(e){var t=this;this.rootNode?e.appendChild(this.rootNode):this.rootNode=e,this.scrollNode=function(e){for(var t=document.body,n=e;n&&n!==t;){if(n.scrollWidth0&&(this.processBatch(this.queue),this.queue=[])},t.assignStyle=function(e){void 0===e&&(e={});for(var t=0,n=Object.keys(e);t1}));if(0===o.length)return this.highlightRegex=null,void(this.highlightColor=null);var i=(n?"\\b":"")+"("+o.join("|")+")"+(n?"\\b":""),a="g"+(r?"":"i");this.highlightRegex=new RegExp(i,a),this.highlightColor=t},t.scrollToBottom=function(){this.scrollNode.scrollTop=this.scrollNode.scrollHeight},t.changePage=function(e){if(!this.isReady())return this.page=e,void this.tryFlushQueue();this.page=e,this.rootNode.textContent="",this.visibleMessages=[];for(var t,n,r=document.createDocumentFragment(),o=u(this.messages);!(n=o()).done;){var i=n.value;(0,c.canPageAcceptType)(e,i.type)&&(t=i.node,r.appendChild(t),this.visibleMessages.push(i))}t&&(this.rootNode.appendChild(r),t.scrollIntoView())},t.getCombinableMessage=function(e){for(var t=Date.now(),n=this.visibleMessages.length,r=n-1,o=Math.max(0,n-a.COMBINE_MAX_MESSAGES),i=r;i>=o;i--){var s=this.visibleMessages[i];if(!s.type.startsWith(a.MESSAGE_TYPE_INTERNAL)&&(0,c.isSameMessage)(s,e)&&t0){this.visibleMessages=e.slice(t);for(var n=0;n0&&(this.messages=this.messages.slice(o),d.log("pruned "+o+" stored messages"))}else d.debug("pruning delayed")},t.rebuildChat=function(){if(this.isReady()){for(var e,t=Math.max(0,this.messages.length-a.MAX_PERSISTED_MESSAGES),n=this.messages.slice(t),r=u(n);!(e=r()).done;)e.value.node=undefined;this.rootNode.textContent="",this.messages=[],this.visibleMessages=[],this.processBatch(n,{notifyListeners:!1})}},t.saveToDisk=function(){if(!Byond.IS_LTE_IE10){for(var e="",t=document.styleSheets,n=0;n\n\n\nSS13 Chat Log\n\n\n\n\n'+a+"
\n\n\n"]),d=(new Date).toISOString().substring(0,19).replace(/[-:]/g,"").replace("T","-");window.navigator.msSaveBlob(l,"ss13-chatlog-"+d+".html")}},e}();window.__chatRenderer__||(window.__chatRenderer__=new v);var y=window.__chatRenderer__;t.chatRenderer=y},3517:function(e,t){"use strict";t.__esModule=!0,t.replaceInTextNode=t.linkifyNode=t.highlightNode=void 0;var n=function(e,t){return function(n){for(var r,o,i=n.textContent,a=i.length,c=0,s=0;r=e.exec(i);){s+=1,o||(o=document.createDocumentFragment());var u=r[0],l=u.length,d=r.index;c=t+a.CONNECTION_LOST_AFTER;!r.connectionLostAt&&s&&e.dispatch(c((0,o.connectionLost)())),r.connectionLostAt&&!s&&e.dispatch(c((0,o.connectionRestored)()))}}),1e3),function(e){return function(n){var i=n.type,a=(n.payload,n.meta);return i===r.pingSuccess.type?(t=a.now,e(n)):i===o.roundRestarted.type?e(c(n)):e(n)}}}},64882:function(e,t,n){"use strict";t.__esModule=!0,t.gameReducer=void 0;var r=n(16163),o={roundId:null,roundTime:null,roundRestartedAt:null,connectionLostAt:null};t.gameReducer=function(e,t){void 0===e&&(e=o);var n=t.type,i=(t.payload,t.meta);return"roundrestart"===n?Object.assign({},e,{roundRestartedAt:i.now}):n===r.connectionLost.type?Object.assign({},e,{connectionLostAt:i.now}):n===r.connectionRestored.type?Object.assign({},e,{connectionLostAt:null}):e}},41641:function(e,t){"use strict";t.__esModule=!0,t.selectGame=void 0;t.selectGame=function(e){return e.game}},38437:function(e,t,n){"use strict";var r=n(58734);n(54859),n(86177);var o,i,a=n(15645),c=n(82544),s=(n(60207),n(46725)),u=n(74489),l=n(1809),d=n(82265),h=n(8585),g=n(13489),p=n(80271),f=n(53923),m=n(47319),v=n(46568),y=n(97078);a.perf.mark("inception",null==(o=window.performance)||null==(i=o.timing)?void 0:i.navigationStart),a.perf.mark("init");var b=(0,d.configureStore)({reducer:(0,c.combineReducers)({audio:h.audioReducer,chat:g.chatReducer,game:p.gameReducer,ping:m.pingReducer,settings:v.settingsReducer}),middleware:{pre:[g.chatMiddleware,m.pingMiddleware,y.telemetryMiddleware,v.settingsMiddleware,h.audioMiddleware,p.gameMiddleware]}}),S=(0,l.createRenderer)((function(){var e=n(56350).Panel;return(0,r.createComponentVNode)(2,d.StoreProvider,{store:b,children:(0,r.createComponentVNode)(2,e)})}));!function _(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)({ignoreWindowFocus:!0}),(0,f.setupPanelFocusHacks)(),(0,u.captureExternalLinks)(),b.subscribe(S),window.update=function(e){return b.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}Byond.winset("output",{"is-visible":!1}),Byond.winset("browseroutput",{"is-visible":!0,"is-disabled":!1,pos:"0x0",size:"0x0"}),Byond.winget("output").then((function(e){Byond.winset("browseroutput",{size:e.size})}))}else document.addEventListener("DOMContentLoaded",_)}()},53923:function(e,t,n){"use strict";t.__esModule=!0,t.setupPanelFocusHacks=void 0;var r=n(13212),o=n(46725),i=n(60747),a=function(){return setImmediate((function(){return(0,i.focusMap)()}))};t.setupPanelFocusHacks=function(){var e=!1,t=null;window.addEventListener("focusin",(function(t){e=(0,o.canStealFocus)(t.target)})),window.addEventListener("mousedown",(function(e){t=[e.screenX,e.screenY]})),window.addEventListener("mouseup",(function(n){if(t){var o=[n.screenX,n.screenY];(0,r.vecLength)((0,r.vecSubtract)(o,t))>=10&&(e=!0)}e||a()})),o.globalEvents.on("keydown",(function(e){e.isModifierKey()||a()}))}},55622:function(e,t,n){"use strict";t.__esModule=!0,t.PingIndicator=void 0;var r=n(58734),o=n(75052),i=n(5339),a=n(82544),c=n(50930),s=n(80482);t.PingIndicator=function(e,t){var n=(0,a.useSelector)(t,s.selectPing),u=o.Color.lookup(n.networkQuality,[new o.Color(220,40,40),new o.Color(220,200,40),new o.Color(60,220,40)]),l=n.roundtrip?(0,i.toFixed)(n.roundtrip):"--";return(0,r.createVNode)(1,"div","Ping",[(0,r.createComponentVNode)(2,c.Box,{className:"Ping__indicator",backgroundColor:u}),l],0)}},82046:function(e,t,n){"use strict";t.__esModule=!0,t.pingSuccess=t.pingReply=t.pingFail=void 0;var r=n(82544),o=(0,r.createAction)("ping/success",(function(e){var t=Date.now(),n=.5*(t-e.sentAt);return{payload:{lastId:e.id,roundtrip:n},meta:{now:t}}}));t.pingSuccess=o;var i=(0,r.createAction)("ping/fail");t.pingFail=i;var a=(0,r.createAction)("ping/reply");t.pingReply=a},67300:function(e,t){"use strict";t.__esModule=!0,t.PING_TIMEOUT=t.PING_ROUNDTRIP_WORST=t.PING_ROUNDTRIP_BEST=t.PING_QUEUE_SIZE=t.PING_MAX_FAILS=t.PING_INTERVAL=void 0;t.PING_INTERVAL=2500;t.PING_TIMEOUT=2e3;t.PING_MAX_FAILS=3;t.PING_QUEUE_SIZE=8;t.PING_ROUNDTRIP_BEST=50;t.PING_ROUNDTRIP_WORST=200},47319:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=t.pingMiddleware=t.PingIndicator=void 0;var r=n(52348);t.pingMiddleware=r.pingMiddleware;var o=n(55622);t.PingIndicator=o.PingIndicator;var i=n(28975);t.pingReducer=i.pingReducer},52348:function(e,t,n){"use strict";t.__esModule=!0,t.pingMiddleware=void 0;var r=n(54777),o=n(82046),i=n(67300);t.pingMiddleware=function(e){var t,n=!1,a=0,c=[],s=function(){for(var t=0;ti.PING_TIMEOUT&&(c[t]=null,e.dispatch((0,o.pingFail)()))}var s={index:a,sentAt:Date.now()};c[a]=s,(0,r.sendMessage)({type:"ping",payload:{index:a}}),a=(a+1)%i.PING_QUEUE_SIZE};return function(e){return function(r){var a=r.type,u=r.payload;if(n||(n=!0,t=setInterval(s,i.PING_INTERVAL),s()),"roundrestart"===a)return clearInterval(t),e(r);if("pingReply"===a){var l=u.index,d=c[l];if(!d)return;return c[l]=null,e((0,o.pingSuccess)(d))}return e(r)}}}},28975:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=void 0;var r=n(5339),o=n(82046),i=n(67300);t.pingReducer=function(e,t){void 0===e&&(e={});var n=t.type,a=t.payload;if(n===o.pingSuccess.type){var c=a.roundtrip,s=e.roundtripAvg||c,u=Math.round(.4*s+.6*c);return{roundtrip:c,roundtripAvg:u,failCount:0,networkQuality:1-(0,r.scale)(u,i.PING_ROUNDTRIP_BEST,i.PING_ROUNDTRIP_WORST)}}if(n===o.pingFail.type){var l=e.failCount,d=void 0===l?0:l,h=(0,r.clamp01)(e.networkQuality-d/i.PING_MAX_FAILS),g=Object.assign({},e,{failCount:d+1,networkQuality:h});return d>i.PING_MAX_FAILS&&(g.roundtrip=undefined,g.roundtripAvg=undefined),g}return e}},80482:function(e,t){"use strict";t.__esModule=!0,t.selectPing=void 0;t.selectPing=function(e){return e.ping}},45679:function(e,t,n){"use strict";t.__esModule=!0,t.SettingsPanel=t.SettingsGeneral=void 0;var r=n(58734),o=n(5339),i=n(54777),a=n(82544),c=n(50930),s=n(13489),u=n(8719),l=n(32353),d=n(93164),h=n(32112),g=n(14173);t.SettingsPanel=function(e,t){var n=(0,a.useSelector)(t,g.selectActiveTab),o=(0,a.useDispatch)(t);return(0,r.createComponentVNode)(2,c.Stack,{fill:!0,children:[(0,r.createComponentVNode)(2,c.Stack.Item,{children:(0,r.createComponentVNode)(2,c.Section,{fitted:!0,fill:!0,minHeight:"8em",children:(0,r.createComponentVNode)(2,c.Tabs,{vertical:!0,children:h.SETTINGS_TABS.map((function(e){return(0,r.createComponentVNode)(2,c.Tabs.Tab,{selected:e.id===n,onClick:function(){return o((0,d.changeSettingsTab)({tabId:e.id}))},children:e.name},e.id)}))})})}),(0,r.createComponentVNode)(2,c.Stack.Item,{grow:1,basis:0,children:["general"===n&&(0,r.createComponentVNode)(2,p),"chatPage"===n&&(0,r.createComponentVNode)(2,s.ChatPageSettings)]})]})};var p=function(e,t){var n=(0,a.useSelector)(t,g.selectSettings),s=n.theme,p=n.fontFamily,f=n.fontSize,m=n.lineHeight,v=n.highlightText,y=n.highlightColor,b=n.matchWord,S=n.matchCase,_=(0,a.useDispatch)(t),E=(0,i.useLocalState)(t,"freeFont",!1),C=E[0],w=E[1];return(0,r.createComponentVNode)(2,c.Section,{children:[(0,r.createComponentVNode)(2,c.LabeledList,{children:[(0,r.createComponentVNode)(2,c.LabeledList.Item,{label:"Theme",children:(0,r.createComponentVNode)(2,c.Dropdown,{selected:s,options:l.THEMES,onSelected:function(e){return _((0,d.updateSettings)({theme:e}))}})}),(0,r.createComponentVNode)(2,c.LabeledList.Item,{label:"Font style",children:(0,r.createComponentVNode)(2,c.Stack,{inline:!0,align:"baseline",children:[(0,r.createComponentVNode)(2,c.Stack.Item,{children:!C&&(0,r.createComponentVNode)(2,c.Dropdown,{selected:p,options:h.FONTS,onSelected:function(e){return _((0,d.updateSettings)({fontFamily:e}))}})||(0,r.createComponentVNode)(2,c.Input,{value:p,onChange:function(e,t){return _((0,d.updateSettings)({fontFamily:t}))}})}),(0,r.createComponentVNode)(2,c.Stack.Item,{children:(0,r.createComponentVNode)(2,c.Button,{content:"Custom font",icon:C?"lock-open":"lock",color:C?"good":"bad",ml:1,onClick:function(){w(!C)}})})]})}),(0,r.createComponentVNode)(2,c.LabeledList.Item,{label:"Font size",children:(0,r.createComponentVNode)(2,c.NumberInput,{width:"4em",step:1,stepPixelSize:10,minValue:8,maxValue:32,value:f,unit:"px",format:function(e){return(0,o.toFixed)(e)},onChange:function(e,t){return _((0,d.updateSettings)({fontSize:t}))}})}),(0,r.createComponentVNode)(2,c.LabeledList.Item,{label:"Line height",children:(0,r.createComponentVNode)(2,c.NumberInput,{width:"4em",step:.01,stepPixelSize:2,minValue:.8,maxValue:5,value:m,format:function(e){return(0,o.toFixed)(e,2)},onDrag:function(e,t){return _((0,d.updateSettings)({lineHeight:t}))}})})]}),(0,r.createComponentVNode)(2,c.Divider),(0,r.createComponentVNode)(2,c.Box,{children:[(0,r.createComponentVNode)(2,c.Flex,{mb:1,color:"label",align:"baseline",children:[(0,r.createComponentVNode)(2,c.Flex.Item,{grow:1,children:"Highlight text (comma separated):"}),(0,r.createComponentVNode)(2,c.Flex.Item,{shrink:0,children:[(0,r.createComponentVNode)(2,c.ColorBox,{mr:1,color:y}),(0,r.createComponentVNode)(2,c.Input,{width:"5em",monospace:!0,placeholder:"#ffffff",value:y,onInput:function(e,t){return _((0,d.updateSettings)({highlightColor:t}))}})]})]}),(0,r.createComponentVNode)(2,c.TextArea,{height:"3em",value:v,onChange:function(e,t){return _((0,d.updateSettings)({highlightText:t}))}}),(0,r.createComponentVNode)(2,c.Button.Checkbox,{checked:b,tooltipPosition:"bottom-start",tooltip:"Not compatible with punctuation.",onClick:function(){return _((0,d.updateSettings)({matchWord:!b}))},children:"Match word"}),(0,r.createComponentVNode)(2,c.Button.Checkbox,{checked:S,onClick:function(){return _((0,d.updateSettings)({matchCase:!S}))},children:"Match case"})]}),(0,r.createComponentVNode)(2,c.Divider),(0,r.createComponentVNode)(2,c.Box,{children:[(0,r.createComponentVNode)(2,c.Button,{icon:"check",onClick:function(){return _((0,u.rebuildChat)())},children:"Apply now"}),(0,r.createComponentVNode)(2,c.Box,{inline:!0,fontSize:"0.9em",ml:1,color:"label",children:"Can freeze the chat for a while."})]}),(0,r.createComponentVNode)(2,c.Divider),(0,r.createComponentVNode)(2,c.Button,{icon:"save",onClick:function(){return _((0,u.saveChatToDisk)())},children:"Save chat log"})]})};t.SettingsGeneral=p},93164:function(e,t,n){"use strict";t.__esModule=!0,t.updateSettings=t.toggleSettings=t.openChatSettings=t.loadSettings=t.changeSettingsTab=void 0;var r=n(82544),o=(0,r.createAction)("settings/update");t.updateSettings=o;var i=(0,r.createAction)("settings/load");t.loadSettings=i;var a=(0,r.createAction)("settings/changeTab");t.changeSettingsTab=a;var c=(0,r.createAction)("settings/toggle");t.toggleSettings=c;var s=(0,r.createAction)("settings/openChatTab");t.openChatSettings=s},32112:function(e,t){"use strict";t.__esModule=!0,t.SETTINGS_TABS=t.FONTS_DISABLED=t.FONTS=void 0;t.SETTINGS_TABS=[{id:"general",name:"General"},{id:"chatPage",name:"Chat Tabs"}];var n="Default";t.FONTS_DISABLED=n;var r=[n,"Verdana","Arial","Arial Black","Comic Sans MS","Impact","Lucida Sans Unicode","Tahoma","Trebuchet MS","Courier New","Lucida Console"];t.FONTS=r},25417:function(e,t,n){"use strict";t.__esModule=!0,t.useSettings=void 0;var r=n(82544),o=n(93164),i=n(14173);t.useSettings=function(e){var t=(0,r.useSelector)(e,i.selectSettings),n=(0,r.useDispatch)(e);return Object.assign({},t,{visible:t.view.visible,toggle:function(){return n((0,o.toggleSettings)())},update:function(e){return n((0,o.updateSettings)(e))}})}},46568:function(e,t,n){"use strict";t.__esModule=!0,t.useSettings=t.settingsReducer=t.settingsMiddleware=t.SettingsPanel=void 0;var r=n(25417);t.useSettings=r.useSettings;var o=n(41725);t.settingsMiddleware=o.settingsMiddleware;var i=n(7907);t.settingsReducer=i.settingsReducer;var a=n(45679);t.SettingsPanel=a.SettingsPanel},41725:function(e,t,n){"use strict";t.__esModule=!0,t.settingsMiddleware=void 0;var r=n(22800),o=n(32353),i=n(93164),a=n(14173),c=n(32112);t.settingsMiddleware=function(e){var t=!1;return function(n){return function(s){var u,l,d=s.type,h=s.payload;if(t||(t=!0,r.storage.get("panel-settings").then((function(t){e.dispatch((0,i.loadSettings)(t))}))),d===i.updateSettings.type||d===i.loadSettings.type){var g=null==h?void 0:h.theme;g&&(0,o.setClientTheme)(g),n(s);var p=(0,a.selectSettings)(e.getState());return l=p.fontSize,document.documentElement.style.setProperty("font-size",l+"px"),document.body.style.setProperty("font-size",l+"px"),(u=p.fontFamily)===c.FONTS_DISABLED&&(u=null),document.documentElement.style.setProperty("font-family",u),document.body.style.setProperty("font-family",u),void r.storage.set("panel-settings",p)}return n(s)}}}},7907:function(e,t,n){"use strict";t.__esModule=!0,t.settingsReducer=void 0;var r=n(93164),o=n(32112),i={version:1,fontSize:13,fontFamily:o.FONTS[0],lineHeight:1.2,theme:"dark",adminMusicVolume:.5,highlightText:"",highlightColor:"#ffdd44",matchWord:!1,matchCase:!1,view:{visible:!1,activeTab:o.SETTINGS_TABS[0].id}};t.settingsReducer=function(e,t){void 0===e&&(e=i);var n=t.type,o=t.payload;if(n===r.updateSettings.type)return Object.assign({},e,o);if(n===r.loadSettings.type)return null!=o&&o.version?(delete o.view,Object.assign({},e,o)):e;if(n===r.toggleSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!e.view.visible})});if(n===r.openChatSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!0,activeTab:"chatPage"})});if(n===r.changeSettingsTab.type){var a=o.tabId;return Object.assign({},e,{view:Object.assign({},e.view,{activeTab:a})})}return e}},14173:function(e,t){"use strict";t.__esModule=!0,t.selectSettings=t.selectActiveTab=void 0;t.selectSettings=function(e){return e.settings};t.selectActiveTab=function(e){return e.settings.view.activeTab}},97078:function(e,t,n){"use strict";t.__esModule=!0,t.telemetryMiddleware=void 0;var r=n(54777),o=n(22800);function i(){i=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(I){u=function(e,t,n){return e[t]=n}}function l(e,t,n,o){var i=t&&t.prototype instanceof g?t:g,a=Object.create(i.prototype),c=new A(o||[]);return r(a,"_invoke",{value:E(e,n,c)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(I){return{type:"throw",arg:I}}}e.wrap=l;var h={};function g(){}function p(){}function f(){}var m={};u(m,a,(function(){return this}));var v=Object.getPrototypeOf,y=v&&v(v(T([])));y&&y!==t&&n.call(y,a)&&(m=y);var b=f.prototype=g.prototype=Object.create(m);function S(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function o(r,i,a,c){var s=d(e[r],e,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){o("next",e,a,c)}),(function(e){o("throw",e,a,c)})):t.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return o("throw",e,a,c)}))}c(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function E(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return M()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=C(a,n);if(c){if(c===h)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=d(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===h)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function C(e,t){var n=t.method,r=e.iterator[n];if(undefined===r)return t.delegate=null,"throw"===n&&e.iterator["return"]&&(t.method="return",t.arg=undefined,C(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),h;var o=d(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,h;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=undefined),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function N(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function T(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),N(n),h}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:T(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=undefined),h}},e}function a(e,t,n,r,o,i,a){try{var c=e[i](a),s=c.value}catch(u){return void n(u)}c.done?t(s):Promise.resolve(s).then(r,o)}var c=(0,n(17488).createLogger)("telemetry");t.telemetryMiddleware=function(e){var t,n;return function(s){return function(u){var l,d=u.type,h=u.payload;if("telemetry/request"!==d)return"backend/update"===d?(s(u),void(l=i().mark((function f(){var r,a,s,u;return i().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(a=null==h||null==(r=h.config)?void 0:r.client){i.next=4;break}return c.error("backend/update payload is missing client data!"),i.abrupt("return");case 4:if(t){i.next=13;break}return i.next=7,o.storage.get("telemetry");case 7:if(i.t0=i.sent,i.t0){i.next=10;break}i.t0={};case 10:(t=i.t0).connections||(t.connections=[]),c.debug("retrieved telemetry from storage",t);case 13:s=!1,t.connections.find((function(e){return n=a,(t=e).ckey===n.ckey&&t.address===n.address&&t.computer_id===n.computer_id;var t,n}))||(s=!0,t.connections.unshift(a),t.connections.length>10&&t.connections.pop()),s&&(c.debug("saving telemetry to storage",t),o.storage.set("telemetry",t)),n&&(u=n,n=null,e.dispatch({type:"telemetry/request",payload:u}));case 18:case"end":return i.stop()}}),f)})),function(){var e=this,t=arguments;return new Promise((function(n,r){var o=l.apply(e,t);function i(e){a(o,n,r,i,c,"next",e)}function c(e){a(o,n,r,i,c,"throw",e)}i(undefined)}))})()):s(u);if(!t)return c.debug("deferred"),void(n=h);c.debug("sending");var g=(null==h?void 0:h.limits)||{},p=t.connections.slice(0,g.connections);(0,r.sendMessage)({type:"telemetry",payload:{connections:p}})}}}},32353:function(e,t){"use strict";t.__esModule=!0,t.setClientTheme=t.THEMES=void 0;t.THEMES=["light","dark"];var n="#202020",r="#171717",o="#a4bad6",i=null;t.setClientTheme=function(e){if(clearInterval(i),Byond.command(".output statbrowser:set_theme "+e),i=setTimeout((function(){Byond.command(".output statbrowser:set_theme "+e)}),1500),"light"===e)return Byond.winset({"infowindow.background-color":"none","infowindow.text-color":"#000000","info.background-color":"none","info.text-color":"#000000","browseroutput.background-color":"none","browseroutput.text-color":"#000000","outputwindow.background-color":"none","outputwindow.text-color":"#000000","mainwindow.background-color":"none","split.background-color":"none","changelog.background-color":"none","changelog.text-color":"#000000","rules.background-color":"none","rules.text-color":"#000000","wiki.background-color":"none","wiki.text-color":"#000000","forum.background-color":"none","forum.text-color":"#000000","github.background-color":"none","github.text-color":"#000000","report-issue.background-color":"none","report-issue.text-color":"#000000","output.background-color":"none","output.text-color":"#000000","statwindow.background-color":"none","statwindow.text-color":"#000000","stat.background-color":"#FFFFFF","stat.tab-background-color":"none","stat.text-color":"#000000","stat.tab-text-color":"#000000","stat.prefix-color":"#000000","stat.suffix-color":"#000000","saybutton.background-color":"none","saybutton.text-color":"#000000","oocbutton.background-color":"none","oocbutton.text-color":"#000000","mebutton.background-color":"none","mebutton.text-color":"#000000","asset_cache_browser.background-color":"none","asset_cache_browser.text-color":"#000000","tooltip.background-color":"none","tooltip.text-color":"#000000"});"dark"===e&&Byond.winset({"infowindow.background-color":n,"infowindow.text-color":o,"info.background-color":n,"info.text-color":o,"browseroutput.background-color":n,"browseroutput.text-color":o,"outputwindow.background-color":n,"outputwindow.text-color":o,"mainwindow.background-color":n,"split.background-color":n,"changelog.background-color":"#494949","changelog.text-color":o,"rules.background-color":"#494949","rules.text-color":o,"wiki.background-color":"#494949","wiki.text-color":o,"forum.background-color":"#494949","forum.text-color":o,"github.background-color":"#3a3a3a","github.text-color":o,"report-issue.background-color":"#492020","report-issue.text-color":o,"output.background-color":r,"output.text-color":o,"statwindow.background-color":r,"statwindow.text-color":o,"stat.background-color":r,"stat.tab-background-color":n,"stat.text-color":o,"stat.tab-text-color":o,"stat.prefix-color":o,"stat.suffix-color":o,"saybutton.background-color":n,"saybutton.text-color":o,"oocbutton.background-color":n,"oocbutton.text-color":o,"mebutton.background-color":n,"mebutton.text-color":o,"asset_cache_browser.background-color":n,"asset_cache_browser.text-color":o,"tooltip.background-color":n,"tooltip.text-color":o})}},54859:function(){},86177:function(){}},n={};function r(e){var o=n[e];if(o!==undefined)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.m=t,e=[],r.O=function(t,n,o,i){if(!n){var a=Infinity;for(l=0;l=i)&&Object.keys(r.O).every((function(e){return r.O[e](n[s])}))?n.splice(s--,1):(c=!1,i0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[n,o,i]},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={"tgui-panel":0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,i,a=n[0],c=n[1],s=n[2],u=0;if(a.some((function(t){return 0!==e[t]}))){for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(s)var l=s(r)}for(t&&t(n);u=.9999)return t[o-1];var a=i%1,c=0|i;return r.lerp(t[c],t[c+1],a)}},34685:function(e,t){"use strict";t.__esModule=!0,t.createUuid=void 0;t.createUuid=function(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===t?n:3&n|8).toString(16)}))}},43996:function(e,t,n){"use strict";t.__esModule=!0,t.Notifications=void 0;var r=n(58734),o=n(50930),i=function(e){var t=e.children;return(0,r.createVNode)(1,"div","Notifications",t,0)};t.Notifications=i;i.Item=function(e){var t=e.rightSlot,n=e.children;return(0,r.createComponentVNode)(2,o.Flex,{align:"center",className:"Notification",children:[(0,r.createComponentVNode)(2,o.Flex.Item,{className:"Notification__content",grow:1,children:n}),t&&(0,r.createComponentVNode)(2,o.Flex.Item,{className:"Notification__rightSlot",children:t})]})}},56350:function(e,t,n){"use strict";t.__esModule=!0,t.Panel=void 0;var r=n(58734),o=n(50930),i=n(33677),a=n(8585),c=n(13489),s=n(80271),u=n(43996),l=n(47319),d=n(46568);t.Panel=function(e,t){if(Byond.IS_LTE_IE10)return(0,r.createComponentVNode)(2,h);var n=(0,a.useAudio)(t),g=(0,d.useSettings)(t),p=(0,s.useGame)(t);return(0,r.createComponentVNode)(2,i.Pane,{theme:g.theme,children:(0,r.createComponentVNode)(2,o.Stack,{fill:!0,vertical:!0,children:[(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,o.Section,{fitted:!0,children:(0,r.createComponentVNode)(2,o.Stack,{mr:1,align:"center",children:[(0,r.createComponentVNode)(2,o.Stack.Item,{grow:!0,overflowX:"auto",children:(0,r.createComponentVNode)(2,c.ChatTabs)}),(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,l.PingIndicator)}),(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,o.Button,{color:"grey",selected:n.visible,icon:"music",tooltip:"Music player",tooltipPosition:"bottom-start",onClick:function(){return n.toggle()}})}),(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,o.Button,{icon:g.visible?"times":"cog",selected:g.visible,tooltip:g.visible?"Close settings":"Open settings",tooltipPosition:"bottom-start",onClick:function(){return g.toggle()}})})]})})}),n.visible&&(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,o.Section,{children:(0,r.createComponentVNode)(2,a.NowPlayingWidget)})}),g.visible&&(0,r.createComponentVNode)(2,o.Stack.Item,{children:(0,r.createComponentVNode)(2,d.SettingsPanel)}),(0,r.createComponentVNode)(2,o.Stack.Item,{grow:!0,children:(0,r.createComponentVNode)(2,o.Section,{fill:!0,fitted:!0,position:"relative",children:[(0,r.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:(0,r.createComponentVNode)(2,c.ChatPanel,{lineHeight:g.lineHeight})}),(0,r.createComponentVNode)(2,u.Notifications,{children:[p.connectionLostAt&&(0,r.createComponentVNode)(2,u.Notifications.Item,{rightSlot:(0,r.createComponentVNode)(2,o.Button,{color:"white",onClick:function(){return Byond.command(".reconnect")},children:"Reconnect"}),children:"You are either AFK, experiencing lag or the connection has closed."}),p.roundRestartedAt&&(0,r.createComponentVNode)(2,u.Notifications.Item,{children:"The connection has been closed because the server is restarting. Please wait while you automatically reconnect."})]})]})})]})})};var h=function(e,t){var n=(0,d.useSettings)(t);return(0,r.createComponentVNode)(2,i.Pane,{theme:n.theme,children:(0,r.createComponentVNode)(2,i.Pane.Content,{scrollable:!0,children:[(0,r.createComponentVNode)(2,o.Button,{style:{position:"fixed",top:"1em",right:"2em","z-index":1e3},selected:n.visible,onClick:function(){return n.toggle()},children:"Settings"}),n.visible&&(0,r.createComponentVNode)(2,d.SettingsPanel)||(0,r.createComponentVNode)(2,c.ChatPanel,{lineHeight:n.lineHeight})]})})}},26525:function(e,t,n){"use strict";t.__esModule=!0,t.NowPlayingWidget=void 0;var r=n(58734),o=n(5339),i=n(82544),a=n(50930),c=n(46568),s=n(36964);t.NowPlayingWidget=function(e,t){var n,u=(0,i.useSelector)(t,s.selectAudio),l=(0,i.useDispatch)(t),d=(0,c.useSettings)(t),h=null==(n=u.meta)?void 0:n.title;return(0,r.createComponentVNode)(2,a.Flex,{align:"center",children:[u.playing&&(0,r.createFragment)([(0,r.createComponentVNode)(2,a.Flex.Item,{shrink:0,mx:.5,color:"label",children:"Now playing:"}),(0,r.createComponentVNode)(2,a.Flex.Item,{mx:.5,grow:1,style:{"white-space":"nowrap",overflow:"hidden","text-overflow":"ellipsis"},children:h||"Unknown Track"})],4)||(0,r.createComponentVNode)(2,a.Flex.Item,{grow:1,color:"label",children:"Nothing to play."}),u.playing&&(0,r.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,r.createComponentVNode)(2,a.Button,{tooltip:"Stop",icon:"stop",onClick:function(){return l({type:"audio/stopMusic"})}})}),(0,r.createComponentVNode)(2,a.Flex.Item,{mx:.5,fontSize:"0.9em",children:(0,r.createComponentVNode)(2,a.Knob,{minValue:0,maxValue:1,value:d.adminMusicVolume,step:.0025,stepPixelSize:1,format:function(e){return(0,o.toFixed)(100*e)+"%"},onDrag:function(e,t){return d.update({adminMusicVolume:t})}})})]})}},20158:function(e,t,n){"use strict";t.__esModule=!0,t.useAudio=void 0;var r=n(82544),o=n(36964);t.useAudio=function(e){var t=(0,r.useSelector)(e,o.selectAudio),n=(0,r.useDispatch)(e);return Object.assign({},t,{toggle:function(){return n({type:"audio/toggle"})}})}},8585:function(e,t,n){"use strict";t.__esModule=!0,t.useAudio=t.audioReducer=t.audioMiddleware=t.NowPlayingWidget=void 0;var r=n(20158);t.useAudio=r.useAudio;var o=n(64508);t.audioMiddleware=o.audioMiddleware;var i=n(26525);t.NowPlayingWidget=i.NowPlayingWidget;var a=n(4612);t.audioReducer=a.audioReducer},64508:function(e,t,n){"use strict";t.__esModule=!0,t.audioMiddleware=void 0;var r=n(26882),o=["url"];t.audioMiddleware=function(e){var t=new r.AudioPlayer;return t.onPlay((function(){e.dispatch({type:"audio/playing"})})),t.onStop((function(){e.dispatch({type:"audio/stopped"})})),function(e){return function(n){var r=n.type,i=n.payload;if("audio/playMusic"===r){var a=i.url,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(i,o);return t.play(a,c),e(n)}if("audio/stopMusic"===r)return t.stop(),e(n);if("settings/update"===r||"settings/load"===r){var s=null==i?void 0:i.adminMusicVolume;return"number"==typeof s&&t.setVolume(s),e(n)}return e(n)}}}},26882:function(e,t,n){"use strict";function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&e.node.currentTime>=e.options.end&&e.stop())}),1e3))}var t=e.prototype;return t.destroy=function(){this.node&&(this.node.stop(),document.removeChild(this.node),clearInterval(this.playbackInterval))},t.play=function(e,t){void 0===t&&(t={}),this.node&&(i.log("playing",e,t),this.options=t,this.node.src=e)},t.stop=function(){if(this.node){if(this.playing)for(var e,t=r(this.onStopSubscribers);!(e=t()).done;)(0,e.value)();i.log("stopping"),this.playing=!1,this.node.src=""}},t.setVolume=function(e){this.node&&(this.volume=e,this.node.volume=e)},t.onPlay=function(e){this.node&&this.onPlaySubscribers.push(e)},t.onStop=function(e){this.node&&this.onStopSubscribers.push(e)},e}();t.AudioPlayer=a},4612:function(e,t){"use strict";t.__esModule=!0,t.audioReducer=void 0;var n={visible:!1,playing:!1,track:null};t.audioReducer=function(e,t){void 0===e&&(e=n);var r=t.type,o=t.payload;return"audio/playing"===r?Object.assign({},e,{visible:!0,playing:!0}):"audio/stopped"===r?Object.assign({},e,{visible:!1,playing:!1}):"audio/playMusic"===r?Object.assign({},e,{meta:o}):"audio/stopMusic"===r?Object.assign({},e,{visible:!1,playing:!1,meta:null}):"audio/toggle"===r?Object.assign({},e,{visible:!e.visible}):e}},36964:function(e,t){"use strict";t.__esModule=!0,t.selectAudio=void 0;t.selectAudio=function(e){return e.audio}},54059:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPageSettings=void 0;var r=n(58734),o=n(82544),i=n(50930),a=n(8719),c=n(93156),s=n(26416);t.ChatPageSettings=function(e,t){var n=(0,o.useSelector)(t,s.selectCurrentChatPage),u=(0,o.useDispatch)(t);return(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Stack,{align:"center",children:[(0,r.createComponentVNode)(2,i.Stack.Item,{grow:1,children:(0,r.createComponentVNode)(2,i.Input,{fluid:!0,value:n.name,onChange:function(e,t){return u((0,a.updateChatPage)({pageId:n.id,name:t}))}})}),(0,r.createComponentVNode)(2,i.Stack.Item,{children:(0,r.createComponentVNode)(2,i.Button,{icon:"times",color:"red",onClick:function(){return u((0,a.removeChatPage)({pageId:n.id}))},children:"Remove"})})]}),(0,r.createComponentVNode)(2,i.Divider),(0,r.createComponentVNode)(2,i.Section,{title:"Messages to display",level:2,children:[c.MESSAGE_TYPES.filter((function(e){return!e.important&&!e.admin})).map((function(e){return(0,r.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return u((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)})),(0,r.createComponentVNode)(2,i.Collapsible,{mt:1,color:"transparent",title:"Admin stuff",children:c.MESSAGE_TYPES.filter((function(e){return!e.important&&e.admin})).map((function(e){return(0,r.createComponentVNode)(2,i.Button.Checkbox,{checked:n.acceptedTypes[e.type],onClick:function(){return u((0,a.toggleAcceptedType)({pageId:n.id,type:e.type}))},children:e.name},e.type)}))})]})]})}},15273:function(e,t,n){"use strict";t.__esModule=!0,t.ChatPanel=void 0;var r=n(58734),o=n(59641),i=n(50930),a=n(54587);function c(e,t){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},c(e,t)}var s=function(e){var t,n;function s(){var t;return(t=e.call(this)||this).ref=(0,r.createRef)(),t.state={scrollTracking:!0},t.handleScrollTrackingChange=function(e){return t.setState({scrollTracking:e})},t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,c(t,n);var u=s.prototype;return u.componentDidMount=function(){a.chatRenderer.mount(this.ref.current),a.chatRenderer.events.on("scrollTrackingChanged",this.handleScrollTrackingChange),this.componentDidUpdate()},u.componentWillUnmount=function(){a.chatRenderer.events.off("scrollTrackingChanged",this.handleScrollTrackingChange)},u.componentDidUpdate=function(e){requestAnimationFrame((function(){a.chatRenderer.ensureScrollTracking()})),(!e||(0,o.shallowDiffers)(this.props,e))&&a.chatRenderer.assignStyle({width:"100%","white-space":"pre-wrap","font-size":this.props.fontSize,"line-height":this.props.lineHeight})},u.render=function(){var e=this.state.scrollTracking;return(0,r.createFragment)([(0,r.createVNode)(1,"div","Chat",null,1,null,null,this.ref),!e&&(0,r.createComponentVNode)(2,i.Button,{className:"Chat__scrollButton",icon:"arrow-down",onClick:function(){return a.chatRenderer.scrollToBottom()},children:"Scroll to bottom"})],0)},s}(r.Component);t.ChatPanel=s},3682:function(e,t,n){"use strict";t.__esModule=!0,t.ChatTabs=void 0;var r=n(58734),o=n(82544),i=n(50930),a=n(8719),c=n(26416),s=n(93164),u=function(e){var t=e.value;return(0,r.createComponentVNode)(2,i.Box,{style:{"font-size":"0.7em","border-radius":"0.25em",width:"1.7em","line-height":"1.55em","background-color":"crimson",color:"#fff"},children:Math.min(t,99)})};t.ChatTabs=function(e,t){var n=(0,o.useSelector)(t,c.selectChatPages),l=(0,o.useSelector)(t,c.selectCurrentChatPage),d=(0,o.useDispatch)(t);return(0,r.createComponentVNode)(2,i.Flex,{align:"center",children:[(0,r.createComponentVNode)(2,i.Flex.Item,{children:(0,r.createComponentVNode)(2,i.Tabs,{textAlign:"center",children:n.map((function(e){return(0,r.createComponentVNode)(2,i.Tabs.Tab,{selected:e===l,rightSlot:e.unreadCount>0&&(0,r.createComponentVNode)(2,u,{value:e.unreadCount}),onClick:function(){return d((0,a.changeChatPage)({pageId:e.id}))},children:e.name},e.id)}))})}),(0,r.createComponentVNode)(2,i.Flex.Item,{ml:1,children:(0,r.createComponentVNode)(2,i.Button,{color:"transparent",icon:"plus",onClick:function(){d((0,a.addChatPage)()),d((0,s.openChatSettings)())}})})]})}},8719:function(e,t,n){"use strict";t.__esModule=!0,t.updateMessageCount=t.updateChatPage=t.toggleAcceptedType=t.saveChatToDisk=t.removeChatPage=t.rebuildChat=t.loadChat=t.changeScrollTracking=t.changeChatPage=t.addChatPage=void 0;var r=n(82544),o=n(64577),i=(0,r.createAction)("chat/load");t.loadChat=i;var a=(0,r.createAction)("chat/rebuild");t.rebuildChat=a;var c=(0,r.createAction)("chat/updateMessageCount");t.updateMessageCount=c;var s=(0,r.createAction)("chat/addPage",(function(){return{payload:(0,o.createPage)()}}));t.addChatPage=s;var u=(0,r.createAction)("chat/changePage");t.changeChatPage=u;var l=(0,r.createAction)("chat/updatePage");t.updateChatPage=l;var d=(0,r.createAction)("chat/toggleAcceptedType");t.toggleAcceptedType=d;var h=(0,r.createAction)("chat/removePage");t.removeChatPage=h;var g=(0,r.createAction)("chat/changeScrollTracking");t.changeScrollTracking=g;var p=(0,r.createAction)("chat/saveToDisk");t.saveChatToDisk=p},93156:function(e,t){"use strict";t.__esModule=!0,t.MESSAGE_TYPE_WARNING=t.MESSAGE_TYPE_UNKNOWN=t.MESSAGE_TYPE_SYSTEM=t.MESSAGE_TYPE_RADIO=t.MESSAGE_TYPE_OOC=t.MESSAGE_TYPE_MODCHAT=t.MESSAGE_TYPE_LOCALCHAT=t.MESSAGE_TYPE_INTERNAL=t.MESSAGE_TYPE_INFO=t.MESSAGE_TYPE_EVENTCHAT=t.MESSAGE_TYPE_DEBUG=t.MESSAGE_TYPE_DEADCHAT=t.MESSAGE_TYPE_COMBAT=t.MESSAGE_TYPE_ATTACKLOG=t.MESSAGE_TYPE_ADMINPM=t.MESSAGE_TYPE_ADMINLOG=t.MESSAGE_TYPE_ADMINCHAT=t.MESSAGE_TYPES=t.MESSAGE_SAVE_INTERVAL=t.MESSAGE_PRUNE_INTERVAL=t.MAX_VISIBLE_MESSAGES=t.MAX_PERSISTED_MESSAGES=t.IMAGE_RETRY_MESSAGE_AGE=t.IMAGE_RETRY_LIMIT=t.IMAGE_RETRY_DELAY=t.COMBINE_MAX_TIME_WINDOW=t.COMBINE_MAX_MESSAGES=void 0;t.MAX_VISIBLE_MESSAGES=2500;t.MAX_PERSISTED_MESSAGES=1e3;t.MESSAGE_SAVE_INTERVAL=1e4;t.MESSAGE_PRUNE_INTERVAL=6e4;t.COMBINE_MAX_MESSAGES=5;t.COMBINE_MAX_TIME_WINDOW=5e3;t.IMAGE_RETRY_DELAY=250;t.IMAGE_RETRY_LIMIT=10;t.IMAGE_RETRY_MESSAGE_AGE=6e4;var n="unknown";t.MESSAGE_TYPE_UNKNOWN=n;t.MESSAGE_TYPE_INTERNAL="internal";var r="system";t.MESSAGE_TYPE_SYSTEM=r;var o="localchat";t.MESSAGE_TYPE_LOCALCHAT=o;var i="radio";t.MESSAGE_TYPE_RADIO=i;var a="info";t.MESSAGE_TYPE_INFO=a;var c="warning";t.MESSAGE_TYPE_WARNING=c;var s="deadchat";t.MESSAGE_TYPE_DEADCHAT=s;t.MESSAGE_TYPE_OOC="ooc";var u="adminpm";t.MESSAGE_TYPE_ADMINPM=u;var l="combat";t.MESSAGE_TYPE_COMBAT=l;var d="adminchat";t.MESSAGE_TYPE_ADMINCHAT=d;var h="modchat";t.MESSAGE_TYPE_MODCHAT=h;t.MESSAGE_TYPE_EVENTCHAT="eventchat";var g="adminlog";t.MESSAGE_TYPE_ADMINLOG=g;var p="attacklog";t.MESSAGE_TYPE_ATTACKLOG=p;var f="debug";t.MESSAGE_TYPE_DEBUG=f;var m=[{type:r,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounce",important:!0},{type:o,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote, .subtle"},{type:i,name:"Radio",description:"All departments of radio messages",selector:".alert, .minorannounce, .syndradio, .centcomradio, .aiprivradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .suppradio, .servradio, .radio, .deptradio, .binarysay, .newscaster, .resonate, .vaultradio, .ncrradio, .bosradio, .enclaveradio, .denradio, .legionradio, .rangerradio, .townradio, .respondersradio, .khansradio"},{type:a,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice, .info, .sinister, .cult, .infoplain, .announce, .hear, .smallnotice, .holoparasite"},{type:c,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .alertsyndie, .warningplain"},{type:s,name:"Deadchat",description:"All of deadchat",selector:".deadsay, .ghostalert"},{type:"ooc",name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .oocplain, .adminobserverooc"},{type:"looc",name:"LOOC",description:"Local Out of Character message. Important, always on.",selector:".filter_looc, .looc",important:!0},{type:u,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".pm, .adminhelp"},{type:l,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:n,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:d,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:h,name:"Mod Chat",description:"MSAY messages",selector:".mod_channel",admin:!0},{type:g,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:p,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:f,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",admin:!0}];t.MESSAGE_TYPES=m},13489:function(e,t,n){"use strict";t.__esModule=!0,t.chatReducer=t.chatMiddleware=t.ChatTabs=t.ChatPanel=t.ChatPageSettings=void 0;var r=n(54059);t.ChatPageSettings=r.ChatPageSettings;var o=n(15273);t.ChatPanel=o.ChatPanel;var i=n(3682);t.ChatTabs=i.ChatTabs;var a=n(4165);t.chatMiddleware=a.chatMiddleware;var c=n(83547);t.chatReducer=c.chatReducer},4165:function(e,t,n){"use strict";t.__esModule=!0,t.chatMiddleware=void 0;var r,o=(r=n(37900))&&r.__esModule?r:{"default":r},i=n(22800),a=n(93164),c=n(14173),s=n(8719),u=n(93156),l=n(64577),d=n(54587),h=n(26416);function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),N(n),d}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:T(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=undefined),d}},e}function m(e,t,n,r,o,i,a){try{var c=e[i](a),s=c.value}catch(u){return void n(u)}c.done?t(s):Promise.resolve(s).then(r,o)}function v(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){m(i,r,o,a,c,"next",e)}function c(e){m(i,r,o,a,c,"throw",e)}a(undefined)}))}}var y=["a","iframe","link","video"],b=function(){var e=v(f().mark((function t(e){var n,r,o;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=(0,h.selectChat)(e.getState()),r=Math.max(0,d.chatRenderer.messages.length-u.MAX_PERSISTED_MESSAGES),o=d.chatRenderer.messages.slice(r).map((function(e){return(0,l.serializeMessage)(e)})),i.storage.set("chat-state",n),i.storage.set("chat-messages",o);case 5:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}(),S=function(){var e=v(f().mark((function t(e){var n,r,a,c,u,h,p;return f().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Promise.all([i.storage.get("chat-state"),i.storage.get("chat-messages")]);case 2:if(n=t.sent,r=n[0],a=n[1],!(r&&r.version<=4)){t.next=8;break}return e.dispatch((0,s.loadChat)()),t.abrupt("return");case 8:if(a){for(c=g(a);!(u=c()).done;)(h=u.value).html&&(h.html=o["default"].sanitize(h.html,{FORBID_TAGS:y}));p=[].concat(a,[(0,l.createMessage)({type:"internal/reconnected"})]),d.chatRenderer.processBatch(p,{prepend:!0})}e.dispatch((0,s.loadChat)(r));case 10:case"end":return t.stop()}}),t)})));return function(t){return e.apply(this,arguments)}}();t.chatMiddleware=function(e){var t=!1,n=!1;return d.chatRenderer.events.on("batchProcessed",(function(t){n&&e.dispatch((0,s.updateMessageCount)(t))})),d.chatRenderer.events.on("scrollTrackingChanged",(function(t){e.dispatch((0,s.changeScrollTracking)(t))})),setInterval((function(){return b(e)}),u.MESSAGE_SAVE_INTERVAL),function(r){return function(o){var i=o.type,u=o.payload;if(t||(t=!0,S(e)),"chat/message"!==i){if(i===s.loadChat.type){r(o);var l=(0,h.selectCurrentChatPage)(e.getState());return d.chatRenderer.changePage(l),d.chatRenderer.onStateLoaded(),void(n=!0)}if(i!==s.changeChatPage.type&&i!==s.addChatPage.type&&i!==s.removeChatPage.type&&i!==s.toggleAcceptedType.type){if(i===s.rebuildChat.type)return d.chatRenderer.rebuildChat(),r(o);if(i!==a.updateSettings.type&&i!==a.loadSettings.type){if("roundrestart"===i)return b(e),r(o);if(i!==s.saveChatToDisk.type)return r(o);d.chatRenderer.saveToDisk()}else{r(o);var g=(0,c.selectSettings)(e.getState());d.chatRenderer.setHighlight(g.highlightText,g.highlightColor,g.matchWord,g.matchCase)}}else{r(o);var p=(0,h.selectCurrentChatPage)(e.getState());d.chatRenderer.changePage(p)}}else{var f=Array.isArray(u)?u:[u];d.chatRenderer.processBatch(f)}}}}},64577:function(e,t,n){"use strict";t.__esModule=!0,t.serializeMessage=t.isSameMessage=t.createPage=t.createMessage=t.createMainPage=t.canPageAcceptType=void 0;var r=n(34685),o=n(93156);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&(C[N.id]=Object.assign({},N,{unreadCount:N.unreadCount+A}))}return Object.assign({},e,{pageById:C})}if(r===o.addChatPage.type)return Object.assign({},e,{currentPageId:s.id,pages:[].concat(e.pages,[s.id]),pageById:Object.assign({},e.pageById,(n={},n[s.id]=s,n))});if(r===o.changeChatPage.type){var x,P=s.pageId,k=Object.assign({},e.pageById[P],{unreadCount:0});return Object.assign({},e,{currentPageId:P,pageById:Object.assign({},e.pageById,(x={},x[P]=k,x))})}if(r===o.updateChatPage.type){var O,L=s.pageId,R=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(s,a),G=Object.assign({},e.pageById[L],R);return Object.assign({},e,{pageById:Object.assign({},e.pageById,(O={},O[L]=G,O))})}if(r===o.toggleAcceptedType.type){var V,B=s.pageId,j=s.type,D=Object.assign({},e.pageById[B]);return D.acceptedTypes=Object.assign({},D.acceptedTypes),D.acceptedTypes[j]=!D.acceptedTypes[j],Object.assign({},e,{pageById:Object.assign({},e.pageById,(V={},V[B]=D,V))})}if(r===o.removeChatPage.type){var F=s.pageId,Y=Object.assign({},e,{pages:[].concat(e.pages),pageById:Object.assign({},e.pageById)});return delete Y.pageById[F],Y.pages=Y.pages.filter((function(e){return e!==F})),0===Y.pages.length&&(Y.pages.push(u.id),Y.pageById[u.id]=u,Y.currentPageId=u.id),Y.currentPageId&&Y.currentPageId!==F||(Y.currentPageId=Y.pages[0]),Y}return e}},54587:function(e,t,n){"use strict";t.__esModule=!0,t.chatRenderer=void 0;var r=n(20474),o=n(59641),i=n(17488),a=n(93156),c=n(64577),s=n(3517);function u(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=a.IMAGE_RETRY_LIMIT)d.error("failed to load an image after "+n+" attempts");else{var r=t.src;t.src=null,t.src=r+"#"+n,t.setAttribute("data-reload-n",n+1)}}),a.IMAGE_RETRY_DELAY)},m=function(e){var t=e.node,n=e.times;if(t&&n){var r=t.querySelector(".Chat__badge"),i=r||document.createElement("div");i.textContent=n,i.className=(0,o.classes)(["Chat__badge","Chat__badge--animate"]),requestAnimationFrame((function(){i.className="Chat__badge"})),r||t.appendChild(i)}},v=function(){function e(){var e=this;this.loaded=!1,this.rootNode=null,this.queue=[],this.messages=[],this.visibleMessages=[],this.page=null,this.events=new r.EventEmitter,this.scrollNode=null,this.scrollTracking=!0,this.handleScroll=function(t){var n=e.scrollNode,r=n.scrollHeight,o=n.scrollTop+n.offsetHeight,i=Math.abs(r-o)<24;i!==e.scrollTracking&&(e.scrollTracking=i,e.events.emit("scrollTrackingChanged",i),d.debug("tracking",e.scrollTracking))},this.ensureScrollTracking=function(){e.scrollTracking&&e.scrollToBottom()},setInterval((function(){return e.pruneMessages()}),a.MESSAGE_PRUNE_INTERVAL)}var t=e.prototype;return t.isReady=function(){return this.loaded&&this.rootNode&&this.page},t.mount=function(e){var t=this;this.rootNode?e.appendChild(this.rootNode):this.rootNode=e,this.scrollNode=function(e){for(var t=document.body,n=e;n&&n!==t;){if(n.scrollWidth0&&(this.processBatch(this.queue),this.queue=[])},t.assignStyle=function(e){void 0===e&&(e={});for(var t=0,n=Object.keys(e);t1}));if(0===o.length)return this.highlightRegex=null,void(this.highlightColor=null);var i=(n?"\\b":"")+"("+o.join("|")+")"+(n?"\\b":""),a="g"+(r?"":"i");this.highlightRegex=new RegExp(i,a),this.highlightColor=t},t.scrollToBottom=function(){this.scrollNode.scrollTop=this.scrollNode.scrollHeight},t.changePage=function(e){if(!this.isReady())return this.page=e,void this.tryFlushQueue();this.page=e,this.rootNode.textContent="",this.visibleMessages=[];for(var t,n,r=document.createDocumentFragment(),o=u(this.messages);!(n=o()).done;){var i=n.value;(0,c.canPageAcceptType)(e,i.type)&&(t=i.node,r.appendChild(t),this.visibleMessages.push(i))}t&&(this.rootNode.appendChild(r),t.scrollIntoView())},t.getCombinableMessage=function(e){for(var t=Date.now(),n=this.visibleMessages.length,r=n-1,o=Math.max(0,n-a.COMBINE_MAX_MESSAGES),i=r;i>=o;i--){var s=this.visibleMessages[i];if(!s.type.startsWith(a.MESSAGE_TYPE_INTERNAL)&&(0,c.isSameMessage)(s,e)&&t0){this.visibleMessages=e.slice(t);for(var n=0;n0&&(this.messages=this.messages.slice(o),d.log("pruned "+o+" stored messages"))}else d.debug("pruning delayed")},t.rebuildChat=function(){if(this.isReady()){for(var e,t=Math.max(0,this.messages.length-a.MAX_PERSISTED_MESSAGES),n=this.messages.slice(t),r=u(n);!(e=r()).done;)e.value.node=undefined;this.rootNode.textContent="",this.messages=[],this.visibleMessages=[],this.processBatch(n,{notifyListeners:!1})}},t.saveToDisk=function(){if(!Byond.IS_LTE_IE10){for(var e="",t=document.styleSheets,n=0;n\n\n\nSS13 Chat Log\n\n\n\n\n'+a+"
\n\n\n"]),d=(new Date).toISOString().substring(0,19).replace(/[-:]/g,"").replace("T","-");window.navigator.msSaveBlob(l,"ss13-chatlog-"+d+".html")}},e}();window.__chatRenderer__||(window.__chatRenderer__=new v);var y=window.__chatRenderer__;t.chatRenderer=y},3517:function(e,t){"use strict";t.__esModule=!0,t.replaceInTextNode=t.linkifyNode=t.highlightNode=void 0;var n=function(e,t){return function(n){for(var r,o,i=n.textContent,a=i.length,c=0,s=0;r=e.exec(i);){s+=1,o||(o=document.createDocumentFragment());var u=r[0],l=u.length,d=r.index;c=t+a.CONNECTION_LOST_AFTER;!r.connectionLostAt&&s&&e.dispatch(c((0,o.connectionLost)())),r.connectionLostAt&&!s&&e.dispatch(c((0,o.connectionRestored)()))}}),1e3),function(e){return function(n){var i=n.type,a=(n.payload,n.meta);return i===r.pingSuccess.type?(t=a.now,e(n)):i===o.roundRestarted.type?e(c(n)):e(n)}}}},64882:function(e,t,n){"use strict";t.__esModule=!0,t.gameReducer=void 0;var r=n(16163),o={roundId:null,roundTime:null,roundRestartedAt:null,connectionLostAt:null};t.gameReducer=function(e,t){void 0===e&&(e=o);var n=t.type,i=(t.payload,t.meta);return"roundrestart"===n?Object.assign({},e,{roundRestartedAt:i.now}):n===r.connectionLost.type?Object.assign({},e,{connectionLostAt:i.now}):n===r.connectionRestored.type?Object.assign({},e,{connectionLostAt:null}):e}},41641:function(e,t){"use strict";t.__esModule=!0,t.selectGame=void 0;t.selectGame=function(e){return e.game}},38437:function(e,t,n){"use strict";var r=n(58734);n(54859),n(86177);var o,i,a=n(15645),c=n(82544),s=(n(60207),n(46725)),u=n(74489),l=n(1809),d=n(82265),h=n(8585),g=n(13489),p=n(80271),f=n(53923),m=n(47319),v=n(46568),y=n(97078);a.perf.mark("inception",null==(o=window.performance)||null==(i=o.timing)?void 0:i.navigationStart),a.perf.mark("init");var b=(0,d.configureStore)({reducer:(0,c.combineReducers)({audio:h.audioReducer,chat:g.chatReducer,game:p.gameReducer,ping:m.pingReducer,settings:v.settingsReducer}),middleware:{pre:[g.chatMiddleware,m.pingMiddleware,y.telemetryMiddleware,v.settingsMiddleware,h.audioMiddleware,p.gameMiddleware]}}),S=(0,l.createRenderer)((function(){var e=n(56350).Panel;return(0,r.createComponentVNode)(2,d.StoreProvider,{store:b,children:(0,r.createComponentVNode)(2,e)})}));!function _(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)({ignoreWindowFocus:!0}),(0,f.setupPanelFocusHacks)(),(0,u.captureExternalLinks)(),b.subscribe(S),window.update=function(e){return b.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}Byond.winset("output",{"is-visible":!1}),Byond.winset("browseroutput",{"is-visible":!0,"is-disabled":!1,pos:"0x0",size:"0x0"}),Byond.winget("output").then((function(e){Byond.winset("browseroutput",{size:e.size})}))}else document.addEventListener("DOMContentLoaded",_)}()},53923:function(e,t,n){"use strict";t.__esModule=!0,t.setupPanelFocusHacks=void 0;var r=n(13212),o=n(46725),i=n(60747),a=function(){return setImmediate((function(){return(0,i.focusMap)()}))};t.setupPanelFocusHacks=function(){var e=!1,t=null;window.addEventListener("focusin",(function(t){e=(0,o.canStealFocus)(t.target)})),window.addEventListener("mousedown",(function(e){t=[e.screenX,e.screenY]})),window.addEventListener("mouseup",(function(n){if(t){var o=[n.screenX,n.screenY];(0,r.vecLength)((0,r.vecSubtract)(o,t))>=10&&(e=!0)}e||a()})),o.globalEvents.on("keydown",(function(e){e.isModifierKey()||a()}))}},55622:function(e,t,n){"use strict";t.__esModule=!0,t.PingIndicator=void 0;var r=n(58734),o=n(75052),i=n(5339),a=n(82544),c=n(50930),s=n(80482);t.PingIndicator=function(e,t){var n=(0,a.useSelector)(t,s.selectPing),u=o.Color.lookup(n.networkQuality,[new o.Color(220,40,40),new o.Color(220,200,40),new o.Color(60,220,40)]),l=n.roundtrip?(0,i.toFixed)(n.roundtrip):"--";return(0,r.createVNode)(1,"div","Ping",[(0,r.createComponentVNode)(2,c.Box,{className:"Ping__indicator",backgroundColor:u}),l],0)}},82046:function(e,t,n){"use strict";t.__esModule=!0,t.pingSuccess=t.pingReply=t.pingFail=void 0;var r=n(82544),o=(0,r.createAction)("ping/success",(function(e){var t=Date.now(),n=.5*(t-e.sentAt);return{payload:{lastId:e.id,roundtrip:n},meta:{now:t}}}));t.pingSuccess=o;var i=(0,r.createAction)("ping/fail");t.pingFail=i;var a=(0,r.createAction)("ping/reply");t.pingReply=a},67300:function(e,t){"use strict";t.__esModule=!0,t.PING_TIMEOUT=t.PING_ROUNDTRIP_WORST=t.PING_ROUNDTRIP_BEST=t.PING_QUEUE_SIZE=t.PING_MAX_FAILS=t.PING_INTERVAL=void 0;t.PING_INTERVAL=2500;t.PING_TIMEOUT=2e3;t.PING_MAX_FAILS=3;t.PING_QUEUE_SIZE=8;t.PING_ROUNDTRIP_BEST=50;t.PING_ROUNDTRIP_WORST=200},47319:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=t.pingMiddleware=t.PingIndicator=void 0;var r=n(52348);t.pingMiddleware=r.pingMiddleware;var o=n(55622);t.PingIndicator=o.PingIndicator;var i=n(28975);t.pingReducer=i.pingReducer},52348:function(e,t,n){"use strict";t.__esModule=!0,t.pingMiddleware=void 0;var r=n(54777),o=n(82046),i=n(67300);t.pingMiddleware=function(e){var t,n=!1,a=0,c=[],s=function(){for(var t=0;ti.PING_TIMEOUT&&(c[t]=null,e.dispatch((0,o.pingFail)()))}var s={index:a,sentAt:Date.now()};c[a]=s,(0,r.sendMessage)({type:"ping",payload:{index:a}}),a=(a+1)%i.PING_QUEUE_SIZE};return function(e){return function(r){var a=r.type,u=r.payload;if(n||(n=!0,t=setInterval(s,i.PING_INTERVAL),s()),"roundrestart"===a)return clearInterval(t),e(r);if("pingReply"===a){var l=u.index,d=c[l];if(!d)return;return c[l]=null,e((0,o.pingSuccess)(d))}return e(r)}}}},28975:function(e,t,n){"use strict";t.__esModule=!0,t.pingReducer=void 0;var r=n(5339),o=n(82046),i=n(67300);t.pingReducer=function(e,t){void 0===e&&(e={});var n=t.type,a=t.payload;if(n===o.pingSuccess.type){var c=a.roundtrip,s=e.roundtripAvg||c,u=Math.round(.4*s+.6*c);return{roundtrip:c,roundtripAvg:u,failCount:0,networkQuality:1-(0,r.scale)(u,i.PING_ROUNDTRIP_BEST,i.PING_ROUNDTRIP_WORST)}}if(n===o.pingFail.type){var l=e.failCount,d=void 0===l?0:l,h=(0,r.clamp01)(e.networkQuality-d/i.PING_MAX_FAILS),g=Object.assign({},e,{failCount:d+1,networkQuality:h});return d>i.PING_MAX_FAILS&&(g.roundtrip=undefined,g.roundtripAvg=undefined),g}return e}},80482:function(e,t){"use strict";t.__esModule=!0,t.selectPing=void 0;t.selectPing=function(e){return e.ping}},45679:function(e,t,n){"use strict";t.__esModule=!0,t.SettingsPanel=t.SettingsGeneral=void 0;var r=n(58734),o=n(5339),i=n(54777),a=n(82544),c=n(50930),s=n(13489),u=n(8719),l=n(32353),d=n(93164),h=n(32112),g=n(14173);t.SettingsPanel=function(e,t){var n=(0,a.useSelector)(t,g.selectActiveTab),o=(0,a.useDispatch)(t);return(0,r.createComponentVNode)(2,c.Stack,{fill:!0,children:[(0,r.createComponentVNode)(2,c.Stack.Item,{children:(0,r.createComponentVNode)(2,c.Section,{fitted:!0,fill:!0,minHeight:"8em",children:(0,r.createComponentVNode)(2,c.Tabs,{vertical:!0,children:h.SETTINGS_TABS.map((function(e){return(0,r.createComponentVNode)(2,c.Tabs.Tab,{selected:e.id===n,onClick:function(){return o((0,d.changeSettingsTab)({tabId:e.id}))},children:e.name},e.id)}))})})}),(0,r.createComponentVNode)(2,c.Stack.Item,{grow:1,basis:0,children:["general"===n&&(0,r.createComponentVNode)(2,p),"chatPage"===n&&(0,r.createComponentVNode)(2,s.ChatPageSettings)]})]})};var p=function(e,t){var n=(0,a.useSelector)(t,g.selectSettings),s=n.theme,p=n.fontFamily,f=n.fontSize,m=n.lineHeight,v=n.highlightText,y=n.highlightColor,b=n.matchWord,S=n.matchCase,_=(0,a.useDispatch)(t),E=(0,i.useLocalState)(t,"freeFont",!1),C=E[0],w=E[1];return(0,r.createComponentVNode)(2,c.Section,{children:[(0,r.createComponentVNode)(2,c.LabeledList,{children:[(0,r.createComponentVNode)(2,c.LabeledList.Item,{label:"Theme",children:(0,r.createComponentVNode)(2,c.Dropdown,{selected:s,options:l.THEMES,onSelected:function(e){return _((0,d.updateSettings)({theme:e}))}})}),(0,r.createComponentVNode)(2,c.LabeledList.Item,{label:"Font style",children:(0,r.createComponentVNode)(2,c.Stack,{inline:!0,align:"baseline",children:[(0,r.createComponentVNode)(2,c.Stack.Item,{children:!C&&(0,r.createComponentVNode)(2,c.Dropdown,{selected:p,options:h.FONTS,onSelected:function(e){return _((0,d.updateSettings)({fontFamily:e}))}})||(0,r.createComponentVNode)(2,c.Input,{value:p,onChange:function(e,t){return _((0,d.updateSettings)({fontFamily:t}))}})}),(0,r.createComponentVNode)(2,c.Stack.Item,{children:(0,r.createComponentVNode)(2,c.Button,{content:"Custom font",icon:C?"lock-open":"lock",color:C?"good":"bad",ml:1,onClick:function(){w(!C)}})})]})}),(0,r.createComponentVNode)(2,c.LabeledList.Item,{label:"Font size",children:(0,r.createComponentVNode)(2,c.NumberInput,{width:"4em",step:1,stepPixelSize:10,minValue:8,maxValue:32,value:f,unit:"px",format:function(e){return(0,o.toFixed)(e)},onChange:function(e,t){return _((0,d.updateSettings)({fontSize:t}))}})}),(0,r.createComponentVNode)(2,c.LabeledList.Item,{label:"Line height",children:(0,r.createComponentVNode)(2,c.NumberInput,{width:"4em",step:.01,stepPixelSize:2,minValue:.8,maxValue:5,value:m,format:function(e){return(0,o.toFixed)(e,2)},onDrag:function(e,t){return _((0,d.updateSettings)({lineHeight:t}))}})})]}),(0,r.createComponentVNode)(2,c.Divider),(0,r.createComponentVNode)(2,c.Box,{children:[(0,r.createComponentVNode)(2,c.Flex,{mb:1,color:"label",align:"baseline",children:[(0,r.createComponentVNode)(2,c.Flex.Item,{grow:1,children:"Highlight text (comma separated):"}),(0,r.createComponentVNode)(2,c.Flex.Item,{shrink:0,children:[(0,r.createComponentVNode)(2,c.ColorBox,{mr:1,color:y}),(0,r.createComponentVNode)(2,c.Input,{width:"5em",monospace:!0,placeholder:"#ffffff",value:y,onInput:function(e,t){return _((0,d.updateSettings)({highlightColor:t}))}})]})]}),(0,r.createComponentVNode)(2,c.TextArea,{height:"3em",value:v,onChange:function(e,t){return _((0,d.updateSettings)({highlightText:t}))}}),(0,r.createComponentVNode)(2,c.Button.Checkbox,{checked:b,tooltipPosition:"bottom-start",tooltip:"Not compatible with punctuation.",onClick:function(){return _((0,d.updateSettings)({matchWord:!b}))},children:"Match word"}),(0,r.createComponentVNode)(2,c.Button.Checkbox,{checked:S,onClick:function(){return _((0,d.updateSettings)({matchCase:!S}))},children:"Match case"})]}),(0,r.createComponentVNode)(2,c.Divider),(0,r.createComponentVNode)(2,c.Box,{children:[(0,r.createComponentVNode)(2,c.Button,{icon:"check",onClick:function(){return _((0,u.rebuildChat)())},children:"Apply now"}),(0,r.createComponentVNode)(2,c.Box,{inline:!0,fontSize:"0.9em",ml:1,color:"label",children:"Can freeze the chat for a while."})]}),(0,r.createComponentVNode)(2,c.Divider),(0,r.createComponentVNode)(2,c.Button,{icon:"save",onClick:function(){return _((0,u.saveChatToDisk)())},children:"Save chat log"})]})};t.SettingsGeneral=p},93164:function(e,t,n){"use strict";t.__esModule=!0,t.updateSettings=t.toggleSettings=t.openChatSettings=t.loadSettings=t.changeSettingsTab=void 0;var r=n(82544),o=(0,r.createAction)("settings/update");t.updateSettings=o;var i=(0,r.createAction)("settings/load");t.loadSettings=i;var a=(0,r.createAction)("settings/changeTab");t.changeSettingsTab=a;var c=(0,r.createAction)("settings/toggle");t.toggleSettings=c;var s=(0,r.createAction)("settings/openChatTab");t.openChatSettings=s},32112:function(e,t){"use strict";t.__esModule=!0,t.SETTINGS_TABS=t.FONTS_DISABLED=t.FONTS=void 0;t.SETTINGS_TABS=[{id:"general",name:"General"},{id:"chatPage",name:"Chat Tabs"}];var n="Default";t.FONTS_DISABLED=n;var r=[n,"Verdana","Arial","Arial Black","Comic Sans MS","Impact","Lucida Sans Unicode","Tahoma","Trebuchet MS","Courier New","Lucida Console"];t.FONTS=r},25417:function(e,t,n){"use strict";t.__esModule=!0,t.useSettings=void 0;var r=n(82544),o=n(93164),i=n(14173);t.useSettings=function(e){var t=(0,r.useSelector)(e,i.selectSettings),n=(0,r.useDispatch)(e);return Object.assign({},t,{visible:t.view.visible,toggle:function(){return n((0,o.toggleSettings)())},update:function(e){return n((0,o.updateSettings)(e))}})}},46568:function(e,t,n){"use strict";t.__esModule=!0,t.useSettings=t.settingsReducer=t.settingsMiddleware=t.SettingsPanel=void 0;var r=n(25417);t.useSettings=r.useSettings;var o=n(41725);t.settingsMiddleware=o.settingsMiddleware;var i=n(7907);t.settingsReducer=i.settingsReducer;var a=n(45679);t.SettingsPanel=a.SettingsPanel},41725:function(e,t,n){"use strict";t.__esModule=!0,t.settingsMiddleware=void 0;var r=n(22800),o=n(32353),i=n(93164),a=n(14173),c=n(32112);t.settingsMiddleware=function(e){var t=!1;return function(n){return function(s){var u,l,d=s.type,h=s.payload;if(t||(t=!0,r.storage.get("panel-settings").then((function(t){e.dispatch((0,i.loadSettings)(t))}))),d===i.updateSettings.type||d===i.loadSettings.type){var g=null==h?void 0:h.theme;g&&(0,o.setClientTheme)(g),n(s);var p=(0,a.selectSettings)(e.getState());return l=p.fontSize,document.documentElement.style.setProperty("font-size",l+"px"),document.body.style.setProperty("font-size",l+"px"),(u=p.fontFamily)===c.FONTS_DISABLED&&(u=null),document.documentElement.style.setProperty("font-family",u),document.body.style.setProperty("font-family",u),void r.storage.set("panel-settings",p)}return n(s)}}}},7907:function(e,t,n){"use strict";t.__esModule=!0,t.settingsReducer=void 0;var r=n(93164),o=n(32112),i={version:1,fontSize:13,fontFamily:o.FONTS[0],lineHeight:1.2,theme:"dark",adminMusicVolume:.5,highlightText:"",highlightColor:"#ffdd44",matchWord:!1,matchCase:!1,view:{visible:!1,activeTab:o.SETTINGS_TABS[0].id}};t.settingsReducer=function(e,t){void 0===e&&(e=i);var n=t.type,o=t.payload;if(n===r.updateSettings.type)return Object.assign({},e,o);if(n===r.loadSettings.type)return null!=o&&o.version?(delete o.view,Object.assign({},e,o)):e;if(n===r.toggleSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!e.view.visible})});if(n===r.openChatSettings.type)return Object.assign({},e,{view:Object.assign({},e.view,{visible:!0,activeTab:"chatPage"})});if(n===r.changeSettingsTab.type){var a=o.tabId;return Object.assign({},e,{view:Object.assign({},e.view,{activeTab:a})})}return e}},14173:function(e,t){"use strict";t.__esModule=!0,t.selectSettings=t.selectActiveTab=void 0;t.selectSettings=function(e){return e.settings};t.selectActiveTab=function(e){return e.settings.view.activeTab}},97078:function(e,t,n){"use strict";t.__esModule=!0,t.telemetryMiddleware=void 0;var r=n(54777),o=n(22800);function i(){i=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(I){u=function(e,t,n){return e[t]=n}}function l(e,t,n,o){var i=t&&t.prototype instanceof g?t:g,a=Object.create(i.prototype),c=new A(o||[]);return r(a,"_invoke",{value:E(e,n,c)}),a}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(I){return{type:"throw",arg:I}}}e.wrap=l;var h={};function g(){}function p(){}function f(){}var m={};u(m,a,(function(){return this}));var v=Object.getPrototypeOf,y=v&&v(v(T([])));y&&y!==t&&n.call(y,a)&&(m=y);var b=f.prototype=g.prototype=Object.create(m);function S(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function o(r,i,a,c){var s=d(e[r],e,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){o("next",e,a,c)}),(function(e){o("throw",e,a,c)})):t.resolve(l).then((function(e){u.value=e,a(u)}),(function(e){return o("throw",e,a,c)}))}c(s.arg)}var i;r(this,"_invoke",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function E(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return M()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=C(a,n);if(c){if(c===h)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=d(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===h)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function C(e,t){var n=t.method,r=e.iterator[n];if(undefined===r)return t.delegate=null,"throw"===n&&e.iterator["return"]&&(t.method="return",t.arg=undefined,C(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),h;var o=d(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,h;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=undefined),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function N(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function T(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),N(n),h}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:T(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=undefined),h}},e}function a(e,t,n,r,o,i,a){try{var c=e[i](a),s=c.value}catch(u){return void n(u)}c.done?t(s):Promise.resolve(s).then(r,o)}var c=(0,n(17488).createLogger)("telemetry");t.telemetryMiddleware=function(e){var t,n;return function(s){return function(u){var l,d=u.type,h=u.payload;if("telemetry/request"!==d)return"backend/update"===d?(s(u),void(l=i().mark((function f(){var r,a,s,u;return i().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(a=null==h||null==(r=h.config)?void 0:r.client){i.next=4;break}return c.error("backend/update payload is missing client data!"),i.abrupt("return");case 4:if(t){i.next=13;break}return i.next=7,o.storage.get("telemetry");case 7:if(i.t0=i.sent,i.t0){i.next=10;break}i.t0={};case 10:(t=i.t0).connections||(t.connections=[]),c.debug("retrieved telemetry from storage",t);case 13:s=!1,t.connections.find((function(e){return n=a,(t=e).ckey===n.ckey&&t.address===n.address&&t.computer_id===n.computer_id;var t,n}))||(s=!0,t.connections.unshift(a),t.connections.length>10&&t.connections.pop()),s&&(c.debug("saving telemetry to storage",t),o.storage.set("telemetry",t)),n&&(u=n,n=null,e.dispatch({type:"telemetry/request",payload:u}));case 18:case"end":return i.stop()}}),f)})),function(){var e=this,t=arguments;return new Promise((function(n,r){var o=l.apply(e,t);function i(e){a(o,n,r,i,c,"next",e)}function c(e){a(o,n,r,i,c,"throw",e)}i(undefined)}))})()):s(u);if(!t)return c.debug("deferred"),void(n=h);c.debug("sending");var g=(null==h?void 0:h.limits)||{},p=t.connections.slice(0,g.connections);(0,r.sendMessage)({type:"telemetry",payload:{connections:p}})}}}},32353:function(e,t){"use strict";t.__esModule=!0,t.setClientTheme=t.THEMES=void 0;t.THEMES=["light","dark"];var n="#202020",r="#171717",o="#a4bad6",i=null;t.setClientTheme=function(e){return clearInterval(i),Byond.command(".output statbrowser:set_theme "+e),i=setTimeout((function(){Byond.command(".output statbrowser:set_theme "+e)}),1500),"light"===e?Byond.winset({"infowindow.background-color":"none","infowindow.text-color":"#000000","info.background-color":"none","info.text-color":"#000000","browseroutput.background-color":"none","browseroutput.text-color":"#000000","outputwindow.background-color":"none","outputwindow.text-color":"#000000","mainwindow.background-color":"none","split.background-color":"none","changelog.background-color":"none","changelog.text-color":"#000000","rules.background-color":"none","rules.text-color":"#000000","wiki.background-color":"none","wiki.text-color":"#000000","forum.background-color":"none","forum.text-color":"#000000","github.background-color":"none","github.text-color":"#000000","report-issue.background-color":"none","report-issue.text-color":"#000000","output.background-color":"none","output.text-color":"#000000","statwindow.background-color":"none","statwindow.text-color":"#000000","stat.background-color":"#FFFFFF","stat.tab-background-color":"none","stat.text-color":"#000000","stat.tab-text-color":"#000000","stat.prefix-color":"#000000","stat.suffix-color":"#000000","saybutton.background-color":"none","saybutton.text-color":"#000000","oocbutton.background-color":"none","oocbutton.text-color":"#000000","mebutton.background-color":"none","mebutton.text-color":"#000000","asset_cache_browser.background-color":"none","asset_cache_browser.text-color":"#000000","tooltip.background-color":"none","tooltip.text-color":"#000000"}):"dark"===e?Byond.winset({"infowindow.background-color":n,"infowindow.text-color":o,"info.background-color":n,"info.text-color":o,"browseroutput.background-color":n,"browseroutput.text-color":o,"outputwindow.background-color":n,"outputwindow.text-color":o,"mainwindow.background-color":n,"split.background-color":n,"changelog.background-color":"#494949","changelog.text-color":o,"rules.background-color":"#494949","rules.text-color":o,"wiki.background-color":"#494949","wiki.text-color":o,"forum.background-color":"#494949","forum.text-color":o,"github.background-color":"#3a3a3a","github.text-color":o,"report-issue.background-color":"#492020","report-issue.text-color":o,"output.background-color":r,"output.text-color":o,"statwindow.background-color":r,"statwindow.text-color":o,"stat.background-color":r,"stat.tab-background-color":n,"stat.text-color":o,"stat.tab-text-color":o,"stat.prefix-color":o,"stat.suffix-color":o,"saybutton.background-color":n,"saybutton.text-color":o,"oocbutton.background-color":n,"oocbutton.text-color":o,"mebutton.background-color":n,"mebutton.text-color":o,"asset_cache_browser.background-color":n,"asset_cache_browser.text-color":o,"tooltip.background-color":n,"tooltip.text-color":o}):void 0}},54859:function(){},86177:function(){}},n={};function r(e){var o=n[e];if(o!==undefined)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.m=t,e=[],r.O=function(t,n,o,i){if(!n){var a=Infinity;for(l=0;l=i)&&Object.keys(r.O).every((function(e){return r.O[e](n[s])}))?n.splice(s--,1):(c=!1,i0&&e[l-1][2]>i;l--)e[l]=e[l-1];e[l]=[n,o,i]},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={"tgui-panel":0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var o,i,a=n[0],c=n[1],s=n[2],u=0;if(a.some((function(t){return 0!==e[t]}))){for(o in c)r.o(c,o)&&(r.m[o]=c[o]);if(s)var l=s(r)}for(t&&t(n);u.Flex__item--iefix{display:table-row !important}.Flex--iefix--column>.Flex__item--iefix--grow{height:100% !important}.Flex__item--iefix{display:table-cell !important;width:1% !important;min-width:99%}.Flex__item--iefix--grow{width:auto !important}.IconStack>.Icon{position:absolute;width:100%;text-align:center}.IconStack{position:relative;display:inline-block;height:1.2em;line-height:2em;vertical-align:middle}.IconStack:after{color:rgba(0,0,0,0);content:"."}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:"Consolas",monospace}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto;margin-bottom:-0.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%);border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotateZ(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotateZ(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotateZ(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms ease-out}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-0.25em -0.5em;margin-bottom:0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.Modal{background-color:#252525;max-width:calc(100% - 1rem);padding:1rem}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:bold;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg, transparent, transparent 0.8333333333em, rgba(0, 0, 0, 0.1) 0.8333333333em, rgba(0, 0, 0, 0.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:"Consolas",monospace}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color 900ms ease-out}.ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--black{border:.0833333333em solid #000 !important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9 !important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020 !important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c !important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804 !important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14 !important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638 !important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93 !important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1 !important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab !important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa !important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082 !important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836 !important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464 !important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121 !important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d !important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020 !important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94 !important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.RoundGauge{font-size:1rem;width:2.6em;height:1.3em;margin:0 auto;margin-bottom:.2em}.RoundGauge__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:10;stroke-dasharray:157.08;stroke-dashoffset:157.08}.RoundGauge__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:10;stroke-dasharray:314.16;transition:stroke 50ms ease-out}.RoundGauge__needle,.RoundGauge__ringFill{transition:transform 50ms ease-in-out}.RoundGauge__needleLine,.RoundGauge__needleMiddle{fill:#db2828}.RoundGauge__alert{fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;fill:rgba(255,255,255,.1)}.RoundGauge__alert.max{fill:#db2828}.RoundGauge--color--black.RoundGauge__ringFill{stroke:#1a1a1a}.RoundGauge--color--white.RoundGauge__ringFill{stroke:#fff}.RoundGauge--color--red.RoundGauge__ringFill{stroke:#df3e3e}.RoundGauge--color--orange.RoundGauge__ringFill{stroke:#f37f33}.RoundGauge--color--yellow.RoundGauge__ringFill{stroke:#fbda21}.RoundGauge--color--olive.RoundGauge__ringFill{stroke:#cbe41c}.RoundGauge--color--green.RoundGauge__ringFill{stroke:#25ca4c}.RoundGauge--color--teal.RoundGauge__ringFill{stroke:#00d6cc}.RoundGauge--color--blue.RoundGauge__ringFill{stroke:#2e93de}.RoundGauge--color--violet.RoundGauge__ringFill{stroke:#7349cf}.RoundGauge--color--purple.RoundGauge__ringFill{stroke:#ad45d0}.RoundGauge--color--pink.RoundGauge__ringFill{stroke:#e34da1}.RoundGauge--color--brown.RoundGauge__ringFill{stroke:#b97447}.RoundGauge--color--grey.RoundGauge__ringFill{stroke:#848484}.RoundGauge--color--good.RoundGauge__ringFill{stroke:#68c22d}.RoundGauge--color--average.RoundGauge__ringFill{stroke:#f29a29}.RoundGauge--color--bad.RoundGauge__ringFill{stroke:#df3e3e}.RoundGauge--color--label.RoundGauge__ringFill{stroke:#8b9bb0}.RoundGauge__alert--black{fill:#1a1a1a;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--white{fill:#fff;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--red{fill:#df3e3e;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--orange{fill:#f37f33;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--yellow{fill:#fbda21;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--olive{fill:#cbe41c;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--green{fill:#25ca4c;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--teal{fill:#00d6cc;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--blue{fill:#2e93de;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--violet{fill:#7349cf;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--purple{fill:#ad45d0;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--pink{fill:#e34da1;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--brown{fill:#b97447;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--grey{fill:#848484;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--good{fill:#68c22d;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--average{fill:#f29a29;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--bad{fill:#df3e3e;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}.RoundGauge__alert--label{fill:#8b9bb0;transition:opacity .6s cubic-bezier(0.25, 1, 0.5, 1);animation:RoundGauge__alertAnim 1s cubic-bezier(0.34, 1.56, 0.64, 1) infinite}@keyframes RoundGauge__alertAnim{0%{opacity:.1}50%{opacity:1}100%{opacity:.1}}.Section{position:relative;margin-bottom:.5em;background-color:#191919;background-color:rgba(0,0,0,.33);box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.Section .Section:first-child{margin-top:-0.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider{cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none !important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:bold;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:rgba(0,0,0,.33)}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -0.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-0.5em}.Tabs--vertical{flex-direction:column;padding:.25em 0 .25em .25em}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0 .25em}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075)}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-bottom-left-radius:.25em}.Tabs--vertical .Tab--selected{border-right:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#8b9bb0}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:"Consolas",monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:all 150ms ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -0.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.ListInput__Section .Section__title{flex-shrink:0}.ListInput__Section .Section__titleText{font-size:1em}.ListInput__Loader{width:100%;position:relative;height:4px}.ListInput__LoaderProgress{position:absolute;transition:background-color 500ms ease-out,width 500ms ease-out;background-color:#3e6189;height:100%}.CircuitInfo__Examined{background-color:#000;padding:8px;border-radius:5px;user-select:none;pointer-events:none}.ObjectComponent__Titlebar{border-top-left-radius:12px;border-top-right-radius:12px;white-space:nowrap;-ms-user-select:none;user-select:none}.ObjectComponent__Content{white-space:nowrap;background-color:rgba(0,0,0,.5);-ms-user-select:none;user-select:none}.ObjectComponent__PortPos{position:absolute;top:0;left:0;right:0;bottom:0}.color-stroke-black{stroke:#000 !important}.color-stroke-white{stroke:#d9d9d9 !important}.color-stroke-red{stroke:#bd2020 !important}.color-stroke-orange{stroke:#d95e0c !important}.color-stroke-yellow{stroke:#d9b804 !important}.color-stroke-olive{stroke:#9aad14 !important}.color-stroke-green{stroke:#1b9638 !important}.color-stroke-teal{stroke:#009a93 !important}.color-stroke-blue{stroke:#1c71b1 !important}.color-stroke-violet{stroke:#552dab !important}.color-stroke-purple{stroke:#8b2baa !important}.color-stroke-pink{stroke:#cf2082 !important}.color-stroke-brown{stroke:#8c5836 !important}.color-stroke-grey{stroke:#646464 !important}.color-stroke-good{stroke:#4d9121 !important}.color-stroke-average{stroke:#cd7a0d !important}.color-stroke-bad{stroke:#bd2020 !important}.color-stroke-label{stroke:#657a94 !important}.AlertModal__Message{text-align:center;justify-content:center}.AlertModal__Buttons{justify-content:center}.AlertModal__Loader{width:100%;position:relative;height:4px}.AlertModal__LoaderProgress{position:absolute;transition:background-color 500ms ease-out,width 500ms ease-out;background-color:#3e6189;height:100%}.CameraConsole__left{position:absolute;top:0;bottom:0;left:0;width:18.3333333333em}.CameraConsole__right{position:absolute;top:0;bottom:0;left:18.3333333333em;right:0;background-color:rgba(0,0,0,.33)}.CameraConsole__toolbar{position:absolute;top:0;left:0;right:0;height:2em;line-height:2em;margin:.25em 1em 0}.CameraConsole__toolbarRight{position:absolute;top:0;right:0;height:2em;line-height:2em;margin:.33em .5em 0}.CameraConsole__map{position:absolute;top:2.1666666667em;bottom:0;left:0;right:0;margin:.5em;text-align:center}.CameraConsole__map .NoticeBox{margin-top:calc(50% - 2em)}.Changelog__Button{height:22px}.Changelog__Cell{padding:3px 0}.Changelog__Cell--Icon{width:25px}.CrewManifest--Command .Section__title{border-color:#fbd608}.CrewManifest--Command .Section__titleText{color:#fbd608}.CrewManifest--Security .Section__title{border-color:#db2828}.CrewManifest--Security .Section__titleText{color:#db2828}.CrewManifest--Engineering .Section__title{border-color:#f2711c}.CrewManifest--Engineering .Section__titleText{color:#f2711c}.CrewManifest--Medical .Section__title{border-color:#00b5ad}.CrewManifest--Medical .Section__titleText{color:#00b5ad}.CrewManifest--Misc .Section__title{border-color:#fff}.CrewManifest--Misc .Section__titleText{color:#fff}.CrewManifest--Science .Section__title{border-color:#a333c8}.CrewManifest--Science .Section__titleText{color:#a333c8}.CrewManifest--Supply .Section__title{border-color:#a5673f}.CrewManifest--Supply .Section__titleText{color:#a5673f}.CrewManifest--Service .Section__title{border-color:#20b142}.CrewManifest--Service .Section__titleText{color:#20b142}.CrewManifest--Silicon .Section__title{border-color:#e03997}.CrewManifest--Silicon .Section__titleText{color:#e03997}.CrewManifest__Cell{padding:3px 0}.CrewManifest__Cell--Rank{color:#7e90a7}.CrewManifest__Icons{padding:3px 9px;text-align:right}.CrewManifest__Icon{color:#7e90a7;position:relative}.CrewManifest__Icon:not(:last-child){margin-right:7px}.CrewManifest__Icon--Chevron{padding-right:2px}.CrewManifest__Icon--Command{color:#fbd608}.ExperimentTechwebServer__Web,.ExperimentConfigure__ExperimentPanel{background:#000;border:1px solid #40628a;margin:3px 0}.ExperimentTechwebServer__WebHeader{background:#40628a;padding:2px}.ExperimentTechwebServer__WebName{font-size:18px}.ExperimentTechwebServer__WebContent{padding:4px}.ExperimentTechwebServer__WebContent>.LabeledList{margin:.25rem .25rem .25rem 1rem}.ExperimentConfigure__ExperimentName{font-weight:bold;border-radius:0}.ExperimentConfigure__ExperimentContent{padding:.25rem 1.5rem .25rem .25rem}.ExperimentStage__Indicator{font-weight:bold;margin-right:1rem;text-align:center}.ExperimentStage__StageContainer.complete .ExperimentStage__Description{opacity:.4;text-decoration:line-through}.ExperimentStage__StageContainer{margin-bottom:5px}.ExperimentStage__Table{border-collapse:separate;border-spacing:.25rem .25rem}.ExperimentConfigure__PerformExperiment{text-align:center;padding:.75rem 0}.ExperimentConfigure__ExperimentsContainer{height:100%;display:flex;flex-direction:column}.ExperimentConfigure__ExperimentsContainer>:last-child{flex:1;overflow-y:auto}.ExperimentConfigure__TagContainer{position:absolute;right:0;top:0}.ExperimentConfigure__PerformanceHint *{position:absolute;width:100%;height:100%;right:0;top:0;color:rgba(255,255,255,.5)}.NuclearBomb__displayBox{background-color:#002003;border:.167em inset #e8e4c9;color:#03e017;font-size:2em;font-family:monospace;padding:.25em}.NuclearBomb__Button{outline-width:.25rem !important;border-width:.65rem !important;padding-left:0 !important;padding-right:0 !important}.NuclearBomb__Button--keypad{background-color:#e8e4c9;border-color:#e8e4c9}.NuclearBomb__Button--keypad:hover{background-color:#f7f6ee !important;border-color:#f7f6ee !important}.NuclearBomb__Button--1{background-color:#d3cfb7 !important;border-color:#d3cfb7 !important;color:#a9a692 !important}.NuclearBomb__Button--E{background-color:#d9b804 !important;border-color:#d9b804 !important}.NuclearBomb__Button--E:hover{background-color:#f3d00e !important;border-color:#f3d00e !important}.NuclearBomb__Button--C{background-color:#bd2020 !important;border-color:#bd2020 !important}.NuclearBomb__Button--C:hover{background-color:#d52b2b !important;border-color:#d52b2b !important}.NuclearBomb__NTIcon{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==);background-size:70%;background-position:center;background-repeat:no-repeat}.Paper__Stamp{position:absolute;pointer-events:none;user-select:none}.Paper__Page{word-break:break-word;word-wrap:break-word}.Roulette__container{display:flex}.Roulette__board-cell{display:table-cell;padding:0;margin:0;border:1px solid #fff;vertical-align:bottom}.Roulette__board-cell-number{width:35px}.Roulette__board-cell-number--colspan-2{width:71px}.Roulette__board-cell-number--colspan-4{width:143px}.Roulette__board-button{display:table-cell !important;border:none !important;width:inherit;height:40px;padding:0;margin:0;text-align:center;vertical-align:middle;color:#fff !important}.Roulette__board-button--rowspan-3{height:122px}.Roulette__board-button-text{text-align:center;font-size:16px;font-weight:bold}.Roulette__lowertable{margin-top:8px;border-collapse:collapse;border:1px solid #fff;border-spacing:0}.Roulette__lowertable--cell{border:2px solid #fff;padding:0px;margin:0px}.Roulette__lowertable--betscell{vertical-align:top}.Roulette__lowertable--spinresult{text-align:center;font-size:100px;font-weight:bold;vertical-align:middle}.Roulette__lowertable--spinresult-black{background-color:#000}.Roulette__lowertable--spinresult-red{background-color:#db2828}.Roulette__lowertable--spinresult-green{background-color:#20b142}.Roulette__lowertable--spinbutton{margin:0 !important;border:none !important;font-size:50px;line-height:60px !important;text-align:center;font-weight:bold}.Roulette__lowertable--header{width:1%;text-align:center;font-size:16px;font-weight:bold}.Safe__engraving{position:absolute;width:95%;height:96%;left:2.5%;top:2%;border:5px outset #3e4f6a;padding:5px;text-align:center}.Safe__engraving-arrow{color:#35435a}.Safe__engraving-hinge{content:" ";background-color:#191f2a;width:25px;height:40px;position:absolute;right:-15px;margin-top:-20px}.Safe__dialer{margin-bottom:1.25rem}.Safe__dialer .Button{width:80px}.Safe__dialer-right .Button i{z-index:-100}.Safe__dialer-number{color:#bbb;display:inline;background-color:#191f2a;font-size:1.5rem;font-weight:bold;padding:0 .5rem}.Safe__contents{border:10px solid #191f2a;background-color:#0f131a;height:calc(85% + 7.5px);text-align:left;padding:5px}.Safe__help{position:absolute;top:73%;left:10px;width:50%;font-family:"Comic Sans MS",cursive,sans-serif;font-style:italic;color:#000;box-shadow:5px 5px #111;background-image:linear-gradient(to bottom, #b2ae74 0%, #8e8b5d 100%);transform:rotate(-1deg)}.Safe__help:before{content:" ";display:block;width:24px;height:40px;background-image:linear-gradient(to bottom, transparent 0%, #ffffff 100%);box-shadow:1px 1px #111;opacity:.2;position:absolute;top:-30px;left:calc(50% - 12px);transform:rotate(-5deg)}.TachyonArray__ActiveRecord{margin:0 .5em 0 .8em}.TachyonArray__Content{overflow-x:hidden;overflow-y:auto}.TachyonArray__ResearchFooter>*{width:100%;text-align:center}.Techweb__NodeProgress{margin-bottom:1rem}.Techweb__NodeProgress>*:not(:last-child){margin-right:.4rem}.Techweb__DesignIcon{margin-left:.25rem;margin-right:.25rem}.Techweb__OverviewNodes{overflow-y:auto;overflow-x:hidden;padding-right:6px;padding-top:4px}.Techweb__HeaderContent{background-color:#000;padding:6px;border:1px solid #40628a}.Techweb__HeaderContent>*>:not(:last-child){margin-bottom:5px}.Techweb__HeaderSectionTabs{margin-top:8px;background-color:#000;border:1px solid #40628a;padding-left:5px;padding-right:5px}.Techweb__HeaderTabTitle{border-right:1px solid #40628a;padding-right:.5em;margin-right:.5em;font-weight:bold}.Techweb__HeaderSectionTabs input{background-color:rgba(255,255,255,.05)}.Techweb__PointSummary{list-style:none;margin:.4em 0 0 1em;padding:0}.Techweb__SecProtocol{color:#db2828;margin-left:.2em}.Techweb__SecProtocol.engaged{color:#5baa27}.Techweb__DesignModal>:not(:last-child){margin-bottom:.5em}.Techweb__LockedModal>:not(:last-child){margin-bottom:.5em}.Techweb__ExperimentDiscount{color:#7e90a7;margin:.5em 0}.Layout,.Layout *{scrollbar-base-color:#1c1c1c;scrollbar-face-color:#3b3b3b;scrollbar-3dlight-color:#252525;scrollbar-highlight-color:#252525;scrollbar-track-color:#1c1c1c;scrollbar-arrow-color:#929292;scrollbar-shadow-color:#3b3b3b}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.NtosHeader__left{position:absolute;left:1em}.NtosHeader__right{position:absolute;right:1em}.NtosHeader__icon{margin-top:-0.75em;margin-bottom:-0.5em;vertical-align:middle}.NtosWindow__header{position:absolute;top:0;left:0;right:0;height:2em;line-height:1.928em;background-color:rgba(0,0,0,.5);font-family:Consolas,monospace;font-size:1.1666666667em;user-select:none;-ms-user-select:none}.NtosWindow__content .Layout__content{margin-top:2em;font-family:Consolas,monospace;font-size:1.1666666667em}.TitleBar{background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#363636;transition:color 250ms ease-out,background-color 250ms ease-out}.TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#252525;background-image:linear-gradient(to bottom, #2a2a2a 0%, #202020 100%)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(62,62,62,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.Layout__content{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==);background-size:70%;background-position:center;background-repeat:no-repeat}
+.theme-abductor .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:2px;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-abductor .Button:last-child{margin-right:0;margin-bottom:0}.theme-abductor .Button .fa,.theme-abductor .Button .fas,.theme-abductor .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-abductor .Button--hasContent .fa,.theme-abductor .Button--hasContent .fas,.theme-abductor .Button--hasContent .far{margin-right:.25em}.theme-abductor .Button--hasContent.Button--iconPosition--right .fa,.theme-abductor .Button--hasContent.Button--iconPosition--right .fas,.theme-abductor .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-abductor .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-abductor .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-abductor .Button--circular{border-radius:50%}.theme-abductor .Button--compact{padding:0 .25em;line-height:1.333em}.theme-abductor .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#ad2350;color:#fff}.theme-abductor .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-abductor .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-abductor .Button--color--default:hover,.theme-abductor .Button--color--default:focus{background-color:#d34372;color:#fff}.theme-abductor .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-abductor .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-abductor .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-abductor .Button--color--caution:hover,.theme-abductor .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-abductor .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-abductor .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-abductor .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-abductor .Button--color--danger:hover,.theme-abductor .Button--color--danger:focus{background-color:#c4c813;color:#fff}.theme-abductor .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#2a314a;color:#fff;background-color:rgba(42,49,74,0);color:rgba(255,255,255,.5)}.theme-abductor .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-abductor .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-abductor .Button--color--transparent:hover,.theme-abductor .Button--color--transparent:focus{background-color:#444c68;color:#fff}.theme-abductor .Button--disabled{background-color:#363636 !important}.theme-abductor .Button--selected{transition:color 50ms,background-color 50ms;background-color:#465899;color:#fff}.theme-abductor .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-abductor .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-abductor .Button--selected:hover,.theme-abductor .Button--selected:focus{background-color:#6e7eba;color:#fff}.theme-abductor .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #404b6e;border:.0833333333em solid rgba(64,75,110,.75);border-radius:2px;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-abductor .Input--fluid{display:block;width:auto}.theme-abductor .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-abductor .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-abductor .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-abductor .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-abductor .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:bold;font-style:italic;color:#fff;background-color:#a82d55;background-image:repeating-linear-gradient(-45deg, transparent, transparent 0.8333333333em, rgba(0, 0, 0, 0.1) 0.8333333333em, rgba(0, 0, 0, 0.1) 1.6666666667em)}.theme-abductor .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-abductor .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-abductor .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-abductor .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-abductor .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #404b6e;border:.0833333333em solid rgba(64,75,110,.75);border-radius:2px;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-abductor .Input--fluid{display:block;width:auto}.theme-abductor .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-abductor .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-abductor .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-abductor .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-abductor .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #404b6e;border:.0833333333em solid rgba(64,75,110,.75);border-radius:2px;color:#404b6e;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-abductor .NumberInput--fluid{display:block}.theme-abductor .NumberInput__content{margin-left:.5em}.theme-abductor .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-abductor .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #404b6e;background-color:#404b6e}.theme-abductor .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-abductor .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:2px;background-color:rgba(0,0,0,.5);transition:border-color 900ms ease-out}.theme-abductor .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-abductor .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-abductor .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-abductor .ProgressBar--color--default{border:.0833333333em solid #931e44}.theme-abductor .ProgressBar--color--default .ProgressBar__fill{background-color:#931e44}.theme-abductor .Section{position:relative;margin-bottom:.5em;background-color:#1c2132;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-abductor .Section:last-child{margin-bottom:0}.theme-abductor .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #ad2350}.theme-abductor .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-abductor .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-abductor .Section__rest{position:relative}.theme-abductor .Section__content{padding:.66em .5em}.theme-abductor .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-abductor .Section--fill{display:flex;flex-direction:column;height:100%}.theme-abductor .Section--fill>.Section__rest{flex-grow:1}.theme-abductor .Section--fill>.Section__rest>.Section__content{height:100%}.theme-abductor .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-abductor .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-abductor .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-abductor .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-abductor .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-abductor .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-abductor .Section .Section:first-child{margin-top:-0.5em}.theme-abductor .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-abductor .Section .Section .Section .Section__titleText{font-size:1em}.theme-abductor .Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:all 150ms ease-out;background-color:#a82d55;color:#fff;box-shadow:.1em .1em 1.25em -0.1em rgba(0,0,0,.5);border-radius:2px;max-width:20.8333333333em}.theme-abductor .Layout,.theme-abductor .Layout *{scrollbar-base-color:#202538;scrollbar-face-color:#384263;scrollbar-3dlight-color:#2a314a;scrollbar-highlight-color:#2a314a;scrollbar-track-color:#202538;scrollbar-arrow-color:#818db8;scrollbar-shadow-color:#384263}.theme-abductor .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-abductor .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-abductor .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#2a314a;background-image:linear-gradient(to bottom, #353e5e 0%, #1f2436 100%)}.theme-abductor .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-abductor .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-abductor .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-abductor .Window__contentPadding:after{height:0}.theme-abductor .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-abductor .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(68,76,104,.25);pointer-events:none}.theme-abductor .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-abductor .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-abductor .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-abductor .TitleBar{background-color:#9e1b46;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-abductor .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#9e1b46;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-abductor .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-abductor .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-abductor .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-abductor .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-abductor .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-abductor .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-abductor .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-abductor .Layout__content{background-image:none}
+.theme-cardtable .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:0;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-cardtable .Button:last-child{margin-right:0;margin-bottom:0}.theme-cardtable .Button .fa,.theme-cardtable .Button .fas,.theme-cardtable .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-cardtable .Button--hasContent .fa,.theme-cardtable .Button--hasContent .fas,.theme-cardtable .Button--hasContent .far{margin-right:.25em}.theme-cardtable .Button--hasContent.Button--iconPosition--right .fa,.theme-cardtable .Button--hasContent.Button--iconPosition--right .fas,.theme-cardtable .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-cardtable .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-cardtable .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-cardtable .Button--circular{border-radius:50%}.theme-cardtable .Button--compact{padding:0 .25em;line-height:1.333em}.theme-cardtable .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#117039;color:#fff}.theme-cardtable .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-cardtable .Button--color--default:hover,.theme-cardtable .Button--color--default:focus{background-color:#279455;color:#fff}.theme-cardtable .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-cardtable .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-cardtable .Button--color--caution:hover,.theme-cardtable .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-cardtable .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-cardtable .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-cardtable .Button--color--danger:hover,.theme-cardtable .Button--color--danger:focus{background-color:#c4c813;color:#fff}.theme-cardtable .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#117039;color:#fff;background-color:rgba(17,112,57,0);color:rgba(255,255,255,.5)}.theme-cardtable .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-cardtable .Button--color--transparent:hover,.theme-cardtable .Button--color--transparent:focus{background-color:#279455;color:#fff}.theme-cardtable .Button--disabled{background-color:#363636 !important}.theme-cardtable .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-cardtable .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-cardtable .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-cardtable .Button--selected:hover,.theme-cardtable .Button--selected:focus{background-color:#c81c1c;color:#fff}.theme-cardtable .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:0;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-cardtable .Input--fluid{display:block;width:auto}.theme-cardtable .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-cardtable .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-cardtable .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-cardtable .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-cardtable .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #fff;border:.0833333333em solid rgba(255,255,255,.75);border-radius:0;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-cardtable .NumberInput--fluid{display:block}.theme-cardtable .NumberInput__content{margin-left:.5em}.theme-cardtable .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-cardtable .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #fff;background-color:#fff}.theme-cardtable .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-cardtable .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:0;background-color:rgba(0,0,0,.5);transition:border-color 900ms ease-out}.theme-cardtable .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-cardtable .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-cardtable .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-cardtable .ProgressBar--color--default{border:.0833333333em solid #000}.theme-cardtable .ProgressBar--color--default .ProgressBar__fill{background-color:#000}.theme-cardtable .Section{position:relative;margin-bottom:.5em;background-color:#0b4b26;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-cardtable .Section:last-child{margin-bottom:0}.theme-cardtable .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #000}.theme-cardtable .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-cardtable .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-cardtable .Section__rest{position:relative}.theme-cardtable .Section__content{padding:.66em .5em}.theme-cardtable .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-cardtable .Section--fill{display:flex;flex-direction:column;height:100%}.theme-cardtable .Section--fill>.Section__rest{flex-grow:1}.theme-cardtable .Section--fill>.Section__rest>.Section__content{height:100%}.theme-cardtable .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-cardtable .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-cardtable .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-cardtable .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-cardtable .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-cardtable .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-cardtable .Section .Section:first-child{margin-top:-0.5em}.theme-cardtable .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-cardtable .Section .Section .Section .Section__titleText{font-size:1em}.theme-cardtable .Layout,.theme-cardtable .Layout *{scrollbar-base-color:#0d542b;scrollbar-face-color:#16914a;scrollbar-3dlight-color:#117039;scrollbar-highlight-color:#117039;scrollbar-track-color:#0d542b;scrollbar-arrow-color:#5ae695;scrollbar-shadow-color:#16914a}.theme-cardtable .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-cardtable .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-cardtable .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#117039;background-image:linear-gradient(to bottom, #117039 0%, #117039 100%)}.theme-cardtable .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-cardtable .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-cardtable .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-cardtable .Window__contentPadding:after{height:0}.theme-cardtable .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-cardtable .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(39,148,85,.25);pointer-events:none}.theme-cardtable .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-cardtable .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-cardtable .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-cardtable .TitleBar{background-color:#381608;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-cardtable .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#381608;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-cardtable .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-cardtable .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-cardtable .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-cardtable .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-cardtable .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-cardtable .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-cardtable .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-cardtable .Button{border:.1666666667em solid #fff}
+.theme-hackerman .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-hackerman .Button:last-child{margin-right:0;margin-bottom:0}.theme-hackerman .Button .fa,.theme-hackerman .Button .fas,.theme-hackerman .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-hackerman .Button--hasContent .fa,.theme-hackerman .Button--hasContent .fas,.theme-hackerman .Button--hasContent .far{margin-right:.25em}.theme-hackerman .Button--hasContent.Button--iconPosition--right .fa,.theme-hackerman .Button--hasContent.Button--iconPosition--right .fas,.theme-hackerman .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-hackerman .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-hackerman .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-hackerman .Button--circular{border-radius:50%}.theme-hackerman .Button--compact{padding:0 .25em;line-height:1.333em}.theme-hackerman .Button--color--default{transition:color 50ms,background-color 50ms;background-color:lime;color:#000}.theme-hackerman .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-hackerman .Button--color--default:hover,.theme-hackerman .Button--color--default:focus{background-color:#4dff4d;color:#000}.theme-hackerman .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-hackerman .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-hackerman .Button--color--caution:hover,.theme-hackerman .Button--color--caution:focus{background-color:#f5d72e;color:#000}.theme-hackerman .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-hackerman .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-hackerman .Button--color--danger:hover,.theme-hackerman .Button--color--danger:focus{background-color:#dc4848;color:#fff}.theme-hackerman .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#121b12;color:#fff;background-color:rgba(18,27,18,0);color:rgba(255,255,255,.5)}.theme-hackerman .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-hackerman .Button--color--transparent:hover,.theme-hackerman .Button--color--transparent:focus{background-color:#283228;color:#fff}.theme-hackerman .Button--disabled{background-color:#4a6a4a !important}.theme-hackerman .Button--selected{transition:color 50ms,background-color 50ms;background-color:lime;color:#000}.theme-hackerman .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-hackerman .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-hackerman .Button--selected:hover,.theme-hackerman .Button--selected:focus{background-color:#4dff4d;color:#000}.theme-hackerman .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid lime;border:.0833333333em solid rgba(0,255,0,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-hackerman .Input--fluid{display:block;width:auto}.theme-hackerman .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-hackerman .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-hackerman .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-hackerman .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-hackerman .Modal{background-color:#121b12;max-width:calc(100% - 1rem);padding:1rem}.theme-hackerman .Section{position:relative;margin-bottom:.5em;background-color:#0c120c;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-hackerman .Section:last-child{margin-bottom:0}.theme-hackerman .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid lime}.theme-hackerman .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-hackerman .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-hackerman .Section__rest{position:relative}.theme-hackerman .Section__content{padding:.66em .5em}.theme-hackerman .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-hackerman .Section--fill{display:flex;flex-direction:column;height:100%}.theme-hackerman .Section--fill>.Section__rest{flex-grow:1}.theme-hackerman .Section--fill>.Section__rest>.Section__content{height:100%}.theme-hackerman .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-hackerman .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-hackerman .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-hackerman .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-hackerman .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-hackerman .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-hackerman .Section .Section:first-child{margin-top:-0.5em}.theme-hackerman .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-hackerman .Section .Section .Section .Section__titleText{font-size:1em}.theme-hackerman .Layout,.theme-hackerman .Layout *{scrollbar-base-color:#0e140e;scrollbar-face-color:#253725;scrollbar-3dlight-color:#121b12;scrollbar-highlight-color:#121b12;scrollbar-track-color:#0e140e;scrollbar-arrow-color:#74a274;scrollbar-shadow-color:#253725}.theme-hackerman .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-hackerman .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-hackerman .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#121b12;background-image:linear-gradient(to bottom, #121b12 0%, #121b12 100%)}.theme-hackerman .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-hackerman .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-hackerman .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-hackerman .Window__contentPadding:after{height:0}.theme-hackerman .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-hackerman .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(40,50,40,.25);pointer-events:none}.theme-hackerman .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-hackerman .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-hackerman .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-hackerman .TitleBar{background-color:#223d22;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-hackerman .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#223d22;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-hackerman .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-hackerman .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-hackerman .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-hackerman .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-hackerman .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-hackerman .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-hackerman .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-hackerman .Layout__content{background-image:none}.theme-hackerman .Button{font-family:monospace;border-width:.1666666667em;border-style:outset;border-color:#0a0;outline:.0833333333em solid #007a00}.theme-hackerman .candystripe:nth-child(odd){background-color:rgba(0,100,0,.5)}
+.theme-malfunction .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-malfunction .Button:last-child{margin-right:0;margin-bottom:0}.theme-malfunction .Button .fa,.theme-malfunction .Button .fas,.theme-malfunction .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-malfunction .Button--hasContent .fa,.theme-malfunction .Button--hasContent .fas,.theme-malfunction .Button--hasContent .far{margin-right:.25em}.theme-malfunction .Button--hasContent.Button--iconPosition--right .fa,.theme-malfunction .Button--hasContent.Button--iconPosition--right .fas,.theme-malfunction .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-malfunction .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-malfunction .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-malfunction .Button--circular{border-radius:50%}.theme-malfunction .Button--compact{padding:0 .25em;line-height:1.333em}.theme-malfunction .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#910101;color:#fff}.theme-malfunction .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-malfunction .Button--color--default:hover,.theme-malfunction .Button--color--default:focus{background-color:#ba1414;color:#fff}.theme-malfunction .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-malfunction .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-malfunction .Button--color--caution:hover,.theme-malfunction .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-malfunction .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-malfunction .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-malfunction .Button--color--danger:hover,.theme-malfunction .Button--color--danger:focus{background-color:#c4c813;color:#fff}.theme-malfunction .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#1b3443;color:#fff;background-color:rgba(27,52,67,0);color:rgba(255,255,255,.5)}.theme-malfunction .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-malfunction .Button--color--transparent:hover,.theme-malfunction .Button--color--transparent:focus{background-color:#324f60;color:#fff}.theme-malfunction .Button--disabled{background-color:#363636 !important}.theme-malfunction .Button--selected{transition:color 50ms,background-color 50ms;background-color:#1e5881;color:#fff}.theme-malfunction .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-malfunction .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-malfunction .Button--selected:hover,.theme-malfunction .Button--selected:focus{background-color:#3678a8;color:#fff}.theme-malfunction .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #910101;border:.0833333333em solid rgba(145,1,1,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-malfunction .Input--fluid{display:block;width:auto}.theme-malfunction .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-malfunction .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-malfunction .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-malfunction .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-malfunction .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:bold;font-style:italic;color:#fff;background-color:#1a3f57;background-image:repeating-linear-gradient(-45deg, transparent, transparent 0.8333333333em, rgba(0, 0, 0, 0.1) 0.8333333333em, rgba(0, 0, 0, 0.1) 1.6666666667em)}.theme-malfunction .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-malfunction .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-malfunction .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-malfunction .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-malfunction .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #910101;border:.0833333333em solid rgba(145,1,1,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-malfunction .Input--fluid{display:block;width:auto}.theme-malfunction .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-malfunction .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-malfunction .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-malfunction .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-malfunction .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #910101;border:.0833333333em solid rgba(145,1,1,.75);border-radius:.16em;color:#910101;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-malfunction .NumberInput--fluid{display:block}.theme-malfunction .NumberInput__content{margin-left:.5em}.theme-malfunction .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-malfunction .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #910101;background-color:#910101}.theme-malfunction .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-malfunction .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color 900ms ease-out}.theme-malfunction .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-malfunction .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-malfunction .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-malfunction .ProgressBar--color--default{border:.0833333333em solid #7b0101}.theme-malfunction .ProgressBar--color--default .ProgressBar__fill{background-color:#7b0101}.theme-malfunction .Section{position:relative;margin-bottom:.5em;background-color:#12232d;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-malfunction .Section:last-child{margin-bottom:0}.theme-malfunction .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #910101}.theme-malfunction .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-malfunction .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-malfunction .Section__rest{position:relative}.theme-malfunction .Section__content{padding:.66em .5em}.theme-malfunction .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-malfunction .Section--fill{display:flex;flex-direction:column;height:100%}.theme-malfunction .Section--fill>.Section__rest{flex-grow:1}.theme-malfunction .Section--fill>.Section__rest>.Section__content{height:100%}.theme-malfunction .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-malfunction .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-malfunction .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-malfunction .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-malfunction .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-malfunction .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-malfunction .Section .Section:first-child{margin-top:-0.5em}.theme-malfunction .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-malfunction .Section .Section .Section .Section__titleText{font-size:1em}.theme-malfunction .Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:all 150ms ease-out;background-color:#235577;color:#fff;box-shadow:.1em .1em 1.25em -0.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.theme-malfunction .Layout,.theme-malfunction .Layout *{scrollbar-base-color:#142732;scrollbar-face-color:#274b61;scrollbar-3dlight-color:#1b3443;scrollbar-highlight-color:#1b3443;scrollbar-track-color:#142732;scrollbar-arrow-color:#6ba2c3;scrollbar-shadow-color:#274b61}.theme-malfunction .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-malfunction .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-malfunction .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b3443;background-image:linear-gradient(to bottom, #244559 0%, #12232d 100%)}.theme-malfunction .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-malfunction .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-malfunction .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-malfunction .Window__contentPadding:after{height:0}.theme-malfunction .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-malfunction .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,79,96,.25);pointer-events:none}.theme-malfunction .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-malfunction .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-malfunction .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-malfunction .TitleBar{background-color:#1a3f57;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-malfunction .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#1a3f57;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-malfunction .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-malfunction .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-malfunction .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-malfunction .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-malfunction .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-malfunction .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-malfunction .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-malfunction .Layout__content{background-image:none}
+.theme-neutral .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-neutral .Button:last-child{margin-right:0;margin-bottom:0}.theme-neutral .Button .fa,.theme-neutral .Button .fas,.theme-neutral .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-neutral .Button--hasContent .fa,.theme-neutral .Button--hasContent .fas,.theme-neutral .Button--hasContent .far{margin-right:.25em}.theme-neutral .Button--hasContent.Button--iconPosition--right .fa,.theme-neutral .Button--hasContent.Button--iconPosition--right .fas,.theme-neutral .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-neutral .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-neutral .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-neutral .Button--circular{border-radius:50%}.theme-neutral .Button--compact{padding:0 .25em;line-height:1.333em}.theme-neutral .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#b37d00;color:#fff}.theme-neutral .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-neutral .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-neutral .Button--color--default:hover,.theme-neutral .Button--color--default:focus{background-color:#e1a313;color:#fff}.theme-neutral .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-neutral .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-neutral .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-neutral .Button--color--caution:hover,.theme-neutral .Button--color--caution:focus{background-color:#f5d72e;color:#000}.theme-neutral .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-neutral .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-neutral .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-neutral .Button--color--danger:hover,.theme-neutral .Button--color--danger:focus{background-color:#dc4848;color:#fff}.theme-neutral .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#996b00;color:#fff;background-color:rgba(153,107,0,0);color:#ffca4d}.theme-neutral .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-neutral .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-neutral .Button--color--transparent:hover,.theme-neutral .Button--color--transparent:focus{background-color:#c38f13;color:#fff}.theme-neutral .Button--disabled{background-color:#999 !important}.theme-neutral .Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.theme-neutral .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-neutral .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-neutral .Button--selected:hover,.theme-neutral .Button--selected:focus{background-color:#32c154;color:#fff}.theme-neutral .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color 900ms ease-out}.theme-neutral .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-neutral .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-neutral .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-neutral .ProgressBar--color--default{border:.0833333333em solid #ffb300}.theme-neutral .ProgressBar--color--default .ProgressBar__fill{background-color:#ffb300}.theme-neutral .Section{position:relative;margin-bottom:.5em;background-color:#674800;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-neutral .Section:last-child{margin-bottom:0}.theme-neutral .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #ffb300}.theme-neutral .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-neutral .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-neutral .Section__rest{position:relative}.theme-neutral .Section__content{padding:.66em .5em}.theme-neutral .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-neutral .Section--fill{display:flex;flex-direction:column;height:100%}.theme-neutral .Section--fill>.Section__rest{flex-grow:1}.theme-neutral .Section--fill>.Section__rest>.Section__content{height:100%}.theme-neutral .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-neutral .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-neutral .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-neutral .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-neutral .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-neutral .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-neutral .Section .Section:first-child{margin-top:-0.5em}.theme-neutral .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-neutral .Section .Section .Section .Section__titleText{font-size:1em}.theme-neutral .Layout,.theme-neutral .Layout *{scrollbar-base-color:#735100;scrollbar-face-color:#bd8400;scrollbar-3dlight-color:#996b00;scrollbar-highlight-color:#996b00;scrollbar-track-color:#735100;scrollbar-arrow-color:#ffca4d;scrollbar-shadow-color:#bd8400}.theme-neutral .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-neutral .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-neutral .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#996b00;background-image:linear-gradient(to bottom, #b88100 0%, #7a5600 100%)}.theme-neutral .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-neutral .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-neutral .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-neutral .Window__contentPadding:after{height:0}.theme-neutral .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-neutral .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(195,143,19,.25);pointer-events:none}.theme-neutral .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-neutral .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-neutral .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-neutral .TitleBar{background-color:#bf8600;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-neutral .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#bf8600;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-neutral .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-neutral .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-neutral .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-neutral .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-neutral .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-neutral .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-neutral .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-neutral .Layout__content{background-image:url(data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJ1c2VyLXNlY3JldCIgY2xhc3M9InN2Zy1pbmxpbmUtLWZhIGZhLXVzZXItc2VjcmV0IGZhLXctMTQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDQ4IDUxMiIgIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTM4My45IDMwOC4zbDIzLjktNjIuNmM0LTEwLjUtMy43LTIxLjctMTUtMjEuN2gtNTguNWMxMS0xOC45IDE3LjgtNDAuNiAxNy44LTY0di0uM2MzOS4yLTcuOCA2NC0xOS4xIDY0LTMxLjcgMC0xMy4zLTI3LjMtMjUuMS03MC4xLTMzLTkuMi0zMi44LTI3LTY1LjgtNDAuNi04Mi44LTkuNS0xMS45LTI1LjktMTUuNi0zOS41LTguOGwtMjcuNiAxMy44Yy05IDQuNS0xOS42IDQuNS0yOC42IDBMMTgyLjEgMy40Yy0xMy42LTYuOC0zMC0zLjEtMzkuNSA4LjgtMTMuNSAxNy0zMS40IDUwLTQwLjYgODIuOC00Mi43IDcuOS03MCAxOS43LTcwIDMzIDAgMTIuNiAyNC44IDIzLjkgNjQgMzEuN3YuM2MwIDIzLjQgNi44IDQ1LjEgMTcuOCA2NEg1Ni4zYy0xMS41IDAtMTkuMiAxMS43LTE0LjcgMjIuM2wyNS44IDYwLjJDMjcuMyAzMjkuOCAwIDM3Mi43IDAgNDIyLjR2NDQuOEMwIDQ5MS45IDIwLjEgNTEyIDQ0LjggNTEyaDM1OC40YzI0LjcgMCA0NC44LTIwLjEgNDQuOC00NC44di00NC44YzAtNDguNC0yNS44LTkwLjQtNjQuMS0xMTQuMXpNMTc2IDQ4MGwtNDEuNi0xOTIgNDkuNiAzMiAyNCA0MC0zMiAxMjB6bTk2IDBsLTMyLTEyMCAyNC00MCA0OS42LTMyTDI3MiA0ODB6bTQxLjctMjk4LjVjLTMuOSAxMS45LTcgMjQuNi0xNi41IDMzLjQtMTAuMSA5LjMtNDggMjIuNC02NC0yNS0yLjgtOC40LTE1LjQtOC40LTE4LjMgMC0xNyA1MC4yLTU2IDMyLjQtNjQgMjUtOS41LTguOC0xMi43LTIxLjUtMTYuNS0zMy40LS44LTIuNS02LjMtNS43LTYuMy01Ljh2LTEwLjhjMjguMyAzLjYgNjEgNS44IDk2IDUuOHM2Ny43LTIuMSA5Ni01Ljh2MTAuOGMtLjEuMS01LjYgMy4yLTYuNCA1Ljh6Ij48L3BhdGg+DQo8L3N2Zz4NCjwhLS0gVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIGEgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIC0tPg0KPCEtLSBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvIC0tPg==)}
+.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconPosition--right .fa,.theme-ntos .Button--hasContent.Button--iconPosition--right .fas,.theme-ntos .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#384e68;color:#fff}.theme-ntos .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-ntos .Button--color--default:hover,.theme-ntos .Button--color--default:focus{background-color:#546d8b;color:#fff}.theme-ntos .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-ntos .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-ntos .Button--color--caution:hover,.theme-ntos .Button--color--caution:focus{background-color:#f5d72e;color:#000}.theme-ntos .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-ntos .Button--color--danger:hover,.theme-ntos .Button--color--danger:focus{background-color:#dc4848;color:#fff}.theme-ntos .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#1f2b39;color:#fff;background-color:rgba(31,43,57,0);color:rgba(227,240,255,.75)}.theme-ntos .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-ntos .Button--color--transparent:hover,.theme-ntos .Button--color--transparent:focus{background-color:#374555;color:#fff}.theme-ntos .Button--disabled{background-color:#999 !important}.theme-ntos .Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.theme-ntos .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-ntos .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-ntos .Button--selected:hover,.theme-ntos .Button--selected:focus{background-color:#32c154;color:#fff}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color 900ms ease-out}.theme-ntos .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #384e68}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#384e68}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#151d26;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-ntos .Section .Section:first-child{margin-top:-0.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#17202b;scrollbar-face-color:#2e3f55;scrollbar-3dlight-color:#1f2b39;scrollbar-highlight-color:#1f2b39;scrollbar-track-color:#17202b;scrollbar-arrow-color:#7693b5;scrollbar-shadow-color:#2e3f55}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-ntos .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1f2b39;background-image:linear-gradient(to bottom, #223040 0%, #1b2633 100%)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(55,69,85,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#2a3b4e;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#2a3b4e;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-ntos .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}
+.theme-paper .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:rgba(0,0,0,.33)}.theme-paper .Tabs--fill{height:100%}.theme-paper .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-paper .Section:not(.Section--fitted) .Tabs{margin:0 -0.5em .5em}.theme-paper .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-0.5em}.theme-paper .Tabs--vertical{flex-direction:column;padding:.25em 0 .25em .25em}.theme-paper .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0 .25em}.theme-paper .Tabs--horizontal:last-child{margin-bottom:0}.theme-paper .Tabs__Tab{flex-grow:0}.theme-paper .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-paper .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em}.theme-paper .Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075)}.theme-paper .Tab--selected{background-color:rgba(255,255,255,.125);color:#fafafa}.theme-paper .Tab__text{flex-grow:1;margin:0 .5em}.theme-paper .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-paper .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-paper .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-paper .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #f9f9f9}.theme-paper .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-bottom-left-radius:.25em}.theme-paper .Tabs--vertical .Tab--selected{border-right:.1666666667em solid #f9f9f9}.theme-paper .Section{position:relative;margin-bottom:.5em;background-color:#e6e6e6;background-color:rgba(0,0,0,.1);box-sizing:border-box}.theme-paper .Section:last-child{margin-bottom:0}.theme-paper .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-paper .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#000}.theme-paper .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paper .Section__rest{position:relative}.theme-paper .Section__content{padding:.66em .5em}.theme-paper .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paper .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paper .Section--fill>.Section__rest{flex-grow:1}.theme-paper .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paper .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paper .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-paper .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-paper .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paper .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-paper .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-paper .Section .Section:first-child{margin-top:-0.5em}.theme-paper .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paper .Section .Section .Section .Section__titleText{font-size:1em}.theme-paper .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paper .Button:last-child{margin-right:0;margin-bottom:0}.theme-paper .Button .fa,.theme-paper .Button .fas,.theme-paper .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-paper .Button--hasContent .fa,.theme-paper .Button--hasContent .fas,.theme-paper .Button--hasContent .far{margin-right:.25em}.theme-paper .Button--hasContent.Button--iconPosition--right .fa,.theme-paper .Button--hasContent.Button--iconPosition--right .fas,.theme-paper .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-paper .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paper .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paper .Button--circular{border-radius:50%}.theme-paper .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paper .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#e8e4c9;color:#000}.theme-paper .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-paper .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-paper .Button--color--default:hover,.theme-paper .Button--color--default:focus{background-color:#fbfaf6;color:#000}.theme-paper .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-paper .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-paper .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-paper .Button--color--caution:hover,.theme-paper .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-paper .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-paper .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-paper .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-paper .Button--color--danger:hover,.theme-paper .Button--color--danger:focus{background-color:#c4c813;color:#fff}.theme-paper .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#fff;color:#000;background-color:rgba(255,255,255,0);color:rgba(0,0,0,.5)}.theme-paper .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-paper .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-paper .Button--color--transparent:hover,.theme-paper .Button--color--transparent:focus{background-color:#fff;color:#000}.theme-paper .Button--disabled{background-color:#363636 !important}.theme-paper .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-paper .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-paper .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-paper .Button--selected:hover,.theme-paper .Button--selected:focus{background-color:#c81c1c;color:#fff}.theme-paper .Layout,.theme-paper .Layout *{scrollbar-base-color:#bfbfbf;scrollbar-face-color:#fff;scrollbar-3dlight-color:#fff;scrollbar-highlight-color:#fff;scrollbar-track-color:#bfbfbf;scrollbar-arrow-color:#fff;scrollbar-shadow-color:#fff}.theme-paper .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-paper .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-paper .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#fff;background-image:linear-gradient(to bottom, white 0%, white 100%)}.theme-paper .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paper .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paper .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paper .Window__contentPadding:after{height:0}.theme-paper .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paper .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,.25);pointer-events:none}.theme-paper .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paper .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paper .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paper .TitleBar{background-color:#fff;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paper .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#fff;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-paper .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paper .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-paper .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-paper .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paper .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-paper .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paper .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paper .PaperInput{position:relative;display:inline-block;width:120px;border:none;background:rgba(0,0,0,0);border-bottom:1px solid #000;outline:none;background-color:rgba(255,255,62,.8);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-paper .PaperInput__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paper .PaperInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:12px;line-height:17px;height:17px;margin:0;padding:0 6px;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paper .PaperInput__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paper .Layout__content{background-image:none}.theme-paper .Window{background-image:none;color:#000}.theme-paper .paper-text input:disabled{position:relative;display:inline-block;border:none;background:rgba(0,0,0,0);border-bottom:1px solid #000;outline:none;background-color:rgba(255,255,62,.8);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-paper .paper-text input{position:relative;display:inline-block;border:none;background:rgba(0,0,0,0);border-bottom:1px solid #000;outline:none;background-color:rgba(255,255,62,.8);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-paper .paper-field{position:relative;display:inline-block;border:none;background:rgba(0,0,0,0);border-bottom:1px solid #000;outline:none;background-color:rgba(255,255,62,.8);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}.theme-paper .paper-field input:disabled{position:relative;display:inline-block;border:none;background:rgba(0,0,0,0);border-bottom:1px solid #000;outline:none;background-color:rgba(255,255,62,.8);padding:0 4px;margin-right:2px;line-height:17px;overflow:visible}
+.theme-retro .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:0;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-retro .Button:last-child{margin-right:0;margin-bottom:0}.theme-retro .Button .fa,.theme-retro .Button .fas,.theme-retro .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-retro .Button--hasContent .fa,.theme-retro .Button--hasContent .fas,.theme-retro .Button--hasContent .far{margin-right:.25em}.theme-retro .Button--hasContent.Button--iconPosition--right .fa,.theme-retro .Button--hasContent.Button--iconPosition--right .fas,.theme-retro .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-retro .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-retro .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-retro .Button--circular{border-radius:50%}.theme-retro .Button--compact{padding:0 .25em;line-height:1.333em}.theme-retro .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#e8e4c9;color:#000}.theme-retro .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-retro .Button--color--default:hover,.theme-retro .Button--color--default:focus{background-color:#fbfaf6;color:#000}.theme-retro .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-retro .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-retro .Button--color--caution:hover,.theme-retro .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-retro .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-retro .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-retro .Button--color--danger:hover,.theme-retro .Button--color--danger:focus{background-color:#c4c813;color:#fff}.theme-retro .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#e8e4c9;color:#000;background-color:rgba(232,228,201,0);color:rgba(255,255,255,.5)}.theme-retro .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-retro .Button--color--transparent:hover,.theme-retro .Button--color--transparent:focus{background-color:#fbfaf6;color:#000}.theme-retro .Button--disabled{background-color:#363636 !important}.theme-retro .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-retro .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-retro .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-retro .Button--selected:hover,.theme-retro .Button--selected:focus{background-color:#c81c1c;color:#fff}.theme-retro .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:0;background-color:rgba(0,0,0,.5);transition:border-color 900ms ease-out}.theme-retro .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-retro .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-retro .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-retro .ProgressBar--color--default{border:.0833333333em solid #000}.theme-retro .ProgressBar--color--default .ProgressBar__fill{background-color:#000}.theme-retro .Section{position:relative;margin-bottom:.5em;background-color:#9b9987;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-retro .Section:last-child{margin-bottom:0}.theme-retro .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #000}.theme-retro .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-retro .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-retro .Section__rest{position:relative}.theme-retro .Section__content{padding:.66em .5em}.theme-retro .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-retro .Section--fill{display:flex;flex-direction:column;height:100%}.theme-retro .Section--fill>.Section__rest{flex-grow:1}.theme-retro .Section--fill>.Section__rest>.Section__content{height:100%}.theme-retro .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-retro .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-retro .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-retro .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-retro .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-retro .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-retro .Section .Section:first-child{margin-top:-0.5em}.theme-retro .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-retro .Section .Section .Section .Section__titleText{font-size:1em}.theme-retro .Layout,.theme-retro .Layout *{scrollbar-base-color:#c8be7d;scrollbar-face-color:#eae7ce;scrollbar-3dlight-color:#e8e4c9;scrollbar-highlight-color:#e8e4c9;scrollbar-track-color:#c8be7d;scrollbar-arrow-color:#f4f2e4;scrollbar-shadow-color:#eae7ce}.theme-retro .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-retro .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-retro .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#e8e4c9;background-image:linear-gradient(to bottom, #e8e4c9 0%, #e8e4c9 100%)}.theme-retro .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-retro .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-retro .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-retro .Window__contentPadding:after{height:0}.theme-retro .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-retro .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(251,250,246,.25);pointer-events:none}.theme-retro .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-retro .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-retro .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-retro .TitleBar{background-color:#585337;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-retro .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#585337;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-retro .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-retro .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-retro .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-retro .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-retro .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-retro .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-retro .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-retro .Button{font-family:monospace;color:#161613;border:.1666666667em outset #e8e4c9;outline:.0833333333em solid #161613}.theme-retro .Layout__content{background-image:none}
+.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconPosition--right .fa,.theme-syndicate .Button--hasContent.Button--iconPosition--right .fas,.theme-syndicate .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#397439;color:#fff}.theme-syndicate .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-syndicate .Button--color--default:hover,.theme-syndicate .Button--color--default:focus{background-color:#595;color:#fff}.theme-syndicate .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-syndicate .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-syndicate .Button--color--caution:hover,.theme-syndicate .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-syndicate .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-syndicate .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-syndicate .Button--color--danger:hover,.theme-syndicate .Button--color--danger:focus{background-color:#c4c813;color:#fff}.theme-syndicate .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#550202;color:#fff;background-color:rgba(85,2,2,0);color:rgba(255,255,255,.5)}.theme-syndicate .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-syndicate .Button--color--transparent:hover,.theme-syndicate .Button--color--transparent:focus{background-color:#751616;color:#fff}.theme-syndicate .Button--disabled{background-color:#363636 !important}.theme-syndicate .Button--selected{transition:color 50ms,background-color 50ms;background-color:#9d0808;color:#fff}.theme-syndicate .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-syndicate .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-syndicate .Button--selected:hover,.theme-syndicate .Button--selected:focus{background-color:#c81c1c;color:#fff}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:bold;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg, transparent, transparent 0.8333333333em, rgba(0, 0, 0, 0.1) 0.8333333333em, rgba(0, 0, 0, 0.1) 1.6666666667em)}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color 900ms ease-out}.theme-syndicate .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#390101;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-syndicate .Section .Section:first-child{margin-top:-0.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:all 150ms ease-out;background-color:#4a0202;color:#fff;box-shadow:.1em .1em 1.25em -0.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#400202;scrollbar-face-color:#7e0303;scrollbar-3dlight-color:#550202;scrollbar-highlight-color:#550202;scrollbar-track-color:#400202;scrollbar-arrow-color:#fa3030;scrollbar-shadow-color:#7e0303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#550202;background-image:linear-gradient(to bottom, #730303 0%, #370101 100%)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(117,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-syndicate .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .Layout__content{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==)}
+.theme-wizard .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:2px;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-wizard .Button:last-child{margin-right:0;margin-bottom:0}.theme-wizard .Button .fa,.theme-wizard .Button .fas,.theme-wizard .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-wizard .Button--hasContent .fa,.theme-wizard .Button--hasContent .fas,.theme-wizard .Button--hasContent .far{margin-right:.25em}.theme-wizard .Button--hasContent.Button--iconPosition--right .fa,.theme-wizard .Button--hasContent.Button--iconPosition--right .fas,.theme-wizard .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-wizard .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-wizard .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-wizard .Button--circular{border-radius:50%}.theme-wizard .Button--compact{padding:0 .25em;line-height:1.333em}.theme-wizard .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#1596b6;color:#fff}.theme-wizard .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-wizard .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-wizard .Button--color--default:hover,.theme-wizard .Button--color--default:focus{background-color:#30bde0;color:#fff}.theme-wizard .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-wizard .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-wizard .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-wizard .Button--color--caution:hover,.theme-wizard .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-wizard .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#b30707;color:#fff}.theme-wizard .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-wizard .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-wizard .Button--color--danger:hover,.theme-wizard .Button--color--danger:focus{background-color:#e11b1b;color:#fff}.theme-wizard .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#213e4e;color:#fff;background-color:rgba(33,62,78,0);color:rgba(255,255,255,.5)}.theme-wizard .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-wizard .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-wizard .Button--color--transparent:hover,.theme-wizard .Button--color--transparent:focus{background-color:#395b6d;color:#fff}.theme-wizard .Button--disabled{background-color:#02426d !important}.theme-wizard .Button--selected{transition:color 50ms,background-color 50ms;background-color:#465899;color:#fff}.theme-wizard .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-wizard .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-wizard .Button--selected:hover,.theme-wizard .Button--selected:focus{background-color:#6e7eba;color:#fff}.theme-wizard .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #404b6e;border:.0833333333em solid rgba(64,75,110,.75);border-radius:2px;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-wizard .Input--fluid{display:block;width:auto}.theme-wizard .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-wizard .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-wizard .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-wizard .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-wizard .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:bold;font-style:italic;color:#fff;background-color:#a82d55;background-image:repeating-linear-gradient(-45deg, transparent, transparent 0.8333333333em, rgba(0, 0, 0, 0.1) 0.8333333333em, rgba(0, 0, 0, 0.1) 1.6666666667em)}.theme-wizard .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-wizard .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-wizard .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-wizard .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-wizard .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #404b6e;border:.0833333333em solid rgba(64,75,110,.75);border-radius:2px;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-wizard .Input--fluid{display:block;width:auto}.theme-wizard .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-wizard .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-wizard .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-wizard .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-wizard .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #404b6e;border:.0833333333em solid rgba(64,75,110,.75);border-radius:2px;color:#404b6e;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-wizard .NumberInput--fluid{display:block}.theme-wizard .NumberInput__content{margin-left:.5em}.theme-wizard .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-wizard .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #404b6e;background-color:#404b6e}.theme-wizard .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-wizard .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:2px;background-color:rgba(0,0,0,.5);transition:border-color 900ms ease-out}.theme-wizard .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-wizard .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-wizard .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-wizard .ProgressBar--color--default{border:.0833333333em solid #12809b}.theme-wizard .ProgressBar--color--default .ProgressBar__fill{background-color:#12809b}.theme-wizard .Section{position:relative;margin-bottom:.5em;background-color:#162a34;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-wizard .Section:last-child{margin-bottom:0}.theme-wizard .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #1596b6}.theme-wizard .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-wizard .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-wizard .Section__rest{position:relative}.theme-wizard .Section__content{padding:.66em .5em}.theme-wizard .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-wizard .Section--fill{display:flex;flex-direction:column;height:100%}.theme-wizard .Section--fill>.Section__rest{flex-grow:1}.theme-wizard .Section--fill>.Section__rest>.Section__content{height:100%}.theme-wizard .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-wizard .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-wizard .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-wizard .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-wizard .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-wizard .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-wizard .Section .Section:first-child{margin-top:-0.5em}.theme-wizard .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-wizard .Section .Section .Section .Section__titleText{font-size:1em}.theme-wizard .Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:all 150ms ease-out;background-color:#2da848;color:#fff;box-shadow:.1em .1em 1.25em -0.1em rgba(0,0,0,.5);border-radius:2px;max-width:20.8333333333em}.theme-wizard .Layout,.theme-wizard .Layout *{scrollbar-base-color:#192f3b;scrollbar-face-color:#2d546a;scrollbar-3dlight-color:#213e4e;scrollbar-highlight-color:#213e4e;scrollbar-track-color:#192f3b;scrollbar-arrow-color:#73a7c4;scrollbar-shadow-color:#2d546a}.theme-wizard .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-wizard .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-wizard .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#213e4e;background-image:linear-gradient(to bottom, #2a4f64 0%, #182d38 100%)}.theme-wizard .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-wizard .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-wizard .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-wizard .Window__contentPadding:after{height:0}.theme-wizard .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-wizard .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(57,91,109,.25);pointer-events:none}.theme-wizard .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-wizard .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-wizard .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-wizard .TitleBar{background-color:#1b9e26;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-wizard .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#1b9e26;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-wizard .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-wizard .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-wizard .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-wizard .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-wizard .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-wizard .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-wizard .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-wizard .Layout__content{background-image:url(data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJtZXRlb3IiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS1tZXRlb3IgZmEtdy0xNiIgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBvcGFjaXR5PSIuMzMiPjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTUxMS4zMjgsMjAuODAyN2MtMTEuNjA3NTksMzguNzAyNjQtMzQuMzA3MjQsMTExLjcwMTczLTYxLjMwMzExLDE4Ny43MDA3Nyw2Ljk5ODkzLDIuMDkzNzIsMTMuNDA0Miw0LDE4LjYwNjUzLDUuNTkzNjhhMTYuMDYxNTgsMTYuMDYxNTgsMCwwLDEsOS40OTg1NCwyMi45MDZjLTIyLjEwNiw0Mi4yOTYzNS04Mi42OTA0NywxNTIuNzk1LTE0Mi40NzgxOSwyMTQuNDAzNTYtLjk5OTg0LDEuMDkzNzMtMS45OTk2OSwyLjUtMi45OTk1NCwzLjQ5OTk1QTE5NC44MzA0NiwxOTQuODMwNDYsMCwxLDEsNTcuMDg1LDE3OS40MTAwOWMuOTk5ODUtMSwyLjQwNTg4LTIsMy40OTk0Ny0zLDYxLjU5OTk0LTU5LjkwNTQ5LDE3MS45NzM2Ny0xMjAuNDA0NzMsMjE0LjM3MzQzLTE0Mi40OTgyYTE2LjA1OCwxNi4wNTgsMCwwLDEsMjIuOTAyNzQsOS40OTk4OGMxLjU5MzUxLDUuMDkzNjgsMy40OTk0NywxMS41OTM2LDUuNTkyOSwxOC41OTM1MUMzNzkuMzQ4MTgsMzUuMDA1NjUsNDUyLjQzMDc0LDEyLjMwMjgxLDQ5MS4xMjc5NC43MDkyMUExNi4xODMyNSwxNi4xODMyNSwwLDAsMSw1MTEuMzI4LDIwLjgwMjdaTTMxOS45NTEsMzIwLjAwMjA3QTEyNy45ODA0MSwxMjcuOTgwNDEsMCwxLDAsMTkxLjk3MDYxLDQ0OC4wMDA0NiwxMjcuOTc1NzMsMTI3Ljk3NTczLDAsMCwwLDMxOS45NTEsMzIwLjAwMjA3Wm0tMTI3Ljk4MDQxLTMxLjk5OTZhMzEuOTk1MSwzMS45OTUxLDAsMSwxLTMxLjk5NTEtMzEuOTk5NkEzMS45NTksMzEuOTU5LDAsMCwxLDE5MS45NzA2MSwyODguMDAyNDdabTMxLjk5NTEsNzkuOTk5YTE1Ljk5NzU1LDE1Ljk5NzU1LDAsMSwxLTE1Ljk5NzU1LTE1Ljk5OThBMTYuMDQ5NzUsMTYuMDQ5NzUsMCwwLDEsMjIzLjk2NTcxLDM2OC4wMDE0N1oiPjwvcGF0aD48L3N2Zz4NCjwhLS0gVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIGEgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIC0tPg0KPCEtLSBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvIC0tPg==)}
+.theme-clockcult .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;outline:0;border-radius:2px;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-clockcult .Button:last-child{margin-right:0;margin-bottom:0}.theme-clockcult .Button .fa,.theme-clockcult .Button .fas,.theme-clockcult .Button .far{margin-left:-0.25em;margin-right:-0.25em;min-width:1.333em;text-align:center}.theme-clockcult .Button--hasContent .fa,.theme-clockcult .Button--hasContent .fas,.theme-clockcult .Button--hasContent .far{margin-right:.25em}.theme-clockcult .Button--hasContent.Button--iconPosition--right .fa,.theme-clockcult .Button--hasContent.Button--iconPosition--right .fas,.theme-clockcult .Button--hasContent.Button--iconPosition--right .far{margin-right:0px;margin-left:3px}.theme-clockcult .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-clockcult .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-clockcult .Button--circular{border-radius:50%}.theme-clockcult .Button--compact{padding:0 .25em;line-height:1.333em}.theme-clockcult .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#5f380e;color:#fff}.theme-clockcult .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-clockcult .Button--color--default:focus{transition:color 100ms,background-color 100ms}.theme-clockcult .Button--color--default:hover,.theme-clockcult .Button--color--default:focus{background-color:#815423;color:#fff}.theme-clockcult .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#ffae42;color:#000}.theme-clockcult .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-clockcult .Button--color--caution:focus{transition:color 100ms,background-color 100ms}.theme-clockcult .Button--color--caution:hover,.theme-clockcult .Button--color--caution:focus{background-color:#ffd398;color:#000}.theme-clockcult .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#f0ff23;color:#000}.theme-clockcult .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-clockcult .Button--color--danger:focus{transition:color 100ms,background-color 100ms}.theme-clockcult .Button--color--danger:hover,.theme-clockcult .Button--color--danger:focus{background-color:#f6ff75;color:#000}.theme-clockcult .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#c9b12a;color:#000;background-color:rgba(201,177,42,0);color:rgba(255,255,255,.5)}.theme-clockcult .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-clockcult .Button--color--transparent:focus{transition:color 100ms,background-color 100ms}.theme-clockcult .Button--color--transparent:hover,.theme-clockcult .Button--color--transparent:focus{background-color:#dcca61;color:#000}.theme-clockcult .Button--disabled{background-color:#2d1400 !important}.theme-clockcult .Button--selected{transition:color 50ms,background-color 50ms;background-color:#cfba47;color:#000}.theme-clockcult .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-clockcult .Button--selected:focus{transition:color 100ms,background-color 100ms}.theme-clockcult .Button--selected:hover,.theme-clockcult .Button--selected:focus{background-color:#dfd286;color:#000}.theme-clockcult .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #cfba47;border:.0833333333em solid rgba(207,186,71,.75);border-radius:2px;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-clockcult .Input--fluid{display:block;width:auto}.theme-clockcult .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-clockcult .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-clockcult .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-clockcult .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-clockcult .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:bold;font-style:italic;color:#fff;background-color:#886a09;background-image:repeating-linear-gradient(-45deg, transparent, transparent 0.8333333333em, rgba(0, 0, 0, 0.1) 0.8333333333em, rgba(0, 0, 0, 0.1) 1.6666666667em)}.theme-clockcult .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-clockcult .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-clockcult .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-clockcult .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-clockcult .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #cfba47;border:.0833333333em solid rgba(207,186,71,.75);border-radius:2px;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-clockcult .Input--fluid{display:block;width:auto}.theme-clockcult .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-clockcult .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-clockcult .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-clockcult .Input--monospace .Input__input{font-family:"Consolas",monospace}.theme-clockcult .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #cfba47;border:.0833333333em solid rgba(207,186,71,.75);border-radius:2px;color:#cfba47;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-clockcult .NumberInput--fluid{display:block}.theme-clockcult .NumberInput__content{margin-left:.5em}.theme-clockcult .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-clockcult .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #cfba47;background-color:#cfba47}.theme-clockcult .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-clockcult .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:2px;background-color:#2d1400;transition:border-color 900ms ease-out}.theme-clockcult .ProgressBar__fill{position:absolute;top:-0.5px;bottom:-0.5px}.theme-clockcult .ProgressBar__fill--animated{transition:background-color 900ms ease-out,width 900ms ease-out}.theme-clockcult .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-clockcult .ProgressBar--color--default{border:.0833333333em solid #96761f}.theme-clockcult .ProgressBar--color--default .ProgressBar__fill{background-color:#96761f}.theme-clockcult .Section{position:relative;margin-bottom:.5em;background-color:#87771c;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-clockcult .Section:last-child{margin-bottom:0}.theme-clockcult .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #b18b25}.theme-clockcult .Section__titleText{font-size:1.1666666667em;font-weight:bold;color:#fff}.theme-clockcult .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-clockcult .Section__rest{position:relative}.theme-clockcult .Section__content{padding:.66em .5em}.theme-clockcult .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-clockcult .Section--fill{display:flex;flex-direction:column;height:100%}.theme-clockcult .Section--fill>.Section__rest{flex-grow:1}.theme-clockcult .Section--fill>.Section__rest>.Section__content{height:100%}.theme-clockcult .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-clockcult .Section--fill.Section--iefix{display:table !important;width:100% !important;height:100% !important;border-collapse:collapse;border-spacing:0}.theme-clockcult .Section--fill.Section--iefix>.Section__rest{display:table-row !important;height:100% !important}.theme-clockcult .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-clockcult .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-clockcult .Section .Section{background-color:rgba(0,0,0,0);margin-left:-0.5em;margin-right:-0.5em}.theme-clockcult .Section .Section:first-child{margin-top:-0.5em}.theme-clockcult .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-clockcult .Section .Section .Section .Section__titleText{font-size:1em}.theme-clockcult .Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:all 150ms ease-out;background-color:#2d1400;color:#fff;box-shadow:.1em .1em 1.25em -0.1em rgba(0,0,0,.5);border-radius:2px;max-width:20.8333333333em}.theme-clockcult .Layout,.theme-clockcult .Layout *{scrollbar-base-color:#978520;scrollbar-face-color:#d5be38;scrollbar-3dlight-color:#c9b12a;scrollbar-highlight-color:#c9b12a;scrollbar-track-color:#978520;scrollbar-arrow-color:#e8db91;scrollbar-shadow-color:#d5be38}.theme-clockcult .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-clockcult .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-clockcult .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#c9b12a;background-image:linear-gradient(to bottom, #d6bf3b 0%, #b09b25 100%)}.theme-clockcult .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-clockcult .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-clockcult .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-clockcult .Window__contentPadding:after{height:0}.theme-clockcult .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-clockcult .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(220,202,97,.25);pointer-events:none}.theme-clockcult .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-clockcult .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-clockcult .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-clockcult .TitleBar{background-color:#2d1400;border-bottom:1px solid #170800;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-clockcult .TitleBar__clickable{color:rgba(207,186,71,.5);background-color:#2d1400;transition:color 250ms ease-out,background-color 250ms ease-out}.theme-clockcult .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-clockcult .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:#cfba47;font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-clockcult .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-clockcult .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-clockcult .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px !important;line-height:2.6666666667rem !important}.theme-clockcult .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-clockcult .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(207,186,71,.75);color:#fff;text-align:center}.theme-clockcult .Layout__content{background-image:none}
diff --git a/tgui/public/tgui.bundle.js b/tgui/public/tgui.bundle.js
new file mode 100644
index 00000000000..37b2a007758
--- /dev/null
+++ b/tgui/public/tgui.bundle.js
@@ -0,0 +1 @@
+!function(){var e,t={59261:function(e,t,n){"use strict";var o=n(58734);n(33603),n(57397),n(62048),n(39248),n(36030),n(32817),n(44576),n(21805),n(39292),n(74199),n(65138),n(46857);var r,a,c=n(15645),i=(n(60207),n(82611)),l=n(74489),d=n(1809),u=n(82265),s=n(46725);c.perf.mark("inception",null==(r=window.performance)||null==(a=r.timing)?void 0:a.navigationStart),c.perf.mark("init");var m=(0,u.configureStore)(),p=(0,d.createRenderer)((function(){var e=(0,n(3734).getRoutedComponent)(m);return(0,o.createComponentVNode)(2,u.StoreProvider,{store:m,children:(0,o.createComponentVNode)(2,e)})}));!function C(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)(),(0,i.setupHotKeys)(),(0,l.captureExternalLinks)(),m.subscribe(p),window.update=function(e){return m.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}0}else document.addEventListener("DOMContentLoaded",C)}()},17242:function(e,t,n){"use strict";t.__esModule=!0,t.AbductorConsole=void 0;var o=n(58734),r=n(75789),a=n(54777),c=n(50930),i=n(33677);t.AbductorConsole=function(e,t){var n=(0,a.useSharedState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{theme:"abductor",width:600,height:532,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===r,onClick:function(){return s(1)},children:"Abductsoft 3000"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===r,onClick:function(){return s(2)},children:"Mission Settings"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)],4)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=(n.act,n.data),l=i.experiment,d=i.points,u=i.credits;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Collected Samples",children:d})})}),(0,o.createComponentVNode)(2,r.GenericUplink,{currencyAmount:u,currencySymbol:"Credits"})],4):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Experiment Machine Detected"})},d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.pad,d=i.gizmo;return l?(0,o.createComponentVNode)(2,c.Section,{title:"Emergency Teleport",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-circle",content:"Activate",color:"bad",onClick:function(){return r("teleporter_send")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mark Retrieval",children:(0,o.createComponentVNode)(2,c.Button,{icon:d?"user-plus":"user-slash",content:d?"Retrieve":"No Mark",disabled:!d,onClick:function(){return r("teleporter_retrieve")}})})})}):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Telepad Detected"})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.vest,d=i.vest_mode,u=i.vest_lock;return l?(0,o.createComponentVNode)(2,c.Section,{title:"Agent Vest Settings",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",onClick:function(){return r("toggle_vest")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:1===d?"eye-slash":"fist-raised",content:1===d?"Stealth":"Combat",onClick:function(){return r("flip_vest")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Disguise",children:(0,o.createComponentVNode)(2,c.Button,{icon:"user-secret",content:"Select",onClick:function(){return r("select_disguise")}})})]})}):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Agent Vest Detected"})}},79110:function(e,t,n){"use strict";t.__esModule=!0,t.Achievements=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Achievements=function(e,t){var n=(0,r.useBackend)(t).data,l=n.categories,u=(0,r.useLocalState)(t,"category",l[0]),s=u[0],m=u[1],p=n.achievements.filter((function(e){return e.category===s}));return(0,o.createComponentVNode)(2,c.Window,{title:"Achievements",width:540,height:680,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[l.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:s===e,onClick:function(){return m(e)},children:e},e)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:"High Scores"===s,onClick:function(){return m("High Scores")},children:"High Scores"})]}),"High Scores"===s&&(0,o.createComponentVNode)(2,d)||(0,o.createComponentVNode)(2,i,{achievements:p})]})})};var i=function(e,t){var n=e.achievements;return(0,o.createComponentVNode)(2,a.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{achievement:e},e.name)}))})},l=function(e){var t=e.achievement,n=t.name,r=t.desc,c=t.icon_class,i=t.value,l=t.score;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Box,{m:1,className:c})}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",children:[(0,o.createVNode)(1,"h1",null,n,0),r,l&&(0,o.createComponentVNode)(2,a.Box,{color:i>0?"good":"bad",children:i>0?"Earned "+i+" times":"Locked"})||(0,o.createComponentVNode)(2,a.Box,{color:i?"good":"bad",children:i?"Unlocked":"Locked"})]})]},n)},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.highscore,i=n.user_ckey,l=(0,r.useLocalState)(t,"highscore",0),d=l[0],u=l[1],s=c[d];if(!s)return null;var m=Object.keys(s.scores).map((function(e){return{ckey:e,value:s.scores[e]}}));return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:c.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:d===t,onClick:function(){return u(t)},children:e.name},e.name)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Score"})]}),m.map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:t+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:e.ckey===i&&"green",textAlign:"center",children:[0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",mr:2}),e.ckey,0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.value})]},e.ckey)}))]})})]})}},81687:function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=i[d.power.main]||i[0],s=i[d.power.backup]||i[0],m=i[d.shock]||i[0];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.main,content:"Disrupt",onClick:function(){return l("disrupt-main")}}),children:[d.power.main?"Online":"Offline"," ",d.wires.main_1&&d.wires.main_2?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.backup,content:"Disrupt",onClick:function(){return l("disrupt-backup")}}),children:[d.power.backup?"Online":"Offline"," ",d.wires.backup_1&&d.wires.backup_2?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(d.wires.shock&&0===d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Permanent",onClick:function(){return l("shock-perm")}})],4),children:[2===d.shock?"Safe":"Electrified"," ",(d.wires.shock?d.shock_timeleft>0&&"["+d.shock_timeleft+"s]":"[Wires have been cut!]")||-1===d.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.id_scanner?"power-off":"times",content:d.id_scanner?"Enabled":"Disabled",selected:d.id_scanner,disabled:!d.wires.id_scanner,onClick:function(){return l("idscan-toggle")}}),children:!d.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.emergency?"power-off":"times",content:d.emergency?"Enabled":"Disabled",selected:d.emergency,onClick:function(){return l("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.locked?"lock":"unlock",content:d.locked?"Lowered":"Raised",selected:d.locked,disabled:!d.wires.bolts,onClick:function(){return l("bolt-toggle")}}),children:!d.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.lights?"power-off":"times",content:d.lights?"Enabled":"Disabled",selected:d.lights,disabled:!d.wires.lights,onClick:function(){return l("light-toggle")}}),children:!d.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.safe?"power-off":"times",content:d.safe?"Enabled":"Disabled",selected:d.safe,disabled:!d.wires.safe,onClick:function(){return l("safe-toggle")}}),children:!d.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.speed?"power-off":"times",content:d.speed?"Enabled":"Disabled",selected:d.speed,disabled:!d.wires.timing,onClick:function(){return l("speed-toggle")}}),children:!d.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.opened?"sign-out-alt":"sign-in-alt",content:d.opened?"Open":"Closed",selected:d.opened,disabled:d.locked||d.welded,onClick:function(){return l("open-close")}}),children:!(!d.locked&&!d.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),d.locked?"bolted":"",d.locked&&d.welded?" and ":"",d.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})]})})}},49855:function(e,t,n){"use strict";t.__esModule=!0,t.AiRestorerContent=t.AiRestorer=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.AiRestorer=function(){return(0,o.createComponentVNode)(2,c.Window,{width:370,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.AI_present,d=i.error,u=i.name,s=i.laws,m=i.isDead,p=i.restoring,C=i.health,h=i.ejectable;return(0,o.createFragment)([d&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:d}),!!h&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:l?u:"----------",disabled:!l,onClick:function(){return c("PRG_eject")}}),!!l&&(0,o.createComponentVNode)(2,a.Section,{title:h?"System Status":u,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m?"bad":"good",children:m?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:C,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return c("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{className:"candystripe",children:e},e)}))})]})],0)};t.AiRestorerContent=i},70203:function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(58734),r=n(5339),a=n(54777),c=n(50930),i=n(33677),l=n(32599),d=n(6701);t.AirAlarm=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),c=r.locked&&!r.siliconUser;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:650,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,u),!c&&(0,o.createComponentVNode)(2,m)]})})};var u=function(e,t){var n=(0,a.useBackend)(t).data,i=(n.environment_data||[]).filter((function(e){return e.value>=.01})),l={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},d=l[n.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[i.length>0&&(0,o.createFragment)([i.map((function(e){var t=l[e.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:d.color,children:d.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:n.atmos_alarm||n.fire_alarm?"bad":"good",children:(n.atmos_alarm?"Atmosphere Alarm":n.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!n.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return p}},vents:{title:"Vent Controls",component:function(){return C}},scrubbers:{title:"Scrubber Controls",component:function(){return h}},modes:{title:"Operating Mode",component:function(){return N}},thresholds:{title:"Alarm Thresholds",component:function(){return V}}},m=function(e,t){var n=(0,a.useLocalState)(t,"screen"),r=n[0],i=n[1],l=s[r]||s.home,d=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:r&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return i()}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(0,a.useLocalState)(t,"screen"),d=(l[0],l[1]),u=i.mode,s=i.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:s?"exclamation-triangle":"exclamation",color:s&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return r(s?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===u?"exclamation-triangle":"exclamation",color:3===u&&"danger",content:"Panic Siphon",onClick:function(){return r("mode",{mode:3===u?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return d("vents")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return d("scrubbers")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return d("modes")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return d("thresholds")}})],4)},C=function(e,t){var n=(0,a.useBackend)(t).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Vent,{vent:e},e.id_tag)})):"Nothing to show"},h=function(e,t){var n=(0,a.useBackend)(t).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Scrubber,{scrubber:e},e.id_tag)})):"Nothing to show"},N=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.modes;return i&&0!==i.length?i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return r("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},V=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,l.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return i("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},41904:function(e,t,n){"use strict";t.__esModule=!0,t.AirlockElectronics=t.AirlockAccessList=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(45445);function l(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=n.length?e=t?e-1:0:e<0&&(e=t?0:n.length-1);var o=this.buttonRefs[e].current;o&&setTimeout((function(){return o.focus()}),1),this.setState({current:e})},u.render=function(){var e=this,t=(0,a.useBackend)(this.context),n=t.act,r=t.data,d=r.title,u=r.message,m=r.buttons,p=r.timeout,C=this.state.current,h=function(){return e.setCurrent(C,!1)};return(0,o.createComponentVNode)(2,i.Window,{title:d,width:350,height:150,canClose:p>0,children:[p&&(0,o.createComponentVNode)(2,s,{value:p}),(0,o.createComponentVNode)(2,i.Window.Content,{onFocus:h,onClick:h,children:(0,o.createComponentVNode)(2,c.Section,{fill:!0,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",className:"AlertModal__Message",height:"100%",children:(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Box,{m:1,children:u})})})}),(0,o.createComponentVNode)(2,c.Flex.Item,{my:2,children:(0,o.createComponentVNode)(2,c.Flex,{className:"AlertModal__Buttons",children:m.map((function(t,r){return(0,o.createComponentVNode)(2,c.Flex.Item,{mx:1,children:(0,o.createVNode)(1,"div","Button Button--color--default",t,0,{px:3,onClick:function(){return n("choose",{choice:t})},onKeyDown:function(o){var r=window.event?o.which:o.keyCode;r===l.KEY_SPACE||r===l.KEY_ENTER?n("choose",{choice:t}):r===l.KEY_LEFT||o.shiftKey&&r===l.KEY_TAB?e.setCurrent(C-1,r===l.KEY_LEFT):r!==l.KEY_RIGHT&&r!==l.KEY_TAB||e.setCurrent(C+1,r===l.KEY_RIGHT)}},null,e.buttonRefs[r])},r)}))})})]})})})]})},r}(o.Component);t.AlertModal=u;var s=function(e){var t=e.value;return(0,o.createVNode)(1,"div","AlertModal__Loader",(0,o.createComponentVNode)(2,c.Box,{className:"AlertModal__LoaderProgress",style:{width:100*(0,r.clamp01)(t)+"%"}}),2)};t.Loader=s},80186:function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(32599);t.Apc=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:450,height:445,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,u)})})};var l={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.locked&&!u.siliconUser,m=l[u.externalPower]||l[0],p=l[u.chargingStatus]||l[0],C=u.powerChannels||[],h=d[u.malfStatus]||d[0],N=u.powerCellStatus/100;return u.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",u.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return c("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:m.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.isOperating?"power-off":"times",content:u.isOperating?"On":"Off",selected:u.isOperating&&!s,disabled:s,onClick:function(){return c("breaker")}}),children:["[ ",m.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.chargeMode?"sync":"close",content:u.chargeMode?"Auto":"Off",disabled:s,onClick:function(){return c("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[C.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!s&&(1===e.status||3===e.status),disabled:s,onClick:function(){return c("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!s&&2===e.status,disabled:s,onClick:function(){return c("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!s&&0===e.status,disabled:s,onClick:function(){return c("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,u.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!u.siliconUser&&(0,o.createFragment)([!!u.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:h.icon,content:h.content,color:"bad",onClick:function(){return c(h.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return c("overload")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.coverLocked?"lock":"unlock",content:u.coverLocked?"Engaged":"Disengaged",disabled:s,onClick:function(){return c("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.emergencyLights?"Enabled":"Disabled",disabled:s,onClick:function(){return c("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.nightshiftLights?"Enabled":"Disabled",onClick:function(){return c("toggle_nightshift")}})})]})})],4)}},16541:function(e,t,n){"use strict";t.__esModule=!0,t.ApcControl=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(59641),i=n(54777),l=n(50930),d=n(33677),u=n(81574);t.ApcControl=function(e,t){var n=(0,i.useBackend)(t).data;return(0,o.createComponentVNode)(2,d.Window,{title:"APC Controller",width:550,height:500,resizable:!0,children:[1===n.authenticated&&(0,o.createComponentVNode)(2,m),0===n.authenticated&&(0,o.createComponentVNode)(2,s)]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.emagged,c=1===a?"Open":"Log In";return(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,l.Button,{fluid:!0,color:1===a?"":"good",content:c,onClick:function(){return r("log-in")}})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.restoring,c=(0,i.useLocalState)(t,"tab-index",1),u=c[0],s=c[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Tabs,{children:[(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:1===u,onClick:function(){s(1),r("check-apcs")},children:"APC Control Panel"}),(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:2===u,onClick:function(){s(2),r("check-logs")},children:"Log View Panel"})]}),1===a&&(0,o.createComponentVNode)(2,l.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,l.Icon,{name:"cog",spin:!0})," Resetting..."]}),1===u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"53px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})],4),2===u&&(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"20px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,h)})})],0)},p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,c=a.emagged,d=a.logging,u=(0,i.useLocalState)(t,"sortByField",null),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,l.Flex.Item,{children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===s,content:"Name",onClick:function(){return m("name"!==s&&"name")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===s,content:"Charge",onClick:function(){return m("charge"!==s&&"charge")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===s,content:"Draw",onClick:function(){return m("draw"!==s&&"draw")}})]}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,l.Flex.Item,{children:[1===c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Button,{color:1===d?"bad":"good",content:1===d?"Stop Logging":"Restore Logging",onClick:function(){return r("toggle-logs")}}),(0,o.createComponentVNode)(2,l.Button,{content:"Reset Console",onClick:function(){return r("restore-console")}})],4),(0,o.createComponentVNode)(2,l.Button,{color:"bad",content:"Log Out",onClick:function(){return r("log-out")}})]})]})},C=function(e,t){var n=(0,i.useBackend)(t),c=n.data,d=n.act,s=(0,i.useLocalState)(t,"sortByField",null)[0],m=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===s&&(0,r.sortBy)((function(e){return e.name})),"charge"===s&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===s&&(0,r.sortBy)((function(e){return-(0,u.powerRank)(e.load)}),(function(e){return-parseFloat(e.load)}))])(c.apcs);return(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"On/Off"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),m.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{icon:e.operating?"power-off":"times",color:e.operating?"good":"bad",onClick:function(){return d("breaker",{ref:e.ref})}}),2),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{onClick:function(){return d("access-apc",{ref:e.ref})},children:e.name}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,u.AreaCharge,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"equipment",status:e.eqp,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"lighting",status:e.lgt,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"environ",status:e.env,apc:e,act:d}),2)],4,null,e.id)}))]})},h=function(e,t){var n=(0,i.useBackend)(t).data,c=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.entry+t})})),function(e){return e.reverse()}])(n.logs);return(0,o.createComponentVNode)(2,l.Box,{m:-.5,children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Box,{p:.5,className:"candystripe",bold:!0,children:e.entry},e.id)}))})},N=function(e){var t=e.target,n=e.status,r=e.apc,a=e.act,c=Boolean(2&n),i=Boolean(1&n);return(0,o.createComponentVNode)(2,l.Button,{icon:i?"sync":"power-off",color:c?"good":"bad",onClick:function(){return a("toggle-minor",{type:t,value:V(n),ref:r.ref})}})},V=function(e){return 0===e?2:2===e?3:0};N.defaultHooks=c.pureComponentHooks},26129:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.priority||[],u=l.minor||[];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[0===d.length&&(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),d.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return i("clear",{zone:e})}}),2,null,e)})),0===u.length&&(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16),u.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return i("clear",{zone:e})}}),2,null,e)}))],0)})})})}},41569:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(58734),r=n(45445),a=n(5339),c=n(54777),i=n(50930),l=n(33677);t.AtmosControlConsole=function(e,t){var n,d=(0,c.useBackend)(t),u=d.act,s=d.data,m=s.sensors||[];return(0,o.createComponentVNode)(2,l.Window,{width:500,height:315,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:!!s.tank&&(null==(n=m[0])?void 0:n.long_name),children:m.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,i.Section,{title:!s.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),s.tank&&(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"Reconnect",onClick:function(){return u("reconnect")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.inputting?"power-off":"times",content:s.inputting?"Injecting":"Off",selected:s.inputting,onClick:function(){return u("input")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:s.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return u("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.outputting?"power-off":"times",content:s.outputting?"Open":"Closed",selected:s.outputting,onClick:function(){return u("output")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:parseFloat(s.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return u("pressure",{pressure:t})}})})]})})]})})}},69622:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlPanel=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(54777),i=n(50930),l=n(33677);t.AtmosControlPanel=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.area+t})})),(0,r.sortBy)((function(e){return e.id}))])(u.excited_groups);return(0,o.createComponentVNode)(2,l.Window,{title:"SSAir Control Panel",width:900,height:500,resizable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{m:1,children:(0,o.createComponentVNode)(2,i.Flex,{justify:"space-between",align:"baseline",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return d("toggle-freeze")},color:1===u.frozen?"good":"bad",children:1===u.frozen?"Freeze Subsystem":"Unfreeze Subsystem"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Fire Cnt: ",u.fire_count]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Active Turfs: ",u.active_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Excited Groups: ",u.excited_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Hotspots: ",u.hotspots_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Superconductors: ",u.conducting_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.showing_user,onClick:function(){return d("toggle_user_display")},children:"Personal View"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.show_all,onClick:function(){return d("toggle_show_all")},children:"Display all"})})]})}),(0,o.createComponentVNode)(2,i.Box,{fillPositionedParent:!0,top:"45px",children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Area Name"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Breakdown"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Dismantle"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Turfs"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:1===u.display_max&&"Max Share"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Display"})]}),s.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button,{content:e.area,onClick:function(){return d("move-to-target",{spot:e.jump_to})}}),2),(0,o.createVNode)(1,"td",null,e.breakdown,0),(0,o.createVNode)(1,"td",null,e.dismantle,0),(0,o.createVNode)(1,"td",null,e.size,0),(0,o.createVNode)(1,"td",null,1===u.display_max&&e.max_share,0),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:e.should_show,onClick:function(){return d("toggle_show_group",{group:e.group})}}),2)],4,null,e.id)}))]})})})})]})}},54404:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(35891),i=n(33677);t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:390,height:187,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.on?"power-off":"times",content:d.on?"On":"Off",selected:d.on,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(d.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return l("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:d.rate===d.max_rate,onClick:function(){return l("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,c.getGasLabel)(e.id,e.name),onClick:function(){return l("filter",{mode:e.id})}},e.id)}))})]})})})})}},36510:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:370,height:165,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.set_pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node2",{concentration:t})}})})]})})})})}},6782:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.AtmosPump=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),l.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return i("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.rate===l.max_rate,onClick:function(){return i("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]})]})})})})}},59971:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosRelief=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.AtmosRelief=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Open Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.open_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("open_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.open_pressure===l.max_pressure,onClick:function(){return i("open_pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Close Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.close_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("close_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.close_pressure===l.max_pressure,onClick:function(){return i("close_pressure",{pressure:"max"})}})]})]})})})})}},71929:function(e,t,n){"use strict";t.__esModule=!0,t.Autolathe=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(85260),l={"border-radius":"0.25rem",border:"1px solid #444466","background-image":"linear-gradient(#222244, #222244)"},d={"border-radius":"0.25rem",border:"1px solid #444466","background-image":"linear-gradient(#222244, #444466)"};t.Autolathe=function(e,t){var n=(0,r.useBackend)(t),u=n.act,s=n.data,m=s.materialtotal,p=s.materialsmax,C=s.materials,h=void 0===C?[]:C,N=s.categories,V=void 0===N?[]:N,b=s.designs,f=void 0===b?[]:b,g=s.active,v=s.num_per_line,k=void 0===v?4:v,x=k<1?2:""+100/k-1+"%",B=!0,w=k-V.length%k,_=(0,r.useLocalState)(t,"current_category","None"),y=_[0],L=_[1],S=h.length?h.filter((function(e){return e.mineral_amount>0})):[];return(0,o.createComponentVNode)(2,c.Window,{width:800,height:600,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Total Materials",style:d,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:p,ranges:{good:[.85*p,p],average:[.25*p,.85*p],bad:[0,.25*p]},children:m+"/"+p+" cm\xb3"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{children:S.length>0&&(0,o.createComponentVNode)(2,a.Collapsible,{title:"Materials",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:S.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:(0,i.capitalize)(e.name),children:(0,o.createComponentVNode)(2,a.ProgressBar,{style:{transform:"scaleX(-1) scaleY(1)"},value:p-e.mineral_amount,maxValue:p,color:"black",backgroundColor:e.matcolour,children:(0,o.createVNode)(1,"div",null,e.mineral_amount+" cm\xb3",0,{style:{transform:"scaleX(-1)"}})})},e.id)}))})})})]})}),(0,o.createComponentVNode)(2,a.Section,{style:d,title:"Search",children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,placeholder:"Search Recipes...",selfClear:!0,onChange:function(e,t){t.length&&(u("search",{to_search:t}),L('results for "'+t+'"'))}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Categories",style:d,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",wrap:"wrap",children:[V.map((function(e){return(0,o.createComponentVNode)(2,a.Flex.Item,{grow:B,shrink:B,basis:x,style:{margin:"2px"},children:(0,o.createComponentVNode)(2,a.Button,{selected:y===e,content:e,overflow:"hidden",height:"100%",width:"100%",onClick:function(){u("category",{selectedCategory:e}),L(e)}})},e)})),w>0&&(0,o.createComponentVNode)(2,a.Flex.Item,{grow:B,shrink:B,basis:x,style:{margin:"2px"}},"blank")]})}),"None"!==y.toString()&&(0,o.createComponentVNode)(2,a.Section,{title:"Displaying "+y.toString(),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Close Category",onClick:function(){u("menu"),L("None")}}),style:l,children:[1===g&&(0,o.createComponentVNode)(2,a.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"cog",spin:!0}),"Building items..."]}),(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:(0,o.createComponentVNode)(2,a.Stack.Item,{children:f.length&&f.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{py:"0.25rem",px:"0.5rem",my:"0.25rem",width:"100%",textAlign:"left",style:{"border-radius":"0.25rem",border:"1px solid #444466","background-image":"linear-gradient(#222244, #444466, #444466, #222244)"},children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{content:e.name,disabled:e.buildable,width:"100%",onClick:function(){return u("make",{id:e.id,multiplier:"1"})}})}),(0,o.createComponentVNode)(2,a.Stack.Item,{shrink:1,children:(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"5",width:"100%",disabled:!e.mult5,onClick:function(){return u("make",{id:e.id,multiplier:"5"})}})}),(0,o.createComponentVNode)(2,a.Stack.Item,{shrink:1,children:(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",content:"10",width:"100%",disabled:!e.mult10,onClick:function(){return u("make",{id:e.id,multiplier:"10"})}})}),(0,o.createComponentVNode)(2,a.Stack.Item,{shrink:1,children:(0,o.createComponentVNode)(2,a.Button,{icon:"hammer",width:"100%",content:"25",disabled:!e.mult25,onClick:function(){return u("make",{id:e.id,multiplier:"25"})}})}),(0,o.createComponentVNode)(2,a.Stack.Item,{basis:"15%",children:(0,o.createComponentVNode)(2,a.Button.Input,{content:"[Max:"+e.maxmult+"]",width:"100%",maxValue:e.maxmult,disabled:e.buildable,backgroundColor:e.buildable?"#999999":"default",onCommit:function(t,n){return u("make",{id:e.id,multiplier:n})}})})]})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:e.cost})]},e.id)},e.id)}))})})]})]})})}},27432:function(e,t,n){"use strict";t.__esModule=!0,t.AutomatedAnnouncement=void 0;var o=n(58734),r=(n(85260),n(54777)),a=n(50930),c=n(33677),i="%PERSON will be replaced with their name.\n%RANK with their job.";t.AutomatedAnnouncement=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.arrivalToggle,s=d.arrival,m=d.newheadToggle,p=d.newhead;return(0,o.createComponentVNode)(2,c.Window,{title:"Automated Announcement System",width:500,height:225,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Arrival Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return l("ArrivalToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:s,onChange:function(e,t){return l("ArrivalText",{newText:t})}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Departmental Head Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return l("NewheadToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:p,onChange:function(e,t){return l("NewheadText",{newText:t})}})})})})]})})}},22178:function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(59576),i=n(33677);t.BankMachine=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.current_balance,s=d.siphoning,m=d.station_name;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:155,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"Authorized personnel only"}),(0,o.createComponentVNode)(2,a.Section,{title:m+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"sync",content:s?"Stop Siphoning":"Siphon Credits",selected:s,onClick:function(){return l(s?"halt":"siphon")}}),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u,format:function(e){return(0,c.formatMoney)(e)}})," cr"]})})})]})})}},7159:function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Bepis=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.manual_power?"Off":"On",selected:!l.manual_power,onClick:function(){return i("toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return i("account_reset")}}),children:["Console is currently being operated by ",l.account_owner?l.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:l.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[l.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:l.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:l.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===l.manual_power||1===l.silicon_check,onClick:function(){return i("deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===l.manual_power,onClick:function(){return i("withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",l.mean_value]}),(0,o.createComponentVNode)(2,a.Box,{children:["Current chance of Success: Est. ",l.success_estimate,"%"]}),l.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===l.manual_power,onClick:function(){return i("begin_experiment")},content:"Begin Testing"})]})})]})]})})})}},65435:function(e,t,n){"use strict";t.__esModule=!0,t.BiogeneratorContent=t.Biogenerator=void 0;var o=n(58734),r=n(59641),a=n(85260),c=n(54777),i=n(50930),l=n(59576),d=n(33677);t.Biogenerator=function(e,t){var n=(0,c.useBackend)(t).data,r=n.beaker,a=n.processing;return(0,o.createComponentVNode)(2,d.Window,{width:550,height:380,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Processing..."]}),(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:[!r&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Container"}),!!r&&(0,o.createComponentVNode)(2,u)]})]})};var u=function(e,t){var n,r,d=(0,c.useBackend)(t),u=d.act,m=d.data,p=m.biomass,C=m.can_process,h=m.categories,N=void 0===h?[]:h,V=(0,c.useLocalState)(t,"searchText",""),b=V[0],f=V[1],g=(0,c.useLocalState)(t,"category",null==(n=N[0])?void 0:n.name),v=g[0],k=g[1],x=(0,a.createSearch)(b,(function(e){return e.name})),B=b.length>0&&N.flatMap((function(e){return e.items||[]})).filter(x).filter((function(e,t){return t<25}))||(null==(r=N.find((function(e){return e.name===v})))?void 0:r.items)||[];return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:p>0?"good":"bad",children:[(0,l.formatMoney)(p)," Biomass"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{autoFocus:!0,value:b,onInput:function(e,t){return f(t)},mx:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return u("detach")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Activate",disabled:!C,onClick:function(){return u("activate")}})],4),children:(0,o.createComponentVNode)(2,i.Flex,{children:[0===b.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:N.map((function(e){var t;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:e.name===v,onClick:function(){return k(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,basis:0,children:[0===B.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:0===b.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,i.Table,{children:(0,o.createComponentVNode)(2,s,{biomass:p,items:B})})]})]})})};t.BiogeneratorContent=u;var s=function(e,t){var n=(0,c.useBackend)(t).act,a=(0,c.useLocalState)(t,"hoveredItem",{}),l=a[0],d=a[1],u=l&&l.cost||0;return e.items.map((function(n){var o=(0,c.useLocalState)(t,"amount"+n.name,1),r=o[0],a=o[1],i=l&&l.name!==n.name,d=e.biomass-u*l.amountV,onClick:function(){return d("select",{item:e.id})}})})]}),e.desc]},e.name)}))})]})]})]})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.buying,u=l.ltsrbt_built,s=l.money;if(!d)return null;var m=l.delivery_methods.map((function(e){var t=l.delivery_method_description[e.name];return Object.assign({},e,{description:t})}));return(0,o.createComponentVNode)(2,a.Modal,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:m.map((function(e){return"LTSRBT"!==e.name||u?(0,o.createComponentVNode)(2,a.Flex.Item,{mx:1,width:"250px",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"30px",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:e.description}),(0,o.createComponentVNode)(2,a.Button,{mt:2,content:(0,c.formatMoney)(e.price)+" cr",disabled:s=0||(r[n]=e[n]);return r}(t,i),a=u(n),c=a[0],l=a[1];return(0,o.normalizeProps)((0,o.createVNode)(1,"canvas",null,"Canvas failed to render.",16,Object.assign({width:28*c||300,height:28*l||300},r,{onClick:function(t){return e.clickwrapper(t)}}),null,this.canvasRef))},r}(o.Component),u=function(e){var t=e.length;return[t,0!==t?e[0].length:0]};t.Canvas=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,s=u(l.grid),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,c.Window,{width:Math.min(400,28*m*32+24),height:Math.min(400,28*p*32+24),resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,d,{value:l.grid,onCanvasClick:function(e,t){return i("paint",{x:e,y:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:[!l.finalized&&(0,o.createComponentVNode)(2,a.Button.Confirm,{onClick:function(){return i("finalize")},content:"Finalize"}),l.name]})]})})})}},75095:function(e,t,n){"use strict";t.__esModule=!0,t.CargoCatalog=t.Cargo=void 0;var o=n(58734),r=n(45445),a=n(54777),c=n(50930),i=n(59576),l=n(33677);t.Cargo=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=(0,a.useSharedState)(t,"tab","catalog"),m=i[0],C=i[1],h=r.requestonly,N=r.cart||[],V=r.requests||[];return(0,o.createComponentVNode)(2,l.Window,{width:780,height:750,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,c.Section,{fitted:!0,children:(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",selected:"catalog"===m,onClick:function(){return C("catalog")},children:"Catalog"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"envelope",textColor:"requests"!==m&&V.length>0&&"yellow",selected:"requests"===m,onClick:function(){return C("requests")},children:["Requests (",V.length,")"]}),!h&&(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"shopping-cart",textColor:"cart"!==m&&N.length>0&&"yellow",selected:"cart"===m,onClick:function(){return C("cart")},children:["Checkout (",N.length,")"]})]})}),"catalog"===m&&(0,o.createComponentVNode)(2,u),"requests"===m&&(0,o.createComponentVNode)(2,s),"cart"===m&&(0,o.createComponentVNode)(2,p)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.away,u=l.docked,s=l.loan,m=l.loan_dispatched,p=l.location,C=l.message,h=l.points,N=l.requestonly;return(0,o.createComponentVNode)(2,c.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:h,format:function(e){return(0,i.formatMoney)(e)}})," credits"]}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle",children:u&&!N&&(0,o.createComponentVNode)(2,c.Button,{content:p,onClick:function(){return r("send")}})||p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentCom Message",children:C}),!!s&&!N&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loan",children:!m&&(0,o.createComponentVNode)(2,c.Button,{content:"Loan Shuttle",disabled:!(d&&u),onClick:function(){return r("loan")}})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Loaned to Centcom"})})]})})},u=function(e,t){var n,l=e.express,d=(0,a.useBackend)(t),u=d.act,s=d.data,p=s.self_paid,C=(0,r.toArray)(s.supplies),h=(0,a.useSharedState)(t,"supply",null==(n=C[0])?void 0:n.name),N=h[0],V=h[1],b=C.find((function(e){return e.name===N}));return(0,o.createComponentVNode)(2,c.Section,{title:"Catalog",buttons:!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,c.Button.Checkbox,{ml:2,content:"Buy Privately",checked:p,onClick:function(){return u("toggleprivate")}})],4),children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{ml:-1,mr:1,children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===N,onClick:function(){return V(e.name)},children:[e.name," (",e.packs.length,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,c.Table,{children:null==b?void 0:b.packs.map((function(e){var t=[];return e.small_item&&t.push("Small"),e.access&&t.push("Restricted"),(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",textAlign:"right",children:t.join(", ")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,tooltip:e.desc,tooltipPosition:"left",onClick:function(){return u("add",{id:e.id})},children:[(0,i.formatMoney)(p&&!e.goody?Math.round(1.1*e.cost):e.cost)," cr"]})})]},e.name)}))})})]})})};t.CargoCatalog=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.requests||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Active Requests",buttons:!d&&(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return r("denyall")}}),children:[0===u.length&&(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"No Requests"}),u.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createVNode)(1,"b",null,e.orderer,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{width:"25%",children:(0,o.createVNode)(1,"i",null,e.reason,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),!d&&(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{icon:"check",color:"good",onClick:function(){return r("approve",{id:e.id})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"bad",onClick:function(){return r("deny",{id:e.id})}})]})]},e.id)}))})]})},m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.cart||[],s=u.reduce((function(e,t){return e+t.cost}),0);return d?null:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,children:[0===u.length&&"Cart is empty",1===u.length&&"1 item",u.length>=2&&u.length+" items"," ",s>0&&"("+(0,i.formatMoney)(s)+" cr)"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return r("clear")}})],4)},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.away,s=l.docked,p=l.location,C=l.cart||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Current Cart",buttons:(0,o.createComponentVNode)(2,m),children:[0===C.length&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Nothing in cart"}),C.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{icon:"minus",onClick:function(){return r("remove",{id:e.id})}})})]},e.id)}))}),C.length>0&&!d&&(0,o.createComponentVNode)(2,c.Box,{mt:2,children:1===u&&1===s&&(0,o.createComponentVNode)(2,c.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return r("send")}})||(0,o.createComponentVNode)(2,c.Box,{opacity:.5,children:["Shuttle in ",p,"."]})})]})}},17649:function(e,t,n){"use strict";t.__esModule=!0,t.CargoBountyConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(59576),i=n(33677);t.CargoBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},7886:function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(75095),l=n(32599);t.CargoExpress=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data);return(0,o.createComponentVNode)(2,c.Window,{width:600,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox,{accessText:"a QM-level ID card"}),!a.locked&&(0,o.createComponentVNode)(2,d)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(l.points)})," credits"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Cargo Bay",selected:!l.usingBeacon,onClick:function(){return c("LZCargo")}}),(0,o.createComponentVNode)(2,a.Button,{selected:l.usingBeacon,disabled:!l.hasBeacon,onClick:function(){return c("LZBeacon")},children:[l.beaconzone," (",l.beaconName,")"]}),(0,o.createComponentVNode)(2,a.Button,{content:l.printMsg,disabled:!l.canBuyBeacon,onClick:function(){return c("printBeacon")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notice",children:l.message})]})}),(0,o.createComponentVNode)(2,i.CargoCatalog,{express:!0})],4)}},267:function(e,t,n){"use strict";t.__esModule=!0,t.CargoHoldTerminal=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.CargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.points,u=l.pad,s=l.sending,m=l.status_report;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:230,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Cargo Value",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(d)})," credits"]})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Recalculate Value",disabled:!u,onClick:function(){return i("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u,onClick:function(){return i(s?"stop":"send")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})})]})})}},73425:function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.CellularEmporium=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.abilities;return(0,o.createComponentVNode)(2,c.Window,{width:900,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!l.can_readapt,onClick:function(){return i("readapt")}}),children:l.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return i("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})]})})}},63990:function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncherContent=t.CentcomPodLauncher=void 0;var o=n(58734),r=(n(85260),n(54777)),a=n(50930),c=n(33677);t.CentcomPodLauncher=function(){return(0,o.createComponentVNode)(2,c.Window,{title:"Config/Launch Supply Pod",width:700,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:"To use this, simply spawn the atoms you want in one of the five Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."}),(0,o.createComponentVNode)(2,a.Section,{title:"Centcom Pod Customization (To be used against Helen Weinstein)",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supply Bay",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bay #1",selected:1===i.bayNumber,onClick:function(){return c("bay1")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #2",selected:2===i.bayNumber,onClick:function(){return c("bay2")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #3",selected:3===i.bayNumber,onClick:function(){return c("bay3")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #4",selected:4===i.bayNumber,onClick:function(){return c("bay4")}}),(0,o.createComponentVNode)(2,a.Button,{content:"ERT Bay",selected:5===i.bayNumber,tooltip:"This bay is located on the western edge of CentCom. Its the\nglass room directly west of where ERT spawn, and south of the\nCentCom ferry. Useful for launching ERT/Deathsquads/etc. onto\nthe station via drop pods.",onClick:function(){return c("bay5")}})]}),!!i.effectReverse&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reverse Drop",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Pick Dropoff Location",selected:i.picking_dropoff_turf,disabled:!i.effectReverse,tooltip:"[NOTE: ONLY WORKS WHEN REVERSE MODE IS ACTIVE]\nThis will allow you to select a dropoff turf. After\nselecting a turf, any pod in 'Reverse Mode' will drop off\nit's newly gotten cargo on this turf. Can be used to\ntransport things or people around the station in a neat,\nIC way. Try doing this with the 'Seethrough Pod' style\nenabled for extra fun!",onClick:function(){return c("pickDropoffTurf")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Dropoff Location",disabled:!i.dropoff_turf,tooltip:"Clears the selected dropoff turf for reverse mode.",onClick:function(){return c("clearDropoffTurf")}}),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Reverse Drop-off Location:"),i.dropoff_turf?i.dropoff_turf:"None"],0)]}),!i.effectReverse&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reverse Drop",children:(0,o.createVNode)(1,"p",null,"[Enable Reverse Mode for this feature]",16)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport to",children:[(0,o.createComponentVNode)(2,a.Button,{content:i.bay,onClick:function(){return c("teleportCentcom")}}),(0,o.createComponentVNode)(2,a.Button,{content:i.oldArea?i.oldArea:"Where you were",disabled:!i.oldArea,onClick:function(){return c("teleportBack")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Item Mode",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Clone Items",selected:i.launchClone,tooltip:"Choosing this will create a duplicate of the item to be\nlaunched in Centcom, allowing you to send one type of item\nmultiple times. Either way, the atoms are forceMoved into\nthe supplypod after it lands (but before it opens).",onClick:function(){return c("launchClone")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Items",selected:i.launchRandomItem,tooltip:"Choosing this will pick a random item from the selected turf\ninstead of the entire turfs contents. Best combined with\nsingle/random turf.",onClick:function(){return c("launchRandomItem")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Launch style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Ordered",selected:1===i.launchChoice,tooltip:'Instead of launching everything in the bay at once, this\nwill "scan" things (one turf-full at a time) in order, left\nto right and top to bottom. undoing will reset the "scanner"\nto the top-leftmost position.',onClick:function(){return c("launchOrdered")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Turf",selected:2===i.launchChoice,tooltip:"Instead of launching everything in the bay at once, this\nwill launch one random turf of items at a time.",onClick:function(){return c("launchRandomTurf")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosion",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Size",selected:1===i.explosionChoice,tooltip:"This will cause an explosion of whatever size you like\n(including flame range) to occur as soon as the supplypod\nlands. Dont worry, supply-pods are explosion-proof!",onClick:function(){return c("explosionCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Adminbus",selected:2===i.explosionChoice,tooltip:"This will cause a maxcap explosion (dependent on server\nconfig) to occur as soon as the supplypod lands. Dont worry,\nsupply-pods are explosion-proof!",onClick:function(){return c("explosionBus")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Damage",selected:1===i.damageChoice,tooltip:"Anyone caught under the pod when it lands will be dealt\nthis amount of brute damage. Sucks to be them!",onClick:function(){return c("damageCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gib",selected:2===i.damageChoice,tooltip:"This will attempt to gib any mob caught under the pod when\nit lands, as well as dealing a nice 5000 brute damage. Ya\nknow, just to be sure!",onClick:function(){return c("damageGib")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Effects",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Projectile Cloud",selected:i.effectShrapnel,tooltip:"This will create a cloud of shrapnel on landing,\nof any projectile you'd like!",onClick:function(){return c("effectShrapnel")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stun",selected:i.effectStun,tooltip:"Anyone who is on the turf when the supplypod is launched\nwill be stunned until the supplypod lands. They cant get\naway that easy!",onClick:function(){return c("effectStun")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delimb",selected:i.effectLimb,tooltip:"This will cause anyone caught under the pod to lose a limb,\nexcluding their head.",onClick:function(){return c("effectLimb")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Yeet Organs",selected:i.effectOrgans,tooltip:"This will cause anyone caught under the pod to lose all\ntheir limbs and organs in a spectacular fashion.",onClick:function(){return c("effectOrgans")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Movement",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bluespace",selected:i.effectBluespace,tooltip:"Gives the supplypod an advanced Bluespace Recyling Device.\nAfter opening, the supplypod will be warped directly to the\nsurface of a nearby NT-designated trash planet (/r/ss13).",onClick:function(){return c("effectBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stealth",selected:i.effectStealth,tooltip:'This hides the red target icon from appearing when you\nlaunch the supplypod. Combos well with the "Invisible"\nstyle. Sneak attack, go!',onClick:function(){return c("effectStealth")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Quiet",selected:i.effectQuiet,tooltip:"This will keep the supplypod from making any sounds, except\nfor those specifically set by admins in the Sound section.",onClick:function(){return c("effectQuiet")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reverse Mode",selected:i.effectReverse,tooltip:"This pod will not send any items. Instead, after landing,\nthe supplypod will close (similar to a normal closet closing),\nand then launch back to the right centcom bay to drop off any\nnew contents.",onClick:function(){return c("effectReverse")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile Mode",selected:i.effectMissile,tooltip:"This pod will not send any items. Instead, it will immediately\ndelete after landing (Similar visually to setting openDelay\n& departDelay to 0, but this looks nicer). Useful if you just\nwanna fuck some shit up. Combos well with the Missile style.",onClick:function(){return c("effectMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Any Descent Angle",selected:i.effectCircle,tooltip:"This will make the supplypod come in from any angle. Im not\nsure why this feature exists, but here it is.",onClick:function(){return c("effectCircle")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Machine Gun Mode",selected:i.effectBurst,tooltip:"This will make each click launch 5 supplypods inaccuratly\naround the target turf (a 3x3 area). Combos well with the\nMissile Mode if you dont want shit lying everywhere after.",onClick:function(){return c("effectBurst")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Specific Target",selected:i.effectTarget,tooltip:"This will make the supplypod target a specific atom, instead\nof the mouses position. Smiting does this automatically!",onClick:function(){return c("effectTarget")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name/Desc",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Name/Desc",selected:i.effectName,tooltip:"Allows you to add a custom name and description.",onClick:function(){return c("effectName")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Alert Ghosts",selected:i.effectAnnounce,tooltip:"Alerts ghosts when a pod is launched. Useful if some dumb\nshit is aboutta come outta the pod.",onClick:function(){return c("effectAnnounce")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sound",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Sound",selected:i.fallingSound,tooltip:"Choose a sound to play as the pod falls. Note that for this\nto work right you should know the exact length of the sound,\nin seconds.",onClick:function(){return c("fallSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Sound",selected:i.landingSound,tooltip:"Choose a sound to play when the pod lands.",onClick:function(){return c("landingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Sound",selected:i.openingSound,tooltip:"Choose a sound to play when the pod opens.",onClick:function(){return c("openingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Sound",selected:i.leavingSound,tooltip:"Choose a sound to play when the pod departs (whether that be\ndelection in the case of a bluespace pod, or leaving for\ncentcom for a reversing pod).",onClick:function(){return c("leavingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Admin Sound Volume",selected:i.soundVolume,tooltip:"Choose the volume for the sound to play at. Default values\nare between 1 and 100, but hey, do whatever. Im a tooltip,\nnot a cop.",onClick:function(){return c("soundVolume")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timers",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Duration",selected:4!==i.fallDuration,tooltip:"Set how long the animation for the pod falling lasts. Create\ndramatic, slow falling pods!",onClick:function(){return c("fallDuration")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Time",selected:20!==i.landingDelay,tooltip:"Choose the amount of time it takes for the supplypod to hit\nthe station. By default this value is 0.5 seconds.",onClick:function(){return c("landingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Time",selected:30!==i.openingDelay,tooltip:"Choose the amount of time it takes for the supplypod to open\nafter landing. Useful for giving whatevers inside the pod a\nnice dramatic entrance! By default this value is 3 seconds.",onClick:function(){return c("openingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Time",selected:30!==i.departureDelay,tooltip:"Choose the amount of time it takes for the supplypod to leave\nafter landing. By default this value is 3 seconds.",onClick:function(){return c("departureDelay")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.styleChoice,tooltip:"Same color scheme as the normal station-used supplypods",onClick:function(){return c("styleStandard")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.styleChoice,tooltip:"The same as the stations upgraded blue-and-white\nBluespace Supplypods",onClick:function(){return c("styleBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate",selected:4===i.styleChoice,tooltip:"A menacing black and blood-red. Great for sending meme-ops\nin style!",onClick:function(){return c("styleSyndie")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Deathsquad",selected:5===i.styleChoice,tooltip:"A menacing black and dark blue. Great for sending deathsquads\nin style!",onClick:function(){return c("styleBlue")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cult Pod",selected:6===i.styleChoice,tooltip:"A blood and rune covered cult pod!",onClick:function(){return c("styleCult")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile",selected:7===i.styleChoice,tooltip:"A large missile. Combos well with a missile mode, so the\nmissile doesnt stick around after landing.",onClick:function(){return c("styleMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate Missile",selected:8===i.styleChoice,tooltip:"A large blood-red missile. Combos well with missile mode,\nso the missile doesnt stick around after landing.",onClick:function(){return c("styleSMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Supply Crate",selected:9===i.styleChoice,tooltip:"A large, dark-green military supply crate.",onClick:function(){return c("styleBox")}}),(0,o.createComponentVNode)(2,a.Button,{content:"HONK",selected:10===i.styleChoice,tooltip:"A colorful, clown inspired look.",onClick:function(){return c("styleHONK")}}),(0,o.createComponentVNode)(2,a.Button,{content:"~Fruit",selected:11===i.styleChoice,tooltip:"For when an orange is angry",onClick:function(){return c("styleFruit")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Invisible",selected:12===i.styleChoice,tooltip:'Makes the supplypod invisible! Useful for when you want to\nuse this feature with a gateway or something. Combos well\nwith the "Stealth" and "Quiet Landing" effects.',onClick:function(){return c("styleInvisible")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Show Contents (See Through Pod)",selected:14===i.styleChoice,tooltip:"By selecting this, the pod will instead look like whatevers\ninside it (as if it were the contents falling by themselves,\nwithout a pod). Useful for launching mechs at the station\nand standing tall as they soar in from the heavens.",onClick:function(){return c("styleSeeThrough")}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i.numObjects+" turfs in "+i.bay,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"undo Pod Bay",tooltip:"Manually undoes the possible things to launch in the\npod bay.",onClick:function(){return c("undo")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Enter Launch Mode",selected:i.giveLauncher,tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN",onClick:function(){return c("giveLauncher")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Selected Bay",color:"bad",tooltip:"This will delete all objs and mobs from the selected bay.",tooltipPosition:"left",onClick:function(){return c("clearBay")}})],4)})})})],4)};t.CentcomPodLauncherContent=i},89970:function(e,t,n){"use strict";t.__esModule=!0,t.Changelog=void 0;var o=n(58734),r=n(59641),a=n(54777),c=n(50930),i=n(33677),l=n(96525),d=s(n(90928)),u=s(n(47366));function s(e){return e&&e.__esModule?e:{"default":e}}function m(){m=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,o=Object.defineProperty||function(e,t,n){e[t]=n.value},r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",i=r.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(S){l=function(e,t,n){return e[t]=n}}function d(e,t,n,r){var a=t&&t.prototype instanceof p?t:p,c=Object.create(a.prototype),i=new _(r||[]);return o(c,"_invoke",{value:k(e,n,i)}),c}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(S){return{type:"throw",arg:S}}}e.wrap=d;var s={};function p(){}function C(){}function h(){}var N={};l(N,a,(function(){return this}));var V=Object.getPrototypeOf,b=V&&V(V(y([])));b&&b!==t&&n.call(b,a)&&(N=b);var f=h.prototype=p.prototype=Object.create(N);function g(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function v(e,t){function r(o,a,c,i){var l=u(e[o],e,a);if("throw"!==l.type){var d=l.arg,s=d.value;return s&&"object"==typeof s&&n.call(s,"__await")?t.resolve(s.__await).then((function(e){r("next",e,c,i)}),(function(e){r("throw",e,c,i)})):t.resolve(s).then((function(e){d.value=e,c(d)}),(function(e){return r("throw",e,c,i)}))}i(l.arg)}var a;o(this,"_invoke",{value:function(e,n){function o(){return new t((function(t,o){r(e,n,t,o)}))}return a=a?a.then(o,o):o()}})}function k(e,t,n){var o="suspendedStart";return function(r,a){if("executing"===o)throw new Error("Generator is already running");if("completed"===o){if("throw"===r)throw a;return L()}for(n.method=r,n.arg=a;;){var c=n.delegate;if(c){var i=x(c,n);if(i){if(i===s)continue;return i}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===o)throw o="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o="executing";var l=u(e,t,n);if("normal"===l.type){if(o=n.done?"completed":"suspendedYield",l.arg===s)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o="completed",n.method="throw",n.arg=l.arg)}}}function x(e,t){var n=t.method,o=e.iterator[n];if(undefined===o)return t.delegate=null,"throw"===n&&e.iterator["return"]&&(t.method="return",t.arg=undefined,x(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),s;var r=u(o,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,s;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=undefined),t.delegate=null,s):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,s)}function B(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(B,this),this.reset(!0)}function y(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,r=function t(){for(;++o=0;--r){var a=this.tryEntries[r],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var i=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(i&&l){if(this.prev=0;--o){var r=this.tryEntries[o];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),s}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;w(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:y(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=undefined),s}},e}function p(e,t,n,o,r,a,c){try{var i=e[a](c),l=i.value}catch(d){return void n(d)}i.done?t(l):Promise.resolve(l).then(o,r)}function C(e,t){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},C(e,t)}var h={bugfix:{icon:"bug",color:"green"},wip:{icon:"hammer",color:"orange"},qol:{icon:"hand-holding-heart",color:"green"},soundadd:{icon:"tg-sound-plus",color:"green"},sounddel:{icon:"tg-sound-minus",color:"red"},add:{icon:"check-circle",color:"green"},expansion:{icon:"check-circle",color:"green"},rscadd:{icon:"check-circle",color:"green"},rscdel:{icon:"times-circle",color:"red"},imageadd:{icon:"tg-image-plus",color:"green"},imagedel:{icon:"tg-image-minus",color:"red"},spellcheck:{icon:"spell-check",color:"green"},experiment:{icon:"radiation",color:"yellow"},balance:{icon:"balance-scale-right",color:"yellow"},code_imp:{icon:"code",color:"green"},refactor:{icon:"tools",color:"green"},config:{icon:"cogs",color:"purple"},admin:{icon:"user-shield",color:"purple"},server:{icon:"server",color:"purple"},tgs:{icon:"toolbox",color:"purple"},tweak:{icon:"wrench",color:"green"},unknown:{icon:"info-circle",color:"label"}},N=function(e){var t,n;function s(){var t;return(t=e.call(this)||this).getData=function(e,n){void 0===n&&(n=1);var o=(0,a.useBackend)(t.context).act,r=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(t);if(n>6)return t.setData("Failed to load data after 6 attempts");o("get_month",{date:e}),fetch((0,l.resolveAsset)(e+".yml")).then(function(){var t,o=(t=m().mark((function a(t){var o,c;return m().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,t.text();case 2:o=a.sent,/^Cannot find/.test(o)?(c=50+50*n,r.setData("Loading changelog data"+".".repeat(n+3)),setTimeout((function(){r.getData(e,n+1)}),c)):r.setData(u["default"].load(o,{schema:u["default"].CORE_SCHEMA}));case 5:case"end":return a.stop()}}),a)})),function(){var e=this,n=arguments;return new Promise((function(o,r){var a=t.apply(e,n);function c(e){p(a,o,r,c,i,"next",e)}function i(e){p(a,o,r,c,i,"throw",e)}c(undefined)}))});return function(e){return o.apply(this,arguments)}}())},t.state={data:"Loading changelog data...",selectedDate:"",selectedIndex:0},t.dateChoices=[],t}n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,C(t,n);var N=s.prototype;return N.setData=function(e){this.setState({data:e})},N.setSelectedDate=function(e){this.setState({selectedDate:e})},N.setSelectedIndex=function(e){this.setState({selectedIndex:e})},N.componentDidMount=function(){var e=this,t=(0,a.useBackend)(this.context).data.dates,n=void 0===t?[]:t;n&&(n.forEach((function(t){return e.dateChoices.push((0,d["default"])(t,"mmmm yyyy",!0))})),this.setSelectedDate(this.dateChoices[0]),this.getData(n[0]))},N.render=function(){var e=this,t=this.state,n=t.data,l=t.selectedDate,u=t.selectedIndex,s=(0,a.useBackend)(this.context).data.dates,m=this.dateChoices,p=m.length>0&&(0,o.createComponentVNode)(2,c.Stack,{mb:1,children:[(0,o.createComponentVNode)(2,c.Stack.Item,{children:(0,o.createComponentVNode)(2,c.Button,{className:"Changelog__Button",disabled:0===u,icon:"chevron-left",onClick:function(){var t=u-1;return e.setData("Loading changelog data..."),e.setSelectedIndex(t),e.setSelectedDate(m[t]),window.scrollTo(0,document.body.scrollHeight||document.documentElement.scrollHeight),e.getData(s[t])}})}),(0,o.createComponentVNode)(2,c.Stack.Item,{children:(0,o.createComponentVNode)(2,c.Dropdown,{displayText:l,options:m,onSelected:function(t){var n=m.indexOf(t);return e.setData("Loading changelog data..."),e.setSelectedIndex(n),e.setSelectedDate(t),window.scrollTo(0,document.body.scrollHeight||document.documentElement.scrollHeight),e.getData(s[n])},selected:l,width:"150px"})}),(0,o.createComponentVNode)(2,c.Stack.Item,{children:(0,o.createComponentVNode)(2,c.Button,{className:"Changelog__Button",disabled:u===m.length-1,icon:"chevron-right",onClick:function(){var t=u+1;return e.setData("Loading changelog data..."),e.setSelectedIndex(t),e.setSelectedDate(m[t]),window.scrollTo(0,document.body.scrollHeight||document.documentElement.scrollHeight),e.getData(s[t])}})})]}),C=(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createVNode)(1,"h1",null,"Coyote Bayou",16),(0,o.createVNode)(1,"p",null,[(0,o.createVNode)(1,"b",null,"Thanks to: ",16),(0,o.createTextVNode)("Baystation 12, /vg/station, NTstation, CDK Station devs, FacepunchStation, GoonStation devs, the original Space Station 13 developers, Sunset Wasteland for providing us with the foundation and fallout code, and thanks to all the wonderful developers working on this project. \u2764\ufe0f")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Current project maintainers can be found "),(0,o.createVNode)(1,"a",null,"here",16,{href:"https://github.com/ARF-SS13/coyote-bayou/people"}),(0,o.createTextVNode)(", recent GitHub contributors can be found "),(0,o.createVNode)(1,"a",null,"here",16,{href:"https://github.com/ARF-SS13/coyote-bayou/pulse/monthly"}),(0,o.createTextVNode)(".")],0),p]}),N=(0,o.createComponentVNode)(2,c.Section,{children:[p,(0,o.createVNode)(1,"h3",null,"GoonStation 13 Development Team",16),(0,o.createVNode)(1,"p",null,[(0,o.createVNode)(1,"b",null,"Coders: ",16),(0,o.createTextVNode)("Stuntwaffle, Showtime, Pantaloons, Nannek, Keelin, Exadv1, hobnob, Justicefries, 0staf, sniperchance, AngriestIBM, BrianOBlivion")],4),(0,o.createVNode)(1,"p",null,[(0,o.createVNode)(1,"b",null,"Spriters: ",16),(0,o.createTextVNode)("Supernorn, Haruhi, Stuntwaffle, Pantaloons, Rho, SynthOrange, I Said No")],4),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Traditional Games Space Station 13 is thankful to the GoonStation 13 Development Team for its work on the game up to the"),(0,o.createTextVNode)(" r4407 release. The changelog for changes up to r4407 can be seen "),(0,o.createVNode)(1,"a",null,"here",16,{href:"https://wiki.ss13.co/Changelog#April_2010"}),(0,o.createTextVNode)(".")],0),(0,o.createVNode)(1,"p",null,["Except where otherwise noted, Goon Station 13 is licensed under a ",(0,o.createVNode)(1,"a",null,"Creative Commons Attribution-Noncommercial-Share Alike 3.0 License",16,{href:"https://creativecommons.org/licenses/by-nc-sa/3.0/"}),". Rights are currently extended to ",(0,o.createVNode)(1,"a",null,"SomethingAwful Goons",16,{href:"http://forums.somethingawful.com/"})," only."],0),(0,o.createVNode)(1,"h3",null,"Traditional Games Space Station 13 License",16),(0,o.createVNode)(1,"p",null,["All code after ",(0,o.createVNode)(1,"a",null,"commit 333c566b88108de218d882840e61928a9b759d8f on 2014/31/12 at 4:38 PM PST",16,{href:"https://github.com/tgstation/tgstation/commit/333c566b88108de218d882840e61928a9b759d8f"})," is licensed under ",(0,o.createVNode)(1,"a",null,"GNU AGPL v3",16,{href:"https://www.gnu.org/licenses/agpl-3.0.html"}),". All code before that commit is licensed under ",(0,o.createVNode)(1,"a",null,"GNU GPL v3",16,{href:"https://www.gnu.org/licenses/gpl-3.0.html"}),", including tools unless their readme specifies otherwise. See ",(0,o.createVNode)(1,"a",null,"LICENSE",16,{href:"https://github.com/ARF-SS13/coyote-bayou/blob/master/LICENSE"})," and ",(0,o.createVNode)(1,"a",null,"GPLv3.txt",16,{href:"https://github.com/tgstation/tgstation/blob/master/GPLv3.txt"})," for more details."],0),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("The TGS DMAPI API is licensed as a subproject under the MIT license."),(0,o.createTextVNode)(" See the footer of "),(0,o.createVNode)(1,"a",null,"code/__DEFINES/tgs.dm",16,{href:"https://github.com/ARF-SS13/coyote-bayou/blob/master/code/__DEFINES/tgs.dm"}),(0,o.createTextVNode)(" and "),(0,o.createVNode)(1,"a",null,"code/modules/tgs/LICENSE",16,{href:"https://github.com/ARF-SS13/coyote-bayou/blob/master/code/modules/tgs/LICENSE"}),(0,o.createTextVNode)(" for the MIT license.")],0),(0,o.createVNode)(1,"p",null,["All assets including icons and sound are under a ",(0,o.createVNode)(1,"a",null,"Creative Commons 3.0 BY-SA license",16,{href:"https://creativecommons.org/licenses/by-sa/3.0/"})," unless otherwise indicated."],0)]}),V="object"==typeof n&&Object.keys(n).length>0&&Object.entries(n).reverse().map((function(e){var t=e[0],n=e[1];return(0,o.createComponentVNode)(2,c.Section,{title:(0,d["default"])(t,"d mmmm yyyy",!0),children:(0,o.createComponentVNode)(2,c.Box,{ml:3,children:Object.entries(n).map((function(e){var t=e[0],n=e[1];return(0,o.createFragment)([(0,o.createVNode)(1,"h4",null,[t,(0,o.createTextVNode)(" changed:")],0),(0,o.createComponentVNode)(2,c.Box,{ml:3,children:(0,o.createComponentVNode)(2,c.Table,{children:n.map((function(e){var t=Object.keys(e)[0];return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{className:(0,r.classes)(["Changelog__Cell","Changelog__Cell--Icon"]),children:(0,o.createComponentVNode)(2,c.Icon,{color:h[t]?h[t].color:h.unknown.color,name:h[t]?h[t].icon:h.unknown.icon})}),(0,o.createComponentVNode)(2,c.Table.Cell,{className:"Changelog__Cell",children:e[t]})]},t+e[t])}))})})],4,t)}))})},t)}));return(0,o.createComponentVNode)(2,i.Window,{title:"Changelog",width:675,height:650,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[C,V,"string"==typeof n&&(0,o.createVNode)(1,"p",null,n,0),N]})})},s}(o.Component);t.Changelog=N},53785:function(e,t,n){"use strict";t.__esModule=!0,t.CharacterDirectory=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i={Unset:"label",Top:"red",Bottom:"blue",Switch:"purple","No ERP":"black"};t.CharacterDirectory=function(e,t){var n=(0,r.useBackend)(t),i=n.act,u=n.data,s=u.personalVisibility,m=u.personalTag,p=u.personalErpTag,C=u.prefsOnly,h=u.personalAdvert,N=u.personalFlist,V=(0,r.useLocalState)(t,"overlay",null),b=V[0],f=(V[1],(0,r.useLocalState)(t,"overwritePrefs",C)),g=f[0],v=f[1];return(0,o.createComponentVNode)(2,c.Window,{width:860,height:480,resizeable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:b&&(0,o.createComponentVNode)(2,l)||(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{color:"label",inline:!0,children:"Save to current preferences slot:\xa0"}),(0,o.createComponentVNode)(2,a.Button,{icon:g?"toggle-on":"toggle-off",selected:g,content:g?"On":"Off",onClick:function(){return C?i("noMind",{overwrite_prefs:g}):v(!g)}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,children:[" ",(0,o.createComponentVNode)(2,a.Stack.Item,{shrink:!0,children:"Visibility:"}),(0,o.createComponentVNode)(2,a.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"toggle-on":"toggle-off",selected:s,onClick:function(){return i("setVisible",{overwrite_prefs:g})}})}),(0,o.createComponentVNode)(2,a.Stack.Item,{shrink:!0,children:"Vore Tag:"}),(0,o.createComponentVNode)(2,a.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,a.Button,{icon:"Unset"===m?"toggle-off":"toggle-on",selected:"Unset"!==m,content:m,onClick:function(){return i("setTag",{overwrite_prefs:g})}})}),(0,o.createComponentVNode)(2,a.Stack.Item,{shrink:!0,children:"ERP Tag:"}),(0,o.createComponentVNode)(2,a.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,a.Button,{icon:"Unset"===p?"toggle-off":"toggle-on",selected:"Unset"!==p,content:p,onClick:function(){return i("setErpTag",{overwrite_prefs:g})}})})]})}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Advertisement",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sticky-note",fluid:!0,content:h,onClick:function(){return i("editAd",{overwrite_prefs:g})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"F-List Link",children:(0,o.createComponentVNode)(2,a.Button,{icon:"linkify",fluid:!0,content:N,onClick:function(){return i("editFlist",{overwrite_prefs:g})}})})]})]}),(0,o.createComponentVNode)(2,d)],4)})})};var l=function(e,t){var n=(0,r.useLocalState)(t,"overlay",null),c=n[0],l=n[1];return(0,o.createComponentVNode)(2,a.Section,{title:c.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return l(null)}}),children:[(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Gender",children:(0,o.createComponentVNode)(2,a.Box,{children:c.gender})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Species",children:(0,o.createComponentVNode)(2,a.Box,{children:c.species})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Vore?",children:(0,o.createComponentVNode)(2,a.Box,{children:c.tag})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"ERP Preference",children:(0,o.createComponentVNode)(2,a.Box,{p:1,backgroundColor:i[c.erptag],children:c.erptag})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Who they like to kiss",children:(0,o.createComponentVNode)(2,a.Box,{children:c.whokisser})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"F-List Link",children:(0,o.createComponentVNode)(2,a.Box,{children:c.flist_link})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Character Ad",children:(0,o.createComponentVNode)(2,a.Box,{style:{"word-break":"break-all"},preserveWhitespace:!0,children:c.character_ad||"Unset."})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"OOC Notes",children:(0,o.createComponentVNode)(2,a.Box,{style:{"word-break":"break-all"},preserveWhitespace:!0,children:c.ooc_notes||"Unset."})}),(0,o.createComponentVNode)(2,a.Section,{level:2,title:"Flavor Text",children:(0,o.createComponentVNode)(2,a.Box,{style:{"word-break":"break-all"},preserveWhitespace:!0,children:c.flavor_text||"Unset."})})]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.directory,s=l.canOrbit,m=(0,r.useLocalState)(t,"sortId","name"),p=m[0],C=(m[1],(0,r.useLocalState)(t,"sortOrder","name")),h=C[0],N=(C[1],(0,r.useLocalState)(t,"overlay",null)),V=(N[0],N[1]);return(0,o.createComponentVNode)(2,a.Section,{title:"Directory",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Refresh",onClick:function(){return c("refresh")}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,u,{id:"name",children:"Name"}),(0,o.createComponentVNode)(2,u,{id:"gender",children:"Gender"}),(0,o.createComponentVNode)(2,u,{id:"species",children:"Species"}),(0,o.createComponentVNode)(2,u,{id:"whokisser",children:"Preference"}),(0,o.createComponentVNode)(2,u,{id:"erptag",children:"Position"}),(0,o.createComponentVNode)(2,u,{id:"tag",children:"Vore"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:"Advert"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:"F-List"})]}),d.sort((function(e,t){var n=h?1:-1;return e[p].localeCompare(t[p])*n})).map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:i[e.erptag],children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,children:s?(0,o.createComponentVNode)(2,a.Button,{color:i[e.erptag],icon:"ghost",tooltip:"Orbit",content:e.name,onClick:function(){return c("orbit",{ref:e.ref})}}):e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.gender}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.species}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.whokisser}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.erptag}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.tag}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return V(e)},color:"transparent",icon:"sticky-note",mr:1,content:"View"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("view_flist",{ref:e.ref})},color:"transparent",icon:"linkify",disabled:!e.flist_link,mr:1,content:"Link"})})]},t)}))]})})},u=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data,e.id),i=e.children,l=(0,r.useLocalState)(t,"sortId","name"),d=l[0],u=l[1],s=(0,r.useLocalState)(t,"sortOrder","name"),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{width:"100%",color:d!==c&&"transparent",onClick:function(){d===c?p(!m):(u(c),p(!0))},children:[i,d===c&&(0,o.createComponentVNode)(2,a.Icon,{name:m?"sort-up":"sort-down",ml:"0.25rem;"})]})})}},19427:function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.ChemAcclimator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:320,height:271,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[l.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return i("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:l.target_temperature,stepPixelSize:2,onChange:function(e,t){i("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.enabled?"On":"Off",selected:l.enabled,onClick:function(){return i("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.max_volume,unit:"u",width:"50px",minValue:l.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return i("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:l.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:l.emptying?"Emptying":"Filling"})]})})]})})}},86389:function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.ChemDebugSynthesizer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount,u=l.beakerCurrentVolume,s=l.beakerMaxVolume,m=l.isBeakerLoaded,p=l.beakerContents,C=void 0===p?[]:p;return(0,o.createComponentVNode)(2,c.Window,{width:390,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return i("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",minValue:1,maxValue:s,step:1,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return i("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return i("makecup")}}),children:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," / "+s+" u"]}),C.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})})})}},16551:function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(58734),r=n(5339),a=n(85260),c=n(54777),i=n(50930),l=n(33677);t.ChemDispenser=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=!!u.recordingRecipe,m=Object.keys(u.recipes).map((function(e){return{name:e,contents:u.recipes[e]}})),p=u.beakerTransferAmounts||[],C=s&&Object.keys(u.recordingRecipe).map((function(e){return{id:e,name:(0,a.toTitleCase)(e.replace(/_/," ")),volume:u.recordingRecipe[e]}}))||u.beakerContents||[];return(0,o.createComponentVNode)(2,l.Window,{width:565,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,color:"red",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"circle",mr:1}),"Recording"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Chemical Storage",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:u.cartridgeCharge/u.maxCartridgeCharge,children:(0,r.toFixed)(u.cartridgeCharge)+" units"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Recipes",buttons:(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",content:"Clear recipes",onClick:function(){return d("clear_recipes")}})}),!s&&(0,o.createComponentVNode)(2,i.Button,{icon:"circle",disabled:!u.isBeakerLoaded,content:"Record",onClick:function(){return d("record_recipe")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"ban",color:"transparent",content:"Discard",onClick:function(){return d("cancel_recording")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"save",color:"green",content:"Save",onClick:function(){return d("save_recording")}})],0),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:[m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.name,onClick:function(){return d("dispense_recipe",{recipe:e.name})}},e.name)})),0===m.length&&(0,o.createComponentVNode)(2,i.Box,{color:"light-gray",children:"No recipes."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Dispense",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",selected:e===u.amount,content:e,onClick:function(){return d("amount",{target:e})}},e)})),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:u.chemicals.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.title,onClick:function(){return d("dispense",{reagent:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"minus",disabled:s,content:e,onClick:function(){return d("remove",{amount:e})}},e)})),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",buttons:!!u.isBeakerLoaded&&(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!u.isBeakerLoaded,onClick:function(){return d("eject")}}),children:(s?"Virtual beaker":u.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:u.beakerCurrentVolume}),(0,o.createTextVNode)("/"),u.beakerMaxVolume,(0,o.createTextVNode)(" units")],0))||"No beaker"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Contents",children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:u.isBeakerLoaded||s?0===C.length&&"Nothing":"N/A"}),C.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:e.volume})," ","units of ",e.name]},e.name)}))]})]})})]})})}},81900:function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilterPane=t.ChemFilter=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=function(e,t){var n=(0,r.useBackend)(t).act,c=e.title,i=e.list,l=e.reagentName,d=e.onReagentInput,u=c.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:c,minHeight:"240px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return d(t)}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",onClick:function(){return n("add",{which:u,name:l})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return n("remove",{which:u,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;t.ChemFilter=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.left,u=void 0===d?[]:d,s=l.right,m=void 0===s?[]:s,p=(0,r.useLocalState)(t,"leftName",""),C=p[0],h=p[1],N=(0,r.useLocalState)(t,"rightName",""),V=N[0],b=N[1];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Left",list:u,reagentName:C,onReagentInput:function(e){return h(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Right",list:m,reagentName:V,onReagentInput:function(e){return b(e)}})})]})})})}},91354:function(e,t,n){"use strict";t.__esModule=!0,t.ChemHeater=void 0;var o=n(58734),r=n(5339),a=n(54777),c=n(50930),i=n(33677),l=n(36706);t.ChemHeater=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.targetTemp,m=u.isActive,p=u.isBeakerLoaded,C=u.currentTemp,h=u.beakerCurrentVolume,N=u.beakerMaxVolume,V=u.beakerContents,b=void 0===V?[]:V;u.currentpH;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:320,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Thermostat",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return d("power")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,c.NumberInput,{width:"65px",unit:"K",step:10,stepPixelSize:3,value:(0,r.round)(s),minValue:0,maxValue:1e3,onDrag:function(e,t){return d("temperature",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Reading",children:(0,o.createComponentVNode)(2,c.Box,{width:"60px",textAlign:"right",children:p&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:C,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:2,children:[h," / ",N," units,",u.currentpH," pH"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return d("eject")}})],4),children:(0,o.createComponentVNode)(2,l.BeakerContents,{beakerLoaded:p,beakerContents:b})})]})})}},68084:function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data.screen;return(0,o.createComponentVNode)(2,c.Window,{width:465,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:"analyze"===n&&(0,o.createComponentVNode)(2,m)||(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,u=i.screen,p=i.beakerContents,C=void 0===p?[]:p,h=i.bufferContents,N=void 0===h?[]:h,V=i.beakerCurrentVolume,b=i.beakerMaxVolume,f=i.isBeakerLoaded,g=i.isPillBottleLoaded,v=i.pillBottleCurrentAmount,k=i.pillBottleMaxAmount;return"analyze"===u?(0,o.createComponentVNode)(2,m):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:!!i.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:V,initial:0})," / "+b+" units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})],4),children:[!f&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"No beaker loaded."}),!!f&&0===C.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Beaker is empty."}),(0,o.createComponentVNode)(2,l,{children:C.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"buffer"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Buffer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Mode:"}),(0,o.createComponentVNode)(2,a.Button,{color:i.mode?"good":"bad",icon:i.mode?"exchange-alt":"times",content:i.mode?"Transfer":"Destroy",onClick:function(){return c("toggleMode")}})],4),children:[0===N.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Buffer is empty."}),(0,o.createComponentVNode)(2,l,{children:N.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"beaker"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Packaging",children:(0,o.createComponentVNode)(2,s)}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Pill Bottle",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[v," / ",k," pills"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("ejectPillBottle")}})],4)})],0)},l=a.Table,d=function(e,t){var n=(0,r.useBackend)(t).act,c=e.chemical,i=e.transferTo;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.volume,initial:0})," units of "+c.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",onClick:function(){return n("transfer",{id:c.id,amount:1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",onClick:function(){return n("transfer",{id:c.id,amount:5,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"10",onClick:function(){return n("transfer",{id:c.id,amount:10,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",onClick:function(){return n("transfer",{id:c.id,amount:1e3,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"ellipsis-h",title:"Custom amount",onClick:function(){return n("transfer",{id:c.id,amount:-1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"question",title:"Analyze",onClick:function(){return n("analyze",{id:c.id})}})]})]},c.id)},u=function(e){var t=e.label,n=e.amountUnit,r=e.amount,c=e.onChangeAmount,i=e.onCreate,l=e.sideNote;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:[(0,o.createComponentVNode)(2,a.NumberInput,{width:"84px",unit:n,step:1,stepPixelSize:15,value:r,minValue:1,maxValue:10,onChange:c}),(0,o.createComponentVNode)(2,a.Button,{ml:1,content:"Create",onClick:i}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,ml:1,color:"label",children:l})]})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useSharedState)(t,"pillAmount",1),d=l[0],s=l[1],m=(0,r.useSharedState)(t,"patchAmount",1),p=m[0],C=m[1],h=(0,r.useSharedState)(t,"bottleAmount",1),N=h[0],V=h[1],b=(0,r.useSharedState)(t,"packAmount",1),f=b[0],g=b[1],v=(0,r.useSharedState)(t,"setstimpakAmount",1),k=v[0],x=v[1],B=(0,r.useSharedState)(t,"setsuperstimpakAmount",1),w=B[0],_=B[1],y=(0,r.useSharedState)(t,"setPowderbagAmount",1),L=y[0],S=y[1],I=(0,r.useSharedState)(t,"setprimitiveBottleAmount",1),T=I[0],A=I[1],P=i.condi,F=i.advanced,M=i.primitive,R=i.chosenPillStyle,D=i.pillStyles,j=void 0===D?[]:D;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[!P&&!M&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill type",children:j.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===R,textAlign:"center",color:"transparent",onClick:function(){return c("pillStyle",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.className})},e.id)}))}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Pills",amount:d,amountUnit:"pills",sideNote:"max 50u",onChangeAmount:function(e,t){return s(t)},onCreate:function(){return c("create",{type:"pill",amount:d,volume:"auto"})}}),!P&&!!F&&!M&&(0,o.createComponentVNode)(2,u,{label:"Patches",amount:p,amountUnit:"patches",sideNote:"max 40u",onChangeAmount:function(e,t){return C(t)},onCreate:function(){return c("create",{type:"patch",amount:p,volume:"auto"})}}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 30u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"bottle",amount:N,volume:"auto"})}}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Stimpaks",amount:k,amountUnit:"stimpaks",sideNote:"max 10u",onChangeAmount:function(e,t){return x(t)},onCreate:function(){return c("create",{type:"stimPak",amount:k,volume:"auto"})}}),!P&&!!F&&!M&&(0,o.createComponentVNode)(2,u,{label:"Super Stimpaks",amount:w,amountUnit:"super stimpaks",sideNote:"max 20u",onChangeAmount:function(e,t){return _(t)},onCreate:function(){return c("create",{type:"superStimpak",amount:w,volume:"auto"})}}),!!P&&(0,o.createComponentVNode)(2,u,{label:"Packs",amount:f,amountUnit:"packs",sideNote:"max 10u",onChangeAmount:function(e,t){return g(t)},onCreate:function(){return c("create",{type:"condimentPack",amount:f,volume:"auto"})}}),!!P&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 50u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"condimentBottle",amount:N,volume:"auto"})}}),!!M&&(0,o.createComponentVNode)(2,u,{label:"Powder Bag",amount:p,amountUnit:"powderbags",sideNote:"max 40u",onChangeAmount:function(e,t){return S(t)},onCreate:function(){return c("create",{type:"bag",amount:L,volume:"auto"})}}),!!M&&(0,o.createComponentVNode)(2,u,{label:"Primitive Bottles",amount:N,amountUnit:"bottles",sideNote:"max 60u",onChangeAmount:function(e,t){return A(t)},onCreate:function(){return c("create",{type:"bottle_primitive",amount:T,volume:"auto"})}})]})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.fermianalyze,d=i.analyzeVars;return(0,o.createComponentVNode)(2,a.Section,{title:"Analysis Results",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c("goScreen",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",children:d.state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,a.ColorBox,{color:d.color,mr:1}),d.color]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:d.description}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Metabolization Rate",children:[d.metaRate," u/minute"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Threshold",children:d.overD}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Threshold",children:d.addicD}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity",children:d.purityF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inverse Ratio",children:d.inverseRatioF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity E",children:d.purityE}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lower Optimal Temperature",children:d.minTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upper Optimal Temperature",children:d.maxTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosive Temperature",children:d.eTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"pH Peak",children:d.pHpeak})],4)]})})}},55505:function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.ChemPress=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.current_volume,u=l.product_name,s=l.pill_style,m=l.pill_styles,p=void 0===m?[]:m,C=l.product,h=l.min_volume,N=l.max_volume;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:227,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Product",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Pills",checked:"pill"===C,onClick:function(){return i("change_product",{product:"pill"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Patches",checked:"patch"===C,onClick:function(){return i("change_product",{product:"patch"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Bottles",checked:"bottle"===C,onClick:function(){return i("change_product",{product:"bottle"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",width:"43px",minValue:h,maxValue:N,step:1,stepPixelSize:2,onChange:function(e,t){return i("change_current_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:u,placeholder:u,onChange:function(e,t){return i("change_product_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Box,{as:"span",children:C})]}),"pill"===C&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===s,textAlign:"center",color:"transparent",onClick:function(){return i("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})})})}},17568:function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(58734),r=n(45445),a=n(59641),c=n(54777),i=n(50930),l=n(33677);t.ChemReactionChamber=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,c.useLocalState)(t,"reagentName",""),m=s[0],p=s[1],C=(0,c.useLocalState)(t,"reagentQuantity",1),h=C[0],N=C[1],V=u.emptying,b=u.reagents||[];return(0,o.createComponentVNode)(2,l.Window,{width:250,height:225,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,color:V?"bad":"good",children:V?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,i.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(e,t){return p(t)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,a.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,i.NumberInput,{value:h,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(e,t){return N(t)}}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return d("add",{chem:m,amount:h})}})],4)],4),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"minus",color:"bad",onClick:function(){return d("remove",{chem:t})}}),children:e},t)}))(b)]})})})})}},91475:function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(58734),r=n(5339),a=n(54777),c=n(50930),i=n(33677);t.ChemSplitter=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.straight,s=d.side,m=d.max_transfer;return(0,o.createComponentVNode)(2,i.Window,{width:220,height:105,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:u,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"side",amount:t})}})})]})})})})}},36294:function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(58734),r=n(5339),a=n(54777),c=n(50930),i=n(33677);t.ChemSynthesizer=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.amount,s=d.current_reagent,m=d.chemicals,p=void 0===m?[]:m,C=d.possible_amounts,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:375,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{children:h.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===u,onClick:function(){return l("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,c.Box,{mt:1,children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===s,onClick:function(){return l("select",{reagent:e.id})}},e.id)}))})]})})})}},89223:function(e,t,n){"use strict";t.__esModule=!0,t.CivCargoHoldTerminal=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.CivCargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.pad,s=d.sending,m=d.status_report,p=d.id_inserted,C=d.id_bounty_info;d.id_bounty_value,d.id_bounty_num;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,width:500,height:375,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{color:p?"blue":"default",children:p?"Welcome valued employee.":"To begin, insert your ID into the console."}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})}),(0,o.createComponentVNode)(2,i)]}),(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,children:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",content:"Check Contents",disabled:!u||!p,onClick:function(){return l("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u||!p,onClick:function(){return l(s?"stop":"send")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:C?"recycle":"pen",color:C?"green":"default",content:C?"Replace Bounty":"New Bounty",disabled:!p,onClick:function(){return l("bounty")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Eject",disabled:!p,onClick:function(){return l("eject")}})],4)})]})})})};var i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.id_bounty_info,i=n.id_bounty_value,l=n.id_bounty_num;return(0,o.createComponentVNode)(2,a.Section,{title:"Bounty Info",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:c||"N/A, please add a new bounty."}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Quantity",children:c?l:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Value",children:c?i:"N/A"})]})})}},57286:function(e,t,n){"use strict";t.__esModule=!0,t.ClockworkSlab=void 0;for(var o=n(58734),r=n(54777),a=n(45445),c=n(50930),i=n(33677),l="",d=0;d=_,tooltip:e.tip,tooltipPosition:"left",onClick:function(){return d("recite",{script:e.type})},children:"Recite "+e.required})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,disabled:!e.quickbind,onClick:function(){return d("bind",{script:e.type})},children:["content=",e.bound?"Unbind "+e.bound:"Quickbind"]})})]},e.name)}))})]})]})})})}},22058:function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"],l=["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"],d=["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"],u=["the Red","the Soulless","the Master","the Lord of all things","Jr."];t.CodexGigas=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:450,height:450,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[m.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==m.currentSection,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>2,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>4,onClick:function(){return s(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==m.currentSection,onClick:function(){return s(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:m.currentSection<4,onClick:function(){return s("search")}})})]})]})})})}},36016:function(e,t,n){"use strict";t.__esModule=!0,t.ColorMatrixEditor=void 0;var o=n(58734),r=n(54777),a=n(5339),c=n(50930),i=n(33677);t.ColorMatrixEditor=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.mapRef,s=d.currentColor,m=s[0],p=(m[0],m[1],m[2],m[3],s[1]),C=(p[0],p[1],p[2],p[3],s[2]),h=(C[0],C[1],C[2],C[3],s[3]),N=(h[0],h[1],h[2],h[3],s[4]),V=(N[0],N[1],N[2],N[3],["r","g","b","a","c"]);return(0,o.createComponentVNode)(2,i.Window,{title:"Color Matrix Editor",width:600,height:220,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Stack,{fill:!0,children:[(0,o.createComponentVNode)(2,c.Stack.Item,{align:"center",children:(0,o.createComponentVNode)(2,c.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,c.Stack.Item,{grow:!0}),(0,o.createComponentVNode)(2,c.Stack.Item,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Stack,{children:[0,1,2,3].map((function(e,t){return(0,o.createComponentVNode)(2,c.Stack.Item,{children:(0,o.createComponentVNode)(2,c.Stack,{vertical:!0,children:[0,1,2,3,4].map((function(t,n){return(0,o.createComponentVNode)(2,c.Stack.Item,{children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,textColor:"label",width:"2.1rem",children:""+V[t]+V[e]+":"}),(0,o.createComponentVNode)(2,c.NumberInput,{inline:!0,value:s[4*t+e],step:.01,width:"50px",format:function(e){return(0,a.toFixed)(e,2)},onDrag:function(n,o){var r=s;r[4*t+e]=o,l("transition_color",{color:r})}})]},n)}))})},t)}))})})}),(0,o.createComponentVNode)(2,c.Stack.Item,{grow:!0}),(0,o.createComponentVNode)(2,c.Stack.Item,{align:"left",children:(0,o.createComponentVNode)(2,c.Button.Confirm,{content:"Confirm",confirmContent:"Confirm?",onClick:function(){return l("confirm")}})})]})}),(0,o.createComponentVNode)(2,c.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,c.ByondUi,{height:"100%",params:{id:u,type:"map"}})})]})})})}},9842:function(e,t,n){"use strict";t.__esModule=!0,t.ColormateNoMatrix=t.ColormateMatrix=t.Colormate=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Colormate=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.matrixactive,m=u.temp,p=u.item||[];return(0,o.createComponentVNode)(2,c.Window,{width:"980",height:"720",resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{overflow:"auto",children:[m?(0,o.createComponentVNode)(2,a.NoticeBox,{children:m}):null,Object.keys(p).length?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex,{fill:!0,children:[(0,o.createComponentVNode)(2,a.Section,{width:"50%",height:"20%",children:[(0,o.createVNode)(1,"center",null,"Item:",16),(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64, "+p.sprite,width:"100%",height:"100%",style:{"-ms-interpolation-mode":"nearest-neighbor"}})]}),(0,o.createComponentVNode)(2,a.Section,{width:"50%",height:"20%",children:[(0,o.createVNode)(1,"center",null,"Preview:",16),(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64, "+p.preview,width:"100%",height:"100%",style:{"-ms-interpolation-mode":"nearest-neighbor"}})]})]}),(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Tabs,{fluid:!0,children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:!s,onClick:function(){return d("switch_modes",{mode:"0"})},children:"Regular coloring"},"0"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:s,onClick:function(){return d("switch_modes",{mode:"1"})},children:"Matrixed coloring"},"1")]}),s?(0,o.createFragment)([(0,o.createVNode)(1,"center",null,[(0,o.createTextVNode)("Coloring: "),p.name],0),(0,o.createComponentVNode)(2,l)],4):(0,o.createFragment)([(0,o.createVNode)(1,"center",null,[(0,o.createTextVNode)("Coloring: "),p.name],0),(0,o.createComponentVNode)(2,i)],4)]})],4):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createVNode)(1,"center",null,"No item inserted.",16)})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{grow:1,fill:!0,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Paint",icon:"fill",onClick:function(){return c("paint")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Clear",icon:"eraser",onClick:function(){return c("clear")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject",icon:"eject",onClick:function(){return c("drop")}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"66%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,height:"100%",content:"Select new color",icon:"paint-brush",onClick:function(){return c("choose_color")}})})]})})};t.ColormateNoMatrix=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.matrixcolors||[];return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Paint",icon:"fill",onClick:function(){return c("matrix_paint")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Clear",icon:"eraser",onClick:function(){return c("clear")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject",icon:"eject",onClick:function(){return c("drop")}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rr,onChange:function(e,t){return c("set_matrix_color",{color:1,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gr,onChange:function(e,t){return c("set_matrix_color",{color:4,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.br,onChange:function(e,t){return c("set_matrix_color",{color:7,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rg,onChange:function(e,t){return c("set_matrix_color",{color:2,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gg,onChange:function(e,t){return c("set_matrix_color",{color:5,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.bg,onChange:function(e,t){return c("set_matrix_color",{color:8,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rb,onChange:function(e,t){return c("set_matrix_color",{color:3,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gb,onChange:function(e,t){return c("set_matrix_color",{color:6,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.bb,onChange:function(e,t){return c("set_matrix_color",{color:9,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cr,onChange:function(e,t){return c("set_matrix_color",{color:10,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cg,onChange:function(e,t){return c("set_matrix_color",{color:11,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cb,onChange:function(e,t){return c("set_matrix_color",{color:12,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"question-circle",color:"blue"})," RG means red will become this much green.",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Icon,{name:"question-circle",color:"blue"})," CR means that red will have this much constrast applied to it."]})]})})};t.ColormateMatrix=l},77970:function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(58734),r=(n(85260),n(54777)),a=n(50930),c=n(33677);t.ComputerFabricator=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{title:"Personal Computer Vendor",width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==m.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return s("clean_order")}}),0===m.state&&(0,o.createComponentVNode)(2,i),1===m.state&&(0,o.createComponentVNode)(2,l),2===m.state&&(0,o.createComponentVNode)(2,d),3===m.state&&(0,o.createComponentVNode)(2,u)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:"306px",children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"2"})}})})]})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:"282px",buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Secondary Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a secondary RFID card reader, for manipulating or\nreading from a second standard RFID card.\nPlease note that a primary card reader is necessary to\nallow the device to read your identification, but one\nis included in the base price.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return c("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return c("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:2,onClick:function(){return c("confirm_order")}})]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:"282px",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?c.COLORS.department.security:e>=20&&e<30?c.COLORS.department.medbay:e>=30&&e<40?c.COLORS.department.science:e>=40&&e<50?c.COLORS.department.engineering:e>=50&&e<60?c.COLORS.department.cargo:e>=200&&e<230?c.COLORS.department.centcom:c.COLORS.department.other},u=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:2,color:c.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(){return(0,o.createComponentVNode)(2,i.Window,{title:"Crew Monitor",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"540px",children:(0,o.createComponentVNode)(2,s)})})})};var s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,s=i.sensors||[];return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(C=e.ijob,C%10==0),color:d(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,n=e.toxdam,r=e.burndam,s=e.brutedam,m=t+n+r+s,p=Math.min(Math.max(Math.ceil(m/25),0),5),l[p])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,u,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,u,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,u,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,u,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return c("select_person",{name:e.name})}})})]},e.name);var t,n,r,s,m,p,C}))]})}},52261:function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(36706),i=n(33677),l=[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}];t.Cryo=function(){return(0,o.createComponentVNode)(2,i.Window,{width:400,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:d.occupant.name||"No Occupant"}),!!d.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:d.occupant.statstate,children:d.occupant.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:d.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant.health/d.occupant.maxHealth,color:d.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.health})})}),l.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.isOperating?"power-off":"times",disabled:d.isOpen,onClick:function(){return i("power")},color:d.isOperating&&"green",children:d.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:d.isOpen?"unlock":"lock",onClick:function(){return i("door")},content:d.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:d.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return i("autoeject")},content:d.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!d.isBeakerLoaded,onClick:function(){return i("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:d.isBeakerLoaded,beakerContents:d.beakerContents})})],4)}},78804:function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.DecalPainter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.decal_list||[],u=l.color_list||[],s=l.dir_list||[];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===l.decal_style,onClick:function(){return i("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===l.decal_color,onClick:function(){return i("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===l.decal_direction,onClick:function(){return i("selected direction",{dirs:e.dirs})}},e.dirs)}))})]})})}},79670:function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.DisposalUnit=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data;return u.full_pressure?(n="good",i="Ready"):u.panel_open?(n="bad",i="Power Disabled"):u.pressure_charging?(n="average",i="Pressurizing"):(n="bad",i="Off"),(0,o.createComponentVNode)(2,c.Window,{width:300,height:180,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:n,children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:u.flush?"toggle-on":"toggle-off",disabled:u.isai||u.panel_open,content:u.flush?"Disengage":"Engage",onClick:function(){return d(u.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:u.isai,content:"Eject Contents",onClick:function(){return d("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:u.panel_open,selected:u.pressure_charging,onClick:function(){return d(u.pressure_charging?"pump-0":"pump-1")}})})]})})})})}},56991:function(e,t,n){"use strict";t.__esModule=!0,t.DnaConsoleCommands=t.DnaConsole=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(59641),i=n(85260),l=n(96525),d=n(54777),u=n(50930),s=n(33677),m=["gene","onChange","disabled"];var p=["A","T","C","G"],C={A:"green",T:"green",G:"blue",C:"blue",X:"grey"},h="storage",N="sequencer",V="enzymes",b="console",f="disk",g="injector",v="mutations",k="chromosomes",x="mutations",B="diskenzymes",w={1:"good",2:"bad",4:"average"},_=function(e,t){return e.Alias===t.Alias&&e.AppliedChromo===t.AppliedChromo};t.DnaConsole=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.isPulsingRads),c=r.radPulseSeconds,i=r.view.consoleMode;return(0,o.createComponentVNode)(2,s.Window,{title:"DNA Console",width:539,height:710,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,u.Dimmer,{fontSize:"14px",textAlign:"center",children:[(0,o.createComponentVNode)(2,u.Icon,{mr:1,name:"spinner",spin:!0}),"Radiation pulse in progress...",(0,o.createComponentVNode)(2,u.Box,{mt:1}),c,"s"]}),(0,o.createComponentVNode)(2,s.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,y),(0,o.createComponentVNode)(2,T),i===h&&(0,o.createComponentVNode)(2,P),i===N&&(0,o.createComponentVNode)(2,j),i===V&&(0,o.createComponentVNode)(2,z)]})]})};var y=function(e,t){return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Scanner",buttons:(0,o.createComponentVNode)(2,L),children:(0,o.createComponentVNode)(2,I)})},L=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDelayedAction,i=r.isPulsingRads,l=r.isScannerConnected,s=r.isScrambleReady,m=r.isViableSubject,p=r.scannerLocked,C=r.scannerOpen,h=r.scrambleSeconds;return l?(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Delayed Action",onClick:function(){return a("cancel_delay")}}),!!m&&(0,o.createComponentVNode)(2,u.Button,{disabled:!s||i,onClick:function(){return a("scramble_dna")},children:["Scramble DNA",!s&&" ("+h+"s)"]}),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{icon:p?"lock":"lock-open",color:p&&"bad",disabled:C,content:p?"Locked":"Unlocked",onClick:function(){return a("toggle_lock")}}),(0,o.createComponentVNode)(2,u.Button,{disabled:p,content:C?"Close":"Open",onClick:function(){return a("toggle_door")}})],0):(0,o.createComponentVNode)(2,u.Button,{content:"Connect Scanner",onClick:function(){return a("connect_scanner")}})},S=function(e,t){var n=e.status;return 0===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"good",children:"Conscious"}):2===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Unconscious"}):1===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Critical"}):3===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Dead"}):4===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Transforming"}):(0,o.createComponentVNode)(2,u.Box,{inline:!0,children:"Unknown"})},I=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.subjectName),c=r.isScannerConnected,i=r.isViableSubject,l=r.subjectHealth,s=r.subjectRads,m=r.subjectStatus;return c?i?(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Status",children:[a,(0,o.createComponentVNode)(2,u.Icon,{mx:1,color:"label",name:"long-arrow-alt-right"}),(0,o.createComponentVNode)(2,S,{status:m})]}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:l,minValue:0,maxValue:100,ranges:{olive:[101,Infinity],good:[70,101],average:[30,70],bad:[-Infinity,30]},children:[l,"%"]})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{bad:[71,Infinity],average:[30,71],good:[0,30],olive:[-Infinity,0]},children:[s,"%"]})})]}):(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No viable subject found in DNA Scanner."}):(0,o.createComponentVNode)(2,u.Box,{color:"bad",children:"DNA Scanner is not connected."})},T=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.isInjectorReady,l=r.injectorSeconds,s=r.view.consoleMode;return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Console",buttons:!i&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Injector on cooldown (",l,"s)"]}),children:(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,u.Button,{content:"Storage",selected:s===h,onClick:function(){return a("set_view",{consoleMode:h})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Sequencer",disabled:!r.isViableSubject,selected:s===N,onClick:function(){return a("set_view",{consoleMode:N})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Enzymes",selected:s===V,onClick:function(){return a("set_view",{consoleMode:V})}})]}),!!c&&(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Disk",children:(0,o.createComponentVNode)(2,u.Button,{icon:"eject",content:"Eject",onClick:function(){a("eject_disk"),a("set_view",{storageMode:b})}})})]})})};t.DnaConsoleCommands=T;var A=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.view,l=i.storageMode,s=i.storageConsSubMode,m=i.storageDiskSubMode;return(0,o.createFragment)([l===b&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:s===v,content:"Mutations",onClick:function(){return a("set_view",{storageConsSubMode:v})}}),(0,o.createComponentVNode)(2,u.Button,{selected:s===k,content:"Chromosomes",onClick:function(){return a("set_view",{storageConsSubMode:k})}})],4),l===f&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:m===v,content:"Mutations",onClick:function(){return a("set_view",{storageDiskSubMode:v})}}),(0,o.createComponentVNode)(2,u.Button,{selected:m===B,content:"Enzymes",onClick:function(){return a("set_view",{storageDiskSubMode:B})}})],4),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{content:"Console",selected:l===b,onClick:function(){return a("set_view",{storageMode:b,storageConsSubMode:v})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Disk",disabled:!c,selected:l===f,onClick:function(){return a("set_view",{storageMode:f,storageDiskSubMode:x})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Adv. Injector",selected:l===g,onClick:function(){return a("set_view",{storageMode:g})}})],0)},P=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.view,i=c.storageMode,l=c.storageConsSubMode,s=c.storageDiskSubMode,m=r.diskMakeupBuffer,p=r.diskHasMakeup,C=r.storage[i];return(0,o.createComponentVNode)(2,u.Section,{title:"Storage",buttons:(0,o.createComponentVNode)(2,A),children:[i===b&&l===v&&(0,o.createComponentVNode)(2,F,{mutations:C}),i===b&&l===k&&(0,o.createComponentVNode)(2,M),i===f&&s===x&&(0,o.createComponentVNode)(2,F,{mutations:C}),i===f&&s===B&&(0,o.createFragment)([(0,o.createComponentVNode)(2,Q,{makeup:m}),(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",disabled:!p,content:"Delete",onClick:function(){return a("del_makeup_disk")}})],4),i===g&&(0,o.createComponentVNode)(2,K)]})},F=function(e,t){var n=e.customMode,r=void 0===n?"":n,a=(0,d.useBackend)(t),c=a.data,l=a.act,s=e.mutations||[],m=c.view.storageMode+r,p=c.view["storage"+m+"MutationRef"],C=s.find((function(e){return e.ByondRef===p}));return!C&&s.length>0&&(C=s[0],p=C.ByondRef),(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:(0,i.capitalize)(c.view.storageMode)+" Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.ByondRef===p,content:e.Name,onClick:function(){var t;return l("set_view",((t={})["storage"+m+"MutationRef"]=e.ByondRef,t))}},e.ByondRef)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Mutation Info",level:2,children:(0,o.createComponentVNode)(2,R,{mutation:C})})})]})},M=function(e,t){var n,a=(0,d.useBackend)(t),c=a.data,i=a.act,l=null!=(n=c.chromoStorage)?n:[],s=(0,r.uniqBy)((function(e){return e.Name}))(l),m=c.view.storageChromoName,p=l.find((function(e){return e.Name===m}));return(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Console Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.Name===m,content:e.Name,onClick:function(){return i("set_view",{storageChromoName:e.Name})}},e.Index)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Chromosome Info",level:2,children:!p&&(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."})||(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:p.Name}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:p.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Amount",children:l.filter((function(e){return e.Name===p.Name})).length})]}),(0,o.createComponentVNode)(2,u.Button,{mt:2,icon:"eject",content:"Eject Chromosome",onClick:function(){return i("eject_chromo",{chromo:p.Name})}})],4)})})]})},R=function(e,t){var n,c,i,l=e.mutation,s=(0,d.useBackend)(t),m=s.data,p=s.act,C=m.diskCapacity,h=m.diskReadOnly,N=m.hasDisk,V=m.isInjectorReady,b=null!=(n=m.storage.disk)?n:[],f=null!=(c=m.storage.console)?c:[],g=null!=(i=m.storage.injector)?i:[];if(!l)return(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."});if("occupant"===l.Source&&!l.Discovered)return(0,o.createComponentVNode)(2,u.LabeledList,{children:(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:l.Alias})});var v=f.find((function(e){return _(e,l)})),k=b.find((function(e){return _(e,l)})),x=(0,a.flow)([(0,r.uniqBy)((function(e){return e.Name})),(0,r.filter)((function(e){return e.Name!==l.Name}))])([].concat(b,f));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:w[l.Quality],children:l.Name})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:l.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Instability",children:l.Instability})]}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,u.Box,{children:["disk"===l.Source&&(0,o.createComponentVNode)(2,J,{disabled:!N||C<=0||h,mutations:x,source:l}),"console"===l.Source&&(0,o.createComponentVNode)(2,J,{mutations:x,source:l}),["occupant","disk","console"].includes(l.Source)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:g.map((function(e){return e.name})),disabled:0===g.length||!l.Active,selected:"Add to advanced injector",onSelected:function(e){return p("add_advinj_mut",{mutref:l.ByondRef,advinj:e,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!V||!l.Active,content:"Print Activator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:1,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!V||!l.Active,content:"Print Mutator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:0,source:l.Source})}})],4)]}),["disk","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:v||!l.Active,content:"Save to Console",onClick:function(){return p("save_console",{mutref:l.ByondRef,source:l.Source})}}),["console","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:k||!N||C<=0||h||!l.Active,content:"Save to Disk",onClick:function(){return p("save_disk",{mutref:l.ByondRef,source:l.Source})}}),["console","disk","injector"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",content:"Delete from "+l.Source,onClick:function(){return p("delete_"+l.Source+"_mut",{mutref:l.ByondRef})}}),(2===l.Class||!!l.Scrambled&&"occupant"===l.Source)&&(0,o.createComponentVNode)(2,u.Button,{content:"Nullify",onClick:function(){return p("nullify",{mutref:l.ByondRef})}}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,D,{disabled:"occupant"!==l.Source,mutation:l})],0)},D=function(e,t){var n=e.mutation,r=e.disabled,a=(0,d.useBackend)(t),c=(a.data,a.act);return 0===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No compatible chromosomes"}):1===n.CanChromo?r?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No chromosome applied."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:n.ValidStoredChromos,disabled:0===n.ValidStoredChromos.length,selected:0===n.ValidStoredChromos.length?"No Suitable Chromosomes":"Select a chromosome",onSelected:function(e){return c("apply_chromo",{chromo:e,mutref:n.ByondRef})}}),(0,o.createComponentVNode)(2,u.Box,{color:"label",mt:1,children:["Compatible with: ",n.ValidChromos]})],4):2===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:["Applied chromosome: ",n.AppliedChromo]}):null},j=function(e,t){var n,r,a=(0,d.useBackend)(t),c=a.data,i=a.act,s=null!=(n=null==(r=c.storage)?void 0:r.occupant)?n:[],m=c.isJokerReady,p=c.isMonkey,C=c.jokerSeconds,h=c.subjectStatus,N=c.view,V=N.sequencerMutation,b=N.jokerActive,f=s.find((function(e){return e.Alias===V}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:s.length<=8?"154px":"174px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequences",height:"214px",overflowY:s.length>8&&"scroll",children:s.map((function(e){return(0,o.createComponentVNode)(2,W,{url:(0,l.resolveAsset)(e.Image),selected:e.Alias===V,onClick:function(){i("set_view",{sequencerMutation:e.Alias}),i("check_discovery",{alias:e.Alias})}},e.Alias)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequence Info",minHeight:"100%",children:(0,o.createComponentVNode)(2,R,{mutation:f})})})]}),3===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: DECEASED."})||p&&"Monkified"!==(null==f?void 0:f.Name)&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: MONKEY."})||4===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: TRANSFORMING."})||(0,o.createComponentVNode)(2,u.Section,{title:"Genome Sequencer\u2122",buttons:!m&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Joker on cooldown (",C,"s)"]})||b&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Box,{mr:1,inline:!0,color:"label",children:"Click on a gene to reveal it."}),(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Joker",onClick:function(){return i("set_view",{jokerActive:""})}})],4)||(0,o.createComponentVNode)(2,u.Button,{icon:"crown",color:"purple",content:"Use Joker",onClick:function(){return i("set_view",{jokerActive:"1"})}}),children:(0,o.createComponentVNode)(2,O,{mutation:f})})],0)},W=function(e,t){var n,r=e.url,a=e.selected,c=e.onClick;return a&&(n="2px solid #22aa00"),(0,o.createComponentVNode)(2,u.Box,{as:"img",src:r,style:{width:"64px",margin:"2px","margin-left":"4px",outline:n},onClick:c})},E=function(e,t){var n=e.gene,r=e.onChange,a=e.disabled,c=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,m),i=p.length,l=p.indexOf(n),d=a&&C.X||C[n];return(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Button,Object.assign({},c,{color:d,onClick:function(e){if(e.preventDefault(),r)if(-1!==l){var t=p[(l+1)%i];r(e,t)}else r(e,p[0])},oncontextmenu:function(e){if(e.preventDefault(),r)if(-1!==l){var t=p[(l-1+i)%i];r(e,t)}else r(e,p[i-1])},children:n})))},O=function(e,t){var n=e.mutation,r=(0,d.useBackend)(t),a=r.data,i=r.act,l=a.view.jokerActive;if(!n)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No genome selected for sequencing."});if(n.Scrambled)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"Sequence unreadable due to unpredictable mutation."});for(var s=n.Sequence,m=n.DefaultSeq,p=[],C=function(e){var t=s.charAt(e),r=(0,o.createComponentVNode)(2,E,{width:"22px",textAlign:"center",disabled:!!n.Scrambled||1!==n.Class,className:"X"===(null==m?void 0:m.charAt(e))&&!n.Active&&(0,c.classes)(["outline-solid","outline-color-orange"]),gene:t,onChange:function(t,o){if(!t.ctrlKey)return l?(i("pulse_gene",{pos:e+1,gene:"J",alias:n.Alias}),void i("set_view",{jokerActive:""})):void i("pulse_gene",{pos:e+1,gene:o,alias:n.Alias});i("pulse_gene",{pos:e+1,gene:"X",alias:n.Alias})}});p.push(r)},h=0;h=3){var r=(0,o.createComponentVNode)(2,u.Box,{inline:!0,width:"22px",mx:"1px",children:s});l.push(r),s=[]}},p=0;p=i,onCommit:function(e,t){return a("new_adv_inj",{name:t})}})})]})},J=function(e,t){var n=e.mutations,r=void 0===n?[]:n,a=e.source,c=(0,d.useBackend)(t),i=c.act;c.data;return(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:r.map((function(e){return e.Name})),disabled:0===r.length,selected:"Combine mutations",onSelected:function(e){return i("combine_"+a.Source,{firstref:(t=e,null==(n=r.find((function(e){return e.Name===t})))?void 0:n.ByondRef),secondref:a.ByondRef});var t,n}},a.ByondRef)}},48301:function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.DnaVault=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.completed,u=l.used,s=l.choiceA,m=l.choiceB,p=l.dna,C=l.dna_max,h=l.plants,N=l.plants_max,V=l.animals,b=l.animals_max;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p/C,children:p+" / "+C+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/N,children:h+" / "+N+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:V/V,children:V+" / "+b+" Samples"})})]})}),!(!d||u)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:s,textAlign:"center",onClick:function(){return i("gene",{choice:s})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:m,textAlign:"center",onClick:function(){return i("gene",{choice:m})}})})]})]})]})})}},73848:function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(85260),i=n(33677);t.EightBallVote=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.shaking);return(0,o.createComponentVNode)(2,i.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})||(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.question,u=l.answers,s=void 0===u?[]:u;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',d,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,c.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return i("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]})}},55501:function(e,t,n){"use strict";t.__esModule=!0,t.Electrolyzer=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Electrolyzer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,content:l.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})})})})}},85738:function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(58734),r=n(5339),a=n(54777),c=n(50930),i=n(33677);t.Electropack=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.code,m=d.frequency,p=d.minFrequency,C=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:260,height:137,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:p/10,maxValue:C/10,value:m/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:s,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})})]})})})})}},54287:function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.EmergencyShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.timer_str,u=l.enabled,s=l.emagged,m=l.engines_started,p=l.authorizations_remaining,C=l.authorizations,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:d}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:m?"good":"average",ml:1,children:m?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!u,onClick:function(){return i("abort")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!u,onClick:function(){return i("authorize")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!u,onClick:function(){return i("repeal")}})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:s?"bad":"good",children:s?"ERROR":"Remaining: "+p}),children:h.length>0?h.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"})})]})]})})})}},42583:function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(58734),r=n(85260),a=n(54777),c=n(50930),i=n(33677);t.EngravedMessage=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.admin_mode,s=d.creator_key,m=d.creator_name,p=d.has_liked,C=d.has_disliked,h=d.hidden_message,N=d.is_creator,V=d.num_likes,b=d.num_dislikes,f=d.realdate;return(0,o.createComponentVNode)(2,i.Window,{width:600,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(h)}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-up",content:" "+V,disabled:N,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("like")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"circle",disabled:N,selected:!C&&!p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("neutral")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-down",content:" "+b,disabled:N,selected:C,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("dislike")}})})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Created On",children:f})})}),(0,o.createComponentVNode)(2,c.Section),!!u&&(0,o.createComponentVNode)(2,c.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return l("delete")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Ckey",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Character Name",children:m})]})})]})})}},12234:function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitControlConsole=void 0;var o=n(58734),r=n(5339),a=n(54777),c=n(50930),i=n(33677);t.ExosuitControlConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data.mechs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No exosuits detected"}),u.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"envelope",content:"Send Message",disabled:!e.pilot,onClick:function(){return l("send_message",{tracker_ref:e.tracker_ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"wifi",content:e.emp_recharging?"Recharging...":"EMP Burst",color:"bad",disabled:e.emp_recharging,onClick:function(){return l("shock",{tracker_ref:e.tracker_ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.integrity<=30?"bad":e.integrity<=70&&"average")||"good",children:[e.integrity,"%"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.charge<=30?"bad":e.charge<=70&&"average")||"good",children:"number"==typeof e.charge&&e.charge+"%"||"Not Found"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Airtank",children:"number"==typeof e.airtank&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:e.airtank,format:function(e){return(0,r.toFixed)(e,2)+" kPa"}})||"Not Equipped"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pilot",children:e.pilot||"None"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Active Equipment",children:e.active_equipment||"None"}),e.cargo_space>=0&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Used Cargo Space",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.cargo_space<=30?"good":e.cargo_space<=70&&"average")||"bad",children:[e.cargo_space,"%"]})})]})},e.tracker_ref)}))]})})}},83777:function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitFabricator=void 0;var o,r=n(58734),a=n(59641),c=n(45445),i=n(54777),l=n(59576),d=n(50930),u=n(33677),s=n(85260);function m(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nn?{color:2,deficit:e-n}:t>n?{color:1,deficit:e}:e+t>n?{color:1,deficit:e+t-n}:{color:0,deficit:0}},V=function(e,t,n){var o={textColor:0};return Object.keys(n.cost).forEach((function(r){o[r]=N(n.cost[r],t[r],e[r]),o[r].color>o.textColor&&(o.textColor=o[r].color)})),o};t.ExosuitFabricator=function(e,t){var n,o,a=(0,i.useBackend)(t),c=a.act,l=a.data,s=l.queue||[],m=(n=l.materials||[],o={},n.forEach((function(e){o[e.name]=e.amount})),o),p=function(e,t){var n={},o={},r={},a={};return t.forEach((function(t,c){a[c]=0,Object.keys(t.cost).forEach((function(i){n[i]=n[i]||0,r[i]=r[i]||0,o[i]=N(t.cost[i],n[i],e[i]),0!==o[i].color?a[c]1&&l=0&&m+"s"||"Dispensing..."})]})})})}}},51601:function(e,t,n){"use strict";t.__esModule=!0,t.ForbiddenLore=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(54777),i=n(50930),l=n(33677);t.ForbiddenLore=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.charges,m=(0,a.flow)([(0,r.sortBy)((function(e){return"Research"!==e.state}),(function(e){return"Side"===e.path}))])(u.to_know||[]);return(0,o.createComponentVNode)(2,l.Window,{width:500,height:900,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Research Eldritch Knowledge",children:["Charges left : ",s,null!==m?m.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,my:1,children:[e.path," path"]}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:e.state,disabled:e.disabled,onClick:function(){return d("research",{name:e.name,cost:e.cost})}})," ","Cost : ",e.cost]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,my:1,children:e.flavour}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:e.desc})]},e.name)})):(0,o.createComponentVNode)(2,i.Box,{children:"No more knowledge can be found"})]})})})}},79748:function(e,t,n){"use strict";t.__esModule=!0,t.Gateway=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Gateway=function(){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.gateway_present,d=void 0!==l&&l,u=i.gateway_status,s=void 0!==u&&u,m=i.current_target,p=void 0===m?null:m,C=i.destinations,h=void 0===C?[]:C;return d?p?(0,o.createComponentVNode)(2,a.Section,{title:p.name,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"rainbow",size:4,color:"green"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("deactivate")},children:"Deactivate"})]}):h.length?(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Gateway Unpowered"}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:e.available&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("activate",{destination:e.ref})},children:"Activate"})||(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{m:1,textColor:"bad",children:e.reason}),!!e.timeout&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.timeout,children:"Calibrating..."})],0)},e.ref)}))],0):(0,o.createComponentVNode)(2,a.Section,{children:"No gateway nodes detected."}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No linked gateway"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("linkup")},children:"Linkup"})]})}},32034:function(e,t,n){"use strict";t.__esModule=!0,t.prepareSearch=t.GenitalConfig=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(85260),i=n(54777),l=n(50930),d=n(33677);t.GenitalConfig=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,c=a.genitals||[],s=(0,i.useLocalState)(t,"tabIndex",0),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,d.Window,{width:850,height:600,theme:"hotpink",resizable:!0,children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!1,children:[a.target_name?(0,o.createComponentVNode)(2,l.Section,{children:["Interacting with ",(0,o.createVNode)(1,"b",null,a.target_name,0)]}):null,c.length?(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Section,{title:"Genital",children:(0,o.createComponentVNode)(2,l.Stack,{vertical:!0,children:[(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createComponentVNode)(2,l.Tabs,{fluid:!0,textAlign:"center",children:c.map((function(e,t){return(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:m===t,onClick:function(){return p(t)},children:e.name},t)}))})}),(0,o.createComponentVNode)(2,l.Stack.Item,{children:c[m].description})]})}),(0,o.createComponentVNode)(2,l.Section,{title:"Settings",children:(0,o.createComponentVNode)(2,l.Stack,{grow:!0,children:(0,o.createComponentVNode)(2,l.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,l.Stack,{vertical:!0,children:[(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createComponentVNode)(2,l.Section,{children:["Fluid level:",(0,o.createComponentVNode)(2,l.ProgressBar,{value:c[m].fluid?c[m].fluid:0,color:"white"},c[m].key)]})}),a.istargetself?(0,o.createComponentVNode)(2,u):null]})})})}),(0,o.createComponentVNode)(2,l.Section,{title:"Items Inserted",buttons:(0,o.createComponentVNode)(2,l.Button,{fluid:!0,content:"Insert Item",onClick:function(){return r("equipment",{genital:c[m].key,equipment_action:"insert"})}}),children:(0,o.createComponentVNode)(2,C)})],4):(0,o.createComponentVNode)(2,l.Section,{align:"center",children:[a.target_name?"They":"You"," don't seem to have any genitals... Or any that you could interact with."]})]})})};var u=function(e,t){var n=(0,i.useLocalState)(t,"tabIndex",0)[0],r=(0,i.useBackend)(t),a=(r.act,r.data.genitals[n]);return(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createComponentVNode)(2,l.Stack,{grow:!0,children:[a.img?(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+a.img,style:{"vertical-align":"middle","horizontal-align":"middle"}})}):null,"number"==typeof a.max_size?(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createComponentVNode)(2,s)}):null,(0,o.createComponentVNode)(2,l.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,p)})]})})},s=function(e,t){var n=(0,i.useLocalState)(t,"tabIndex",0)[0],r=(0,i.useBackend)(t),a=r.act,c=r.data.genitals[n];return(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.Stack,{children:[(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createComponentVNode)(2,l.Stack,{vertical:!0,children:["Max growth:",(0,o.createComponentVNode)(2,l.NumberInput,{value:c.max_size,onChange:function(e,t){return a("genital",{genital:c.key,max_size:t})}})]})}),(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createComponentVNode)(2,l.Stack,{vertical:!0,children:["Min shrink:",(0,o.createComponentVNode)(2,l.NumberInput,{value:c.min_size,onChange:function(e,t){return a("genital",{genital:c.key,min_size:t})}})]})})]})})},m={"Always visible":"eye","Hidden by clothes":"tshirt","Hidden by underwear":"low-vision","Always hidden":"eye-slash","Allows egg stuffing":"egg"},p=function(e,t){var n=(0,i.useLocalState)(t,"tabIndex",0)[0],r=(0,i.useBackend)(t),a=r.act,c=r.data.genitals[n];return(0,o.createComponentVNode)(2,l.Stack,{grow:!0,children:[c.possible_choices.map((function(e){return(0,o.createComponentVNode)(2,l.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,l.Button,{textAlign:"center",tooltip:e,icon:m[e],color:c.visibility===e?"green":"default",onClick:function(){return a("genital",{genital:c.key,visibility:e})},fluid:!0},e)},e)})),(0,o.createComponentVNode)(2,l.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,l.Button,{textAlign:"center",tooltip:c.can_arouse?(c.arousal_state?"Unarouse":"Arouse")+" your "+c.name.toLowerCase():"You cannot modify arousal on your "+c.name.toLowerCase(),icon:"heart",color:c.can_arouse?c.arousal_state?"green":"default":"grey",onClick:function(){return a("genital",{genital:c.key,set_arousal:!c.arousal_state})},fluid:!0},c.arousal_state)}),c.extra_choices instanceof Array?c.extra_choices.map((function(e){return(0,o.createComponentVNode)(2,l.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,l.Button,{textAlign:"center",tooltip:e,icon:m[e],color:c.extras===e?"green":"default",onClick:function(){return a("genital",{genital:c.key,visibility:e})},fluid:!0},e)},e)})):null]})},C=function(e,t){var n=(0,i.useLocalState)(t,"tabIndex",0)[0],r=(0,i.useBackend)(t),a=r.act,c=r.data.genitals[n],d=(0,i.useLocalState)(t,"searchText",""),u=d[0],s=d[1],m=h(c.equipments,u)||[];return(0,o.createComponentVNode)(2,l.Stack,{vertical:!0,children:[(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createComponentVNode)(2,l.Input,{fluid:!0,placeholder:"Search for items..",onInput:function(e,t){return s(t)}})}),(0,o.createComponentVNode)(2,l.Stack.Item,{children:(0,o.createComponentVNode)(2,l.Table,{mb:1,children:m.map((function(e,t){return(0,o.createComponentVNode)(2,l.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,l.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,l.Button,{fluid:!0,content:"Remove",onClick:function(){return a("equipment",{equipment:e.key,genital:c.key,equipment_action:"remove"})}})})]},t)}))})})]})},h=function(e,t){void 0===t&&(t="");var n=(0,c.createSearch)(t,(function(e){return e.name}));return(0,a.flow)([t&&(0,r.filter)(n)])(e)};t.prepareSearch=h},19795:function(e,t,n){"use strict";t.__esModule=!0,t.GhostPoolProtection=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.GhostPoolProtection=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.events_or_midrounds,u=l.spawners,s=l.station_sentience,m=l.silicons,p=l.minigames;return(0,o.createComponentVNode)(2,c.Window,{title:"Ghost Pool Protection",width:400,height:270,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{grow:1,height:"100%",children:(0,o.createComponentVNode)(2,a.Section,{title:"Options",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{color:"good",icon:"plus-circle",content:"Enable Everything",onClick:function(){return i("all_roles")}}),(0,o.createComponentVNode)(2,a.Button,{color:"bad",icon:"minus-circle",content:"Disable Everything",onClick:function(){return i("no_roles")}})],4),children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"For people creating a sneaky event: If you toggle Station Created Sentience, people may catch on that admins have disabled roles for your event..."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:d?"good":"bad",icon:"meteor",content:"Events and Midround Rulesets",onClick:function(){return i("toggle_events_or_midrounds")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:u?"good":"bad",icon:"pastafarianism",content:"Ghost Role Spawners",onClick:function(){return i("toggle_spawners")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:s?"good":"bad",icon:"user-astronaut",content:"Station Created Sentience",onClick:function(){return i("toggle_station_sentience")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:m?"good":"bad",icon:"robot",content:"Silicons",onClick:function(){return i("toggle_silicons")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:p?"good":"bad",icon:"gamepad",content:"Minigames",onClick:function(){return i("toggle_minigames")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:"orange",icon:"check",content:"Apply Changes",onClick:function(){return i("apply_settings")}})})]})})})})}},21554:function(e,t,n){"use strict";t.__esModule=!0,t.GlandDispenser=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.GlandDispenser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.glands,d=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:338,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"60px",height:"60px",m:.75,textAlign:"center",lineHeight:"55px",icon:"eject",backgroundColor:e.color,content:e.amount||"0",disabled:!e.amount,onClick:function(){return i("dispense",{gland_id:e.id})}},e.id)}))})})})}},27969:function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(5339),i=n(13212),l=n(54777),d=n(50930),u=n(33677),s=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e,t){var n=(0,l.useBackend)(t),m=n.act,p=n.data,C=p.currentArea,h=p.currentCoords,N=p.globalmode,V=p.power,b=p.tag,f=p.updating,g=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,i.vecLength)((0,i.vecSubtract)(s(h),s(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(p.signals||[]);return(0,o.createComponentVNode)(2,u.Window,{title:"Global Positioning System",width:470,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,d.Button,{icon:"power-off",content:V?"On":"Off",selected:V,onClick:function(){return m("power")}}),children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,d.Button,{icon:"pencil-alt",content:b,onClick:function(){return m("rename")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,d.Button,{icon:f?"unlock":"lock",content:f?"AUTO":"MANUAL",color:!f&&"bad",onClick:function(){return m("updating")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,d.Button,{icon:"sync",content:N?"MAXIMUM":"LOCAL",selected:!N,onClick:function(){return m("globalmode")}})})]})}),!!V&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,d.Box,{fontSize:"18px",children:[C," (",h,")"]})}),(0,o.createComponentVNode)(2,d.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),g.map((function(e){return(0,o.createComponentVNode)(2,d.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,d.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,c.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,d.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)]})})}},46084:function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.GravityGenerator=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.charging_state,u=l.operational;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:155,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No data available"}),!!u&&0!==d&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"WARNING - Radiation detected"}),!!u&&0===d&&(0,o.createComponentVNode)(2,a.NoticeBox,{success:!0,children:"No radiation detected"}),!!u&&(0,o.createComponentVNode)(2,i)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.breaker,d=i.charge_count,u=i.charging_state,s=i.on,m=i.operational;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"power-off":"times",content:l?"On":"Off",selected:l,disabled:!m,onClick:function(){return c("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===u&&(s&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})})}},49538:function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.GulagItemReclaimer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.mobs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,c.Window,{width:325,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No stored items"}),u.length>0&&(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!l.can_reclaim,onClick:function(){return i("release_items",{mobref:e.mob})}})})]},e.mob)}))})})]})})}},62024:function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.GulagTeleporterConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.teleporter,u=l.teleporter_lock,s=l.teleporter_state_open,m=l.teleporter_location,p=l.beacon,C=l.beacon_location,h=l.id,N=l.id_name,V=l.can_teleport,b=l.goal,f=void 0===b?0:b,g=l.prisoner,v=void 0===g?{}:g;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:295,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:s?"Open":"Closed",disabled:u,selected:s,onClick:function(){return i("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",selected:u,disabled:s,onClick:function(){return i("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:d?"good":"bad",buttons:!d&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_teleporter")}}),children:d?m:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:p?"good":"bad",buttons:!p&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_beacon")}}),children:p?C:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:h?N:"No ID",onClick:function(){return i("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:f,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return i("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:v.name||"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:v.crimstat||"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!V,textAlign:"center",color:"bad",onClick:function(){return i("teleport")}})]})})}},48297:function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Holodeck=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_toggle_safety,u=l.default_programs,s=void 0===u?[]:u,m=l.emag_programs,p=void 0===m?[]:m,C=l.emagged,h=l.program;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:C?"unlock":"lock",content:"Safeties",color:"bad",disabled:!d,selected:!C,onClick:function(){return i("safety")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.split(" - ")[1],textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.split(" - ")[1],color:"bad",textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))})]})})}},70400:function(e,t,n){"use strict";t.__esModule=!0,t.Holopad=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Holopad=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data.calling;return(0,o.createComponentVNode)(2,c.Window,{width:440,height:245,resizable:!0,children:[!!d&&(0,o.createComponentVNode)(2,a.Modal,{fontSize:"36px",fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"phone-alt",rotation:25})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:"Dialing..."})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,textAlign:"center",fontSize:"24px",children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"times",content:"Hang Up",color:"bad",onClick:function(){return l("hang_up")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})]})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.on_network,d=i.on_cooldown,u=i.allowed,s=i.disk,m=i.disk_record,p=i.replay_mode,C=i.loop_mode,h=i.record_mode,N=i.holo_calls,V=void 0===N?[]:N;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Holopad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"bell",content:d?"AI Presence Requested":"Request AI Presence",disabled:!l||d,onClick:function(){return c("AIrequest")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Communicator",children:(0,o.createComponentVNode)(2,a.Button,{icon:"phone-alt",content:u?"Connect To Holopad":"Call Holopad",disabled:!l,onClick:function(){return c("holocall",{headcall:u})}})}),V.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.connected?"Current Call":"Incoming Call",children:(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"phone-slash":"phone-alt",content:e.connected?"Disconnect call from "+e.caller:"Answer call from "+e.caller,color:e.connected?"bad":"good",disabled:!l,onClick:function(){return c(e.connected?"disconnectcall":"connectcall",{holopad:e.ref})}})},e.ref)}))]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holodisk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s||p||h,onClick:function(){return c("disk_eject")}}),children:!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No holodisk"})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk Player",children:[(0,o.createComponentVNode)(2,a.Button,{icon:p?"pause":"play",content:p?"Stop":"Replay",selected:p,disabled:h||!m,onClick:function(){return c("replay_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:C?"Looping":"Loop",selected:C,disabled:h||!m,onClick:function(){return c("loop_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"exchange-alt",content:"Change Offset",disabled:!p,onClick:function(){return c("offset")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recorder",children:[(0,o.createComponentVNode)(2,a.Button,{icon:h?"pause":"video",content:h?"End Recording":"Record",selected:h,disabled:m&&!h||p,onClick:function(){return c("record_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Clear Recording",color:"bad",disabled:!m||p||h,onClick:function(){return c("record_clear")}})]})]})})],4)}},8689:function(e,t,n){"use strict";t.__esModule=!0,t.HypnoChair=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.HypnoChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",children:"The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to ensure immediate and complete obedience and truthfulness."}),(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name?l.occupant.name:"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Phrase",children:(0,o.createComponentVNode)(2,a.Input,{value:l.trigger,onChange:function(e,t){return i("set_phrase",{phrase:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Interrogate Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.interrogating?"Interrupt Interrogation":"Begin Enhanced Interrogation",onClick:function(){return i("interrogate")}}),1===l.interrogating&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]})]})})]})})}},44088:function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.ImplantChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:280,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name||"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.ready?l.special_name||"Implant":"Recharging",onClick:function(){return i("implant")}}),0===l.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[l.ready_implants,1===l.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})]})})}},79323:function(e,t,n){"use strict";t.__esModule=!0,t.InfraredEmitter=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.InfraredEmitter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.visible;return(0,o.createComponentVNode)(2,c.Window,{width:225,height:110,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye":"eye-slash",content:u?"Visible":"Invisible",selected:u,onClick:function(){return i("visibility")}})})]})})})})}},19202:function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Intellicard=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.name,u=l.isDead,s=l.isBraindead,m=l.health,p=l.wireless,C=l.radio,h=l.wiping,N=l.laws,V=void 0===N?[]:N,b=u||s;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:d||"Empty Card",buttons:!!d&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:h?"Stop Wiping":"Wipe",disabled:u,onClick:function(){return i("wipe")}}),children:!!d&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:b?"bad":"good",children:b?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return i("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:C,onClick:function(){return i("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})})})}},52302:function(e,t,n){"use strict";t.__esModule=!0,t.Jukebox=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(54777),i=n(50930),l=n(33677);t.Jukebox=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.active,m=u.track_selected,p=u.track_length,C=u.track_beat,h=u.volume,N=(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u.songs||[]);return(0,o.createComponentVNode)(2,l.Window,{width:370,height:313,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Song Player",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:s?"pause":"play",content:s?"Stop":"Play",selected:s,onClick:function(){return d("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Selected",children:(0,o.createComponentVNode)(2,i.Dropdown,{"overflow-y":"scroll",width:"240px",options:N.map((function(e){return e.name})),disabled:s,selected:m||"Select a Track",onSelected:function(e){return d("select_track",{track:e})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Length",children:m?p:"No Track Selected"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Beat",children:[m?C:"No Track Selected",1===C?" beat":" beats"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Machine Settings",children:(0,o.createComponentVNode)(2,i.LabeledControls,{justify:"center",children:(0,o.createComponentVNode)(2,i.LabeledControls.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,i.Box,{position:"relative",children:[(0,o.createComponentVNode)(2,i.Knob,{size:3.2,color:h>=50?"red":"green",value:h,unit:"%",minValue:0,maxValue:100,step:1,stepPixelSize:1,disabled:s,onDrag:function(e,t){return d("set_volume",{volume:t})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"-2px",right:"-22px",color:"transparent",icon:"fast-backward",onClick:function(){return d("set_volume",{volume:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"16px",right:"-22px",color:"transparent",icon:"fast-forward",onClick:function(){return d("set_volume",{volume:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"34px",right:"-22px",color:"transparent",icon:"undo",onClick:function(){return d("set_volume",{volume:"reset"})}})]})})})})]})})}},76999:function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.KeycardAuth=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:125,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===l.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===l.waiting&&(0,o.createFragment)([!!l.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return i("auth_swipe")},content:"Authorize"}),0===l.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return i("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return i("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return i("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})})})}},45912:function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(58734),r=n(85260),a=n(54777),c=n(50930),i=n(33677);t.LaborClaimConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.can_go_home,s=d.id_points,m=d.ores,p=d.status_info,C=d.unclaimed_points;return(0,o.createComponentVNode)(2,i.Window,{width:315,height:440,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,c.Button,{content:"Move shuttle",disabled:!u,onClick:function(){return l("move_shuttle")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Points",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Claim points",disabled:!C,onClick:function(){return l("claim_points")}}),children:C})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),m.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})]})})}},42241:function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.LanguageMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.admin_mode,u=l.is_living,s=l.omnitongue,m=l.languages,p=void 0===m?[]:m,C=l.unknown_languages,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{title:"Language Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!u&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return i("select_default",{language_name:e.name})}}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return i("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!d&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(s?"Enabled":"Disabled"),selected:s,onClick:function(){return i("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:h.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})]})})}},13991:function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadControl=t.LaunchpadConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return n("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return n("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return n("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return n("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return n("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:-1})}})]})]})},l=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),l=c.act,d=c.data,u=d.x,s=d.y,m=d.pad_name,p=d.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"170px",onChange:function(e,t){return l("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return l("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i)})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return l("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return l("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return l("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return l("pull")}})})]})]})};t.LaunchpadControl=l;t.LaunchpadConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data,u=d.launchpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:260,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"190px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"190px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return i("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,l)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},43553:function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadRemote=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(13991);t.LaunchpadRemote=function(e,t){var n=(0,r.useBackend)(t).data,l=n.has_pad,d=n.pad_closed;return(0,o.createComponentVNode)(2,c.Window,{title:"Briefcase Launchpad Remote",width:300,height:240,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})||d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"})||(0,o.createComponentVNode)(2,i.LaunchpadControl,{topLevel:!0})})})}},84555:function(e,t,n){"use strict";t.__esModule=!0,t.Loader=t.ListInput=void 0;var o=n(58734),r=n(5339),a=n(54777),c=n(50930),i=n(98805),l=n(33677),d=0;t.ListInput=function(e,t){var n=(0,a.useBackend)(t),r=n.act,s=n.data,m=s.title,p=s.message,C=s.buttons,h=s.timeout,N=(0,a.useLocalState)(t,"search_bar",!1),V=N[0],b=N[1],f=(0,a.useLocalState)(t,"displayed_array",C),g=f[0],v=f[1],k=(0,a.useLocalState)(t,"search_array",[]),x=k[0],B=k[1],w=(0,a.useLocalState)(t,"search_index",0),_=w[0],y=w[1],L=(0,a.useLocalState)(t,"last_char_code",null),S=L[0],I=L[1],T=(0,a.useLocalState)(t,"selected_button",C[0]),A=T[0],P=T[1];return(0,o.createComponentVNode)(2,l.Window,{title:m,width:325,height:325,children:[h!==undefined&&(0,o.createComponentVNode)(2,u,{value:h}),(0,o.createComponentVNode)(2,l.Window.Content,{children:(0,o.createComponentVNode)(2,c.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,c.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,c.Section,{fill:!0,scrollable:!0,className:"ListInput__Section",title:p,tabIndex:0,onKeyDown:function(e){if(e.preventDefault(),!(d>performance.now())){if(d=performance.now()+125,e.keyCode===i.KEY_UP||e.keyCode===i.KEY_DOWN){var t=1;e.keyCode===i.KEY_UP&&(t=-1);for(var n=0;n=C.length&&(n=0),P(C[n]),I(null),void document.getElementById(C[n]).focus()}if(e.keyCode!==i.KEY_SPACE&&e.keyCode!==i.KEY_ENTER){var o=String.fromCharCode(e.keyCode).toLowerCase();if(o){var a;if(o===S&&x.length>0){var c=_+1;c0&&(B(l),y(0),a=l[0])}a&&(I(o),P(a),document.getElementById(a).focus())}}else r("choose",{choice:A})}},buttons:(0,o.createComponentVNode)(2,c.Button,{compact:!0,icon:"search",color:"transparent",selected:V,tooltip:"Search Bar",tooltipPosition:"left",onClick:function(){b(!V),v(C)}}),children:g.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,color:"transparent",id:e,selected:A===e,onClick:function(){A===e?r("choose",{choice:e}):P(e),I(null)},children:e},e)}))})}),V&&(0,o.createComponentVNode)(2,c.Stack.Item,{children:(0,o.createComponentVNode)(2,c.Input,{fluid:!0,onInput:function(e,t){return v(C.filter((function(e){return-1!==e.toLowerCase().search(t.toLowerCase())})))}})}),(0,o.createComponentVNode)(2,c.Stack.Item,{children:(0,o.createComponentVNode)(2,c.Stack,{textAlign:"center",children:[(0,o.createComponentVNode)(2,c.Stack.Item,{grow:!0,basis:0,children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,color:"good",lineHeight:2,content:"Confirm",disabled:null===A,onClick:function(){return r("choose",{choice:A})}})}),(0,o.createComponentVNode)(2,c.Stack.Item,{grow:!0,basis:0,children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,color:"bad",lineHeight:2,content:"Cancel",onClick:function(){return r("cancel")}})})]})})]})})]})};var u=function(e){var t=e.value;return(0,o.createVNode)(1,"div","ListInput__Loader",(0,o.createComponentVNode)(2,c.Box,{className:"ListInput__LoaderProgress",style:{width:100*(0,r.clamp01)(t)+"%"}}),2)};t.Loader=u},99229:function(e,t,n){"use strict";t.__esModule=!0,t.LoadoutSelect=void 0;var o=n(58734),r=n(54777),a=n(33677),c=n(50930);t.LoadoutSelect=function(e,t){var n,i,l,d=(0,r.useBackend)(t),u=d.act,s=d.data;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{style:{"vertical-align":"top",flex:"initial"},children:null!=(n=s.outfits)&&n.length?s.outfits.map((function(e){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:s.selected===e,onClick:function(){return u("loadout_select",{name:e})},children:e},e)})):"No loadout options."}),(0,o.createComponentVNode)(2,c.Flex,{direction:"row",width:"100%",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{width:"50%",height:"100%",style:{"vertical-align":"top"},children:(0,o.createComponentVNode)(2,c.Section,{title:"Contents",fill:!0,fitted:!0,children:null!=(i=s.items)&&i.length?s.items.map((function(e){return(0,o.createVNode)(1,"div",null,[(0,o.createVNode)(1,"div",e.icon,null,1,{style:{transform:"scale(1.5)","vertical-align":"middle",float:"left",clear:"left",height:"32px",width:"32px"}}),(0,o.createVNode)(1,"div",null,[e.name,(0,o.createTextVNode)(" "),e.quantity>1&&"x"+e.quantity,(0,o.createVNode)(1,"br")],0,{style:{display:"block","vertical-align":"middle",float:"left",width:"calc(100% - 32px)","line-height":"32px",margin:"auto"}})],4,{style:{margin:"10px 10px","text-align":"center"}},""+e.name)})):"No outfit selected."})}),(0,o.createComponentVNode)(2,c.Flex.Item,{height:"100%",width:"50%",style:{"vertical-align":"top"},children:(0,o.createComponentVNode)(2,c.Section,{title:"Preview",fill:!0,children:null!=(l=s.items)&&l.length?(0,o.createVNode)(1,"div",null,[(0,o.createVNode)(1,"p",null,"(Preview has been disabled due to lag, sorry!)",16),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{style:{margin:"auto",display:"block","text-align":"center"},content:"Finished",onClick:function(){return u("loadout_confirm")}})],4,{style:{"text-align":"center"}}):"No outfit selected."})})]})]})})}},24940:function(e,t,n){"use strict";t.__esModule=!0,t.MafiaPanel=void 0;var o=n(58734),r=n(59641),a=(n(85260),n(54777)),c=n(50930),i=n(33677);t.MafiaPanel=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.lobbydata,m=u.players,p=u.actions,C=u.phase,h=u.roleinfo,N=u.role_theme,V=u.admin_controls,b=u.judgement_phase,f=u.timeleft,g=u.all_roles,v=h?30*m.length:7,k=s?s.filter((function(e){return"Ready"===e.status})):null;return(0,o.createComponentVNode)(2,i.Window,{title:"Mafia",theme:N,width:650,height:293+v,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:V,children:[!h&&(0,o.createComponentVNode)(2,c.Flex,{scrollable:!0,overflowY:"scroll",direction:"column",height:"100%",grow:1,children:(0,o.createComponentVNode)(2,c.Section,{title:"Lobby",mb:1,buttons:(0,o.createComponentVNode)(2,l,{phase:C,timeleft:f,admin_controls:V}),children:(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,c.NoticeBox,{info:!0,children:["The lobby currently has ",k.length,"/12 valid players signed up."]}),(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!s&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{basis:2,className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:2,align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:0,children:e.name}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:"STATUS:"}),(0,o.createComponentVNode)(2,c.Flex.Item,{width:"30%",children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Box,{color:"Ready"===e.status?"green":"red",textAlign:"center",children:[e.status," ",e.spectating]})})})]})},e)}))})]})})}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:C,minHeight:"100px",maxHeight:"50px",buttons:(0,o.createComponentVNode)(2,c.Box,{children:[!!V&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the extra scrollbar you have that players\ndo not!"})," ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:f})]}),children:(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{align:"center",textAlign:"center",maxWidth:"500px",children:[(0,o.createVNode)(1,"b",null,[(0,o.createTextVNode)("You are the "),h.role],0),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"b",null,h.desc,0)]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:[(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.revealed_icon]),style:{transform:"scale(2) translate(0px, 10%)","vertical-align":"middle"}}),(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.hud_icon]),style:{transform:"scale(2) translate(-5px, -5px)","vertical-align":"middle"}})]})]})}),(0,o.createComponentVNode)(2,c.Flex,{children:!!p&&p.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_action",{atype:e})},children:e})},e)}))}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:"Judgement",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltipPosition:"left",tooltip:"When someone is on trial, you are in charge of their fate.\nInnocent winning means the person on trial can live to see\nanother day... and in losing they do not. You can go back\nto abstaining with the middle button if you reconsider."}),children:[(0,o.createComponentVNode)(2,c.Flex,{justify:"space-around",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"smile-beam",content:"INNOCENT!",color:"good",disabled:!b,onClick:function(){return d("vote_innocent")}}),!b&&(0,o.createComponentVNode)(2,c.Box,{children:"There is nobody on trial at the moment."}),!!b&&(0,o.createComponentVNode)(2,c.Box,{children:"It is now time to vote, vote the accused innocent or guilty!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"angry",content:"GUILTY!",color:"bad",disabled:!b,onClick:function(){return d("vote_guilty")}})]}),(0,o.createComponentVNode)(2,c.Flex,{justify:"center",children:(0,o.createComponentVNode)(2,c.Button,{icon:"meh",content:"Abstain",color:"white",disabled:!b,onClick:function(){return d("vote_abstain")}})})]}),"No Game"!==C&&(0,o.createComponentVNode)(2,c.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Section,{title:"Players",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltip:"This is the list of all the players in\nthe game, during the day phase you may vote on them and,\ndepending on your role, select players\nat certain phases to use your ability."}),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!m&&m.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:16,children:[!!e.alive&&(0,o.createComponentVNode)(2,c.Box,{children:e.name}),!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:e.name})]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:"DEAD"})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:e.votes!==undefined&&!!e.alive&&(0,o.createFragment)([(0,o.createTextVNode)("Votes : "),e.votes,(0,o.createTextVNode)(" ")],0)}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!e.actions&&e.actions.map((function(t){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_targ_action",{atype:t,target:e.ref})},children:t},t)}))})]})},e.ref)}))})})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Section,{title:"Roles and Notes",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"address-book",tooltipPosition:"bottom-left",tooltip:"The top section is the roles in the game. You can\npress the question mark to get a quick blurb\nabout the role itself."}),(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"edit",tooltipPosition:"bottom-left",tooltip:"The bottom section are your notes. on some roles this\nwill just be an empty box, but on others it records the\nactions of your abilities (so for example, your\ndetective work revealing a changeling)."})],4),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!g&&g.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:e}),(0,o.createComponentVNode)(2,c.Flex.Item,{textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"question",onClick:function(){return d("mf_lookup",{atype:e.slice(0,-3)})}})})]})},e)}))})}),!!h&&(0,o.createComponentVNode)(2,c.Flex.Item,{height:0,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{scrollable:!0,fill:!0,overflowY:"scroll",children:h!==undefined&&!!h.action_log&&h.action_log.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e},e)}))})})]})})]}),(0,o.createComponentVNode)(2,c.Flex,{mt:1,direction:"column",children:(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!V&&(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.Collapsible,{title:"ADMIN CONTROLS",color:"red",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-triangle",color:"black",tooltipPosition:"top",tooltip:"Almost all of these are all built to help me debug\nthe game (ow, debugging a 12 player game!) So they are\nrudamentary and prone to breaking at the drop of a hat.\nMake sure you know what you're doing when you press one.\nAlso because an admin did it: do not gib/delete/dust\nanyone! It will runtime the game to death!",content:"A Kind, Coder Warning",onClick:function(){return d("next_phase")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-right",tooltipPosition:"top",tooltip:"This will advance the game to the next phase\n(day talk > day voting, day voting > night/trial)\npretty fun to just spam this and freak people out,\ntry that roundend!",content:"Next Phase",onClick:function(){return d("next_phase")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"home",tooltipPosition:"top",tooltip:"Hopefully you won't use this button\noften, it's a safety net just in case\nmafia players somehow escape (nullspace\nredirects to the error room then station)\nEither way, VERY BAD IF THAT HAPPENS as\ngodmoded assistants will run free. Use\nthis to recollect them then make a bug report.",content:"Send All Players Home",onClick:function(){return d("players_home")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltipPosition:"top",tooltip:"This immediately ends the game, and attempts to start\nanother. Nothing will happen if another\ngame fails to start!",content:"New Game",onClick:function(){return d("new_game")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"skull",tooltipPosition:"top",tooltip:"Deletes the datum, clears all landmarks, makes mafia\nas it was roundstart: nonexistant. Use this if you\nreally mess things up. You did mess things up, didn't you.",content:"Nuke",onClick:function(){return d("nuke")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-brush",tooltipPosition:"top",tooltip:"This is the custom game creator, it is... simple.\nYou put in roles and until you press CANCEL or FINISH\nit will keep letting you add more roles. Assitants\non the bottom because of pathing stuff. Resets after\nthe round finishes back to 12 player random setups.",content:"Create Custom Setup",onClick:function(){return d("debug_setup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-roller",tooltipPosition:"top",tooltip:"If you messed up and accidently didn't make it how\nyou wanted, simply just press this to reset it. The game\nwill auto reset after each game as well.",content:"Reset Custom Setup",onClick:function(){return d("cancel_setup")}})]})})})})]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.phase,d=i.timeleft,u=i.admin_controls;return(0,o.createComponentVNode)(2,c.Box,{children:["[Phase = ",l," | ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:d}),"]"," ",(0,o.createComponentVNode)(2,c.Button,{icon:"clipboard-check",tooltipPosition:"bottom-left",tooltip:"Signs you up for the next game. If there\nis an ongoing one, you will be signed up\nfor the next.",content:"Sign Up",onClick:function(){return r("mf_signup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eye",tooltipPosition:"bottom-left",tooltip:"Spectates games until you turn it off.\nAutomatically enabled when you die in game,\nbecause I assumed you would want to see the\nconclusion. You won't get messages if you\nrejoin SS13.",content:"Spectate",onClick:function(){return r("mf_spectate")}}),!!u&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the scrollbar you have that players\ndo not!"})]})}},30425:function(e,t,n){"use strict";t.__esModule=!0,t.MalfunctionModulePicker=void 0;var o=n(58734),r=n(54777),a=n(33677),c=n(75789);t.MalfunctionModulePicker=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.processingTime);return(0,o.createComponentVNode)(2,a.Window,{width:620,height:525,theme:"malfunction",resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.GenericUplink,{currencyAmount:i,currencySymbol:"PT"})})})}},78761:function(e,t,n){"use strict";t.__esModule=!0,t.MechBayPowerConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.MechBayPowerConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.recharge_port,d=l&&l.mech,u=d&&d.cell;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:200,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return i("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health/d.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.charge/u.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.charge})," / "+u.maxcharge]})})]})})})})}},82822:function(e,t,n){"use strict";t.__esModule=!0,t.MechpadControl=t.MechpadConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.pad_name,u=l.connected_mechpad;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:d,width:"170px",onChange:function(e,t){return i("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return i("remove")}}),children:!u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No Pad Connected."})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return i("launch")}})})};t.MechpadControl=i;t.MechpadConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.mechpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:130,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"70px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"70px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return l("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,i)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},72249:function(e,t,n){"use strict";t.__esModule=!0,t.MedicalKiosk=void 0;var o=n(58734),r=(n(85260),n(54777)),a=n(50930),c=n(33677);t.MedicalKiosk=function(e,t){var n=(0,r.useBackend)(t),p=(n.act,n.data),C=(0,r.useSharedState)(t,"scanIndex")[0],h=p.active_status_1,N=p.active_status_2,V=p.active_status_3,b=p.active_status_4;return(0,o.createComponentVNode)(2,c.Window,{width:575,height:420,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:1,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,i,{index:1,icon:"procedures",name:"General Health Scan",description:"Reads back exact values of your general health scan."}),(0,o.createComponentVNode)(2,i,{index:2,icon:"heartbeat",name:"Symptom Based Checkup",description:"Provides information based on various non-obvious symptoms,\nlike blood levels or disease status."}),(0,o.createComponentVNode)(2,i,{index:3,icon:"radiation-alt",name:"Neurological/Radiological Scan",description:"Provides information about brain trauma and radiation."}),(0,o.createComponentVNode)(2,i,{index:4,icon:"mortar-pestle",name:"Chemical and Psychoactive Scan",description:"Provides a list of consumed chemicals, as well as potential\nside effects."})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l)})]}),!!h&&1===C&&(0,o.createComponentVNode)(2,d),!!N&&2===C&&(0,o.createComponentVNode)(2,u),!!V&&3===C&&(0,o.createComponentVNode)(2,s),!!b&&4===C&&(0,o.createComponentVNode)(2,m)]})})};var i=function(e,t){var n=e.index,c=e.name,i=e.description,l=e.icon,d=(0,r.useBackend)(t),u=d.act,s=d.data,m=(0,r.useSharedState)(t,"scanIndex"),p=m[0],C=m[1],h=s["active_status_"+n];return(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"16px",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:h?"check":"dollar-sign",color:h?"green":"grey"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:l,selected:h&&p===n,tooltip:i,tooltipPosition:"right",content:c,onClick:function(){h||u("beginScan_"+n),C(n)}})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.kiosk_cost,d=i.patient_name;return(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:["Greetings Valued Employee! Please select a desired automatic health check procedure. Diagnosis costs ",(0,o.createVNode)(1,"b",null,[l,(0,o.createTextVNode)(" credits.")],0)]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Patient:"}),d]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,tooltip:"Resets the current scanning target, cancelling current scans.",icon:"sync",color:"average",onClick:function(){return c("clearTarget")},content:"Reset Scanner"})]})},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_health,i=n.brute_health,l=n.burn_health,d=n.suffocation_health,u=n.toxin_health;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c}),"%"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brute Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Burn Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxin Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})})})]})})},u=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_status,i=n.patient_illness,l=n.illness_info,d=n.bleed_status,u=n.blood_levels,s=n.blood_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Symptom Based Checkup",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patient Status",color:"good",children:c}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease Status",children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease information",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Levels",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})}),(0,o.createComponentVNode)(2,a.Box,{mt:1,color:"label",children:d})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Information",children:s})]})})},s=function(e,t){var n=(0,r.useBackend)(t).data,c=n.clone_health,i=n.brain_damage,l=n.brain_health,d=n.rad_contamination_status,u=n.rad_contamination_value,s=n.rad_sickness_status,m=n.rad_sickness_value,p=n.trauma_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Neurological and Radiological Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cellular Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c})})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Status",color:"health-0",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Trauma Status",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Status",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Percentage",children:[m,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Status",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Percentage",children:[u,"%"]})]})})},m=function(e,t){var n=(0,r.useBackend)(t).data,c=n.chemical_list,i=void 0===c?[]:c,l=n.overdose_list,d=void 0===l?[]:l,u=n.addict_list,s=void 0===u?[]:u,m=n.hallucinating_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemical and Psychoactive Analysis",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemical Contents",children:[0===i.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No reagents detected."}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[e.volume," units of ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Status",color:"bad",children:[0===d.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient is not overdosing."}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Overdosing on ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Status",color:"bad",children:[0===s.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient has no addictions."}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Addicted to ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Psychoactive Status",children:m})]})})}},50112:function(e,t,n){"use strict";t.__esModule=!0,t.Microscope=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Microscope=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(0,r.useSharedState)(t,"tab",1),m=s[0],p=s[1],C=u.has_dish,h=u.cell_lines,N=void 0===h?[]:h,V=u.viruses,b=void 0===V?[]:V;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dish Sample",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!C,onClick:function(){return d("eject_petridish")}})})})}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:1===m,onClick:function(){return p(1)},children:["Micro-Organisms (",N.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:2===m,onClick:function(){return p(2)},children:["Viruses (",b.length,")"]})]}),1===m&&(0,o.createComponentVNode)(2,i,{cell_lines:N}),2===m&&(0,o.createComponentVNode)(2,l,{viruses:b})]})})};var i=function(e,t){var n=e.cell_lines,c=(0,r.useBackend)(t);c.act,c.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:e.growth_rate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Virus Suspectibility",children:e.suspectibility}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Reagents",children:e.requireds}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supplementary Reagents",children:e.supplementaries}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suppresive reagents",children:e.suppressives})]})},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No micro-organisms found"})},l=function(e,t){var n=e.viruses;(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No viruses found"})}},64449:function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(58734),r=n(59641),a=n(54777),c=n(50930),i=n(33677);t.MiningVendor=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=[].concat(d.product_records);return(0,o.createComponentVNode)(2,i.Window,{width:425,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"User",children:d.user&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,d.user.name||"Unknown",0),","," ",(0,o.createVNode)(1,"b",null,d.user.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[d.user.points,(0,o.createTextVNode)(" mining points")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-gray",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Equipment",children:(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createVNode)(1,"span",(0,r.classes)(["vending32x32",e.asset]),null,1,{style:{"vertical-align":"middle"}})," ",(0,o.createVNode)(1,"b",null,e.name,0)]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{style:{"min-width":"95px","text-align":"center"},disabled:!d.user||e.price>d.user.points,content:e.price+" points",onClick:function(){return l("purchase",{ref:e.ref})}})})]},e.name)}))})})]})})}},23376:function(e,t,n){"use strict";t.__esModule=!0,t.Mint=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Mint=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.inserted_materials||[];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Materials",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.processing?"times":"power-off",content:l.processing?"Stop":"Start",selected:l.processing,onClick:function(){return i(l.processing?"stoppress":"startpress")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.material,buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:l.chosen_material===e.material,onClick:function(){return i("changematerial",{material_name:e.material})}}),children:[e.amount," cm\xb3"]},e.material)}))})}),(0,o.createComponentVNode)(2,a.Section,{children:["Pressed ",l.produced_coins," coins this cycle."]})]})})}},92571:function(e,t,n){"use strict";t.__esModule=!0,t.MobInteraction=void 0;var o=n(58734),r=(n(45445),n(75671),n(5339),n(85260),n(54777)),a=n(50930),c=n(33677),i=(n(7229),n(5339));t.MobInteraction=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.SeeLewd),d=i?700:400;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:d,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[!!i&&(0,o.createComponentVNode)(2,a.Stack.Item,{shrink:1,basis:"40%",children:[(0,o.createComponentVNode)(2,l)," "]}),(0,o.createComponentVNode)(2,a.Stack.Item,{grow:1,children:[(0,o.createComponentVNode)(2,V)," "]})]})})})};var l=function(e,t){var n=(0,r.useBackend)(t);n.act,n.data.ItsJustMe;return(0,o.createComponentVNode)(2,a.Box,{height:"100%",children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{basis:"50%",children:[" ",(0,o.createComponentVNode)(2,a.Box,{height:"100%",children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,alignItems:"flex-end",justifyContent:"flex-end",children:[(0,o.createComponentVNode)(2,a.Stack.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Section,{height:"100%",children:[(0,o.createComponentVNode)(2,d)," "]})}),(0,o.createComponentVNode)(2,a.Stack.Item,{shrink:1,children:(0,o.createComponentVNode)(2,p)})]})})]}),(0,o.createComponentVNode)(2,a.Stack.Item,{basis:"50%",children:[" ",(0,o.createComponentVNode)(2,C)]})]})})},d=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.MyGenitals||[],l=c.TheirGenitals||[],d=c.MyName||"You",p=c.TheirName||"Them",C=c.MyOrientations||[],h=c.TheirOrientations||[],N=c.ItsJustMe||!1,V=!N;return 0===l.length&&l.push({BitKind:"Nothin!",BitName:"Nothing at all!",BitSize:"Small",BitColor:"#FFFFFF",BitAroused:!1,BitExtra:"Minty",BitEmoji:":)"}),0===h.length&&h.push({OriName:"Non-aligned",OriDesc:"I'm cool beans",OriEmoji:":)"}),(0,o.createComponentVNode)(2,a.Section,{height:"100%",minHeight:"100%",overflowY:"auto",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",wrap:"wrap",height:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",textAlign:"center",bold:!0,children:[d,(0,o.createVNode)(1,"hr")]}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",textAlign:"center",bold:!0,children:[V?p:"Yourself",V?(0,o.createVNode)(1,"hr"):(0,o.createComponentVNode)(2,a.Box)]}),V&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",textAlign:"center"}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",textAlign:"center",children:(0,o.createComponentVNode)(2,m)})],4),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",textAlign:"center",bold:!0,children:i.map((function(e){return(0,o.createComponentVNode)(2,u,{genital:e,JustMe:N,context:t},e.BitName)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",textAlign:"center",children:V&&l.map((function(e){return(0,o.createComponentVNode)(2,u,{genital:e,context:t},e.BitName)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",textAlign:"center",children:C.map((function(e){return(0,o.createComponentVNode)(2,s,{orientation:e,JustMe:N,context:t},e.OriName)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",textAlign:"center",children:V&&h.map((function(e){return(0,o.createComponentVNode)(2,s,{orientation:e,context:t},e.OriName)}))})]})})},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=(n.data,e.genital||{BitKind:"muffin",BitName:"Tuffy",BitSize:"Small",BitColor:"#FFFFFF",BitAroused:!1,BitExtra:"Minty",BitEmoji:":)"}),l=(i.BitKind,i.BitName),d=i.BitSize,u=i.BitColor,s=(i.BitAroused,i.BitExtra),m=i.BitEmoji,p=(e.JustMe,l+" "+d+" "+s);return(0,o.createComponentVNode)(2,a.Button,{tooltip:p,color:"transparent",onClick:function(){return c("interact",{interaction:"poke",ExtraStuff:{PokeThing:l}})},children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,textColor:u,fontSize:"3vw",textAlign:"center",children:m})})},s=function(e){var t=e.orientation||{OriName:"Non-aligned",OriDesc:"I'm cool beans",OriEmoji:":("},n=(t.OriName,t.OriDesc),r=t.OriEmoji;e.JustMe;return(0,o.createComponentVNode)(2,a.Button,{color:"transparent",tooltip:n,children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,fontSize:"3vw",color:"green",textAlign:"center",children:r})})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.TheirCKEY,d=i.WeConsent,u=d?"Consenting!":"Not Consenting!",s=d?"green":"default",m=d?"Revoke Consent?":"Request Consent?";return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:.3,content:u,color:s,tooltip:m,tooltipPosition:"right",onClick:function(){return c("ConsentAct",{who:l})}})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=l.MyLust||0,u=l.MyMaxLust||100,s=l.TheirLust||0,m=l.TheirMaxLust||100,p=l.ItsJustMe||!1,C=(l.MTTC,l.CanCum||!1),h=l.MyName||"You",N=l.TheirName||"Them",V="purple",b="pink",f=C?"Autocum: ON":"Autocum: OFF",g=C?"green":"default",v=p?"100%":"50%",k=(0,i.toFixed)(s,1),x=(0,i.toFixed)(m,1),B=(0,i.toFixed)(d,1),w=(0,i.toFixed)(u,1);return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",wrap:"wrap",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:v,textAlign:"center",children:h}),!p&&(0,o.createComponentVNode)(2,a.Flex.Item,{basis:v,textAlign:"center",children:[N," "]}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:v,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:B,color:V,minValue:0,maxValue:w,children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:b,textAlign:"right",children:[B," / ",w]})})}),!p&&(0,o.createComponentVNode)(2,a.Flex.Item,{basis:v,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ProgressBar,{fromRight:!0,value:k,color:V,minValue:0,maxValue:x,children:(0,o.createComponentVNode)(2,a.Box,{fluid:!0,color:b,textAlign:"left",children:[k," / ",x]})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"100%",wrap:"wrap",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:.3,disabled:!C,color:"pink",content:"!! C U M !!",bold:C,onClick:function(){return c("Cum")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:.3,color:g,content:f,bold:C,onClick:function(){return c("ToggleAutoCum")}})})]})})]})})},C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.AutoPlapObjs,d=i.AutoPlapAutoStart,u=d?"YES":"NO";return(0,o.createComponentVNode)(2,a.Section,{title:"Auto-Interaction",height:"100%",minHeight:"100%",overflowY:"scroll",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"pause",onClick:function(){return c("StopAllAutoPlappers")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",onClick:function(){return c("StartAllAutoPlappers")}}),(0,o.createComponentVNode)(2,a.Button,{color:d?"green":"default",icon:d?"toggle-on":"toggle-off",tooltip:"Auto-Start: "+u,onClick:function(){return c("ToggleAutoStart")}})],4),children:(0,o.createComponentVNode)(2,a.Box,{children:l.length?l.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,h,{AutoPlapObj:e})},e.key)})):"To add some, click the red dot by an interaction!"})})},h=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=e.AutoPlapObj,u=d.APApid,s=(d.APPlapKey,d.APPlapName),m=d.APPlapper,p=d.APPartner,C=d.APInterval,h=d.APPlapping,N=d.APPlapcount,V=d.APRecording,b=l.MinAutoplapInterval||15,f=l.MaxAutoplapInterval||300,g=h?"pause":"play",v=h?"":"green",k=V?"ban":"circle",x=m===p?"Yourself":p;return(0,o.createComponentVNode)(2,a.Box,{mb:"0.5em",p:"0.5em",fontSize:"0.8rem",backgroundColor:"#2f2f2f",children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:s})}),!!V&&(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,children:(0,o.createComponentVNode)(2,a.Button,{icon:k,color:"red",onClick:function(){return c("StopRecording",{APID:u})}})})]})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,unit:"sec/PLAP",width:"4.5em",minValue:b,maxValue:f,value:C,step:1,stepPixelSize:3,format:function(e){return(0,i.toFixed)(.1*e,1)},onDrag:function(e,t){return c("SetAutoPlapperInterval",{APID:u,Interval:t})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,children:[(0,o.createComponentVNode)(2,a.Button,{icon:g,color:v,onClick:function(){return c("ToggleAutoPlapper",{APID:u})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",onClick:function(){return c("DeleteAutoPlapper",{APID:u})}})]})]})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Box,{textColor:"label",children:[m," ",(0,o.createComponentVNode)(2,a.Icon,{name:"arrow-right"})," ",x,", ",N," times!"]})})]})})},N="Favorites",V=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.MyName,l=c.SeeLewd?"~":"!";return(0,o.createComponentVNode)(2,a.Box,{height:"100%",width:"100%",children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Section,{width:"100%",title:"Welcome, "+i+l,buttons:(0,o.createComponentVNode)(2,b)})}),(0,o.createComponentVNode)(2,a.Stack.Item,{grow:1,basis:1,children:(0,o.createComponentVNode)(2,a.Section,{fill:!0,width:"100%",scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:(0,o.createComponentVNode)(2,f)}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,v)})]})})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,w)})]})})},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.DP?"Dragon Pussy":"Find-A-Plap 0.1b (tm)",d=i.SearchTerm||"";return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:"fit-content",children:(0,o.createComponentVNode)(2,a.Input,{width:"15em",placeholder:l,value:d,onInput:function(e,t){return c("UpdateSearch",{SearchTerm:t})}})})},f=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.AllCategories||[]),i=c[0]||"Oh no",l=c.slice(1),d=[i,N].concat(l);return(0,o.createComponentVNode)(2,a.Box,{p:"0.5rem",mr:"0.5rem",width:"fit-content",backgroundColor:"#2f2f2f",children:d.map((function(e){return(0,o.createComponentVNode)(2,g,{CatName:e},e)}))})},g=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.CatName||"Oh no",d=i.CurrCategory||"Oh no";return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,px:"0.5em",py:"0.25em",selected:d.toLowerCase()===l.toLowerCase(),onClick:function(){return c("UpdateCategory",{category:l})},children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,textAlign:"center",children:l})},l)},v=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.DP||!1,l=c.AllInteractions||[],d=i?"You've been visited by the gunderful dragon pussy! This only happens once every 4000 years! Yell DRAGON PUSSY in OOC in 30 seconds or you'll never have dragon pussy again!":"No interactions in this category!";return(0,o.createComponentVNode)(2,a.Box,{children:[0===l.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{active:!0,children:d}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{mr:"0.5em",mb:"0.5em",children:(0,o.createComponentVNode)(2,k,{IOBJ:e})},e)}))]})},k=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.Faves||[],d=(i.AutoPlapObjs,i.WeConsent||!1),u=e.IOBJ||{},s=u.InteractionKey||"/datum/interaction/smooch",m=u.InteractionName||"Bend them over a table and runtime them.",p=u.InteractionLewd||!1,C=u.InteractionCanAuto||!1,h=u.InteractionExtreme||!1,N=u.InteractionAdditional||"Oh no!",V=p&&!d,b=l.includes(s),f=h?"red":p?"pink":"default";return(0,o.createComponentVNode)(2,a.Box,{width:"100%",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{width:"100%",disabled:V,textAlign:"left",tooltip:N,tooltipPosition:"top",backgroundColor:f,onClick:function(){return c("interact",{interaction:s})},children:m})}),!!C&&(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,children:(0,o.createComponentVNode)(2,B,{Iobj:u})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,children:(0,o.createComponentVNode)(2,x,{Iobj:u,IsFave:b})})]})})},x=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=(n.data,e.Iobj||{}),l=e.IsFave||!1,d=l?"Remove from Favorites":"Add to Favorites",u=l?"pink":"default",s=l?"heart":"heart-o";return(0,o.createComponentVNode)(2,a.Button,{icon:s,iconColor:u,tooltipPosition:"top",tooltip:d,width:"fit-content",onClick:function(){return c("Favorite",{interaction:i.InteractionKey})}})},B=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.Iobj||{},d=i.Recording||{},u=d.some((function(e){return e.APPlapKey===l.InteractionKey}));return u?(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",icon:"times",color:"red",tooltip:"Cancel Recording",tooltipPosition:"top",onClick:function(){return c("StopRecording",{APID:u.APApid})}}):d.length?(0,o.createComponentVNode)(2,a.Button,{icon:"ban",color:"red",disabled:!0,tooltip:"Something else is recording!!!"}):(0,o.createComponentVNode)(2,a.Button,{icon:"circle",iconColor:"red",textAlign:"center",tooltip:"Record AutoPLAP",tooltipPosition:"top",onClick:function(){return c("StartRecording",{interaction:l.InteractionKey})}})},w=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.SeeLewd||!1,d=i.SeeLewdMessages||!1,u=i.HearLewdSounds||!1,s=(i.CanPgUP,i.CanPgDN,i.CurrPage||1),m=i.MaxPage||1,p=m>1,C=l?"Hide Lewd Stuff":"Show Lewd Stuff",h=(0,o.createComponentVNode)(2,a.Button,{inline:!0,onClick:function(){c("ToggleSeeLewd")},children:C}),N=(0,o.createComponentVNode)(2,a.Button,{inline:!0,icon:"comment",selected:d,tooltip:d?"Hide Lewd Messages":"Show Lewd Messages",onClick:function(){c("ToggleSeeLewdMessages")}}),V=(0,o.createComponentVNode)(2,a.Button,{inline:!0,icon:"volume-up",selected:u,tooltip:u?"Mute Lewd Sounds":"Hear Lewd Sounds",onClick:function(){c("ToggleHearLewdSounds")}});return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,px:"1em",py:1,children:[h,(0,o.createComponentVNode)(2,a.Box,{inline:!0,px:"1em"})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[N,V,(0,o.createComponentVNode)(2,a.Box,{inline:!0,px:"1em"})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:p&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,px:"1em",py:1,children:["Page ",s," / ",m]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:[!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,inline:!0,px:"0.5em",py:"0.25em",disabled:1===s,onClick:function(){c("PgDOWN")},children:(0,o.createComponentVNode)(2,a.Icon,{name:"chevron-left"})}),(0,o.createComponentVNode)(2,a.Button,{inline:!0,px:"0.5em",py:"0.25em",disabled:s>=m,onClick:function(){c("PgUP")},children:(0,o.createComponentVNode)(2,a.Icon,{name:"chevron-right"})})],4),(0,o.createComponentVNode)(2,a.Box,{inline:!0,px:"1em"})]})]})}},43196:function(e,t,n){"use strict";t.__esModule=!0,t.Mule=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(32599);t.Mule=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.cell,m=d.cellPercent,p=d.load,C=d.mode,h=d.modeStatus,N=d.haspai,V=d.autoReturn,b=d.autoPickup,f=d.reportDelivery,g=d.destination,v=d.home,k=d.id,x=d.destinations,B=void 0===x?[]:x,w=d.locked&&!d.siliconUser;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:425,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"110px",buttons:!w&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:s?m/100:0,color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Flex,{mt:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",color:h,children:C})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Load",color:p?"good":"average",children:p||"None"})})})]})]}),!w&&(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Unload",onClick:function(){return l("unload")}}),!!N&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject PAI",onClick:function(){return l("ejectpai")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Input,{value:k,onChange:function(e,t){return l("setid",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:g||"None",options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"stop",content:"Stop",onClick:function(){return l("stop")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",content:"Go",onClick:function(){return l("go")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:v,options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",content:"Go Home",onClick:function(){return l("home")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:V,content:"Auto-Return",onClick:function(){return l("autored")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:b,content:"Auto-Pickup",onClick:function(){return l("autopick")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:f,content:"Report Delivery",onClick:function(){return l("report")}})]})]})})]})})}},17855:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteChamberControlContent=t.NaniteChamberControl=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NaniteChamberControl=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:380,height:570,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.status_msg,d=i.locked,u=i.occupant_name,s=i.has_nanites,m=i.nanite_volume,p=i.regen_rate,C=i.safety_threshold,h=i.cloud_id,N=i.scan_level;if(l)return(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:l});var V=i.mob_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Chamber: "+u,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"lock":"lock-open",content:d?"Locked":"Unlocked",color:d?"bad":"default",onClick:function(){return c("toggle_lock")}}),children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Destroy Nanites",color:"bad",onClick:function(){return c("remove_nanites")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanite Volume",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety Threshold",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:0,maxValue:500,width:"39px",onChange:function(e,t){return c("set_safety",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:h,minValue:0,maxValue:100,step:1,stepPixelSize:3,width:"39px",onChange:function(e,t){return c("set_cloud",{value:t})}})})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",level:2,children:V.map((function(e){var t=e.extra_settings||[],n=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.desc}),N>=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),N>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),N>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),N>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return c("nanite_injection")}})],4)})};t.NaniteChamberControlContent=i},49790:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteInfoBox=t.NaniteDiskBox=t.NaniteCloudControl=t.NaniteCloudBackupList=t.NaniteCloudBackupDetails=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.has_disk,i=n.has_program,d=n.disk;return c?i?(0,o.createComponentVNode)(2,l,{program:d}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var l=function(e,t){var n=e.program,r=n.name,c=n.desc,i=n.activated,l=n.use_rate,d=n.can_trigger,u=n.trigger_cost,s=n.trigger_cooldown,m=n.activation_code,p=n.deactivation_code,C=n.kill_code,h=n.trigger_code,N=n.timer_restart,V=n.timer_shutdown,b=n.timer_trigger,f=n.timer_trigger_delay,g=n.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:r,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:c}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:l}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:s})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:C}),!!d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:h})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[N," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[V," s"]}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[b," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[f," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:g.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return(n.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return c("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=d;var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.current_view,u=i.disk,s=i.has_program,m=i.cloud_backup,p=u&&u.can_rule||!1;if(!m)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var C=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+d,level:2,buttons:!!s&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return c("upload_program")}}),children:C.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,l,{program:e}),(!!p||!!e.has_rules)&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return c("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_rule",{program_id:e.id,rule_id:t.id})}})," "+t.display]},t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=u;t.NaniteCloudControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,s=n.data,m=s.has_disk,p=s.current_view,C=s.new_backup_id;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!m,onClick:function(){return l("eject")}}),children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return l("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return l("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return l("create_backup")}})],0),children:s.current_view?(0,o.createComponentVNode)(2,u):(0,o.createComponentVNode)(2,d)})]})})}},96273:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(58734),r=n(45445),a=n(54777),c=n(50930),i=n(33677);t.NaniteProgramHub=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.detail_view,s=d.disk,m=d.has_disk,p=d.has_program,C=d.programs,h=void 0===C?{}:C,N=(0,a.useSharedState)(t,"category"),V=N[0],b=N[1],f=h&&h[V]||[];return(0,o.createComponentVNode)(2,i.Window,{width:500,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return l("eject")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return l("clear")}})],4),children:m?p?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Program Name",children:s.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:s.desc})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,c.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:u?"info":"list",content:u?"Detailed":"Compact",onClick:function(){return l("toggle_details")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Sync Research",onClick:function(){return l("refresh")}})],4),children:null!==h?(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{minWidth:"110px",children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var n=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:t===V,onClick:function(){return b(t)},children:n},t)}))(h)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:u?f.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,c.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}})},e.id)}))})})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No nanite programs are currently researched."})})]})})}},97641:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammerContent=t.NaniteProgrammer=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteExtraBoolean=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=l;var d=function(e,t){var n=e.extra_setting,r=n.name,c=n.type,i={number:(0,o.createComponentVNode)(2,u,{extra_setting:n}),text:(0,o.createComponentVNode)(2,s,{extra_setting:n}),type:(0,o.createComponentVNode)(2,m,{extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:i[c]})};t.NaniteExtraEntry=d;var u=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.min,u=n.max,s=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:l,width:"64px",minValue:d,maxValue:u,unit:s,onChange:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraNumber=u;var s=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:l,width:"200px",onInput:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraText=s;var m=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:l,width:"150px",options:d,onSelected:function(e){return c("set_extra_setting",{target_setting:i,value:e})}})};t.NaniteExtraType=m;var p=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.true_text,u=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:l?d:u,checked:l,onClick:function(){return c("set_extra_setting",{target_setting:i})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})};var C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.has_disk,m=u.has_program,p=u.name,C=u.desc,h=u.use_rate,N=u.can_trigger,V=u.trigger_cost,b=u.trigger_cooldown,f=u.activated,g=u.has_extra_settings,v=u.extra_settings,k=void 0===v?{}:v;return s?m?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:C}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:h}),!!N&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:V}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:b})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:f?"power-off":"times",content:f?"Active":"Inactive",selected:f,color:"bad",bold:!0,onClick:function(){return c("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,l)})]}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:k.map((function(e){return(0,o.createComponentVNode)(2,d,{extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})};t.NaniteProgrammerContent=C},68880:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemoteContent=t.NaniteRemote=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NaniteRemote=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.code,d=i.locked,u=i.mode,s=i.program_name,m=i.relay_code,p=i.comms,C=i.message,h=i.saved_settings,N=void 0===h?[]:h;return d?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return c("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:s,maxLength:14,width:"130px",onChange:function(e,t){return c("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return c("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:C,width:"270px",onChange:function(e,t){return c("set_message",{value:t})}})}),"Relay"===u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:u===e,onClick:function(){return c("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:N.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return c("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return c("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)};t.NaniteRemoteContent=i},95074:function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NotificationPreferences=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=(n.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{title:"Notification Preferences",width:270,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return i("toggle_ignore",{key:e.key})}},e.key)}))})})})}},58455:function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtnetRelay=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.enabled,u=l.dos_capacity,s=l.dos_overload,m=l.dos_crashed;return(0,o.createComponentVNode)(2,c.Window,{title:"NtNet Quantum Relay",width:400,height:300,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:d,content:d?"ENABLED":"DISABLED",onClick:function(){return i("toggle")}}),children:m?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return i("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:u,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," GQ"," / ",u," GQ"]})})})})}},90994:function(e,t,n){"use strict";t.__esModule=!0,t.NtosAiRestorer=void 0;var o=n(58734),r=n(33677),a=n(49855);t.NtosAiRestorer=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:370,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.AiRestorerContent)})})}},74545:function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(58734),r=n(96525),a=n(54777),c=n(50930),i=n(33677);t.NtosArcade=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:450,height:350,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,c.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[d.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[d.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Section,{backgroundColor:1===d.PauseState?"#1b3622":"#471915",children:d.Status})]}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:[(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.Section,{inline:!0,width:"156px",textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:(0,r.resolveAsset)(d.BossID)})})]})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,c.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,c.Box,{color:d.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",d.TicketCount]})]})})})}},34855:function(e,t,n){"use strict";t.__esModule=!0,t.NtosAtmos=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(5339),i=n(54777),l=n(50930),d=n(35891),u=n(33677);t.NtosAtmos=function(e,t){var n=(0,i.useBackend)(t),s=(n.act,n.data),m=s.AirTemp,p=s.AirPressure,C=(0,a.flow)([(0,r.filter)((function(e){return e.percentage>=.01})),(0,r.sortBy)((function(e){return-e.percentage}))])(s.AirData||[]),h=Math.max.apply(Math,[1].concat(C.map((function(e){return e.percentage}))));return(0,o.createComponentVNode)(2,u.NtosWindow,{width:300,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:[m,"\xb0C"]}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:[p," kPa"]})]})}),(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.percentage,minValue:0,maxValue:h,children:(0,c.toFixed)(e.percentage,2)+"%"})},e.name)}))})})]})})}},85650:function(e,t,n){"use strict";t.__esModule=!0,t.NtosBountyConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(59576),i=n(33677);t.NtosBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},20912:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCardContent=t.NtosCard=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(77571);t.NtosCard=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=(0,r.useLocalState)(t,"tab",1),u=d[0],s=d[1],m=l.authenticated,p=l.regions,C=void 0===p?[]:p,h=l.access_on_card,N=void 0===h?[]:h,V=l.jobs,b=void 0===V?{}:V,f=l.id_rank,g=l.id_owner,v=l.has_id,k=l.have_printer,x=l.have_id_slot,B=l.id_name,w=(0,r.useLocalState)(t,"department",Object.keys(b)[0]),_=w[0],y=w[1];if(!x)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This program requires an ID slot in order to function"});var L=b[_]||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:v&&m?(0,o.createComponentVNode)(2,a.Input,{value:g,width:"250px",onInput:function(e,t){return c("PRG_edit",{name:t})}}):g||"No Card Inserted",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!k||!v,onClick:function(){return c("PRG_print")}}),(0,o.createComponentVNode)(2,a.Button,{icon:m?"sign-out-alt":"sign-in-alt",content:m?"Log Out":"Log In",color:m?"bad":"good",onClick:function(){c(m?"PRG_logout":"PRG_authenticate")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:B,onClick:function(){return c("PRG_eject")}})}),!!v&&!!m&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:"Access"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:"Jobs"})]}),1===u&&(0,o.createComponentVNode)(2,i.AccessList,{accesses:C,selectedList:N,accessMod:function(e){return c("PRG_access",{access_target:e})},grantAll:function(){return c("PRG_grantall")},denyAll:function(){return c("PRG_denyall")},grantDep:function(e){return c("PRG_grantregion",{region:e})},denyDep:function(e){return c("PRG_denyregion",{region:e})}}),2===u&&(0,o.createComponentVNode)(2,a.Section,{title:f,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",content:"Terminate",color:"bad",onClick:function(){return c("PRG_terminate")}}),children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Custom...",onCommit:function(e,t){return c("PRG_assign",{assign_target:"Custom",custom_name:t})}}),(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:Object.keys(b).map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e===_,onClick:function(){return y(e)},children:e},e)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:L.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.display_name,onClick:function(){return c("PRG_assign",{assign_target:e.job})}},e.job)}))})]})]})]})],0)};t.NtosCardContent=l},42938:function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosConfiguration=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.PC_device_theme,u=l.power_usage,s=l.battery_exists,m=l.battery,p=void 0===m?{}:m,C=l.disk_size,h=l.disk_used,N=l.hardware,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:d,width:420,height:630,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",u,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!s&&"average",children:s?(0,o.createComponentVNode)(2,a.ProgressBar,{value:p.charge,minValue:0,maxValue:p.max,ranges:{good:[p.max/2,Infinity],average:[p.max/4,p.max/2],bad:[-Infinity,p.max/4]},children:[p.charge," / ",p.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h,minValue:0,maxValue:C,color:"good",children:[h," GQ / ",C," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return i("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})]})})}},75799:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewManifest=void 0;var o=n(58734),r=n(45445),a=n(54777),c=n(50930),i=n(33677);t.NtosCrewManifest=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.have_printer,s=d.manifest,m=void 0===s?{}:s;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:400,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Crew Manifest",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print",disabled:!u,onClick:function(){return l("PRG_print")}}),children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{level:2,title:t,children:(0,o.createComponentVNode)(2,c.Table,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["(",e.rank,")"]})]},e.name)}))})},t)}))(m)})})})}},24712:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorContent=t.NtosCyborgRemoteMonitor=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosCyborgRemoteMonitor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:600,height:800,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.card,d=i.cyborgs,u=void 0===d?[]:d;return u.length?(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Certain features require an ID card login."}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Send Message",color:"blue",disabled:!l,onClick:function(){return c("messagebot",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":e.shell_discon?"Nominal/Disconnected":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:e.upgrades})]})},e.ref)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected."})};t.NtosCyborgRemoteMonitorContent=i},73845:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorSyndicate=void 0;var o=n(58734),r=n(33677),a=n(24712);t.NtosCyborgRemoteMonitorSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:600,height:800,theme:"syndicate",children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.NtosCyborgRemoteMonitorContent)})})}},40235:function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosFileManager=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.usbconnected,m=d.files,p=void 0===m?[]:m,C=d.usbfiles,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,theme:u,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,i,{files:p,usbconnected:s,onUpload:function(e){return l("PRG_copytousb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})}),s&&(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,i,{usbmode:!0,files:h,usbconnected:s,onUpload:function(e){return l("PRG_copyfromusb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})})]})})};var i=function(e){var t=e.files,n=void 0===t?[]:t,r=e.usbconnected,c=e.usbmode,i=e.onUpload,l=e.onDelete,d=e.onRename;return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"File"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.undeletable?e.name:(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return d(e.name,n)}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!r&&(c?(0,o.createComponentVNode)(2,a.Button,{icon:"download",tooltip:"Download",onClick:function(){return i(e.name)}}):(0,o.createComponentVNode)(2,a.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return i(e.name)}}))],0)})]},e.name)}))]})}},62861:function(e,t,n){"use strict";t.__esModule=!0,t.NtosJobManagerContent=t.NtosJobManager=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosJobManager=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.authed,d=i.cooldown,u=i.slots,s=void 0===u?[]:u,m=i.prioritized,p=void 0===m?[]:m;return l?(0,o.createComponentVNode)(2,a.Section,{children:[d>0&&(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",children:["On Cooldown: ",d,"s"]})}),(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Prioritized"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Slots"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:e.title,disabled:e.total<=0,checked:e.total>0&&p.includes(e.title),onClick:function(){return c("PRG_priority",{target:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[e.current," / ",e.total]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Open",disabled:!e.status_open,onClick:function(){return c("PRG_open_job",{target:e.title})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Close",disabled:!e.status_close,onClick:function(){return c("PRG_close_job",{target:e.title})}})]})]},e.title)}))]})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Current ID does not have access permissions to change job slots."})};t.NtosJobManagerContent=i},68362:function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug",job_manage:"address-book",crewmani:"clipboard-list",robocontrol:"robot",atmosscan:"thermometer-half",shipping:"tags"};t.NtosMain=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.device_theme,s=d.programs,m=void 0===s?[]:s,p=d.has_light,C=d.light_on,h=d.comp_light_color,N=d.removable_media,V=void 0===N?[]:N,b=d.login,f=void 0===b?[]:b;return(0,o.createComponentVNode)(2,c.NtosWindow,{title:"syndicate"===u?"Syndix Main Menu":"NtOS Main Menu",theme:u,width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!p&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:C,onClick:function(){return l("PC_toggle_light")},children:["Flashlight: ",C?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return l("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:h})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"User Login",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject ID",disabled:!f.IDName,onClick:function(){return l("PC_Eject_Disk",{name:"ID"})}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:["ID Name: ",f.IDName]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:["Assignment: ",f.IDJob]})]})}),!!V.length&&(0,o.createComponentVNode)(2,a.Section,{title:"Media Eject",children:(0,o.createComponentVNode)(2,a.Table,{children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:"eject",content:e,onClick:function(){return l("PC_Eject_Disk",{name:e})}})})},e)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return l("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:"18px",children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return l("PC_killprogram",{name:e.name})}})})]},e.name)}))})})]})})}},7692:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosNetChat=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_admin,u=l.adminmode,s=l.authed,m=l.username,p=l.active_channel,C=l.is_operator,h=l.all_channels,N=void 0===h?[]:h,V=l.clients,b=void 0===V?[]:V,f=l.messages,g=void 0===f?[]:f,v=null!==p,k=s||u;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:900,height:675,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return i("PRG_newchannel",{new_channel_name:t})}}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===p,color:"transparent",onClick:function(){return i("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:m+"...",currentValue:m,onCommit:function(e,t){return i("PRG_changename",{new_name:t})}}),!!d&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(u?"ON":"OFF"),color:u?"bad":"good",onClick:function(){return i("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:v&&(k?g.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return i("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:b.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),v&&k&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return i("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return i("PRG_leavechannel")}})],4),!!C&&s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return i("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return i("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return i("PRG_setpassword",{new_password:t})}})],4)]})]})})})})})}},46707:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDosContent=t.NtosNetDos=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosNetDos=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.relays,d=void 0===l?[]:l,u=i.focus,s=i.target,m=i.speed,p=i.overload,C=i.capacity,h=i.error;if(h)return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:h}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return c("PRG_reset")}})],4);var N=function(e){for(var t="",n=p/C;t.lengthn?t+="0":t+="1";return t};return s?(0,o.createComponentVNode)(2,a.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:["CURRENT SPEED: ",m," GQ/s"]}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)})]}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.id,selected:u===e.id,onClick:function(){return c("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!u,mt:1,onClick:function(){return c("PRG_execute")}})]})};t.NtosNetDosContent=i},77825:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosNetDownloader=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.disk_size,m=d.disk_used,p=d.downloadable_programs,C=void 0===p?[]:p,h=d.error,N=d.hacked_programs,V=void 0===N?[]:N,b=d.hackedavailable;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:u,width:480,height:735,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!h&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:h}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return l("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:s,children:m+" GQ / "+s+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:C.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))}),!!b&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that US Government does not recommend download of software from non-official servers."}),V.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))]})]})})};var i=function(e,t){var n=e.program,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.disk_size,u=l.disk_used,s=l.downloadcompletion,m=l.downloading,p=l.downloadname,C=l.downloadsize,h=d-u;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:n.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[n.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:n.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:C,value:s})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:m||n.size>h,onClick:function(){return i("PRG_downloadfile",{filename:n.filename})}})})]}),"Compatible"!==n.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),n.size>h&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:n.fileinfo})]})}},89818:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(58734),r=n(50930),a=n(54777),c=n(33677);t.NtosNetMonitor=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.ntnetrelays,u=l.ntnetstatus,s=l.config_softwaredownload,m=l.config_peertopeer,p=l.config_communication,C=l.config_systemcontrol,h=l.idsalarm,N=l.idsstatus,V=l.ntnetmaxlogs,b=l.maxlogs,f=l.minlogs,g=l.ntnetlogs,v=void 0===g?[]:g;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,r.NoticeBox,{children:"WARNING: Disabling wireless transmitters when using a wireless device may prevent you from reenabling them!"}),(0,o.createComponentVNode)(2,r.Section,{title:"Wireless Connectivity",buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return i("toggleWireless")}}),children:d?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:d})}):"No Relays Connected"}),(0,o.createComponentVNode)(2,r.Section,{title:"Firewall Configuration",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Software Downloads",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return i("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:m?"power-off":"times",content:m?"ENABLED":"DISABLED",selected:m,onClick:function(){return i("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return i("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:C?"power-off":"times",content:C?"ENABLED":"DISABLED",selected:C,onClick:function(){return i("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"NETWORK INCURSION DETECTED"}),(0,o.createComponentVNode)(2,r.Box,{italics:!0,children:"Abnormal activity has been detected in the network. Check system logs for more information"})],4),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"IDS Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:N?"power-off":"times",content:N?"ENABLED":"DISABLED",selected:N,onClick:function(){return i("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return i("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:V,minValue:f,maxValue:b,width:"39px",onChange:function(e,t){return i("updatemaxlogs",{new_number:t})}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"System Log",level:2,buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",content:"Clear Logs",onClick:function(){return i("purgelogs")}}),children:v.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})]})})}},6190:function(e,t,n){"use strict";t.__esModule=!0,t.NtosPowerMonitor=void 0;var o=n(58734),r=n(33677),a=n(81574);t.NtosPowerMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.PowerMonitorContent)})})}},69072:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarContent=t.NtosRadar=void 0;var o=n(58734),r=n(59641),a=n(96525),c=n(54777),i=n(50930),l=n(33677);t.NtosRadar=function(e,t){return(0,o.createComponentVNode)(2,l.NtosWindow,{width:800,height:600,theme:"ntos",children:(0,o.createComponentVNode)(2,d,{sig_err:"Signal Lost"})})};var d=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.selected,m=u.object,p=void 0===m?[]:m,C=u.target,h=void 0===C?[]:C,N=u.scanning,V=e.sig_err;return(0,o.createComponentVNode)(2,i.Flex,{direction:"row",hight:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{position:"relative",width:20.5,hight:"100%",children:(0,o.createComponentVNode)(2,l.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"redo-alt",content:N?"Scanning...":"Scan",color:"blue",disabled:N,onClick:function(){return d("scan")}}),!p.length&&!N&&(0,o.createVNode)(1,"div",null,"No trackable signals found",16),!N&&p.map((function(e){return(0,o.createVNode)(1,"div",(0,r.classes)(["Button","Button--fluid","Button--color--transparent","Button--ellipsis",e.ref===s&&"Button--selected"]),e.name,0,{title:e.name,onClick:function(){d("selecttarget",{ref:e.ref})}},e.dev)}))]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{style:{"background-image":'url("'+(0,a.resolveAsset)("ntosradarbackground.png")+'")',"background-position":"center","background-repeat":"no-repeat",top:"20px"},position:"relative",m:1.5,width:45,height:45,children:0===Object.keys(h).length?!!s&&(0,o.createComponentVNode)(2,i.NoticeBox,{position:"absolute",top:20.6,left:1.35,width:42,fontSize:"30px",textAlign:"center",children:V}):!!h.userot&&(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)(h.arrowstyle),position:"absolute",top:"20px",left:"243px",style:{transform:"rotate("+h.rot+"deg)"}})||(0,o.createComponentVNode)(2,i.Icon,{name:h.pointer,position:"absolute",size:2,color:h.color,top:10*h.locy+19+"px",left:10*h.locx+16+"px"})})]})};t.NtosRadarContent=d},81126:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarSyndicate=void 0;var o=n(58734),r=n(33677),a=n(69072);t.NtosRadarSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:800,height:600,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosRadarContent,{sig_err:"Out of Range"})})}},16314:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRequestKiosk=void 0;var o=n(58734),r=n(56984),a=n(33677);t.NtosRequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,a.NtosWindow,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,r.RequestKioskContent)})})}},43340:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(58734),r=n(50930),a=n(54777),c=n(33677);t.NtosRevelation=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return i("PRG_obfuscate",{new_name:t})},mb:1}),(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Payload Status",buttons:(0,o.createComponentVNode)(2,r.Button,{content:l.armed?"ARMED":"DISARMED",color:l.armed?"bad":"average",onClick:function(){return i("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!l.armed})]})})})}},73351:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRoboControl=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosRoboControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.bots,s=d.id_owner,m=d.has_id;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:550,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Robot Control Console",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Id Card",children:[s,!!m&&(0,o.createComponentVNode)(2,a.Button,{ml:2,icon:"eject",content:"Eject",onClick:function(){return l("ejectcard")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bots in range",children:d.botcount})]})}),null==u?void 0:u.map((function(e){return(0,o.createComponentVNode)(2,i,{robot:e},e.bot_ref)}))]})})};var i=function(e,t){var n=e.robot,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.mules||[],u=!!n.mule_check&&function(e,t){return null==e?void 0:e.find((function(e){return e.mule_ref===t}))}(d,n.bot_ref),s=1===n.mule_check?"rgba(110, 75, 14, 1)":"rgba(74, 59, 140, 1)";return(0,o.createComponentVNode)(2,a.Section,{title:n.name,style:{border:"4px solid "+s},buttons:u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"play",tooltip:"Go to Destination.",onClick:function(){return i("go",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pause",tooltip:"Stop Moving.",onClick:function(){return i("stop",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",tooltip:"Travel Home.",tooltipPosition:"bottom-left",onClick:function(){return i("home",{robot:u.mule_ref})}})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Model",children:n.model}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.locat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n.mode}),u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Loaded Cargo",children:l.load||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:u.home}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:u.dest||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.power,minValue:0,maxValue:100,ranges:{good:[60,Infinity],average:[20,60],bad:[-Infinity,20]}})})],4)]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"150px",children:[u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Destination",onClick:function(){return i("destination",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set ID",onClick:function(){return i("setid",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Home",onClick:function(){return i("sethome",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Unload Cargo",onClick:function(){return i("unload",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Return",checked:u.autoReturn,onClick:function(){return i("autoret",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Pickup",checked:u.autoPickup,onClick:function(){return i("autopick",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Delivery Report",checked:u.reportDelivery,onClick:function(){return i("report",{robot:u.mule_ref})}})],4),!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Stop Patrol",onClick:function(){return i("patroloff",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Start Patrol",onClick:function(){return i("patrolon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Summon",onClick:function(){return i("summon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject PAi",onClick:function(){return i("ejectpai",{robot:n.bot_ref})}})],4)]})]})})}},57652:function(e,t,n){"use strict";t.__esModule=!0,t.NtosShipping=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.NtosShipping=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"NTOS Shipping Hub.",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Id",onClick:function(){return i("ejectid")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current User",children:l.current_user||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inserted Card",children:l.card_owner||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Paper",children:l.has_printer?l.paperamt:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Profit on Sale",children:[l.barcode_split,"%"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Shipping Options",children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"id-card",tooltip:"The currently ID card will become the current user.",tooltipPosition:"right",disabled:!l.has_id_slot,onClick:function(){return i("selectid")},content:"Set Current ID"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",tooltip:"Print a barcode to use on a wrapped package.",tooltipPosition:"right",disabled:!l.has_printer||!l.current_user,onClick:function(){return i("print")},content:"Print Barcode"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"tags",tooltip:"Set how much profit you'd like on your package.",tooltipPosition:"right",onClick:function(){return i("setsplit")},content:"Set Profit Margin"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Reset ID",onClick:function(){return i("resetid")}})})]})]})})}},52986:function(e,t,n){"use strict";t.__esModule=!0,t.NtosStationAlertConsole=void 0;var o=n(58734),r=n(33677),a=n(39101);t.NtosStationAlertConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:315,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.StationAlertConsoleContent)})})}},66524:function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitorContent=t.NtosSupermatterMonitor=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(5339),i=n(54777),l=n(50930),d=n(35891),u=n(33677),s=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e,t){return(0,o.createComponentVNode)(2,u.NtosWindow,{width:600,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,m)})})};var m=function(e,t){var n=(0,i.useBackend)(t),u=n.act,m=n.data,C=m.active,h=m.SM_integrity,N=m.SM_power,V=m.SM_ambienttemp,b=m.SM_ambientpressure;if(!C)return(0,o.createComponentVNode)(2,p);var f=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),g=Math.max.apply(Math,[1].concat(f.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:N,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,c.toFixed)(N)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(V),minValue:0,maxValue:s(1e4),ranges:{teal:[-Infinity,s(80)],good:[s(80),s(373)],average:[s(373),s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(V)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(b),minValue:0,maxValue:s(5e4),ranges:{good:[s(1),s(300)],average:[-Infinity,s(1e3)],bad:[s(1e3),+Infinity]},children:(0,c.toFixed)(b)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return u("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:g,children:(0,c.toFixed)(e.amount,2)+"%"})},e.name)}))})})})]})};t.NtosSupermatterMonitorContent=m;var p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.supermatters,c=void 0===a?[]:a;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return r("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return r("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},81009:function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(58734),r=n(59641),a=n(54777),c=n(50930),i=n(33677),l=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Box,{width:"185px",children:(0,o.createComponentVNode)(2,c.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,mb:"6px",content:e,textAlign:"center",fontSize:"40px",lineHeight:1.25,width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return n("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=(d.anchored,d.disk_present,d.status1),s=d.status2;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:442,theme:"retro",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Box,{m:"6px",children:[(0,o.createComponentVNode)(2,c.Box,{mb:"6px",className:"NuclearBomb__displayBox",children:u}),(0,o.createComponentVNode)(2,c.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Box,{className:"NuclearBomb__displayBox",children:s})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",fontSize:"24px",lineHeight:1,textAlign:"center",width:"43px",ml:"6px",mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,c.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,l)}),(0,o.createComponentVNode)(2,c.Flex.Item,{ml:"6px",width:"129px",children:(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:1.1,mb:"6px",className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:1.1,className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,c.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,c.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})})})}},85927:function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}];t.OperatingComputer=function(e,t){var n=(0,r.useSharedState)(t,"tab",1),i=n[0],u=n[1];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===i,onClick:function(){return u(1)},children:"Patient State"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return u(2)},children:"Surgery Procedures"})]}),1===i&&(0,o.createComponentVNode)(2,l),2===i&&(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=c.table,d=c.procedures,u=void 0===d?[]:d,s=c.patient,m=void 0===s?{}:s;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",children:m&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]})||"No Patient Detected"}),0===u.length&&(0,o.createComponentVNode)(2,a.Section,{children:"No Active Procedures"}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!c.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.surgeries,l=void 0===i?[]:i;return(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return c("sync")}}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})}},80763:function(e,t,n){"use strict";t.__esModule=!0,t.Orbit=void 0;var o=n(58734),r=n(85260),a=n(96525),c=n(54777),i=n(50930),l=n(33677);function d(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nt},h=function(e,t){var n=e.name,o=t.name,r=n.match(m),a=o.match(m);return r&&a&&n.replace(m,"")===o.replace(m,"")?parseInt(r[1],10)-parseInt(a[1],10):C(n,o)},N=function(e,t){var n=(0,c.useBackend)(t).act,r=e.searchText,a=e.source,l=e.title,d=a.filter(p(r));return d.sort(h),a.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:l+" - ("+a.length+")",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name.replace(s,""),onClick:function(){return n("orbit",{ref:e.ref})}},e.name)}))})},V=function(e,t){var n=(0,c.useBackend)(t).act,r=e.color,l=e.thing;return(0,o.createComponentVNode)(2,i.Button,{color:r,onClick:function(){return n("orbit",{ref:l.ref})},children:[l.name,l.orbiters&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,ml:1,children:["(",l.orbiters," ",(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)("ghost.png"),opacity:.7}),")"]})]})};t.Orbit=function(e,t){for(var n,r=(0,c.useBackend)(t),a=r.act,u=r.data,s=u.alive,m=u.antagonists,b=u.dead,f=u.ghosts,g=u.misc,v=u.npcs,k=(0,c.useLocalState)(t,"searchText",""),x=k[0],B=k[1],w={},_=d(m);!(n=_()).done;){var y=n.value;w[y.antag]===undefined&&(w[y.antag]=[]),w[y.antag].push(y)}var L=Object.entries(w);L.sort((function(e,t){return C(e[0],t[0])}));return(0,o.createComponentVNode)(2,l.Window,{title:"Orbit",width:350,height:700,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Flex,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Icon,{name:"search",mr:1})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search...",autoFocus:!0,fluid:!0,value:x,onInput:function(e,t){return B(t)},onEnter:function(e,t){return function(e){for(var t=0,n=[L.map((function(e){return e[0],e[1]})),s,f,b,v,g];t0&&(0,o.createComponentVNode)(2,i.Section,{title:"Ghost-Visible Antagonists",children:L.map((function(e){var t=e[0],n=e[1];return(0,o.createComponentVNode)(2,i.Section,{title:t,level:2,children:n.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"bad",thing:e},e.name)}))},t)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Alive",children:s.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"good",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,N,{title:"Ghosts",source:f,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Dead",source:b,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"NPCs",source:v,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Misc",source:g,searchText:x})]})})}},49725:function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(58734),r=n(85260),a=n(50930),c=n(54777),i=n(33677);t.OreBox=function(e,t){var n=(0,c.useBackend)(t),l=n.act,d=n.data.materials;return(0,o.createComponentVNode)(2,i.Window,{width:335,height:415,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Empty",onClick:function(){return l("removeall")}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})]})})}},11975:function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(58734),r=n(85260),a=n(54777),c=n(50930),i=n(33677);t.OreRedemptionMachine=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=d.unclaimedPoints,s=d.materials,m=d.alloys,p=d.diskDesigns,C=d.hasDisk;return(0,o.createComponentVNode)(2,i.Window,{title:"Ore Redemption Machine",width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),u,(0,o.createComponentVNode)(2,c.Button,{ml:2,content:"Claim",disabled:0===u,onClick:function(){return r("Claim")}})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:C&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{mb:1,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return r("diskEject")}})}),(0,o.createComponentVNode)(2,c.Table,{children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return r("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,c.Button,{icon:"save",content:"Insert design disk",onClick:function(){return r("diskInsert")}})}),(0,o.createComponentVNode)(2,c.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,c.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,c.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Smelt",{id:e.id,sheets:t})}},e.id)}))})})]})})};var l=function(e,t){var n=e.material,i=e.onRelease,l=(0,a.useLocalState)(t,"amount"+n.name,1),d=l[0],u=l[1],s=Math.floor(n.amount);return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(n.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:n.value&&n.value+" cr"})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:[s," sheets"]})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:d,onChange:function(e,t){return u(t)}}),(0,o.createComponentVNode)(2,c.Button,{disabled:s<1,content:"Release",onClick:function(){return i(d)}})]})]})}},42066:function(e,t,n){"use strict";t.__esModule=!0,t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=t.PandemicAntibodyDisplay=t.Pandemic=void 0;var o=n(58734),r=n(45445),a=n(54777),c=n(50930),i=n(33677),l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.has_beaker,d=i.beaker_empty,u=i.has_blood,s=i.blood,m=!l||d;return(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:m,onClick:function(){return r("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Empty",disabled:m,onClick:function(){return r("empty_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return r("eject_beaker")}})],4),children:l?d?(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Beaker is empty"}):u?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood DNA",children:s&&s.dna||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood Type",children:s&&s.type||"Unknown"})]}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=l;var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.is_ready;return(i.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,c.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,c.Input,{value:e.name,onChange:function(t,n){return r("rename_disease",{index:e.index,name:n})}}):e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"flask",content:"Create culture bottle",disabled:!l,onClick:function(){return r("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,c.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,u,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=d;var u=function(e,t){var n=e.symptom,a=n.name,i=n.desc,l=n.stealth,d=n.resistance,u=n.stage_speed,s=n.transmission,m=n.level,p=n.neutered,C=(0,r.map)((function(e,t){return{desc:e,label:t}}))(n.threshold_desc||{});return(0,o.createComponentVNode)(2,c.Section,{title:a,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:i}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Level",children:m}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:d}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:l}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage Speed",children:u}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmission",children:s})]})})]}),C.length>0&&(0,o.createComponentVNode)(2,c.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.resistances||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Antibodies",children:l.length>0?(0,o.createComponentVNode)(2,c.LabeledList,{children:l.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!i.is_ready,onClick:function(){return r("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=s;t.Pandemic=function(e,t){var n=(0,a.useBackend)(t).data;return(0,o.createComponentVNode)(2,i.Window,{width:520,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l),!!n.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s)],4)]})})}},94738:function(e,t,n){"use strict";t.__esModule=!0,t.PaperSheet=void 0;var o=n(58734),r=n(59641),a=n(63089),c=n(54777),i=n(50930),l=n(33677),d=n(5339),u=n(7229);function s(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,N(e,t)}function m(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n]+)>/g,(function(e,t){var n=a[t];return"$"+(Array.isArray(n)?n.join("$"):n)})))}if("function"==typeof r){var c=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(o(e,c)),r.apply(this,e)}))}return e[Symbol.replace].call(this,n,r)},C.apply(this,arguments)}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&N(e,t)}function N(e,t){return N=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},N(e,t)}var V=5e3,b=function(e,t,n,o){return void 0===o&&(o=!1),''+e+""},f=/\[(_+)\]/g,g=C(/\[\]/gm,{id:2}),v=/%s(?:ign)?(?=\\s|$)?/gim,k=function(e,t,n,o,r){var a=e.replace(f,(function(e,a,c,i){var l=function(e,t,n){t=n+"x "+t;var o=document.createElement("canvas").getContext("2d");return o.font=t,o.measureText(e).width}(e,t,n)+"px";return function(e,t,n,o,r,a){return'['+(n=c,r=s,(r?n.replace(/")};return(0,o.createComponentVNode)(2,i.Box,{position:"relative",backgroundColor:u,width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,i.Box,{className:"Paper__Page",fillPositionedParent:!0,width:"100%",height:"100%",dangerouslySetInnerHTML:p,p:"10px"}),m.map((function(e,t){return(0,o.createComponentVNode)(2,x,{image:{sprite:e[0],x:e[1],y:e[2],rotate:e[3]}},e[0]+t)}))]})},w=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={x:0,y:0,rotate:0},o.style=null,o.handleMouseMove=function(e){var t=o.findStampPosition(e);t&&(!function(e){e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),e.cancelBubble=!0,e.returnValue=!1}(e),o.setState({x:t[0],y:t[1],rotate:t[2]}))},o.handleMouseClick=function(e){if(!(e.pageY<=30)){var t=(0,c.useBackend)(o.context),n=t.act,r=t.data;n("stamp",{x:o.state.x,y:o.state.y,r:o.state.rotate,stamp_class:o.props.stamp_class,stamp_icon_state:r.stamp_icon_state})}},o}s(t,e);var n=t.prototype;return n.findStampPosition=function(e){var t,n=document.querySelector(".Layout__content");if(e.shiftKey&&(t=!0),document.getElementById("stamp")){var o=document.getElementById("stamp"),r=o.clientHeight,a=o.clientWidth,c=t?this.state.y:e.pageY-n.scrollTop-r,i=t?this.state.x:e.pageX-a/2,l=n.clientWidth-a,u=n.clientHeight-n.scrollTop-r,s=Math.atan2(e.pageX-i,e.pageY-c),m=t?s*(180/Math.PI)*-1:this.state.rotate;return[(0,d.clamp)(i,0,l),(0,d.clamp)(c,0,u),m]}},n.componentDidMount=function(){document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("click",this.handleMouseClick)},n.componentWillUnmount=function(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("click",this.handleMouseClick)},n.render=function(){var e=this.props,t=e.value,n=e.stamp_class,r=e.stamps||[],a={sprite:n,x:this.state.x,y:this.state.y,rotate:this.state.rotate};return(0,o.createFragment)([(0,o.createComponentVNode)(2,B,{readOnly:!0,value:t,stamps:r}),(0,o.createComponentVNode)(2,x,{active_stamp:!0,opacity:.5,image:a})],4)},t}(o.Component),_=function(e,t,n,o,r,c,i,l){void 0===n&&(n=!1),void 0===l&&(l=!1);var d={text:t};if((e=e.trim()).length>0){e+="\n"===e[e.length]?" \n":"\n \n";var s=function(e,t,n){return e.replace(v,(function(){return b(n,"Times New Roman",t,!0)}))}((0,u.sanitizeText)(e),r,i),p=k(s,c,12,r,o),C=function(e){return(0,a.marked)(e,{breaks:!0,smartypants:!0,smartLists:!0,walkTokens:function(e){switch(e.type){case"url":case"autolink":case"reflink":case"link":case"image":e.type="text",e.href=""}},baseUrl:"thisshouldbreakhttp"})}(p.text),h=b(C,c,r,l);d.text+=h,d.field_counter=p.counter}if(n){var N=function(e,t,n,o,r){var a;void 0===r&&(r=!1);for(var c={},i=[];null!==(a=g.exec(e));){var l=a[0],d=a.groups.id;if(d){var s=document.getElementById(d);if(0===(s&&s.value?s.value:"").length)continue;var p=(0,u.sanitizeText)(s.value.trim(),[]);if(0===p.length)continue;var C=s.cloneNode(!0);p.match(v)?(C.style.fontFamily="Times New Roman",r=!0,C.defaultValue=o):(C.style.fontFamily=t,C.defaultValue=p),r&&(C.style.fontWeight="bold"),C.style.color=n,C.disabled=!0;var h=document.createElement("div");h.appendChild(C),c[d]=p,i.push({value:"["+h.innerHTML+"]",raw_text:l})}}if(i.length>0)for(var N,V=m(i);!(N=V()).done;){var b=N.value;e=e.replace(b.raw_text,b.value)}return{text:e,fields:c}}(d.text,c,r,i,l);d.text=N.text,d.form_fields=N.fields}return d},y=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={previewSelected:"Preview",old_text:t.value||"",counter:t.counter||0,textarea_text:"",combined_text:t.value||""},o}s(t,e);var n=t.prototype;return n.createPreviewFromData=function(e,t){void 0===t&&(t=!1);var n=(0,c.useBackend)(this.context).data;return _(e,this.state.old_text,t,this.state.counter,n.pen_color,n.pen_font,n.edit_usr,n.is_crayon)},n.onInputHandler=function(e,t){var n=this;if(t!==this.state.textarea_text){var o=this.state.old_text.length+this.state.textarea_text.length;if(o>V&&(t=o-V>=t.length?"":t.substr(0,t.length-(o-V)))===this.state.textarea_text)return;this.setState((function(){return{textarea_text:t,combined_text:n.createPreviewFromData(t)}}))}},n.finalUpdate=function(e){var t=(0,c.useBackend)(this.context).act,n=this.createPreviewFromData(e,!0);t("save",n),this.setState((function(){return{textarea_text:"",previewSelected:"save",combined_text:n.text,old_text:n.text,counter:n.field_counter}}))},n.render=function(){var e=this,t=this.props,n=t.textColor,r=t.fontFamily,a=t.stamps,c=t.backgroundColor;return(0,o.createComponentVNode)(2,i.Flex,{direction:"column",fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Tabs,{children:[(0,o.createComponentVNode)(2,i.Tabs.Tab,{textColor:"black",backgroundColor:"Edit"===this.state.previewSelected?"grey":"white",selected:"Edit"===this.state.previewSelected,onClick:function(){return e.setState({previewSelected:"Edit"})},children:"Edit"},"marked_edit"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{textColor:"black",backgroundColor:"Preview"===this.state.previewSelected?"grey":"white",selected:"Preview"===this.state.previewSelected,onClick:function(){return e.setState((function(){return{previewSelected:"Preview",textarea_text:e.state.textarea_text,combined_text:e.createPreviewFromData(e.state.textarea_text).text}}))},children:"Preview"},"marked_preview"),(0,o.createComponentVNode)(2,i.Tabs.Tab,{textColor:"black",backgroundColor:"confirm"===this.state.previewSelected?"red":"save"===this.state.previewSelected?"grey":"white",selected:"confirm"===this.state.previewSelected||"save"===this.state.previewSelected,onClick:function(){"confirm"===e.state.previewSelected?e.finalUpdate(e.state.textarea_text):"Edit"===e.state.previewSelected?e.setState((function(){return{previewSelected:"confirm",textarea_text:e.state.textarea_text,combined_text:e.createPreviewFromData(e.state.textarea_text).text}})):e.setState({previewSelected:"confirm"})},children:"confirm"===this.state.previewSelected?"Confirm":"Save"},"marked_done")]})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,basis:1,children:"Edit"===this.state.previewSelected&&(0,o.createComponentVNode)(2,i.TextArea,{value:this.state.textarea_text,textColor:n,fontFamily:r,height:window.innerHeight-80+"px",backgroundColor:c,onInput:this.onInputHandler.bind(this)})||(0,o.createComponentVNode)(2,B,{value:this.state.combined_text,stamps:a,fontFamily:r,textColor:n})})]})},t}(o.Component);t.PaperSheet=function(e,t){var n=(0,c.useBackend)(t).data,r=n.edit_mode,a=n.text,d=n.paper_color,s=void 0===d?"white":d,m=n.pen_color,p=void 0===m?"black":m,C=n.pen_font,h=void 0===C?"Verdana":C,N=n.stamps,V=n.stamp_class,b=n.sizeX,f=n.sizeY,g=n.name,v=n.add_text,k=n.add_font,x=n.add_color,L=n.add_sign,S={text:a,field_counter:n.field_counter};if(v)for(var I=0;I=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n50?"good":d>15&&"average")||"bad";return(0,o.createComponentVNode)(2,c.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!l.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!l.ready_to_boot,children:l.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:l.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:u,children:l.sheets}),l.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:l.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:l.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):l.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:l.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:l.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:l.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!l.connected&&"bad",children:l.connected?l.power_available:"Unconnected"})})]})})]})})}},45536:function(e,t,n){"use strict";t.__esModule=!0,t.PortablePump=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(39939);t.PortablePump=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.direction,s=(d.holding,d.target_pressure),m=d.default_pressure,p=d.min_pressure,C=d.max_pressure;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:315,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-in-alt":"sign-out-alt",content:u?"In":"Out",selected:u,onClick:function(){return l("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,unit:"kPa",width:"75px",minValue:p,maxValue:C,step:10,onChange:function(e,t){return l("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:s===p,onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:s===m,onClick:function(){return l("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:s===C,onClick:function(){return l("pressure",{pressure:"max"})}})]})]})})]})})}},67351:function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(35891),i=n(33677),l=n(39939);t.PortableScrubber=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:320,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,l.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,c.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return d("toggle_filter",{val:e.gas_id})}},e.id)}))})]})})}},93281:function(e,t,n){"use strict";t.__esModule=!0,t.PortableTurret=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.PortableTurret=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.silicon_user,u=l.locked,s=l.on,m=(l.turret_shoot_weapons,l.turret_shoot_wildlife),p=(l.turret_shoot_all,l.turret_shoot_players),C=l.turret_shoot_raiders,h=l.turret_shoot_robots,N=l.turret_shoot_ignore_faction,V=l.turret_make_noise,b=l.turret_use_laser_pointer,f=l.manual_control,g=l.allow_manual_control,v=l.lasertag_turret;return(0,o.createComponentVNode)(2,c.Window,{width:310,height:v?110:292,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",u?"unlock":"lock"," this interface."]}),(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:!v&&(!!g||!!f&&!!d)&&(0,o.createComponentVNode)(2,a.Button,{icon:f?"wifi":"terminal",content:f?"Remotely Controlled":"Manual Control",disabled:f,color:"bad",onClick:function(){return i("manual")}}),children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"power-off":"times",content:s?"On":"Off",selected:s,disabled:u,onClick:function(){return i("power")}})})})}),!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Target Settings",buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!N,content:"Disable IFF",disabled:u,onClick:function(){return i("turret_return_ignore_faction")}}),children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Target Civilians",disabled:u,onClick:function(){return i("turret_return_shoot_players")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:C,content:"Target Possible Criminals",disabled:u,onClick:function(){return i("turret_return_shoot_raiders")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:m,content:"Target Pests",disabled:u,onClick:function(){return i("turret_return_shoot_wildlife")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:h,content:"Target Robots",disabled:u,onClick:function(){return i("turret_return_shoot_robots")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:b,content:"Use Targetting Laser",disabled:u,onClick:function(){return i("turret_return_use_laser_pointer")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:V,content:"Use Internal Speakers",disabled:u,onClick:function(){return i("turret_return_make_noise")}})]})],0)]})})}},81574:function(e,t,n){"use strict";t.__esModule=!0,t.powerRank=t.PowerMonitorContent=t.PowerMonitor=t.AreaCharge=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(5339),i=n(59641),l=n(54777),d=n(50930),u=n(33677),s=5e5,m=function(e){var t=String(e.split(" ")[1]).toLowerCase();return["w","kw","mw","gw"].indexOf(t)};t.powerRank=m;t.PowerMonitor=function(){return(0,o.createComponentVNode)(2,u.Window,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,p)})})};var p=function(e,t){var n=(0,l.useBackend)(t).data,i=n.history,u=(0,l.useLocalState)(t,"sortByField",null),p=u[0],N=u[1],V=i.supply[i.supply.length-1]||0,b=i.demand[i.demand.length-1]||0,f=i.supply.map((function(e,t){return[t,e]})),g=i.demand.map((function(e,t){return[t,e]})),v=Math.max.apply(Math,[s].concat(i.supply,i.demand)),k=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===p&&(0,r.sortBy)((function(e){return e.name})),"charge"===p&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===p&&(0,r.sortBy)((function(e){return-m(e.load)}),(function(e){return-parseFloat(e.load)}))])(n.areas);return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Flex,{mx:-.5,mb:1,children:[(0,o.createComponentVNode)(2,d.Flex.Item,{mx:.5,width:"200px",children:(0,o.createComponentVNode)(2,d.Section,{children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Supply",children:(0,o.createComponentVNode)(2,d.ProgressBar,{value:V,minValue:0,maxValue:v,color:"teal",children:(0,c.toFixed)(V/1e3)+" kW"})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Draw",children:(0,o.createComponentVNode)(2,d.ProgressBar,{value:b,minValue:0,maxValue:v,color:"pink",children:(0,c.toFixed)(b/1e3)+" kW"})})]})})}),(0,o.createComponentVNode)(2,d.Flex.Item,{mx:.5,grow:1,children:(0,o.createComponentVNode)(2,d.Section,{position:"relative",height:"100%",children:[(0,o.createComponentVNode)(2,d.Chart.Line,{fillPositionedParent:!0,data:f,rangeX:[0,f.length-1],rangeY:[0,v],strokeColor:"rgba(0, 181, 173, 1)",fillColor:"rgba(0, 181, 173, 0.25)"}),(0,o.createComponentVNode)(2,d.Chart.Line,{fillPositionedParent:!0,data:g,rangeX:[0,g.length-1],rangeY:[0,v],strokeColor:"rgba(224, 57, 151, 1)",fillColor:"rgba(224, 57, 151, 0.25)"})]})})]}),(0,o.createComponentVNode)(2,d.Section,{children:[(0,o.createComponentVNode)(2,d.Box,{mb:1,children:[(0,o.createComponentVNode)(2,d.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"name"===p,content:"Name",onClick:function(){return N("name"!==p&&"name")}}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"charge"===p,content:"Charge",onClick:function(){return N("charge"!==p&&"charge")}}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"draw"===p,content:"Draw",onClick:function(){return N("draw"!==p&&"draw")}})]}),(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,d.Table.Cell,{textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),k.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,e.name,0),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,C,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.eqp}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.lgt}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.env}),2)],4,null,e.id)}))]})]})],4)};t.PowerMonitorContent=p;var C=function(e){var t=e.charging,n=e.charge;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Icon,{width:"18px",textAlign:"center",name:0===t&&(n>50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,d.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,c.toFixed)(n)+"%"})],4)};t.AreaCharge=C,C.defaultHooks=i.pureComponentHooks;var h=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,d.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};h.defaultHooks=i.pureComponentHooks},46856:function(e,t,n){"use strict";t.__esModule=!0,t.ProbingConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.ProbingConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.open,u=l.feedback,s=l.occupant,m=l.occupant_name,p=l.occupant_status;return(0,o.createComponentVNode)(2,c.Window,{width:330,height:207,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Machine Report",children:u})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"sign-out-alt":"sign-in-alt",content:d?"Close":"Open",onClick:function(){return i("door")}}),children:s&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:3===p?"bad":2===p?"average":"good",children:3===p?"Deceased":2===p?"Unconscious":"Conscious"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Experiments",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer",content:"Probe",onClick:function(){return i("experiment",{experiment_type:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"brain",content:"Dissect",onClick:function(){return i("experiment",{experiment_type:2})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Analyze",onClick:function(){return i("experiment",{experiment_type:3})}})]})]})||(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Subject"})})]})})}},54424:function(e,t,n){"use strict";t.__esModule=!0,t.ProximitySensor=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.ProximitySensor=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.minutes,u=l.seconds,s=l.timing,m=l.scanning,p=l.sensitivity;return(0,o.createComponentVNode)(2,c.Window,{width:250,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"lock":"unlock",content:m?"Armed":"Not Armed",selected:m,onClick:function(){return i("scanning")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Detection Range",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m,onClick:function(){return i("sense",{range:-1})}})," ",String(p).padStart(1,"1")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m,onClick:function(){return i("sense",{range:1})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Auto Arm",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:s?"Stop":"Start",selected:s,disabled:m,onClick:function(){return i("time")}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:m||s,onClick:function(){return i("input",{adjust:-30})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m||s,onClick:function(){return i("input",{adjust:-1})}})," ",String(d).padStart(2,"0"),":",String(u).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m||s,onClick:function(){return i("input",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:m||s,onClick:function(){return i("input",{adjust:30})}})]})]})})}},32152:function(e,t,n){"use strict";t.__esModule=!0,t.QuirkMenu=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(7229),l="Your Quirks";t.QuirkMenu=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),s=i.UserName,p=i.AllQuirks||[],h=(i.AllCategories,(0,r.useLocalState)(t,"SelectedCategory",l)),N=h[0],V=(h[1],(0,r.useLocalState)(t,"SearchTerm","")),b=V[0],f=(V[1],b?p[0]:N),v=g(f,t);b||p[0];return(0,o.createComponentVNode)(2,c.Window,{theme:"ntos",width:640,height:768,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Section,{width:"100%",title:"Welcome, "+s+"!",buttons:(0,o.createComponentVNode)(2,u),children:(0,o.createComponentVNode)(2,d)})}),(0,o.createComponentVNode)(2,a.Stack.Item,{grow:1,basis:1,children:(0,o.createComponentVNode)(2,a.Section,{fill:!0,width:"100%",scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:(0,o.createComponentVNode)(2,m)}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,C,{QuirksInCat:v})})]})})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,w)})]})})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.UserCkey,d=i.UserQuirkPoints,u=i.UserQuirkGoods,s=i.MaxQuirkPoints,m=i.MaxGoodQuirks,p=(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:d>=s?"bad":"good",children:d}),C=(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:u>=m?"bad":"good",children:u});return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"25%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,fontSize:"18px",style:{display:"flex","align-items":"center","justify-content":"center"},height:"100%",color:"bad",textAlign:"center",content:"Reset Quirks",onClick:function(){return c("ClearQuirks",{UserCkey:l,DoSound:"ResetQuirks"})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",children:(0,o.createComponentVNode)(2,a.Box,{mx:"0.5rem",width:"100%",textAlign:"center",fontSize:"14px",color:"label",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Box)}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"right",fontSize:"18px",color:"label",children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,pr:"0.25rem",children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:"Quirk Points:"}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:"Good Quirks:"})]})})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"left",fontSize:"18px",color:"label",children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,pl:"0.25rem",children:[(0,o.createComponentVNode)(2,a.Stack.Item,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:[p," /"]}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:[C," /"]})]})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:s}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:m})]})})]})})})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Box)})]})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"25%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,style:{display:"flex","align-items":"center","justify-content":"center"},bold:!0,fontSize:"18px",height:"100%",textAlign:"center",content:"Save Quirks",onClick:function(){return c("SaveQuirks",{UserCkey:l,DoSound:"SaveQuirks"})}})})]}),(0,o.createVNode)(1,"hr")],4)},u=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=(c.AllQuirks,c.DP),d=(0,r.useLocalState)(t,"SearchTerm",""),u=d[0],m=(d[1],l?"Dragon Pussy":"Find-A-Quirk 0.1b (tm)");return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:"fit-content",children:(0,o.createComponentVNode)(2,a.Input,{width:"15em",placeholder:m,value:u,onInput:function(e,n){s((0,i.sanitizeText)(n),t)}})})},s=function(e,t){var n=(0,r.useBackend)(t),o=n.act,a=n.data.AllCategories,c=(0,r.useLocalState)(t,"SearchTerm",""),i=c[0],d=c[1],u=(0,r.useLocalState)(t,"SelectedCategory",l),s=(u[0],u[1]),m=(0,r.useLocalState)(t,"CurrentPage",1),p=(m[0],m[1]);i.length>0&&(p(1),s(a[0])),d(e),o("Sound",{DoSound:"SearchType"})},m=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.AllCategories||[]),i=c[0]||"Oh no",d=c.slice(1),u=[i,l].concat(d);return(0,o.createComponentVNode)(2,a.Box,{p:"0.5rem",mr:"0.5rem",width:"fit-content",backgroundColor:"#2f2f2f",children:u.map((function(e){return(0,o.createComponentVNode)(2,p,{CatName:e},e)}))})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.AllQuirks||[],u=i.AllCategories||[],s=i.UserQuirkKeys||[],m=e.CatName||"Oh no",p=(0,r.useLocalState)(t,"SelectedCategory",l),C=p[0],h=p[1],N=(0,r.useLocalState)(t,"CurrentPage",1),V=(N[0],N[1]),b=(0,r.useLocalState)(t,"SearchTerm",""),g=(b[0],b[1]),v=B(s,t)||[],k=v.filter((function(e){return e.Qcategory===m}))||[],x=m===l?v.reduce((function(e,t){return e+t.Qvalue}),0):m===u[0]?"("+d.length+")":k.reduce((function(e,t){return e+t.Qvalue}),0),w=f(x)||"",_=m===u[0]||0===x?"label":x>0?"good":"bad";return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,px:"0.5em",py:"0.25em",selected:C===m,onClick:function(){h(m),V(1),g(""),c("Sound",{DoSound:"TabClick"})},children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,textAlign:"left",children:m})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Box,{pl:"0.5rem",inline:!0,color:_,textAlign:"right",children:[w,x]})})]})},m)},C=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=(c.AllQuirks,c.AllCategories||[]),d=c.UserProstheticObjs||[],u=(0,r.useLocalState)(t,"CurrentPage",1),s=u[0],m=(u[1],(0,r.useLocalState)(t,"SearchTerm","")),p=m[0],C=(m[1],(0,r.useLocalState)(t,"SelectedCategory",l)),V=C[0],b=(C[1],g(V,t)),f=""!==p||V===i[0]?[10*s-10,10*s]:[0,b.length],v=b.slice(f[0],f[1]),k=p?"No quirks found!":V===i[0]?"Congratulations! You've been selected to open an issue on Github! Use the keyword 'Dragon Pussy' for 15% off your tech support!":"No quirks in this category!";return(0,o.createComponentVNode)(2,a.Box,{children:[0===v.length&&0===d.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{active:!0,children:k}),V===l&&d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{mr:"0.5em",mb:"0.5em",children:(0,o.createComponentVNode)(2,N,{LOBJ:e})},e)})),v.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{mr:"0.5em",mb:"0.5em",children:(0,o.createComponentVNode)(2,h,{QOBJ:e})},e.Qkey)}))]})},h=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.UserQuirkKeys||[],d=i.UserCkey||"Guest",u=i.UserName||"Buddy",s=e.QOBJ||{Qkey:"Oh. Ohhhhh no.",Qname:"Oh no.",Qdesc:"Wonderful, QuirkButton thing broke.",Qpath:"help",Qvalue:10180085,Qmechanics:"Makes Dan go augh. Report for expensive dragon pussy.",Qconflicts:[],Qcategory:"All Quirks",Qhumanonly:"\ud83d\udc68"},m=s.Qkey||"!",p=s.Qname||"Quirk",C=s.Qvalue||0,h=f(C)||"",N=s.Qdesc||"This is a quirk! Not much is known about it!",g=s.Qmechanics||"Supposedly does something!",w=s.Qconflicts||[],_=s.Qhumanonly||"Hmmm",y=B(w,t)||[],L=(B(l,t)||[]).filter((function(e){return e.Qconflicts.includes(m)||w.includes(e.Qkey)}))||[],S=L.length>0,I=l.includes(m),T=x(s,t),A=v(s,t),P=k(s,t),F=T?"":" (Would put you over your quirk point limit!)",M=!I&&A&&P&&!S||I&&T,R=M||A?"":" (Too Expensive!)",D=M||P?"":" (Too Many Good Quirks!)",j=I?"white":M?"#FFFFFF":"#442222",W=I?"#448844":M?"":"#884444",E=I||M?"white":"#221111",O=M?0==C?E:C>0?"#00FF00":"#FF0000":I?C>0?"#223322":"#88AAAA":"#442222",z="Generic";return M?I?z="RemoveQuirk":I||(z="AddQuirk"):S?z="Conflicts":A&&T?P||(z="TooManyGood"):z="CantAfford",(0,o.createComponentVNode)(2,a.Button,{px:"1rem",py:"1rem",mb:"0.5rem",mx:"0.5rem",width:"100%",selected:I,textAlign:"left",backgroundColor:W,onClick:function(){return c("ClickQuirk",{QuirkKey:m,UserCkey:d,UserName:u,DoSound:z})},children:(0,o.createComponentVNode)(2,a.NoticeBox,{success:I,active:!M,width:"100%",children:[(0,o.createComponentVNode)(2,a.Box,{style:{"border-bottom":"1px solid rgba(255, 255, 255, 0.8)"},textAlign:"left",bold:!0,fontSize:"16px",mb:"0.5rem",color:j,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"3em",children:(0,o.createComponentVNode)(2,a.Box,{color:O,children:[h,C]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:[p,R,D]})]})}),I&&!T&&(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"14px",color:"black",children:F}),S&&L.length>0&&(0,o.createComponentVNode)(2,b,{UConObjs:L}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"left",fontSize:"11px",style:{"border-bottom":"1px solid rgba(255, 255, 255, 0.2)"},dangerouslySetInnerHTML:{__html:N}}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"left",fontSize:"11px",color:E,dangerouslySetInnerHTML:{__html:_+g}}),y.length>0&&(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,V,{QConflict:y,TextCol:E})})]})})},N=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data,e.LOBJ||{}),i=c.Limb||"Bingus",l=c.Manufacturer||"Bingus";return(0,o.createComponentVNode)(2,a.Box,{px:"1rem",py:"0.25rem",mb:"0.5rem",mx:"0.5rem",width:"100%",textAlign:"left",backgroundColor:"#222244",style:{"background-image":"linear-gradient(#222244, #444466, #444466, #222244)"},children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"left",bold:!0,fontSize:"16px",mb:"0.5rem",color:"#DDDDEE",children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"3em",children:"-11"}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,color:"#AAAAAA",children:["Your ",l," ",i]})]})})})},V=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.AllQuirks,e.QConflict||[]),i=e.TextCol||"white";return 0===c.length?(0,o.createComponentVNode)(2,a.Box):(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"left",fontSize:"10px",color:"#22FAFA",children:(0,o.createVNode)(1,"b",null,"Conflicts With:",16)})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"left",fontSize:"8px",color:i,children:c.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{px:"0.25rem",py:"-0.25rem",inline:!0,children:e.Qname},e.Qkey)}))})})]})},b=function(e){var t=e.UConObjs||[];return 0===t.length?(0,o.createComponentVNode)(2,a.Box):(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Box,{color:"#880000",children:["!!! You have quirks that prevent this one from being taken !!!",(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"b",null,"Conflicts With:",16),(0,o.createVNode)(1,"br"),t.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,backgroundColor:"bad",textAlign:"left",tooltip:e.Qname+" is incompatible with this one!",tooltipPosition:"left",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",color:"bad"}),e.Qname]},e.Qkey)}))]})})},f=function(e){return isNaN(e)||0===e?"":e>0?"+":void 0},g=function(e,t){var n=(0,r.useBackend)(t).data,o=n.AllQuirks||[],a=n.AllCategories||[],c=e||a[0]||"",i=(0,r.useLocalState)(t,"SearchTerm",""),d=i[0],u=(i[1],(0,r.useLocalState)(t,"SelectedCategory",l)),s=u[0];u[1];return s===l?o.filter((function(e){return n.UserQuirkKeys.includes(e.Qkey)}))||[{Qkey:"You dont have any!",Qname:"You don't have any quirks!",Qdesc:"Why don't you go get some?",Qpath:"help",Qvalue:10180085,Qmechanics:"They're pretty cool!",Qconflicts:[],Qcategory:"All Quirks",Qhumanonly:"\ud83d\udc68"}]:d.length>0?o.filter((function(e){return e.Qname.toLowerCase().includes(d.toLowerCase())})):c&&c!==a[0]?o.filter((function(e){return e.Qcategory===c})):o},v=function(e,t){var n=(0,r.useBackend)(t).data;if(e.Qvalue<=0)return!0;var o=n.MaxQuirkPoints||0;return!((n.UserQuirkPoints||0)+e.Qvalue>o)},k=function(e,t){var n=(0,r.useBackend)(t).data;if(e.Qvalue<=0)return!0;var o=n.MaxGoodQuirks||0;return!((n.UserQuirkGoods||0)+1>o)},x=function(e,t){var n=(0,r.useBackend)(t).data,o=n.MaxQuirkPoints||0,a=n.UserQuirkPoints||0;return e.Qvalue>=0||!(a-e.Qvalue>o)},B=function(e,t){var n=(0,r.useBackend)(t).data.AllQuirks||[],o=[];return e.forEach((function(e){var t=n.find((function(t){return t.Qkey===e}));t&&o.push(t)})),o},w=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.AllQuirks||[],u=i.AllCategories||[],s=(0,r.useLocalState)(t,"CurrentPage",1),m=s[0],p=s[1],C=(0,r.useLocalState)(t,"SearchTerm",""),h=C[0],N=(C[1],(0,r.useLocalState)(t,"SelectedCategory",l)),V=N[0];N[1];if(""===h&&V!==u[0])return(0,o.createComponentVNode)(2,a.Box);var b=h?d[0]:V,f=g(b,t),v=Math.ceil(f.length/10),k=(0,o.createComponentVNode)(2,a.Button,{fluid:!0,inline:!0,px:"0.5em",py:"0.25em",disabled:1===m,onClick:function(){c("sound",{DoSound:"TabClick"}),p(m-1)},children:(0,o.createComponentVNode)(2,a.Icon,{name:"chevron-left"})}),x=(0,o.createComponentVNode)(2,a.Button,{inline:!0,px:"0.5em",py:"0.25em",disabled:m>=v,onClick:function(){c("sound",{DoSound:"TabClick"}),p(m+1)},children:(0,o.createComponentVNode)(2,a.Icon,{name:"chevron-right"})});return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,px:"1em",py:1,children:["Page ",m," / ",v]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:[k,x,(0,o.createComponentVNode)(2,a.Box,{inline:!0,px:"1em"})]})]})}},96770:function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(58734),r=n(45445),a=n(5339),c=n(54777),i=n(50930),l=n(35891),d=n(33677);t.Radio=function(e,t){var n=(0,c.useBackend)(t),u=n.act,s=n.data,m=s.freqlock,p=s.frequency,C=s.minFrequency,h=s.maxFrequency,N=s.listening,V=s.broadcasting,b=s.command,f=s.useCommand,g=s.subspace,v=s.subspaceSwitchable,k=l.RADIO_CHANNELS.find((function(e){return e.freq===p})),x=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(s.channels),B=106;return g&&(x.length>0?B+=21*x.length+6:B+=24),(0,o.createComponentVNode)(2,d.Window,{width:360,height:B,children:(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Frequency",children:[m&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(p/10,1)+" kHz"})||(0,o.createComponentVNode)(2,i.NumberInput,{animate:!0,unit:"kHz",step:.1,stepPixelSize:10,minValue:C/10,maxValue:h/10,value:p/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return u("frequency",{adjust:t-p/10})}}),k&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:k.color,ml:2,children:["[",k.name,"]"]})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:N?"volume-up":"volume-mute",selected:N,onClick:function(){return u("listen")}}),(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:V?"microphone":"microphone-slash",selected:V,onClick:function(){return u("broadcast")}}),!!b&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:f,content:"High volume "+(f?"ON":"OFF"),onClick:function(){return u("command")}}),!!v&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:g,content:"Subspace Tx "+(g?"ON":"OFF"),onClick:function(){return u("subspace")}})]}),!!g&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Channels",children:[0===x.length&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),x.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return u("channel",{channel:e.name})}})},e.name)}))]})]})})})})}},64596:function(e,t,n){"use strict";t.__esModule=!0,t.RadioactiveMicrolaser=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.RadioactiveMicrolaser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.irradiate,u=l.stealth,s=l.scanmode,m=l.intensity,p=l.wavelength,C=l.on_cooldown,h=l.cooldown;return(0,o.createComponentVNode)(2,c.Window,{title:"Radioactive Microlaser",width:320,height:335,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Status",children:(0,o.createComponentVNode)(2,a.Box,{color:C?"average":"good",children:C?"Recharging":"Ready"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Irradiation",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("irradiate")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stealth Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye-slash":"eye",content:u?"On":"Off",disabled:!d,selected:u,onClick:function(){return i("stealth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"mortar-pestle":"heartbeat",content:s?"Scan Reagents":"Scan Health",disabled:d&&u,onClick:function(){return i("scanmode")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laser Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Intensity",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radintensity",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radintensity",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(m),width:"40px",minValue:1,maxValue:20,onChange:function(e,t){return i("radintensity",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radintensity",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radintensity",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Wavelength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radwavelength",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radwavelength",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(p),width:"40px",minValue:0,maxValue:120,onChange:function(e,t){return i("radwavelength",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radwavelength",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radwavelength",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Cooldown",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:h})})]})})]})})}},29339:function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(58734),r=n(59641),a=n(54777),c=n(50930),i=n(33677),l=["Atmospherics","Disposals","Transit Tubes"],d={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},u={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},s=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e,t){var n=(0,a.useBackend)(t),m=n.act,p=n.data,C=p.category,h=p.categories,N=void 0===h?[]:h,V=p.selected_color,b=p.piping_layer,f=p.mode,g=p.preview_rows.flatMap((function(e){return e.previews})),v=(0,a.useLocalState)(t,"categoryName"),k=v[0],x=v[1],B=N.find((function(e){return e.cat_name===k}))||N[0];return(0,o.createComponentVNode)(2,i.Window,{width:425,height:515,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Category",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,c.Button,{selected:C===t,icon:d[e],color:"transparent",content:e,onClick:function(){return m("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Modes",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:f&e.bitmask,content:e.name,onClick:function(){return m("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,width:"64px",color:u[V],children:V}),Object.keys(u).map((function(e){return(0,o.createComponentVNode)(2,c.ColorBox,{ml:1,color:u[e],onClick:function(){return m("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,c.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,c.Section,{children:[0===C&&(0,o.createComponentVNode)(2,c.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,checked:e===b,content:"Layer "+e,onClick:function(){return m("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,c.Box,{width:"108px",children:g.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return m("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Tabs,{children:N.map((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{fluid:!0,icon:d[e.cat_name],selected:e.cat_name===B.cat_name,onClick:function(){return x(e.cat_name)},children:e.cat_name},e.cat_name)}))}),null==B?void 0:B.recipes.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:e.selected,content:e.pipe_name,title:e.pipe_name,onClick:function(){return m("pipe_type",{pipe_type:e.pipe_index,category:B.cat_name})}},e.pipe_index)}))]})})]})]})})}},99154:function(e,t,n){"use strict";t.__esModule=!0,t.RemoteRobotControlContent=t.RemoteRobotControl=void 0;var o=n(58734),r=n(85260),a=n(54777),c=n(50930),i=n(33677);t.RemoteRobotControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{title:"Remote Robot Control",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.robots,d=void 0===l?[]:l;return d.length?d.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name+" ("+e.model+")",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"tools",content:"Interface",onClick:function(){return i("interface",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"phone-alt",content:"Call",onClick:function(){return i("callbot",{ref:e.ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"Inactive"===(0,r.decodeHtmlEntities)(e.mode)?"bad":"Idle"===(0,r.decodeHtmlEntities)(e.mode)?"average":"good",children:(0,r.decodeHtmlEntities)(e.mode)})," ",e.hacked&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"(HACKED)"})||""]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location})]})},e.ref)})):(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.NoticeBox,{textAlign:"center",children:"No robots detected"})})};t.RemoteRobotControlContent=l},56984:function(e,t,n){"use strict";t.__esModule=!0,t.RequestKioskContent=t.RequestKiosk=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(59576),i=n(33677);t.RequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.accountName,u=l.requests,s=void 0===u?[]:u,m=l.applicants,p=void 0===m?[]:m,C=l.bountyValue;l.bountyText;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"Log out",onClick:function(){return i("clear")}}),children:d||"N/A"})})}),(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:null==s?void 0:s.map((function(e){return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.owner,width:"300px",children:(0,o.createComponentVNode)(2,a.Section,{width:"300px",children:[(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,width:"310px",children:e.owner}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100px",children:(0,c.formatMoney)(e.value)+" cr"}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"pen-fancy",content:"Apply",onClick:function(){return i("apply",{request:e.acc_number})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"trash-alt",content:"Delete",color:"red",onClick:function(){return i("deleteRequest",{request:e.acc_number})}})]})]}),(0,o.createComponentVNode)(2,a.Section,{align:"center",children:(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)('"'),e.description,(0,o.createTextVNode)('"')],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Request Applicants",children:null==p?void 0:p.map((function(t){return t.request_id===e.acc_number&&(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,p:.5,backgroundColor:"rgba(0, 0, 69, 0.5)",width:"510px",style:{border:"2px solid rgba(13, 13, 213, 0.7)"},children:t.name}),(0,o.createComponentVNode)(2,a.Flex.Item,{align:"end",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"cash-register",onClick:function(){return i("payApplicant",{applicant:t.requestee_id,request:e.acc_number})}})})]},t.request_id)}))})]},e.name)},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Collapsible,{title:"New Bounty",width:"220px",color:"green",children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.TextArea,{fluid:!0,height:"250px",width:"200px",backgroundColor:"black",textColor:"white",onChange:function(e,t){return i("bountyText",{bountytext:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.NumberInput,{animate:!0,unit:"cr",minValue:1,maxValue:1e3,value:C,width:"80px",onChange:function(e,t){return i("bountyVal",{bountyval:t})}})}),(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Submit bounty",onClick:function(){return i("createBounty")}})]})})})]})],4)};t.RequestKioskContent=l},66474:function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.RoboticsControlConsole=function(e,t){var n=(0,r.useBackend)(t),d=(n.act,n.data),u=(0,r.useSharedState)(t,"tab",1),s=u[0],m=u[1],p=d.can_hack,C=d.cyborgs,h=void 0===C?[]:C,N=d.drones,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:460,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===s,onClick:function(){return m(1)},children:["Cyborgs (",h.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===s,onClick:function(){return m(2)},children:["Drones (",V.length,")"]})]}),1===s&&(0,o.createComponentVNode)(2,i,{cyborgs:h,can_hack:p}),2===s&&(0,o.createComponentVNode)(2,l,{drones:V})]})})};var i=function(e,t){var n=e.cyborgs,c=e.can_hack,i=(0,r.useBackend)(t),l=i.act;i.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([!!c&&!e.emagged&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return l("magbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",onClick:function(){return l("stopbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return l("killbot",{ref:e.ref})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,a.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected within access parameters"})},l=function(e,t){var n=e.drones,c=(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return c("killdrone",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":"good",children:e.status?"Not Responding":"Nominal"})})})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No drone units detected within access parameters"})}},92873:function(e,t,n){"use strict";t.__esModule=!0,t.RouletteNumberButton=t.RouletteBoard=t.RouletteBetTable=t.Roulette=void 0;var o=n(58734),r=n(59641),a=n(54777),c=n(50930),i=n(33677),l=function(e){if(0===e)return"green";for(var t=[[1,10],[19,28]],n=!0,o=0;o=r[0]&&e<=r[1]){n=!1;break}}var a=e%2==0;return(n?a:!a)?"red":"black"},d=function(e,t){var n=e.number,r=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Button,{bold:!0,content:n,color:l(n),width:"40px",height:"28px",fontSize:"20px",textAlign:"center",mb:0,className:"Roulette__board-extrabutton",onClick:function(){return r("ChangeBetType",{type:n})}})};t.RouletteNumberButton=d;var u=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createVNode)(1,"table","Table",[(0,o.createVNode)(1,"tr","Roulette__board-row",[(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{content:"0",color:"transparent",height:"88px",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:0})}}),2,{rowSpan:"3"}),[3,6,9,12,15,18,21,24,27,30,33,36].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s3rd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[2,5,8,11,14,17,20,23,26,29,32,35].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s2nd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[1,4,7,10,13,16,19,22,25,28,31,34].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1st col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1st 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-12"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2nd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s13-24"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"3rd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s25-36"})}}),2,{colSpan:"4"})],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1-18",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-18"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Even",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"even"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Black",color:"black",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"black"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Red",color:"red",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"red"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Odd",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"odd"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"19-36",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s19-36"})}}),2,{colSpan:"2"})],4)],4,{style:{width:"1px"}})};t.RouletteBoard=u;var s=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data,u=(0,a.useLocalState)(t,"customBet",500),s=u[0],m=u[1],p=d.BetType;return p.startsWith("s")&&(p=p.substring(1,p.length)),(0,o.createVNode)(1,"table","Roulette__lowertable",[(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Last Spun:",16),(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Current Bet:",16)],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--spinresult","Roulette__lowertable--spinresult-"+l(d.LastSpin)]),d.LastSpin,0),(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--betscell"]),[(0,o.createComponentVNode)(2,c.Box,{bold:!0,mt:1,mb:1,fontSize:"25px",textAlign:"center",children:[d.BetAmount," cr on ",p]}),(0,o.createComponentVNode)(2,c.Box,{ml:1,mr:1,children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 10 cr",onClick:function(){return i("ChangeBetAmount",{amount:10})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 50 cr",onClick:function(){return i("ChangeBetAmount",{amount:50})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 100 cr",onClick:function(){return i("ChangeBetAmount",{amount:100})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 500 cr",onClick:function(){return i("ChangeBetAmount",{amount:500})}}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet custom amount...",onClick:function(){return i("ChangeBetAmount",{amount:s})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{size:.1,children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,minValue:0,maxValue:1e3,step:10,stepPixelSize:4,width:"40px",onChange:function(e,t){return m(t)}})})]})]})],4)],4),(0,o.createVNode)(1,"tr",null,(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Box,{bold:!0,m:1,fontSize:"14px",textAlign:"center",children:"Swipe an ID card with a connected account to spin!"}),2,{colSpan:"2"}),2),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","Roulette__lowertable--cell",[(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,mr:1,children:"House Balance:"}),(0,o.createComponentVNode)(2,c.Box,{inline:!0,children:d.HouseBalance?d.HouseBalance+" cr":"None"})],4),(0,o.createVNode)(1,"td","Roulette__lowertable--cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:d.IsAnchored?"Bolted":"Unbolted",m:1,color:"transparent",textAlign:"center",onClick:function(){return i("anchor")}}),2)],4)],4)};t.RouletteBetTable=s;t.Roulette=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:603,height:475,theme:"cardtable",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s)]})})}},53488:function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(37806),i=n(33677);t.SatelliteControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.satellites||[];return(0,o.createComponentVNode)(2,i.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[d.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.meteor_shield_coverage/d.meteor_shield_coverage_max,content:100*d.meteor_shield_coverage/d.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return l("toggle",{id:e.id})}},e.id)}))})})]})})}},76153:function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(32599),i=n(33677),l=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],d=[{name:"Human",value:"human"},{name:"Lizardperson",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],u=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:400,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{onLockedStatusChange:function(){return a("toggle_lock")}}),!l.locked&&(0,o.createComponentVNode)(2,m)]})})};var s={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return C}},Guns:{title:"Scanner Mode: Guns",component:function(){return h}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return N}},Disease:{title:"Scanner Mode: Disease",component:function(){return V}},Species:{title:"Scanner Mode: Species",component:function(){return b}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return f}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return g}}},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.scan_mode,l=s[i]||s.off,d=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==i&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return c("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return n("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return n("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return n("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return n("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return n("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return n("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return n("set_mode",{new_mode:"Nanites"})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,v)],4)},h=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,v)],4)},N=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,v)],4)},V=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.reverse,u=i.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",d?"does not have":"has"," ","a disease equal or worse than ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===u,content:e,onClick:function(){return c("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,v)],4)},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,u=i.target_species,s=d.find((function(e){return e.value===u}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",l?"not":""," ","of the ",s.name," species.","zombie"===u&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===u,content:e.name,onClick:function(){return c("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,v)],4)},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.target_nutrition,s=u.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return c("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,v)],4)},g=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return c("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,v)],4)},v=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return c("toggle_reverse")},color:i?"bad":"good"})})})}},90905:function(e,t,n){"use strict";t.__esModule=!0,t.SecondWind=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(7229),l=n(63089);t.SecondWind=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),l=i.UIState,u=i.BodyData,p=u.BodyHead,C=u.BodyFill,h=u.BodyHeadIconColor,N=u.BodyHeadIconImg,V=(u.ShowButtons,s(C)),b=250;return"SWReadMe"===l&&(b=400),(0,o.createComponentVNode)(2,c.Window,{title:"Second Wind",width:300,height:b,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,d)}),(0,o.createComponentVNode)(2,a.Stack.Item,{grow:!0,children:(0,o.createComponentVNode)(2,a.Section,{fill:!0,scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Box,{width:"auto",mt:1,mb:1,textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{size:1.5,color:h,name:N})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,children:(0,o.createComponentVNode)(2,a.Box,{fluid:!0,bold:!0,fontSize:"1.5em",textAlign:"center",mt:1,mb:1,children:p})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1})]}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"1pt",children:(0,o.createVNode)(1,"hr")}),(0,o.createComponentVNode)(2,a.Box,{dangerouslySetInnerHTML:V,fluid:!0,mb:1,mt:1})]})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,m)})]})})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.TimeData,l=i.PBarColors,d=i.TimeText,s=i.Percentage,m=(i.TargTime,c.DeadData),p=(m.DedPBarColors,m.DedTimeText),C=m.DedPercentage;m.DedTargTime;switch(l){case"good":"good","good","good";break;case"average":"average","average","average";break;case"bad":"bad","bad","bad"}return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:!0,children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:C,minValue:0,maxValue:100,ranges:{good:[0,100]},color:"good",textAlign:"center",children:p})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{LowCol:[0,35],MedCol:[35,65],HighCol:[65,100]},color:"good",textAlign:"center",children:d})})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:!0,children:(0,o.createComponentVNode)(2,u)})]})},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.UIState,l="GoReadme",d="info";return"SWReadMe"===i&&(l="GoHome",d="times"),(0,o.createComponentVNode)(2,a.Button,{icon:d,tooltip:"Second Wind Info",onClick:function(){return c(l)}})},s=function(e){var t=(0,i.sanitizeText)(e);return{__html:(0,l.marked)(t,{smartypants:!0,gfm:!0,tables:!0,sanitize:!1,breaks:!0,smartLists:!0})}},m=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,!1),i=!1,l="0px";switch(n.data.BodyData.ShowButtons){case"OnlyRevive":c=!0,l="2em";break;case"OnlyBack":i=!0,l="2em";break;case"Both":c=!0,i=!0,l="2em";break;default:c=!1,i=!1,l="0px"}return(0,o.createComponentVNode)(2,a.Box,{fluid:!0,height:l,bold:!0,mb:1,mt:1,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",children:!!c&&(0,o.createComponentVNode)(2,p,{Ht:l})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"50%",children:!!i&&(0,o.createComponentVNode)(2,C,{Ht:l})})]})})},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.UIState,l=e.Ht,d="Revive",u="heartbeat";return"SWConfirm"===i&&(d="Confirm",u="check"),(0,o.createComponentVNode)(2,a.Button,{color:"good",fill:!0,fluid:!0,height:l,onClick:function(){return c("ClickedRevive")},children:[(0,o.createComponentVNode)(2,a.Icon,{size:1,color:"white",name:u}),d]})},C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.UIState,l=e.Ht,d="Back",u="times";return"SWConfirm"===i&&(d="Cancel",u="times"),(0,o.createComponentVNode)(2,a.Button,{color:"bad",fill:!0,fluid:!0,height:l,onClick:function(){return c("GoHome")},children:[(0,o.createComponentVNode)(2,a.Icon,{size:1,color:"white",name:u}),d]})}},79708:function(e,t,n){"use strict";t.__esModule=!0,t.SeedExtractor=void 0;var o=n(58734),r=n(45445),a=n(75671),c=n(85260),i=n(54777),l=n(50930),d=n(33677);t.SeedExtractor=function(e,t){var n,u,s=(0,i.useBackend)(t),m=s.act,p=s.data,C=(n=p.seeds,u=Object.keys(n).map((function(e){var t=function(e){var t,n=/([^;=]+)=([^;]+)/g,o={};do{(t=n.exec(e))&&(o[t[1]]=t[2]+"")}while(t);return o}(e);return t.amount=n[e],t.key=e,t.name=(0,c.toTitleCase)(t.name.replace("pack of ","")),t})),(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u));return(0,o.createComponentVNode)(2,d.Window,{width:1e3,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Stored seeds:",children:(0,o.createComponentVNode)(2,l.Table,{cellpadding:"3",textAlign:"center",children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Name"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Lifespan"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Endurance"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Maturation"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Production"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Yield"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Potency"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Instability"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Stock"})]}),C.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.lifespan}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.endurance}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.maturation}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.production}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.yield}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.potency}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.instability}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:[(0,o.createComponentVNode)(2,l.Button,{content:"Vend",onClick:function(){return m("select",{item:e.key})}}),"(",e.amount," left)"]})]},e.key)}))]})})})})}},66632:function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.ShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.authorization_required;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:230,children:[!!l&&(0,o.createComponentVNode)(2,a.Modal,{ml:1,mt:1,width:26,height:12,fontSize:"28px",fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"minus-circle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,ml:2,color:"bad",children:"SHUTTLE LOCKED"})]}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",mt:4,children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"arrow-circle-right",content:"Request Authorization",color:"bad",onClick:function(){return i("request")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d)})]})};var i=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.id===t})))?void 0:n.name},l=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.name===t})))?void 0:n.id},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.status,s=d.locked,m=d.authorization_required,p=d.destination,C=d.docked_location,h=d.timer_str,N=d.locations,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"26px",textAlign:"center",fontFamily:"monospace",children:h||"00:00"}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"14px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"STATUS:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"In Transit"===u?"good":"Idle"===u||"Igniting"===u?"average":"bad",ml:1,children:u||"Not Available"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Controls",level:2,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:C||"Not Available"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:0===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Available"})||1===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:i(V,p)})||(0,o.createComponentVNode)(2,a.Dropdown,{mb:1.7,over:!0,width:"240px",options:V.map((function(e){return e.name})),disabled:s||m,selected:i(V,p)||"Select a Destination",onSelected:function(e){return c("set_destination",{destination:l(V,e)})}})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Depart",disabled:!i(V,p)||s||m,mt:1.5,icon:"arrow-up",textAlign:"center",onClick:function(){return c("move",{shuttle_id:p})}})]})]})}},53379:function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulatorTemplates=t.ShuttleManipulatorStatus=t.ShuttleManipulatorModification=t.ShuttleManipulator=void 0;var o=n(58734),r=n(45445),a=n(54777),c=n(50930),i=n(33677);t.ShuttleManipulator=function(e,t){var n=(0,a.useLocalState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{title:"Shuttle Manipulator",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===r,onClick:function(){return s(1)},children:"Status"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===r,onClick:function(){return s(2)},children:"Templates"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:3===r,onClick:function(){return s(3)},children:"Modification"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createComponentVNode)(2,d),3===r&&(0,o.createComponentVNode)(2,u)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.shuttles||[];return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Table,{children:i.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"JMP",onClick:function(){return r("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return r("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,c.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return r("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})};t.ShuttleManipulatorStatus=l;var d=function(e,t){var n,i=(0,a.useBackend)(t),l=i.act,d=i.data,u=d.templates||{},s=d.selected||{},m=(0,a.useLocalState)(t,"templateId",Object.keys(u)[0]),p=m[0],C=m[1],h=null==(n=u[p])?void 0:n.templates;return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:p===t,onClick:function(){return C(t)},children:e.port_id},t)}))(u)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:h.map((function(e){var t=e.shuttle_id===s.shuttle_id;return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return l("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))})]})})};t.ShuttleManipulatorTemplates=d;var u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.selected||{},d=i.existing_shuttle||{};return(0,o.createComponentVNode)(2,c.Section,{children:l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{level:2,title:l.name,children:(!!l.description||!!l.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!l.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:l.description}),!!l.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:l.admin_notes})]})}),d?(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: "+d.name,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Jump To",onClick:function(){return r("jump_to",{type:"mobile",id:d.id})}}),children:[d.status,!!d.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),d.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,c.Button,{content:"Preview",onClick:function(){return r("preview",{shuttle_id:l.shuttle_id})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Load",color:"bad",onClick:function(){return r("load",{shuttle_id:l.shuttle_id})}})]})],0):"No shuttle selected"})};t.ShuttleManipulatorModification=u},20529:function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(58734),r=n(5339),a=n(54777),c=n(50930),i=n(33677);t.Signaler=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.code,s=d.frequency,m=d.minFrequency,p=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:280,height:132,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:m/10,maxValue:p/10,value:s/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:u,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return l("signal")}})})})]})})})}},53277:function(e,t,n){"use strict";t.__esModule=!0,t.SkillPanel=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i={color:"lightgreen",fontWeight:"bold"},l={color:"#FFDB58",fontWeight:"bold"};t.SkillPanel=function(e,t){var n=(0,r.useBackend)(t),u=n.act,s=n.data,m=s.skills||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Manage Skills",width:600,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:m.playername,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createVNode)(1,"span",null,e.desc,0,{style:l}),(0,o.createVNode)(1,"br"),!!e.level_based&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{skill_lvl_num:e.lvl_base_num,skill_lvl:e.lvl_base}),(0,o.createVNode)(1,"br")],4),"Total Experience: [",e.value_base," XP]",(0,o.createVNode)(1,"br"),"XP To Next Level:",e.level_based?(0,o.createVNode)(1,"span",null,e.xp_next_lvl_base,0):(0,o.createVNode)(1,"span",null,"[MAXXED]",16,{style:i}),(0,o.createVNode)(1,"br"),e.base_readout,(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.percent_base,color:"good"}),(0,o.createVNode)(1,"br"),!!s.admin&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Adjust Exp",onClick:function(){return u("adj_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Exp",onClick:function(){return u("set_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Level",onClick:function(){return u("set_lvl",{skill:e.path})}}),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"br")],4)]},e.name)}))})})})})};var d=function(e){var t=e.skill_lvl_num,n=e.skill_lvl;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:["Level: [",(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,textColor:"hsl("+50*t+", 50%, 50%)",children:n}),"]"]})}},26487:function(e,t,n){"use strict";t.__esModule=!0,t.TimeFormat=t.SkillStation=t.InsertedSkillchip=t.ImplantedSkillchips=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(5339),l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.skillchip_ready,d=i.slot_use,u=i.slots_used,s=i.slots_max,m=i.implantable_reason,p=i.implantable,C=i.complexity,h=i.skill_name,N=i.skill_desc,V=i.skill_icon,b=i.working;return l?(0,o.createComponentVNode)(2,a.Section,{title:"Inserted Skillchip",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"syringe",disabled:!p||!!b,color:p?"good":"default",onClick:function(){return c("implant")},content:"Implant",tooltip:m}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!!b,onClick:function(){return c("eject")},content:"Eject"})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:2,height:"100%",width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{height:"100%",align:"center",children:(0,o.createComponentVNode)(2,a.Icon,{size:3,name:V})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Skillchip",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Complexity",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"brain",width:"15px",textAlign:"center"})," ",C]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Slot Size",children:(0,o.createComponentVNode)(2,a.Box,{color:u+d>s&&"red",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"save",width:"15px",textAlign:"center"})," ",d]})}),!!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",color:p?"good":"bad",children:m})]})})]})}):!b&&(0,o.createComponentVNode)(2,a.NoticeBox,{info:!0,children:"Please insert a skillchip."})};t.InsertedSkillchip=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.slots_used,d=i.slots_max,u=i.complexity_used,s=i.complexity_max,m=i.working,p=i.current||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Implanted Skillchips",children:[!p.length&&"No skillchips detected.",!!p.length&&(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Chip"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"brain",tooltip:"Complexity",tooltipPosition:"top",content:u+"/"+s})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"save",tooltip:"Slot Size",tooltipPosition:"top",content:l+"/"+d})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"check",tooltip:"Is Active",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"hourglass-half",tooltip:"Cooldown",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"tasks",tooltip:"Actions",tooltipPosition:"top"})})]}),p.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Icon,{textAlign:"center",width:"18px",mr:1,name:e.icon}),e.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:(!e.active?e.complexity+u>s&&"bad":"good")||"grey",textAlign:"center",children:e.complexity}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"good",textAlign:"center",children:e.slot_use}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:e.active?"check":"times",color:e.active?"good":"bad"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.cooldown>0&&Math.ceil(e.cooldown/10)+"s"||"0s"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("remove",{ref:e.ref})},icon:e.removable?"eject":"trash",color:e.removable?"good":"bad",tooltip:e.removable?"Extract":"Destroy",tooltipPosition:"left",disabled:e.cooldown||m}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_activate",{ref:e.ref})},icon:e.active?"check-square-o":"square-o",color:e.active?"good":"default",tooltip:!!e.active_error&&!e.active&&e.active_error||e.active&&"Deactivate"||"Activate",tooltipPosition:"left",disabled:e.cooldown||m||!e.active&&e.complexity+u>s})]})]},e.ref)}))]})]})};t.ImplantedSkillchips=d;var u=function(e,t){var n=e.value,o=(0,i.toFixed)(Math.floor(n/10%60)).padStart(2,"0"),r=(0,i.toFixed)(Math.floor(n/600%60)).padStart(2,"0");return(0,i.toFixed)(Math.floor(n/36e3%24)).padStart(2,"0")+":"+r+":"+o};t.TimeFormat=u;t.SkillStation=function(e,t){var n=(0,r.useBackend)(t).data,i=n.working,s=n.timeleft,m=n.error;return(0,o.createComponentVNode)(2,c.Window,{title:"Skillsoft Station",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:m}),!!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mb:.5,children:"Operation in progress. Please do not leave the chamber."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["Time Left: ",(0,o.createComponentVNode)(2,u,{value:s})]})]})}),(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})}},30649:function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Oxygen",type:"oxyLoss"}];t.Sleeper=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.open,s=d.occupant,m=void 0===s?{}:s,p=d.occupied,C=(d.chems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{width:310,height:465,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:m.name?m.name:"No Occupant",minHeight:"210px",buttons:!!m.stat&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m.statstate,children:m.stat}),children:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,ranges:{good:[50,Infinity],average:[0,50],bad:[-Infinity,0]}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type],minValue:0,maxValue:m.maxHealth,color:"bad"})},e.type)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cells",color:m.cloneLoss?"bad":"good",children:m.cloneLoss?"Damaged":"Healthy"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain",color:m.brainLoss?"bad":"good",children:m.brainLoss?"Abnormal":"Healthy"})]})],4)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medicines",minHeight:"205px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"door-open":"door-closed",content:u?"Open":"Closed",onClick:function(){return l("door")}}),children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,disabled:!p||!e.allowed,width:"140px",onClick:function(){return l("inject",{chem:e.id})}},e.name)}))})]})})}},40026:function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i={Dead:"bad",Unconscious:"average",Conscious:"good"},l={owner:"You Are Here",stranger:"Occupied",available:"Swap"},d=function(e,t){var n=e.body,r=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:n.htmlcolor,children:n.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:l[n.occupied],selected:"owner"===n.occupied,color:"stranger"===n.occupied&&"bad",onClick:function(){return r()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:i[n.status],children:n.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:n.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.area})]})})};t.BodyEntry=d;t.SlimeBodySwapper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.bodies,u=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,d,{body:e,swapFunc:function(){return i("swap",{ref:e.ref})}},e.name)}))})})})}},50793:function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(58734),r=n(45445),a=n(54777),c=n(50930),i=n(33677);t.SmartVend=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Storage",buttons:!!d.isdryer&&(0,o.createComponentVNode)(2,c.Button,{icon:d.drying?"stop":"tint",onClick:function(){return l("Dry")},children:d.drying?"Stop drying":"Dry"}),children:0===d.contents.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:["Unfortunately, this ",d.name," is empty."]})||(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:d.verb?d.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{content:"One",disabled:e.amount<1,onClick:function(){return l("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return l("Release",{name:e.name})}})]})]},t)}))(d.contents)]})})})})}},54555:function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(59576),i=n(33677),l=1e3;t.Smes=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.capacityPercent,m=(u.capacity,u.charge),p=u.inputAttempt,C=u.inputting,h=u.inputLevel,N=u.inputLevelMax,V=u.inputAvailable,b=u.outputAttempt,f=u.outputting,g=u.outputLevel,v=u.outputLevelMax,k=u.outputUsed,x=(s>=100?"good":C&&"average")||"bad",B=(f?"good":m>0&&"average")||"bad";return(0,o.createComponentVNode)(2,i.Window,{width:340,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*s,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:p?"sync-alt":"times",selected:p,onClick:function(){return d("tryinput")},children:p?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:x,children:(s>=100?"Fully Charged":C&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===h,onClick:function(){return d("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===h,onClick:function(){return d("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:h/l,fillValue:V/l,minValue:0,maxValue:N/l,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(e*l,1)},onDrag:function(e,t){return d("input",{target:t*l})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:h===N,onClick:function(){return d("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:h===N,onClick:function(){return d("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:(0,c.formatPower)(V)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:b?"power-off":"times",selected:b,onClick:function(){return d("tryoutput")},children:b?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:B,children:f?"Sending":m>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===g,onClick:function(){return d("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===g,onClick:function(){return d("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:g/l,minValue:0,maxValue:v/l,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(e*l,1)},onDrag:function(e,t){return d("output",{target:t*l})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:g===v,onClick:function(){return d("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:g===v,onClick:function(){return d("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:(0,c.formatPower)(k)})]})})]})})}},76411:function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.SmokeMachine=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.TankContents,u=(l.isTankLoaded,l.TankCurrentVolume),s=l.TankMaxVolume,m=l.active,p=l.setting,C=(l.screen,l.maxSetting),h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return i("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/s,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:u||0})," / "+s]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:p===e,icon:"plus",content:3*e,disabled:h0?"good":"bad",children:h})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:u,children:d+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===C,onClick:function(){return i("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===C,onClick:function(){return i("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===C,disabled:!N,onClick:function(){return i("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===C||1===C)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:s,onDrag:function(e,t){return i("azimuth",{value:t})}}),1===C&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-p-.01,maxValue:p+.01,value:m,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return i("azimuth_rate",{value:t})}}),2===C&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[s+" \xb0"," (auto)"]})]})]})})]})})}},90509:function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.SpaceHeater=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]},children:l.powerLevel+"%"})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(l.targetTemp-l.currentTemp)>50?"bad":Math.abs(l.targetTemp-l.currentTemp)>20?"average":"good",children:[l.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:l.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.targetTemp),width:"65px",unit:"\xb0C",minValue:l.minTemp,maxValue:l.maxTemp,onChange:function(e,t){return i("target",{target:t})}})||l.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:l.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===l.mode,onClick:function(){return i("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===l.mode,onClick:function(){return i("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===l.mode,onClick:function(){return i("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})]})})}},11547:function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.SpawnersMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.spawners||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Spawners Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return i("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return i("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"12px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"12px",children:e.important_info})]},e.name)}))})})})}},39101:function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsoleContent=t.StationAlertConsole=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.StationAlertConsole=function(){return(0,o.createComponentVNode)(2,c.Window,{width:325,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t).data.alarms||[],c=n.Fire||[],i=n.Atmosphere||[],l=n.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===l.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),l.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)};t.StationAlertConsoleContent=i},2086:function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.SuitStorageUnit=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.open,s=l.safeties,m=l.uv_active,p=l.occupied,C=l.suit,h=l.helmet,N=l.mask,V=l.storage;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!(!p||!s)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!u&&(0,o.createComponentVNode)(2,a.Button,{icon:d?"unlock":"lock",content:d?"Unlock":"Lock",onClick:function(){return i("lock")}}),!d&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-out-alt":"sign-in-alt",content:u?"Close":"Open",onClick:function(){return i("door")}})],0),children:d&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||u&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return i("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:C?"square":"square-o",content:C||"Empty",disabled:!C,onClick:function(){return i("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:N?"square":"square-o",content:N||"Empty",disabled:!N,onClick:function(){return i("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:V?"square":"square-o",content:V||"Empty",disabled:!V,onClick:function(){return i("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:p&&s,textAlign:"center",onClick:function(){return i("uv")}})})]})})}},43366:function(e,t,n){"use strict";t.__esModule=!0,t.SyndPane=t.SyndContractorContent=t.SyndContractor=t.StatusPane=t.FakeTerminal=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}var l=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n);var c=r.prototype;return c.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},c.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},c.componentWillUnmount=function(){clearTimeout(this.timer)},c.render=function(){return(0,o.createComponentVNode)(2,a.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},r}(o.Component);t.FakeTerminal=l;t.SyndContractor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:500,height:600,theme:"syndicate",resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,d=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"],u=!!c.error&&(0,o.createComponentVNode)(2,a.Modal,{backgroundColor:"red",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:(0,o.createComponentVNode)(2,a.Icon,{size:4,name:"exclamation-triangle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,grow:1,textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{width:"260px",textAlign:"left",minHeight:"80px",children:c.error}),(0,o.createComponentVNode)(2,a.Button,{content:"Dismiss",onClick:function(){return i("PRG_clear_error")}})]})]})});return c.logged_in?c.logged_in&&c.first_load?(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"525px",children:(0,o.createComponentVNode)(2,l,{allMessages:d,finishedTimeout:3e3,onFinished:function(){return i("PRG_set_first_load_finished")}})}):c.info_screen?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"500px",children:(0,o.createComponentVNode)(2,l,{allMessages:["SyndTract v2.0","","We've identified potentional high-value targets that are","currently assigned to your mission area. They are believed","to hold valuable information which could be of immediate","importance to our organisation.","","Listed below are all of the contracts available to you. You","are to bring the specified target to the designated","drop-off, and contact us via this uplink. We will send","a specialised extraction unit to put the body into.","","We want targets alive - but we will sometimes pay slight","amounts if they're not, you just won't recieve the shown","bonus. You can redeem your payment through this uplink in","the form of raw telecrystals, which can be put into your","regular Syndicate uplink to purchase whatever you may need.","We provide you with these crystals the moment you send the","target up to us, which can be collected at anytime through","this system.","","Targets extracted will be ransomed back to the station once","their use to us is fulfilled, with us providing you a small","percentage cut. You may want to be mindful of them","identifying you when they come back. We provide you with","a standard contractor loadout, which will help cover your","identity."],linesPerSecond:10})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"CONTINUE",color:"transparent",textAlign:"center",onClick:function(){return i("PRG_toggle_info")}})],4):(0,o.createFragment)([u,(0,o.createComponentVNode)(2,s)],0):(0,o.createComponentVNode)(2,a.Section,{minHeight:"525px",children:[(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"REGISTER USER",color:"transparent",onClick:function(){return i("PRG_login")}})}),!!c.error&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c.error})]})};t.SyndContractorContent=d;var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createFragment)([(0,o.createTextVNode)("Contractor Status"),(0,o.createComponentVNode)(2,a.Button,{content:"View Information Again",color:"transparent",mb:0,ml:1,onClick:function(){return c("PRG_toggle_info")}})],4),buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,mr:1,children:[i.contract_rep," Rep"]}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.85,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Available",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Claim",disabled:i.redeemable_tc<=0,onClick:function(){return c("PRG_redeem_TC")}}),children:i.redeemable_tc}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Earned",children:i.earned_tc})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contracts Completed",children:i.contracts_completed}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Status",children:"ACTIVE"})]})})]})})};t.StatusPane=u;var s=function(e,t){var n=(0,r.useLocalState)(t,"tab",1),c=n[0],i=n[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,u,{state:e.state}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return i(1)},children:"Contracts"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,onClick:function(){return i(2)},children:"Hub"})]}),1===c&&(0,o.createComponentVNode)(2,m),2===c&&(0,o.createComponentVNode)(2,p)],0)};t.SyndPane=s;var m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contracts||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Available Contracts",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Call Extraction",disabled:!i.ongoing_contract||i.extraction_enroute,onClick:function(){return c("PRG_call_extraction")}}),children:l.map((function(e){if(!i.ongoing_contract||2===e.status){var t=e.status>1;if(!(e.status>=5))return(0,o.createComponentVNode)(2,a.Section,{title:e.target?e.target+" ("+e.target_rank+")":"Invalid Target",level:t?1:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.payout," (+",e.payout_bonus,") TC"]}),(0,o.createComponentVNode)(2,a.Button,{content:t?"Abort":"Accept",disabled:e.extraction_enroute,color:t&&"bad",onClick:function(){return c("PRG_contract"+(t?"_abort":"-accept"),{contract_id:e.id})}})],4),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.message}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,children:"Dropoff Location:"}),(0,o.createComponentVNode)(2,a.Box,{children:e.dropoff})]})]})},e.target)}}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Dropoff Locator",textAlign:"center",opacity:i.ongoing_contract?100:0,children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:i.dropoff_direction})})],4)},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contractor_hub_items||[];return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){var t=e.cost?e.cost+" Rep":"FREE",n=-1!==e.limited;return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" - "+t,level:2,buttons:(0,o.createFragment)([n&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.limited," remaining"]}),(0,o.createComponentVNode)(2,a.Button,{content:"Purchase",disabled:i.contract_rep0&&g.flatMap((function(e){return e.items||[]})).filter(y).filter((function(e,t){return t<25}))||(null==(l=g.find((function(e){return e.name===w})))?void 0:l.items)||[];return(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:s>0?"good":"bad",children:[(0,i.formatMoney)(s)," ",p]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,c.Input,{autoFocus:!0,value:k,onInput:function(e,t){return x(t)},mx:1}),(0,o.createComponentVNode)(2,c.Button,{icon:V?"list":"info",content:V?"Compact":"Detailed",onClick:function(){return h("compact_toggle")}}),!!b&&(0,o.createComponentVNode)(2,c.Button,{icon:"lock",content:"Lock",onClick:function(){return h("lock")}})],0),children:(0,o.createComponentVNode)(2,c.Flex,{children:[0===k.length&&(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:g.map((function(e){var t;return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===w,onClick:function(){return _(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:[0===L.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:0===k.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,u,{compactMode:k.length>0||V,currencyAmount:s,currencySymbol:p,items:L})]})]})})};t.GenericUplink=d;var u=function(e,t){var n=e.compactMode,l=e.currencyAmount,d=e.currencySymbol,u=(0,a.useBackend)(t).act,s=(0,a.useLocalState)(t,"hoveredItem",{}),m=s[0],p=s[1],C=m&&m.cost||0,h=e.items.map((function(e){var t=m&&m.name!==e.name,n=l-Cl.user.cash),content:l.forceFree||0===d.price?"FREE":d.price+" caps",onClick:function(){return i("vend",{ref:d.ref})}})})]})};t.Vending=function(e,t){var n,r=(0,a.useBackend)(t),d=r.act,u=r.data,s=(u.user,u.onstation,u.product_records),m=void 0===s?[]:s,p=u.coin_records,C=void 0===p?[]:p,h=u.hidden_records,N=void 0===h?[]:h,V=u.stock,b=u.insertedCaps,f=!1;return u.vending_machine_input?(n=u.vending_machine_input||[],f=!0):(n=[].concat(m,C),u.extended_inventory&&(n=[].concat(n,N))),n=n.filter((function(e){return!!e})),(0,o.createComponentVNode)(2,i.Window,{title:"Vending Machine",width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[!u.forceFree&&(0,o.createVNode)(1,"section",null,(0,o.createVNode)(1,"box",null,[(0,o.createTextVNode)("Caps inserted: "),b,(0,o.createTextVNode)(" "),(0,o.createComponentVNode)(2,c.Button,{fluid:!1,content:"Eject",onClick:function(){return d("ejectCaps")}})],0),2,{title:"Welcome User!"}),(0,o.createComponentVNode)(2,c.Section,{title:"Products",children:(0,o.createComponentVNode)(2,c.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{custom:f,product:e,productStock:V[e.name]},e.name)}))})})]})})}},71950:function(e,t,n){"use strict";t.__esModule=!0,t.VorePanel=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=[null,"average","bad"],l={Hold:null,Dragon:"blue",Digest:"red",Absorb:"purple",Unabsorb:"purple"},d={Hold:"being held.",Digest:"being digested.",Absorb:"being absorbed.",Unabsorb:"being unabsorbed.",Dragon:"being digested by a powerful creature."};t.VorePanel=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:700,height:660,theme:"abstract",resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{overflow:"auto",children:[l.unsaved_changes&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"90%",children:"Warning: Unsaved Changes!"}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Save Prefs",icon:"save",onClick:function(){return i("saveprefs")}})})]})})||null,(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s),(0,o.createComponentVNode)(2,C)]})})};var u=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.inside),i=c.absorbed,u=c.belly_name,s=c.belly_mode,m=c.desc,C=c.pred,h=c.contents,N=c.ref;return u?(0,o.createComponentVNode)(2,a.Section,{title:"Inside",children:[(0,o.createComponentVNode)(2,a.Box,{color:"green",inline:!0,children:["You are currently ",i?"absorbed into":"inside"]}),"\xa0",(0,o.createComponentVNode)(2,a.Box,{color:"yellow",inline:!0,children:[C,"'s"]}),"\xa0",(0,o.createComponentVNode)(2,a.Box,{color:"red",inline:!0,children:u}),"\xa0",(0,o.createComponentVNode)(2,a.Box,{color:"yellow",inline:!0,children:"and you are"}),"\xa0",(0,o.createComponentVNode)(2,a.Box,{color:l[s],inline:!0,children:d[s]}),"\xa0",(0,o.createComponentVNode)(2,a.Box,{color:"label",children:m}),h.length&&(0,o.createComponentVNode)(2,a.Collapsible,{title:"Belly Contents",children:(0,o.createComponentVNode)(2,p,{contents:h,belly:N})})||"There is nothing else around you."]}):(0,o.createComponentVNode)(2,a.Section,{title:"Inside",children:"You aren't inside anyone."})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.our_bellies,u=i.selected;return(0,o.createComponentVNode)(2,a.Section,{title:"My Bellies",children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[d.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e.selected,textColor:l[e.digest_mode],onClick:function(){return c("bellypick",{bellypick:e.ref})},children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,textColor:e.selected&&l[e.digest_mode]||null,children:[e.name," (",e.contents,")"]})},e.name)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{onClick:function(){return c("newbelly")},children:["New",(0,o.createComponentVNode)(2,a.Icon,{name:"plus",ml:.5})]})]}),u&&(0,o.createComponentVNode)(2,m,{belly:u})]})},m=function(e,t){var n=(0,r.useBackend)(t).act,c=e.belly,i=c.belly_name,d=c.is_wet,u=c.wet_loop,s=c.mode,m=c.verb,C=c.desc,h=c.sound,N=c.release_sound,V=c.can_taste,b=c.bulge_size,f=c.digestion_brute,g=c.digestion_burn,v=c.escapable,k=c.interacts,x=c.hork_trash,B=c.contents,w=(0,r.useLocalState)(t,"tabIndex",0),_=w[0],y=w[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:0===_,onClick:function(){return y(0)},children:"Controls"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===_,onClick:function(){return y(1)},children:"Options"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===_,onClick:function(){return y(2)},children:["Contents (",B.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:3===_,onClick:function(){return y(3)},children:"Interactions"})]}),0===_&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",tooltipPosition:"left",tooltip:"Move this belly tab left.",onClick:function(){return n("move_belly",{dir:-1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-right",tooltipPosition:"left",tooltip:"Move this belly tab right.",onClick:function(){return n("move_belly",{dir:1})}})],4),children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_name"})},content:i})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,a.Button,{color:l[s],onClick:function(){return n("set_attribute",{attribute:"b_mode"})},content:s})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Flavor Text",buttons:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_desc"})},icon:"pen"}),children:C}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Vore Verb",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_verb"})},content:m})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Belly Messages",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_msgs",msgtype:"dmp"})},content:"Digest Message (to prey)"}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_msgs",msgtype:"dmo"})},content:"Digest Message (to you)"}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_msgs",msgtype:"smo"})},content:"Struggle Message (outside)"}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_msgs",msgtype:"smi"})},content:"Struggle Message (inside)"}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_msgs",msgtype:"em"})},content:"Examine Message (when full)"}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_msgs",msgtype:"tr"})},content:"Eject Trash Message (outside)"}),(0,o.createComponentVNode)(2,a.Button,{color:"red",onClick:function(){return n("set_attribute",{attribute:"b_msgs",msgtype:"reset"})},content:"Reset Messages"})]})]})||1===_&&(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",grow:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Can Taste",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_tastes"})},icon:V?"toggle-on":"toggle-off",selected:V,content:V?"Yes":"No"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Fleshy Belly",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_wetness"})},icon:d?"toggle-on":"toggle-off",selected:d,content:d?"Yes":"No"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Internal Loop",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_wetloop"})},icon:u?"toggle-on":"toggle-off",selected:u,content:u?"Yes":"No"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject Trash",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_hork_trash"})},icon:x?"toggle-on":"toggle-off",selected:x,content:x?"Yes":"No"})})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",grow:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Vore Sound",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_sound"})},content:h}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_soundtest"})},icon:"volume-up"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Release Sound",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_release"})},content:N}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_releasesoundtest"})},icon:"volume-up"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Examine Size",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_bulge_size"})},content:100*b+"%"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Digestion Damage",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_set_brute_damage"})},content:f+" Brute"}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_set_burn_damage"})},content:g+" Burn"})]})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"100%",mtOptions:1,children:(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,icon:"exclamation-triangle",confirmIcon:"trash",color:"red",content:"Delete Belly",confirmContent:"This is irreversable!",onClick:function(){return n("set_attribute",{attribute:"b_del"})}})})]})||2===_&&(0,o.createComponentVNode)(2,p,{outside:!0,contents:B})||3===_&&(0,o.createComponentVNode)(2,a.Section,{title:"Belly Interactions",buttons:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return n("set_attribute",{attribute:"b_escapable"})},icon:v?"toggle-on":"toggle-off",selected:v,content:v?"Interactions On":"Interactions Off"}),children:v?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Escape Chance",children:(0,o.createComponentVNode)(2,a.Button,{content:k.escapechance+"%",onClick:function(){return n("set_attribute",{attribute:"b_escapechance"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Escape Time",children:(0,o.createComponentVNode)(2,a.Button,{content:k.escapetime/10+"s",onClick:function(){return n("set_attribute",{attribute:"b_escapetime"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Chance",children:(0,o.createComponentVNode)(2,a.Button,{content:k.transferchance+"%",onClick:function(){return n("set_attribute",{attribute:"b_transferchance"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Location",children:(0,o.createComponentVNode)(2,a.Button,{content:k.transferlocation?k.transferlocation:"Disabled",onClick:function(){return n("set_attribute",{attribute:"b_transferlocation"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Digest Chance",children:(0,o.createComponentVNode)(2,a.Button,{content:k.digestchance+"%",onClick:function(){return n("set_attribute",{attribute:"b_digestchance"})}})})]}):"These options only display while interactions are turned on."})||"Error"],0)},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data.show_pictures,d=e.contents,u=e.belly,s=e.outside,m=void 0!==s&&s;return(0,o.createFragment)([m&&(0,o.createComponentVNode)(2,a.Button,{textAlign:"center",fluid:!0,mb:1,onClick:function(){return c("pick_from_outside",{pickall:!0})},children:"All"})||null,l&&(0,o.createComponentVNode)(2,a.Flex,{wrap:"wrap",justify:"center",align:"center",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"33%",children:[(0,o.createComponentVNode)(2,a.Button,{width:"64px",color:e.absorbed?"purple":i[e.stat],style:{"vertical-align":"middle","margin-right":"5px","border-radius":"20px"},onClick:function(){return c(e.outside?"pick_from_outside":"pick_from_inside",{pick:e.ref,belly:u})},children:(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64, "+e.icon,width:"64px",height:"64px",style:{"-ms-interpolation-mode":"nearest-neighbor","margin-left":"-5px"}})}),e.name]},e.name)}))})||(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:-1,mb:-1,color:e.absorbed?"purple":i[e.stat],onClick:function(){return c(e.outside?"pick_from_outside":"pick_from_inside",{pick:e.ref,belly:u})},children:"Interact"})},e.ref)}))})],0)},C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.prefs,d=(l.allow_dog_borgs,l.allow_eat_noises),u=l.allow_digestion_noises,s=l.allow_digestion_damage,m=l.allow_digestion_death,p=(l.allow_absorbtion,l.allow_healbelly_healing,l.allow_vore_messages),C=l.allow_death_messages,h=l.allow_being_prey,N=l.allow_being_fed_prey,V=l.allow_seeing_belly_descs,b=l.allow_trash_messages,f=l.master_vore_switch,g=(l.allow_being_sniffed,l.digestable,l.devourable,l.feeding,l.absorbable,l.allowmobvore,l.vore_sounds,l.digestion_sounds,l.lickable,l.smellable,i.show_pictures);return(0,o.createComponentVNode)(2,a.Section,{title:"Preferences",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eye",selected:g,onClick:function(){return c("show_pictures")},children:["Contents Preference: ",g?"Show Pictures":"Show List"]}),children:[(0,o.createComponentVNode)(2,a.Flex,{spacing:1,wrap:"wrap",justify:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"99%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("master_vore_switch")},icon:f?"toggle-on":"toggle-off",selected:f,fluid:!0,tooltip:"This button is the master vore preferences switch. If this is off, all vore preferences will be treated as disallowed, equivalent to setting all of the rest of the buttons to off. Turning it on won't enable any other preferences, but it will permit allowed vore preferences to be checked. "+(f?"Click here to disable all vore for you.":"Click here to allow certain vore for you."),content:f?"Master Vore Preference Switch: ON":"Master Vore Preference Switch: OFF"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_devour")},icon:h?"toggle-on":"toggle-off",selected:h,fluid:!0,tooltip:"This button will toggle whether or not you can be prey. This includes being eaten, devoured, or otherwise stuffed into a vorebelly. "+(h?"Click here to prevent being prey.":"Click here to allow being prey."),content:h?"You can be prey":"You can not be prey"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_feeding")},icon:N?"toggle-on":"toggle-off",selected:N,fluid:!0,tooltip:"This button will toggle whether or not others can feed you prey. This includes things like others climbing into your mouth, someone shoving another person into your bluespace purse, etc. "+(N?"Click here to prevent others from feeding you prey.":"Click here to allow others to feed you prey."),content:N?"You can be fed prey":"You can not be fed prey"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_digestion_damage")},icon:s?"toggle-on":"toggle-off",selected:s,fluid:!0,tooltip:"This button will toggle whether or not digestive bellies will hurt you. Do note, this only applies to damage caused by the belly, damage from other sources, including damage transfered from damage to whoeverever you're inside. "+(s?"Click here to prevent being damaged by digestion.":"Click here to allow being damaged by digestion."),content:s?"Digestion can hurt you":"Digestion can not hurt you"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_digestion_death")},icon:m?"toggle-on":"toggle-off",selected:m,fluid:!0,tooltip:"This button will toggle whether or not digestive bellies will kill you. Do note, digestive bellies will still hurt you if you allow damage, just that the damage caused by the belly will not finish you off. "+(m?"Click here to prevent digestion from killing you.":"Click here to allow digestion to kill you."),tooltipPosition:"bottom-start",content:m?"Digestion can kill you":"Digestion can not kill you"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_eat_noises")},icon:d?"toggle-on":"toggle-off",selected:d,fluid:!0,tooltip:"This button will toggle whether or not you will hear eating sounds. Do note, this currently only applies to eating sounds associated with vore. Regular eating sounds are not affected. "+(d?"Click here to make eating silent.":"Click here to make eating loud."),tooltipPosition:"bottom-start",content:d?"Eating is loud":"Eating is quiet"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_digestion_noises")},icon:u?"toggle-on":"toggle-off",selected:u,fluid:!0,tooltip:"This button will toggle whether or not you will hear the sounds associated with being inside of a stomach. This mostly includes the squishy-heartbeat sound loop. If you turn this off while you're currently hearing that, give it a moment, it should go away on its own."+(u?"Click here to make wet bellies silent.":"Click here to make wet bellies squelchy."),tooltipPosition:"bottom-start",content:u?"Digestion is loud":"Digestion is quiet"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_vore_messages")},icon:p?"toggle-on":"toggle-off",selected:p,fluid:!0,tooltip:"Toggles whether or not you can see vore-related messages. Note this only applies to messages generated by the game, anything said by players will still be visible. "+(p?"Click here to turn off seeing vore-related messages.":"Click here to turn on seeing vore-related messages."),tooltipPosition:"bottom-start",content:p?"Vore messages: Visible":"Vore messages: Hidden"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_death_messages")},icon:C?"toggle-on":"toggle-off",selected:C,fluid:!0,tooltip:"Toggles whether or not you can see vore-related messages about death. Note this only applies to messages generated by the game, anything said by players will still be visible. "+(C?"Click here to turn off seeing vore-related death messages.":"Click here to turn on seeing vore-related death messages."),tooltipPosition:"bottom-start",content:C?"Vore death: Visible":"Vore death: Hidden"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_seeing_belly_descs")},icon:V?"toggle-on":"toggle-off",selected:V,fluid:!0,tooltip:"Toggles whether or not you can see others' belly descriptions, when visible. "+(V?"Click here to turn off seeing belly descriptions.":"Click here to turn on seeing belly descriptions."),tooltipPosition:"bottom-start",content:V?"Other bellies: Visible":"Other bellies: Hidden"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_seeing_people_spit_up_trash")},icon:b?"toggle-on":"toggle-off",selected:b,fluid:!0,tooltip:"Toggles whether or not you can see when other people spit up trash. "+(b?"Click here to turn off seeing people spit up trash.":"Click here to turn on seeing people spit up trash."),tooltipPosition:"bottom-start",content:b?"Trash messages: Visible":"Trash messages: Hidden"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Taste",icon:"grin-tongue",onClick:function(){return c("setflavor")}})})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Save Prefs",icon:"save",onClick:function(){return c("saveprefs")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{basis:"49.5%",grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Reload Prefs",icon:"undo",onClick:function(){return c("reloadprefs")}})})]})})]})}},72010:function(e,t,n){"use strict";t.__esModule=!0,t.VrSleeper=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.VrSleeper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:340,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!l.emagged&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Safety restraints disabled."})}),(0,o.createComponentVNode)(2,a.Section,{title:"Virtual Avatar",children:l.vr_avatar?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.vr_avatar.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l.vr_avatar.status}),!!l.vr_avatar&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.vr_avatar.health/l.vr_avatar.maxhealth,ranges:{good:[.9,Infinity],average:[.7,.8],bad:[-Infinity,.5]}})})]}):"No Virtual Avatar detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"VR Commands",children:[(0,o.createComponentVNode)(2,a.Button,{icon:l.toggle_open?"unlock":"lock",disabled:l.stored1?(_*=Number(k)).toFixed(1)+" = ("+B+"x"+k+")x"+x:_.toFixed(1)+" = "+B+" x "+x}else n=N+"x";return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"Ranged Data",tip:l,big:1}),children:[(0,o.createComponentVNode)(2,a.Table,{px:"1rem",className:"candystripe",width:"100%",children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",width:"35%",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Damage: ",tip:"Total Damage = (Projectile Base Damage * Pellets) * Gun Damage Multiplier."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:n})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",width:"35%",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"AP Mult: ",tip:"Multiplier to the AP on any projectile shot."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[b,"x"]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",width:"35%",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Base Spread: ",tip:"Inaccuracy inherent to the gun, in degrees from center."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:["\xb1 ",s,"\xb0"]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",width:"35%",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Fire Rate: ",tip:"Rounds per minute."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:f})]})]}),(0,o.createComponentVNode)(2,a.Box,{width:"100%",height:"fit-content",textAlign:"center",children:(0,o.createComponentVNode)(2,V,{name:g,tip:v,bigger:1})})]})};t.RangedInfo=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.gun_name,l=c.gun_melee,d=c.gun_melee_wielded,u=c.gun_armor_penetration||0;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"Melee Data",tip:i,big:1}),children:(0,o.createComponentVNode)(2,a.Table,{px:"1rem",className:"candystripe",width:"100%",children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",width:"35%",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"1H DMG: ",tip:"Damage when wielded in one hand."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:l})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",width:"35%",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"2H DMG: ",tip:"Damage when wielded in two hands."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:d})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",width:"35%",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"AP: ",tip:"Amount of Damage Resistance that this will bypass."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:u.toFixed(2)})]})]})})};t.MeleeInfo=l;var d=function(e,t){var n=(0,r.useBackend)(t);n.act;return n.data.has_magazine?(0,o.createComponentVNode)(2,u):(0,o.createComponentVNode)(2,s)};t.MagazineInfo=d;var u=function(e,t){var n,c,i,l,d,u=(0,r.useBackend)(t),s=(u.act,u.data),m=s.magazine_name,p=s.magazine_calibers,C=s.shots_remaining,h=s.shots_max,N=s.gun_chambered,b=s.cockable,f=s.cocked,g=N.casing_name,v=N.casing_caliber;(n=N.casing_name?(0,o.createComponentVNode)(2,V,{name:g,tip:v}):(0,o.createComponentVNode)(2,V,{name:"Empty",tip:"Bullet goes here."}),b)&&(f?N?(i="Cocked",l="Gun is cocked and ready to fire!",d="green"):(i="Cocked",l="Gun is cocked, but still needs something to fire!",d="green"):(i="Uncocked",l="This gun needs to be cocked before you can shoot it!",d="red"),(0,o.createComponentVNode)(2,V,{name:i,tip:l}),c=(0,o.createComponentVNode)(2,a.Box,{color:d}));var k="accepts: "+p;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"Ammunition",tip:k,big:1}),children:[(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:(0,o.createComponentVNode)(2,V,{name:m,tip:k,big:1})}),c,n]}),(0,o.createComponentVNode)(2,a.ProgressBar,{value:C,maxValue:h,children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",children:[C," / ",h]})})]})};t.MagazineInfoLoaded=u;var s=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,"accepts: "+n.data.accepted_magazines);return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"No Magazine",tip:"This weapon doesn't have a magazine!",big:1}),children:(0,o.createComponentVNode)(2,V,{name:"Insert one!",tip:c})})};t.MagazineInfoEmpty=s;var m=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.gun_chambered,l=c.gun_is_chambered,d=c.gun_chambered_loaded;if(!l)return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"NOT CHAMBERED",tip:"404: Ammo not found.",big:1}),children:(0,o.createComponentVNode)(2,V,{name:"No Data Available!",tip:"This gun doesn't have anything loded!"})});var u=i.casing_name,s=i.casing_caliber,m=i.casing_pellets,p=i.casing_variance,C=i.casing_fire_power,h=i.casing_damage_threshold_penetration,b=(i.projectile_name,i.projectile_damage),f=i.projectile_damage_total,g=i.projectile_damage_type,v=i.projectile_flag,k=i.projectile_stamina,x=i.projectile_recoil,B=i.projectile_hitscan,w=i.projectile_range,_=i.projectile_supereffective_damage,y=i.projectile_supereffective_faction,L=i.projectile_wound_bonus,S=i.projectile_sharpness,I=i.projectile_spread,T=i.projectile_armor_penetration,A=i.projectile_speed_unit,P=i.projectile_speed_unit_words,F=i.projectile_speed,M="It is "+s+" and shoots "+u+"!";if(!d)return M+=" At least it would if it wasn't empty.",(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:u,tip:M,big:1}),children:(0,o.createComponentVNode)(2,V,{name:"No Data Available!",tip:"This casing is empty!"})});var R=F,D=P,j=A;B&&(R="\u221e",D="Fast",j="Hitscan!");var W=b,E=f,O=g,z=v,G=(0,o.createComponentVNode)(2,N,{type:O,armor:z}),H=(0,o.createComponentVNode)(2,V,{name:W,tip:E});return m>1&&(H=H+"x"+m),(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:u,tip:M,big:1}),children:(0,o.createComponentVNode)(2,a.Table,{px:"1rem",className:"candystripe",width:"100%",children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",width:"35%",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Damage:",tip:"Base damage."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[H," ",G]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Stamina:",tip:"Base stamina (non-lethal) damage."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[k," ",(0,o.createComponentVNode)(2,V,{name:"R3Bs",tip:"Rubber Beany Baby Bags (at 200 meters)",fade:1})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Spread",tip:"Base inaccuracy in degrees from straight ahead, before recoil is factored in."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:["\xb1 ",Number(I)+Number(p),"\xb0"]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Recoil:",tip:"Base recoil applied to the user when fired, before the gun's modifiers are factored in."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[x," ",(0,o.createComponentVNode)(2,V,{name:"RIF",tip:"Recoil Impulse Factor",fade:1})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Speed:",tip:"How fast the projectile moves."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[R," ",(0,o.createComponentVNode)(2,V,{name:j,tip:D,fade:1})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"DR Pierce:",tip:"Amount of armor damage resistance (percent reduction) it ignores on the target."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[T," ",(0,o.createComponentVNode)(2,V,{name:"ABR",tip:"Armor Bypass Ratio",fade:1})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"DT Pierce:",tip:"Points of armor damage threshold (flat reduction) it ignores on the target."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[h," ",(0,o.createComponentVNode)(2,V,{name:"mmNS",tip:"Millimeters of Nash Steel",fade:1})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Range:",tip:"Max distance in tiles this projectile can travel."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[w," ",(0,o.createComponentVNode)(2,V,{name:"ftm",tip:"Fathoms",fade:1})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Firepower",tip:"Explosive force imparted to the gun. Mostly relevant to improvised and garbage guns."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[C," ",(0,o.createComponentVNode)(2,V,{name:"dK",tip:"deciKellies",fade:1})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Wound",tip:"Amount of extra wounding damage applied to a non-simple target (Anything that can have underwear)."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[L," ",(0,o.createComponentVNode)(2,V,{name:"S-M",tip:"Suture-Meters",fade:1})]})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Sharpness",tip:"Type of wound caused when enough damage is applied to a non-simple target (Anything that can wear a scarf)."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:S})]}),!!_&&!!y&&(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,textAlign:"right",color:"label",children:(0,o.createComponentVNode)(2,V,{name:"Supereffective",tip:"Extra damage caused to specific kinds of targets. Is always brute."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,V,{name:_,tip:"Effective against: "+y})})]})]})})};t.ProjectileInfo=m;var p=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),i=c.unmodded_recoil_unwielded,l=c.modded_recoil_unwielded,d=c.unmodded_recoil_wielded,u=c.modded_recoil_wielded,s=c.gun_recoil_scoot_title,m=c.gun_recoil_scoot_stats,p=s;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"Recoil Multipliers",tip:"These multiply the shot projectile's recoil calculations, based on whether you're wielding the gun or not. The higher the number, the more recoil you'll get. The recoil is calculated by multiplying the recoil of the projectile by the recoil of the gun.",big:1}),width:"100%",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Table,{width:"100%",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"25%",bold:1,children:(0,o.createComponentVNode)(2,V,{name:"1-HAND",tip:"Unwielded recoil multipliers."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createVNode)(1,"hr")})]}),(0,o.createComponentVNode)(2,a.Table.Row,{pb:"1em",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,V,{name:"Base",tip:"Unwielded recoil multipliers, before attachments are factored in."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i,maxValue:2,ranges:{good:[-Infinity,.9],average:[.9,1.7],bad:[1.7,Infinity]},children:(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:[i,"x"]})})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,V,{name:"Modded",tip:"Unwielded recoil multipliers, after attachments are factored in."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l,maxValue:2,ranges:{good:[-Infinity,.9],average:[.9,1.7],bad:[1.7,Infinity]},children:(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:[l,"x"]})})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createVNode)(1,"br")}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createVNode)(1,"br")})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"25%",bold:1,children:(0,o.createComponentVNode)(2,V,{name:"2-HAND",tip:"Wielded recoil multipliers."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createVNode)(1,"hr")})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,V,{name:"Base",tip:"Wielded recoil multipliers, before attachments are factored in."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d,maxValue:2,ranges:{good:[-Infinity,.9],average:[.9,1.7],bad:[1.7,Infinity]},children:(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:[d,"x"]})})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,V,{name:"Modded",tip:"Wielded recoil multipliers, after attachments are factored in."})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u,maxValue:2,ranges:{good:[-Infinity,.9],average:[.9,1.7],bad:[1.7,Infinity]},children:(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:[u,"x"]})})})]})]}),(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,V,{name:p,tip:m})})]})},C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.firemode_info;if(!i.firemode_count)return(0,o.createComponentVNode)(2,a.Section,{title:"Firemodes",children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No firemodes! This is probably a bug! Uh oh~"})});return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"Firemodes",tip:"Firemodes are different ways to fire your gun. They can be switched between by clicking on them! The current firemode is highlighted in green.",big:1}),children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name,color:e.current?"green":null,tooltip:e.desc,tooltipPosition:"bottom",tooltipStyle:"max-width: 300px",onClick:e.current?null:function(){return c("firemode",{firemode:e.index})}})},e.index)}))})})},h=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.attachments,l="Attachments are things you can add to your gun to make it better*! They can be attached and detached by clicking on them.";return i.length?(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"Attachments",tip:l,big:1}),children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Stack.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{content:e.name,tooltip:e.desc,tooltipPosition:"bottom",tooltipStyle:"max-width: 300px",onClick:function(){return c("ExamineAttachment",{AttachmentID:e.attachment_index})}})},e.name)}))})}):(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,V,{name:"Attachments",tip:l,big:1}),children:(0,o.createComponentVNode)(2,V,{name:"No attachments!",tip:"Vanilla's a good flavor too."})})},N=function(e){var t,n,r=e.type,c=e.armor,i="Deals ",l="Reduced by";switch(r){case"brute":t="wrench",i+="Brute";break;case"fire":t="fire",i+="Burn";break;case"tox":t="biohazard",i+="Toxin";break;case"oxy":t="lungs",i+="Oxy";break;case"clone":t="user",i+="Clone";break;case"stamina":t="bed",i+="Stamina";break;case"brain":t="brain",i+="Brain";break;default:t="question",i+="Unknown"}switch(c){case"melee":n="wrench",l+="Melee";break;case"bullet":n="bullseye",l+="Bullet";break;case"laser":n="lightbulb",l+="Laser";break;case"energy":n="bolt",l+="Energy";break;case"bomb":n="bomb",l+="Bomb";break;case"bio":n="biohazard",l+="Bio";break;case"rad":n="radiation",l+="Rad";break;default:n="question",l+="Unknown"}return i+=" damage.",l+=" armor.",(0,o.createFragment)([(0,o.createComponentVNode)(2,V,{name:(0,o.createComponentVNode)(2,a.Icon,{name:t}),tip:i}),(0,o.createComponentVNode)(2,V,{name:(0,o.createComponentVNode)(2,a.Icon,{name:n}),tip:l})],4)},V=function(e){var t=e.name,n=e.tip,r=e.big,c=e.fade?.5:1,i=e.bigger?"1.5em":"1em";return r?(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:i,textAlign:"center",fluid:!0,children:(0,o.createComponentVNode)(2,a.Button,{opacity:c,backgroundColor:"transparent",px:0,py:0,content:t,tooltip:n,tooltipPosition:"bottom"})}):(0,o.createComponentVNode)(2,a.Button,{opacity:c,backgroundColor:"transparent",px:0,py:0,content:t,tooltip:n,tooltipPosition:"bottom"})}},94223:function(e,t,n){"use strict";t.__esModule=!0,t.WhoAdminPanel=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677),i=n(7229),l={WhoIsDummy:!0};t.WhoAdminPanel=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data),u=i.UserName,m=i.AllWhos||[],p=(0,r.useLocalState)(t,"SelectedWho",l),C=p[0],h=(p[1],(0,r.useLocalState)(t,"SearchTerm","")),N=h[0];h[1],N&&m[0];return(0,o.createComponentVNode)(2,c.Window,{theme:"ntos",width:640,height:768,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Stack,{fill:!0,vertical:!0,children:[(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Section,{width:"100%",title:"Welcome, "+u+"!",buttons:(0,o.createComponentVNode)(2,d)})}),(0,o.createComponentVNode)(2,a.Stack.Item,{grow:1,basis:1,children:(0,o.createComponentVNode)(2,a.Section,{fill:!0,width:"100%",scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:0,children:(0,o.createComponentVNode)(2,WhoWhos)}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,s)})]})})}),(0,o.createComponentVNode)(2,a.Stack.Item,{children:(0,o.createComponentVNode)(2,a.Box)})]})})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.DP),l=(0,r.useLocalState)(t,"SearchTerm",""),d=l[0],s=(l[1],c?"Dragon Pussy":"Find-A-Who 0.1b (tm)");return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:"fit-content",children:(0,o.createComponentVNode)(2,a.Input,{width:"15em",placeholder:s,value:d,onInput:function(e,n){u((0,i.sanitizeText)(n),t)}})})},u=function(e,t){var n=(0,r.useBackend)(t),o=(n.act,n.data,(0,r.useLocalState)(t,"SearchTerm","")),a=o[0],c=o[1],i=(0,r.useLocalState)(t,"SelectedWho",l),d=(i[0],i[1]);a.length>0&&d(l),c(e)},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=(n.data,(0,r.useLocalState)(t,"SelectedWho",l)),d=i[0],u=i[1];if(d.WhoIsDummy)return(0,o.createComponentVNode)(2,a.NoticeBox,{active:!0,children:'"Select a boi to view their info!"'});var s=Object.assign({},d);return delete s.WhoCkey,(0,o.createComponentVNode)(2,a.Section,{fill:!0,title:d.WhoCkey,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",onClick:function(){u(l),setSearchTerm("")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:Object.keys(s).map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e,children:s[e].RealVal},e),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Custom "+e,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"row",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,fill:!0,content:s[e].CustVal,icon:"pencil-alt",defaultValue:"",currentValue:s[e].CustVal,onCommit:function(){c("SetValue",{Who:d.WhoCkey,What:e,Value:s[e].CustVal})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{shrink:1,children:(0,o.createComponentVNode)(2,a.Button,{icon:"times",onClick:function(){c("ClearValue",{Who:d.WhoCkey,What:e})}})})]})},e),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Banned from "+e,children:(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:s[e].IsBanned?"Unban":"Ban",icon:s[e].IsBanned?"smile-beam":"frown",onClick:function(){c("ToggleBan",{Who:d.WhoCkey,What:e})}})},e),(0,o.createComponentVNode)(2,a.LabeledList.Divider)],8)}))})})}},86731:function(e,t,n){"use strict";t.__esModule=!0,t.Wires=void 0;var o=n(58734),r=n(54777),a=n(50930),c=n(33677);t.Wires=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.proper_name,u=l.wires||[],s=l.status||[];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:150+30*u.length+(!!d&&30),children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:[d," Wire Configuration"]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.color,labelColor:e.color,color:e.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:e.cut?"Mend":"Cut",onClick:function(){return i("cut",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Pulse",onClick:function(){return i("pulse",{wire:e.color})}}),(0,o.createComponentVNode)(2,a.Button,{content:e.attached?"Detach":"Attach",onClick:function(){return i("attach",{wire:e.color})}})],4),children:!!e.wire&&(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)("("),e.wire,(0,o.createTextVNode)(")")],0)},e.color)}))})}),!!s.length&&(0,o.createComponentVNode)(2,a.Section,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e},e)}))})]})})}},77571:function(e,t,n){"use strict";t.__esModule=!0,t.FormatWildcards=t.AccessList=void 0;var o=n(58734),r=n(45445),a=n(54777),c=n(50930);t.AccessList=function(e,t){var n,r=e.accesses,u=void 0===r?[]:r,s=e.wildcardSlots,m=void 0===s?{}:s,p=e.selectedList,C=void 0===p?[]:p,h=e.accessMod,N=e.trimAccess,V=void 0===N?[]:N,b=e.accessFlags,f=void 0===b?{}:b,g=e.accessFlagNames,v=void 0===g?{}:g,k=e.wildcardFlags,x=void 0===k?{}:k,B=e.extraButtons,w=e.showBasic,_=(0,a.useSharedState)(t,"wildcardSelected",w?"None":Object.keys(m)[0]),y=_[0],L=_[1];"None"===y||m[y]?n=y:L(n=w?"None":Object.keys(m)[0]);var S=[],I=[];return u.forEach((function(e){var t=e.name,o=e.accesses,r={name:t,accesses:[],hasSelected:!1,allSelected:!0};if(w&&o.forEach((function(e){V.includes(e.ref)&&C.includes(e.ref)&&!I.includes(e.ref)&&I.push(e.ref)})),"None"===n)return o.forEach((function(e){V.includes(e.ref)&&(r.accesses.push(e),C.includes(e.ref)?r.hasSelected=!0:r.allSelected=!1)})),void(r.accesses.length&&S.push(r));o.forEach((function(e){V.includes(e.ref)||f[e.ref]&x[n]&&(r.accesses.push(e),C.includes(e.ref)?r.hasSelected=!0:r.allSelected=!1)})),r.accesses.length&&S.push(r)})),(0,o.createComponentVNode)(2,c.Section,{title:"Access",buttons:B,children:(0,o.createComponentVNode)(2,c.Flex,{wrap:"wrap",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{width:"100%",children:(0,o.createComponentVNode)(2,i,{wildcardSlots:m,selectedList:C,showBasic:w,basicUsed:I.length,basicMax:V.length})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,l,{accesses:S})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,d,{accesses:S,selectedList:C,accessMod:h,trimAccess:V,accessFlags:f,accessFlagNames:v,wildcardSlots:m,showBasic:w})})]})})};var i=function(e,t){var n,r=e.wildcardSlots,i=void 0===r?{}:r,l=e.showBasic,d=e.basicUsed,u=void 0===d?0:d,s=e.basicMax,m=void 0===s?0:s,p=(0,a.useSharedState)(t,"wildcardSelected",l?"None":Object.keys(i)[0]),C=p[0],h=p[1];return"None"===C||i[C]?n=C:(n=l?"None":Object.keys(i)[0],h(n)),(0,o.createComponentVNode)(2,c.Tabs,{children:[l&&(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:"None"===n,onClick:function(){return h("None")},children:["Trim:",(0,o.createVNode)(1,"br"),u+"/"+m]}),Object.keys(i).map((function(e){var t=i[e],r=t.limit,a=t.usage.length;r-a<0&&(r="\u221e");var l=a+"/"+r;return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:n===e,onClick:function(){return h(e)},children:[e+":",(0,o.createVNode)(1,"br"),l]},e)}))]})};t.FormatWildcards=i;var l=function(e,t){var n,r=e.accesses,i=void 0===r?[]:r,l=(0,a.useSharedState)(t,"accessName",null==(n=i[0])?void 0:n.name),d=l[0],u=l[1];return(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:i.map((function(e){var t=(e.allSelected?"check":e.hasSelected&&"minus")||"times";return(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:t,minWidth:"100%",altSelection:!0,selected:e.name===d,onClick:function(){return u(e.name)},children:e.name},e.name)}))})},d=function(e,t){var n,i,l=e.accesses,d=void 0===l?[]:l,u=e.selectedList,s=void 0===u?[]:u,m=e.accessMod,p=e.trimAccess,C=void 0===p?[]:p,h=e.accessFlags,N=void 0===h?{}:h,V=e.accessFlagNames,b=void 0===V?{}:V,f=e.wildcardSlots,g=void 0===f?{}:f,v=e.showBasic,k=(0,a.useSharedState)(t,"wildcardSelected",v?"None":Object.keys(g)[0]),x=k[0],B=k[1];"None"===x||g[x]?i=x:B(i=v?"None":Object.keys(g)[0]);var w=(0,a.useSharedState)(t,"accessName",null==(n=d[0])?void 0:n.name)[0],_=d.find((function(e){return e.name===w})),y=(0,r.sortBy)((function(e){return e.desc}))((null==_?void 0:_.accesses)||[]),L=Object.keys(g),S={};L.forEach((function(e){g[e].usage.forEach((function(t){S[t]=e}))}));var I=g[i],T=(I?I.limit:-1)-(I?I.usage.length:0);return y.map((function(e){var t=e.ref,n=0===T&&S[t]!==i||T>0&&S[t]&&S[t]!==i,r=!S[t]&&C.includes(t)?e.desc:e.desc+" ("+b[N[t]]+")";return(0,o.createComponentVNode)(2,c.Button.Checkbox,{ml:1,fluid:!0,content:r,disabled:n,checked:s.includes(e.ref),onClick:function(){return m(e.ref,"None"===i?null:i)}},e.desc)}))}},6701:function(e,t,n){"use strict";t.__esModule=!0,t.Vent=t.Scrubber=void 0;var o=n(58734),r=n(85260),a=n(54777),c=n(50930),i=n(35891);t.Vent=function(e,t){var n=e.vent,i=(0,a.useBackend)(t).act,l=n.id_tag,d=n.long_name,u=n.power,s=n.checks,m=n.excheck,p=n.incheck,C=n.direction,h=n.external,N=n.internal,V=n.extdefault,b=n.intdefault;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return i("power",{id_tag:l,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:C?"Pressurizing":"Scrubbing",color:!C&&"danger",onClick:function(){return i("direction",{id_tag:l,val:Number(!C)})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:p,onClick:function(){return i("incheck",{id_tag:l,val:s})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:m,onClick:function(){return i("excheck",{id_tag:l,val:s})}})]}),!!p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(N),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_internal_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:b,content:"Reset",onClick:function(){return i("reset_internal_pressure",{id_tag:l})}})]}),!!m&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(h),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_external_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:V,content:"Reset",onClick:function(){return i("reset_external_pressure",{id_tag:l})}})]})]})})};t.Scrubber=function(e,t){var n=e.scrubber,l=(0,a.useBackend)(t).act,d=n.long_name,u=n.power,s=n.scrubbing,m=n.id_tag,p=n.widenet,C=n.filter_types;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power",{id_tag:m,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:s?"filter":"sign-in-alt",color:s||"danger",content:s?"Scrubbing":"Siphoning",onClick:function(){return l("scrubbing",{id_tag:m,val:Number(!s)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:p?"expand":"compress",selected:p,content:p?"Expanded range":"Normal range",onClick:function(){return l("widenet",{id_tag:m,val:Number(!p)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:s&&C.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return l("toggle_filter",{id_tag:m,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})}},36706:function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(58734),r=n(50930);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[(0,o.createComponentVNode)(2,r.AnimatedNumber,{initial:0,value:e.volume})," units of "+e.name]},e.name)}))]})}},32599:function(e,t,n){"use strict";t.__esModule=!0,t.InterfaceLockNoticeBox=void 0;var o=n(58734),r=n(54777),a=n(50930);t.InterfaceLockNoticeBox=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.siliconUser,d=void 0===l?i.siliconUser:l,u=e.locked,s=void 0===u?i.locked:u,m=e.onLockStatusChange,p=void 0===m?function(){return c("lock")}:m,C=e.accessText,h=void 0===C?"an ID card":C;return d?(0,o.createComponentVNode)(2,a.NoticeBox,{color:"grey",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:"Interface lock status:"}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{m:0,color:s?"red":"green",icon:s?"lock":"unlock",content:s?"Locked":"Unlocked",onClick:function(){p&&p(!s)}})})]})}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe ",h," ","to ",s?"unlock":"lock"," this interface."]})}},39939:function(e,t,n){"use strict";t.__esModule=!0,t.PortableBasicInfo=void 0;var o=n(58734),r=n(54777),a=n(50930);t.PortableBasicInfo=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.connected,d=i.holding,u=i.on,s=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return c("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:l?"good":"average",children:l?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!d,onClick:function(){return c("eject")}}),children:d?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)}},3734:function(e,t,n){"use strict";t.__esModule=!0,t.getRoutedComponent=void 0;var o=n(58734),r=n(54777),a=(n(85470),n(33677)),c=n(8156),i=function(e,t){return function(){return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:["notFound"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" was not found.")],4),"missingExport"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" is missing an export.")],4)]})})}},l=function(){return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0})})};t.getRoutedComponent=function(e){var t=e.getState(),n=(0,r.selectBackend)(t),o=n.suspended,a=n.config;if(o)return l;for(var d,u=null==a?void 0:a["interface"],s=[function(e){return"./"+e+".tsx"},function(e){return"./"+e+".js"},function(e){return"./"+e+"/index.tsx"},function(e){return"./"+e+"/index.js"}];!d&&s.length>0;){var m=s.shift()(u);try{d=c(m)}catch(C){if("MODULE_NOT_FOUND"!==C.code)throw C}}if(!d)return i("notFound",u);var p=d[u];return p||i("missingExport",u)}},7229:function(e,t,n){"use strict";t.__esModule=!0,t.sanitizeText=void 0;var o,r=(o=n(37900))&&o.__esModule?o:{"default":o};var a=["b","br","center","code","div","font","hr","i","li","menu","ol","p","pre","span","table","td","th","tr","u","ul"],c=["class","style"];t.sanitizeText=function(e,t,n){return void 0===t&&(t=a),void 0===n&&(n=c),r["default"].sanitize(e,{ALLOWED_TAGS:t,FORBID_ATTR:n})}},33603:function(){},57397:function(){},62048:function(){},46857:function(){},39248:function(){},36030:function(){},32817:function(){},44576:function(){},21805:function(){},39292:function(){},74199:function(){},65138:function(){},8156:function(e,t,n){var o={"./AbductorConsole":17242,"./AbductorConsole.js":17242,"./Achievements":79110,"./Achievements.js":79110,"./AiAirlock":81687,"./AiAirlock.js":81687,"./AiRestorer":49855,"./AiRestorer.js":49855,"./AirAlarm":70203,"./AirAlarm.js":70203,"./AirlockElectronics":41904,"./AirlockElectronics.js":41904,"./AlertModal":97388,"./AlertModal.js":97388,"./Apc":80186,"./Apc.js":80186,"./ApcControl":16541,"./ApcControl.js":16541,"./AtmosAlertConsole":26129,"./AtmosAlertConsole.js":26129,"./AtmosControlConsole":41569,"./AtmosControlConsole.js":41569,"./AtmosControlPanel":69622,"./AtmosControlPanel.js":69622,"./AtmosFilter":54404,"./AtmosFilter.js":54404,"./AtmosMixer":36510,"./AtmosMixer.js":36510,"./AtmosPump":6782,"./AtmosPump.js":6782,"./AtmosRelief":59971,"./AtmosRelief.js":59971,"./Autolathe":71929,"./Autolathe.js":71929,"./AutomatedAnnouncement":27432,"./AutomatedAnnouncement.js":27432,"./BankMachine":22178,"./BankMachine.js":22178,"./Bepis":7159,"./Bepis.js":7159,"./Biogenerator":65435,"./Biogenerator.js":65435,"./BlackmarketUplink":34399,"./BlackmarketUplink.js":34399,"./BluespaceArtillery":81776,"./BluespaceArtillery.js":81776,"./BluespaceLocator":36451,"./BluespaceLocator.js":36451,"./BorgPanel":40361,"./BorgPanel.js":40361,"./BrigTimer":48935,"./BrigTimer.js":48935,"./CameraConsole":1390,"./CameraConsole.js":1390,"./Canister":42827,"./Canister.js":42827,"./Canvas":2220,"./Canvas.js":2220,"./Cargo":75095,"./Cargo.js":75095,"./CargoBountyConsole":17649,"./CargoBountyConsole.js":17649,"./CargoExpress":7886,"./CargoExpress.js":7886,"./CargoHoldTerminal":267,"./CargoHoldTerminal.js":267,"./CellularEmporium":73425,"./CellularEmporium.js":73425,"./CentcomPodLauncher":63990,"./CentcomPodLauncher.js":63990,"./Changelog":89970,"./Changelog.js":89970,"./CharacterDirectory":53785,"./CharacterDirectory.js":53785,"./ChemAcclimator":19427,"./ChemAcclimator.js":19427,"./ChemDebugSynthesizer":86389,"./ChemDebugSynthesizer.js":86389,"./ChemDispenser":16551,"./ChemDispenser.js":16551,"./ChemFilter":81900,"./ChemFilter.js":81900,"./ChemHeater":91354,"./ChemHeater.js":91354,"./ChemMaster":68084,"./ChemMaster.js":68084,"./ChemPress":55505,"./ChemPress.js":55505,"./ChemReactionChamber":17568,"./ChemReactionChamber.js":17568,"./ChemSplitter":91475,"./ChemSplitter.js":91475,"./ChemSynthesizer":36294,"./ChemSynthesizer.js":36294,"./CivCargoHoldTerminal":89223,"./CivCargoHoldTerminal.js":89223,"./ClockworkSlab":57286,"./ClockworkSlab.js":57286,"./CodexGigas":22058,"./CodexGigas.js":22058,"./ColorMatrixEditor":36016,"./ColorMatrixEditor.js":36016,"./Colormate":9842,"./Colormate.js":9842,"./ComputerFabricator":77970,"./ComputerFabricator.js":77970,"./CoolBook":44149,"./CoolBook.js":44149,"./Crayon":75421,"./Crayon.js":75421,"./CrewConsole":78701,"./CrewConsole.js":78701,"./Cryo":52261,"./Cryo.js":52261,"./DecalPainter":78804,"./DecalPainter.js":78804,"./DisposalUnit":79670,"./DisposalUnit.js":79670,"./DnaConsole":56991,"./DnaConsole.js":56991,"./DnaVault":48301,"./DnaVault.js":48301,"./EightBallVote":73848,"./EightBallVote.js":73848,"./Electrolyzer":55501,"./Electrolyzer.js":55501,"./Electropack":85738,"./Electropack.js":85738,"./EmergencyShuttleConsole":54287,"./EmergencyShuttleConsole.js":54287,"./EngravedMessage":42583,"./EngravedMessage.js":42583,"./ExosuitControlConsole":12234,"./ExosuitControlConsole.js":12234,"./ExosuitFabricator":83777,"./ExosuitFabricator.js":83777,"./ForbiddenLore":51601,"./ForbiddenLore.js":51601,"./Gateway":79748,"./Gateway.js":79748,"./GenitalCOnfig":32034,"./GenitalCOnfig.tsx":32034,"./GhostPoolProtection":19795,"./GhostPoolProtection.js":19795,"./GlandDispenser":21554,"./GlandDispenser.js":21554,"./Gps":27969,"./Gps.js":27969,"./GravityGenerator":46084,"./GravityGenerator.js":46084,"./GulagItemReclaimer":49538,"./GulagItemReclaimer.js":49538,"./GulagTeleporterConsole":62024,"./GulagTeleporterConsole.js":62024,"./Holodeck":48297,"./Holodeck.js":48297,"./Holopad":70400,"./Holopad.js":70400,"./HypnoChair":8689,"./HypnoChair.js":8689,"./ImplantChair":44088,"./ImplantChair.js":44088,"./InfraredEmitter":79323,"./InfraredEmitter.js":79323,"./Intellicard":19202,"./Intellicard.js":19202,"./Jukebox":52302,"./Jukebox.js":52302,"./KeycardAuth":76999,"./KeycardAuth.js":76999,"./LaborClaimConsole":45912,"./LaborClaimConsole.js":45912,"./LanguageMenu":42241,"./LanguageMenu.js":42241,"./LaunchpadConsole":13991,"./LaunchpadConsole.js":13991,"./LaunchpadRemote":43553,"./LaunchpadRemote.js":43553,"./ListInput":84555,"./ListInput.js":84555,"./LoadoutSelect":99229,"./LoadoutSelect.js":99229,"./MafiaPanel":24940,"./MafiaPanel.js":24940,"./MalfunctionModulePicker":30425,"./MalfunctionModulePicker.js":30425,"./MechBayPowerConsole":78761,"./MechBayPowerConsole.js":78761,"./MechpadConsole":82822,"./MechpadConsole.js":82822,"./MedicalKiosk":72249,"./MedicalKiosk.js":72249,"./Microscope":50112,"./Microscope.js":50112,"./MiningVendor":64449,"./MiningVendor.js":64449,"./Mint":23376,"./Mint.js":23376,"./MobInteraction":92571,"./MobInteraction.js":92571,"./Mule":43196,"./Mule.js":43196,"./NaniteChamberControl":17855,"./NaniteChamberControl.js":17855,"./NaniteCloudControl":49790,"./NaniteCloudControl.js":49790,"./NaniteProgramHub":96273,"./NaniteProgramHub.js":96273,"./NaniteProgrammer":97641,"./NaniteProgrammer.js":97641,"./NaniteRemote":68880,"./NaniteRemote.js":68880,"./NotificationPreferences":95074,"./NotificationPreferences.js":95074,"./NtnetRelay":58455,"./NtnetRelay.js":58455,"./NtosAiRestorer":90994,"./NtosAiRestorer.js":90994,"./NtosArcade":74545,"./NtosArcade.js":74545,"./NtosAtmos":34855,"./NtosAtmos.js":34855,"./NtosBountyConsole":85650,"./NtosBountyConsole.js":85650,"./NtosCard":20912,"./NtosCard.js":20912,"./NtosConfiguration":42938,"./NtosConfiguration.js":42938,"./NtosCrewManifest":75799,"./NtosCrewManifest.js":75799,"./NtosCyborgRemoteMonitor":24712,"./NtosCyborgRemoteMonitor.js":24712,"./NtosCyborgRemoteMonitorSyndicate":73845,"./NtosCyborgRemoteMonitorSyndicate.js":73845,"./NtosFileManager":40235,"./NtosFileManager.js":40235,"./NtosJobManager":62861,"./NtosJobManager.js":62861,"./NtosMain":68362,"./NtosMain.js":68362,"./NtosNetChat":7692,"./NtosNetChat.js":7692,"./NtosNetDos":46707,"./NtosNetDos.js":46707,"./NtosNetDownloader":77825,"./NtosNetDownloader.js":77825,"./NtosNetMonitor":89818,"./NtosNetMonitor.js":89818,"./NtosPowerMonitor":6190,"./NtosPowerMonitor.js":6190,"./NtosRadar":69072,"./NtosRadar.js":69072,"./NtosRadarSyndicate":81126,"./NtosRadarSyndicate.js":81126,"./NtosRequestKiosk":16314,"./NtosRequestKiosk.js":16314,"./NtosRevelation":43340,"./NtosRevelation.js":43340,"./NtosRoboControl":73351,"./NtosRoboControl.js":73351,"./NtosShipping":57652,"./NtosShipping.js":57652,"./NtosStationAlertConsole":52986,"./NtosStationAlertConsole.js":52986,"./NtosSupermatterMonitor":66524,"./NtosSupermatterMonitor.js":66524,"./NuclearBomb":81009,"./NuclearBomb.js":81009,"./OperatingComputer":85927,"./OperatingComputer.js":85927,"./Orbit":80763,"./Orbit.js":80763,"./OreBox":49725,"./OreBox.js":49725,"./OreRedemptionMachine":11975,"./OreRedemptionMachine.js":11975,"./Pandemic":42066,"./Pandemic.js":42066,"./PaperSheet":94738,"./PaperSheet.js":94738,"./ParticleAccelerator":29224,"./ParticleAccelerator.js":29224,"./PersonalCrafting":25757,"./PersonalCrafting.js":25757,"./Photocopier":33609,"./Photocopier.js":33609,"./PortableBlenderBelt":60462,"./PortableBlenderBelt.js":60462,"./PortableChemMixer":48109,"./PortableChemMixer.js":48109,"./PortableGenerator":77394,"./PortableGenerator.js":77394,"./PortablePump":45536,"./PortablePump.js":45536,"./PortableScrubber":67351,"./PortableScrubber.js":67351,"./PortableTurret":93281,"./PortableTurret.js":93281,"./PowerMonitor":81574,"./PowerMonitor.js":81574,"./ProbingConsole":46856,"./ProbingConsole.js":46856,"./ProximitySensor":54424,"./ProximitySensor.js":54424,"./QuirkMenu":32152,"./QuirkMenu.js":32152,"./Radio":96770,"./Radio.js":96770,"./RadioactiveMicrolaser":64596,"./RadioactiveMicrolaser.js":64596,"./RapidPipeDispenser":29339,"./RapidPipeDispenser.js":29339,"./RemoteRobotControl":99154,"./RemoteRobotControl.js":99154,"./RequestKiosk":56984,"./RequestKiosk.js":56984,"./RoboticsControlConsole":66474,"./RoboticsControlConsole.js":66474,"./Roulette":92873,"./Roulette.js":92873,"./SatelliteControl":53488,"./SatelliteControl.js":53488,"./ScannerGate":76153,"./ScannerGate.js":76153,"./SecondWind":90905,"./SecondWind.js":90905,"./SeedExtractor":79708,"./SeedExtractor.js":79708,"./ShuttleConsole":66632,"./ShuttleConsole.js":66632,"./ShuttleManipulator":53379,"./ShuttleManipulator.js":53379,"./Signaler":20529,"./Signaler.js":20529,"./SkillPanel":53277,"./SkillPanel.js":53277,"./SkillStation":26487,"./SkillStation.js":26487,"./Sleeper":30649,"./Sleeper.js":30649,"./SlimeBodySwapper":40026,"./SlimeBodySwapper.js":40026,"./SmartVend":50793,"./SmartVend.js":50793,"./Smes":54555,"./Smes.js":54555,"./SmokeMachine":76411,"./SmokeMachine.js":76411,"./SolarControl":43285,"./SolarControl.js":43285,"./SpaceHeater":90509,"./SpaceHeater.js":90509,"./SpawnersMenu":11547,"./SpawnersMenu.js":11547,"./StationAlertConsole":39101,"./StationAlertConsole.js":39101,"./SuitStorageUnit":2086,"./SuitStorageUnit.js":2086,"./SyndContractor":43366,"./SyndContractor.js":43366,"./TachyonArray":9744,"./TachyonArray.js":9744,"./Tank":16346,"./Tank.js":16346,"./TankDispenser":65801,"./TankDispenser.js":65801,"./Telecomms":22457,"./Telecomms.js":22457,"./TelecommsInteraction":45164,"./TelecommsInteraction.js":45164,"./TelecommsLogBrowser":90465,"./TelecommsLogBrowser.js":90465,"./TelecommsMonitor":80759,"./TelecommsMonitor.js":80759,"./TelecommsPDALog":64826,"./TelecommsPDALog.js":64826,"./Teleporter":2376,"./Teleporter.js":2376,"./ThermoMachine":57564,"./ThermoMachine.js":57564,"./Timer":21750,"./Timer.js":21750,"./TransferValve":71329,"./TransferValve.js":71329,"./TurbineComputer":76760,"./TurbineComputer.js":76760,"./TurretControl":59091,"./TurretControl.js":59091,"./Uplink":75789,"./Uplink.js":75789,"./VaultController":5848,"./VaultController.js":5848,"./Vendatray":37300,"./Vendatray.js":37300,"./Vending":59854,"./Vending.js":59854,"./VorePanel":71950,"./VorePanel.js":71950,"./VrSleeper":72010,"./VrSleeper.js":72010,"./WeaponInfo":82915,"./WeaponInfo.js":82915,"./WhoAdminPanel":94223,"./WhoAdminPanel.js":94223,"./Wires":86731,"./Wires.js":86731,"./common/AccessList":77571,"./common/AccessList.js":77571,"./common/AtmosControls":6701,"./common/AtmosControls.js":6701,"./common/BeakerContents":36706,"./common/BeakerContents.js":36706,"./common/InterfaceLockNoticeBox":32599,"./common/InterfaceLockNoticeBox.js":32599,"./common/PortableAtmos":39939,"./common/PortableAtmos.js":39939};function r(e){var t=a(e);return n(t)}function a(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=a,e.exports=r,r.id=8156}},n={};function o(e){var r=n[e];if(r!==undefined)return r.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.m=t,e=[],o.O=function(t,n,r,a){if(!n){var c=Infinity;for(u=0;u=a)&&Object.keys(o.O).every((function(e){return o.O[e](n[l])}))?n.splice(l--,1):(i=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[n,r,a]},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={tgui:0};o.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,a,c=n[0],i=n[1],l=n[2],d=0;if(c.some((function(t){return 0!==e[t]}))){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(l)var u=l(o)}for(t&&t(n);d 0;
}
diff --git a/tools/build/build.js b/tools/build/build.js
index 6953cadead3..932c96e8071 100644
--- a/tools/build/build.js
+++ b/tools/build/build.js
@@ -99,9 +99,9 @@ const DmTarget = Juke.createTarget({
'modular_citadel/**',
'modular_coyote/**',
'modular_sunset/**',
- 'modular_splurt/**',
- 'modular_sand/**',
- 'modular_roguetown/**',
+ 'modular_splurt/**',
+ 'modular_sand/**',
+ 'modular_roguetown/**',
'goon/**',
'html/**',
'icons/**',
diff --git a/tools/build/cbt/dm.js b/tools/build/cbt/dm.js
index 64a3d90c7b1..8b1a2157af3 100644
--- a/tools/build/cbt/dm.js
+++ b/tools/build/cbt/dm.js
@@ -85,21 +85,7 @@ const dm = async (dmeFile, options = {}) => {
// Compile
const { defines } = options;
if (defines && defines.length > 0) {
- const injectedContent = defines
- .map(x => `#define ${x}\n`)
- .join('');
- fs.writeFileSync(`${dmeBaseName}.mdme`, injectedContent);
- const dmeContent = fs.readFileSync(`${dmeBaseName}.dme`);
- fs.appendFileSync(`${dmeBaseName}.mdme`, dmeContent);
- await Juke.exec(dmPath, [`${dmeBaseName}.mdme`]);
- fs.writeFileSync(`${dmeBaseName}.dmb`, fs.readFileSync(`${dmeBaseName}.mdme.dmb`));
- fs.writeFileSync(`${dmeBaseName}.rsc`, fs.readFileSync(`${dmeBaseName}.mdme.rsc`));
- fs.unlinkSync(`${dmeBaseName}.mdme.dmb`);
- fs.unlinkSync(`${dmeBaseName}.mdme.rsc`);
- fs.unlinkSync(`${dmeBaseName}.mdme`);
- }
- else {
- await Juke.exec(dmPath, [dmeFile]);
+ await Juke.exec(dmPath, [...defines.map(def => `-D${def}`), dmeFile]);
}
};