client
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 | |
account_age | Age of byond account in days |
---|---|
account_join_date | Date of byond account creation in ISO 8601 format |
admin_music_volume | Admin music volume, from 0 to 1. |
adminhelptimerid | Client var used for returning the ahelp verb |
avgping | Average ping of the client |
ban_cache | Used to cache this client's bans to save on DB queries |
ban_cache_start | If we are currently building this client's ban cache, this var stores the timeofday we started at |
char_render_holders | Should only be a key-value list of north/south/east/west = atom/movable/screen. |
click_intercept | Needs to implement InterceptClickOn(user,params,atom) proc |
click_intercept_time | Time when the click was intercepted |
clicklimiter | Used for limiting the rate of clicks sends by the client to avoid abuse |
client_keysend_amount | Amount of keydowns in the last keysend checking interval |
combo_hud_enabled | Whether or not this client has the combo HUD enabled |
completed_asset_jobs | List of all completed blocking send jobs awaiting acknowledgement by send_asset |
connection_realtime | world.realtime they connected |
connection_time | world.time they connected |
connection_timeofday | world.timeofday they connected |
credits | lazy list of all credit object bound to this client |
crew_manifest_delay | rate limiting for the crew manifest |
current_ambient_sound | Which ambient sound this client is currently being provided. |
current_ticket | Client var used for tracking the ticket the (usually) not-admin client is dealing with |
do_parallax_animations | Do we want to do parallax animations at all? Exists to prevent laptop fires |
dont_animate_parallax | world.time of when we can state animate()ing parallax again |
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. |
fully_created | If this client has been fully initialized or not |
holder | Contains admin info. Null if client is not an admin. |
hotkeys | Whether or not this client has standard hotkeys enabled |
intended_direction | The direction we WANT to move, based off our keybinds Will be udpated to be the actual direction later on |
interviewee | If the client is currently under the restrictions of the interview system |
ip_intel | Used for ip intel checking to identify evaders, disabled because of issues with traffic |
key_combos_held | A buffer for combinations such of modifiers + keys (ex: CtrlD, AltE, ShiftT). Format: "key" -> "combo" (ex: "D" -> "CtrlD" ) |
keys_held | A buffer of currently held keys. |
keysend_tripped | When set to true, user will be autokicked if they trip the keysends in a second limit again |
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. |
lastping | Last ping of the client |
loot_panel | Loot panel for the client |
mouseParams | Used in MouseDrag to preserve the original mouse click parameters |
mouse_down_icon | used to make a special mouse cursor, this one for mouse up icon |
mouse_location_ref | Used in MouseDrag to preserve the last mouse-entered location. Weakref |
mouse_object_ref | Used in MouseDrag to preserve the last mouse-entered object. Weakref |
mouse_override_icon | used to override the mouse cursor so it doesnt get reset |
mouse_up_icon | used to make a special mouse cursor, this one for mouse up icon |
move_delay | Move delay of controlled mob, any keypresses inside this period will persist until the next proper move |
movement_keys | custom movement keys for this client |
movement_locked | Are we locking our movement input? |
movingmob | this is the last recorded client eye by SSparallax/fire() |
navigation_images | Images of the path created by navigate(). |
next_keysend_reset | World tick time where client_keysend_amount will reset |
next_keysend_trip_reset | World tick time where keysend_tripped will reset back to false |
next_move_dir_add | On next move, add this dir to the move that would otherwise be done |
next_move_dir_sub | On next move, subtract this dir from the move that would otherwise be done |
panel_tabs | list of all tabs |
parallax_animate_timers | Timers for the area directional animation, one for each layer |
parallax_layers_max | How many parallax layers to show our client |
parallax_movedir | Direction our current area wants to move parallax |
parent_type | This line makes clients parent type be a datum |
player_age | Used to determine how old the account is - in days. |
player_details | these persist between logins/logouts during the same round. |
player_join_date | Date that this account was first seen in the server |
prefs | Player preferences datum for the client |
rebuild_plane_masters | Does this client's mob need to rebuild its plane masters after login? This is currently only used so a client can switch between 515 and 516 without breaking their rendering. |
recent_examines | A lazy list of atoms we've examined in the last RECENT_EXAMINE_MAX_WINDOW (default 2) seconds, so that we will call /atom/proc/examine_more instead of /atom/proc/examine on them when examining |
related_accounts_cid | So admins know why it isn't working - Used to determine what other accounts previously logged in from this computer id |
related_accounts_ip | So admins know why it isn't working - Used to determine what other accounts previously logged in from this ip |
say_slowmode | Tracks say() usage for ic/dchat while slowmode is enabled |
screen_maps | Assoc list with all the active maps - when a screen obj is added to a map, it's put in here as well. |
script | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!HEY LISTEN!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
seen_messages | Messages currently seen by this client |
selected_target | Autoclick list of two elements, first being the clicked thing, second being the parameters. |
show_verb_panel | hides the byond verb panel as we use our own custom version |
spell_tabs | list of tabs containing spells and abilities |
stat_panel | Stat panel window declaration |
stat_tab | our current tab |
tgui_cache_reloaded | global |
tgui_say | Assigned say modal of the client |
tgui_windows | global |
tooltips | datum that controls the displaying and hiding of tooltips |
topiclimiter | Used for limiting the rate of topic sends by the client to avoid abuse |
total_count_reset | Next tick to reset the total message counter |
total_message_count | How many messages sent in the last 10 seconds |
typing_indicators | Does this client have typing indicators enabled? |
urgent_ahelp_cooldown | The last urgent ahelp that this player sent |
view_size | datum wrapper for client view |
visual_delay | The visual delay to use for the current client.Move(), mostly used for making a client based move look like it came from some other slower source |
Procs | |
Move | Move a client in a direction |
Process_Grab | Checks to see if you're being grabbed and if so attempts to break it |
Process_Incorpmove | Allows mobs to ignore density and phase through objects |
_Topic | dumb workaround because byond doesnt seem to recognize the Topic() typepath for /datum/proc/Topic() from the client Topic, so we cant queue it without this |
adjust_heart | Gives someone hearted status for OOC, from behavior commendations |
adminGreet | Sends a message to adminchat when anyone with a holder logs in or logs out. Is dependent on admin preferences and configuration settings, which means that this proc can fire without sending a message. |
admin_follow | Attempts to make the client orbit the given object, for administrative purposes. If they are not an observer, will try to aghost them. |
adminpm_filter_text | Accepts a message and an ambiguious recipient (some sort of client representative, or [EXTERNAL_PM_USER]) Returns the filtered message if it passes all checks, or null if the send fails |
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. |
attempt_auto_fit_viewport | Attempt to automatically fit the viewport, assuming the user wants it |
body_chest | Hidden verb to target the chest, bound to 5 |
body_eyes | Hidden verb to target the eyes, bound to 7 |
body_groin | Hidden verb to target the groin, bound to 2 |
body_head | Hidden verb to target the head, unbound by default. |
body_l_arm | Hidden verb to target the left arm, bound to 6 |
body_l_leg | Hidden verb to target the left leg, bound to 3 |
body_mouth | Hidden verb to target the mouth, bound to 9 |
body_r_arm | Hidden verb to target the right arm, bound to 4 |
body_r_leg | Hidden verb to target the right leg, bound to 1 |
body_toggle_head | Hidden verbs to set desired body target zone |
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. |
check_drag_proximity | Handles treating drags as clicks if they're within some conditions Does some other stuff adjacent to trying to figure out what the user actually "wanted" to click Returns TRUE if it caused a click, FALSE otherwise |
check_has_body_select | Validate the client's mob has a valid zone selected |
clear_all_maps | Clears all the maps of registered screen objects. |
clear_map | Clears the map of registered screen objects. |
clear_screen | Clears the client's screen, aside from ones that opt out |
close_popup | Closes a popup. |
cmd_ahelp_reply | Replys to some existing ahelp, reply to whom, which can be a client or ckey |
create_popup | Creates a popup window with a basic map element in it, without any further initialization. |
drop_item | If your mob is concious, drop the item in the active hand |
fix_tgui_panel | tgui panel / chat troubleshooting verb |
generate_adminwho_string | Proc that generates the applicable string to dispatch to the client for adminwho. |
getStealthKey | Returns this client's stealthed ckey |
get_award_status | Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award. |
get_remaining_days | Checks if this client has met the days requirement passed in, or if they are exempt from it. Returns the number of days left, or 0. |
give_award | Redirect proc that makes it easier to call the unlock achievement proc. Achievement type is the typepath to the award, user is the mob getting the award, and value is an optional variable used for leaderboard value increments |
handle_admin_logout | Handles any "fluff" or supplementary procedures related to an admin logout event. Should not have anything critically related cleaning up an admin's logout. |
handle_popup_close | When the popup closes in any way (player or proc call) it calls this. |
init_verbs | compiles a full list of verbs and sends it to the browser |
initialize_menus | Initializes dropdown menus on client |
is_drag_clickable | Does the logic for checking if a drag counts as a click or not Returns true if it does, false otherwise |
is_veteran | Returns whether the client should receive the gamer cloak |
notify_adminpm_message | Notifies all admins about the existence of an admin pm, then logs the pm message_target here can be either [EXTERNAL_PM_USER], indicating that this message is intended for some external chat channel or a /client, in which case we send in the standard form log_message is the raw message to send, it will be filtered and treated to ensure we do not break any text handling |
on_stat_panel_message | Handles incoming messages from the stat-panel TGUI. |
only_one | Gives everyone kilts, berets, claymores, and pinpointers, with the objective to hijack the emergency shuttle. Uses highlander controller to do so! |
ooc | talking in OOC uses this |
open_escape_menu | Opens the escape menu. Verb, hardcoded to Escape, set in the client skin. |
open_particle_editor | opens the particle editor UI for the in_atom object for this client |
reformat_narration | Reformats a narration message. First provides a prompt asking if the user wants to reformat their message, then allows them to pick from a list of spans to use. |
register_map_obj | Registers screen obj with the client, which makes it visible on the assigned map, and becomes a part of the assigned map's lifecycle. |
request_adminpm_message | Requests an admin pm message to send message_target here can be either [EXTERNAL_PM_USER], indicating that this message is intended for some external chat channel or a /client, which we will then store info about to ensure logout -> logins are protected as expected Accepts an optional existing message, which will be used in place of asking the recipient assuming all other conditions are met Returns the message to send or null if no message is found Sleeps |
reset_held_keys | Manually clears any held keys, in case due to lag or other undefined behavior a key gets stuck. |
send_resources | Send resources to the client. Sends both game resources and browser assets. |
sends_adminpm_message | Sends a pm message via the tickets system message_target here can be either [EXTERNAL_PM_USER], indicating that this message is intended for some external chat channel or a /client, in which case we send in the standard form send_message is the raw message to send, it will be filtered and treated to ensure we do not break any text handling Returns FALSE if the send failed, TRUE otherwise |
setup_popup | Create the popup, and get it ready for generic use by giving it a background. |
start_thinking | Sets the mob as "thinking" - with indicator and the TRAIT_THINKING_IN_CHARACTER trait |
start_typing | Handles the user typing. After a brief period of inactivity, signals the client mob to revert to the "thinking" icon. |
stop_thinking | Removes typing/thinking indicators and flags the mob as not thinking |
stop_typing | Callback to remove the typing indicator after a brief period of inactivity. If the user was typing IC, the thinking indicator is shown. |
tgui_say_create_open_command | Creates a JSON encoded message to open TGUI say modals properly. |
toggle_walk_run | Verb to toggle the walk or run status |
uiclose | verb |
update_exp_list | Tallies up the exp for the playtime tracking and adds it to the global update list. |
update_special_keybinds | Updates the keybinds for special keys |
Var Details
account_age
Age of byond account in days
account_join_date
Date of byond account creation in ISO 8601 format
admin_music_volume
Admin music volume, from 0 to 1.
adminhelptimerid
Client var used for returning the ahelp verb
avgping
Average ping of the client
ban_cache
Used to cache this client's bans to save on DB queries
ban_cache_start
If we are currently building this client's ban cache, this var stores the timeofday we started at
char_render_holders
Should only be a key-value list of north/south/east/west = atom/movable/screen.
click_intercept
Needs to implement InterceptClickOn(user,params,atom) proc
click_intercept_time
Time when the click was intercepted
clicklimiter
Used for limiting the rate of clicks sends by the client to avoid abuse
client_keysend_amount
Amount of keydowns in the last keysend checking interval
combo_hud_enabled
Whether or not this client has the combo HUD enabled
completed_asset_jobs
List of all completed blocking send jobs awaiting acknowledgement by send_asset
connection_realtime
world.realtime they connected
connection_time
world.time they connected
connection_timeofday
world.timeofday they connected
credits
lazy list of all credit object bound to this client
crew_manifest_delay
rate limiting for the crew manifest
current_ambient_sound
Which ambient sound this client is currently being provided.
current_ticket
Client var used for tracking the ticket the (usually) not-admin client is dealing with
do_parallax_animations
Do we want to do parallax animations at all? Exists to prevent laptop fires
dont_animate_parallax
world.time of when we can state animate()ing parallax again
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.
fully_created
If this client has been fully initialized or not
holder
Contains admin info. Null if client is not an admin.
hotkeys
Whether or not this client has standard hotkeys enabled
intended_direction
The direction we WANT to move, based off our keybinds Will be udpated to be the actual direction later on
interviewee
If the client is currently under the restrictions of the interview system
ip_intel
Used for ip intel checking to identify evaders, disabled because of issues with traffic
key_combos_held
A buffer for combinations such of modifiers + keys (ex: CtrlD, AltE, ShiftT). Format: "key"
-> "combo"
(ex: "D"
-> "CtrlD"
)
keys_held
A buffer of currently held keys.
keysend_tripped
When set to true, user will be autokicked if they trip the keysends in a second limit again
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.
lastping
Last ping of the client
loot_panel
Loot panel for the client
mouseParams
Used in MouseDrag to preserve the original mouse click parameters
mouse_down_icon
used to make a special mouse cursor, this one for mouse up icon
mouse_location_ref
Used in MouseDrag to preserve the last mouse-entered location. Weakref
mouse_object_ref
Used in MouseDrag to preserve the last mouse-entered object. Weakref
mouse_override_icon
used to override the mouse cursor so it doesnt get reset
mouse_up_icon
used to make a special mouse cursor, this one for mouse up icon
move_delay
Move delay of controlled mob, any keypresses inside this period will persist until the next proper move
movement_keys
custom movement keys for this client
movement_locked
Are we locking our movement input?
movingmob
this is the last recorded client eye by SSparallax/fire()
navigation_images
Images of the path created by navigate().
next_keysend_reset
World tick time where client_keysend_amount will reset
next_keysend_trip_reset
World tick time where keysend_tripped will reset back to false
next_move_dir_add
On next move, add this dir to the move that would otherwise be done
next_move_dir_sub
On next move, subtract this dir from the move that would otherwise be done
panel_tabs
list of all tabs
parallax_animate_timers
Timers for the area directional animation, one for each layer
parallax_layers_max
How many parallax layers to show our client
parallax_movedir
Direction our current area wants to move parallax
parent_type
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
player_age
Used to determine how old the account is - in days.
player_details
these persist between logins/logouts during the same round.
player_join_date
Date that this account was first seen in the server
prefs
Player preferences datum for the client
rebuild_plane_masters
Does this client's mob need to rebuild its plane masters after login? This is currently only used so a client can switch between 515 and 516 without breaking their rendering.
recent_examines
A lazy list of atoms we've examined in the last RECENT_EXAMINE_MAX_WINDOW (default 2) seconds, so that we will call /atom/proc/examine_more instead of /atom/proc/examine on them when examining
related_accounts_cid
So admins know why it isn't working - Used to determine what other accounts previously logged in from this computer id
related_accounts_ip
So admins know why it isn't working - Used to determine what other accounts previously logged in from this ip
say_slowmode
Tracks say() usage for ic/dchat while slowmode is enabled
screen_maps
Assoc list with all the active maps - when a screen obj is added to a map, it's put in here as well.
Format: list(
script
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!HEY LISTEN!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
seen_messages
Messages currently seen by this client
selected_target
Autoclick list of two elements, first being the clicked thing, second being the parameters.
show_verb_panel
hides the byond verb panel as we use our own custom version
spell_tabs
list of tabs containing spells and abilities
stat_panel
Stat panel window declaration
stat_tab
our current tab
tgui_cache_reloaded
global
TRUE if cache was reloaded by tgui dev server at least once.
tgui_say
Assigned say modal of the client
tgui_windows
global
Tracks open windows for a user.
tooltips
datum that controls the displaying and hiding of tooltips
topiclimiter
Used for limiting the rate of topic sends by the client to avoid abuse
total_count_reset
Next tick to reset the total message counter
total_message_count
How many messages sent in the last 10 seconds
typing_indicators
Does this client have typing indicators enabled?
urgent_ahelp_cooldown
The last urgent ahelp that this player sent
view_size
datum wrapper for client view
visual_delay
The visual delay to use for the current client.Move(), mostly used for making a client based move look like it came from some other slower source
Proc Details
Move
Move a client in a direction
Huge proc, has a lot of functionality
Mostly it will despatch to the mob that you are the owner of to actually move in the physical realm
Things that stop you moving as a mob:
- world time being less than your next move_delay
- not being in a mob, or that mob not having a loc
- missing the n and direction parameters
- being in remote control of an object (calls Moveobject instead)
- being dead (it ghosts you instead)
Things that stop you moving as a mob living (why even have OO if you're just shoving it all in the parent proc with istype checks right?):
- having incorporeal_move set (calls Process_Incorpmove() instead)
- being grabbed
- being buckled (relaymove() is called to the buckled atom instead)
- having your loc be some other mob (relaymove() is called on that mob instead)
- Not having MOBILITY_MOVE
- Failing Process_Spacemove() call
At this point, if the mob is is confused, then a random direction and target turf will be calculated for you to travel to instead
Now the parent call is made (to the byond builtin move), which moves you
Some final move delay calculations (doubling if you moved diagonally successfully)
if mob throwing is set I believe it's unset at this point via a call to finalize
Finally if you're pulling an object and it's dense, you are turned 180 after the move (if you ask me, this should be at the top of the move so you don't dance around)
Process_Grab
Checks to see if you're being grabbed and if so attempts to break it
Called by client/Move()
Process_Incorpmove
Allows mobs to ignore density and phase through objects
Called by client/Move()
The behaviour depends on the incorporeal_move value of the mob
- INCORPOREAL_MOVE_BASIC - forceMoved to the next tile with no stop
- INCORPOREAL_MOVE_SHADOW - the same but leaves a cool effect path
- INCORPOREAL_MOVE_JAUNT - the same but blocked by holy tiles
You'll note this is another mob living level proc living at the client level
_Topic
dumb workaround because byond doesnt seem to recognize the Topic() typepath for /datum/proc/Topic() from the client Topic, so we cant queue it without this
adjust_heart
Gives someone hearted status for OOC, from behavior commendations
adminGreet
Sends a message to adminchat when anyone with a holder logs in or logs out. Is dependent on admin preferences and configuration settings, which means that this proc can fire without sending a message.
admin_follow
Attempts to make the client orbit the given object, for administrative purposes. If they are not an observer, will try to aghost them.
adminpm_filter_text
Accepts a message and an ambiguious recipient (some sort of client representative, or [EXTERNAL_PM_USER]) Returns the filtered message if it passes all checks, or null if the send fails
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.
attempt_auto_fit_viewport
Attempt to automatically fit the viewport, assuming the user wants it
body_chest
Hidden verb to target the chest, bound to 5
body_eyes
Hidden verb to target the eyes, bound to 7
body_groin
Hidden verb to target the groin, bound to 2
body_head
Hidden verb to target the head, unbound by default.
body_l_arm
Hidden verb to target the left arm, bound to 6
body_l_leg
Hidden verb to target the left leg, bound to 3
body_mouth
Hidden verb to target the mouth, bound to 9
body_r_arm
Hidden verb to target the right arm, bound to 4
body_r_leg
Hidden verb to target the right leg, bound to 1
body_toggle_head
Hidden verbs to set desired body target zone
Uses numpad keys 1-9 Hidden verb to cycle through head zone with repeated presses, head - eyes - mouth. Bound to 8
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.
check_drag_proximity
Handles treating drags as clicks if they're within some conditions Does some other stuff adjacent to trying to figure out what the user actually "wanted" to click Returns TRUE if it caused a click, FALSE otherwise
check_has_body_select
Validate the client's mob has a valid zone selected
clear_all_maps
Clears all the maps of registered screen objects.
clear_map
Clears the map of registered screen objects.
clear_screen
Clears the client's screen, aside from ones that opt out
close_popup
Closes a popup.
cmd_ahelp_reply
Replys to some existing ahelp, reply to whom, which can be a client or ckey
create_popup
Creates a popup window with a basic map element in it, without any further initialization.
Ratio is how many pixels by how many pixels (keep it simple).
Returns a map name.
drop_item
If your mob is concious, drop the item in the active hand
This is a hidden verb, likely for binding with winset for hotkeys
fix_tgui_panel
tgui panel / chat troubleshooting verb
generate_adminwho_string
Proc that generates the applicable string to dispatch to the client for adminwho.
getStealthKey
Returns this client's stealthed ckey
get_award_status
Redirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award.
get_remaining_days
Checks if this client has met the days requirement passed in, or if they are exempt from it. Returns the number of days left, or 0.
give_award
Redirect proc that makes it easier to call the unlock achievement proc. Achievement type is the typepath to the award, user is the mob getting the award, and value is an optional variable used for leaderboard value increments
handle_admin_logout
Handles any "fluff" or supplementary procedures related to an admin logout event. Should not have anything critically related cleaning up an admin's logout.
handle_popup_close
When the popup closes in any way (player or proc call) it calls this.
init_verbs
compiles a full list of verbs and sends it to the browser
initialize_menus
Initializes dropdown menus on client
is_drag_clickable
Does the logic for checking if a drag counts as a click or not Returns true if it does, false otherwise
is_veteran
Returns whether the client should receive the gamer cloak
notify_adminpm_message
Notifies all admins about the existence of an admin pm, then logs the pm message_target here can be either [EXTERNAL_PM_USER], indicating that this message is intended for some external chat channel or a /client, in which case we send in the standard form log_message is the raw message to send, it will be filtered and treated to ensure we do not break any text handling
on_stat_panel_message
Handles incoming messages from the stat-panel TGUI.
only_one
Gives everyone kilts, berets, claymores, and pinpointers, with the objective to hijack the emergency shuttle. Uses highlander controller to do so!
Arguments:
- was_delayed: boolean: whether the option to do a "delayed" highlander was pressed before this was called, changes up the logging a bit.
ooc
talking in OOC uses this
open_escape_menu
Opens the escape menu. Verb, hardcoded to Escape, set in the client skin.
open_particle_editor
opens the particle editor UI for the in_atom object for this client
reformat_narration
Reformats a narration message. First provides a prompt asking if the user wants to reformat their message, then allows them to pick from a list of spans to use.
register_map_obj
Registers screen obj with the client, which makes it visible on the assigned map, and becomes a part of the assigned map's lifecycle.
request_adminpm_message
Requests an admin pm message to send message_target here can be either [EXTERNAL_PM_USER], indicating that this message is intended for some external chat channel or a /client, which we will then store info about to ensure logout -> logins are protected as expected Accepts an optional existing message, which will be used in place of asking the recipient assuming all other conditions are met Returns the message to send or null if no message is found Sleeps
reset_held_keys
Manually clears any held keys, in case due to lag or other undefined behavior a key gets stuck.
send_resources
Send resources to the client. Sends both game resources and browser assets.
sends_adminpm_message
Sends a pm message via the tickets system message_target here can be either [EXTERNAL_PM_USER], indicating that this message is intended for some external chat channel or a /client, in which case we send in the standard form send_message is the raw message to send, it will be filtered and treated to ensure we do not break any text handling Returns FALSE if the send failed, TRUE otherwise
setup_popup
Create the popup, and get it ready for generic use by giving it a background.
Width and height are multiplied by 64 by default.
start_thinking
Sets the mob as "thinking" - with indicator and the TRAIT_THINKING_IN_CHARACTER trait
start_typing
Handles the user typing. After a brief period of inactivity, signals the client mob to revert to the "thinking" icon.
stop_thinking
Removes typing/thinking indicators and flags the mob as not thinking
stop_typing
Callback to remove the typing indicator after a brief period of inactivity. If the user was typing IC, the thinking indicator is shown.
tgui_say_create_open_command
Creates a JSON encoded message to open TGUI say modals properly.
Arguments: channel - The channel to open the modal in. Returns: string - A JSON encoded message to open the modal.
toggle_walk_run
Verb to toggle the walk or run status
uiclose
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.
update_exp_list
Tallies up the exp for the playtime tracking and adds it to the global update list.
For a client mob of /mob/dead/observer, it adds EXP_TYPE_GHOST.
For a client mob of /mob/living, it grabs the exp list from a mob proc call. Being dead but still in your body will tally time towards your /mob/living roles instead of ghost roles. If /mob/living returns an empty list, uses "Unknown" instead.
For anything else, it doesn't update anything.
Arguments:
- minutes - The number of minutes to add to the playtime tally.
update_special_keybinds
Updates the keybinds for special keys
Handles adding macros for the keys that need it And adding movement keys to the clients movement_keys list At the time of writing this, communication(OOC, Say, IC, ASAY) require macros Arguments:
- direct_prefs - the preference we're going to get keybinds from