area + + + +
+ +Procs | |
LateInitialize | Sets machine power levels in the area |
---|---|
powered | weather +/////weather |
Proc Details
LateInitialize +
+Sets machine power levels in the area
powered +
+weather +/////weather
diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000000..e69de29bb2d diff --git a/CNAME b/CNAME new file mode 100644 index 00000000000..751fd545b36 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +codedocs.cev-eris.net diff --git a/area.html b/area.html new file mode 100644 index 00000000000..e17c0ca784e --- /dev/null +++ b/area.html @@ -0,0 +1,44 @@ + + +
+ + + +Procs | |
LateInitialize | Sets machine power levels in the area |
---|---|
powered | weather +/////weather |
Sets machine power levels in the area
weather +/////weather
Vars | |
atom_colours | used to store the different colors on an atom |
---|---|
reagent_flags | Chemistry. |
Procs | |
GenerateTag | Generate a tag for this atom |
LateInitialize | Late Intialization, for code that should run after all atoms have run Intialization |
New | Called when an atom is created in byond (built in engine proc) |
SetName | Name Set Handling |
add_atom_colour | Adds an instance of colour_type to the atom's atom_colours list |
get_alarm_z | Assisting procs |
set_density | Density Handling |
set_dir | Direction Handling |
set_invisibility | Invisibility Set Handling |
set_opacity | Opacity Handling |
singuloCanEat | Nar-Sie Act/Pull |
update_atom_colour | Resets the atom's color to null, and then sets it to the highest priority colour available |
used to store the different colors on an atom
+its inherent color, the colored paint applied on it, special color effect etc...
Chemistry.
Generate a tag for this atom
Late Intialization, for code that should run after all atoms have run Intialization
+To have your LateIntialize proc be called, your atoms [Initalization][/atom/proc/Initialize] +proc must return the hint +INITIALIZE_HINT_LATELOAD otherwise you will never be called.
+useful for doing things like finding other machines on GLOB.machines because you can guarantee +that all atoms will actually exist in the "WORLD" at this time and that all their Intialization +code has been run
Called when an atom is created in byond (built in engine proc)
+Not a lot happens here in SS13 code, as we offload most of the work to the +[Intialization][/atom/proc/Initialize] proc, mostly we run the preloader +if the preloader is being used and then call InitAtom of which the ultimate +result is that the Intialize proc is called.
+We also generate a tag here if the DF_USE_TAG flag is set on the atom
Name Set Handling
Adds an instance of colour_type to the atom's atom_colours list
Assisting procs
Density Handling
Direction Handling
Invisibility Set Handling
Opacity Handling
Nar-Sie Act/Pull
Resets the atom's color to null, and then sets it to the highest priority colour available
Vars | |
multiz_falling | Used to check wether or not an atom is being handled by SSfalling. |
---|---|
Procs | |
can_fall | An overridable proc used by SSfalling to determine whether or not an atom +should continue falling to the next level, or stop processing and be caught +in midair, effectively. One of the ways to make things never fall is to make +this return FALSE. |
can_pass_shield | obj/effect/shield/get_explosion_resistance() //Part of recursive explosions, probably unimplemented |
set_anchored | Sets the anchored var and returns if it was sucessfully changed or not. |
Used to check wether or not an atom is being handled by SSfalling.
An overridable proc used by SSfalling to determine whether or not an atom +should continue falling to the next level, or stop processing and be caught +in midair, effectively. One of the ways to make things never fall is to make +this return FALSE.
+If the mob has fallen and is stopped amidst a fall by this, fall_impact is +invoked with the second argument being TRUE. As opposed to the default value, FALSE.
+@param below The turf that the mob is expected to end up at. +@param dest The tile we're presuming the mob to be at for this check. Default +value is src.loc, (src. is important there!) but this is used for magboot lookahead +checks it turf/simulated/open/Enter().
+@return TRUE if the atom can continue falling in its present situation. +FALSE if it should stop falling and not invoke fall_through or fall_impact +this cycle.
obj/effect/shield/get_explosion_resistance() //Part of recursive explosions, probably unimplemented
Sets the anchored var and returns if it was sucessfully changed or not.
Client datum
+A datum that is created whenever a user joins a BYOND world, one will exist for every active connected +player
+when they first connect, this client object is created and [/client/New] is called
+When they disconnect, this client object is deleted and [/client/Del] is called
+All client topic calls go through [/client/Topic] first, so a lot of our specialised +topic handling starts here
Vars | |
completed_asset_jobs | List of all completed blocking send jobs awaiting acknowledgement by send_asset |
---|---|
externalreplyamount | Internal counter for clients sending external (IRC/Discord) relay messages via ahelp to prevent spamming. Set to a number every time an admin reply is sent, decremented for every client send. |
holder | Contains admin info. Null if client is not an admin. |
last_asset_job | Last asset send job id. |
last_message | Contains the last message sent by this client - used to protect against copy-paste spamming. |
last_message_count | contins a number of how many times a message identical to last_message was sent. |
parent_type | This line makes clients parent type be a datum |
tgui_cache_reloaded | global |
tgui_windows | global |
tooltips | datum that controls the displaying and hiding of tooltips |
total_count_reset | Next tick to reset the total message counter |
total_message_count | How many messages sent in the last 10 seconds |
Procs | |
Process_Grab | Process_Grab() +Called by client/Move() +Checks to see if you are grabbing anything and if moving will affect your grab. |
_Topic | dumb workaround because byond doesnt seem to recognize the PROC_REF(Topic) typepath for /datum/proc/Topic() from the client Topic, +so we cant queue it without this |
asset_cache_confirm_arrival | Process asset cache client topic calls for "asset_cache_confirm_arrival=[INT]" |
asset_cache_preload_data | Process asset cache client topic calls for "asset_cache_preload_data=[HTML+JSON_STRING]" |
asset_cache_update_json | Updates the client side stored json file used to keep track of what assets the client has between restarts/reconnects. |
browse_queue_flush | Blocks until all currently sending browse and browse_rsc assets have been sent. +Due to byond limitations, this proc will sleep for 1 client round trip even if the client has no pending asset sends. +This proc will return an untrue value if it had to return before confirming the send, such as timeout or the client going away. |
nanoclose | Called when a Nano UI window is closed +This is how Nano handles closed windows +It must be a verb so that it can be called using winset |
resetnano | A "panic button" verb to close all UIs on current mob. +Use it when the bug with UI not opening (because the server still considers it open despite it being closed on client) pops up. +Feel free to remove it once the bug is confirmed to be fixed. |
uiclose | verb |
List of all completed blocking send jobs awaiting acknowledgement by send_asset
Internal counter for clients sending external (IRC/Discord) relay messages via ahelp to prevent spamming. Set to a number every time an admin reply is sent, decremented for every client send.
Contains admin info. Null if client is not an admin.
Last asset send job id.
Contains the last message sent by this client - used to protect against copy-paste spamming.
contins a number of how many times a message identical to last_message was sent.
This line makes clients parent type be a datum
+By default in byond if you define a proc on datums, that proc will exist on nearly every single type +from icons to images to atoms to mobs to objs to turfs to areas, it won't however, appear on client
+instead by default they act like their own independent type so while you can do isdatum(icon) +and have it return true, you can't do isdatum(client), it will always return false.
+This makes writing oo code hard, when you have to consider this extra special case
+This line prevents that, and has never appeared to cause any ill effects, while saving us an extra +pain to think about
+This line is widely considered black fucking magic, and the fact it works is a puzzle to everyone +involved, including the current engine developer, lummox
+If you are a future developer and the engine source is now available and you can explain why this +is the way it is, please do update this comment
global
+TRUE if cache was reloaded by tgui dev server at least once.
global
+Tracks open windows for a user.
datum that controls the displaying and hiding of tooltips
Next tick to reset the total message counter
How many messages sent in the last 10 seconds
Process_Grab() +Called by client/Move() +Checks to see if you are grabbing anything and if moving will affect your grab.
dumb workaround because byond doesnt seem to recognize the PROC_REF(Topic) typepath for /datum/proc/Topic() from the client Topic, +so we cant queue it without this
Process asset cache client topic calls for "asset_cache_confirm_arrival=[INT]"
Process asset cache client topic calls for "asset_cache_preload_data=[HTML+JSON_STRING]"
Updates the client side stored json file used to keep track of what assets the client has between restarts/reconnects.
Blocks until all currently sending browse and browse_rsc assets have been sent. +Due to byond limitations, this proc will sleep for 1 client round trip even if the client has no pending asset sends. +This proc will return an untrue value if it had to return before confirming the send, such as timeout or the client going away.
Called when a Nano UI window is closed +This is how Nano handles closed windows +It must be a verb so that it can be called using winset
+@return nothing
A "panic button" verb to close all UIs on current mob. +Use it when the bug with UI not opening (because the server still considers it open despite it being closed on client) pops up. +Feel free to remove it once the bug is confirmed to be fixed.
+@return nothing
verb
+Called by UIs when they are closed. +Must be a verb so winset() can call it.
+required uiref ref The UI that was closed.
|
|
MC_AVG_OVER_TIME | creates a running average of "things elapsed" per time period when you need to count via a smaller time period. +eg you want an average number of things happening per second but you measure the event every tick (100 milliseconds). +make sure both time intervals are in the same units. doesnt work if current_duration > total_duration or if total_duration == 0 |
---|---|
MC_RUNNING | Returns true if the MC is initialized and running. +Optional argument init_stage controls what stage the mc must have initializted to count as initialized. Defaults to INITSTAGE_MAX if not specified. |
SubSystem flags (Please design any new flags so that the default is off, to make adding flags to subsystems easier) | |
SS_NO_INIT | subsystem does not initialize. |
SS_NO_FIRE | subsystem does not fire. +(like can_fire = 0, but keeps it from getting added to the processing subsystems list) +(Requires a MC restart to change) |
SS_BACKGROUND | Subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) +SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump |
SS_TICKER | Treat wait as a tick count, not DS, run every wait ticks. +(also forces it to run first in the tick (unless SS_BACKGROUND)) +(We don't want to be choked out by other subsystems queuing into us) +(implies all runlevels because of how it works) +This is designed for basically anything that works as a mini-mc (like SStimer) |
SS_KEEP_TIMING | keep the subsystem's timing on point by firing early if it fired late last fire because of lag +ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds. |
SS_POST_FIRE_TIMING | Calculate its next fire after its fired. +(IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be) +This flag overrides SS_KEEP_TIMING |
SUBSYSTEM STATES + | |
SS_IDLE | ain't doing shit. |
SS_QUEUED | queued to run |
SS_RUNNING | actively running |
SS_PAUSED | paused by mc_tick_check |
SS_SLEEPING | fire() slept. |
SS_PAUSING | in the middle of pausing |
INITSTAGE_EARLY | Early init stuff that doesn't need to wait for mapload |
INITSTAGE_MAIN | Main init stage |
INITSTAGE_MAX | Highest initstage. |
Early init stuff that doesn't need to wait for mapload
Main init stage
Highest initstage.
creates a running average of "things elapsed" per time period when you need to count via a smaller time period. +eg you want an average number of things happening per second but you measure the event every tick (100 milliseconds). +make sure both time intervals are in the same units. doesnt work if current_duration > total_duration or if total_duration == 0
Returns true if the MC is initialized and running. +Optional argument init_stage controls what stage the mc must have initializted to count as initialized. Defaults to INITSTAGE_MAX if not specified.
Subsystem only runs on spare cpu (after all non-background subsystems have ran that tick) +SS_BACKGROUND has its own priority bracket, this overrides SS_TICKER's priority bump
ain't doing shit.
keep the subsystem's timing on point by firing early if it fired late last fire because of lag +ie: if a 20ds subsystem fires say 5 ds late due to lag or what not, its next fire would be in 15ds, not 20ds.
subsystem does not fire. +(like can_fire = 0, but keeps it from getting added to the processing subsystems list) +(Requires a MC restart to change)
subsystem does not initialize.
paused by mc_tick_check
in the middle of pausing
Calculate its next fire after its fired. +(IE: if a 5ds wait SS takes 2ds to run, its next fire should be 5ds away, not 3ds like it normally would be) +This flag overrides SS_KEEP_TIMING
queued to run
actively running
fire() slept.
Treat wait as a tick count, not DS, run every wait ticks. +(also forces it to run first in the tick (unless SS_BACKGROUND)) +(We don't want to be choked out by other subsystems queuing into us) +(implies all runlevels because of how it works) +This is designed for basically anything that works as a mini-mc (like SStimer)
GLOBAL_MANAGED | Creates a global initializer with a given InitValue expression, do not use |
---|---|
GLOBAL_UNMANAGED | Creates an empty global initializer, do not use |
GLOBAL_PROTECT | Prevents a given global from being VV'd |
GLOBAL_REAL_VAR | Standard BYOND global, do not use |
GLOBAL_REAL | Standard typed BYOND global, do not use |
GLOBAL_RAW | Defines a global var on the controller, do not use |
GLOBAL_VAR_INIT | Create an untyped global with an initializer expression |
GLOBAL_VAR_CONST | Create a global const var, do not use |
GLOBAL_LIST_INIT | Create a list global with an initializer expression |
GLOBAL_LIST_EMPTY | Create a list global that is initialized as an empty list |
GLOBAL_LIST_INIT_TYPED | Create a typed list global with an initializer expression |
GLOBAL_LIST_EMPTY_TYPED | Create a typed list global that is initialized as an empty list |
GLOBAL_DATUM_INIT | Create a typed global with an initializer expression |
GLOBAL_VAR | Create an untyped null global |
GLOBAL_LIST | Create a null global list |
GLOBAL_DATUM | Create a typed null global |
Create a typed null global
Create a typed global with an initializer expression
Create a null global list
Create a list global that is initialized as an empty list
Create a typed list global that is initialized as an empty list
Create a list global with an initializer expression
Create a typed list global with an initializer expression
Creates a global initializer with a given InitValue expression, do not use
Prevents a given global from being VV'd
Defines a global var on the controller, do not use
Standard typed BYOND global, do not use
Standard BYOND global, do not use
Creates an empty global initializer, do not use
Create an untyped null global
Create a global const var, do not use
Create an untyped global with an initializer expression
BANTYPE_ANY_FULLBAN | used to locate stuff to unban. |
---|
used to locate stuff to unban.
CALLBACK | A shorthand for the callback datum, documented here |
---|---|
VERB_CALLBACK | like CALLBACK but specifically for verb callbacks |
A shorthand for the callback datum, documented here
like CALLBACK but specifically for verb callbacks
PIPE_UP | Z-Level stuff |
---|---|
PIPE_GAS_FILTER_M | Z-Level stuff |
PIPE_UNIVERSAL | Supply, scrubbers and universal pipes |
PIPE_MTVALVEM | Mirrored T-valve ~ because I couldn't be bothered re-sorting all of the defines |
Z-Level stuff
Mirrored T-valve ~ because I couldn't be bothered re-sorting all of the defines
Supply, scrubbers and universal pipes
Z-Level stuff
COMSIG_CD_STOP | COOLDOWN SYSTEMS |
---|
COOLDOWN SYSTEMS
COMPONENT_INCOMPATIBLE | Return this from /datum/component/Initialize or datum/component/OnTransfer to have the component be deleted if it's applied to an incorrect type.
+parent must not be modified if this is to be returned.
+This will be noted in the runtime logs |
---|---|
COMPONENT_NOTRANSFER | Returned in PostTransfer to prevent transfer, similar to COMPONENT_INCOMPATIBLE |
COMPONENT_TRANSFER | Used in _upgrades.dm. Didn't do anything prior to the update to 2022 TG components and won't do anything now. Consider removing or defining behavior. |
ELEMENT_INCOMPATIBLE | Return value to cancel attaching |
ELEMENT_DETACH_ON_HOST_DESTROY | Causes the detach proc to be called when the host object is being deleted. +Should only be used if you need to perform cleanup not related to the host object. +You do not need this if you are only unregistering signals, for instance. +You would need it if you are doing something like removing the target from a processing list. |
ELEMENT_BESPOKE | Only elements created with the same arguments given after argument_hash_start_idx share an element instance
+The arguments are the same when the text and number values are the same and all other values have the same ref |
ELEMENT_COMPLEX_DETACH | Causes all detach arguments to be passed to detach instead of only being used to identify the element +When this is used your Detach proc should have the same signature as your Attach proc |
COMPONENT_DUPE_HIGHLANDER | old component is deleted (default) |
COMPONENT_DUPE_ALLOWED | duplicates allowed |
COMPONENT_DUPE_UNIQUE | new component is deleted |
COMPONENT_DUPE_UNIQUE_PASSARGS | old component is given the initialization args of the new |
COMPONENT_DUPE_SELECTIVE | each component of the same type is consulted as to whether the duplicate should be allowed |
duplicates allowed
old component is deleted (default)
each component of the same type is consulted as to whether the duplicate should be allowed
new component is deleted
old component is given the initialization args of the new
Return this from /datum/component/Initialize
or datum/component/OnTransfer
to have the component be deleted if it's applied to an incorrect type.
+parent
must not be modified if this is to be returned.
+This will be noted in the runtime logs
Returned in PostTransfer to prevent transfer, similar to COMPONENT_INCOMPATIBLE
Used in _upgrades.dm. Didn't do anything prior to the update to 2022 TG components and won't do anything now. Consider removing or defining behavior.
Only elements created with the same arguments given after argument_hash_start_idx
share an element instance
+The arguments are the same when the text and number values are the same and all other values have the same ref
Causes all detach arguments to be passed to detach instead of only being used to identify the element +When this is used your Detach proc should have the same signature as your Attach proc
Causes the detach proc to be called when the host object is being deleted. +Should only be used if you need to perform cleanup not related to the host object. +You do not need this if you are only unregistering signals, for instance. +You would need it if you are doing something like removing the target from a processing list.
Return value to cancel attaching
SEND_SIGNAL | Used to trigger signals and call procs registered for that signal +The datum hosting the signal is automaticaly added as the first argument +Returns a bitfield gathered from all registered procs +Arguments given here are packaged in a list and given to _SendSignal |
---|---|
SEND_SIGNAL_OLD | Old method of sending signals, anything using this should be updated to work with SEND_SIGNAL() |
SIGNAL_HANDLER | Signifies that this proc is used to handle signals. +Every proc you pass to RegisterSignal must have this. |
AddElement | A wrapper for _AddElement that allows us to pretend we're using normal named arguments |
RemoveElement | A wrapper for _RemoveElement that allows us to pretend we're using normal named arguments |
AddComponent | A wrapper for _AddComponent that allows us to pretend we're using normal named arguments |
LoadComponent | A wrapper for _LoadComponent that allows us to pretend we're using normal named arguments |
A wrapper for _AddComponent that allows us to pretend we're using normal named arguments
A wrapper for _AddElement that allows us to pretend we're using normal named arguments
A wrapper for _LoadComponent that allows us to pretend we're using normal named arguments
A wrapper for _RemoveElement that allows us to pretend we're using normal named arguments
Used to trigger signals and call procs registered for that signal +The datum hosting the signal is automaticaly added as the first argument +Returns a bitfield gathered from all registered procs +Arguments given here are packaged in a list and given to _SendSignal
Old method of sending signals, anything using this should be updated to work with SEND_SIGNAL()
Signifies that this proc is used to handle signals. +Every proc you pass to RegisterSignal must have this.
COMSIG_COMPONENT_ADDED | when a component is added to a datum: (/datum/component) |
---|---|
COMSIG_COMPONENT_REMOVING | before a component is removed from a datum because of ClearFromParent: (/datum/component) |
COMSIG_PARENT_PREQDELETED | before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation +you should only be using this if you want to block deletion +that's the only functional difference between it and COMSIG_PARENT_QDELETING, outside setting QDELETING to detect |
COMSIG_PARENT_QDELETING | just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called |
COMSIG_PARENT_QDELETED | after a datum's Destroy() is called: (force, qdel_hint), at this point none of the other components chose to interrupt qdel and Destroy has been called |
COMSIG_TOPIC | generic topic handler (usr, href_list) |
COMSIG_VV_TOPIC | handler for vv_do_topic (usr, href_list) |
COMSIG_UI_ACT | from datum ui_act (usr, action) |
COMSIG_ELEMENT_ATTACH | fires on the target datum when an element is attached to it (/datum/element) |
COMSIG_ELEMENT_DETACH | fires on the target datum when an element is attached to it (/datum/element) |
COMSIG_STORAGE_INSERTED | Component Specific Signals |
when a component is added to a datum: (/datum/component)
before a component is removed from a datum because of ClearFromParent: (/datum/component)
fires on the target datum when an element is attached to it (/datum/element)
fires on the target datum when an element is attached to it (/datum/element)
before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation +you should only be using this if you want to block deletion +that's the only functional difference between it and COMSIG_PARENT_QDELETING, outside setting QDELETING to detect
after a datum's Destroy() is called: (force, qdel_hint), at this point none of the other components chose to interrupt qdel and Destroy has been called
just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called
Component Specific Signals
generic topic handler (usr, href_list)
from datum ui_act (usr, action)
handler for vv_do_topic (usr, href_list)
GHOSTCAST | WIZARD |
---|
WIZARD
ITEM_SIZE_TINY | Usually items smaller then a human hand, (e.g. playing cards, lighter, scalpel, coins/holochips) |
---|---|
ITEM_SIZE_SMALL | Pockets can hold small and tiny items, (e.g. flashlight, multitool, grenades, GPS device) |
ITEM_SIZE_NORMAL | Standard backpacks can carry tiny, small & normal items, (e.g. fire extinguisher, stun baton, gas mask, metal sheets) |
ITEM_SIZE_BULKY | Items that can be wielded or equipped, (e.g. defibrillator, backpack, space suits) |
ITEM_SIZE_HUGE | Usually represents objects that require two hands to operate, (e.g. shotgun, two-handed melee weapons) |
ITEM_SIZE_GARGANTUAN | Essentially means it cannot be picked up or placed in an inventory, (e.g. mech parts, safe) |
ITEM_SIZE_COLOSSAL | For something large which takes an entire tile, (e.g. a full glass window, or a girder) |
ITEM_SIZE_TITANIC | Something so large that it extends beyond the confines of its tile, (e.g. scrap beacon) |
Items that can be wielded or equipped, (e.g. defibrillator, backpack, space suits)
For something large which takes an entire tile, (e.g. a full glass window, or a girder)
Essentially means it cannot be picked up or placed in an inventory, (e.g. mech parts, safe)
Usually represents objects that require two hands to operate, (e.g. shotgun, two-handed melee weapons)
Standard backpacks can carry tiny, small & normal items, (e.g. fire extinguisher, stun baton, gas mask, metal sheets)
Pockets can hold small and tiny items, (e.g. flashlight, multitool, grenades, GPS device)
Usually items smaller then a human hand, (e.g. playing cards, lighter, scalpel, coins/holochips)
Something so large that it extends beyond the confines of its tile, (e.g. scrap beacon)
IN_GIVEN_RANGE | Within given range, but not counting z-levels |
---|
Within given range, but not counting z-levels
HUMAN_REQ_COG_FOR_REG | Required minimum values to see reagents in a beaker |
---|---|
FIRESTACKS_TEMP_CONV | Misc atmos equations |
Misc atmos equations
Required minimum values to see reagents in a beaker
PERK_SHARED_SEE_REAGENTS | Bitflag for shared perk abilities |
---|
Bitflag for shared perk abilities
CONSUME_UNTIL | Macro that takes a tick usage to target, and proceses until we hit it +This lets us simulate generic load as we'd like, to make testing for overtime easier |
---|
Macro that takes a tick usage to target, and proceses until we hit it +This lets us simulate generic load as we'd like, to make testing for overtime easier
Defines that give qdel hints. +These can be given as a return in [/atom/proc/Destroy] or by calling /proc/qdel. | |
QDEL_HINT_QUEUE | qdel should queue the object for deletion. |
---|---|
QDEL_HINT_LETMELIVE | qdel should let the object live after calling [/atom/proc/Destroy]. |
QDEL_HINT_IWILLGC | Functionally the same as the above. qdel should assume the object will gc on its own, and not check it. |
QDEL_HINT_HARDDEL | Qdel should assume this object won't GC, and queue a hard delete using a hard reference. |
GC_QUEUE_FILTER | short queue to filter out quick gc successes so they don't hang around in the main queue for 5 minutes |
GC_QUEUE_CHECK | main queue that waits 5 minutes because thats the longest byond can hold a reference to our shit. |
GC_QUEUE_HARDDELETE | short queue for things that hard delete instead of going thru the gc subsystem, this is purely so if they can softdelete, they will soft delete rather then wasting time with a hard delete. |
GC_QUEUE_COUNT | Number of queues, used for allocating the nested lists. Don't forget to increase this if you add a new queue stage |
QDEL_ITEM_ADMINS_WARNED | Set when admins are told about lag causing qdels in this type. |
QDEL_ITEM_SUSPENDED_FOR_LAG | Set when a type can no longer be hard deleted on failure because of lag it causes while this happens. |
/proc/______qdel_list_wrapper | +the underscores are to encourage people not to use this directly. |
main queue that waits 5 minutes because thats the longest byond can hold a reference to our shit.
Number of queues, used for allocating the nested lists. Don't forget to increase this if you add a new queue stage
short queue to filter out quick gc successes so they don't hang around in the main queue for 5 minutes
short queue for things that hard delete instead of going thru the gc subsystem, this is purely so if they can softdelete, they will soft delete rather then wasting time with a hard delete.
Qdel should assume this object won't GC, and queue a hard delete using a hard reference.
Functionally the same as the above. qdel
should assume the object will gc on its own, and not check it.
qdel
should let the object live after calling [/atom/proc/Destroy].
qdel
should queue the object for deletion.
Set when admins are told about lag causing qdels in this type.
Set when a type can no longer be hard deleted on failure because of lag it causes while this happens.
/proc/rustg_get_version | +Gets the version of rust_g |
---|---|
rustg_setup_acreplace | Sets up the Aho-Corasick automaton with its default options. |
rustg_setup_acreplace_with_options | Sets up the Aho-Corasick automaton using supplied options. |
rustg_acreplace | Run the specified replacement engine with the provided haystack text to replace, returning replaced text. |
rustg_acreplace_with_replacements | Run the specified replacement engine with the provided haystack text to replace, returning replaced text. |
rustg_cnoise_generate | This proc generates a cellular automata noise grid which can be used in procedural generation methods. |
Run the specified replacement engine with the provided haystack text to replace, returning replaced text.
+Arguments:
+Run the specified replacement engine with the provided haystack text to replace, returning replaced text.
+Arguments:
+This proc generates a cellular automata noise grid which can be used in procedural generation methods.
+Returns a single string that goes row by row, with values of 1 representing an alive cell, and a value of 0 representing a dead cell.
+Arguments:
+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 +Arguments:
+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 +Arguments:
+MERGE_SPAWN_TAGS | Non-Signal Component Related Defines |
---|
Non-Signal Component Related Defines
Timing subsystem | |
TIMER_UNIQUE | Don't run if there is an identical unique timer active |
---|---|
TIMER_OVERRIDE | For unique timers: Replace the old timer rather then not start this one |
TIMER_CLIENT_TIME | Timing should be based on how timing progresses on clients, not the server. |
TIMER_STOPPABLE | Timer can be stopped using deltimer() |
TIMER_NO_HASH_WAIT | prevents distinguishing identical timers with the wait variable |
TIMER_LOOP | Loops the timer repeatedly until qdeleted |
TIMER_DELETE_ME | Delete the timer on parent datum Destroy() and when deltimer'd |
TIMER_ID_NULL | Empty ID define |
Initialization subsystem | |
INITIALIZATION_INSSATOMS | New should not call Initialize |
INITIALIZATION_INNEW_MAPLOAD | New should call Initialize(TRUE) |
INITIALIZATION_INNEW_REGULAR | New should call Initialize(FALSE) |
Initialization hints | |
INITIALIZE_HINT_NORMAL | Nothing happens |
INITIALIZE_HINT_LATELOAD | call LateInitialize at the end of all atom Initalization |
INITIALIZE_HINT_QDEL | Call qdel on the atom after intialization |
INITIALIZE_HINT_QDEL_FORCE | Call qdel with a force of TRUE after initialization |
INITIALIZE_IMMEDIATE | type and all subtypes should always immediately call Initialize in New() |
SS_INIT_TIMER_KEY | The timer key used to know how long subsystem initialization takes |
addtimer | Create a new timer and add it to the queue. |
New should call Initialize(TRUE)
New should call Initialize(FALSE)
New should not call Initialize
call LateInitialize at the end of all atom Initalization
+The item will be added to the late_loaders list, this is iterated over after +initalization of subsystems is complete and calls LateInitalize on the atom +see this file for the LateIntialize proc
Nothing happens
Call qdel on the atom after intialization
Call qdel with a force of TRUE after initialization
type and all subtypes should always immediately call Initialize in New()
The timer key used to know how long subsystem initialization takes
Timing should be based on how timing progresses on clients, not the server.
+Tracking this is more expensive, +should only be used in conjuction with things that have to progress client side, such as +animate() or sound()
Delete the timer on parent datum Destroy() and when deltimer'd
Empty ID define
Loops the timer repeatedly until qdeleted
+In most cases you want a subsystem instead, so don't use this unless you have a good reason
prevents distinguishing identical timers with the wait variable
+To be used with TIMER_UNIQUE
For unique timers: Replace the old timer rather then not start this one
Timer can be stopped using deltimer()
Don't run if there is an identical unique timer active
+if the arguments to addtimer are the same as an existing timer, it doesn't create a new timer, +and returns the id of the existing timer
Create a new timer and add it to the queue.
+UI_INTERACTIVE | Green eye; fully interactive |
---|---|
UI_UPDATE | Orange eye; updates but is not interactive |
UI_DISABLED | Red eye; disabled, does not update |
UI_CLOSE | UI Should close |
TGUI_WINDOW_SOFT_LIMIT | Maximum number of windows that can be suspended/reused |
TGUI_WINDOW_HARD_LIMIT | Maximum number of open windows |
TGUI_PING_TIMEOUT | Maximum ping timeout allowed to detect zombie windows |
TGUI_REFRESH_FULL_UPDATE_COOLDOWN | Used for rate-limiting to prevent DoS by excessively refreshing a TGUI window |
TGUI_WINDOW_CLOSED | Window does not exist |
TGUI_WINDOW_LOADING | Window was just opened, but is still not ready to be sent data |
TGUI_WINDOW_READY | Window is free and ready to receive data |
TGUI_WINDOW_ID | Get a window id based on the provided pool index |
TGUI_WINDOW_INDEX | Get a pool index of the provided window id |
TGUI_CREATE_MESSAGE | Creates a message packet for sending via output() |
Creates a message packet for sending via output()
Maximum ping timeout allowed to detect zombie windows
Used for rate-limiting to prevent DoS by excessively refreshing a TGUI window
Window does not exist
Maximum number of open windows
Get a window id based on the provided pool index
Get a pool index of the provided window id
Window was just opened, but is still not ready to be sent data
Window is free and ready to receive data
Maximum number of windows that can be suspended/reused
UI Should close
Red eye; disabled, does not update
Green eye; fully interactive
Orange eye; updates but is not interactive
MAPTICK_MC_MIN_RESERVE | Percentage of tick to leave for master controller to run |
---|---|
TICK_LIMIT_TO_RUN | Tick limit used to resume things in stoplag |
TICK_LIMIT_MC | Tick limit for MC while running |
TICK_LIMIT_MC_INIT_DEFAULT | Tick limit while initializing |
Percentage of tick to leave for master controller to run
Tick limit for MC while running
Tick limit while initializing
Tick limit used to resume things in stoplag
VERB_OVERTIME_QUEUE_THRESHOLD | verb queuing thresholds. remember that since verbs execute after SendMaps the player wont see the effects of the verbs on the game world +until SendMaps executes next tick, and then when that later update reaches them. thus most player input has a minimum latency of world.tick_lag + player ping. +however thats only for the visual effect of player input, when a verb processes the actual latency of game state changes or semantic latency is effectively 1/2 player ping, +unless that verb is queued for the next tick in which case its some number probably smaller than world.tick_lag. +so some verbs that represent player input are important enough that we only introduce semantic latency if we absolutely need to. +its for this reason why player clicks are handled in SSinput before even movement - semantic latency could cause someone to move out of range +when the verb finally processes but it was in range if the verb had processed immediately and overtimed. +queuing tick_usage threshold for verbs that are high enough priority that they only queue if the server is overtiming. +ONLY use for critical verbs |
---|---|
VERB_HIGH_PRIORITY_QUEUE_THRESHOLD | queuing tick_usage threshold for verbs that need lower latency more than most verbs. |
VERB_DEFAULT_QUEUE_THRESHOLD | default queuing tick_usage threshold for most verbs which can allow a small amount of latency to be processed in the next tick |
TRY_QUEUE_VERB | attempt to queue this verb process if the server is overloaded. evaluates to FALSE if queuing isnt necessary or if it failed. +_verification_args... are only necessary if the verb_manager subsystem youre using checks them in can_queue_verb() +if you put anything in _verification_args that ISNT explicitely put in the can_queue_verb() override of the subsystem youre using, +it will runtime. |
QUEUE_OR_CALL_VERB | queue wrapper for TRY_QUEUE_VERB() when you want to call the proc if the server isnt overloaded enough to queue |
queue wrapper for TRY_QUEUE_VERB() when you want to call the proc if the server isnt overloaded enough to queue
attempt to queue this verb process if the server is overloaded. evaluates to FALSE if queuing isnt necessary or if it failed. +_verification_args... are only necessary if the verb_manager subsystem youre using checks them in can_queue_verb() +if you put anything in _verification_args that ISNT explicitely put in the can_queue_verb() override of the subsystem youre using, +it will runtime.
default queuing tick_usage threshold for most verbs which can allow a small amount of latency to be processed in the next tick
queuing tick_usage threshold for verbs that need lower latency more than most verbs.
verb queuing thresholds. remember that since verbs execute after SendMaps the player wont see the effects of the verbs on the game world +until SendMaps executes next tick, and then when that later update reaches them. thus most player input has a minimum latency of world.tick_lag + player ping. +however thats only for the visual effect of player input, when a verb processes the actual latency of game state changes or semantic latency is effectively 1/2 player ping, +unless that verb is queued for the next tick in which case its some number probably smaller than world.tick_lag. +so some verbs that represent player input are important enough that we only introduce semantic latency if we absolutely need to. +its for this reason why player clicks are handled in SSinput before even movement - semantic latency could cause someone to move out of range +when the verb finally processes but it was in range if the verb had processed immediately and overtimed. +queuing tick_usage threshold for verbs that are high enough priority that they only queue if the server is overtiming. +ONLY use for critical verbs
COMPARE_KEY | Passed into BINARY_INSERT to compare keys |
---|---|
COMPARE_VALUE | Passed into BINARY_INSERT to compare values |
BINARY_INSERT | Binary search sorted insert +INPUT: Object to be inserted +LIST: List to insert object into +TYPECONT: The typepath of the contents of the list +COMPARE: The object to compare against, usualy the same as INPUT +COMPARISON: The variable on the objects to compare +COMPTYPE: How should the values be compared? Either COMPARE_KEY or COMPARE_VALUE. |
/proc/bitfield_to_list | +Converts a bitfield to a list of numbers (or words if a wordlist is provided) |
Binary search sorted insert +INPUT: Object to be inserted +LIST: List to insert object into +TYPECONT: The typepath of the contents of the list +COMPARE: The object to compare against, usualy the same as INPUT +COMPARISON: The variable on the objects to compare +COMPTYPE: How should the values be compared? Either COMPARE_KEY or COMPARE_VALUE.
Passed into BINARY_INSERT to compare keys
Passed into BINARY_INSERT to compare values
/proc/log_tgui | +Appends a tgui-related log entry. All arguments are optional. |
---|---|
/proc/log_mapping | +Logging for mapping errors |
/proc/md5filepath | +Returns the md5 of a file at a given path. |
---|---|
/proc/md5asfile | +Save file as an external file then md5 it. +Used because md5ing files stored in the rsc sometimes gives incorrect md5 results. |
/proc/getOPressureDifferential | +Gets the highest and lowest pressures from the tiles in cardinal directions +around us, then checks the difference. |
---|
/proc/makeDatumRefLists | +Initial Building |
---|
/proc/getFlatTypeIcon | +always_use_defdir IS DEPRICATED |
---|---|
/proc/getFlatIcon | +Create a single [/icon] from a given /atom or /image. |
/proc/generate_asset_name | +Generate a filename for this asset +The same asset will always lead to the same asset name +(Generated names do not include file extention.) |
/proc/icon2base64 | +Converts an icon to base64. Operates by putting the icon in the iconCache savefile, +exporting it as text, and then parsing the base64 from that. +(This relies on byond automatically storing icons in savefiles as base64) |
GET_CLIENT | Gets the client of the mob, allowing for mocking of the client. +You only need to use this if you know you're going to be mocking clients somewhere else. |
---|
Gets the client of the mob, allowing for mocking of the client. +You only need to use this if you know you're going to be mocking clients somewhere else.
/proc/strip_improper | +Strip out the special beyond characters for \proper and \improper +from text that will be sent to the browser. |
---|
/proc/url2htmlloader | +Return html to load a url. +for use inside of browse() calls to html assets that might be loaded on a cdn. |
---|
/proc/REF | +\ref behaviour got changed in 512 so this is necesary to replicate old behaviour. +If it ever becomes necesary to get a more performant REF(), this lies here in wait +#define REF(thing) (thing && isdatum(thing) && (thing:datum_flags & DF_USE_TAG) && thing:tag ? "[thing:tag]" : "\ref[thing]") |
---|
PROC_REF | Call by name proc reference, checks if the proc exists on this type or as a global proc |
---|---|
TYPE_PROC_REF | Call by name proc reference, checks if the proc exists on given type or as a global proc |
GLOBAL_PROC_REF | Call by name proc reference, checks if the proc is existing global proc |
Call by name proc reference, checks if the proc is existing global proc
Call by name proc reference, checks if the proc exists on this type or as a global proc
Call by name proc reference, checks if the proc exists on given type or as a global proc
/client | Client datum |
---|
/var/Failsafe | +Failsafe |
---|---|
/proc/recover_all_SS_and_recreate_master | +Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars |
/proc/delete_all_SS_and_recreate_master | +Delete all existing SS to basically start over |
/hook/startup | Startup hook. +Called in world.dm when the server starts. |
---|---|
/hook/roundstart | Roundstart hook. +Called in gameticker.dm when a round starts. |
/hook/roundend | Roundend hook. +Called in gameticker.dm when a round ends. |
/hook/death | Death hook. +Called in death.dm when someone dies. +Parameters: var/mob/living/carbon/human, var/gibbed |
/hook/clone | Cloning hook. +Called in cloning.dm when someone is brought back by the wonders of modern science. +Parameters: var/mob/living/carbon/human |
/hook/debrain | Debrained hook. +Called in brain_item.dm when someone gets debrained. +Parameters: var/obj/item/organ/internal/vital/brain |
/hook/borgify | Borged hook. +Called in robot_parts.dm when someone gets turned into a cyborg. +Parameters: var/mob/living/silicon/robot |
/hook/revoke_payroll | Payroll revoked hook. +Called in Accounts_DB.dm when someone's payroll is stolen at the Accounts terminal. +Parameters: var/datum/money_account |
/hook/change_account_status | Account suspension hook. +Called in Accounts_DB.dm when someone's account is suspended or unsuspended at the Accounts terminal. +Parameters: var/datum/money_account |
/hook/reassign_employee | Employee reassignment hook. +Called in card.dm when someone's card is reassigned at the HoP's desk. +Parameters: var/obj/item/card/id |
/hook/terminate_employee | Employee terminated hook. +Called in card.dm when someone's card is terminated at the HoP's desk. +Parameters: var/obj/item/card/id |
/hook/sell_crate | Crate sold hook. +Called in supplyshuttle.dm when a crate is sold on the shuttle. +Parameters: var/obj/structure/closet/crate/sold, var/area/shuttle |
/proc/callHook | +@file hooks.dm +Implements hooks, a simple way to run code on pre-defined events. |
---|
/var/Debugger | +StonedMC |
---|---|
/datum/controller/master | Start of queue linked list +End of queue linked list (used for appending to the list) +Are we loading in a new map? +for scheduling different subsystems for different stages of the round |
/datum/controller/subsystem | Defines a subsystem to be managed by the Master Controller |
---|
/datum/chunk | This subsystem is meant for anything that should not be employing byond view() and is generally very constraining to keep track of +For now it only has mobs and hearers, but it should also include sanity , signal receivers , and anything that is very frequently |
---|
Debugging GC issues+In order to debug First is a verb called "Find References", which lists every refererence to an object in the world. This allows you to track down any indirect or obfuscated references that you might have missed. +Complementing this is another verb, "qdel() then Find References".
+This does exactly what you'd expect; it calls If you have a datum or something you are not destroying directly (say via the singulo),
+the next tool is Finally is a verb, "Show qdel() Log", which shows the deletion log that the garbage subsystem keeps. This is helpful if you are having race conditions or need to review the order of deletions. +Note that for any of these tools to work | |
/datum/qdel_item | Qdel Item: Holds statistics on each type that passes thru qdel +Holds the type as a string for this type +Total number of times it's passed thru qdel. +Total amount of milliseconds spent processing this type's Destroy() +Times it was queued for soft deletion but failed to soft delete. +Different from failures because it also includes QDEL_HINT_HARDDEL deletions +Total amount of milliseconds spent hard deleting this type. +Highest time spent hard_deleting this in ms. +Number of times hard deletes took longer than the configured threshold +Number of times it's not respected force=TRUE +Number of times it's not even bother to give a qdel hint +Number of times it's slept in its destroy |
---|---|
Flags related to this type's trip thru qdel. + | |
/proc/qdel | +Should be treated as a replacement for the 'del' keyword. |
PERMITTED_QUERIES_IN_TOTAL | You get 25 queries as the cap. |
---|
You get 25 queries as the cap.
/proc/find_nearby_burrow | +Burrow Finding and Sorting |
---|
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
/var/SStgui | +tgui subsystem |
---|
I_TARGET | Index for target |
---|---|
I_SPEED | Index for speed |
I_RANGE | Index for range |
I_MOVED | Index for amount of turfs we alreathrowing_queue[thing][I_DY] moved by |
Index for amount of turfs we alreathrowing_queue[thing][I_DY] moved by
Index for range
Index for speed
Index for target
BUCKET_LEN | Controls how many buckets should be kept, each representing a tick. (1 minutes worth) |
---|---|
BUCKET_POS | Helper for getting the correct bucket for a given timer |
TIMER_MAX | Gets the maximum time at which timers will be invoked from buckets, used for deferring to secondary queue |
TIMER_ID_MAX | Max float with integer precision |
/var/SStimer | +|
/datum/timedevent | This is the actual timer, it contains the callback and necessary data to maintain +the timer. |
/proc/_addtimer | +Create a new timer and insert it in the queue. +You should not call this directly, and should instead use the addtimer macro, which includes source information. |
/proc/deltimer | +Delete a timer |
/proc/timeleft | +Get the remaining deciseconds on a timer |
Controls how many buckets should be kept, each representing a tick. (1 minutes worth)
Helper for getting the correct bucket for a given timer
Max float with integer precision
Gets the maximum time at which timers will be invoked from buckets, used for deferring to secondary queue
/var/SSverb_manager | +SSverb_manager, a subsystem that runs every tick and runs through its entire queue without yielding like SSinput. +this exists because of how the byond tick works and where user inputted verbs are put within it. |
---|---|
/proc/_queue_verb | +queue a callback for the given verb/verblike proc and any given arguments to the specified verb subsystem, so that they process in the next tick. +intended to only work with verbs or verblike procs called directly from client input, use as part of TRY_QUEUE_VERB() and co. |
/datum/poll/restart | VOTES |
---|---|
/datum/poll/storyteller | Storyteller |
/datum/poll/evac | Evacuate Ship |
/datum/ai_laws/asimov | Asimov |
---|---|
/datum/ai_laws/eris | Nanotrasen/Malf |
/datum/ai_laws/nanotrasen_aggressive | Nanotrasen Aggressive |
/datum/ai_laws/robocop | Robocop |
/datum/ai_laws/syndicate_override | Syndicate |
/datum/ai_laws/antimov | Antimov |
/datum/ai_laws/drone | Drone |
/datum/ai_laws/tyrant | T.Y.R.A.N.T. |
/datum/ai_laws/paladin | P.A.L.A.D.I.N. |
/datum/ai_laws/corporate | Corporate |
/datum/ai_laws/blitzshell | Blitzshell |
/datum/ai_laws/partybot | Partybot |
/datum/ai_laws/chefbot | Chefbot |
/datum/ai_laws/travelguide | TravelGuide |
/datum/ai_laws/friendbot | Friendbot |
/datum/callback | A datum that holds a proc to be called on another object, used to track proccalls to other objects |
---|---|
/datum/callback_select | Helper datum for the select callbacks proc |
/proc/callback_select | +Runs a list of callbacks asyncronously, returning only when all have finished |
/datum/category_collection | Category Collection |
---|---|
/datum/category_group | Category Groups |
/datum/category_item | Category Items |
/datum/component | The component datum |
---|
/datum/component/overlay_manager | Manages overlays based off a key |
---|
/datum/craft_recipe/tool/brace | TOOL MODS |
---|
/datum | The absolute base class for everything |
---|
/datum/click_handler/fullauto | Full auto gunfire |
---|---|
/datum/click_handler/ai | AI Control |
/datum/element | A holder for simple behaviour that can be attached to many different types |
---|
/datum/stack_end_detector | Stack End Detector. +Can detect if a given code stack has exited, used by the mc for stack overflow detection. |
---|---|
/datum/stack_canary | Stack canary. Will go away if the stack it was primed by is ended by byond for return or stack overflow reasons. |
/datum/client_interface | This should match the interface of /client wherever necessary. |
---|
/datum/movement_handler/mob | /mob |
---|
/datum/movement_handler/robot | /robot |
---|
/decl/backpack_outfit/nothing | Outfit Backpacks |
---|---|
/datum/backpack_setup | Character setup |
/proc/get_default_outfit_backpack | +Helpers |
/decl/hierarchy/outfit/job | decl/hierarchy/outfit/job/cargo/artist/clown/post_equip(var/mob/living/carbon/human/H) |
---|
/datum/perk/inspiration | Basically a marker perk. If the user has this perk, another will be given in certain conditions. |
---|
/datum/perk/nt_oddity | NT ODDITYS PERKS |
---|
/datum/perk | The root perk datum. All perks inherit properties from this one. |
---|
/datum/world_topic/ping | Topics |
---|
/datum/category_collection/underwear | Category Collection Setup |
---|---|
/datum/category_group/underwear | Categories |
/datum/category_item/underwear | Category entries |
/datum/uplink_item/item/ammo | Ammunition |
---|---|
/datum/uplink_item/item/ammo/pistol/highvelocity | .35 .40 pistols and smgs |
/datum/uplink_item/item/ammo/slpistol | .35 and .40 revolvers |
/datum/uplink_item/item/ammo/srifle | .20 . 25 .30 Rifles |
/datum/uplink_item/item/ammo/pistol_hv | HV ammo packets |
/datum/uplink_item/item/ammo/m12 | .50 Shotguns |
/datum/uplink_item/item/ammo/sniperammo | special |
/datum/uplink_item/abstract/announcements | Announcements |
---|
/datum/uplink_item/item/badassery | Badassery |
---|---|
/datum/uplink_item/item/badassery/random_one | Random Item |
/datum/uplink_item/item/badassery/surplus | Surplus Crate |
/datum/uplink_item/item/tools | Devices and Tools |
---|
/datum/uplink_item/item/grenades | Grenades |
---|
/datum/uplink_item/item/hardsuit_modules | Hardsuit Modules |
---|
/datum/uplink_item/item/visible_weapons | Highly Visible and Dangerous Weapons |
---|
/datum/uplink_item/item/implants | Implants |
---|---|
/datum/uplink_item/item/implants/energy_blade | obj/item/implanter/installer/disposable/CYBERNETIC |
/datum/uplink_item/item/medical | Medical |
---|
/datum/uplink_item/item/stealth_items | Stealth and Camouflage Items |
---|
/datum/uplink_item/item/stealthy_weapons | Stealthy and Inconspicuous Weapons |
---|
/datum/uplink_item/item/telecrystal | Telecrystals |
---|
/var/default_abstract_uplink_icon | +Abstract Uplink Entries |
---|---|
/proc/get_random_uplink_items | +Support procs |
/datum/callback/verb_callback | like normal callbacks but they also record their creation time for measurement purposes |
---|
/proc/WEAKREF | +Creates a weakref to the given input. +See /datum/weakref's documentation for more information. |
---|---|
/datum/weakref | A weakref holds a non-owning reference to a datum.
+The datum can be referenced again using resolve() . |
/atom/movable/overlay | defines for each slot are above the function def |
---|
/datum/universal_state | ENDGAME STUFF |
---|
/var/comet_hardcore | +........::::::%%%SPACE_COMET |
---|---|
/obj/effect/meteor | SPACE_COMET%%%::::::........ |
/var/SSweather | +
---|
/proc/storyteller_button | +datum/storyteller/proc/trigger_event() |
---|
/var/access_security | +Station access |
---|---|
/var/access_nt_disciple | +NeoTheology |
/var/access_change_medbay | +Access Change |
/var/access_cent_general | +Central Command |
/var/access_mercenary | +Antag access |
/var/access_synth | +Misc |
/datum/department/command | Command |
---|---|
/datum/department/ironhammer | Retainers |
/datum/department/moebius_medical | Benefactors |
/datum/department/guild | Independant |
/obj/landmark/join/start/mining | datum/computer_file/program/supply, +datum/computer_file/program/deck_management, |
---|
AUTODOC_HEAL_PER_UNIT | How much healing is given per rating point of components (micro-laser and manipulator) |
---|---|
AUTODOC_TIME_PER_UNIT | How much time is reduced per given rating point of scanning module components |
AUTODOC_DEFAULT_PROCESSING_TIME | Default processing time for any wound |
Default processing time for any wound
How much healing is given per rating point of components (micro-laser and manipulator)
How much time is reduced per given rating point of scanning module components
/obj/machinery/embedded_controller/radio/docking_port_multi | ** DEBUG VERBS *** |
---|
STATE_IDLE | ** DEBUG VERBS *** |
---|
** DEBUG VERBS ***
+/datum/computer/file/embedded_program/docking/multi/proc/print_state() +to_chat(world, "id_tag: [id_tag]") +to_chat(world, "dock_state: [dock_state]") +to_chat(world, "control_mode: [control_mode]") +to_chat(world, "tag_target: [tag_target]") +to_chat(world, "response_sent: [response_sent]")
+/datum/computer/file/embedded_program/docking/multi/post_signal(datum/signal/signal, comm_line) +to_chat(world, "Program [id_tag] sent a message!") +print_state() +to_chat(world, "[id_tag] sent command "[signal.data["command"]]" to "[signal.data["recipient"]]"") +..(signal)
+/obj/machinery/embedded_controller/radio/docking_port_multi/verb/view_state() +set category = "Debug" +set src in view(1) +src.program:print_state()
+/obj/machinery/embedded_controller/radio/docking_port_multi/verb/spoof_signal(var/command as text, var/sender as text) +set category = "Debug" +set src in view(1) +var/datum/signal/signal = new +signal.data["tag"] = sender +signal.data["command"] = command +signal.data["recipient"] = id_tag
+src.program:receive_signal(signal)
+
+/obj/machinery/embedded_controller/radio/docking_port_multi/verb/debug_init_dock(var/target as text) +set category = "Debug" +set src in view(1) +src.program:initiate_docking(target)
+/obj/machinery/embedded_controller/radio/docking_port_multi/verb/debug_init_undock() +set category = "Debug" +set src in view(1) +src.program:initiate_undocking()
/obj/machinery/autolathe/excelsior | ** DEBUG VERBS *** |
---|
/obj/machinery/holosign | HOLOSIGN |
---|---|
/obj/machinery/button/holosign | SWITCH |
/obj/machinery/smartfridge/disks | Disk Storage |
---|---|
/obj/machinery/smartfridge/seeds | Seed Storage |
/obj/machinery/smartfridge/secure/extract | Xenobio Slime Fridge |
/obj/machinery/smartfridge/secure/medbay | Chemistry Medicine Storage |
/obj/machinery/smartfridge/drinks | Bar Drinks Showcase |
/obj/machinery/smartfridge/drying_rack | Hydroponics Drying Rack |
/obj/machinery | Machines in the world, such as computers, pipes, and airlocks. |
---|
/obj/item/pipe_meter | Z-Level stuff +Z-Level stuff |
---|
/obj/machinery/pipedispenser/orderable | Z-Level stuff +Z-Level stuff |
---|
RC_ASSIST | Requests Console |
---|
Requests Console
+Originally written by errorage, updated by: Carn, needs more work though. I just added some security fixes
/proc/Broadcast_Message | +Here is the big, bad function that broadcasts a message given the appropriate +parameters. |
---|
/datum/data/vending_product | Datum used to hold information about a product in a vending machine |
---|---|
/obj/machinery/vending | A vending machine |
/obj/effect/effect/smoke | SMOKE SYSTEMS |
---|
/obj/landmark/corpse/syndicatesoldier | LEGACY CORPSES////REPLACE WITH NEW CORPSES IF FOUND IN MAP |
---|---|
/obj/landmark/corpse/pirate | Enemies |
/datum/effect/effect/system/trail | |
---|---|
/datum/effect/effect/system/trail/jet | Jetpack Trails +Subtype made to efficiently sync up with a jetpack. +They should always be attached to a jetpack +Does a particle only when the jetpack uses some thrust |
/obj/effect/trail_particle |
/obj/item/device/debugger | Multitool -- A multitool is used for hacking electronic devices. +TO-DO -- Using it as a power measurement tool for cables etc. Nannek. |
---|
/obj/item/device/radio/borg | Borg Radios |
---|
/obj/item/borg | Cyborg Spec Items |
---|---|
/obj/item/borg/sight | HUD/SIGHT things |
/obj/item/electronics/ai_module/safeguard | Modules |
---|---|
/obj/item/electronics/ai_module/oneHuman | OneMember |
/obj/item/electronics/ai_module/protectStation | ProtectStation |
/obj/item/electronics/ai_module/prototypeEngineOffline | PrototypeEngineOffline |
/obj/item/electronics/ai_module/teleporterOffline | TeleporterOffline |
/obj/item/electronics/ai_module/quarantine | Quarantine |
/obj/item/electronics/ai_module/oxygen | OxygenIsToxicToCrewMembers |
/obj/item/electronics/ai_module/freeform | New Freeform |
/obj/item/electronics/ai_module/reset | Reset |
/obj/item/electronics/ai_module/purge | Purge |
/obj/item/electronics/ai_module/asimov | Asimov |
/obj/item/electronics/ai_module/eris | NanoTrasen |
/obj/item/electronics/ai_module/corp | Corporate |
/obj/item/electronics/ai_module/drone | Drone |
/obj/item/electronics/ai_module/paladin | P.A.L.A.D.I.N. |
/obj/item/electronics/ai_module/tyrant | T.Y.R.A.N.T. |
/obj/item/electronics/ai_module/freeformcore | Freeform Core |
/obj/item/electronics/ai_module/robocop | Robocop |
/obj/item/electronics/ai_module/antimov | Antimov |
/obj/item/electronics/ai_module/partybot | Partybot |
/obj/item/electronics/ai_module/chefbot | Chefbot |
/obj/item/electronics/ai_module/travelguide | TravelGuide |
/obj/item/electronics/ai_module/friendbot | Friendbot |
/obj/item/book/manual | MANUALS (BOOKS) |
---|
/obj/item/mop | if at least one of the people inside is an excel. |
---|
/obj/item/storage/hcases/ammo | Ammo |
---|---|
/obj/item/storage/hcases/parts | Parts |
/obj/item/storage/hcases/med | Medical |
/obj/item/storage/hcases/engi | Engineering |
/obj/item/tank/jetpack/void | Jetpack Types |
---|---|
/obj/item/tank/jetpack/rig | Rig jetpack |
/obj/item/tank/jetpack/synthetic | SYNTHETIC JETPACK |
/obj/item/hand_tele/handmade | HANDMADE TELE-STUFF |
---|
/obj/item/tool_upgrade/reinforcement | UPGRADE TYPES |
---|
/obj/item/tool/multitool | Multitool -- A multitool is used for hacking electronic devices. +TO-DO -- Using it as a power measurement tool for cables etc. Nannek. |
---|
/obj/item/beartrap/makeshift | Makeshift Trap |
---|---|
/obj/item/beartrap/armed | Armed Subtypes |
/obj/spawner/encouter/mine | ENCOUTERS |
---|
/obj/spawner/exosuit | ENCOUTERS |
---|
/obj/structure/closet/onestar | Loot table on all tiers |
---|---|
/obj/structure/closet/onestar/tier1/normal | // Closets +Normal |
/obj/structure/closet/onestar/tier1/special | Special |
/obj/structure/closet/onestar/tier1/mineral | Mineral |
/obj/structure/closet/onestar/tier1/medical | Medical |
/obj/structure/kitchenspike | Kitchen Spike |
---|
/obj/structure/salvageable/os | ONE STAR |
---|
/world | Two possibilities exist: either we are alone in the Universe or we are not. Both are equally terrifying. ~ Arthur C. Clarke |
---|
/obj/item/computer_hardware/hard_drive/portable/design/omg/simple | datum/design/organ/teratoma/input/rare/reagents_spider, // Not enough spider chems in the pool |
---|
/proc/CreateBans | +DEBUG |
---|
/proc/message_adminTicket | +|
---|---|
/proc/message_mentorTicket | +|
/proc/is_special_character | +ADMIN HELPER PROCS |
/datum/admin_secret_category/admin_secrets | Pre-defined categories |
---|---|
/datum/admin_secret_item/admin_secret | Pre-defined base items |
/obj/item/storage/backpack/holding/bst | I T E M S |
---|
/datum/admin_secret_item/random_event/gravity | Gravity |
---|
/obj/effect/beam/i_beam | IBeam |
---|
Framework for managing browser assets (javascript,css,images,etc)+This manages getting the asset to the client without doing unneeded re-sends, as well as utilizing any configured cdns. +There are two frameworks for using this system: +Asset datum:+Make a datum in asset_list_items.dm with your browser assets for your thing. +Checkout asset_list.dm for the helper subclasses +The Call get_asset_datum() with the type of the datum you created to get your asset cache datum +Call .send(client|usr) on that datum to send the asset to the client. Depending on the asset transport this may or may not block. +Call .get_url_mappings() to get an associated list with the urls your assets can be found at. +Manual backend:+See the documentation for The global variable Notes:+Because byond browse() calls use non-blocking queues, if your code uses output() (which bypasses all of these queues) to invoke javascript functions you will need to first have the javascript announce to the server it has loaded before trying to invoke js functions. +To make your code work with any CDNs configured by the server, you must make sure assets are referenced from the url returned by CSS files that use url() can be made to use the CDN without needing to rewrite all url() calls in code by using the namespaced helper datum. See the documentation for |
/datum/asset_cache_item | An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed. |
---|
/datum/asset/simple | If you don't need anything complicated. |
---|---|
/datum/asset/simple/namespaced | Namespace'ed assets (for static css and html files)
+When sent over a cdn transport, all assets in the same asset datum will exist in the same folder, as their plain names.
+Used to ensure css files can reference files by url() without having to generate the css at runtime, both the css file and the files it depends on must exist in the same namespace asset datum. (Also works for html)
+For example blah.css with asset blah.png will get loaded as namespaces/a3d..14f/f12..d3c.css and namespaces/a3d..14f/blah.png . allowing the css file to load blah.png by a relative url rather then compute the generated url with get_url_mappings().
+The namespace folder's name will change if any of the assets change. (excluding parent assets) |
ASSET_CACHE_TELL_CLIENT_AMOUNT | When sending mutiple assets, how many before we give the client a quaint little sending resources message |
---|---|
/datum/asset_transport | Base browse_rsc asset transport |
When sending mutiple assets, how many before we give the client a quaint little sending resources message
/datum/client_preference/play_admin_midis | Player Preferences |
---|---|
/datum/client_preference/staff | General Staff Preferences |
/datum/client_preference/staff/show_attack_logs | Admin Preferences |
/datum/client_preference/staff/show_debug_logs | Debug Preferences |
/datum/category_item/player_setup_item | Category Item Setup |
---|
/datum/category_collection/player_setup_collection | Category Collection Setup |
---|---|
/datum/category_group/player_setup_category | Category Category Setup |
/datum/spawnpoint/cryo | Cryostorage Spawning |
---|---|
/datum/spawnpoint/dormitory | DORMITORY SPAWNING |
BALACLAVA_SANITY_COEFF_BUFF | obj/item/clothing/head/soft/science |
---|
obj/item/clothing/head/soft/science
/obj/item/rig/industrial | Industrial Suit: For Mining |
---|---|
/obj/item/rig/eva | EVA Suit |
/obj/item/rig/ce | Advanced Voidsuit: Technomancer Exultant |
/obj/item/rig/techno | Technomancer RIG |
/obj/item/rig/hazmat | Hazmat: Moebius Overseer |
/obj/item/rig/medical | Medical |
/obj/item/clothing/head/space/syndicate/uplink | Black Market |
---|
/datum/armament/item | Item summonings |
---|
/obj/machinery/neotheology/biomass_container | BODY |
---|
/datum/ritual/cruciform/machines/power_biogen_awake | /////////BIOMATTER MANIPULATION MULTI MACHINES RITUALS +>Biogenerator manipulation rite<///////////////// |
---|---|
/datum/ritual/cruciform/machines/bioreactor | Bioreactor commands |
/datum/ritual/cruciform/machines/bioreactor/solution | |
/datum/ritual/cruciform/machines/bioreactor/chamber_doors |
/datum/ritual/cruciform/priest/acolyte/short_boost | SHORT BOOST LITANIES |
---|
/obj/crawler/map_maker | in order to avoid confusion, we're counting up from 1 and not 0. |
---|
/datum/money_account | SCPR 2022 |
---|
/datum/ghosttrap/borer | Cortical Borer |
---|---|
/datum/ghosttrap/drone | Maintenance Drone |
/datum/ghosttrap/pai | personal AI |
/datum/ghosttrap/blitzdrone | Blitzshell |
/obj/machinery/hivemind_machine/node |
---|
/mob/living/simple_animal/hostile/hivemind | Hive mobs |
---|---|
/mob/living/simple_animal/hostile/hivemind/resurrected | life's///////////////////////////////////////////// +/////////////////////////////RESURRECTION///////// +////////////////////////////////////////////go on |
/mob/living/simple_animal/hostile/hivemind/stinger | we live to/////////////////////////////////////////////////////////////// +/////////////////////////////////SMALL GUYS///////////////////////////// +///////////////////////////////////////////////////////////die for hive +//////////////////////////////////STINGER//////////////////////////////// |
/mob/living/simple_animal/hostile/hivemind/bomber | BOMBER |
/mob/living/simple_animal/hostile/hivemind/lobber | Lobber |
/mob/living/simple_animal/hostile/hivemind/hiborg | hive brings us here to/////////////////////////////////////////////// +////////////////////////////////BIG GUYS//////////////////////////// +/////////////////////////////////////////////////fright and destroy +/////////////////////////////////HIBORG////////////////////////////// |
/mob/living/simple_animal/hostile/hivemind/himan | HIMAN |
/mob/living/simple_animal/hostile/hivemind/mechiver | MECHIVER |
/mob/living/simple_animal/hostile/hivemind/treader | Treader |
/mob/living/simple_animal/hostile/hivemind/phaser | PHASER |
EQUIPFLAG_UPDTMOVE | It will make update_icon be called on the equipment after every move |
---|---|
EQUIPFLAG_PRETICK | It will have pretick() called on it before the mech checks wheter or not is powered |
It will have pretick() called on it before the mech checks wheter or not is powered
It will make update_icon be called on the equipment after every move
/obj/item/mech_equipment/mounted_system/sword/plasteel | Spawnable subtypes that are findable in maintenance +Plasteel - balanced +Osmium - plasteel+ +Cardboard - meme level with 0 damage +Mettalic hydrogen - great |
---|---|
LOADING_FLEXIBLE | This will always assume the gun loads in single mode, removing bullets from magazines and then loading them in |
/obj/item/mech_equipment/shield_generator | Yes this also drains power from blocking halloss +Yes i justify it cause it stops by kinetic power and not by lethality / material hardness |
This will always assume the gun loads in single mode, removing bullets from magazines and then loading them in
/obj/item/mech_equipment/forklifting_system | Fancy way to move someone up a z-level if you think about it.. |
---|
/datum/movement_handler/mob/exosuit | mob/living/exosuit/can_ztravel() |
---|
MP_DEBUG | AWW SHIT IT'S TIME FOR RADIO |
---|
AWW SHIT IT'S TIME FOR RADIO
+Concept stolen from D2K5 +Rewritten by N3X15 for vgstation +Adapted by Leshana for VOREStation +Stolen for Eris by Nestor
/obj/item/coin | Coin |
---|
/obj/machinery/mineral/processing_unit_console | Mineral processing unit console |
---|---|
/obj/machinery/mineral/processing_unit | Mineral processing unit |
/obj/machinery/mineral/stacking_unit_console | Would've named this ore_data , but it gives infinite cross reference ( and also conflicts with the global version) +Mineral stacking unit console |
---|---|
/obj/machinery/mineral/stacking_machine | Mineral stacking unit |
/obj/machinery/mineral/unloading_machine | Unloading unit |
---|
/obj/structure/closet/secure_closet/personal/miner | Miner Lockers |
---|---|
/obj/item/device/lighting/toggleable/lantern | Lantern |
/obj/structure/closet/crate/miningcar | Pickaxe |
/turf/unsimulated/mineral | Mineral deposits |
---|---|
/turf/simulated/floor/asteroid | Asteroid |
/obj/item/moneybag | Money bag |
---|
/obj/structure/ore_box | Ore box |
---|
/mob/living/carbon | BLOOD SYSTEM |
---|
/obj/item/slimepotion | Pet Slime Creation |
---|
/obj/item/gripper/no_use | obj/item/reagent_containers/cooking_container //Part of cooking overhaul, not yet ported |
---|
/mob/living/simple_animal/hostile/syndicate/melee | Sword and shield |
---|
/obj/structure/multiz/ladder | LADDER |
---|---|
/obj/structure/multiz/stairs | STAIRS |
/datum/vertical_travel_method/climb | Generic climbing, without using any special equipment |
---|
/datum/nanoui | NANO UI FRAMEWORK |
---|
/datum/body_modification/limb/organ_module | Organ Modules |
---|---|
/datum/body_modification/organ/oneeye | Eyes |
DROPLIMB_THRESHOLD_EDGE | EXTERNAL ORGANS |
---|
EXTERNAL ORGANS
/obj/item/organ/external/chest | ORGAN DEFINES |
---|
/datum/component/internal_wound/robotic/eyes_blunt | Robotic |
---|
/datum/organ_description/chest/slime | SLIME |
---|---|
/datum/organ_description/chest/skeletal | SKELETON |
/datum/wound | WOUNDS |
---|---|
/proc/get_wound_type | +WOUND DEFINITIONS |
/datum/wound/burn | BURNS |
/datum/wound/lost_limb | EXTERNAL ORGAN LOSS |
/obj/effect/overmap_event/movable/comet | ........::::::%%%SPACE_COMET |
---|
/obj/effect/overmap/sector/exoplanet | SPACE_COMET%%%::::::........ |
---|
/obj/item/device/camera_film | film |
---|---|
/var/photo_count | +photo |
/obj/item/storage/photo_album | photo album |
/obj/item/device/camera | camera |
/obj/item/device/camera/siliconcam | AI-specific |
---|
/obj/machinery/the_singularitygen | SINGULARITY SPAWNER |
---|
/obj/item/ammo_magazine/ammobox/magnum | . 40 |
---|---|
/obj/item/ammo_magazine/ammobox/srifle | . 20 |
/obj/item/ammo_magazine/ammobox/clrifle | . 25 CASELESS |
/obj/item/ammo_magazine/ammobox/lrifle | . 30 |
/obj/item/ammo_magazine/ammobox/antim | .60 |
/obj/item/ammo_magazine/ammobox/shotgun | SHOTGUN |
/obj/item/ammo_casing/pistol | .35 |
---|---|
/obj/item/ammo_casing/magnum | .40 |
/obj/item/ammo_casing/srifle | .20 |
/obj/item/ammo_casing/clrifle | .25 |
/obj/item/ammo_casing/lrifle | .30 |
/obj/item/ammo_casing/antim | .60 |
/obj/item/ammo_casing/shotgun | .50 Shotgun |
/obj/item/ammo_casing/grenade | Grenade Shells |
/obj/item/ammo_casing/rocket | Other |
/obj/item/ammo_magazine/pistol | Standard |
---|---|
/obj/item/ammo_magazine/hpistol | HighCap |
/obj/item/ammo_magazine/smg | .35 SMG |
/obj/item/ammo_magazine/msmg | .40 SMG |
/obj/item/ammo_magazine/magnum | .40 pistol |
/obj/item/ammo_magazine/srifle | .20 RIFLE |
/obj/item/ammo_magazine/srifle/long | .20 LONG |
/obj/item/ammo_magazine/srifle/drum | .20 DRUM |
/obj/item/ammo_magazine/c10x24 | .25 RIFLE |
/obj/item/ammo_magazine/cspistol | .25 PISTOL |
/obj/item/ammo_magazine/lrifle | .30 RIFLE |
/obj/item/ammo_magazine/lrifle/drum | .30 DRUM |
/obj/item/ammo_magazine/maxim | .30 MAXIM |
/obj/item/ammo_magazine/slpistol | / SPEEDLOADERS / +.35 SPEEDLOADERS |
/obj/item/ammo_magazine/slmagnum | .40 SPEEDLOADERS |
/obj/item/ammo_magazine/sllrifle | .30 RIFLE SPEEDLOADERS |
/obj/item/ammo_magazine/slsrifle | .20 RIFLE SPEEDLOADERS |
/obj/item/ammo_magazine/slclrifle | .25 RIFLE SPEEDLOADERS |
/obj/item/ammo_magazine/caps | OTHER |
/obj/item/ammo_magazine/m12 | Shotguns! |
/datum/firemode/charge | Energy weapon charge attack |
---|---|
/datum/click_handler/charge | Charge gun click handler |
/obj/item/gun/projectile/boltgun/obrez | OBREZ |
---|
/obj/item/projectile/beam/cutter | Only used by the mech plasmacutter ofr now |
---|
/obj/item/reagent_containers/bonsai |
---|
/obj/item/reagent_containers/dropper | Droppers. |
---|
/obj/item/reagent_containers/food | Droppers. END |
---|
/obj/item/reagent_containers/food/condiment | Condiments |
---|
/obj/item/reagent_containers/food/drinks | Drinks. |
---|---|
/obj/item/reagent_containers/food/drinks/golden_cup | Drinks. END |
/obj/item/reagent_containers/food/drinks/milk | Drinks |
/obj/item/reagent_containers/food/drinks/shaker | pitchers, pots, flasks and cups |
/obj/item/reagent_containers/food/drinks/bottle | Alcohol bottles! -Agouri |
---|---|
/obj/item/reagent_containers/food/drinks/bottle/gin | Precreated bottles |
/obj/item/reagent_containers/food/drinks/bottle/orangejuice | JUICES AND STUFF |
/obj/item/reagent_containers/food/snacks/aesirsalad | /////////////////////////////////////////Snacks |
---|---|
/obj/item/reagent_containers/food/snacks/sliceable | Sliceable |
/obj/item/reagent_containers/food/snacks/sliceable/pizza | PIZZA |
/obj/item/reagent_containers/glass | (Mixing)Glass. |
---|
/obj/item/reagent_containers/glass/beaker/large | Subtypes |
---|---|
/obj/item/reagent_containers/glass/beaker/hivemind | Preloaded beakers |
/obj/item/reagent_containers/glass/beaker/vial | Vial(s) |
/obj/item/reagent_containers/glass/beaker/vial/nanites | Preloaded vials |
/obj/item/reagent_containers/glass/bucket | Other |
/obj/item/reagent_containers/hypospray | HYPOSPRAY |
---|
/obj/item/reagent_containers/pill | Pills. |
---|---|
/obj/item/reagent_containers/pill/antitox | Pills. END |
SYRINGE_DRAW | Syringes. |
---|---|
/obj/item/reagent_containers/syringe/inaprovaline | Syringes. END |
/obj/item/reagent_containers/syringe/large/antitoxin | Large Syringes. |
Syringes.
/datum/reagent/alcohol/kaiserbeer | lose sanity on withdrawal, notify user about this |
---|
/datum/reagent/medicine | lose sanity on withdrawal, notify user about this |
---|
/datum/reagent/toxin/plasma | datum/reagent/toxin/blattedin is defined in blattedin.dm |
---|
/obj/structure/disposalpipe/up | Z-Level stuff |
---|---|
/obj/structure/disposalpipe/junction/yjunction | Z-Level stuff |
/datum/design/research |
---|
/datum/tech | Technology Trees |
---|
/datum/component/inspiration | Simple data container component containing level up statistics. +This does NOT make something a valid inspiration. It simply holds the data in case it gets used as one! +To actually use it, the typepath of the object has to be contained within the sanity datum valid_inspiration list. +Assign this component to an item specifying which statistics should be levelled up, and the item will be able to be used as an inspiration. +The format of statistics is list(STAT_DEFINE = number) or a proc that returns such a list. +(This would've been better as an element instead of a component, but currently elements don't exist on cev eris. F) |
---|
/obj/machinery/shieldwallgen | FIELD GEN START //shameless copypasta from fieldgen, powersink, and grille |
---|---|
/obj/machinery/shieldwall | Containment Field START |
|
/obj/machinery/telepad | SCI TELEPAD |
---|
External tgui definitions, such as src_object APIs. +Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
/proc/tgui_Topic | +Middleware for /client/Topic. |
---|
Base state and helpers for states. Just does some sanity checks, +implement a proper state for in-depth checks. +Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
/proc/default_ui_state | +The sane defaults for a UI such as a computer or a machine. |
---|---|
/proc/ui_status_user_is_adjacent | +Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living ] check for finer observer interactions. |
/proc/ui_status_only_living | +Returns a UI status such that the dead will be able to watch, but not interact. |
/proc/ui_status_user_is_abled | +Returns a UI status such that users with debilitating conditions, such as +being dead or not having power for silicons, will not be able to interact. +Being dead will disable UI, being incapacitated will continue updating it, +and anything else will make it interactive. |
/proc/ui_status_user_has_free_hands | +Returns a UI status such that those without blocked hands will be able to interact, +but everyone else can only watch. |
/proc/ui_status_user_is_advanced_tool_user | +Returns a UI status such that advanced tool users will be able to interact, +but everyone else can only watch. |
/proc/ui_status_silicon_has_access | +Returns a UI status such that silicons will be able to interact with whatever +they would have access to if this was a machine. For example, AIs can +interact if there's cameras with wireless control is enabled. |
/proc/ui_status_user_is_conscious_and_lying_down | +Returns UI_INTERACTIVE if the user is conscious and lying down. +Returns UI_UPDATE otherwise. |
/proc/ui_status_user_strictly_adjacent | +Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not. +Return UI_CLOSE otherwise. |
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT | |
/datum/tgui | tgui datum (represents a UI). |
---|
Copyright (c) 2020 Aleksej Komarov +SPDX-License-Identifier: MIT |
What is unit testing?+Unit tests are automated code to verify that parts of the game work exactly as they should. For example, a test to make sure that the amputation surgery actually amputates the limb. These are ran every time a PR is made, and thus are very helpful for preventing bugs from cropping up in your code that would've otherwise gone unnoticed. For example, would you have thought to check that beach boys would still work the same after editing pizza? If you value your time, probably not. +On their most basic level, when How do I write one?+
All unit test related code is in
To make a new unit test, you simply need to define a For example, let's suppose that we are creating a test to make sure a proc
+This defines our new unit test,
+As you can hopefully tell, we're simply checking if the output of
Open
+Then, run tgstation.dmb in Dream Daemon. Don't bother trying to connect, you won't need to. You'll be able to see the outputs of all the tests. You'll get to see which tests failed and for what reason. If they all pass, you're set! +How to think about tests+Unit tests exist to prevent bugs that would happen in a real game. Thus, they should attempt to emulate the game world wherever possible. For example, the quick swap sanity test emulates a real scenario of the bug it fixed occurring by creating a character and giving it real items. The unrecommended alternative would be to create special test-only items. This isn't a hard rule, the reagent method exposure tests create a test-only reagent for example, but do keep it in mind. +Unit tests should also be just that--testing units of code. For example, instead of having one massive test for reagents, there are instead several smaller tests for testing exposure, metabolization, etc. +The unit testing API+You can find more information about all of these from their respective doc comments, but for a brief overview: +
Final Notes+
|
TEST_FAIL | For advanced cases, fail unconditionally but don't return (so a test can return multiple results) |
---|---|
TEST_ASSERT | Asserts that a condition is true +If the condition is not true, fails the test |
TEST_ASSERT_NOTNULL | Asserts that a parameter is not null |
TEST_ASSERT_NULL | Asserts that a parameter is null |
TEST_ASSERT_EQUAL | Asserts that the two parameters passed are equal, fails otherwise +Optionally allows an additional message in the case of a failure |
TEST_ASSERT_NOTEQUAL | Asserts that the two parameters passed are not equal, fails otherwise +Optionally allows an additional message in the case of a failure |
TEST_FOCUS | Only run the test provided within the parentheses
+This is useful for debugging when you want to reduce noise, but should never be pushed
+Intended to be used in the manner of TEST_FOCUS(/datum/unit_test/math) |
UNIT_TEST_PASSED | Constants indicating unit test completion status |
TEST_OUTPUT_RED | Change color to red on ANSI terminal output, if enabled with -DANSICOLORS. |
TEST_OUTPUT_GREEN | Change color to green on ANSI terminal output, if enabled with -DANSICOLORS. |
TRAIT_SOURCE_UNIT_TESTS | A trait source when adding traits through unit tests |
Asserts that a condition is true +If the condition is not true, fails the test
Asserts that the two parameters passed are equal, fails otherwise +Optionally allows an additional message in the case of a failure
Asserts that the two parameters passed are not equal, fails otherwise +Optionally allows an additional message in the case of a failure
Asserts that a parameter is not null
Asserts that a parameter is null
For advanced cases, fail unconditionally but don't return (so a test can return multiple results)
Only run the test provided within the parentheses
+This is useful for debugging when you want to reduce noise, but should never be pushed
+Intended to be used in the manner of TEST_FOCUS(/datum/unit_test/math)
Change color to green on ANSI terminal output, if enabled with -DANSICOLORS.
Change color to red on ANSI terminal output, if enabled with -DANSICOLORS.
A trait source when adding traits through unit tests
Constants indicating unit test completion status
/datum/unit_test/log_mapping | Conveys all log_mapping messages as unit test failures, as they all indicate mapping problems. |
---|
/datum/unit_test/human_breath | Used to test mob breathing in space |
---|
/datum/unit_test/screenshot_basic | This is an example for screenshot tests, and a meta-test to make sure they work in the success case. +It creates a picture that is red on the left side, green on the other. |
---|
This folder contains the results for screenshot tests. Screenshot tests make sure an icon looks the same as it did before a change to prevent regressions. +You can create one by simply using the This example test screenshots a red image and keeps it. +
+Unfortunately, screenshot tests are sanest to test through a pull request directly, due to limitations with both DM and GitHub. |
/datum/unit_test/step_override | Checks if the override for step doesn't break the actual parent (byond built in) code |
---|
/datum/unit_test/tgui_create_message | Test that TGUI_CREATE_MESSAGE is correctly implemented |
---|
/proc/number_of_issues | +USED BY UNIT TEST: uniqueness.dm |
---|
The absolute base class for everything
+A datum instantiated has no physical world prescence, use an atom if you want something +that actually lives in the world
+Be very mindful about adding variables to this class, they are inherited by every single +thing in the entire game, and so you can easily cause memory usage to rise a lot with careless +use of variables at this level
Vars | |
active_timers | Active timers with this datum as the target |
---|---|
comp_lookup | Any datum registered to receive signals from this datum is in this list |
datum_components | Components attached to this datum |
datum_flags | Datum level flags |
gc_destroyed | Tick count time when this object was destroyed. |
signal_procs | Lazy associated list in the structure of [target][signal] = proc) that are run when the datum receives that signal |
tgui_shared_states | global |
weak_reference | A weak reference to another datum |
Procs | |
GetComponent | Return any component assigned to this datum of the given type |
GetComponents | Get all components of a given type that are attached to this datum |
GetExactComponent | Return any component assigned to this datum of the exact given type |
IsRegistered | Checks if we already are registered onto the object with said proc on said signal |
Process | This proc is called on a datum on every "cycle" if it is being processed by a subsystem. The time between each cycle is determined by the subsystem's "wait" setting. +You can start and stop processing a datum using the START_PROCESSING and STOP_PROCESSING defines. |
RegisterSignal | Register to listen for a signal from the passed in target |
RegisterSignals | Registers multiple signals to the same proc. |
TakeComponent | Transfer this component to another parent |
TransferComponents | Transfer all components to target |
UnregisterSignal | Stop listening to a given signal from target |
_AddComponent | Creates an instance of new_type in the datum and attaches to it as parent |
_AddElement | Finds the singleton for the element type given and attaches it to src |
_LoadComponent | Get existing component of type, or create it and return a reference to it |
_RemoveElement | Finds the singleton for the element type given and detaches it from src +You only need additional arguments beyond the type if you're using ELEMENT_BESPOKE |
_SendSignal | Internal proc to handle most all of the signaling procedure |
nano_ui_data | Data to be sent to the UI. +This must be implemented for a UI to work. |
nano_ui_interact | The nano_ui_interact proc is used to open and update Nano UIs +If nano_ui_interact is not used then the UI will not update correctly +nano_ui_interact is currently defined for /atom/movable |
ui_act | public |
ui_assets | public |
ui_close | public |
ui_data | public |
ui_host | private |
ui_interact | public |
ui_state | private |
ui_static_data | public |
ui_status | public |
update_static_data | public |
update_static_data_for_all_viewers | public |
Active timers with this datum as the target
Any datum registered to receive signals from this datum is in this list
+Lazy associated list in the structure of [signal] = list(registered_objects)
Components attached to this datum
+Lazy associated list in the structure of type:component/list of components
Datum level flags
Tick count time when this object was destroyed.
+If this is non zero then the object has been garbage collected and is awaiting either +a hard del by the GC subsystme, or to be autocollected (if it has no references)
Lazy associated list in the structure of [target][signal] = proc)
that are run when the datum receives that signal
global
+Associative list of JSON-encoded shared states that were set by +tgui clients.
A weak reference to another datum
Return any component assigned to this datum of the given type
+This will throw an error if it's possible to have more than one component of that type on the parent
+Arguments:
+Get all components of a given type that are attached to this datum
+Arguments:
+Return any component assigned to this datum of the exact given type
+This will throw an error if it's possible to have more than one component of that type on the parent
+Arguments:
+Checks if we already are registered onto the object with said proc on said signal
This proc is called on a datum on every "cycle" if it is being processed by a subsystem. The time between each cycle is determined by the subsystem's "wait" setting. +You can start and stop processing a datum using the START_PROCESSING and STOP_PROCESSING defines.
+Since the wait setting of a subsystem can be changed at any time, it is important that any rate-of-change that you implement in this proc is multiplied by the delta_time that is sent as a parameter, +Additionally, any "prob" you use in this proc should instead use the DT_PROB define to make sure that the final probability per second stays the same even if the subsystem's wait is altered. +Examples where this must be considered:
+mytimer -= delta_time
, not mytimer -= 1
. This way, mytimer
will always have the unit of secondsL.adjustFireLoss(20 * delta_time)
, not L.adjustFireLoss(20)
. This way, the damage per second stays constant even if the wait of the subsystem is changedif(DT_PROB(25, delta_time))
, not if(prob(25))
. This way, if the subsystem wait is e.g. lowered, there won't be a higher chance of this event happening per secondIf you override this do not call parent, as it will return PROCESS_KILL. This is done to prevent objects that dont override process() from staying in the processing list
Register to listen for a signal from the passed in target
+This sets up a listening relationship such that when the target object emits a signal +the source datum this proc is called upon, will receive a callback to the given proctype +Use PROC_REF(procname), TYPE_PROC_REF(type,procname) or GLOBAL_PROC_REF(procname) macros to validate the passed in proc at compile time. +PROC_REF for procs defined on current type or it's ancestors, TYPE_PROC_REF for procs defined on unrelated type and GLOBAL_PROC_REF for global procs. +Return values from procs registered must be a bitfield
+Arguments:
+Registers multiple signals to the same proc.
Transfer this component to another parent
+Component is taken from source datum
+Arguments:
+Transfer all components to target
+All components from source datum are taken
+Arguments:
+Stop listening to a given signal from target
+Breaks the relationship between target and source datum, removing the callback when the signal fires
+Doesn't care if a registration exists or not
+Arguments:
+Creates an instance of new_type
in the datum and attaches to it as parent
Sends the COMSIG_COMPONENT_ADDED signal to the datum
+Returns the component that was created. Or the old component in a dupe situation where COMPONENT_DUPE_UNIQUE was set
+If this tries to add a component to an incompatible type, the component will be deleted and the result will be null
. This is very unperformant, try not to do it
Properly handles duplicate situations based on the dupe_mode
var
Finds the singleton for the element type given and attaches it to src
Get existing component of type, or create it and return a reference to it
+Use this if the item needs to exist at the time of this call, but may not have been created before now
+Arguments:
+Finds the singleton for the element type given and detaches it from src +You only need additional arguments beyond the type if you're using ELEMENT_BESPOKE
Internal proc to handle most all of the signaling procedure
+Will runtime if used on datums with an empty component list
+Use the SEND_SIGNAL define instead
Data to be sent to the UI. +This must be implemented for a UI to work.
+@param user /mob The mob who interacting with the UI +@param ui_key string A string key to use for this UI. Allows for multiple unique UIs on one obj/mob (defaut value "main")
+@return data /list Data to be sent to the UI
The nano_ui_interact proc is used to open and update Nano UIs +If nano_ui_interact is not used then the UI will not update correctly +nano_ui_interact is currently defined for /atom/movable
+@param user /mob The mob who is interacting with this UI +@param ui_key string A string key to use for this UI. Allows for multiple unique UIs on one obj/mob (defaut value "main") +@param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open UI +@param force_open enum See _defines/nanoui.dm
+@return nothing
public
+Called on a UI when the UI receieves a href. +Think of this as Topic().
+required action string The action/button that has been invoked by the user. +required params list A list of parameters attached to the button.
+return bool If the user's input has been handled and the UI should update.
public
+Called on an object when a tgui object is being created, allowing you to +push various assets to tgui, for examples spritesheets.
+return list List of asset datums or file paths.
public
+Called on a UI's object when the UI is closed, not to be confused with +client/verb/uiclose(), which closes the ui window
public
+Data to be sent to the UI. +This must be implemented for a UI to work.
+required user mob The mob interacting with the UI.
+return list Data to be sent to the UI.
private
+The UI's host object (usually src_object). +This allows modules/datums to have the UI attached to them, +and be a part of another object.
public
+Used to open and update UIs. +If this proc is not implemented properly, the UI will not update correctly.
+required user mob The mob who opened/is using the UI. +optional ui datum/tgui The UI to be updated, if it exists.
private
+The UI's state controller to be used for created uis +This is a proc over a var for memory reasons
public
+Static Data to be sent to the UI.
+Static data differs from normal data in that it's large data that should be +sent infrequently. This is implemented optionally for heavy uis that would +be sending a lot of redundant data frequently. Gets squished into one +object on the frontend side, but the static part is cached.
+required user mob The mob interacting with the UI.
+return list Statuic Data to be sent to the UI.
public
+Checks the UI state for a mob.
+required user mob The mob who opened/is using the UI. +required state datum/ui_state The state to check.
+return UI_state The state of the UI.
public
+Forces an update on static data. Should be done manually whenever something +happens to change static data.
+required user the mob currently interacting with the ui +optional ui ui to be updated
public
+Will force an update on static data for all viewers. +Should be done manually whenever something happens to +change static data.
Procs | |
view_log_panel | Panels |
---|
Panels
Procs | |
clear_zeroth_laws | Clear Laws |
---|---|
delete_law | Remove Laws |
get_state_law | Stating Laws |
set_state_law | Set |
set_zeroth_law | Add Laws |
Clear Laws
Remove Laws
Stating Laws
+Get
Set
Add Laws
Procs | |
get_serialized_url_mappings | Returns a cached tgui message of URL mappings |
---|
Returns a cached tgui message of URL mappings
If you don't need anything complicated.
Vars | |
assets | list of assets for this datum in the form of: +asset_filename = asset_file. At runtime the asset_file will be +converted into a asset_cache datum. |
---|---|
keep_local_name | TRUE for keeping local asset names when browse_rsc backend is used |
legacy | Set to true to have this asset also be sent via the legacy browse_rsc +system when cdn transports are enabled? |
list of assets for this datum in the form of: +asset_filename = asset_file. At runtime the asset_file will be +converted into a asset_cache datum.
TRUE for keeping local asset names when browse_rsc backend is used
Set to true to have this asset also be sent via the legacy browse_rsc +system when cdn transports are enabled?
Namespace'ed assets (for static css and html files)
+When sent over a cdn transport, all assets in the same asset datum will exist in the same folder, as their plain names.
+Used to ensure css files can reference files by url() without having to generate the css at runtime, both the css file and the files it depends on must exist in the same namespace asset datum. (Also works for html)
+For example blah.css
with asset blah.png
will get loaded as namespaces/a3d..14f/f12..d3c.css
and namespaces/a3d..14f/blah.png
. allowing the css file to load blah.png
by a relative url rather then compute the generated url with get_url_mappings().
+The namespace folder's name will change if any of the assets change. (excluding parent assets)
Vars | |
parents | parents - list of the parent asset or assets (in name = file assoicated format) for this namespace. +parent assets must be referenced by their generated url, but if an update changes a parent asset, it won't change the namespace's identity. |
---|---|
Procs | |
get_htmlloader | Get a html string that will load a html asset. +Needed because byond doesn't allow you to browse() to a url. |
parents - list of the parent asset or assets (in name = file assoicated format) for this namespace. +parent assets must be referenced by their generated url, but if an update changes a parent asset, it won't change the namespace's identity.
Get a html string that will load a html asset. +Needed because byond doesn't allow you to browse() to a url.
Procs | |
ModifyInserted | A simple proc handing the Icon for you to modify before it gets turned into an asset. |
---|---|
create_spritesheets | Override this proc to start creation of the spritesheet. All of the Insert, +InsertAll and etc. calls go here. |
icon_size_id | Returns the size class (ex design32x32) for a given sprite's icon |
A simple proc handing the Icon for you to modify before it gets turned into an asset.
+Arguments:
+Override this proc to start creation of the spritesheet. All of the Insert, +InsertAll and etc. calls go here.
Returns the size class (ex design32x32) for a given sprite's icon
+Arguments:
+An internal datum containing info on items in the asset cache. Mainly used to cache md5 info for speed.
Vars | |
keep_local_name | TRUE for keeping local asset names when browse_rsc backend is used |
---|---|
legacy | Should this file also be sent via the legacy browse_rsc system +when cdn transports are enabled? |
namespace | Used by the cdn system to keep legacy css assets with their parent +css file. (css files resolve urls relative to the css file, so the +legacy system can't be used if the css file itself could go out over +the cdn) |
namespace_parent | True if this is the parent css or html file for an asset's namespace |
TRUE for keeping local asset names when browse_rsc backend is used
Should this file also be sent via the legacy browse_rsc system +when cdn transports are enabled?
Used by the cdn system to keep legacy css assets with their parent +css file. (css files resolve urls relative to the css file, so the +legacy system can't be used if the css file itself could go out over +the cdn)
True if this is the parent css or html file for an asset's namespace
Base browse_rsc asset transport
Vars | |
dont_mutate_filenames | Don't mutate the filename of assets when sending via browse_rsc. +This is to make it easier to debug issues with assets, and allow server operators to bypass issues that make it to production. +If turning this on fixes asset issues, something isn't using get_asset_url and the asset isn't marked legacy, fix one of those. |
---|---|
Procs | |
Initialize | Initialize - Called when SSassets initializes. |
Load | Called when the transport is loaded by the config controller, not called on the default transport unless it gets loaded by a config change. |
get_asset_url | Returns a url for a given asset. +asset_name - Name of the asset. +asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name |
register_asset | Register a browser asset with the asset cache system +asset_name - the identifier of the asset +asset - the actual asset file (or an asset_cache_item datum) +returns a /datum/asset_cache_item. +mutiple calls to register the same asset under the same asset_name return the same datum |
send_assets | Sends a list of browser assets to a client +client - a client or mob +asset_list - A list of asset filenames to be sent to the client. Can optionally be assoicated with the asset's asset_cache_item datum. +Returns TRUE if any assets were sent. |
send_assets_slow | Precache files without clogging up the browse() queue, used for passively sending files on connection start. |
validate_config | Check the config is valid to load this transport +Returns TRUE or FALSE |
Don't mutate the filename of assets when sending via browse_rsc. +This is to make it easier to debug issues with assets, and allow server operators to bypass issues that make it to production. +If turning this on fixes asset issues, something isn't using get_asset_url and the asset isn't marked legacy, fix one of those.
Initialize - Called when SSassets initializes.
Called when the transport is loaded by the config controller, not called on the default transport unless it gets loaded by a config change.
Returns a url for a given asset. +asset_name - Name of the asset. +asset_cache_item - asset cache item datum for the asset, optional, overrides asset_name
Register a browser asset with the asset cache system +asset_name - the identifier of the asset +asset - the actual asset file (or an asset_cache_item datum) +returns a /datum/asset_cache_item. +mutiple calls to register the same asset under the same asset_name return the same datum
Sends a list of browser assets to a client +client - a client or mob +asset_list - A list of asset filenames to be sent to the client. Can optionally be assoicated with the asset's asset_cache_item datum. +Returns TRUE if any assets were sent.
Precache files without clogging up the browse() queue, used for passively sending files on connection start.
Check the config is valid to load this transport +Returns TRUE or FALSE
Procs | |
get_ui_content | Backpack Tweaks |
---|
Backpack Tweaks
Procs | |
create_organ | Internals |
---|
Internals
A datum that holds a proc to be called on another object, used to track proccalls to other objects
+var/datum/callback/C = new(object|null, /proc/type/path|"procstring", arg1, arg2, ... argn)
+var/timerid = addtimer(C, time, timertype)
+you can also use the compiler define shorthand
+var/timerid = addtimer(CALLBACK(object|null, /proc/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
+In some cases you can provide a shortform of the procname, see the proc typepath shortcuts documentation below
+var/result = C.Invoke(args, to, add)
additional args are added after the ones given when the callback was created
var/result = C.InvokeAsync(args, to, add)
Asyncronous - returns . on the first sleep then continues on in the background
+after the sleep/block ends, otherwise operates normally.
(these operate on paths, not types, so to these shortcuts, datum is NOT a parent of atom, etc...)
+.procname
+CALLBACK(GLOBAL_PROC, .some_proc_here)
.procname
+CALLBACK(src, .some_proc_here)
PROC_REF(procname)
+CALLBACK(src, PROC_REF(some_proc_here))
proc defined on a parent of a some type
+TYPE_PROC_REF(/some/type/, some_proc_here)
Otherwise you must always provide the full typepath of the proc (/type/of/thing/proc/procname)
Vars | |
arguments | A list of arguments to pass into the proc |
---|---|
delegate | The proc we will be calling on the object |
object | The object we will be calling the proc on |
user | A weak reference to the user who triggered this callback |
Procs | |
Invoke | Invoke this callback |
InvokeAsync | Invoke this callback async (waitfor=false) |
New | Create a new callback datum |
A list of arguments to pass into the proc
The proc we will be calling on the object
The object we will be calling the proc on
A weak reference to the user who triggered this callback
Invoke this callback
+Calls the registered proc on the registered object, if the user ref +can be resolved it also inclues that as an arg
+If the datum being called on is varedited, the call is wrapped via [WrapAdminProcCall][/proc/WrapAdminProcCall]
Invoke this callback async (waitfor=false)
+Calls the registered proc on the registered object, if the user ref +can be resolved it also inclues that as an arg
+If the datum being called on is varedited, the call is wrapped via WrapAdminProcCall
Create a new callback datum
+Arguments
+like normal callbacks but they also record their creation time for measurement purposes
Vars | |
creation_time | the REALTIMEOFDAY this callback datum was created in. used for testing latency |
---|
the REALTIMEOFDAY this callback datum was created in. used for testing latency
Category Item Setup
Procs | |
prune_job_prefs | Prune a player's job preferences based on current branch, rank and species |
---|
Prune a player's job preferences based on current branch, rank and species
+This proc goes through all the preferred jobs, and removes the ones incompatible with current rank or branch.
This should match the interface of /client wherever necessary.
Vars | |
mob | The mob the client controls |
---|---|
prefs | Player preferences datum for the client |
screen | Objects on the screen of the client |
view | The view of the client, similar to /client/var/view. |
The mob the client controls
Player preferences datum for the client
Objects on the screen of the client
The view of the client, similar to /client/var/view.
The component datum
+A component should be a single standalone unit +of functionality, that works by receiving signals from it's parent +object to provide some single functionality (i.e a slippery component) +that makes the object it's attached to cause people to slip over. +Useful when you want shared behaviour independent of type inheritance
Vars | |
can_transfer | Only set to true if you are able to properly transfer this component |
---|---|
dupe_mode | Defines how duplicate existing components are handled when added to a datum |
dupe_type | The type to check for duplication |
parent | The datum this components belongs to |
Procs | |
CheckDupeComponent | Called on a component when a component of the same type was added to the same parent with COMPONENT_DUPE_SELECTIVE |
ClearFromParent | Removes the component from parent, ends up with a null parent +Used as a helper proc by the component transfer proc, does not clean up the component like Destroy does |
Destroy | Properly removes the component from parent and cleans up references |
InheritComponent | Called on a component when a component of the same type was added to the same parent |
Initialize | Called during component creation with the same arguments as in new excluding parent. |
New | Create a new component. |
PostTransfer | Callback Just after a component is transferred |
PreTransfer | Callback Just before this component is transferred |
RegisterWithParent | Register the component with the parent object |
UnregisterFromParent | Unregister from our parent object |
_GetInverseTypeList | Internal proc to create a list of our type and all parent types |
_JoinParent | Internal proc to handle behaviour of components when joining a parent |
_RemoveFromParent | Internal proc to handle behaviour when being removed from a parent |
ui_host | Return the object that is the host of any UI's that this component has |
Only set to true if you are able to properly transfer this component
+At a minimum RegisterWithParent and UnregisterFromParent should be used
+Make sure you also implement PostTransfer for any post transfer handling
Defines how duplicate existing components are handled when added to a datum
+See COMPONENT_DUPE_* definitions for available options
The type to check for duplication
+null
means exact match on type
(default)
Any other type means that and all subtypes
The datum this components belongs to
Called on a component when a component of the same type was added to the same parent with COMPONENT_DUPE_SELECTIVE
+See /datum/component/var/dupe_mode
+C
's type will always be the same of the called component
return TRUE if you are absorbing the component, otherwise FALSE if you are fine having it exist as a duplicate component
Removes the component from parent, ends up with a null parent +Used as a helper proc by the component transfer proc, does not clean up the component like Destroy does
Properly removes the component from parent
and cleans up references
Arguments:
+Called on a component when a component of the same type was added to the same parent
+See /datum/component/var/dupe_mode
+C
's type will always be the same of the called component
Called during component creation with the same arguments as in new excluding parent.
+Do not call qdel(src)
from this function, return COMPONENT_INCOMPATIBLE
instead
Create a new component.
+Additional arguments are passed to Initialize()
+Arguments:
+Callback Just after a component is transferred
+Use this to do any special setup you need to do after being moved to a new object
+Do not call qdel(src)
from this function, return COMPONENT_INCOMPATIBLE
instead
Callback Just before this component is transferred
+Use this to do any special cleanup you might need to do before being deregged from an object
Register the component with the parent object
+Use this proc to register with your parent object
+Overridable proc that's called when added to a new parent
Unregister from our parent object
+Use this proc to unregister from your parent object
+Overridable proc that's called when removed from a parent
Internal proc to create a list of our type and all parent types
Internal proc to handle behaviour of components when joining a parent
Internal proc to handle behaviour when being removed from a parent
Return the object that is the host of any UI's that this component has
Simple data container component containing level up statistics. +This does NOT make something a valid inspiration. It simply holds the data in case it gets used as one! +To actually use it, the typepath of the object has to be contained within the sanity datum valid_inspiration list. +Assign this component to an item specifying which statistics should be levelled up, and the item will be able to be used as an inspiration. +The format of statistics is list(STAT_DEFINE = number) or a proc that returns such a list. +(This would've been better as an element instead of a component, but currently elements don't exist on cev eris. F)
Vars | |
get_stats | Callback used for dynamic calculation of the stats to level up, used if stats is null. It must accept NO arguments, and it needs to return a list shaped like stats. |
---|---|
stats | Simple list defined as list(STAT_DEFINE = number). |
Procs | |
Initialize | Statistics can be a list (static) or a callback to a proc that returns a list (of the same format) |
calculate_statistics | Returns stats if defined, otherwise it returns the return value of get_stats |
Callback used for dynamic calculation of the stats to level up, used if stats is null. It must accept NO arguments, and it needs to return a list shaped like stats.
Simple list defined as list(STAT_DEFINE = number).
Statistics can be a list (static) or a callback to a proc that returns a list (of the same format)
Returns stats if defined, otherwise it returns the return value of get_stats
Procs | |
InheritComponent | Cheap hack, but prevents unbalanced toxins from killing someone immediately |
---|
Cheap hack, but prevents unbalanced toxins from killing someone immediately
Procs | |
InheritComponent | Cheap hack, but prevents unbalanced toxins from killing someone immediately |
---|
Cheap hack, but prevents unbalanced toxins from killing someone immediately
Procs | |
Initialize | To do , add a human signal handler |
---|
To do , add a human signal handler
Procs | |
open_door | datum/computer/file/embedded_program/docking/simple/proc/signal_mech_sensor(var/command) |
---|
datum/computer/file/embedded_program/docking/simple/proc/signal_mech_sensor(var/command)
Vars | |
always_state | tgui state: always_state |
---|---|
current_test | IMPORTANT !!! IF YOU ARE CHANGING CC CHANGE THIS TOO |
density_set_event | Death Handling |
goonchatbasehtml | For the main html chat area |
hands_state | tgui state: hands_state |
logged_in_event | Life Handling |
notcontained_state | tgui state: notcontained_state |
sight_set_event | Shuttle Moved Handling |
turf_changed_event | Stat Handling |
unit_test_mapping_logs | When unit testing, all logs sent to log_mapping are stored here and retrieved in log_mapping unit test. |
tgui state: always_state
+Always grants the user UI_INTERACTIVE. Period.
IMPORTANT !!! IF YOU ARE CHANGING CC CHANGE THIS TOO
Death Handling
For the main html chat area
tgui state: hands_state
+Checks that the src_object is in the user's hands.
Life Handling
tgui state: notcontained_state
+Checks that the user is not inside src_object, and then makes the +default checks.
Shuttle Moved Handling
Stat Handling
When unit testing, all logs sent to log_mapping are stored here and retrieved in log_mapping unit test.
Start of queue linked list +End of queue linked list (used for appending to the list) +Are we loading in a new map? +for scheduling different subsystems for different stages of the round
Vars | |
current_initializing_subsystem | During initialization, will be the instanced subsytem that is currently initializing. +Outside of initialization, returns null. |
---|---|
current_ticklimit | current tick limit, assigned before running a subsystem. +used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits |
init_stage_completed | Most recent init stage to complete init. |
iteration | How many times have we ran |
last_run | world.time of last fire, for tracking lag outside of the mc |
last_type_processed | The type of the last subsystem to be fire()'d. |
make_runtime | makes the mc main loop runtime |
processing | Are we processing (higher values increase the processing delay by n ticks) |
skip_ticks | Only run ticker subsystems for the next n ticks. |
sleep_delta | How long is the MC sleeping between runs, read only (set by Loop() based off of anti-tick-contention heuristics) |
stack_end_detector | Stack end detector to detect stack overflows that kill the mc's main loop |
subsystems | List of subsystems to process(). |
Procs | |
RunQueue | RunQueue - Run thru the queue of subsystems to run, running them while balancing out their allocated tick precentage +Returns 0 if runtimed, a negitive number for logic errors, and a positive number if the operation completed without errors |
laggy_byond_map_update_incoming | Warns us that the end of tick byond map_update will be laggier then normal, so that we can just skip running subsystems this tick. |
During initialization, will be the instanced subsytem that is currently initializing. +Outside of initialization, returns null.
current tick limit, assigned before running a subsystem. +used by CHECK_TICK as well so that the procs subsystems call can obey that SS's tick limits
Most recent init stage to complete init.
How many times have we ran
world.time of last fire, for tracking lag outside of the mc
The type of the last subsystem to be fire()'d.
makes the mc main loop runtime
Are we processing (higher values increase the processing delay by n ticks)
Only run ticker subsystems for the next n ticks.
How long is the MC sleeping between runs, read only (set by Loop() based off of anti-tick-contention heuristics)
Stack end detector to detect stack overflows that kill the mc's main loop
List of subsystems to process().
RunQueue - Run thru the queue of subsystems to run, running them while balancing out their allocated tick precentage +Returns 0 if runtimed, a negitive number for logic errors, and a positive number if the operation completed without errors
Warns us that the end of tick byond map_update will be laggier then normal, so that we can just skip running subsystems this tick.
Defines a subsystem to be managed by the Master Controller
+Simply define a child of this subsystem, using the [SUBSYSTEM_DEF] macro, and the MC will handle registration. +Changing the name is required
Vars | |
can_fire | Set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later +use the SS_NO_FIRE flag instead for systems that never fire to keep it from even being added to list that is checked every tick |
---|---|
cost | Running average of the amount of milliseconds it takes the subsystem to complete a run (including all resumes but not the time spent paused) |
failure_strikes | How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out! |
flags | Subsystem Flags to control binary behavior. Flags must be set at compile time or before preinit finishes to take full effect. (You can also restart the mc to force them to process again) |
init_order | Order of initialization. Higher numbers are initialized first, lower numbers later. Use or create defines such as [INIT_ORDER_DEFAULT] so we can see the order in one file. |
init_stage | Which stage does this subsystem init at. Earlier stages can fire while later stages init. |
initialized | This var is set to TRUE after the subsystem has been initialized. |
last_fire | Last world.time the subsystem completed a run (as in wasn't paused by [MC_TICK_CHECK]) |
name | Name of the subsystem - you must change this |
next_fire | Scheduled world.time for next fire() |
paused_tick_usage | Tracks how much of a tick the subsystem has consumed in the current run |
paused_ticks | Tracks how many fires the subsystem has consecutively paused on in the current run |
postponed_fires | How many fires have we been requested to postpone |
priority | Priority Weight: When mutiple subsystems need to run in the same tick, higher priority subsystems will be given a higher share of the tick before MC_TICK_CHECK triggers a sleep, higher priority subsystems also run before lower priority subsystems |
queue_next | Next subsystem in the queue of subsystems to run this tick |
queue_prev | Previous subsystem in the queue of subsystems to run this tick |
queued_priority | Priority at the time the subsystem entered the queue. Needed to avoid changes in priority (by admins and the like) from breaking things. |
queued_time | Time the subsystem entered the queue, (for timing and priority reasons) |
runlevels | Bitmap of what game states can this subsystem fire at. See [RUNLEVELS_DEFAULT] for more details. |
state | Tracks the current execution state of the subsystem. Used to handle subsystems that sleep in fire so the mc doesn't run them again while they are sleeping |
tick_allocation_avg | How much of a tick (in percents of a tick) do we get allocated by the mc on avg. |
tick_allocation_last | How much of a tick (in percents of a tick) were we allocated last fire. |
tick_overrun | Running average of the amount of tick usage (in percents of a game tick) the subsystem has spent past its allocated time without pausing |
tick_usage | Running average of the amount of tick usage in percents of a tick it takes the subsystem to complete a run |
ticks | Tracks how many fires the subsystem takes to complete a run on average. |
times_fired | Tracks the amount of completed runs for the subsystem |
wait | Time to wait (in deciseconds) between each call to fire(). Must be a positive integer. |
Procs | |
OnConfigLoad | Called after the config has been loaded or reloaded. |
PreInit | datum/controller/subsystem/New() |
enqueue | Queue it to run. +(we loop thru a linked list until we get to the end or find the right point) +(this lets us sort our run order correctly without having to re-sort the entire already sorted list) |
fire | previously, this would have been named 'process()' but that name is used everywhere for different things! +fire() seems more suitable. This is the procedure that gets called every 'wait' deciseconds. +Sleeping in here prevents future fires until returned. |
ignite | This is used so the mc knows when the subsystem sleeps. do not override. |
postpone | Causes the next "cycle" fires to be missed. Effect is accumulative but can reset by calling update_nextfire(reset_time = TRUE) |
update_nextfire |
Set to 0 to prevent fire() calls, mostly for admin use or subsystems that may be resumed later +use the SS_NO_FIRE flag instead for systems that never fire to keep it from even being added to list that is checked every tick
Running average of the amount of milliseconds it takes the subsystem to complete a run (including all resumes but not the time spent paused)
How many times we suspect a subsystem type has crashed the MC, 3 strikes and you're out!
Subsystem Flags to control binary behavior. Flags must be set at compile time or before preinit finishes to take full effect. (You can also restart the mc to force them to process again)
Order of initialization. Higher numbers are initialized first, lower numbers later. Use or create defines such as [INIT_ORDER_DEFAULT] so we can see the order in one file.
Which stage does this subsystem init at. Earlier stages can fire while later stages init.
This var is set to TRUE after the subsystem has been initialized.
Last world.time the subsystem completed a run (as in wasn't paused by [MC_TICK_CHECK])
Name of the subsystem - you must change this
Scheduled world.time for next fire()
Tracks how much of a tick the subsystem has consumed in the current run
Tracks how many fires the subsystem has consecutively paused on in the current run
How many fires have we been requested to postpone
Priority Weight: When mutiple subsystems need to run in the same tick, higher priority subsystems will be given a higher share of the tick before MC_TICK_CHECK triggers a sleep, higher priority subsystems also run before lower priority subsystems
Next subsystem in the queue of subsystems to run this tick
Previous subsystem in the queue of subsystems to run this tick
Priority at the time the subsystem entered the queue. Needed to avoid changes in priority (by admins and the like) from breaking things.
Time the subsystem entered the queue, (for timing and priority reasons)
Bitmap of what game states can this subsystem fire at. See [RUNLEVELS_DEFAULT] for more details.
Tracks the current execution state of the subsystem. Used to handle subsystems that sleep in fire so the mc doesn't run them again while they are sleeping
How much of a tick (in percents of a tick) do we get allocated by the mc on avg.
How much of a tick (in percents of a tick) were we allocated last fire.
Running average of the amount of tick usage (in percents of a game tick) the subsystem has spent past its allocated time without pausing
Running average of the amount of tick usage in percents of a tick it takes the subsystem to complete a run
Tracks how many fires the subsystem takes to complete a run on average.
Tracks the amount of completed runs for the subsystem
Time to wait (in deciseconds) between each call to fire(). Must be a positive integer.
Called after the config has been loaded or reloaded.
datum/controller/subsystem/New()
Queue it to run. +(we loop thru a linked list until we get to the end or find the right point) +(this lets us sort our run order correctly without having to re-sort the entire already sorted list)
previously, this would have been named 'process()' but that name is used everywhere for different things! +fire() seems more suitable. This is the procedure that gets called every 'wait' deciseconds. +Sleeping in here prevents future fires until returned.
This is used so the mc knows when the subsystem sleeps. do not override.
Causes the next "cycle" fires to be missed. Effect is accumulative but can reset by calling update_nextfire(reset_time = TRUE)
Procs | |
add_zone | Procs, which doesn't get involved in processing directly |
---|---|
process_pipenets | Processing procs |
setup_allturfs | Setup procs |
Procs, which doesn't get involved in processing directly
Processing procs
Setup procs
Vars | |
created_atoms | initAtom() adds the atom its creating to this list iff InitializeAtoms() has been given a list to populate as an argument |
---|---|
Procs | |
InitAtom | Init this specific atom |
initAtom() adds the atom its creating to this list iff InitializeAtoms() has been given a list to populate as an argument
Init this specific atom
Procs | |
generateHoloMinimaps | Generates all the holo minimaps, initializing it all nicely, probably. |
---|
Generates all the holo minimaps, initializing it all nicely, probably.
Vars | |
ckey_to_total_playtime | Eris specific stuff , playtimes are based off overall hours , and not on hours in said departament. |
---|---|
queries_by_key | DOS Attack prevention by locking off file-reads. |
Procs | |
CheckHeadPositions | This proc is called at the start of the level loop of DivideOccupations() and will cause head jobs to be checked before any other jobs of the same level |
CreateConfigFile | No playtimes registered +return to last dir |
DivideOccupations | |
FillHeadPosition | This proc is called before the level loop of DivideOccupations() and will try to select a head, ignoring ALL non-head preferences for every level until it locates a head or runs out of levels to check |
LoadPlaytimeRequirements | Blame linters!!!! |
LoadPlaytimes | failsafe for non-existant config folders. |
get_spawnpoint_for | Return appropriate /datum/spawnpoint for given client and rank |
Eris specific stuff , playtimes are based off overall hours , and not on hours in said departament.
DOS Attack prevention by locking off file-reads.
This proc is called at the start of the level loop of DivideOccupations() and will cause head jobs to be checked before any other jobs of the same level
No playtimes registered +return to last dir
This proc is called before the level loop of DivideOccupations() and will try to select a head, ignoring ALL non-head preferences for every level until it locates a head or runs out of levels to check
Blame linters!!!!
failsafe for non-existant config folders.
Return appropriate /datum/spawnpoint for given client and rank
+Spawnpoint will be the one set in preferences for the client, unless the +preference is not set, or the preference is not appropriate for the rank, in +which case a fallback will be selected.
Procs | |
Initialize | Burrow Creation |
---|---|
handle_plant_spreading | Plant Handling |
Burrow Creation
Plant Handling
Vars | |
process_proc | Eris-specific process debugger |
---|---|
Procs | |
toggle_debug | ERIS PROCESS DEBUGGER |
Eris-specific process debugger
ERIS PROCESS DEBUGGER
Procs | |
GetIdFromArguments | Generates an id for bespoke elements when given the argument list +Generating the id here is a bit complex because we need to support named arguments +Named arguments can appear in any order and we need them to appear after ordered arguments +We assume that no one will pass in a named argument with a value of null |
---|
Generates an id for bespoke elements when given the argument list +Generating the id here is a bit complex because we need to support named arguments +Named arguments can appear in any order and we need them to appear after ordered arguments +We assume that no one will pass in a named argument with a value of null
Procs | |
close_uis | Close all /nanoui uis attached to src_object |
---|---|
close_user_uis | Close /nanoui uis belonging to user |
get_open_ui | Get an open /nanoui ui for the current user, src_object and ui_key |
try_update_ui | Get an open /nanoui ui for the current user, src_object and ui_key and try to update it with data |
ui_closed | Remove a /nanoui ui from the list of open uis +This is called by the /nanoui close() proc |
ui_opened | Add a /nanoui ui to the list of open uis +This is called by the /nanoui open() proc |
update_uis | Update all /nanoui uis attached to src_object |
update_user_uis | Update /nanoui uis belonging to user |
user_logout | This is called on user logout +Closes/clears all uis attached to the user's /mob |
user_transferred | This is called when a player transfers from one mob to another +Transfers all open UIs to the new mob |
Close all /nanoui uis attached to src_object
+@param src_object /obj|/mob The obj or mob which the uis are attached to
+@return int The number of uis close
Close /nanoui uis belonging to user
+@param user /mob The mob who owns the uis +@param src_object /obj|/mob If src_object is provided, only close uis which are attached to src_object (optional) +@param ui_key string If ui_key is provided, only close uis with a matching ui_key (optional)
+@return int The number of uis closed
Get an open /nanoui ui for the current user, src_object and ui_key
+@param user /mob The mob who opened/owns the ui +@param src_object /obj|/mob The obj or mob which the ui belongs to +@param ui_key string A string key used for the ui
+@return /nanoui Returns the found ui, or null if none exists
Get an open /nanoui ui for the current user, src_object and ui_key and try to update it with data
+@param user /mob The mob who opened/owns the ui +@param src_object /obj|/mob The obj or mob which the ui belongs to +@param ui_key string A string key used for the ui +@param ui /datum/nanoui An existing instance of the ui (can be null) +@param data list The data to be passed to the ui, if it exists +@param force_open boolean The ui is being forced to (re)open, so close ui if it exists (instead of updating)
+@return /nanoui Returns the found ui, for null if none exists
Remove a /nanoui ui from the list of open uis +This is called by the /nanoui close() proc
+@param ui /nanoui The ui to remove
+@return int 0 if no ui was removed, 1 if removed successfully
Add a /nanoui ui to the list of open uis +This is called by the /nanoui open() proc
+@param ui /nanoui The ui to add
+@return nothing
Update all /nanoui uis attached to src_object
+@param src_object /obj|/mob The obj or mob which the uis are attached to
+@return int The number of uis updated
Update /nanoui uis belonging to user
+@param user /mob The mob who owns the uis +@param src_object /obj|/mob If src_object is provided, only update uis which are attached to src_object (optional) +@param ui_key string If ui_key is provided, only update uis with a matching ui_key (optional)
+@return int The number of uis updated
This is called on user logout +Closes/clears all uis attached to the user's /mob
+@param user /mob The user's mob
+@return nothing
This is called when a player transfers from one mob to another +Transfers all open UIs to the new mob
+@param oldMob /mob The user's old mob +@param newMob /mob The user's new mob
+@return nothing
Procs | |
generate_data | datum/controller/subsystem/spawn_data +datum/controller/subsystem/spawn_data/Initialize() |
---|---|
spawn_by_tag | obj/item/stack/get_item_cost(export) +obj/item/ammo_casing/get_item_cost(export) +obj/item/handcuffs/get_item_cost(export) +obj/machinery/get_item_cost(export) +obj/item/ammo_magazine/get_item_cost(export) |
datum/controller/subsystem/spawn_data +datum/controller/subsystem/spawn_data/Initialize()
obj/item/stack/get_item_cost(export) +obj/item/ammo_casing/get_item_cost(export) +obj/item/handcuffs/get_item_cost(export) +obj/machinery/get_item_cost(export) +obj/item/ammo_magazine/get_item_cost(export)
Vars | |
basehtml | The HTML base used for all UIs. |
---|---|
current_run | A list of UIs scheduled to process |
open_uis | A list of open UIs |
open_uis_by_src | A list of open UIs, grouped by src_object. |
Procs | |
close_all_uis | public |
close_uis | public |
close_user_uis | public |
force_close_all_windows | public |
force_close_window | public |
get_open_ui | public |
on_close | private |
on_logout | private |
on_open | private |
on_transfer | private |
request_pooled_window | public |
try_update_ui | public |
update_uis | public |
update_user_uis | public |
The HTML base used for all UIs.
A list of UIs scheduled to process
A list of open UIs
A list of open UIs, grouped by src_object.
public
+Close all UIs regardless of their attachment to src_object.
+return int The number of UIs closed.
public
+Close all UIs attached to src_object.
+required src_object datum The object/datum which owns the UIs.
+return int The number of UIs closed.
public
+Close all UIs belonging to a user.
+required user mob The mob who opened/is using the UI. +optional src_object datum If provided, only close UIs belonging this src_object.
+return int The number of UIs closed.
public
+Force closes all tgui windows.
+required user mob
public
+Force closes the tgui window by window_id.
+required user mob +required window_id string
public
+Get a open UI given a user and src_object.
+required user mob The mob who opened/is using the UI. +required src_object datum The object/datum which owns the UI.
+return datum/tgui The found UI.
private
+Remove a UI from the list of open UIs.
+required ui datum/tgui The UI to be removed.
+return bool If the UI was removed or not.
private
+Handle client logout, by closing all their UIs.
+required user mob The mob which logged out.
+return int The number of UIs closed.
private
+Add a UI to the list of open UIs.
+required ui datum/tgui The UI to be added.
private
+Handle clients switching mobs, by transferring their UIs.
+required user source The client's original mob. +required user target The client's new mob.
+return bool If the UIs were transferred.
public
+Requests a usable tgui window from the pool. +Returns null if pool was exhausted.
+required user mob +return datum/tgui
public
+Try to find an instance of a UI, and push an update to it.
+required user mob The mob who opened/is using the UI. +required src_object datum The object/datum which owns the UI. +optional ui datum/tgui The UI to be updated, if it exists. +optional force_open bool If the UI should be re-opened instead of updated.
+return datum/tgui The found UI.
public
+Update all UIs attached to src_object.
+required src_object datum The object/datum which owns the UIs.
+return int The number of UIs updated.
public
+Update all UIs belonging to a user.
+required user mob The mob who opened/is using the UI. +optional src_object datum If provided, only update UIs belonging this src_object.
+return int The number of UIs updated.
Vars | |
excelsior_hijacking | See excelsior_redirector.dm,0 for not happening, 1 for in progress , 2 for finished(And for the round to end immediately) |
---|
See excelsior_redirector.dm,0 for not happening, 1 for in progress , 2 for finished(And for the round to end immediately)
Vars | |
anchor_link_extra | Text that will be added to the anchor link |
---|---|
other_ticket_name | The name of the other ticket type to convert to |
other_ticket_permission | Which permission to look for when seeing if there is staff available for the other ticket type |
Procs | |
makeUrlMessage | Will add the URLs usable by staff to the message and return it +Arguments: +C - The client who send the message +msg - The raw message +ticketNum - Which ticket number the ticket has |
message_staff | |
newHelpRequest | Will either make a new ticket using the given text or will add the text to an existing ticket. +Staff will get a message +Arguments: +C - The client who requests help +text - The text the client send |
Text that will be added to the anchor link
The name of the other ticket type to convert to
Which permission to look for when seeing if there is staff available for the other ticket type
Will add the URLs usable by staff to the message and return it +Arguments: +C - The client who send the message +msg - The raw message +ticketNum - Which ticket number the ticket has
Will either make a new ticket using the given text or will add the text to an existing ticket. +Staff will get a message +Arguments: +C - The client who requests help +text - The text the client send
Vars | |
bucket_auto_reset | Boolean operator controlling if the timer SS will automatically reset buckets if it fails to invoke callbacks for an extended period of time |
---|---|
bucket_count | How many timers are in the buckets |
bucket_list | List of buckets, each bucket holds every timer that has to run that byond tick |
bucket_reset_count | How many times bucket was reset |
bucket_resolution | world.tick_lag the bucket was designed for |
clienttime_timers | Special timers that run in real-time, not BYOND time; these are more expensive to run and maintain |
hashes | A hashlist dictionary used for storing unique timers |
head_offset | world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets |
last_invoke_tick | Contains the last time that a timer's callback was invoked, or the last tick the SS fired if no timers are being processed |
last_invoke_warning | Contains the last time that a warning was issued for not invoking callbacks |
next_clienttime_timer_index | Keeps track of the next index to work on for client timers |
practical_offset | Index of the wrap around pivot for buckets. buckets before this are later running buckets wrapped around from the end of the bucket list. |
second_queue | Queue used for storing timers that do not fit into the current buckets |
timer_id_dict | List of all active timers associated to their timer ID (for easy lookup) |
Procs | |
get_timer_debug_string | Generates a string with details about the timed event for debugging purposes |
reset_buckets | Destroys the existing buckets and creates new buckets from the existing timed events |
Boolean operator controlling if the timer SS will automatically reset buckets if it fails to invoke callbacks for an extended period of time
How many timers are in the buckets
List of buckets, each bucket holds every timer that has to run that byond tick
How many times bucket was reset
world.tick_lag the bucket was designed for
Special timers that run in real-time, not BYOND time; these are more expensive to run and maintain
A hashlist dictionary used for storing unique timers
world.time of the first entry in the bucket list, effectively the 'start time' of the current buckets
Contains the last time that a timer's callback was invoked, or the last tick the SS fired if no timers are being processed
Contains the last time that a warning was issued for not invoking callbacks
Keeps track of the next index to work on for client timers
Index of the wrap around pivot for buckets. buckets before this are later running buckets wrapped around from the end of the bucket list.
Queue used for storing timers that do not fit into the current buckets
List of all active timers associated to their timer ID (for easy lookup)
Generates a string with details about the timed event for debugging purposes
Destroys the existing buckets and creates new buckets from the existing timed events
Vars | |
FOR_ADMINS_IF_VERBS_FUCKED_immediately_execute_all_verbs | if this is true all verbs immediately execute and dont queue. in case the mc is fucked or something |
---|---|
always_queue | always queue if possible. overides can_queue_admin_verbs but not FOR_ADMINS_IF_VERBS_FUCKED_immediately_execute_all_verbs |
can_queue_admin_verbs | if TRUE we treat usr's with holders just like usr's without holders. otherwise they always execute immediately |
message_admins_on_queue | if TRUE this will... message admins every time a verb is queued to this subsystem for the next tick with stats. +for obvious reasons dont make this be TRUE on the code level this is for admins to turn on |
use_default_stats | used for subtypes to determine if they use their own stats for the stat entry |
verb_queue | list of callbacks to procs called from verbs or verblike procs that were executed when the server was overloaded and had to delay to the next tick. +this list is ran through every tick, and the subsystem does not yield until this queue is finished. |
verbs_executed_per_second | running average of how many verb callbacks are executed every second. used for the stat entry |
Procs | |
can_queue_verb | subsystem-specific check for whether a callback can be queued. +intended so that subsystem subtypes can verify whether |
queue_verb | queue a callback for the given proc, so that it is invoked in the next tick. +intended to only work with verbs or verblike procs called directly from client input, use as part of TRY_QUEUE_VERB() |
run_verb_queue | runs through all of this subsystems queue of verb callbacks. +goes through the entire verb queue without yielding. +used so you can flush the queue outside of fire() without interfering with anything else subtype subsystems might do in fire(). |
if this is true all verbs immediately execute and dont queue. in case the mc is fucked or something
always queue if possible. overides can_queue_admin_verbs but not FOR_ADMINS_IF_VERBS_FUCKED_immediately_execute_all_verbs
if TRUE we treat usr's with holders just like usr's without holders. otherwise they always execute immediately
if TRUE this will... message admins every time a verb is queued to this subsystem for the next tick with stats. +for obvious reasons dont make this be TRUE on the code level this is for admins to turn on
used for subtypes to determine if they use their own stats for the stat entry
list of callbacks to procs called from verbs or verblike procs that were executed when the server was overloaded and had to delay to the next tick. +this list is ran through every tick, and the subsystem does not yield until this queue is finished.
running average of how many verb callbacks are executed every second. used for the stat entry
subsystem-specific check for whether a callback can be queued. +intended so that subsystem subtypes can verify whether
+subtypes may include additional arguments here if they need them! you just need to include them properly +in TRY_QUEUE_VERB() and co.
queue a callback for the given proc, so that it is invoked in the next tick. +intended to only work with verbs or verblike procs called directly from client input, use as part of TRY_QUEUE_VERB()
+returns TRUE if the queuing was successful, FALSE otherwise.
runs through all of this subsystems queue of verb callbacks. +goes through the entire verb queue without yielding. +used so you can flush the queue outside of fire() without interfering with anything else subtype subsystems might do in fire().
Vars | |
iconfile | gets set during asset init |
---|
gets set during asset init
Design Datums
+
+All the data for building stuff and tracking reliability.
Trail systems
+
+These systems register an Observation proc on their target atom, and generate a +particle whenever the target moves
A holder for simple behaviour that can be attached to many different types
+Only one element of each type is instanced during game init. +Otherwise acts basically like a lightweight component.
Vars | |
argument_hash_start_idx | The index of the first attach argument to consider for duplicate elements |
---|---|
element_flags | Option flags for element behaviour |
Procs | |
Attach | Activates the functionality defined by the element on the given target datum |
Detach | Deactivates the functionality defines by the element on the given datum |
The index of the first attach argument to consider for duplicate elements
+All arguments from this index onwards (1 based) are hashed into the key to determine +if this is a new unique element or one already exists
+Is only used when flags contains ELEMENT_BESPOKE
+This is infinity so you must explicitly set this
Option flags for element behaviour
Activates the functionality defined by the element on the given target datum
Deactivates the functionality defines by the element on the given datum
Procs | |
start | . |
---|
.
Vars | |
author | Who is the author of the full-size article to the feed channel? |
---|---|
body | Body of the full-size article to the feed channel. |
caption | If the message has an image, what is that image's caption? |
img | Is there an image tied to the feed message? |
photo_file | Referece to the photo used in picture messages. |
time_stamp | At what time was the full-size article sent? Time is in station time. |
Who is the author of the full-size article to the feed channel?
Body of the full-size article to the feed channel.
If the message has an image, what is that image's caption?
Is there an image tied to the feed message?
Referece to the photo used in picture messages.
At what time was the full-size article sent? Time is in station time.
Energy weapon charge attack
+Vars | |
output_file | If present response body will be saved to this file. |
---|
If present response body will be saved to this file.
Vars | |
description | datum/computer_file/program/supply, +datum/computer_file/program/deck_management, |
---|
datum/computer_file/program/supply, +datum/computer_file/program/deck_management,
Vars | |
outfit_type | datum/computer_file/program/supply, +datum/computer_file/program/deck_management, |
---|
datum/computer_file/program/supply, +datum/computer_file/program/deck_management,
Vars | |
description | datum/computer_file/program/aidiag, |
---|
datum/computer_file/program/aidiag,
Vars | |
created_atoms | the list of atoms created by this template being loaded, only populated if returns_created_atoms is TRUE |
---|---|
returns_created_atoms | if true, creates a list of all atoms created by this template loading, defaults to FALSE |
the list of atoms created by this template being loaded, only populated if returns_created_atoms is TRUE
if true, creates a list of all atoms created by this template loading, defaults to FALSE
Vars | |
addiction_chance_multiplier | The final chance for an addiction to manifest is multiplied by this value before being passed to prob. |
---|
The final chance for an addiction to manifest is multiplied by this value before being passed to prob.
mob/living/exosuit/can_ztravel()
Procs | |
DoMove | Added to handle with the case of ballistic shields (and probably other ones in the future.) |
---|
Added to handle with the case of ballistic shields (and probably other ones in the future.)
NANO UI FRAMEWORK
+nanoui class (or whatever Byond calls classes)
+nanoui is used to open and update nano browser uis
Procs | |
New | Create a new nanoui instance. |
---|---|
Process | This Process proc is called by SSnano. +Use try_update() to make manual updates. |
Topic | This Topic() proc is called whenever a user clicks on a link within a Nano UI +If the UI status is currently STATUS_INTERACTIVE then call the src_object Topic() +If the src_object Topic() returns 1 (true) then update all UIs attached to src_object |
add_common_assets | Use this proc to add assets which are common to (and required by) all nano uis |
add_script | Add a JavsScript script to this UI +These must be added before the UI has been opened, adding after that will have no effect |
add_stylesheet | Add a CSS stylesheet to this UI +These must be added before the UI has been opened, adding after that will have no effect |
add_template | Add a template for this UI +Templates are combined with the data sent to the UI to create the rendered view +These must be added before the UI has been opened, adding after that will have no effect |
close | Close this UI |
focus | Move window up front. |
get_config_data | Get config data to sent to the ui. |
get_html | Return the HTML for this UI |
get_send_data | Get data to sent to the ui. |
open | Open this UI |
push_data | Push data to an already open UI window |
reinitialise | Reinitialise this UI, potentially with a different template and/or initial data |
set_auto_update | Set the ui to auto update (every master_controller tick) |
set_auto_update_content | Set the ui to update the main content (re-render it) on each update |
set_auto_update_layout | Set the ui to update the layout (re-render it) on each update, turning this on will break the map ui (if it's being used) |
set_initial_data | Set the initial data for the ui. This is vital as the data structure set here cannot be changed when pushing new updates. |
set_layout_key | Set the layout key for use in the frontend Javascript +The layout key is the basic layout key for the page +Two files are loaded on the client based on the layout key varable: +-> a template in /nano/templates with the filename "layout_<layout_key>.tmpl +-> a CSS stylesheet in /nano/css with the filename "layout_<layout_key>.css |
set_map_z_level | Toggle showing the map ui |
set_show_map | Toggle showing the map ui |
set_state_key | Set the state key for use in the frontend Javascript |
set_status | Set the current status (also known as visibility) of this ui. |
set_window_options | Set the browser window options for this ui |
try_update | Process this UI, updating the entire UI or just the status (aka visibility) |
update | Update the UI |
update_status | Update the status (visibility) of this ui based on the user's status |
use_on_close_logic | Set whether or not to use the "old" on close logic (mainly unset_machine()) |
verify_open | Verify if this UI window is actually open on client's side |
Create a new nanoui instance.
+@param nuser /mob The mob who has opened/owns this ui +@param nsrc_object /obj|/mob The obj or mob which this ui belongs to +@param nui_key string A string key to use for this ui. Allows for multiple unique uis on one src_oject +@param ntemplate string The filename of the template file from /nano/templates (e.g. "my_template.tmpl") +@param ntitle string The title of this ui +@param nwidth int the width of the ui window +@param nheight int the height of the ui window +@param nref /atom A custom ref to use if "on_close_logic" is set to 1
+@return /nanoui new nanoui object
This Process proc is called by SSnano. +Use try_update() to make manual updates.
This Topic() proc is called whenever a user clicks on a link within a Nano UI +If the UI status is currently STATUS_INTERACTIVE then call the src_object Topic() +If the src_object Topic() returns 1 (true) then update all UIs attached to src_object
+@return nothing
Use this proc to add assets which are common to (and required by) all nano uis
+@return nothing
Add a JavsScript script to this UI +These must be added before the UI has been opened, adding after that will have no effect
+@param file string The name of the JavaScript file from /nano/js (e.g. "my_script.js")
+@return nothing
Add a CSS stylesheet to this UI +These must be added before the UI has been opened, adding after that will have no effect
+@param file string The name of the CSS file from /nano/css (e.g. "my_style.css")
+@return nothing
Add a template for this UI +Templates are combined with the data sent to the UI to create the rendered view +These must be added before the UI has been opened, adding after that will have no effect
+@param key string The key which is used to reference this template in the frontend +@param filename string The name of the template file from /nano/templates (e.g. "my_template.tmpl")
+@return nothing
Close this UI
+@return nothing
Move window up front.
+@return nothing
Get config data to sent to the ui.
+@return /list config data
Return the HTML for this UI
+@return string HTML for the UI
Get data to sent to the ui.
+@param data /list The list of general data for this ui (can be null to use previous data sent)
+@return /list data to send to the ui
Open this UI
+@return nothing
Push data to an already open UI window
+@return nothing
Reinitialise this UI, potentially with a different template and/or initial data
+@return nothing
Set the ui to auto update (every master_controller tick)
+@param state int (bool) Set auto update to 1 or 0 (true/false)
+@return nothing
Set the ui to update the main content (re-render it) on each update
+@param state int (bool) Set update to 1 or 0 (true/false) (default 1)
+@return nothing
Set the ui to update the layout (re-render it) on each update, turning this on will break the map ui (if it's being used)
+@param state int (bool) Set update to 1 or 0 (true/false) (default 0)
+@return nothing
Set the initial data for the ui. This is vital as the data structure set here cannot be changed when pushing new updates.
+@param data /list The list of data for this ui
+@return nothing
Set the layout key for use in the frontend Javascript +The layout key is the basic layout key for the page +Two files are loaded on the client based on the layout key varable: +-> a template in /nano/templates with the filename "layout_<layout_key>.tmpl +-> a CSS stylesheet in /nano/css with the filename "layout_<layout_key>.css
+@param nlayout string The layout key to use
+@return nothing
Toggle showing the map ui
+@param nstate_key boolean 1 to show map, 0 to hide (default is 0)
+@return nothing
Toggle showing the map ui
+@param nstate_key boolean 1 to show map, 0 to hide (default is 0)
+@return nothing
Set the state key for use in the frontend Javascript
+@param nstate_key string The key of the state to use
+@return nothing
Set the current status (also known as visibility) of this ui.
+@param state int The status to set, see the defines at the top of this file +@param push_update int (bool) Push an update to the ui to update it's status (an update is always sent if the status has changed to red (0))
+@return nothing
Set the browser window options for this ui
+@param nwindow_options string The new window options
+@return nothing
Process this UI, updating the entire UI or just the status (aka visibility)
+@param update string For this UI to update
+@return nothing
Update the UI
+@return nothing
Update the status (visibility) of this ui based on the user's status
+@param push_update int (bool) Push an update to the ui to update it's status. This is set to 0/false if an update is going to be pushed anyway (to avoid unnessary updates)
+@return 1 if closed, null otherwise.
Set whether or not to use the "old" on close logic (mainly unset_machine())
+@param state int (bool) Set on_close_logic to 1 or 0 (true/false)
+@return nothing
Verify if this UI window is actually open on client's side
+@return is_open boolean - if the UI is actually open on client.
Vars | |
materials | TODO: proper recipe |
---|
TODO: proper recipe
Vars | |
materials | TODO: proper recipe |
---|
TODO: proper recipe
The root perk datum. All perks inherit properties from this one.
+A perk is basically a talent that livings may have. This talent could be something like damage reduction, or some other passive benefit. +Some jobs have perks that are assigned to the human during role assignment. +Perks can be assigned or removed. To handle this, use the mob stats datum, with the helper procs addPerk, removePerk and getPerk. +The static effects are given in assign, and removed in remove. +Perks are stored in a list within a stat_holder datum.
Procs | |
assign | Proc called when the perk is assigned to a human. Should be the first thing to be called. |
---|---|
check_shared_ability | Proc called , a bitflag is always expected. |
on_process | Proc called in human life. Should be the first thing to be called. |
remove | Proc called when the perk is removed from a human. Obviously, in your perks, you should call parent as the last thing you do, since it deletes the perk itself. |
Proc called when the perk is assigned to a human. Should be the first thing to be called.
Proc called , a bitflag is always expected.
Proc called in human life. Should be the first thing to be called.
Proc called when the perk is removed from a human. Obviously, in your perks, you should call parent as the last thing you do, since it deletes the perk itself.
Procs | |
add_cable | ... delete it |
---|---|
add_machine | ... delete it - qdel |
... delete it
... delete it - qdel
Procs | |
apply_sanity_effect | checks user for having a vagabond perk, |
---|
checks user for having a vagabond perk,
Procs | |
add_reagent_list | Like add_reagent but you can enter a list. Format it like this: list(/datum/reagent/toxin = 10, "beer" = 15) |
---|---|
holder_full | Is this holder full or not |
Like add_reagent but you can enter a list. Format it like this: list(/datum/reagent/toxin = 10, "beer" = 15)
Is this holder full or not
Procs | |
adjust_research_points |
---|
Master Types
+
+Includes all the helper procs and basic tech processing.
+Bioreactor chamber opening song<
+
+Bioreactor pump solution ritual<
+
Procs | |
can_cancel | datum/shuttle/autodock/ferry/specops/can_force() |
---|
datum/shuttle/autodock/ferry/specops/can_force()
Procs | |
gallopRight | Like gallopLeft, except that if the range contains an element equal to +key, gallopRight returns the index after the rightmost equal element. |
---|
Like gallopLeft, except that if the range contains an element equal to +key, gallopRight returns the index after the rightmost equal element.
+@param key the key whose insertion point to search for +@param a the array in which to search +@param base the index of the first element in the range +@param len the length of the range; must be > 0 +@param hint the index at which to begin the search, 0 <= hint < n. +The closer hint is to the result, the faster this method will run. +@param c the comparator used to order the range, and to search +@return the int k, 0 <= k <= n such that a[b + k - 1] <= key < a[b + k]
Stack canary. Will go away if the stack it was primed by is ended by byond for return or stack overflow reasons.
Procs | |
use_variable | empty proc to avoid warnings about unused variables. Call this proc on your canary in the stack it's watching. |
---|
empty proc to avoid warnings about unused variables. Call this proc on your canary in the stack it's watching.
Stack End Detector. +Can detect if a given code stack has exited, used by the mc for stack overflow detection.
Procs | |
check | Returns true if the stack is still going. Calling before the canary has been primed also returns true |
---|---|
prime_canary |
Returns true if the stack is still going. Calling before the canary has been primed also returns true
Procs | |
spawn_note | Note Creation |
---|---|
spawn_stash | Spawning |
Note Creation
Spawning
Procs | |
addPerk | The main, public proc to add a perk to a mob. Accepts a path or a stringified path. |
---|---|
removePerk | The main, public proc to remove a perk from a mob. Accepts a path or a stringified path. |
The main, public proc to add a perk to a mob. Accepts a path or a stringified path.
The main, public proc to remove a perk from a mob. Accepts a path or a stringified path.
Procs | |
Process | MAIN PROCESS |
---|---|
add_processing | SUB PROCESSING: For individual storyevents |
build_event_pools | Pool and Weight handling |
can_start | ROUNDSTART AND SETUP |
handle_event | Event Handling |
modify_points | Points Handling |
update_objectives | ANTAGONIST HANDLING |
MAIN PROCESS
SUB PROCESSING: For individual storyevents
Pool and Weight handling
ROUNDSTART AND SETUP
Event Handling
Points Handling
ANTAGONIST HANDLING
tgui datum (represents a UI).
Vars | |
autoupdate | Update the UI every MC tick. |
---|---|
closing | Stops further updates when close() was called. |
initialized | If the UI has been initialized yet. |
interface | The interface (template) to be used for this UI. |
mouse_hooked | Are byond mouse events beyond the window passed in to the ui |
opened_at | Time of opening the window. |
refresh_cooldown | Rate limit client refreshes to prevent DoS. |
refreshing | Timed refreshing state |
src_object | The object which owns the UI. |
state | Topic state used to determine status/interactability. |
status | The status/visibility of the UI. |
title | The title of te UI. |
user | The mob who opened/is using the UI. |
window | The window_id for browse() and onclose(). |
window_key | Key that is used for remembering the window geometry. |
window_size | Deprecated: Window size. |
Procs | |
New | public |
Process | private |
close | public |
get_payload | private |
on_act_message | Wrapper for behavior to potentially wait until the next tick if the server is overloaded |
on_message | private |
open | public |
process_status | private |
send_asset | public |
send_full_update | public |
send_update | public |
set_autoupdate | public |
set_mouse_hook | public |
set_state | public |
Update the UI every MC tick.
Stops further updates when close() was called.
If the UI has been initialized yet.
The interface (template) to be used for this UI.
Are byond mouse events beyond the window passed in to the ui
Time of opening the window.
Rate limit client refreshes to prevent DoS.
Timed refreshing state
The object which owns the UI.
Topic state used to determine status/interactability.
The status/visibility of the UI.
The title of te UI.
The mob who opened/is using the UI.
The window_id for browse() and onclose().
Key that is used for remembering the window geometry.
Deprecated: Window size.
public
+Create a new UI.
+required user mob The mob who opened/is using the UI. +required src_object datum The object or datum which owns the UI. +required interface string The interface used to render the UI. +optional title string The title of the UI. +optional ui_x int Deprecated: Window width. +optional ui_y int Deprecated: Window height.
+return datum/tgui The requested UI.
private
+Run an update cycle for this UI. Called internally by SStgui +every second or so.
public
+Close the UI.
+optional can_be_suspended bool
private
+Package the data to send to the UI, as JSON.
+return list
Wrapper for behavior to potentially wait until the next tick if the server is overloaded
private
+Callback for handling incoming tgui messages.
public
+Open this UI (and initialize it with data).
+return bool - TRUE if a new pooled window is opened, FALSE in all other situations including if a new pooled window didn't open because one already exists.
private
+Updates the status, and returns TRUE if status has changed.
public
+Makes an asset available to use in tgui.
+required asset datum/asset
+return bool - true if an asset was actually sent
public
+Send a full update to the client (includes static data).
+optional custom_data list Custom data to send instead of ui_data. +optional force bool Send an update even if UI is not interactive.
public
+Send a partial update to the client (excludes static data).
+optional custom_data list Custom data to send instead of ui_data. +optional force bool Send an update even if UI is not interactive.
public
+Enable/disable auto-updating of the UI.
+required value bool Enable/disable auto-updating.
public
+Enable/disable passing through byond mouse events to the window
+required value bool Enable/disable hooking.
public
+Replace current ui.state with a new one.
+required state datum/ui_state/state Next state
Procs | |
New | public |
---|---|
acquire_lock | public |
can_be_suspended | public |
close | public |
flush_message_queue | private |
initialize | public |
is_ready | public |
on_message | private |
reinitialize | public |
release_lock | public |
replace_html | public |
send_asset | public |
send_message | public |
send_raw_message | public |
subscribe | public |
unsubscribe | public |
public
+Create a new tgui window.
+required client /client +required id string A unique window identifier.
public
+Acquire the window lock. Pool will not be able to provide this window +to other UIs for the duration of the lock.
+Can be given an optional tgui datum, which will be automatically +subscribed to incoming messages via the on_message proc.
+optional ui /datum/tgui
public
+Checks if the window can be sanely suspended.
+return bool
public
+Close the UI.
+optional can_be_suspended bool
private
+Sends queued messages if the queue wasn't empty.
public
+Initializes the window with a fresh page. Puts window into the "loading" +state. You can begin sending messages right after initializing. Messages +will be put into the queue until the window finishes loading.
+optional strict_mode bool - Enables strict error handling and BSOD. +optional fancy bool - If TRUE and if this is NOT a panel, will hide the window titlebar. +optional assets list - List of assets to load during initialization. +optional inline_html string - Custom HTML to inject. +optional inline_js string - Custom JS to inject. +optional inline_css string - Custom CSS to inject.
public
+Checks if the window is ready to receive data.
+return bool
private
+Callback for handling incoming tgui messages.
public
+Reinitializes the panel with previous data used for initialization.
public
+Release the window lock.
public
+Replaces the inline HTML content.
+required inline_html string HTML to inject
public
+Makes an asset available to use in tgui.
+required asset datum/asset
+return bool - TRUE if any assets had to be sent to the client
public
+Sends a message to tgui window.
+required type string Message type +required payload list Message payload +optional force bool Send regardless of the ready status.
public
+Sends a raw payload to tgui window.
+required message string JSON+urlencoded blob to send. +optional force bool Send regardless of the ready status.
public
+Subscribes the datum to consume window messages on a specified proc.
+Note, that this supports only one subscriber, because code for that +is simpler and therefore faster. If necessary, this can be rewritten +to support multiple subscribers.
public
+Unsubscribes the datum. Do not forget to call this when cleaning up.
Vars | |
client_ckey | ckey of the client who opened the ticket. |
---|---|
content | Content of the staff help. |
lastResponseTime | When the staff last responded. |
lastStaffResponse | Last staff member who responded. |
locationSent | The location the player was when they sent the ticket. |
mobControlled | The mob the player was controlling when they sent the ticket. |
raw_title | The title without URLs added. |
staffAssigned | Staff member who has assigned themselves to this ticket. |
ticketCooldown | Cooldown before allowing the user to open another ticket. |
ticketNum | Ticket number. |
ticketState | State of the ticket, open, closed, resolved etc. |
ticket_converted | Has the ticket been converted to another type? (Mhelp to Ahelp, etc.) |
timeOpened | Time the ticket was opened. |
timeUntilStale | When the ticket goes stale. |
title | The initial message with links. |
ckey of the client who opened the ticket.
Content of the staff help.
When the staff last responded.
Last staff member who responded.
The location the player was when they sent the ticket.
The mob the player was controlling when they sent the ticket.
The title without URLs added.
Staff member who has assigned themselves to this ticket.
Cooldown before allowing the user to open another ticket.
Ticket number.
State of the ticket, open, closed, resolved etc.
Has the ticket been converted to another type? (Mhelp to Ahelp, etc.)
Time the ticket was opened.
When the ticket goes stale.
The initial message with links.
This is the actual timer, it contains the callback and necessary data to maintain +the timer.
+See the documentation for the timer subsystem for an explanation of the buckets referenced +below in next and prev
Vars | |
bucket_joined | Boolean indicating if timer joined into bucket |
---|---|
bucket_pos | Initial bucket position |
callBack | The callback to invoke after the timer completes |
flags | Flags associated with the timer, see _DEFINES/subsystems.dm |
hash | Unique hash generated when TIMER_UNIQUE flag is present |
id | ID used for timers when the TIMER_STOPPABLE flag is present |
name | An informative name generated for the timer as its representation in strings, useful for debugging |
next | Next timed event in the bucket |
prev | Previous timed event in the bucket |
source | The source of the timedevent, whatever called addtimer |
spent | Time at which the timer was invoked or destroyed |
timeToRun | The time at which the callback should be invoked at |
timer_subsystem | The timer subsystem this event is associated with |
wait | The length of the timer |
Procs | |
bucketEject | Removes this timed event from any relevant buckets, or the secondary queue |
bucketJoin | Attempts to add this timed event to a bucket, will enter the secondary queue +if there are no appropriate buckets at this time. |
getcallingtype | Returns a string of the type of the callback for this timer |
Boolean indicating if timer joined into bucket
Initial bucket position
The callback to invoke after the timer completes
Flags associated with the timer, see _DEFINES/subsystems.dm
Unique hash generated when TIMER_UNIQUE flag is present
ID used for timers when the TIMER_STOPPABLE flag is present
An informative name generated for the timer as its representation in strings, useful for debugging
Next timed event in the bucket
Previous timed event in the bucket
The source of the timedevent, whatever called addtimer
Time at which the timer was invoked or destroyed
The time at which the callback should be invoked at
The timer subsystem this event is associated with
The length of the timer
Removes this timed event from any relevant buckets, or the secondary queue
Attempts to add this timed event to a bucket, will enter the secondary queue +if there are no appropriate buckets at this time.
+Secondary queueing of timed events will occur when the timespan covered by the existing +buckets is exceeded by the time at which this timed event is scheduled to be invoked. +If the timed event is tracking client time, it will be added to a special bucket.
Returns a string of the type of the callback for this timer
Vars | |
hidden_inventory | obj/item/reagent_containers/food/drinks/bottle/lemonjuice, |
---|
obj/item/reagent_containers/food/drinks/bottle/lemonjuice,
Procs | |
can_use_topic | private |
---|
private
+Checks if a user can use src_object's UI, and returns the state. +Can call a mob proc, which allows overrides for each mob.
+required src_object datum The object/datum which owns the UI. +required user mob The mob who opened/is using the UI.
+return UI_state The state of the UI.
Vars | |
priority | The priority of the test, the larger it is the later it fires |
---|---|
run_loc_floor_bottom_left | The bottom left floor turf of the testing zone |
run_loc_floor_top_right | The top right floor turf of the testing zone |
Procs | |
allocate | Allocates an instance of the provided type, and places it somewhere in an available loc +Instances allocated through this proc will be destroyed when the test is over |
The priority of the test, the larger it is the later it fires
The bottom left floor turf of the testing zone
The top right floor turf of the testing zone
Allocates an instance of the provided type, and places it somewhere in an available loc +Instances allocated through this proc will be destroyed when the test is over
Procs | |
Run | A test to ensure the sanity of BINARY_INSERT |
---|
A test to ensure the sanity of BINARY_INSERT
Procs | |
buy | Physical Uplink Entries |
---|
Physical Uplink Entries
Procs | |
can_view | NeoTheology: Religious items |
---|
NeoTheology: Religious items
Procs | |
announce_start | Animation and Messages |
---|---|
cache_values | Data Handling |
handle_ticking | Ticking |
Animation and Messages
Data Handling
Ticking
Generic climbing, without using any special equipment
+Requires a nearby wall which runs both zlevels
A weakref holds a non-owning reference to a datum.
+The datum can be referenced again using resolve()
.
To figure out why this is important, you must understand how deletion in +BYOND works.
+Imagine a datum as a TV in a living room. When one person enters to watch +TV, they turn it on. Others can come into the room and watch the TV. +When the last person leaves the room, they turn off the TV because it's +no longer being used.
+A datum being deleted tells everyone who's watching the TV to stop. +If everyone leaves properly (AKA cleaning up their references), then the +last person will turn off the TV, and everything is well. +However, if someone is resistant (holds a hard reference after deletion), +then someone has to walk in, drag them away, and turn off the TV forecefully. +This process is very slow, and it's known as hard deletion.
+This is where weak references come in. Weak references don't count as someone +watching the TV. Thus, when what it's referencing is destroyed, it will +hopefully clean up properly, and limit hard deletions.
+A common use case for weak references is holding onto what created itself.
+For example, if a machine wanted to know what its last user was, it might
+create a var/mob/living/last_user
. However, this is a storng reference to
+the mob, and thus will force a hard deletion when that mob is deleted.
+It is often better in this case to instead create a weakref to the user,
+meaning this type definition becomes var/datum/weakref/last_user
.
A good rule of thumb is that you should hold strong references to things
+that you own. For example, a dog holding a chew toy would be the owner
+of that chew toy, and thus a var/obj/item/chew_toy
reference is fine
+(as long as it is cleaned up properly).
+However, a chew toy does not own its dog, so a var/mob/living/dog/owner
+might be inferior to a weakref.
+This is also a good rule of thumb to avoid circular references, such as the
+chew toy example. A circular reference that doesn't clean itself up properly
+will always hard delete.
Procs | |
resolve | Retrieves the datum that this weakref is referencing. |
---|
Retrieves the datum that this weakref is referencing.
+This will return null
if the datum was deleted. This MUST be respected.
Procs | |
bleeding | BRUISES |
---|
BRUISES
Procs | |
bleeding | CUTS |
---|
CUTS
Procs | |
can_worsen | PUNCTURES |
---|
PUNCTURES
Procs | |
load_map | Construct the model map and control the loading process |
---|---|
parse_grid | Fill a given tile with its area/turf/objects/mobs +Variable model is one full map line (e.g /turf/unsimulated/wall{icon_state = "rock"}, /area/mine/explored) |
Construct the model map and control the loading process
+WORKING :
+Fill a given tile with its area/turf/objects/mobs +Variable model is one full map line (e.g /turf/unsimulated/wall{icon_state = "rock"}, /area/mine/explored)
+WORKING :
+Read the model string, member by member (delimiter is ',')
+Get the path of the atom and store it into a list
+a) Check if the member has variables (text within '{' and '}')
+b) Construct an associative list with found variables, if any (the atom index in members is the same as its variables in members_attributes)
+Instanciates the atom with its variables
+Vars | |
flags | Various flags |
---|---|
iterations | Used for letting us know how many iterations were already ran |
Various flags
Used for letting us know how many iterations were already ran
Vars | |
Debugger | StonedMC |
---|---|
Failsafe | Failsafe |
SStgui | tgui subsystem |
SStimer | |
SSverb_manager | SSverb_manager, a subsystem that runs every tick and runs through its entire queue without yielding like SSinput. +this exists because of how the byond tick works and where user inputted verbs are put within it. |
SSweather | |
access_cent_general | Central Command |
access_change_medbay | Access Change |
access_mercenary | Antag access |
access_nt_disciple | NeoTheology |
access_security | Station access |
access_synth | Misc |
comet_hardcore | ........::::::%%%SPACE_COMET |
default_abstract_uplink_icon | Abstract Uplink Entries |
photo_count | photo |
Procs | |
Broadcast_Message | Here is the big, bad function that broadcasts a message given the appropriate +parameters. |
CreateBans | DEBUG |
REF | \ref behaviour got changed in 512 so this is necesary to replicate old behaviour. +If it ever becomes necesary to get a more performant REF(), this lies here in wait +#define REF(thing) (thing && isdatum(thing) && (thing:datum_flags & DF_USE_TAG) && thing:tag ? "[thing:tag]" : "\ref[thing]") |
WEAKREF | Creates a weakref to the given input. +See /datum/weakref's documentation for more information. |
______qdel_list_wrapper | the underscores are to encourage people not to use this directly. |
_addtimer | Create a new timer and insert it in the queue. +You should not call this directly, and should instead use the addtimer macro, which includes source information. |
_queue_verb | queue a callback for the given verb/verblike proc and any given arguments to the specified verb subsystem, so that they process in the next tick. +intended to only work with verbs or verblike procs called directly from client input, use as part of TRY_QUEUE_VERB() and co. |
bitfield_to_list | Converts a bitfield to a list of numbers (or words if a wordlist is provided) |
callHook | @file hooks.dm +Implements hooks, a simple way to run code on pre-defined events. |
callback_select | Runs a list of callbacks asyncronously, returning only when all have finished |
default_ui_state | The sane defaults for a UI such as a computer or a machine. |
delete_all_SS_and_recreate_master | Delete all existing SS to basically start over |
deltimer | Delete a timer |
find_nearby_burrow | Burrow Finding and Sorting |
generate_asset_name | Generate a filename for this asset +The same asset will always lead to the same asset name +(Generated names do not include file extention.) |
getFlatIcon | Create a single [/icon] from a given /atom or /image. |
getFlatTypeIcon | always_use_defdir IS DEPRICATED |
getOPressureDifferential | Gets the highest and lowest pressures from the tiles in cardinal directions +around us, then checks the difference. |
get_default_outfit_backpack | Helpers |
get_random_uplink_items | Support procs |
get_wound_type | WOUND DEFINITIONS |
icon2base64 | Converts an icon to base64. Operates by putting the icon in the iconCache savefile, +exporting it as text, and then parsing the base64 from that. +(This relies on byond automatically storing icons in savefiles as base64) |
is_special_character | ADMIN HELPER PROCS |
log_mapping | Logging for mapping errors |
log_tgui | Appends a tgui-related log entry. All arguments are optional. |
makeDatumRefLists | Initial Building |
md5asfile | Save file as an external file then md5 it. +Used because md5ing files stored in the rsc sometimes gives incorrect md5 results. |
md5filepath | Returns the md5 of a file at a given path. |
message_adminTicket | |
message_mentorTicket | |
number_of_issues | USED BY UNIT TEST: uniqueness.dm |
qdel | Should be treated as a replacement for the 'del' keyword. |
recover_all_SS_and_recreate_master | Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars |
rustg_get_version | Gets the version of rust_g |
storyteller_button | datum/storyteller/proc/trigger_event() |
strip_improper | Strip out the special beyond characters for \proper and \improper +from text that will be sent to the browser. |
tgui_Topic | Middleware for /client/Topic. |
timeleft | Get the remaining deciseconds on a timer |
ui_status_only_living | Returns a UI status such that the dead will be able to watch, but not interact. |
ui_status_silicon_has_access | Returns a UI status such that silicons will be able to interact with whatever +they would have access to if this was a machine. For example, AIs can +interact if there's cameras with wireless control is enabled. |
ui_status_user_has_free_hands | Returns a UI status such that those without blocked hands will be able to interact, +but everyone else can only watch. |
ui_status_user_is_abled | Returns a UI status such that users with debilitating conditions, such as +being dead or not having power for silicons, will not be able to interact. +Being dead will disable UI, being incapacitated will continue updating it, +and anything else will make it interactive. |
ui_status_user_is_adjacent | Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living ] check for finer observer interactions. |
ui_status_user_is_advanced_tool_user | Returns a UI status such that advanced tool users will be able to interact, +but everyone else can only watch. |
ui_status_user_is_conscious_and_lying_down | Returns UI_INTERACTIVE if the user is conscious and lying down. +Returns UI_UPDATE otherwise. |
ui_status_user_strictly_adjacent | Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not. +Return UI_CLOSE otherwise. |
url2htmlloader | Return html to load a url. +for use inside of browse() calls to html assets that might be loaded on a cdn. |
StonedMC
+Designed to properly split up a given tick among subsystems +Note: if you read parts of this code and think "why is it doing it that way" +Odds are, there is a reason
Failsafe
+Pretty much pokes the MC to make sure it's still alive.
tgui subsystem
+Contains all tgui state and subsystem code.
Handles creation, callbacks, and destruction of timed events.
+It is important to understand the buckets used in the timer subsystem are just a series of doubly-linked +lists. The object at a given index in bucket_list is a /datum/timedevent, the head of a list, which has prev +and next references for the respective elements in that bucket's list.
SSverb_manager, a subsystem that runs every tick and runs through its entire queue without yielding like SSinput. +this exists because of how the byond tick works and where user inputted verbs are put within it.
+see TICK_ORDER.md for more info on how the byond tick is structured.
+The way the MC allots its time is via TICK_LIMIT_RUNNING, it simply subtracts the cost of SendMaps (MAPTICK_LAST_INTERNAL_TICK_USAGE) +plus TICK_BYOND_RESERVE from the tick and uses up to that amount of time (minus the percentage of the tick used by the time it executes subsystems) +on subsystems running cool things like atmospherics or Life or SSInput or whatever.
+Without this subsystem, verbs are likely to cause overtime if the MC uses all of the time it has alloted for itself in the tick, and SendMaps +uses as much as its expected to, and an expensive verb ends up executing that tick. This is because the MC is completely blind to the cost of +verbs, it can't account for it at all. The only chance for verbs to not cause overtime in a tick where the MC used as much of the tick +as it alloted itself and where SendMaps costed as much as it was expected to is if the verb(s) take less than TICK_BYOND_RESERVE percent of +the tick, which isnt much. Not to mention if SendMaps takes more than 30% of the tick and the MC forces itself to take at least 70% of the +normal tick duration which causes ticks to naturally overrun even in the absence of verbs.
+With this subsystem, the MC can account for the cost of verbs and thus stop major overruns of ticks. This means that the most important subsystems +like SSinput can start at the same time they were supposed to, leading to a smoother experience for the player since ticks arent riddled with +minor hangs over and over again.
|WEATHER SUBSYSTEM|
+
+///////// |SUBSYSTEM WEATHER| +//////////////////// -------------------
Central Command
Access Change
Antag access
NeoTheology
Station access
Misc
........::::::%%%SPACE_COMET
Abstract Uplink Entries
photo
Here is the big, bad function that broadcasts a message given the appropriate +parameters.
+@param connection: +The datum generated in radio.dm, stored in signal.data["connection"].
+@param M: +Reference to the mob/speaker, stored in signal.data["mob"]
+@param vmask: +Boolean value if the mob is "hiding" its identity via voice mask, stored in +signal.data["vmask"]
+@param vmessage: +If specified, will display this as the message; such as "chimpering" +for monkies if the mob is not understood. Stored in signal.data["vmessage"].
+@param radio: +Reference to the radio broadcasting the message, stored in signal.data["radio"]
+@param message: +The actual string message to display to mobs who understood mob M. Stored in +signal.data["message"]
+@param name: +The name to display when a mob receives the message. signal.data["name"]
+@param job: +The name job to display for the AI when it receives the message. signal.data["job"]
+@param realname: +The "real" name associated with the mob. signal.data["realname"]
+@param vname: +If specified, will use this name when mob M is not understood. signal.data["vname"]
+@param data: +If specified: +1 -- Will only broadcast to intercoms +2 -- Will only broadcast to intercoms and station-bounced radios +3 -- Broadcast to syndicate frequency +4 -- AI can't track down this person. Useful for imitation broadcasts where you can't find the actual mob
+@param compression: +If 0, the signal is audible +If nonzero, the signal may be partially inaudible or just complete gibberish.
+@param level: +The list of Z levels that the sending radio is broadcasting to. Having 0 in the list broadcasts on all levels
+@param freq +The frequency of the signal
DEBUG
\ref behaviour got changed in 512 so this is necesary to replicate old behaviour. +If it ever becomes necesary to get a more performant REF(), this lies here in wait +#define REF(thing) (thing && isdatum(thing) && (thing:datum_flags & DF_USE_TAG) && thing:tag ? "[thing:tag]" : "\ref[thing]")
Creates a weakref to the given input. +See /datum/weakref's documentation for more information.
the underscores are to encourage people not to use this directly.
Create a new timer and insert it in the queue. +You should not call this directly, and should instead use the addtimer macro, which includes source information.
+Arguments:
+queue a callback for the given verb/verblike proc and any given arguments to the specified verb subsystem, so that they process in the next tick. +intended to only work with verbs or verblike procs called directly from client input, use as part of TRY_QUEUE_VERB() and co.
+returns TRUE if the queuing was successful, FALSE otherwise.
Converts a bitfield to a list of numbers (or words if a wordlist is provided)
@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.
Runs a list of callbacks asyncronously, returning only when all have finished
+Callbacks can be repeated, to call it multiple times
+Arguments:
+The sane defaults for a UI such as a computer or a machine.
Delete all existing SS to basically start over
Delete a timer
+Arguments:
+Burrow Finding and Sorting
Generate a filename for this asset +The same asset will always lead to the same asset name +(Generated names do not include file extention.)
Create a single [/icon] from a given /atom or /image.
+Very low-performance. Should usually only be used for HTML, where BYOND's +appearance system (overlays/underlays, etc.) is not available.
+Only the first argument is required.
always_use_defdir IS DEPRICATED
Gets the highest and lowest pressures from the tiles in cardinal directions +around us, then checks the difference.
Helpers
Support procs
WOUND DEFINITIONS
Converts an icon to base64. Operates by putting the icon in the iconCache savefile, +exporting it as text, and then parsing the base64 from that. +(This relies on byond automatically storing icons in savefiles as base64)
ADMIN HELPER PROCS
Logging for mapping errors
Appends a tgui-related log entry. All arguments are optional.
Initial Building
Save file as an external file then md5 it. +Used because md5ing files stored in the rsc sometimes gives incorrect md5 results.
Returns the md5 of a file at a given path.
USED BY UNIT TEST: uniqueness.dm
Should be treated as a replacement for the 'del' keyword.
+Datums passed to this will be given a chance to clean up references to allow the GC to collect them.
Recreate all SSs which will still cause data survive due to Recover(), the new Master will then find and take them from global.vars
Gets the version of rust_g
datum/storyteller/proc/trigger_event()
Strip out the special beyond characters for \proper and \improper +from text that will be sent to the browser.
Middleware for /client/Topic.
+return bool If TRUE, prevents propagation of the topic call.
Get the remaining deciseconds on a timer
+Arguments:
+Returns a UI status such that the dead will be able to watch, but not interact.
Returns a UI status such that silicons will be able to interact with whatever +they would have access to if this was a machine. For example, AIs can +interact if there's cameras with wireless control is enabled.
Returns a UI status such that those without blocked hands will be able to interact, +but everyone else can only watch.
Returns a UI status such that users with debilitating conditions, such as +being dead or not having power for silicons, will not be able to interact. +Being dead will disable UI, being incapacitated will continue updating it, +and anything else will make it interactive.
Returns a UI status such that users adjacent to source will be able to interact,
+far away users will be able to see, and anyone farther won't see anything.
+Dead users will receive updates no matter what, though you likely want to add
+a [ui_status_only_living
] check for finer observer interactions.
Returns a UI status such that advanced tool users will be able to interact, +but everyone else can only watch.
Returns UI_INTERACTIVE if the user is conscious and lying down. +Returns UI_UPDATE otherwise.
Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not. +Return UI_CLOSE otherwise.
Return html to load a url. +for use inside of browse() calls to html assets that might be loaded on a cdn.
blah.css
with asset blah.png
will get loaded as namespaces/a3d..14f/f12..d3c.css
and namespaces/a3d..14f/blah.png
. allowing the css file to load blah.png
by a relative url rather then compute the generated url with get_url_mappings().
+The namespace folder's name will change if any of the assets change. (excluding parent assets)TGUI_CREATE_MESSAGE
is correctly implementedresolve()
.Vars | |
armor | Armor values for this material whenever its applied on something. |
---|
Armor values for this material whenever its applied on something.
Vars | |
registered_z | The z level this mob is currently registered in |
---|---|
tgui_open_uis | global |
Procs | |
CanAvoidGravity | Used to determine whether or not a given mob can override gravity when +attempting to Z-move UP. |
GenerateTag | Generate the tag for this mob |
_pointed | possibly delayed verb that finishes the pointing process starting in [/mob/verb/pointed()]. +either called immediately or in the tick after pointed() was called, as per the [DEFAULT_QUEUE_OR_CALL_VERB()] macro |
can_ztravel | An initial check for Z-level travel. Called relatively early in mob/proc/zMove. |
chunkOnMove | Mob tracking and handling |
down | Verb for the mob to move down a z-level if possible. |
execute_mode | proc version to finish /mob/verb/mode() execution. used in case the proc needs to be queued for the tick after its first called |
mode | Verb to activate the object in your held hand |
pointed | Point at an atom |
set_see_in_dark | See In Dark Set Handling |
set_see_invisible | See Invisible Set Handling |
set_sight | Sight Set Handling |
shared_ui_interaction | public |
up | Verb for the mob to move up a z-level if possible. |
zMove | Used to check if a mob can move up or down a Z-level and to then actually do the move. |
The z level this mob is currently registered in
global
+Tracks open UIs for a user.
Used to determine whether or not a given mob can override gravity when +attempting to Z-move UP.
+Returns FALSE in standard mob cases. Exists for carbon/human and other child overrides.
+@return TRUE if the mob can Z-move up despite gravity. +FALSE otherwise.
Generate the tag for this mob
+This is simply "mob_"+ a global incrementing counter that goes up for every mob
possibly delayed verb that finishes the pointing process starting in [/mob/verb/pointed()]. +either called immediately or in the tick after pointed() was called, as per the [DEFAULT_QUEUE_OR_CALL_VERB()] macro
An initial check for Z-level travel. Called relatively early in mob/proc/zMove.
+Useful for overwriting and special conditions for STOPPING z-level transit.
+@return TRUE if the mob can move a Z-level of its own volition. +FALSE otherwise.
Mob tracking and handling
Verb for the mob to move down a z-level if possible.
proc version to finish /mob/verb/mode() execution. used in case the proc needs to be queued for the tick after its first called
Verb to activate the object in your held hand
+Calls attack self on the item and updates the inventory hud for hands
Point at an atom
+mob verbs are faster than object verbs. See +this byond forum post +for why this isn't atom/verb/pointed()
+note: ghosts can point, this is intended
+visible_message will handle invisibility properly
+overridden here and in /mob/dead/observer for different point span classes and sanity checks
See In Dark Set Handling
See Invisible Set Handling
Sight Set Handling
public
+Standard interaction/sanity checks. Different mob types may have overrides.
+return UI_state The state of the UI.
Verb for the mob to move up a z-level if possible.
Used to check if a mob can move up or down a Z-level and to then actually do the move.
+@param direction The direction in which we're moving. Expects defines UP or DOWN.
+@return TRUE if the mob has been successfully moved a Z-level. +FALSE otherwise.
Procs | |
Destroy | This proc used to be done in New() and was still somehow random with people having the same real name and name +I think it was random because of Human New calling Initialize and then calling the parent of New() +Hence it kept being random whilst unexpected... -SPCR |
---|---|
create_HUDtech | mob/living/proc/create_HUDprocess() |
shared_living_ui_distance | public |
This proc used to be done in New() and was still somehow random with people having the same real name and name +I think it was random because of Human New calling Initialize and then calling the parent of New() +Hence it kept being random whilst unexpected... -SPCR
mob/living/proc/create_HUDprocess()
public
+Distance versus interaction check.
+required src_object atom/movable The object which owns the UI.
+return UI_state The state of the UI.
BLOOD SYSTEM
Procs | |
take_blood | BLOOD TRANSFERS |
---|
BLOOD TRANSFERS
Procs | |
allow_spacemove | No slowdown for mech pilots , mech already handles movement. |
---|---|
embed | Get hit with glass shards , your fibers are on them now, or with a rod idk. |
eyecheck | eyecheck() +Returns a number between -1 to 2 |
handle_chemical_smoke | breathing |
process_scope | The forklift handles it for us here. |
No slowdown for mech pilots , mech already handles movement.
Get hit with glass shards , your fibers are on them now, or with a rod idk.
eyecheck() +Returns a number between -1 to 2
breathing
The forklift handles it for us here.
Vars | |
colour | TIME FOR SUBSPECIES |
---|
TIME FOR SUBSPECIES
Procs | |
getarmor | Fire handling , not passing the whole list because thats unefficient. |
---|
Fire handling , not passing the whole list because thats unefficient.
Vars | |
tickers | For equipment that has a process based on mech Life tick |
---|---|
Procs | |
attack_tool | Gun reloading handling +Medical mender handling +Plasma generator handling +Welding generator handling +Double negation to turn into 0/1 format since if its more than 1 it doesn't count as true. |
getFireLoss | aiming for soemthing the mech doesnt have |
getOreCarrier | Checks the mech for places to store the ore. |
getShield | Returns the best shield for damage reduction |
toggle_hatch | Used by hatch toggle mech UI button |
toggle_hatch_lock | Used by hatch lock UI button |
toggle_sensors | Used by camera toglge UI button |
For equipment that has a process based on mech Life tick
Gun reloading handling +Medical mender handling +Plasma generator handling +Welding generator handling +Double negation to turn into 0/1 format since if its more than 1 it doesn't count as true.
aiming for soemthing the mech doesnt have
Checks the mech for places to store the ore.
Returns the best shield for damage reduction
Used by hatch toggle mech UI button
Used by hatch lock UI button
Used by camera toglge UI button
Procs | |
get_ui_access | Returns a UI status representing this silicon's capability to access
+the given source. Called by ui_status_silicon_has_access . |
---|
Returns a UI status representing this silicon's capability to access
+the given source. Called by ui_status_silicon_has_access
.
Vars | |
speed | Humans get a -1 by default from any shoe. , robots had a 0.25 added by default. |
---|---|
Procs | |
slip_chance | For fellow coders , if you wish to control the conditions for a robot to move , you need to touch movement_handlers in init() proc +I've spent 2 hours looking for them , but hopefully you don't have to go through my pain of going over and over undocumented code. |
Humans get a -1 by default from any shoe. , robots had a 0.25 added by default.
For fellow coders , if you wish to control the conditions for a robot to move , you need to touch movement_handlers in init() proc +I've spent 2 hours looking for them , but hopefully you don't have to go through my pain of going over and over undocumented code.
Procs | |
replace_brain | Wait for abilities to update THEN move them in due to the afore-mentioned bug. |
---|
Wait for abilities to update THEN move them in due to the afore-mentioned bug.
Procs | |
ManualFollow | Follow mobs on list |
---|---|
follow_player | Follow verb in context menu |
Follow mobs on list
Follow verb in context menu
Procs | |
chunkHearerOnMove | Hearer tracking and handling |
---|
Hearer tracking and handling
Procs | |
Process | Basic blob processing. Every tick we will update our neighbors, try to expand, etc |
---|---|
attack_mobs | BLOB ATTACKING |
bullet_act | BLOB DEFENSE |
expand | EXPANDING! |
Basic blob processing. Every tick we will update our neighbors, try to expand, etc
BLOB ATTACKING
BLOB DEFENSE
EXPANDING!
Procs | |
AddTracks | Add tracks to an existing trail. |
---|
Add tracks to an existing trail.
+@param DNA bloodDNA to add to collection. +@param comingdir Direction tracks come from, or 0. +@param goingdir Direction tracks are going to (or 0). +@param bloodcolor Color of the blood when wet.
Vars | |
faction | Lazy string list of factions that the spawned mob will be in upon spawn |
---|
Lazy string list of factions that the spawned mob will be in upon spawn
Procs | |
attack_hand | Attack procs |
---|---|
explosion_act | ACT PROCS |
Attack procs
ACT PROCS
Procs | |
attackby |
---|
+RESPONSE CODE<
+
Procs | |
on_fail | You will appear adjacent to the beacon |
---|
You will appear adjacent to the beacon
Trail particles.
+
+These are spawned by a trail system +Their only special behaviour atm is to delete themselves shortly after creation
Procs | |
consume_resources | Resource Consumption |
---|---|
handle_failure | /* Tool Failure */ |
has_quality | /* Data and Checking */ |
update_wield_icon | Let's reserve his other hand~ |
use_tool | /* Tool Usage */ |
Resource Consumption
/* Tool Failure */
/* Data and Checking */
Let's reserve his other hand~
/* Tool Usage */
Procs | |
New | special case where is the location is specified as a ammo_Casing , it will clone all relevant vars |
---|
special case where is the location is specified as a ammo_Casing , it will clone all relevant vars
Procs | |
attack_self | Deployment |
---|---|
attempt_release | Releasing Mobs |
fail_attempt | Hurting Mobs |
Deployment
Releasing Mobs
Hurting Mobs
Procs | |
attach_accessory | Attach accessory A to src |
---|
Attach accessory A to src
+user is the user doing the attaching. Can be null, such as when attaching +items on spawn
Vars | |
saved_last_overlay | Saves the overlay of the last goggles converted , just for the sake of not deleting it |
---|
Saves the overlay of the last goggles converted , just for the sake of not deleting it
Procs | |
AltClick | prevent spam if theres multiple doors. |
---|---|
signal | data is expected to be a list |
prevent spam if theres multiple doors.
data is expected to be a list
Procs | |
Process | STATE MANAGEMENT |
---|---|
attack_self | Interaction |
update_overlay | CORE FUNCTIONALITY: SCANNING AND DRAWING OVERLAYS |
STATE MANAGEMENT
Interaction
CORE FUNCTIONALITY: SCANNING AND DRAWING OVERLAYS
Vars | |
combat_cap | double for taking out combat-oddities (skydriver , sword of truth) |
---|
double for taking out combat-oddities (skydriver , sword of truth)
Modules
+Safeguard
Vars | |
wifi_id | Used for blast doors and shutters |
---|
Used for blast doors and shutters
Procs | |
construct | Construct |
---|---|
deconstruct | Deconstruct |
Construct
Deconstruct
Procs | |
very_unsafe_set_firemode | Set firemode , but without a refresh_upgrades at the start |
---|
Set firemode , but without a refresh_upgrades at the start
Procs | |
begin_charge | The actual code |
---|
The actual code
Procs | |
Initialize | obj/machinery/appliance, |
---|---|
post_drop | When an object is put into a container, drop fires twice. |
obj/machinery/appliance,
When an object is put into a container, drop fires twice.
Procs | |
execute | Remote execution from failure to defend |
---|
Remote execution from failure to defend
Vars | |
can_gib | wheter or not this component can just blow up |
---|---|
gib_hits_needed | how many hits do we have to get to gib once we hit max damage |
wheter or not this component can just blow up
how many hits do we have to get to gib once we hit max damage
Vars | |
cell_charge_rate | does this mech chassis have support for charging all cells inside of its storage? if its 0 it doesnt |
---|---|
opaque_chassis | Wheter chassis blocks sight from a outside POV (aka can see behind mech or not ?) |
does this mech chassis have support for charging all cells inside of its storage? if its 0 it doesnt
Wheter chassis blocks sight from a outside POV (aka can see behind mech or not ?)
Vars | |
can_force_doors | if they can force open powered doors |
---|
if they can force open powered doors
Fancy way to move someone up a z-level if you think about it..
Procs | |
afterattack | We are checking the turf above first +Then the one infront + above +Pick up the first mob , else just get the last atom returned |
---|
We are checking the turf above first +Then the one infront + above +Pick up the first mob , else just get the last atom returned
Procs | |
loadMagazine | -1 for wrong type , 0 for no slot , 1 for succes loading. |
---|
-1 for wrong type , 0 for no slot , 1 for succes loading.
Vars | |
generation_rate | 50 power per mech life tick , adjust for cell RATE |
---|
50 power per mech life tick , adjust for cell RATE
Procs | |
get_hardpoint_maptext | Eco mode , very slow generation but doubled power output ( 20% of power production at cost of 10% of fuel usage) +Default +Turbo mode, 2x fuel usage at 1.6x power output +back to eco. |
---|---|
installed | if we had a extremely minimal use |
Eco mode , very slow generation but doubled power output ( 20% of power production at cost of 10% of fuel usage) +Default +Turbo mode, 2x fuel usage at 1.6x power output +back to eco.
if we had a extremely minimal use
Vars | |
chamberReagent | The "explosion" chamber , used for when the fuel is mixed with something else |
---|---|
fuel_max | can generate 20000 power |
Procs | |
pretick | Only needed when we attack from outside |
The "explosion" chamber , used for when the fuel is mixed with something else
can generate 20000 power
Only needed when we attack from outside
Yes this also drains power from blocking halloss +Yes i justify it cause it stops by kinetic power and not by lethality / material hardness
Vars | |
damage_to_power_drain | Defines the amount of power drained per hit thats blocked |
---|---|
last_toggle | last time we toggled ,. stores world.time |
on | Are we toggled on ? |
visual_bluff | A object used to show the shield effects |
Defines the amount of power drained per hit thats blocked
last time we toggled ,. stores world.time
Are we toggled on ?
A object used to show the shield effects
Procs | |
attack_self | Not needed since we already have handling for visual bluffs layering +and since we dont use a shield. |
---|---|
resolve_attackby | movement blocking is handled in MoveBlock() +Pass all attack attempts to afterattack if we're installed |
update_icon | blocks 66% of damage |
Not needed since we already have handling for visual bluffs layering +and since we dont use a shield.
movement blocking is handled in MoveBlock() +Pass all attack attempts to afterattack if we're installed
blocks 66% of damage
Vars | |
jetpack_fluff | Needed for Z-travel methods |
---|
Needed for Z-travel methods
Procs | |
onTowingMove | Yes you can hook onto other mechs that are hooked onto you, and yes it won't break anything , SPCR-2023 |
---|---|
onTowingPullAttempt | We get supreme priority on pulling |
Yes you can hook onto other mechs that are hooked onto you, and yes it won't break anything , SPCR-2023
We get supreme priority on pulling
Procs | |
droplimb | DISMEMBERMENT |
---|---|
is_broken | PROCESSING & UPDATING |
is_damageable | DAMAGE PROCS |
is_stump | HELPERS |
update_wounds | Handles internal and external wound effects |
DISMEMBERMENT
PROCESSING & UPDATING
DAMAGE PROCS
HELPERS
Handles internal and external wound effects
Procs | |
die | Bones can be repaired after being destroyed. It's not ideal to have this here instead of in the parent (checking for bone efficiencies), but there are fewer corner cases this way. |
---|
Bones can be repaired after being destroyed. It's not ideal to have this here instead of in the parent (checking for bone efficiencies), but there are fewer corner cases this way.
Procs | |
handle_blood | Brain blood oxygenation is handled via oxyloss |
---|
Brain blood oxygenation is handled via oxyloss
Procs | |
afterattack | Z-Level stuff +Z-Level stuff +Supply and scrubbers pipes +Z-Level stuff +Z-Level stuff +Supply and scrubbers pipes |
---|---|
get_pdir | Z-Level stuff +Z-Level stuff |
update | Z-Level stuff +Z-Level stuff |
Z-Level stuff +Z-Level stuff +Supply and scrubbers pipes +Z-Level stuff +Z-Level stuff +Supply and scrubbers pipes
Z-Level stuff +Z-Level stuff
Z-Level stuff +Z-Level stuff
Only used by the mech plasmacutter ofr now
Vars | |
rocks_pierced | start with 1 extra since somehow 5 becomes 6 |
---|
start with 1 extra since somehow 5 becomes 6
Club's special Bonsai tree, so they can operate somewhat without a garden.
+Every 10 seconds, checks if it has 10+ units of any alcohol. +If it does, removes said alcohol, and spawns a random base fruit or vegetable. +Ratio, 10 alcohol: 1 produce.
+Droppers. END
+Food.
Procs | |
attack_generic | FOOD END |
---|
FOOD END
/////////////////////////////////////////Snacks
+obj/item/reagent_containers/food/snacks/xenoburger //Identification path for the object.
Vars | |
charges | ^ Used for initializing with beakers , the format used is list(beaker_type, beaker_reagent_id, beaker_reagent_amount) |
---|
^ Used for initializing with beakers , the format used is list(beaker_type, beaker_reagent_id, beaker_reagent_amount)
Procs | |
accepts_item | Internal Handling |
---|---|
attackby | External handling |
can_install | Installation |
Internal Handling
External handling
Installation
Procs | |
Topic | Z-Level stuff |
---|
Z-Level stuff
Procs | |
return_stats | Returns a list to use with inspirations. It can be empty if there's not enough money in the bundle. Important side-effects: converts worth to points, thus reducing worth. |
---|
Returns a list to use with inspirations. It can be empty if there's not enough money in the bundle. Important side-effects: converts worth to points, thus reducing worth.
Procs | |
Initialize | Core Functionality |
---|---|
allow_thrust | Thrust Handling |
check_thrust | Checks |
get_gas | Tank Interface |
toggle_rockets | Mode Setting |
Core Functionality
Thrust Handling
Checks
Tank Interface
Mode Setting
Procs | |
New | /* Core Procs */ |
---|---|
refresh_upgrades | Tool Upgrades |
stick | Misc/utility procs |
/* Core Procs */
Tool Upgrades
Misc/utility procs
Vars | |
cooldown | ////////////////////////////////// /Let's have this ready for later. +///////////hitting anything else other than the eyes +Plik plik, the sound of blood |
---|
////////////////////////////////// /Let's have this ready for later. +///////////hitting anything else other than the eyes +Plik plik, the sound of blood
Machines in the world, such as computers, pipes, and airlocks.
+Overview: +Used to create objects that need a per step proc call. Default definition of 'Initialize()' +stores a reference to src machine in global 'machines list'. Default definition +of 'Destroy' removes reference to src machine in global 'machines list'.
+Class Variables: +use_power (num) +current state of auto power use. +Possible Values: +NO_POWER_USE -- no auto power use +IDLE_POWER_USE -- machine is using power at its idle power level +ACTIVE_POWER_USE -- machine is using power at its active power level
+active_power_usage (num) +Value for the amount of power to use when in active power mode
+idle_power_usage (num) +Value for the amount of power to use when in idle power mode
+power_channel (num) +What channel to draw from when drawing power for power mode +Possible Values: +AREA_USAGE_EQUIP:1 -- Equipment Channel +AREA_USAGE_LIGHT:2 -- Lighting Channel +AREA_USAGE_ENVIRON:3 -- Environment Channel
+component_parts (list) +A list of component parts of machine used by frame based machines.
+stat (bitflag) +Machine status bit flags. +Possible bit flags: +BROKEN -- Machine is broken +NOPOWER -- No power is being supplied to machine. +MAINT -- machine is currently under going maintenance. +EMPED -- temporary broken by EMP pulse
+Class Procs: +Initialize()
+Destroy()
+update_mode_power_usage()
+ updates the static_power_usage var of this machine and makes its static power usage from its area accurate.
+ called after the idle or active power usage has been changed.
+
+update_power_channel()
+ updates the static_power_usage var of this machine and makes its static power usage from its area accurate.
+ called after the power_channel var has been changed or called to change the var itself.
+
+unset_static_power()
+ completely removes the current static power usage of this machine from its area.
+ used in the other power updating procs to then readd the correct power usage.
+
+
+ Default definition uses 'use_power', 'power_channel', 'active_power_usage',
+ 'idle_power_usage', 'powered()', and 'use_power()' implement behavior.
+
+powered(chan = -1) 'modules/power/power.dm' +Checks to see if area that contains the object has power available for power +channel given in 'chan'. -1 defaults to power_channel
+use_power(amount, chan=-1) 'modules/power/power.dm' +Deducts 'amount' from the power channel 'chan' of the area that contains the object.
+power_change() 'modules/power/power.dm' +Called by the area that contains the object when ever that area under goes a +power state change (area runs out of power, or area channel is turned off).
+RefreshParts() 'game/machinery/machine.dm' +Called to refresh the variables in the machine that are contributed to by parts +contained in the component_parts list. (example: glass and material amounts for +the autolathe)
+ Default definition does nothing.
+
+process() 'game/machinery/machine.dm' +Called by the 'machinery subsystem' once per machinery tick for each machine that is listed in its 'machines' list.
+process_atmos() +Called by the 'air subsystem' once per atmos tick for each machine that is listed in its 'atmos_machines' list. +Compiled by Aygar
Procs | |
nano_ui_interact | The nano_ui_interact proc is used to open and update Nano UIs +If nano_ui_interact is not used then the UI will not update correctly +nano_ui_interact is currently defined for /atom/movable (which is inherited by /obj and /mob) |
---|
The nano_ui_interact proc is used to open and update Nano UIs +If nano_ui_interact is not used then the UI will not update correctly +nano_ui_interact is currently defined for /atom/movable (which is inherited by /obj and /mob)
+@param user /mob The mob who is interacting with this ui +@param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main") +@param ui /datum/nanoui This parameter is passed by the nanoui process() proc when updating an open ui
+@return nothing
** DEBUG VERBS ***
+/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/view_state() +set category = "Debug" +set src in view(1) +src.program:print_state()
+/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/spoof_signal(var/command as text, var/sender as text) +set category = "Debug" +set src in view(1) +var/datum/signal/signal = new +signal.data["tag"] = sender +signal.data["command"] = command +signal.data["recipient"] = id_tag
+src.program:receive_signal(signal)
+
+/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/debug_init_dock(var/target as text) +set category = "Debug" +set src in view(1) +src.program:initiate_docking(target)
+/obj/machinery/embedded_controller/radio/simple_docking_controller/verb/debug_init_undock() +set category = "Debug" +set src in view(1) +src.program:initiate_undocking()
Procs | |
RefreshParts | Way too alien to be upgraded , according to lore. |
---|
Way too alien to be upgraded , according to lore.
Procs | |
LateInitialize | Update status at initialization! |
---|
Update status at initialization!
Procs | |
reset_memory | Visible confirmation |
---|
Visible confirmation
Vars | |
IKEA_list | its expensive so they need to do a few mandates before they manage to get it |
---|---|
Procs | |
nano_ui_interact | The nano_ui_interact proc is used to open and update Nano UIs +If nano_ui_interact is not used then the UI will not update correctly +nano_ui_interact is currently defined for /atom/movable |
its expensive so they need to do a few mandates before they manage to get it
The nano_ui_interact proc is used to open and update Nano UIs +If nano_ui_interact is not used then the UI will not update correctly +nano_ui_interact is currently defined for /atom/movable
+@param user /mob The mob who is interacting with this ui +@param ui_key string A string key to use for this ui. Allows for multiple unique uis on one obj/mob (defaut value "main")
+@return nothing
Procs | |
affect_grab | Local pod code |
---|---|
go_out | Why isn't it just eject ? because it somehow breaks SSchunks. ForceMoving out of these does not get registered properly +The mob does NOT have a LOC when it gets done by eject() , but this way it does for its forceMove() when we call go_out() from here +I dont know why it is this way , blame Byond ? - SPCR 2023 +I figured it out... its because it used to remove the mob to eject from its contents before actually ejecting them , causing their loc to be null.. |
Local pod code
Why isn't it just eject ? because it somehow breaks SSchunks. ForceMoving out of these does not get registered properly +The mob does NOT have a LOC when it gets done by eject() , but this way it does for its forceMove() when we call go_out() from here +I dont know why it is this way , blame Byond ? - SPCR 2023 +I figured it out... its because it used to remove the mob to eject from its contents before actually ejecting them , causing their loc to be null..
Procs | |
Bumped | prevent command spam |
---|
prevent command spam
** DEBUG VERBS ***
+/datum/computer/file/embedded_program/docking/proc/print_state() +to_chat(world, "id_tag: [id_tag]") +to_chat(world, "dock_state: [dock_state]") +to_chat(world, "control_mode: [control_mode]") +to_chat(world, "tag_target: [tag_target]") +to_chat(world, "response_sent: [response_sent]")
+/datum/computer/file/embedded_program/docking/post_signal(datum/signal/signal, comm_line) +to_chat(world, "Program [id_tag] sent a message!") +print_state() +to_chat(world, "[id_tag] sent command "[signal.data["command"]]" to "[signal.data["recipient"]]"") +..(signal)
+/obj/machinery/embedded_controller/radio/airlock/docking_port/verb/view_state() +set category = "Debug" +set src in view(1) +src.program:print_state()
+/obj/machinery/embedded_controller/radio/airlock/docking_port/verb/spoof_signal(var/command as text, var/sender as text) +set category = "Debug" +set src in view(1) +var/datum/signal/signal = new +signal.data["tag"] = sender +signal.data["command"] = command +signal.data["recipient"] = id_tag
+src.program:receive_signal(signal)
+
+/obj/machinery/embedded_controller/radio/airlock/docking_port/verb/debug_init_dock(var/target as text) +set category = "Debug" +set src in view(1) +src.program:initiate_docking(target)
+/obj/machinery/embedded_controller/radio/airlock/docking_port/verb/debug_init_undock() +set category = "Debug" +set src in view(1) +src.program:initiate_undocking()
Procs | |
damage_reaction | ] [ +>RESPONSE CODE< +/_____________/ |
---|
] [ +>RESPONSE CODE< +/_____________/
+MACHINES<
+
Procs | |
New | Initialising |
---|---|
attackby | Item Adding |
cook | Microwave Menu Handling/Cooking |
interact | Microwave Menu |
Initialising
Item Adding
Microwave Menu Handling/Cooking
Microwave Menu
Procs | |
scan_user | helper procs |
---|
helper procs
Procs | |
message_chat_admins | Call the chat webhook to transmit a notification of an admin fax to the admin chat. |
---|
Call the chat webhook to transmit a notification of an admin fax to the admin chat.
Procs | |
Topic | Z-Level stuff +Z-Level stuff |
---|
Z-Level stuff +Z-Level stuff
Procs | |
Topic | Z-Level stuff +Z-Level stuff |
---|
Z-Level stuff +Z-Level stuff
Vars | |
offset_old | Offsets the object by APC_PIXEL_OFFSET (defined in apc_defines.dm) pixels in the direction we want it placed in. This allows the APC to be embedded in a wall, yet still inside an area (like mapping). |
---|
Offsets the object by APC_PIXEL_OFFSET (defined in apc_defines.dm) pixels in the direction we want it placed in. This allows the APC to be embedded in a wall, yet still inside an area (like mapping).
Procs | |
Initialize | For any UI related fuckery to NanoUI/Tgui |
---|
For any UI related fuckery to NanoUI/Tgui
Vars | |
anchored | PLACEHOLDER |
---|
PLACEHOLDER
Procs | |
attackby | Item Adding |
---|---|
nano_ui_interact | SmartFridge Menu |
Item Adding
SmartFridge Menu
Procs | |
Topic | Secure SmartFridges |
---|
Secure SmartFridges
Procs | |
Destroy |
---|
A vending machine
Procs | |
build_inventory | Build src.produdct_records from the products lists |
---|---|
credit_purchase | Add money for current purchase to the vendor account. |
pay_with_card | Scan a card and attempt to transfer payment from associated account. |
pay_with_cash | Receive payment with cashmoney. |
pay_with_ewallet | Scan a chargecard and deduct payment from it. |
stock | |
ui_interact | Display the TGUI window for the vending machine. |
Build src.produdct_records from the products lists
+src.products, src.contraband, src.premium, and src.prices allow specifying +products that the vending machine is to carry without manually populating +src.product_records.
Add money for current purchase to the vendor account.
+Called after the money has already been taken from the customer.
Scan a card and attempt to transfer payment from associated account.
+Takes payment for whatever is the currently_vending item. Returns 1 if +successful, 0 if failed
Receive payment with cashmoney.
Scan a chargecard and deduct payment from it.
+Takes payment for whatever is the currently_vending item. Returns 1 if +successful, 0 if failed.
Add item to the machine
+Checks if item is vendable in this machine should be performed before
+calling. W is the item being inserted, R is the associated vending_product entry. +R can be null, in which case the user is inserting something that wasnt previously here. +In that case we create a new inventory record for the item
+Display the TGUI window for the vending machine.
+See TGUI documentation for details.
Vars | |
icon_deny | 18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles |
---|
18 drink entities below, plus the glasses, in case someone wants to edit the number of bottles
Procs | |
build_inventory | Populate hydroseeds product_records |
---|
Populate hydroseeds product_records
+This needs to be customized to fetch the actual names of the seeds, otherwise +the machine would simply list "packet of seeds" times 20
Vars | |
holomap_offset_x | < The number of Z-Levels in the map. |
---|
< The number of Z-Levels in the map.
Procs | |
errString | External procedures, intended to be used by user code. |
---|---|
regionCreate | |
updateWallConnections | Internal procedures. Might be useful if you're writing a /jp_DungeonRoom datum. +Probably not useful if you just want to make a simple dungeon |
External procedures, intended to be used by user code.
The remaining procedures are seriously internal, and I strongly suggest not *
+
+touching them unless you're certain you know what you're doing. That includes * +calling them, unless you've figured out what the side-effects and assumptions * +of the procedure are. These may not work except in the context of a generate() * +call.
Internal procedures. Might be useful if you're writing a /jp_DungeonRoom datum. +Probably not useful if you just want to make a simple dungeon
Procs | |
get_fall_damage | An overridable proc used by SSfalling to determine whether if the object deals +mimimal dmg or their w_class * 10 |
---|
An overridable proc used by SSfalling to determine whether if the object deals +mimimal dmg or their w_class * 10
+@return ITEM_SIZE_TINY * 10 if w_class is not defined in subtypes structures +w_class * 10 if w_class is set
+Values are found in code/__defines/inventory_sizes.dm
Procs | |
attackby | Collapsing burrows. Slow and hard work, but failure will make the next attempt easier, +so you'll get it eventually. +Uses digging quality, and user's robust or mechanical stats |
---|---|
audio | Audio Management |
break_open | Breaking and rubble |
enter_burrow | Burrow entering |
spread_plants | Plant Management |
Collapsing burrows. Slow and hard work, but failure will make the next attempt easier, +so you'll get it eventually. +Uses digging quality, and user's robust or mechanical stats
+While burrow is still emerging (cracks) player can attempt to weld it +Hole can be closed easely with metal sheets
+Breaking a hole with a crowbar is theoretically possible, but extremely slow and difficult. You are strongly +advised to use proper mining tools. A pickaxe or a drill will do the job in a reasonable time
Audio Management
Breaking and rubble
Burrow entering
Plant Management
Procs | |
MouseDrop_T | So mechs dont open these when attacking. |
---|
So mechs dont open these when attacking.
Pickaxe
+Mining car (Crate like thing, not the rail car)
Procs | |
attackby | Z-Level stuff +Z-Level stuff |
---|---|
hide | Z-Level stuff +Z-Level stuff +Z-Level stuff +Z-Level stuff |
Z-Level stuff +Z-Level stuff
Z-Level stuff +Z-Level stuff +Z-Level stuff +Z-Level stuff
Procs | |
Destroy | Z-Level stuff +Z-Level stuff end |
---|
Z-Level stuff +Z-Level stuff end
Procs | |
can_prevent_fall | We can prevent the fall of humans and structures , but everything else will just fall down |
---|
We can prevent the fall of humans and structures , but everything else will just fall down
Procs | |
Destroy | Z-Level Stuff +Z-Level Stuff |
---|
Z-Level Stuff +Z-Level Stuff
Procs | |
ChangeTurf | Turf Changed Handling |
---|---|
fallThrough | If anything on our turf stops falls downwards +If anything below stops falls from above |
Turf Changed Handling
If anything on our turf stops falls downwards +If anything below stops falls from above
Procs | |
melt | !OH SHIT!! |
---|
!OH SHIT!!
Two possibilities exist: either we are alone in the Universe or we are not. Both are equally terrifying. ~ Arthur C. Clarke
+The byond world object stores some basic byond level config, and has a few hub specific procs for managing hub visiblity
+The world /New() is the root of where a round itself begins
Procs | |
ImmediateInvokeAsync | Immediately Invoke proctocall on thingtocall, with waitfor set to false |
---|---|
New | World creation |
push_usr | Makes a call in the context of a different usr. Use sparingly |
Immediately Invoke proctocall on thingtocall, with waitfor set to false
+Arguments:
+World creation
+Here is where a round itself is actually begun and setup.
+Nothing happens until something moves. ~Albert Einstein
+For clarity, this proc gets triggered later in the initialization pipeline, it is not the first thing to happen, as it might seem.
+Initialization Pipeline: +Global vars are new()'ed, (including config, glob, and the master controller will also new and preinit all subsystems when it gets new()ed) +Compiled in maps are loaded (mainly centcom). all areas/turfs/objs/mobs(ATOMs) in these maps will be new()ed +world/New() (You are here) +Once world/New() returns, client's can connect. +1 second sleep +Master Controller initialization. +Subsystem initialization. +Non-compiled-in maps are maploaded, all atoms are new()ed +All atoms in both compiled and uncompiled maps are initialized()
Makes a call in the context of a different usr. Use sparingly