mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-01 04:52:16 +00:00
## About The Pull Request OpenDream is adding `usr` and `args` to the `SoftReservedKeyword` pragma: https://github.com/OpenDreamProject/OpenDream/pull/2307 This PR renames `var/usr` to `var/user` and `var/args` to `var/arguments`. ## Why It's Good For The Game This pragma is currently set as an error on Aurora, because using internal var names for declared var names is cringe.
40 lines
1.0 KiB
Plaintext
40 lines
1.0 KiB
Plaintext
/**
|
|
* @file hooks.dm
|
|
* Implements hooks, a simple way to run code on pre-defined events.
|
|
*/
|
|
|
|
/** @page hooks Code hooks
|
|
* @section hooks Hooks
|
|
* A hook is defined under /hook in the type tree.
|
|
*
|
|
* To add some code to be called by the hook, define a proc under the type, as so:
|
|
* @code
|
|
hook/foo/proc/bar()
|
|
if(1)
|
|
return 1 //Sucessful
|
|
else
|
|
return 0 //Error, or runtime.
|
|
* @endcode
|
|
* All hooks must return nonzero on success, as runtimes will force return null.
|
|
*/
|
|
|
|
/**
|
|
* Calls a hook, executing every piece of code that's attached to it.
|
|
* @param hook Identifier of the hook to call.
|
|
* @returns 1 if all hooked code runs successfully, 0 otherwise.
|
|
*/
|
|
/proc/callHook(hook, list/arguments=null)
|
|
var/hook_path = text2path("/hook/[hook]")
|
|
if(!hook_path)
|
|
log_world("ERROR: Invalid hook '/hook/[hook]' called.")
|
|
return 0
|
|
|
|
var/requester = new hook_path
|
|
var/status = 1
|
|
for(var/P in typesof("[hook_path]/proc"))
|
|
if(!call(requester, P)(arglist(arguments)))
|
|
log_world("ERROR: Hook '[P]' failed or runtimed.")
|
|
status = 0
|
|
|
|
return status
|