Files
skull132 3c04d7199d Bay Merge 05NOV2014
Known errors:

* A set of errors tied to updating the fire overlays.
* A single error related to a dischephency between new and old slime
code
* A set of errors related to the recharging of stun batons
* A single error due to old machinery code coming from your grav
generator file
* A single error error from your space cooler code, due to old
atmopsherics code
* A playerpanel warning
* An error tied to extinguishing and old atmos code.
2014-11-05 23:58:05 +02:00

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/args=null)
var/hook_path = text2path("/hook/[hook]")
if(!hook_path)
error("Invalid hook '/hook/[hook]' called.")
return 0
var/caller = new hook_path
var/status = 1
for(var/P in typesof("[hook_path]/proc"))
if(!call(caller, P)(arglist(args)))
error("Hook '[P]' failed or runtimed.")
status = 0
return status