mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 15:42:35 +00:00
Update the codebase to 515. (#15553)
* Update the codebase to 515. * edit that * WHOOPS * maor * maybe works * libcall and shit * do that too * remove that * auxtools isnt updated so get rid of it * actually remove auxtools lol Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
2
.github/workflows/byond.yml
vendored
2
.github/workflows/byond.yml
vendored
@@ -11,7 +11,7 @@ on:
|
||||
env:
|
||||
MACRO_COUNT: 0
|
||||
GENDER_COUNT: 6
|
||||
TO_WORLD_COUNT: 202
|
||||
TO_WORLD_COUNT: 201
|
||||
TGM_CHECK: "//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE"
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
#include "code\__defines\antagonist.dm"
|
||||
#include "code\__defines\armor.dm"
|
||||
#include "code\__defines\atmos.dm"
|
||||
#include "code\__defines\auxtools.dm"
|
||||
#include "code\__defines\battle_monsters.dm"
|
||||
#include "code\__defines\byond_compat.dm"
|
||||
#include "code\__defines\callback.dm"
|
||||
#include "code\__defines\chemistry.dm"
|
||||
#include "code\__defines\color.dm"
|
||||
@@ -35,7 +35,6 @@
|
||||
#include "code\__defines\dna.dm"
|
||||
#include "code\__defines\drinks.dm"
|
||||
#include "code\__defines\dview.dm"
|
||||
#include "code\__defines\extools.dm"
|
||||
#include "code\__defines\flags.dm"
|
||||
#include "code\__defines\gamemode.dm"
|
||||
#include "code\__defines\ghostspawner.dm"
|
||||
|
||||
Binary file not shown.
@@ -1,18 +0,0 @@
|
||||
/proc/auxtools_stack_trace(msg)
|
||||
CRASH(msg)
|
||||
|
||||
/proc/enable_debugging(mode, port)
|
||||
CRASH("auxtools not loaded")
|
||||
|
||||
/world/New()
|
||||
var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL")
|
||||
if (debug_server)
|
||||
call(debug_server, "auxtools_init")()
|
||||
enable_debugging()
|
||||
. = ..()
|
||||
|
||||
/world/Del()
|
||||
var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL")
|
||||
if (debug_server)
|
||||
call(debug_server, "auxtools_shutdown")()
|
||||
. = ..()
|
||||
23
code/__defines/byond_compat.dm
Normal file
23
code/__defines/byond_compat.dm
Normal file
@@ -0,0 +1,23 @@
|
||||
// 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 procs exist on local type, unfortunately 515 killed the .proc/procname syntax so we have to use nameof()
|
||||
#if DM_VERSION < 515
|
||||
/// Call by name proc reference, checks if the proc exists on this type or as a global proc
|
||||
#define PROC_REF(X) (.proc/##X)
|
||||
/// Call by name proc reference, checks if the proc exists on given type or as a global proc
|
||||
#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X)
|
||||
/// Call by name proc reference, checks if the proc is existing global proc
|
||||
#define GLOBAL_PROC_REF(X) (/proc/##X)
|
||||
#else
|
||||
/// Call by name proc reference, checks if the proc exists on this type or as a global proc
|
||||
#define PROC_REF(X) (nameof(.proc/##X))
|
||||
/// Call by name proc reference, checks if the proc exists on given type or as a global proc
|
||||
#define TYPE_PROC_REF(TYPE, X) (nameof(##TYPE.proc/##X))
|
||||
/// Call by name proc reference, checks if the proc is existing global proc
|
||||
#define GLOBAL_PROC_REF(X) (/proc/##X)
|
||||
#endif
|
||||
@@ -1,178 +0,0 @@
|
||||
#define EXTOOLS (world.system_type == MS_WINDOWS ? "byond-extools.dll" : "byond-extools")
|
||||
#define EXTOOLS_SUCCESS "SUCCESS"
|
||||
#define EXTOOLS_FAILED "FAIL"
|
||||
|
||||
/*
|
||||
Core - Provides necessary functionality for other modules.
|
||||
|
||||
Initializing any other modules also initializes this so it shouldn't be necessary to call this.
|
||||
|
||||
*/
|
||||
|
||||
/proc/extools_initialize()
|
||||
return call(EXTOOLS, "core_initialize")() == EXTOOLS_SUCCESS
|
||||
|
||||
/*
|
||||
TFFI - Threaded FFI
|
||||
|
||||
All DLL calls are automatically threaded off.
|
||||
Black magic is used to suspend (sleep) the currently executing proc, allowing non-blocking FFI.
|
||||
|
||||
You may call a DLL function and sleep until it returns, pass a callback to be called with the result,
|
||||
or call resolve() on the /datum/promise to receive the return value at any time.
|
||||
|
||||
Example:
|
||||
|
||||
|
||||
var/x = call_wait("sample.dll", "do_work", "arg1", "arg2", "arg3")
|
||||
|
||||
- Calls the do_work function from sample.dll with 3 arguments. The proc sleeps until do_work returns.
|
||||
|
||||
|
||||
|
||||
var/datum/promise/P = call_async("sample.dll", "do_work", "arg1")
|
||||
... do something else ...
|
||||
var/result = P.resolve()
|
||||
|
||||
- Calls do_work with 1 argument. Returns a promise object. Runs some other code before calling P.resolve() to obtain the result.
|
||||
|
||||
|
||||
|
||||
/proc/print_result(result)
|
||||
world << result
|
||||
|
||||
call_cb("sample.dll", "do_work", /proc/print_result, "arg1", "arg2")
|
||||
|
||||
- Calls do_work with 2 arguments. The callback is invoked with the result as the single argument. Execution resumes immediately.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#if 0
|
||||
|
||||
/proc/tffi_initialize()
|
||||
return call(EXTOOLS, "tffi_initialize")() == EXTOOLS_SUCCESS
|
||||
|
||||
var/fallback_alerted = FALSE
|
||||
var/next_promise_id = 0
|
||||
|
||||
/datum/promise
|
||||
var/completed = FALSE
|
||||
var/result = ""
|
||||
var/callback_context = GLOBAL_PROC
|
||||
var/callback_proc = null
|
||||
var/__id = 0
|
||||
|
||||
/datum/promise/New()
|
||||
__id = next_promise_id++ //please don't create more than 10^38 promises in a single tick
|
||||
|
||||
//This proc's bytecode is overwritten to allow suspending and resuming on demand.
|
||||
//None of the code here should run.
|
||||
/datum/promise/proc/__internal_resolve(ref, id)
|
||||
if(!fallback_alerted && world.system_type != UNIX) // the rewriting is currently broken on Linux.
|
||||
world << "<b>TFFI: __internal_resolve has not been rewritten, the TFFI DLL was not loaded correctly.</b>"
|
||||
world.log << "<b>TFFI: __internal_resolve has not been rewritten, the TFFI DLL was not loaded correctly.</b>"
|
||||
fallback_alerted = TRUE
|
||||
while(!completed)
|
||||
sleep(1)
|
||||
//It might be better to just fail and notify the user that something went wrong.
|
||||
|
||||
/datum/promise/proc/__resolve_callback()
|
||||
__internal_resolve("\ref[src]", __id)
|
||||
if(callback_context == GLOBAL_PROC)
|
||||
call(callback_proc)(result)
|
||||
else
|
||||
call(callback_context, callback_proc)(result)
|
||||
|
||||
/datum/promise/proc/resolve()
|
||||
__internal_resolve("\ref[src]", __id)
|
||||
return result
|
||||
|
||||
/proc/call_async()
|
||||
var/list/arguments = args.Copy()
|
||||
var/datum/promise/P = new
|
||||
arguments.Insert(1, "\ref[P]")
|
||||
call(EXTOOLS, "call_async")(arglist(arguments))
|
||||
return P
|
||||
|
||||
/proc/call_cb()
|
||||
var/list/arguments = args.Copy()
|
||||
var/context = arguments[3]
|
||||
var/callback = arguments[4]
|
||||
arguments.Cut(3, 5)
|
||||
var/datum/promise/P = new
|
||||
P.callback_context = context
|
||||
P.callback_proc = callback
|
||||
arguments.Insert(1, "\ref[P]")
|
||||
call(EXTOOLS, "call_async")(arglist(arguments))
|
||||
spawn(0)
|
||||
P.__resolve_callback()
|
||||
|
||||
/proc/call_wait()
|
||||
return call_async(arglist(args)).resolve()
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
Extended Profiling - High precision in-depth performance profiling.
|
||||
|
||||
Turning on extended profiling for a proc will cause each execution of it to generate a file in the ./profiles directory
|
||||
containing a breakdown of time spent executing the proc and each sub-proc it calls. Import the file into https://www.speedscope.app/ to
|
||||
view a good visual representation.
|
||||
|
||||
Be aware that sleeping counts as stopping and restarting the execution of the proc, which will generate multiple files, one between each sleep.
|
||||
|
||||
For large procs the profiles may become unusably large. Optimizations pending.
|
||||
|
||||
Example:
|
||||
|
||||
start_profiling(/datum/explosion/New)
|
||||
|
||||
- Enables profiling for /datum/explosion/New(), which will produce a detailed breakdown of each explosion that occurs afterwards.
|
||||
|
||||
stop_profiling(/datum/explosion/New)
|
||||
|
||||
- Disables profiling for explosions. Any currently running profiles will stop when the proc finishes executing or enters a sleep.
|
||||
|
||||
*/
|
||||
|
||||
/proc/profiling_initialize()
|
||||
return call(EXTOOLS, "extended_profiling_initialize")() == EXTOOLS_SUCCESS
|
||||
|
||||
/proc/start_profiling(procpath)
|
||||
call(EXTOOLS, "enable_extended_profiling")("[procpath]")
|
||||
|
||||
/proc/stop_profiling(procpath)
|
||||
call(EXTOOLS, "disable_extended_profiling")("[procpath]")
|
||||
|
||||
/*
|
||||
|
||||
Debug Server - High and low level debugging of DM code.
|
||||
|
||||
Calling debugger_initialize will start a debug server that allows connections from frontends,
|
||||
such as SpaceManiac's VSCode extension for line-by-line debugging (and more), or Steamport's
|
||||
Somnium for bytecode inspection.
|
||||
|
||||
Call with pause = TRUE to wait until the debugger connected and immediately break on the next instruction after the call.
|
||||
|
||||
*/
|
||||
|
||||
/proc/debugger_initialize(pause = FALSE)
|
||||
return call(EXTOOLS, "debug_initialize")(pause ? "pause" : "") == EXTOOLS_SUCCESS
|
||||
|
||||
/*
|
||||
|
||||
Misc
|
||||
|
||||
*/
|
||||
|
||||
//Programatically enable and disable the built-in byond profiler. Useful if you want to, for example, profile subsystem initializations.
|
||||
/proc/enable_profiling()
|
||||
return call(EXTOOLS, "enable_profiling")() == EXTOOLS_SUCCESS
|
||||
|
||||
/proc/disable_profiling()
|
||||
return call(EXTOOLS, "disable_profiling")() == EXTOOLS_SUCCESS
|
||||
|
||||
// Will dump the server's in-depth memory profile into the file specified.
|
||||
/proc/dump_memory_profile(file_name)
|
||||
return call(EXTOOLS, "dump_memory_usage")(file_name) == EXTOOLS_SUCCESS
|
||||
@@ -311,8 +311,8 @@
|
||||
// This only works on 511 because it relies on 511's `var/something = foo = bar` syntax.
|
||||
#define WEAKREF(D) (istype(D, /datum) && !D:gcDestroyed ? (D:weakref || (D:weakref = new/datum/weakref(D))) : null)
|
||||
|
||||
#define ADD_VERB_IN(the_atom,time,verb) addtimer(CALLBACK(the_atom, /atom/.proc/add_verb, verb), time, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
#define ADD_VERB_IN_IF(the_atom,time,verb,callback) addtimer(CALLBACK(the_atom, /atom/.proc/add_verb, verb, callback), time, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
#define ADD_VERB_IN(the_atom,time,verb) addtimer(CALLBACK(the_atom, TYPE_PROC_REF(/atom, add_verb), verb), time, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
#define ADD_VERB_IN_IF(the_atom,time,verb,callback) addtimer(CALLBACK(the_atom, TYPE_PROC_REF(/atom, add_verb), verb, callback), time, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
|
||||
// Maploader bounds indices
|
||||
#define MAP_MINX 1
|
||||
|
||||
@@ -18,6 +18,6 @@
|
||||
#define QDELETED(X) (!X || X.gcDestroyed)
|
||||
#define QDESTROYING(X) (!X || X.gcDestroyed == GC_CURRENTLY_BEING_QDELETED)
|
||||
|
||||
#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE)
|
||||
#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE)
|
||||
#define QDEL_NULL(item) qdel(item); item = null
|
||||
#define QDEL_NULL_LIST(x) if(x) { for(var/y in x) { qdel(y) }}; if(x) {x.Cut(); x = null } // Second x check to handle items that LAZYREMOVE on qdel.
|
||||
|
||||
@@ -39,29 +39,29 @@
|
||||
#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")()
|
||||
|
||||
#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_read(fname) LIBCALL(RUST_G, "file_read")(fname)
|
||||
#define rustg_file_exists(fname) LIBCALL(RUST_G, "file_exists")(fname)
|
||||
#define rustg_file_write(text, fname) LIBCALL(RUST_G, "file_write")(text, fname)
|
||||
#define rustg_file_append(text, fname) LIBCALL(RUST_G, "file_append")(text, fname)
|
||||
|
||||
#ifdef RUSTG_OVERRIDE_BUILTINS
|
||||
#define file2text(fname) rustg_file_read("[fname]")
|
||||
#define text2file(text, fname) rustg_file_append(text, "[fname]")
|
||||
#endif
|
||||
|
||||
#define rustg_git_revparse(rev) call(RUST_G, "rg_git_revparse")(rev)
|
||||
#define rustg_git_commit_date(rev) call(RUST_G, "rg_git_commit_date")(rev)
|
||||
#define rustg_git_revparse(rev) LIBCALL(RUST_G, "rg_git_revparse")(rev)
|
||||
#define rustg_git_commit_date(rev) LIBCALL(RUST_G, "rg_git_commit_date")(rev)
|
||||
|
||||
#define rustg_hash_string(algorithm, text) call(RUST_G, "hash_string")(algorithm, text)
|
||||
#define rustg_hash_file(algorithm, fname) call(RUST_G, "hash_file")(algorithm, fname)
|
||||
#define rustg_hash_generate_totp(seed) call(RUST_G, "generate_totp")(seed)
|
||||
#define rustg_hash_generate_totp_tolerance(seed, tolerance) call(RUST_G, "generate_totp_tolerance")(seed, tolerance)
|
||||
#define rustg_hash_string(algorithm, text) LIBCALL(RUST_G, "hash_string")(algorithm, text)
|
||||
#define rustg_hash_file(algorithm, fname) LIBCALL(RUST_G, "hash_file")(algorithm, fname)
|
||||
#define rustg_hash_generate_totp(seed) LIBCALL(RUST_G, "generate_totp")(seed)
|
||||
#define rustg_hash_generate_totp_tolerance(seed, tolerance) LIBCALL(RUST_G, "generate_totp_tolerance")(seed, tolerance)
|
||||
|
||||
#define RUSTG_HASH_MD5 "md5"
|
||||
#define RUSTG_HASH_SHA1 "sha1"
|
||||
@@ -80,25 +80,25 @@
|
||||
#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_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_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_udp_send(addr, text) call(RUST_G, "udp_send")(addr, text)
|
||||
#define rustg_udp_send(addr, text) LIBCALL(RUST_G, "udp_send")(addr, text)
|
||||
|
||||
#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)
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
|
||||
// -- SSoverlays --
|
||||
#define CUT_OVERLAY_IN(ovr, time) addtimer(CALLBACK(src, /atom/.proc/cut_overlay, ovr), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
|
||||
#define CUT_OVERLAY_IN(ovr, time) addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, cut_overlay), ovr), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
|
||||
#define ATOM_USING_SSOVERLAY(atom) (atom.our_overlays || atom.priority_overlays)
|
||||
|
||||
// -- SSticker --
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
var/list/calling_arguments = length(args) > 2 ? args.Copy(3) : null
|
||||
|
||||
. = call(dll, func)(arglist(calling_arguments))
|
||||
. = LIBCALL(dll, func)(arglist(calling_arguments))
|
||||
|
||||
if (world.timeofday - start > 10 SECONDS)
|
||||
crash_with("DLL call took longer than 10 seconds: [func]")
|
||||
|
||||
@@ -283,7 +283,7 @@ datum/projectile_data
|
||||
/proc/flick_overlay(image/I, list/show_to, duration)
|
||||
for(var/client/C in show_to)
|
||||
C.images += I
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /.proc/remove_images_from_clients, I, show_to), duration)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(remove_images_from_clients), I, show_to), duration)
|
||||
|
||||
/proc/flick_overlay_view(image/I, atom/target, duration) //wrapper for the above, flicks to everyone who can see the target atom
|
||||
var/list/viewing = list()
|
||||
|
||||
@@ -111,9 +111,9 @@ var/global/list/intent_listener = list()
|
||||
hair_styles_male_list += H.name
|
||||
hair_styles_female_list += H.name
|
||||
|
||||
sortTim(hair_styles_list, /proc/cmp_text_asc)
|
||||
sortTim(hair_styles_male_list, /proc/cmp_text_asc)
|
||||
sortTim(hair_styles_female_list, /proc/cmp_text_asc)
|
||||
sortTim(hair_styles_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
sortTim(hair_styles_male_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
sortTim(hair_styles_female_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
//Gradients - Initialise all /datum/sprite_accessory/hair_gradients into an list indexed by hairgradient-style name
|
||||
paths = subtypesof(/datum/sprite_accessory/hair_gradients)
|
||||
@@ -121,7 +121,7 @@ var/global/list/intent_listener = list()
|
||||
var/datum/sprite_accessory/hair_gradients/H = new path()
|
||||
hair_gradient_styles_list[H.name] = H
|
||||
|
||||
sortTim(hair_gradient_styles_list, /proc/cmp_text_asc)
|
||||
sortTim(hair_gradient_styles_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
//Facial Hair - Initialise all /datum/sprite_accessory/facial_hair into an list indexed by facialhair-style name
|
||||
paths = subtypesof(/datum/sprite_accessory/facial_hair)
|
||||
@@ -135,9 +135,9 @@ var/global/list/intent_listener = list()
|
||||
facial_hair_styles_male_list += H.name
|
||||
facial_hair_styles_female_list += H.name
|
||||
|
||||
sortTim(facial_hair_styles_list, /proc/cmp_text_asc)
|
||||
sortTim(facial_hair_styles_male_list, /proc/cmp_text_asc)
|
||||
sortTim(facial_hair_styles_female_list, /proc/cmp_text_asc)
|
||||
sortTim(facial_hair_styles_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
sortTim(facial_hair_styles_male_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
sortTim(facial_hair_styles_female_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
//Body markings
|
||||
paths = subtypesof(/datum/sprite_accessory/marking)
|
||||
@@ -145,7 +145,7 @@ var/global/list/intent_listener = list()
|
||||
var/datum/sprite_accessory/marking/M = new path()
|
||||
body_marking_styles_list[M.name] = M
|
||||
|
||||
sortTim(body_marking_styles_list, /proc/cmp_text_asc)
|
||||
sortTim(body_marking_styles_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
//Disability datums
|
||||
paths = subtypesof(/datum/character_disabilities)
|
||||
@@ -153,7 +153,7 @@ var/global/list/intent_listener = list()
|
||||
var/datum/character_disabilities/T = new path()
|
||||
chargen_disabilities_list[T.name] = T
|
||||
|
||||
sortTim(chargen_disabilities_list, /proc/cmp_text_asc)
|
||||
sortTim(chargen_disabilities_list, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
//List of job. I can't believe this was calculated multiple times per tick!
|
||||
paths = subtypesof(/datum/job)
|
||||
@@ -183,7 +183,7 @@ var/global/list/intent_listener = list()
|
||||
S.has_autohiss = TRUE
|
||||
all_species[S.name] = S
|
||||
|
||||
sortTim(all_species, /proc/cmp_text_asc)
|
||||
sortTim(all_species, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
// The other lists are generated *after* we sort the main one so they don't need sorting too.
|
||||
for (var/thing in all_species)
|
||||
|
||||
@@ -761,7 +761,7 @@ proc/ColorTone(rgb, tone)
|
||||
break
|
||||
layers[current] = current_layer
|
||||
|
||||
//sortTim(layers, /proc/cmp_image_layer_asc)
|
||||
//sortTim(layers, GLOBAL_PROC_REF(cmp_image_layer_asc))
|
||||
|
||||
var/icon/add // Icon of overlay being added
|
||||
|
||||
|
||||
@@ -305,21 +305,21 @@
|
||||
if (!L)
|
||||
return
|
||||
var/list/target = L.Copy()
|
||||
return sortTim(target, order ? /proc/cmp_ckey_asc : /proc/cmp_ckey_dsc, FALSE)
|
||||
return sortTim(target, order ? GLOBAL_PROC_REF(cmp_ckey_asc) : GLOBAL_PROC_REF(cmp_ckey_dsc), FALSE)
|
||||
|
||||
//Mergesort: divides up the list into halves to begin the sort
|
||||
/proc/sortAtom(var/list/atom/L, var/order = 1)
|
||||
if (!L)
|
||||
return
|
||||
var/list/target = L.Copy()
|
||||
return sortTim(target, order ? /proc/cmp_name_asc : /proc/cmp_name_dsc, FALSE)
|
||||
return sortTim(target, order ? GLOBAL_PROC_REF(cmp_name_asc) : GLOBAL_PROC_REF(cmp_name_dsc), FALSE)
|
||||
|
||||
//Mergesort: Specifically for record datums in a list.
|
||||
/proc/sortRecord(var/list/datum/record/L, var/order = 1)
|
||||
if (!L)
|
||||
return
|
||||
var/list/target = L.Copy()
|
||||
sortTim(target, order ? /proc/cmp_records_asc : /proc/cmp_records_dsc, FALSE)
|
||||
sortTim(target, order ? GLOBAL_PROC_REF(cmp_records_asc) : GLOBAL_PROC_REF(cmp_records_dsc), FALSE)
|
||||
return target
|
||||
|
||||
//Mergesort: any value in a list
|
||||
@@ -327,14 +327,14 @@
|
||||
if (!L)
|
||||
return
|
||||
var/list/target = L.Copy()
|
||||
return sortTim(target, /proc/cmp_text_asc)
|
||||
return sortTim(target, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
//Mergsorge: uses sortList() but uses the var's name specifically. This should probably be using mergeAtom() instead
|
||||
/proc/sortNames(var/list/L)
|
||||
if (!L)
|
||||
return
|
||||
var/list/target = L.Copy()
|
||||
return sortTim(target, /proc/cmp_name_asc, FALSE)
|
||||
return sortTim(target, GLOBAL_PROC_REF(cmp_name_asc), FALSE)
|
||||
|
||||
// List of lists, sorts by element[key] - for things like crew monitoring computer sorting records by name.
|
||||
/proc/sortByKey(var/list/L, var/key)
|
||||
@@ -364,7 +364,7 @@
|
||||
//Mergesort: any value in a list, preserves key=value structure
|
||||
/proc/sortAssoc(var/list/L)
|
||||
var/list/ret = L.Copy()
|
||||
sortTim(ret, /proc/cmp_text_asc, FALSE)
|
||||
sortTim(ret, GLOBAL_PROC_REF(cmp_text_asc), FALSE)
|
||||
return ret
|
||||
|
||||
// Macros to test for bits in a bitfield. Note, that this is for use with indexes, not bit-masks!
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//TimSort interface
|
||||
/proc/sortTim(list/L, cmp=/proc/cmp_numeric_asc, associative, fromIndex=1, toIndex=0)
|
||||
/proc/sortTim(list/L, cmp=GLOBAL_PROC_REF(cmp_numeric_asc), associative, fromIndex=1, toIndex=0)
|
||||
if(L && L.len >= 2)
|
||||
fromIndex = fromIndex % L.len
|
||||
toIndex = toIndex % (L.len+1)
|
||||
|
||||
@@ -15,7 +15,7 @@ var/datum/sortInstance/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
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
/atom/movable/proc/update_filters()
|
||||
filters = null
|
||||
filter_data = sortTim(filter_data, /proc/cmp_filter_data_priority, TRUE)
|
||||
filter_data = sortTim(filter_data, GLOBAL_PROC_REF(cmp_filter_data_priority), TRUE)
|
||||
for(var/f in filter_data)
|
||||
var/list/data = filter_data[f]
|
||||
var/list/arguments = data.Copy()
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
if(!Adjacent(usr) || !over.Adjacent(usr))
|
||||
return // should stop you from dragging through windows
|
||||
|
||||
INVOKE_ASYNC(over, /atom/.proc/MouseDrop_T, src, usr, src_location, over_location, src_control, over_control, params)
|
||||
INVOKE_ASYNC(over, TYPE_PROC_REF(/atom, MouseDrop_T), src, usr, src_location, over_location, src_control, over_control, params)
|
||||
|
||||
// receive a mousedrop
|
||||
/atom/proc/MouseDrop_T(atom/dropping, mob/user, src_location, over_location, src_control, over_control, params)
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
var/old_color = color
|
||||
color = set_color
|
||||
color_changed = TRUE
|
||||
addtimer(CALLBACK(src, .proc/set_color_to, old_color), set_time)
|
||||
addtimer(CALLBACK(src, PROC_REF(set_color_to), old_color), set_time)
|
||||
|
||||
/obj/screen/inventory/proc/set_color_to(var/set_color)
|
||||
color = set_color
|
||||
@@ -317,7 +317,7 @@
|
||||
up_image.plane = LIGHTING_LAYER + 1
|
||||
up_image.layer = LIGHTING_LAYER + 1
|
||||
usr << up_image
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /proc/qdel, up_image), 12)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), up_image), 12)
|
||||
return
|
||||
var/turf/T = GetAbove(usr)
|
||||
if (!T)
|
||||
|
||||
@@ -106,4 +106,4 @@ var/list/panic_targets_data_loss = list(
|
||||
var/ctype = panic_targets[controller]
|
||||
Master.subsystems += new ctype
|
||||
|
||||
sortTim(Master.subsystems, /proc/cmp_subsystem_display)
|
||||
sortTim(Master.subsystems, GLOBAL_PROC_REF(cmp_subsystem_display))
|
||||
|
||||
@@ -157,7 +157,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
initializing = TRUE
|
||||
|
||||
// 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.
|
||||
@@ -181,7 +181,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
SetRunLevel(RUNLEVEL_LOBBY)
|
||||
|
||||
// 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.
|
||||
#ifndef UNIT_TEST
|
||||
world.sleep_offline = 1
|
||||
@@ -264,9 +264,9 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
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/level in runlevel_sorted_subsystems)
|
||||
sortTim(level, /proc/cmp_subsystem_priority)
|
||||
sortTim(level, GLOBAL_PROC_REF(cmp_subsystem_priority))
|
||||
level += tickersubsystems
|
||||
|
||||
var/cached_runlevel = current_runlevel
|
||||
|
||||
@@ -225,7 +225,7 @@ var/datum/controller/subsystem/atlas/SSatlas
|
||||
|
||||
var/static/regex/mapregex = new(".+\\.dmm$")
|
||||
var/list/files = flist(directory)
|
||||
sortTim(files, /proc/cmp_text_asc)
|
||||
sortTim(files, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
var/mfile
|
||||
var/first_dmm = TRUE
|
||||
var/time
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
for (var/area/A in world)
|
||||
all_areas += A
|
||||
|
||||
sortTim(all_areas, /proc/cmp_name_asc)
|
||||
sortTim(all_areas, GLOBAL_PROC_REF(cmp_name_asc))
|
||||
|
||||
/datum/controller/subsystem/finalize/proc/select_ruin()
|
||||
//Get all the folders in dynamic maps and check if they contain a config.json
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
if(current_map.use_overmap)
|
||||
ghostteleportlocs[map_overmap.name] = map_overmap
|
||||
|
||||
sortTim(ghostteleportlocs, /proc/cmp_text_asc)
|
||||
sortTim(ghostteleportlocs, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
|
||||
setupgenetics()
|
||||
|
||||
@@ -39,4 +39,4 @@
|
||||
/proc/sorted_add_area(area/A)
|
||||
all_areas += A
|
||||
|
||||
sortTim(all_areas, /proc/cmp_name_asc)
|
||||
sortTim(all_areas, GLOBAL_PROC_REF(cmp_name_asc))
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
to_chat(H, SSatlas.current_sector.get_chat_description())
|
||||
|
||||
if("Arrivals Shuttle" in current_map.allowed_spawns && spawning_at == "Arrivals Shuttle")
|
||||
H.centcomm_despawn_timer = addtimer(CALLBACK(H, /mob/living/.proc/centcomm_timeout), 10 MINUTES, TIMER_STOPPABLE)
|
||||
H.centcomm_despawn_timer = addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living, centcomm_timeout)), 10 MINUTES, TIMER_STOPPABLE)
|
||||
to_chat(H,SPAN_NOTICE("You have ten minutes to reach the station before you will be forced there."))
|
||||
|
||||
var/datum/job/job = GetJob(rank)
|
||||
@@ -416,7 +416,7 @@
|
||||
BITSET(H.hud_updateflag, IMPLOYAL_HUD)
|
||||
BITSET(H.hud_updateflag, SPECIALROLE_HUD)
|
||||
|
||||
INVOKE_ASYNC(GLOBAL_PROC, .proc/show_location_blurb, H.client, 30)
|
||||
INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(show_location_blurb), H.client, 30)
|
||||
|
||||
if(spawning_at == "Arrivals Shuttle")
|
||||
to_chat(H, "<b>[current_map.command_spawn_message]</b>")
|
||||
@@ -869,7 +869,7 @@
|
||||
T.maptext = "<span style=\"[style]\">[copytext(text,1,i)] </span>"
|
||||
sleep(1)
|
||||
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/fade_location_blurb, C, T), duration)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fade_location_blurb), C, T), duration)
|
||||
|
||||
/proc/fade_location_blurb(client/C, obj/T)
|
||||
animate(T, alpha = 0, time = 5)
|
||||
|
||||
@@ -109,7 +109,7 @@ var/datum/controller/subsystem/lighting/SSlighting
|
||||
log_ss("lighting", "NOv:[overlaycount] L:[processed_lights] C:[processed_corners] O:[processed_overlays]")
|
||||
|
||||
#ifdef USE_INTELLIGENT_LIGHTING_UPDATES
|
||||
SSticker.OnRoundstart(CALLBACK(src, .proc/handle_roundstart))
|
||||
SSticker.OnRoundstart(CALLBACK(src, PROC_REF(handle_roundstart)))
|
||||
#endif
|
||||
|
||||
..()
|
||||
|
||||
@@ -268,8 +268,8 @@ if(Datum.isprocessing) {\
|
||||
rcon_breaker_units += breaker
|
||||
rcon_breaker_units_by_tag[breaker.RCon_tag] = breaker
|
||||
|
||||
sortTim(rcon_smes_units, /proc/cmp_rcon_smes)
|
||||
sortTim(rcon_breaker_units, /proc/cmp_rcon_bbox)
|
||||
sortTim(rcon_smes_units, GLOBAL_PROC_REF(cmp_rcon_smes))
|
||||
sortTim(rcon_breaker_units, GLOBAL_PROC_REF(cmp_rcon_bbox))
|
||||
|
||||
#undef SSMACHINERY_PIPENETS
|
||||
#undef SSMACHINERY_MACHINERY
|
||||
|
||||
@@ -50,7 +50,7 @@ var/datum/controller/subsystem/mapping/SSmapping
|
||||
|
||||
var/list/banned_maps = list() + banned_exoplanet_dmms + banned_space_dmms + banned_away_site_dmms
|
||||
|
||||
for(var/item in sortList(subtypesof(/datum/map_template), /proc/cmp_ruincost_priority))
|
||||
for(var/item in sortList(subtypesof(/datum/map_template), GLOBAL_PROC_REF(cmp_ruincost_priority)))
|
||||
var/datum/map_template/map_template_type = item
|
||||
// screen out the abstract subtypes
|
||||
if(!initial(map_template_type.id))
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
. = new /mob/living/carbon/human/dummy/mannequin
|
||||
mannequins[ckey] = .
|
||||
|
||||
addtimer(CALLBACK(src, .proc/del_mannequin, ckey), 5 MINUTES, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(del_mannequin), ckey), 5 MINUTES, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
|
||||
/datum/controller/subsystem/mobs/proc/del_mannequin(ckey)
|
||||
var/mannequin = mannequins[ckey]
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
if (config.news_use_forum_api)
|
||||
load_forum_news_config()
|
||||
|
||||
INVOKE_ASYNC(src, .proc/load_from_forums)
|
||||
INVOKE_ASYNC(src, PROC_REF(load_from_forums))
|
||||
|
||||
..()
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ var/datum/controller/subsystem/nightlight/SSnightlight
|
||||
suspend()
|
||||
deactivate(FALSE)
|
||||
if (time > 0)
|
||||
addtimer(CALLBACK(src, .proc/end_temp_disable), time, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(end_temp_disable)), time, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
|
||||
/datum/controller/subsystem/nightlight/proc/end_temp_disable()
|
||||
if (disable_type == NL_TEMPORARY_DISABLE)
|
||||
|
||||
@@ -143,12 +143,12 @@
|
||||
|
||||
pregenerate_more_oranges_ears(NUMBER_OF_PREGENERATED_ORANGES_EARS)
|
||||
|
||||
RegisterSignal(SSdcs, COMSIG_GLOB_NEW_Z, .proc/propogate_spatial_grid_to_new_z)
|
||||
RegisterSignal(SSdcs, COMSIG_GLOB_EXPANDED_WORLD_BOUNDS, .proc/after_world_bounds_expanded)
|
||||
RegisterSignal(SSdcs, COMSIG_GLOB_NEW_Z, PROC_REF(propogate_spatial_grid_to_new_z))
|
||||
RegisterSignal(SSdcs, COMSIG_GLOB_EXPANDED_WORLD_BOUNDS, PROC_REF(after_world_bounds_expanded))
|
||||
|
||||
///add a movable to the pre init queue for whichever type is specified so that when the subsystem initializes they get added to the grid
|
||||
/datum/controller/subsystem/spatial_grid/proc/enter_pre_init_queue(atom/movable/waiting_movable, type)
|
||||
RegisterSignal(waiting_movable, COMSIG_PARENT_PREQDELETED, .proc/queued_item_deleted, override = TRUE)
|
||||
RegisterSignal(waiting_movable, COMSIG_PARENT_PREQDELETED, PROC_REF(queued_item_deleted), override = TRUE)
|
||||
//override because something can enter the queue for two different types but that is done through unrelated procs that shouldnt know about eachother
|
||||
waiting_to_add_by_type[type] += waiting_movable
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
simple_statistics[S.key] = S
|
||||
|
||||
sortTim(simple_statistics, /proc/cmp_name_asc, TRUE)
|
||||
sortTim(simple_statistics, GLOBAL_PROC_REF(cmp_name_asc), TRUE)
|
||||
|
||||
/datum/controller/subsystem/statistics/fire()
|
||||
// Handle AFK.
|
||||
|
||||
@@ -342,7 +342,7 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
for(var/dept in ready_job.departments)
|
||||
LAZYDISTINCTADD(ready_player_jobs[dept], prefs.real_name)
|
||||
LAZYSET(ready_player_jobs[dept], prefs.real_name, ready_job.title)
|
||||
sortTim(ready_player_jobs[dept], /proc/cmp_text_asc)
|
||||
sortTim(ready_player_jobs[dept], GLOBAL_PROC_REF(cmp_text_asc))
|
||||
. = TRUE
|
||||
|
||||
if(.)
|
||||
@@ -545,7 +545,7 @@ var/datum/controller/subsystem/ticker/SSticker
|
||||
round_start_time = world.time
|
||||
|
||||
callHook("roundstart")
|
||||
INVOKE_ASYNC(src, .proc/roundstart)
|
||||
INVOKE_ASYNC(src, PROC_REF(roundstart))
|
||||
|
||||
log_debug("SSticker: Running [LAZYLEN(roundstart_callbacks)] round-start callbacks.")
|
||||
run_callback_list(roundstart_callbacks)
|
||||
|
||||
@@ -274,7 +274,7 @@ var/datum/controller/subsystem/timer/SStimer
|
||||
return
|
||||
|
||||
// Sort all timers by time to run
|
||||
sortTim(alltimers, .proc/cmp_timer)
|
||||
sortTim(alltimers, GLOBAL_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
|
||||
|
||||
@@ -417,7 +417,7 @@
|
||||
D.plane = T.shadower.plane
|
||||
found_oo += D
|
||||
|
||||
sortTim(found_oo, /proc/cmp_planelayer)
|
||||
sortTim(found_oo, GLOBAL_PROC_REF(cmp_planelayer))
|
||||
|
||||
var/list/atoms_list_list = list()
|
||||
for (var/thing in found_oo)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
icon_state = beam_icon_state
|
||||
beam_type = btype
|
||||
if(time != -1)
|
||||
addtimer(CALLBACK(src,.proc/End), time)
|
||||
addtimer(CALLBACK(src, PROC_REF(End), time))
|
||||
|
||||
/datum/beam/proc/Start()
|
||||
recalculate()
|
||||
@@ -64,12 +64,12 @@
|
||||
return
|
||||
|
||||
/datum/beam/proc/recalculate_in(time)
|
||||
timing_id = addtimer(CALLBACK(src, .proc/recalculate), time, TIMER_STOPPABLE | TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE)
|
||||
timing_id = addtimer(CALLBACK(src, PROC_REF(recalculate)), time, TIMER_STOPPABLE | TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE)
|
||||
|
||||
/datum/beam/proc/after_calculate()
|
||||
if((sleep_time == null) || finished) //Does not automatically recalculate.
|
||||
return
|
||||
timing_id = addtimer(CALLBACK(src, .proc/recalculate), sleep_time, TIMER_STOPPABLE | TIMER_UNIQUE | TIMER_NO_HASH_WAIT)
|
||||
timing_id = addtimer(CALLBACK(src, PROC_REF(recalculate)), sleep_time, TIMER_STOPPABLE | TIMER_UNIQUE | TIMER_NO_HASH_WAIT)
|
||||
|
||||
/datum/beam/proc/End(destroy_self = TRUE)
|
||||
finished = TRUE
|
||||
@@ -209,5 +209,5 @@
|
||||
crash_with("Tried to create beam with infinite time!")
|
||||
return null
|
||||
var/datum/beam/newbeam = new beam_datum_type(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
|
||||
@@ -1,9 +1,9 @@
|
||||
USAGE:
|
||||
|
||||
var/datum/callback/C = new(object|null, /proc/type/path|"procstring", arg1, arg2, ... argn)
|
||||
var/datum/callback/C = new(object|null, TYPE_PROC_REF(type, path|"procstring"), arg1, arg2, ... argn)
|
||||
var/timerid = addtimer(C, time, timertype)
|
||||
OR
|
||||
var/timerid = addtimer(CALLBACK(object|null, /proc/type/path|procstring, arg1, arg2, ... argn), time, timertype)
|
||||
var/timerid = addtimer(CALLBACK(object|null, TYPE_PROC_REF(type, path|procstring), arg1, arg2, ... argn), time, timertype)
|
||||
|
||||
Note: proc strings can only be given for datum proc calls, global procs must be proc paths
|
||||
Also proc strings are strongly advised against because they don't compile error if the proc stops existing
|
||||
@@ -21,18 +21,18 @@
|
||||
global proc while in another global proc:
|
||||
.procname
|
||||
Example:
|
||||
CALLBACK(GLOBAL_PROC, .some_proc_here)
|
||||
CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(some_proc_here))
|
||||
|
||||
proc defined on current(src) object (when in a /proc/ and not an override) OR overridden at src or any of it's parents:
|
||||
.procname
|
||||
Example:
|
||||
CALLBACK(src, .some_proc_here)
|
||||
CALLBACK(src, PROC_REF(some_proc_here))
|
||||
|
||||
|
||||
when the above doesn't apply:
|
||||
.proc/procname
|
||||
Example:
|
||||
CALLBACK(src, .proc/some_proc_here)
|
||||
CALLBACK(src, PROC_REF(some_proc_here))
|
||||
|
||||
proc defined on a parent of a some type:
|
||||
/some/type/.proc/some_proc_here
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
|
||||
/datum/component/base_name/Initialize(var/name)
|
||||
base_name = name
|
||||
RegisterSignal(parent, COMSIG_BASENAME_RENAME, .proc/rename)
|
||||
RegisterSignal(parent, COMSIG_BASENAME_SETNAME, .proc/change_base_name)
|
||||
RegisterSignal(parent, COMSIG_BASENAME_RENAME, PROC_REF(rename))
|
||||
RegisterSignal(parent, COMSIG_BASENAME_SETNAME, PROC_REF(change_base_name))
|
||||
|
||||
/datum/component/base_name/proc/rename(var/name)
|
||||
base_name = name
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/circuitboard/stationalert/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/multitool/circuitboards, CALLBACK(src, .proc/get_multitool_ui), CALLBACK(src, .proc/on_topic))
|
||||
AddComponent(/datum/component/multitool/circuitboards, CALLBACK(src, PROC_REF(get_multitool_ui)), CALLBACK(src, PROC_REF(get_multitool_ui)))
|
||||
|
||||
/obj/item/circuitboard/stationalert/proc/get_multitool_ui(var/mob/user, var/obj/item/device/multitool/MT, var/datum/component/multitool/C)
|
||||
. += "<b>Alarm Sources</b><br>"
|
||||
|
||||
@@ -145,7 +145,7 @@ var/datum/discord_bot/discord_bot = null
|
||||
queue.Add(list(list(message, A - sent)))
|
||||
|
||||
// Schedule a push.
|
||||
addtimer(CALLBACK(src, .proc/push_queue), 10 SECONDS, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(push_queue)), 10 SECONDS, TIMER_UNIQUE)
|
||||
|
||||
// And exit.
|
||||
return
|
||||
@@ -258,7 +258,7 @@ var/datum/discord_bot/discord_bot = null
|
||||
for (var/B in destinations)
|
||||
var/datum/discord_channel/channel = B
|
||||
if (channel.send_message_to(auth_token, message) == SEND_TIMEOUT)
|
||||
addtimer(CALLBACK(src, .proc/push_queue), 10 SECONDS, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(push_queue)), 10 SECONDS, TIMER_UNIQUE)
|
||||
|
||||
return
|
||||
else
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
SEND_SIGNAL(target, COMSIG_ELEMENT_ATTACH, src)
|
||||
if(element_flags & ELEMENT_DETACH)
|
||||
RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/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)
|
||||
|
||||
@@ -73,7 +73,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, volume_override)
|
||||
var/list/atoms_cache = output_atoms
|
||||
@@ -98,7 +98,7 @@
|
||||
if(start_sound)
|
||||
play(start_sound, start_volume)
|
||||
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)
|
||||
|
||||
@@ -33,9 +33,9 @@ var/singleton/observ/moved/moved_event = new()
|
||||
/atom/movable/Entered(var/atom/movable/am, atom/old_loc)
|
||||
..()
|
||||
if(moved_event.has_listeners(am) && !moved_event.is_listening(src, am))
|
||||
moved_event.register(src, am, /atom/movable/proc/recursive_move)
|
||||
moved_event.register(src, am, TYPE_PROC_REF(/atom/movable, recursive_move))
|
||||
|
||||
/atom/movable/Exited(var/atom/movable/am, atom/old_loc)
|
||||
..()
|
||||
if(moved_event.is_listening(src, am, /atom/movable/proc/recursive_move))
|
||||
if(moved_event.is_listening(src, am, TYPE_PROC_REF(/atom/movable, recursive_move)))
|
||||
moved_event.unregister(src, am)
|
||||
|
||||
@@ -67,4 +67,4 @@
|
||||
if(mercrig)
|
||||
H.put_in_hands(mercrig)
|
||||
H.equip_to_slot_or_del(mercrig, slot_back)
|
||||
addtimer(CALLBACK(mercrig, /obj/item/rig/.proc/toggle_seals, H, TRUE), 2 SECONDS)
|
||||
addtimer(CALLBACK(mercrig, TYPE_PROC_REF(/obj/item/rig, toggle_seals), H, TRUE), 2 SECONDS)
|
||||
@@ -457,7 +457,7 @@
|
||||
var/obj/item/ID = new id(H)
|
||||
imprint_idcard(H, ID)
|
||||
if(personal_computer?.card_slot)
|
||||
addtimer(CALLBACK(src, .proc/register_pda, personal_computer, ID), 2 SECOND)
|
||||
addtimer(CALLBACK(src, PROC_REF(register_pda), personal_computer, ID), 2 SECOND)
|
||||
else
|
||||
H.equip_or_collect(ID, slot_wear_id)
|
||||
|
||||
@@ -555,7 +555,7 @@
|
||||
C.access = get_id_access(H)
|
||||
C.rank = get_id_rank(H)
|
||||
C.assignment = get_id_assignment(H)
|
||||
addtimer(CALLBACK(H, /mob/.proc/set_id_info, C), 1 SECOND) // Delay a moment to allow an icon update to happen.
|
||||
addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, set_id_info), C), 1 SECOND) // Delay a moment to allow an icon update to happen.
|
||||
|
||||
if(H.mind && H.mind.initial_account)
|
||||
C.associated_account_number = H.mind.initial_account.account_number
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
LAZYREMOVE(user.progressbars, bar.loc)
|
||||
|
||||
animate(bar, alpha = 0, time = PROGRESSBAR_ANIMATION_TIME)
|
||||
addtimer(CALLBACK(src, .proc/remove_from_client), PROGRESSBAR_ANIMATION_TIME, TIMER_CLIENT_TIME)
|
||||
addtimer(CALLBACK(src, PROC_REF(remove_from_client)), PROGRESSBAR_ANIMATION_TIME, TIMER_CLIENT_TIME)
|
||||
QDEL_IN(bar, PROGRESSBAR_ANIMATION_TIME * 2) //for garbage collection safety
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
return FALSE
|
||||
|
||||
/datum/statistic/grouped/most_deaths/get_roundend_lines()
|
||||
sortTim(values, /proc/cmp_numeric_dsc, TRUE)
|
||||
sortTim(values, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE)
|
||||
var/ckey = values[1]
|
||||
. = "[ckey], with [values[ckey]] deaths."
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
//If this hits 0 then they decide to up and leave.
|
||||
/datum/trader/proc/tick()
|
||||
addtimer(CALLBACK(src, .proc/do_after_tick), 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(do_after_tick)), 1)
|
||||
return 1
|
||||
|
||||
/datum/trader/proc/do_after_tick()
|
||||
|
||||
@@ -9,7 +9,7 @@ var/datum/uplink/uplink
|
||||
items_assoc = list()
|
||||
items = init_subtypes(/datum/uplink_item)
|
||||
categories = init_subtypes(/datum/uplink_category)
|
||||
sortTim(categories, /proc/cmp_uplink_category, FALSE)
|
||||
sortTim(categories, GLOBAL_PROC_REF(cmp_uplink_category), FALSE)
|
||||
|
||||
for(var/datum/uplink_item/item in items)
|
||||
if(!item.name)
|
||||
@@ -23,7 +23,7 @@ var/datum/uplink/uplink
|
||||
category.items += item
|
||||
|
||||
for(var/datum/uplink_category/category in categories)
|
||||
sortTim(category.items, /proc/cmp_uplink_item, FALSE)
|
||||
sortTim(category.items, GLOBAL_PROC_REF(cmp_uplink_item), FALSE)
|
||||
|
||||
/datum/uplink_item
|
||||
var/name
|
||||
|
||||
@@ -24,15 +24,15 @@
|
||||
|
||||
if(APC_WIRE_IDSCAN)
|
||||
set_locked(A, FALSE)
|
||||
addtimer(CALLBACK(src, .proc/set_locked, A, TRUE), 30 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(set_locked), A, TRUE), 30 SECONDS)
|
||||
|
||||
if (APC_WIRE_MAIN_POWER1, APC_WIRE_MAIN_POWER2)
|
||||
set_short_out(A, TRUE)
|
||||
addtimer(CALLBACK(src, .proc/set_short_out, A, FALSE), 120 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(set_short_out), A, FALSE), 120 SECONDS)
|
||||
|
||||
if (APC_WIRE_AI_CONTROL)
|
||||
set_ai_control(A, TRUE)
|
||||
addtimer(CALLBACK(src, .proc/set_ai_control, A, FALSE), 1 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(set_ai_control), A, FALSE), 1 SECONDS)
|
||||
|
||||
|
||||
/datum/wires/apc/proc/set_locked(var/obj/machinery/power/apc/A, var/setting)
|
||||
|
||||
@@ -45,7 +45,7 @@ var/const/SMES_WIRE_FAILSAFES = 16 // Cut to disable failsafes, mend to reenable
|
||||
if(SMES_WIRE_RCON)
|
||||
if(S.RCon)
|
||||
S.RCon = 0
|
||||
addtimer(CALLBACK(S, /obj/machinery/power/smes/buildable/.proc/reset_rcon), 10)
|
||||
addtimer(CALLBACK(S, TYPE_PROC_REF(/obj/machinery/power/smes/buildable, reset_rcon)), 10)
|
||||
if(SMES_WIRE_INPUT)
|
||||
S.toggle_input()
|
||||
if(SMES_WIRE_OUTPUT)
|
||||
@@ -55,7 +55,7 @@ var/const/SMES_WIRE_FAILSAFES = 16 // Cut to disable failsafes, mend to reenable
|
||||
if(SMES_WIRE_FAILSAFES)
|
||||
if(S.safeties_enabled)
|
||||
S.safeties_enabled = 0
|
||||
addtimer(CALLBACK(S, /obj/machinery/power/smes/buildable/.proc/reset_safeties), 10)
|
||||
addtimer(CALLBACK(S, TYPE_PROC_REF(/obj/machinery/power/smes/buildable, reset_safeties)), 10)
|
||||
|
||||
/obj/machinery/power/smes/buildable/proc/reset_safeties()
|
||||
safeties_enabled = TRUE
|
||||
|
||||
@@ -58,7 +58,7 @@ var/datum/antagonist/loyalists/loyalists
|
||||
player.equip_to_slot_or_del(new /obj/item/device/special_uplink/rev(player, player.mind), slot_in_backpack)
|
||||
|
||||
give_codewords(player)
|
||||
INVOKE_ASYNC(src, .proc/alert_loyalist_status, player)
|
||||
INVOKE_ASYNC(src, PROC_REF(alert_loyalist_status), player)
|
||||
return TRUE
|
||||
|
||||
/datum/antagonist/loyalists/proc/alert_loyalist_status(var/mob/living/carbon/human/player) //This is still dumb but it works
|
||||
|
||||
@@ -69,7 +69,7 @@ var/datum/antagonist/revolutionary/revs
|
||||
player.equip_to_slot_or_del(new /obj/item/device/special_uplink/rev(player, player.mind), slot_in_backpack)
|
||||
|
||||
give_codewords(player)
|
||||
INVOKE_ASYNC(src, .proc/alert_revolutionary_status, player)
|
||||
INVOKE_ASYNC(src, PROC_REF(alert_revolutionary_status), player)
|
||||
return TRUE
|
||||
|
||||
/datum/antagonist/revolutionary/proc/alert_revolutionary_status(var/mob/living/carbon/human/player) //This is so dumb.
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
if(E.operating)
|
||||
E.nextstate = FIREDOOR_CLOSED
|
||||
else if(!E.density)
|
||||
INVOKE_ASYNC(E, /obj/machinery/door/.proc/close)
|
||||
INVOKE_ASYNC(E, TYPE_PROC_REF(/obj/machinery/door, close))
|
||||
|
||||
/area/proc/air_doors_open()
|
||||
if(air_doors_activated)
|
||||
@@ -173,7 +173,7 @@
|
||||
if(E.operating)
|
||||
E.nextstate = FIREDOOR_OPEN
|
||||
else if(E.density)
|
||||
INVOKE_ASYNC(E, /obj/machinery/door/.proc/open)
|
||||
INVOKE_ASYNC(E, TYPE_PROC_REF(/obj/machinery/door, open))
|
||||
|
||||
/area/proc/fire_alert()
|
||||
if(!fire)
|
||||
@@ -185,7 +185,7 @@
|
||||
if(D.operating)
|
||||
D.nextstate = FIREDOOR_CLOSED
|
||||
else if(!D.density)
|
||||
INVOKE_ASYNC(D, /obj/machinery/door/.proc/close)
|
||||
INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door, close))
|
||||
|
||||
/area/proc/fire_reset()
|
||||
if (fire)
|
||||
@@ -197,7 +197,7 @@
|
||||
if(D.operating)
|
||||
D.nextstate = FIREDOOR_OPEN
|
||||
else if(D.density)
|
||||
INVOKE_ASYNC(D, /obj/machinery/door/.proc/open)
|
||||
INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door, open))
|
||||
|
||||
/area/proc/readyalert()
|
||||
if(!eject)
|
||||
@@ -225,7 +225,7 @@
|
||||
if(D.operating)
|
||||
D.nextstate = FIREDOOR_OPEN
|
||||
else if(D.density)
|
||||
INVOKE_ASYNC(D, /obj/machinery/door/.proc/open)
|
||||
INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door, open))
|
||||
|
||||
#define DO_PARTY(COLOR) animate(color = COLOR, time = 0.5 SECONDS, easing = QUAD_EASING)
|
||||
|
||||
|
||||
@@ -510,7 +510,7 @@
|
||||
M.forceMove(ling) //move inside the new dude to hide him.
|
||||
ling.occupant = M
|
||||
M.status_flags |= GODMODE //dont want him to die or breathe or do ANYTHING
|
||||
addtimer(CALLBACK(src, .proc/revert_horror_form,ling), 10 MINUTES)
|
||||
addtimer(CALLBACK(src, PROC_REF(revert_horror_form), ling), 10 MINUTES)
|
||||
|
||||
/mob/proc/revert_horror_form(var/mob/living/ling)
|
||||
if(QDELETED(ling))
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
target.disabilities |= NEARSIGHTED
|
||||
target.eye_blind = 10
|
||||
target.eye_blurry = 20
|
||||
addtimer(CALLBACK(target, /mob.proc/remove_nearsighted), 30 SECONDS)
|
||||
addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, remove_nearsighted)), 30 SECONDS)
|
||||
|
||||
/mob/proc/changeling_deaf_sting()
|
||||
set category = "Changeling"
|
||||
@@ -136,7 +136,7 @@
|
||||
..()
|
||||
to_chat(target, SPAN_DANGER("Your ears pop and begin ringing loudly!"))
|
||||
target.sdisabilities |= DEAF
|
||||
addtimer(CALLBACK(target, /mob.proc/remove_deaf), 30 SECONDS)
|
||||
addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, remove_deaf)), 30 SECONDS)
|
||||
|
||||
/mob/proc/changeling_paralysis_sting()
|
||||
set category = "Changeling"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
/datum/rune/teleport/New()
|
||||
..()
|
||||
addtimer(CALLBACK(src, .proc/random_network), 5) // if this rune somehow spawned without a network, we assign a random one
|
||||
addtimer(CALLBACK(src, PROC_REF(random_network)), 5) // if this rune somehow spawned without a network, we assign a random one
|
||||
SScult.teleport_runes += src
|
||||
|
||||
/datum/rune/teleport/Destroy()
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
return
|
||||
|
||||
/obj/effect/gateway/active/New()
|
||||
addtimer(CALLBACK(src, .proc/do_spawn), rand(30, 60) SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(do_spawn)), rand(30, 60) SECONDS)
|
||||
|
||||
/obj/effect/gateway/active/proc/do_spawn()
|
||||
var/thing = pick(spawnable)
|
||||
|
||||
@@ -327,7 +327,7 @@
|
||||
A.launch_projectile(target)
|
||||
next_shot = world.time + shot_delay
|
||||
A = null //So projectiles can GC
|
||||
addtimer(CALLBACK(src, .proc/handle_firing), shot_delay + 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(handle_firing)), shot_delay + 1)
|
||||
|
||||
/obj/structure/cult/pylon/attack_hand(mob/M)
|
||||
if (M.a_intent == "help")
|
||||
|
||||
@@ -39,11 +39,11 @@
|
||||
|
||||
// EXPAND
|
||||
if(!istype(T,type))
|
||||
addtimer(CALLBACK(src, .proc/after_tick, T), 10)
|
||||
addtimer(CALLBACK(src, PROC_REF(after_tick), T), 10)
|
||||
if(A && !istype(A,type))
|
||||
addtimer(CALLBACK(src, .proc/after_tick, A), 10)
|
||||
addtimer(CALLBACK(src, PROC_REF(after_tick), A), 10)
|
||||
if(B && !istype(B,type))
|
||||
addtimer(CALLBACK(src, .proc/after_tick, B), 10)
|
||||
addtimer(CALLBACK(src, PROC_REF(after_tick), B), 10)
|
||||
if((spawned & (NORTH|SOUTH|EAST|WEST)) == (NORTH|SOUTH|EAST|WEST))
|
||||
STOP_PROCESSING(SScalamity, src)
|
||||
|
||||
|
||||
@@ -64,8 +64,8 @@ var/global/universe_has_ended = 0
|
||||
var/time = rand(30, 60)
|
||||
log_debug("universal_state/cascade: Announcing to world in [time] seconds.")
|
||||
log_debug("universal_state/cascade: Ending universe in [(time SECONDS + 5 MINUTES)/10] seconds.")
|
||||
addtimer(CALLBACK(src, .proc/announce_to_world), time SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/end_universe), time SECONDS + 5 MINUTES)
|
||||
addtimer(CALLBACK(src, PROC_REF(announce_to_world)), time SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(end_universe)), time SECONDS + 5 MINUTES)
|
||||
|
||||
/datum/universal_state/supermatter_cascade/proc/announce_to_world()
|
||||
var/txt = {"
|
||||
|
||||
@@ -245,7 +245,7 @@ var/global/list/additional_antag_types = list()
|
||||
all_candidates += antag.candidates
|
||||
antag_templates_by_initial_spawn_req[antag] = antag.initial_spawn_req
|
||||
|
||||
sortTim(antag_templates_by_initial_spawn_req, /proc/cmp_numeric_asc, TRUE)
|
||||
sortTim(antag_templates_by_initial_spawn_req, GLOBAL_PROC_REF(cmp_numeric_asc), TRUE)
|
||||
antag_templates = list_keys(antag_templates_by_initial_spawn_req)
|
||||
|
||||
var/list/valid_templates_per_candidate = list() // number of roles each candidate can satisfy
|
||||
@@ -253,7 +253,7 @@ var/global/list/additional_antag_types = list()
|
||||
valid_templates_per_candidate[candidate]++
|
||||
|
||||
valid_templates_per_candidate = shuffle(valid_templates_per_candidate) // shuffle before sorting so that candidates with the same number of templates will be in random order
|
||||
sortTim(valid_templates_per_candidate, /proc/cmp_numeric_asc, TRUE)
|
||||
sortTim(valid_templates_per_candidate, GLOBAL_PROC_REF(cmp_numeric_asc), TRUE)
|
||||
|
||||
for(var/datum/antagonist/antag in antag_templates)
|
||||
antag.candidates = list_keys(valid_templates_per_candidate) & antag.candidates // orders antag.candidates by valid_templates_per_candidate
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
var/mob/living/L = A
|
||||
if(L.stat == DEAD)
|
||||
summoned_mobs -= L
|
||||
addtimer(CALLBACK(src, .proc/remove_summon, L), 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(remove_summon), L), 1)
|
||||
|
||||
/obj/item/technomancer_core/proc/remove_summon(var/mob/living/L)
|
||||
L.visible_message("<span class='notice'>\The [L] begins to fade away...</span>")
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
//Deal with protecting our wearer now.
|
||||
if(ready)
|
||||
ready = FALSE
|
||||
addtimer(CALLBACK(src, .proc/recharge, user), cooldown_to_charge)
|
||||
addtimer(CALLBACK(src, PROC_REF(recharge), user), cooldown_to_charge)
|
||||
visible_message("<span class='danger'>\The [user]'s [src.name] blocks [attack_text]!</span>")
|
||||
update_icon()
|
||||
return PROJECTILE_STOPPED
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
spark(L, 5, cardinal)
|
||||
spark(user, 5, cardinal)
|
||||
L.throw_at(get_step(get_turf(src), get_dir(src, L)), 4, 1, src)
|
||||
addtimer(CALLBACK(src, .proc/seize_mob, L, user), 1 SECOND)
|
||||
addtimer(CALLBACK(src, PROC_REF(seize_mob), L, user), 1 SECOND)
|
||||
user.drop_item(src)
|
||||
src.loc = null
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
admin_attacker_log_many_victims(src, victims, "used glare to stun", "was stunned by [key_name(src)] using glare", "used glare to stun")
|
||||
|
||||
verbs -= /mob/living/carbon/human/proc/vampire_glare
|
||||
ADD_VERB_IN_IF(src, 800, /mob/living/carbon/human/proc/vampire_glare, CALLBACK(src, .proc/finish_vamp_timeout))
|
||||
ADD_VERB_IN_IF(src, 800, /mob/living/carbon/human/proc/vampire_glare, CALLBACK(src, PROC_REF(finish_vamp_timeout)))
|
||||
|
||||
// Targeted stun ability, moderate duration.
|
||||
/mob/living/carbon/human/proc/vampire_hypnotise()
|
||||
@@ -236,7 +236,7 @@
|
||||
admin_attack_log(src, T, "used hypnotise to stun [key_name(T)]", "was stunned by [key_name(src)] using hypnotise", "used hypnotise on")
|
||||
|
||||
verbs -= /mob/living/carbon/human/proc/vampire_hypnotise
|
||||
ADD_VERB_IN_IF(src, 1200, /mob/living/carbon/human/proc/vampire_hypnotise, CALLBACK(src, .proc/finish_vamp_timeout))
|
||||
ADD_VERB_IN_IF(src, 1200, /mob/living/carbon/human/proc/vampire_hypnotise, CALLBACK(src, PROC_REF(finish_vamp_timeout)))
|
||||
else
|
||||
to_chat(src, SPAN_WARNING("You broke your gaze."))
|
||||
|
||||
@@ -282,7 +282,7 @@
|
||||
|
||||
vampire.use_blood(20)
|
||||
verbs -= /mob/living/carbon/human/proc/vampire_veilstep
|
||||
ADD_VERB_IN_IF(src, 300, /mob/living/carbon/human/proc/vampire_veilstep, CALLBACK(src, .proc/finish_vamp_timeout))
|
||||
ADD_VERB_IN_IF(src, 300, /mob/living/carbon/human/proc/vampire_veilstep, CALLBACK(src, PROC_REF(finish_vamp_timeout)))
|
||||
|
||||
// Summons bats.
|
||||
/mob/living/carbon/human/proc/vampire_bats()
|
||||
@@ -326,7 +326,7 @@
|
||||
|
||||
vampire.use_blood(60)
|
||||
verbs -= /mob/living/carbon/human/proc/vampire_bats
|
||||
ADD_VERB_IN_IF(src, 1200, /mob/living/carbon/human/proc/vampire_bats, CALLBACK(src, .proc/finish_vamp_timeout))
|
||||
ADD_VERB_IN_IF(src, 1200, /mob/living/carbon/human/proc/vampire_bats, CALLBACK(src, PROC_REF(finish_vamp_timeout)))
|
||||
|
||||
// Chiropteran Screech
|
||||
/mob/living/carbon/human/proc/vampire_screech()
|
||||
@@ -385,7 +385,7 @@
|
||||
log_and_message_admins("used chiropteran screech.")
|
||||
|
||||
verbs -= /mob/living/carbon/human/proc/vampire_screech
|
||||
ADD_VERB_IN_IF(src, 3600, /mob/living/carbon/human/proc/vampire_screech, CALLBACK(src, .proc/finish_vamp_timeout))
|
||||
ADD_VERB_IN_IF(src, 3600, /mob/living/carbon/human/proc/vampire_screech, CALLBACK(src, PROC_REF(finish_vamp_timeout)))
|
||||
|
||||
// Enables the vampire to be untouchable and walk through walls and other solid things.
|
||||
/mob/living/carbon/human/proc/vampire_veilwalk()
|
||||
@@ -473,7 +473,7 @@
|
||||
if(owner_mob.stat)
|
||||
if(owner_mob.stat == UNCONSCIOUS)
|
||||
to_chat(owner_mob, SPAN_WARNING("You cannot maintain this form while unconcious."))
|
||||
addtimer(CALLBACK(src, .proc/kick_unconcious), 10, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(kick_unconcious)), 10, TIMER_UNIQUE)
|
||||
else
|
||||
deactivate()
|
||||
return
|
||||
@@ -749,7 +749,7 @@
|
||||
|
||||
vampire.use_blood(150)
|
||||
verbs -= /mob/living/carbon/human/proc/vampire_enthrall
|
||||
ADD_VERB_IN_IF(src, 2800, /mob/living/carbon/human/proc/vampire_enthrall, CALLBACK(src, .proc/finish_vamp_timeout))
|
||||
ADD_VERB_IN_IF(src, 2800, /mob/living/carbon/human/proc/vampire_enthrall, CALLBACK(src, PROC_REF(finish_vamp_timeout)))
|
||||
|
||||
// Makes the vampire appear 'friendlier' to others.
|
||||
/mob/living/carbon/human/proc/vampire_presence()
|
||||
@@ -1010,4 +1010,4 @@
|
||||
G.synch()
|
||||
|
||||
verbs -= /mob/living/carbon/human/proc/grapple
|
||||
ADD_VERB_IN_IF(src, 800, /mob/living/carbon/human/proc/grapple, CALLBACK(src, .proc/finish_vamp_timeout, VAMP_FRENZIED))
|
||||
ADD_VERB_IN_IF(src, 800, /mob/living/carbon/human/proc/grapple, CALLBACK(src, PROC_REF(finish_vamp_timeout), VAMP_FRENZIED))
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
/proc/get_all_access_datums()
|
||||
if(!priv_all_access_datums)
|
||||
priv_all_access_datums = init_subtypes(/datum/access)
|
||||
sortTim(priv_all_access_datums, /proc/cmp_access, FALSE)
|
||||
sortTim(priv_all_access_datums, GLOBAL_PROC_REF(cmp_access), FALSE)
|
||||
|
||||
return priv_all_access_datums
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
/datum/outfit/job/representative/post_equip(mob/living/carbon/human/H, visualsOnly)
|
||||
. = ..()
|
||||
if(H && !visualsOnly)
|
||||
addtimer(CALLBACK(src, .proc/send_representative_mission, H), 5 MINUTES)
|
||||
addtimer(CALLBACK(src, PROC_REF(send_representative_mission), H), 5 MINUTES)
|
||||
return TRUE
|
||||
|
||||
/datum/outfit/job/representative/proc/send_representative_mission(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -112,7 +112,7 @@ var/global/list/bluespace_inhibitors
|
||||
playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 20)
|
||||
visible_message(SPAN_DANGER("\The [src] goes haywire!"))
|
||||
do_break()
|
||||
addtimer(CALLBACK(src, .proc/haywire_teleport), 10 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(haywire_teleport)), 10 SECONDS)
|
||||
|
||||
/obj/machinery/anti_bluespace/proc/haywire_teleport()
|
||||
|
||||
|
||||
@@ -232,7 +232,7 @@ obj/machinery/computer/general_air_control/Destroy()
|
||||
signal.data["sigtype"] = "command"
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
|
||||
addtimer(CALLBACK(SSvueui, /datum/controller/subsystem/processing/vueui/proc/check_uis_for_change, src), 5) //Just in case we get no new data
|
||||
addtimer(CALLBACK(SSvueui, TYPE_PROC_REF(/datum/controller/subsystem/processing/vueui, check_uis_for_change), src), 5) //Just in case we get no new data
|
||||
|
||||
/obj/machinery/computer/general_air_control/supermatter_core
|
||||
icon = 'icons/obj/modular_console.dmi'
|
||||
@@ -318,7 +318,7 @@ obj/machinery/computer/general_air_control/Destroy()
|
||||
signal.data["sigtype"]="command"
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
|
||||
addtimer(CALLBACK(SSvueui, /datum/controller/subsystem/processing/vueui/proc/check_uis_for_change, src), 5) //Just in case we get no new data
|
||||
addtimer(TYPE_PROC_REF(/datum/controller/subsystem/processing/vueui, check_uis_for_change), src, 5) //Just in case we get no new data
|
||||
|
||||
/obj/machinery/computer/general_air_control/fuel_injection
|
||||
icon_screen = "alert:0"
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
|
||||
if (on)
|
||||
turn_off()
|
||||
addtimer(CALLBACK(src, .proc/post_emp, was_on), severity * 300)
|
||||
addtimer(CALLBACK(src, PROC_REF(post_emp), was_on), severity * 300)
|
||||
|
||||
/obj/machinery/bot/proc/post_emp(was_on)
|
||||
stat &= ~EMPED
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
return
|
||||
var/list/target = L.Copy()
|
||||
// sortTim sorts in-place, but returns a ref to the list anyways.
|
||||
return sortTim(target, /proc/cmp_camera, FALSE)
|
||||
return sortTim(target, GLOBAL_PROC_REF(cmp_camera), FALSE)
|
||||
|
||||
mob/living/proc/near_camera()
|
||||
if (!isturf(loc))
|
||||
|
||||
@@ -15,7 +15,7 @@ var/global/list/minor_air_alarms = list()
|
||||
|
||||
/obj/machinery/computer/atmos_alert/Initialize()
|
||||
. = ..()
|
||||
atmosphere_alarm.register_alarm(src, /atom/.proc/update_icon)
|
||||
atmosphere_alarm.register_alarm(src, TYPE_PROC_REF(/atom, update_icon))
|
||||
|
||||
/obj/machinery/computer/atmos_alert/Destroy()
|
||||
atmosphere_alarm.unregister_alarm(src)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
/obj/item/card/id/guest/Initialize(mapload, duration)
|
||||
. = ..(mapload)
|
||||
expiration_time = duration + world.time
|
||||
addtimer(CALLBACK(src, .proc/expire), duration)
|
||||
addtimer(CALLBACK(src, PROC_REF(expire)), duration)
|
||||
|
||||
/obj/item/card/id/guest/proc/expire()
|
||||
icon_state += "_invalid"
|
||||
|
||||
@@ -214,9 +214,9 @@
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
|
||||
INVOKE_ASYNC(src, .proc/do_spin)
|
||||
INVOKE_ASYNC(src, PROC_REF(do_spin))
|
||||
|
||||
addtimer(CALLBACK(src, .proc/finish_spinning, user, the_name), SPIN_TIME - (REEL_DEACTIVATE_DELAY * reels.len)) //WARNING: no sanity checking for user since it's not needed and would complicate things (machine should still spin even if user is gone), be wary of this if you're changing this code.
|
||||
addtimer(CALLBACK(src, PROC_REF(finish_spinning), user, the_name), SPIN_TIME - (REEL_DEACTIVATE_DELAY * reels.len)) //WARNING: no sanity checking for user since it's not needed and would complicate things (machine should still spin even if user is gone), be wary of this if you're changing this code.
|
||||
|
||||
/obj/machinery/computer/slot_machine/proc/do_spin(mob/user, the_name)
|
||||
while(working)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
. = ..()
|
||||
if(monitor_type)
|
||||
register_monitor(new monitor_type(src))
|
||||
alarm_monitor.register_alarm(src, /atom/.proc/update_icon)
|
||||
alarm_monitor.register_alarm(src, TYPE_PROC_REF(/atom, update_icon))
|
||||
|
||||
/obj/machinery/computer/station_alert/Destroy()
|
||||
. = ..()
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
for(var/obj/machinery/door/blast/M in SSmachinery.machinery)
|
||||
if (M.id == src.id)
|
||||
same_id += M
|
||||
INVOKE_ASYNC(M, /obj/machinery/door/blast/.proc/open)
|
||||
INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/door/blast, open))
|
||||
|
||||
sleep(20)
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
sleep(50)
|
||||
|
||||
for(var/mm in same_id)
|
||||
INVOKE_ASYNC(mm, /obj/machinery/door/blast/.proc/close)
|
||||
INVOKE_ASYNC(mm, TYPE_PROC_REF(/obj/machinery/door/blast, close))
|
||||
|
||||
icon_state = "launcherbtt"
|
||||
active = 0
|
||||
|
||||
@@ -686,13 +686,13 @@ About the new airlock wires panel:
|
||||
main_power_lost_until = mainPowerCablesCut() ? -1 : world.time + SecondsToTicks(60)
|
||||
main_power_lost_at = world.time
|
||||
if (main_power_lost_until > 0)
|
||||
addtimer(CALLBACK(src, .proc/regainMainPower), 60 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
addtimer(CALLBACK(src, PROC_REF(regainMainPower)), 60 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
|
||||
// If backup power is permanently disabled then activate in 10 seconds if possible, otherwise it's already enabled or a timer is already running
|
||||
if(backup_power_lost_until == -1 && !backupPowerCablesCut())
|
||||
backup_power_lost_until = world.time + SecondsToTicks(10)
|
||||
backup_power_lost_at = world.time
|
||||
addtimer(CALLBACK(src, .proc/regainBackupPower), 10 SECONDS, TIMER_UNIQUE | TIMER_NO_HASH_WAIT)
|
||||
addtimer(CALLBACK(src, PROC_REF(regainBackupPower)), 10 SECONDS, TIMER_UNIQUE | TIMER_NO_HASH_WAIT)
|
||||
|
||||
if(!arePowerSystemsOn() && !isnull(aiActionTimer)) // AI action timer gets reset if any
|
||||
deltimer(aiActionTimer)
|
||||
@@ -704,7 +704,7 @@ About the new airlock wires panel:
|
||||
backup_power_lost_until = backupPowerCablesCut() ? -1 : world.time + SecondsToTicks(60)
|
||||
backup_power_lost_at = world.time
|
||||
if (backup_power_lost_until > 0)
|
||||
addtimer(CALLBACK(src, .proc/regainBackupPower), 60 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
addtimer(CALLBACK(src, PROC_REF(regainBackupPower)), 60 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
|
||||
if(!arePowerSystemsOn() && !isnull(aiActionTimer)) // AI action timer gets reset if any
|
||||
deltimer(aiActionTimer)
|
||||
@@ -747,7 +747,7 @@ About the new airlock wires panel:
|
||||
electrified_until = duration == -1 ? -1 : world.time + SecondsToTicks(duration)
|
||||
electrified_at = world.time
|
||||
if (electrified_until > 0)
|
||||
addtimer(CALLBACK(src, .proc/electrify, 0), duration SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
addtimer(CALLBACK(src, PROC_REF(electrify), 0), duration SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
|
||||
|
||||
if(feedback && message)
|
||||
to_chat(usr, message)
|
||||
@@ -1175,11 +1175,11 @@ About the new airlock wires panel:
|
||||
else if(activate)
|
||||
to_chat(usr, SPAN_NOTICE("The door bolts should drop in [src.aiBoltingDelay] seconds."))
|
||||
src.audible_message("[icon2html(src.icon, viewers(get_turf(src)))] <b>[src]</b> announces, <span class='notice'>\"Bolts set to drop in <strong>[src.aiBoltingDelay] seconds</strong>.\"</span>")
|
||||
src.aiActionTimer = addtimer(CALLBACK(src, .proc/lock), src.aiBoltingDelay SECONDS, TIMER_UNIQUE|TIMER_NO_HASH_WAIT|TIMER_STOPPABLE)
|
||||
src.aiActionTimer = addtimer(CALLBACK(src, PROC_REF(lock)), src.aiBoltingDelay SECONDS, TIMER_UNIQUE|TIMER_NO_HASH_WAIT|TIMER_STOPPABLE)
|
||||
else
|
||||
to_chat(usr, SPAN_NOTICE("The door bolts should raise in [src.aiUnBoltingDelay] seconds."))
|
||||
src.audible_message("[icon2html(src.icon, viewers(get_turf(src)))] <b>[src]</b> announces, <span class='notice'>\"Bolts set to raise in <strong>[src.aiUnBoltingDelay] seconds</strong>.\"</span>")
|
||||
src.aiActionTimer = addtimer(CALLBACK(src, .proc/unlock), src.aiUnBoltingDelay SECONDS, TIMER_UNIQUE|TIMER_NO_HASH_WAIT|TIMER_STOPPABLE)
|
||||
src.aiActionTimer = addtimer(CALLBACK(src, PROC_REF(unlock)), src.aiUnBoltingDelay SECONDS, TIMER_UNIQUE|TIMER_NO_HASH_WAIT|TIMER_STOPPABLE)
|
||||
else // everyone else
|
||||
if(activate)
|
||||
if(src.lock())
|
||||
@@ -1305,7 +1305,7 @@ About the new airlock wires panel:
|
||||
"You hear a welding torch on metal."
|
||||
)
|
||||
playsound(src, 'sound/items/welder.ogg', 50, 1)
|
||||
if(!WT.use_tool(src, user, 20, volume = 50, extra_checks = CALLBACK(src, .proc/is_open, src.density)))
|
||||
if(!WT.use_tool(src, user, 20, volume = 50, extra_checks = CALLBACK(src, PROC_REF(is_open), src.density)))
|
||||
return TRUE
|
||||
if(!WT.use(0,user))
|
||||
to_chat(user, SPAN_NOTICE("You need more welding fuel to complete this task."))
|
||||
@@ -1411,7 +1411,7 @@ About the new airlock wires panel:
|
||||
SPAN_WARNING("You start cutting the airlock control panel..."),\
|
||||
SPAN_NOTICE("You hear a loud buzzing sound and metal grinding on metal...")\
|
||||
)
|
||||
if(do_after(user, ChainSawVar.opendelay SECONDS, act_target = user, extra_checks = CALLBACK(src, .proc/CanChainsaw, C)))
|
||||
if(do_after(user, ChainSawVar.opendelay SECONDS, act_target = user, extra_checks = CALLBACK(src, PROC_REF(CanChainsaw), C)))
|
||||
user.visible_message(\
|
||||
SPAN_WARNING("[user.name] finishes cutting the control pannel of the airlock with the [C]."),\
|
||||
SPAN_WARNING("You finish cutting the airlock control panel."),\
|
||||
@@ -1429,7 +1429,7 @@ About the new airlock wires panel:
|
||||
SPAN_WARNING("You start cutting below the airlock..."),\
|
||||
SPAN_NOTICE("You hear a loud buzzing sound and metal grinding on metal...")\
|
||||
)
|
||||
if(do_after(user, ChainSawVar.opendelay SECONDS, act_target = user, extra_checks = CALLBACK(src, .proc/CanChainsaw, C)))
|
||||
if(do_after(user, ChainSawVar.opendelay SECONDS, act_target = user, extra_checks = CALLBACK(src, PROC_REF(CanChainsaw), C)))
|
||||
user.visible_message(\
|
||||
SPAN_WARNING("[user.name] finishes cutting below the airlock with the [C]."),\
|
||||
SPAN_NOTICE("You finish cutting below the airlock."),\
|
||||
@@ -1445,7 +1445,7 @@ About the new airlock wires panel:
|
||||
SPAN_WARNING("You start cutting between the airlock..."),\
|
||||
SPAN_NOTICE("You hear a loud buzzing sound and metal grinding on metal...")\
|
||||
)
|
||||
if(do_after(user, ChainSawVar.opendelay SECONDS, act_target = user, extra_checks = CALLBACK(src, .proc/CanChainsaw, C)))
|
||||
if(do_after(user, ChainSawVar.opendelay SECONDS, act_target = user, extra_checks = CALLBACK(src, PROC_REF(CanChainsaw), C)))
|
||||
user.visible_message(\
|
||||
SPAN_WARNING("[user.name] finishes cutting between the airlock."),\
|
||||
SPAN_WARNING("You finish cutting between the airlock."),\
|
||||
@@ -1674,10 +1674,10 @@ About the new airlock wires panel:
|
||||
electrified_until = 0
|
||||
//if we lost power open 'er up
|
||||
if(insecure)
|
||||
INVOKE_ASYNC(src, /obj/machinery/door/.proc/open, 1)
|
||||
INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/machinery/door, open), 1)
|
||||
securitylock = TRUE
|
||||
else if(securitylock)
|
||||
INVOKE_ASYNC(src, /obj/machinery/door/.proc/close, 1)
|
||||
INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/machinery/door, close), 1)
|
||||
securitylock = FALSE
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
return
|
||||
|
||||
if (ROUND_IS_STARTED)
|
||||
addtimer(CALLBACK(src, .proc/execute_current_command), 2 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(execute_current_command)), 2 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
else
|
||||
SSticker.OnRoundstart(CALLBACK(src, .proc/handle_queue_command))
|
||||
SSticker.OnRoundstart(CALLBACK(src, PROC_REF(handle_queue_command)))
|
||||
waiting_for_roundstart = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/proc/handle_queue_command()
|
||||
@@ -314,4 +314,4 @@
|
||||
|
||||
//if there's no power, receive the signal but just don't do anything. This allows airlocks to continue to work normally once power is restored
|
||||
if(arePowerSystemsOn())
|
||||
INVOKE_ASYNC(src, .proc/execute_current_command)
|
||||
INVOKE_ASYNC(src, PROC_REF(execute_current_command))
|
||||
|
||||
@@ -188,9 +188,9 @@
|
||||
return
|
||||
if((stat & NOPOWER) && fail_secure)
|
||||
securitylock = !density // Blast doors will only re-open when power is restored if they were open originally.
|
||||
INVOKE_ASYNC(src, /obj/machinery/door/blast/.proc/force_close)
|
||||
INVOKE_ASYNC(src, PROC_REF(force_close))
|
||||
else if(securitylock && fail_secure)
|
||||
INVOKE_ASYNC(src, /obj/machinery/door/blast/.proc/force_open)
|
||||
INVOKE_ASYNC(src, PROC_REF(force_open))
|
||||
securitylock = FALSE
|
||||
|
||||
/obj/machinery/door/blast/attack_hand(mob/user as mob)
|
||||
|
||||
@@ -133,10 +133,10 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/proc/close_door_in(var/time = 5 SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/close), time, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(close)), time, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
|
||||
/obj/machinery/door/proc/close_hatch_in(var/time = 3 SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/close_hatch), time, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(close_hatch)), time, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
|
||||
/obj/machinery/door/proc/can_open()
|
||||
if(!density || operating || !ROUND_IS_STARTED)
|
||||
@@ -537,7 +537,7 @@
|
||||
if (autoclose)
|
||||
for (var/atom/movable/M in get_turf(src))
|
||||
if (M.density && M != src)
|
||||
addtimer(CALLBACK(src, .proc/autoclose), 60, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(autoclose)), 60, TIMER_UNIQUE)
|
||||
break
|
||||
operating = TRUE
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
close()
|
||||
|
||||
if(needs_to_close)
|
||||
addtimer(CALLBACK(src, .proc/do_close), 50)
|
||||
addtimer(CALLBACK(src, PROC_REF(do_close)), 50)
|
||||
|
||||
/obj/machinery/door/firedoor/proc/do_close()
|
||||
var/alarmed = FALSE
|
||||
@@ -275,7 +275,7 @@
|
||||
SPAN_ITALIC("You hear a welding torch on metal.")
|
||||
)
|
||||
playsound(src, 'sound/items/welder.ogg', 50, 1)
|
||||
if(!WT.use_tool(src, user, 20, volume = 50, extra_checks = CALLBACK(src, .proc/is_open, src.density)))
|
||||
if(!WT.use_tool(src, user, 20, volume = 50, extra_checks = CALLBACK(src, PROC_REF(is_open), src.density)))
|
||||
return
|
||||
if(!WT.use(0,user))
|
||||
to_chat(user, SPAN_NOTICE("You need more welding fuel to complete this task."))
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
open()
|
||||
else
|
||||
open()
|
||||
addtimer(CALLBACK(src, .proc/close), check_access(null) ? 5 SECONDS : 2 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(close)), check_access(null) ? 5 SECONDS : 2 SECONDS)
|
||||
|
||||
/obj/machinery/door/window/allowed(mob/M)
|
||||
. = ..()
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
soundloop = new(src, FALSE)
|
||||
|
||||
var/area/A = get_area(src)
|
||||
RegisterSignal(A, COMSIG_AREA_FIRE_ALARM, /atom/.proc/update_icon)
|
||||
RegisterSignal(A, COMSIG_AREA_FIRE_ALARM, TYPE_PROC_REF(/atom, update_icon))
|
||||
|
||||
/obj/machinery/firealarm/Destroy()
|
||||
QDEL_NULL(soundloop)
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
// If the cell is almost empty rarely "flicker" the light. Aesthetic only.
|
||||
if((cell.percent() < 10) && prob(5))
|
||||
set_light(brightness_on/3, 0.5)
|
||||
addtimer(CALLBACK(src, .proc/stop_flicker), 5, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(stop_flicker)), 5, TIMER_UNIQUE)
|
||||
|
||||
cell.use(use*CELLRATE)
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ Possible to do for anyone motivated enough:
|
||||
to_chat(usr, SPAN_DANGER("Could not locate that holopad, this is a bug!"))
|
||||
return
|
||||
connected_pad = HP
|
||||
INVOKE_ASYNC(src, .proc/make_call, connected_pad, usr, forcing_call)
|
||||
INVOKE_ASYNC(src, PROC_REF(make_call), connected_pad, usr, forcing_call)
|
||||
|
||||
if(href_list["toggle_command"])
|
||||
forcing_call = !forcing_call
|
||||
|
||||
@@ -67,6 +67,6 @@
|
||||
update_icon()
|
||||
for(var/obj/machinery/holosign/M in SSmachinery.machinery)
|
||||
if (M.id == src.id)
|
||||
INVOKE_ASYNC(M, /obj/machinery/holosign/proc/toggle)
|
||||
INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/holosign, toggle))
|
||||
|
||||
return
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
|
||||
for(var/obj/machinery/sparker/M in SSmachinery.machinery)
|
||||
if (M.id == 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 SSmachinery.machinery)
|
||||
if(M.id == id)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
name = "light switch ([area.name])"
|
||||
|
||||
src.on = src.area.lightswitch
|
||||
addtimer(CALLBACK(src, .proc/sync_lights), 25)
|
||||
addtimer(CALLBACK(src, PROC_REF(sync_lights)), 25)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/light_switch/update_icon()
|
||||
|
||||
@@ -465,7 +465,7 @@ Class Procs:
|
||||
message = "\The [src] rattles to life and spits out a paper titled [paper]."
|
||||
visible_message(SPAN_NOTICE(message))
|
||||
|
||||
addtimer(CALLBACK(src, .proc/print_move_paper, paper), print_delay)
|
||||
addtimer(CALLBACK(src, PROC_REF(print_move_paper), paper), print_delay)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
hide(!T.is_plating())
|
||||
center = T
|
||||
|
||||
addtimer(CALLBACK(src, .proc/magnetic_process), 0, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(magnetic_process)), 0, TIMER_UNIQUE)
|
||||
|
||||
/obj/machinery/magnetic_module/LateInitialize()
|
||||
if(SSradio)
|
||||
|
||||
@@ -82,7 +82,7 @@ var/global/list/navbeacons // no I don't like putting this in, but it will do
|
||||
/obj/machinery/navbeacon/receive_signal(datum/signal/signal)
|
||||
var/request = signal.data["findbeacon"]
|
||||
if(request && ((request in codes) || request == "any" || request == location))
|
||||
addtimer(CALLBACK(src, .proc/post_signal), 1)
|
||||
addtimer(CALLBACK(src, PROC_REF(post_signal)), 1)
|
||||
|
||||
// return a signal giving location and transponder codes
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
src.ispowered = 1
|
||||
src.update_icon()
|
||||
else
|
||||
addtimer(CALLBACK(src, .proc/post_power_loss), rand(1, 15))
|
||||
addtimer(CALLBACK(src, PROC_REF(post_power_loss)), rand(1, 15))
|
||||
|
||||
/obj/machinery/newscaster/proc/post_power_loss()
|
||||
ispowered = 0
|
||||
@@ -1030,7 +1030,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
if (!alert)
|
||||
alert = 1
|
||||
update_icon()
|
||||
addtimer(CALLBACK(src, .proc/clearAlert), 300, TIMER_UNIQUE)
|
||||
addtimer(CALLBACK(src, PROC_REF(clearAlert)), 300, TIMER_UNIQUE)
|
||||
|
||||
playsound(src.loc, 'sound/machines/twobeep.ogg', 75, 1)
|
||||
else
|
||||
|
||||
@@ -308,7 +308,7 @@
|
||||
if(powered())
|
||||
queue_icon_update()
|
||||
else
|
||||
addtimer(CALLBACK(src, .proc/lose_power), rand(1, 15))
|
||||
addtimer(CALLBACK(src, PROC_REF(lose_power)), rand(1, 15))
|
||||
|
||||
/obj/machinery/porta_turret/proc/lose_power()
|
||||
stat |= NOPOWER
|
||||
@@ -408,7 +408,7 @@
|
||||
if(I.force * 0.5 > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off
|
||||
if(!attacked && !emagged)
|
||||
attacked = 1
|
||||
addtimer(CALLBACK(src, .proc/reset_attacked), 1 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_attacked)), 1 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/porta_turret/proc/reset_attacked()
|
||||
@@ -450,7 +450,7 @@
|
||||
if(enabled)
|
||||
if(!attacked && !emagged)
|
||||
attacked = 1
|
||||
addtimer(CALLBACK(src, .proc/reset_attacked), 60, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_attacked)), 60, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
..()
|
||||
|
||||
take_damage(damage)
|
||||
@@ -468,7 +468,7 @@
|
||||
emagged = TRUE
|
||||
|
||||
enabled = FALSE
|
||||
addtimer(CALLBACK(src, .proc/post_emp_act), rand(60, 600))
|
||||
addtimer(CALLBACK(src, PROC_REF(post_emp_act)), rand(60, 600))
|
||||
|
||||
..()
|
||||
|
||||
@@ -528,7 +528,7 @@
|
||||
tryToShootAt(secondarytargets)
|
||||
|
||||
if(!targets.len && !secondarytargets.len)
|
||||
resetting = addtimer(CALLBACK(src, .proc/reset), 6 SECONDS, TIMER_UNIQUE | TIMER_STOPPABLE) // no valid targets, close the cover
|
||||
resetting = addtimer(CALLBACK(src, PROC_REF(reset)), 6 SECONDS, TIMER_UNIQUE | TIMER_STOPPABLE) // no valid targets, close the cover
|
||||
else if(resetting)
|
||||
deltimer(resetting)
|
||||
resetting = null
|
||||
@@ -769,7 +769,7 @@
|
||||
//Shooting Code:
|
||||
A.launch_projectile(target, def_zone)
|
||||
last_fired = TRUE
|
||||
addtimer(CALLBACK(src, .proc/reset_last_fired), shot_delay, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
addtimer(CALLBACK(src, PROC_REF(reset_last_fired)), shot_delay, TIMER_UNIQUE | TIMER_OVERRIDE)
|
||||
|
||||
/datum/turret_checks
|
||||
var/enabled
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
var/datum/progressbar/progbar = new(user, C.maxcharge, src)
|
||||
progbar.update(C.charge)
|
||||
LAZYADD(chargebars, progbar)
|
||||
chargebars[progbar] = addtimer(CALLBACK(src, .proc/remove_bar, progbar, null), 3 SECONDS, TIMER_UNIQUE | TIMER_STOPPABLE)
|
||||
chargebars[progbar] = addtimer(CALLBACK(src, PROC_REF(remove_bar), progbar, null), 3 SECONDS, TIMER_UNIQUE | TIMER_STOPPABLE)
|
||||
|
||||
/obj/machinery/recharger/proc/remove_bar(datum/progressbar/bar, timerid)
|
||||
if (!timerid || deltimer(timerid))
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
to_chat(user, "<span class='notice'>You link \the [C] to \the [src], it will now ring upon someone using \the [src].</span>")
|
||||
rings_pdas += C
|
||||
// WONT FIX: This requires callbacks fuck my dick.
|
||||
destroyed_event.register(C, src, .proc/remove_pda)
|
||||
destroyed_event.register(C, src, PROC_REF(remove_pda))
|
||||
update_icon()
|
||||
return TRUE
|
||||
else
|
||||
@@ -112,7 +112,7 @@
|
||||
var/message = "Attention required!"
|
||||
P.get_notification(message, 1, "[capitalize(department)]")
|
||||
|
||||
addtimer(CALLBACK(src, .proc/unping), 45 SECONDS)
|
||||
addtimer(CALLBACK(src, PROC_REF(unping)), 45 SECONDS)
|
||||
|
||||
/obj/machinery/ringer/proc/unping()
|
||||
pinged = FALSE
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
if(watching_mob.client)
|
||||
animate(holomap_datum.station_map, alpha = 0, time = 5, easing = LINEAR_EASING)
|
||||
var/mob/M = watching_mob
|
||||
addtimer(CALLBACK(src, .proc/clear_image, M, holomap_datum.station_map), 5, TIMER_CLIENT_TIME)//we give it time to fade out
|
||||
addtimer(CALLBACK(src, PROC_REF(clear_image), M, holomap_datum.station_map), 5, TIMER_CLIENT_TIME)//we give it time to fade out
|
||||
moved_event.unregister(watching_mob, src)
|
||||
destroyed_event.unregister(watching_mob, src)
|
||||
watching_mob = null
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
MK.forceMove(loc)
|
||||
// Will help make emagging the console not so easy to get away with.
|
||||
MK.info += "<br><br><span class='warning'>£%@%(*$%&(£&?*(%&£/{}</span>"
|
||||
addtimer(CALLBACK(src, .proc/UnmagConsole), 100 * length(linkedServer.decryptkey))
|
||||
addtimer(CALLBACK(src, PROC_REF(UnmagConsole)), 100 * length(linkedServer.decryptkey))
|
||||
message = rebootmsg
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user