Daedalus Dock - Modules - TypesVar Details - Proc Details

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

AI_InteractUsed for admin AI interaction
account_ageAge of byond account in days
account_join_dateDate of byond account creation in ISO 8601 format
active_mousedown_itemAutoclick variable referencing the associated item.
admin_music_volumeAdmin music volume, from 0 to 1.
adminhelptimeridClient var used for returning the ahelp verb
areaCurrent area of the controlled mob
avgpingAverage ping of the client
ban_cacheUsed to cache this client's bans to save on DB queries
ban_cache_startIf we are currently building this client's ban cache, this var stores the timeofday we started at
char_render_holdersShould only be a key-value list of north/south/east/west = atom/movable/screen.
click_interceptNeeds to implement InterceptClickOn(user,params,atom) proc
click_intercept_timeTime when the click was intercepted
clicklimiterUsed for limiting the rate of clicks sends by the client to avoid abuse
client_keysend_amountAmount of keydowns in the last keysend checking interval
combo_hud_enabledWhether or not this client has the combo HUD enabled
completed_asset_jobsList of all completed blocking send jobs awaiting acknowledgement by send_asset
connection_realtimeworld.realtime they connected
connection_timeworld.time they connected
connection_timeofdayworld.timeofday they connected
crew_manifest_delayrate limiting for the crew manifest
current_ticketClient var used for tracking the ticket the (usually) not-admin client is dealing with
do_parallax_animationsDo we want to do parallax animations at all? Exists to prevent laptop fires
dont_animate_parallaxworld.time of when we can state animate()ing parallax again
externalreplyamountInternal 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_createdIf this client has been fully initialized or not
holderContains admin info. Null if client is not an admin.
hotkeysWhether or not this client has standard hotkeys enabled
intended_directionThe direction we WANT to move, based off our keybinds Will be updated to be the actual direction later on
ip_intelUsed for ip intel checking to identify evaders, disabled because of issues with traffic
key_combos_heldA buffer for combinations such of modifiers + keys (ex: CtrlD, AltE, ShiftT). Format: "key" -> "combo" (ex: "D" -> "CtrlD")
keys_heldA buffer of currently held keys.
keysend_trippedWhen set to true, user will be autokicked if they trip the keysends in a second limit again
last_asset_jobLast asset send job id.
last_messageContains the last message sent by this client - used to protect against copy-paste spamming.
last_message_countcontins a number of how many times a message identical to last_message was sent.
last_turnlast turn of the controlled mob, I think this is only used by mechs?
lastpingLast ping of the client
linked_discord_accountLinked Discord account ID. Null is valid if the bunker is disabled.
mouseParamsUsed in MouseDrag to preserve the original mouse click parameters
mouse_down_iconused to make a special mouse cursor, this one for mouse up icon
mouse_location_refUsed in MouseDrag to preserve the last mouse-entered location. Weakref
mouse_object_refUsed in MouseDrag to preserve the last mouse-entered object. Weakref
mouse_override_iconused to override the mouse cursor so it doesnt get reset
mouse_pointer_iconUse our custom cursor
mouse_up_iconused to make a special mouse cursor, this one for mouse up icon
move_delayMove delay of controlled mob, any keypresses inside this period will persist until the next proper move
movement_keyscustom movement keys for this client
movement_lockedAre we locking our movement input?
movingmobthis is the last recorded client eye by SSparallax/fire()
navigation_imagesImages of the path created by navigate().
next_keysend_resetWorld tick time where client_keysend_amount will reset
next_keysend_trip_resetWorld tick time where keysend_tripped will reset back to false
next_move_dir_addOn next move, add this dir to the move that would otherwise be done
next_move_dir_subOn next move, subtract this dir from the move that would otherwise be done
obj_windowOur object window datum. It stores info about and handles behavior for the object tab
panel_tabslist of all tabs
parallax_animate_timersTimers for the area directional animation, one for each layer
parallax_layers_maxHow many parallax layers to show our client
parallax_movedirDirection our current area wants to move parallax
parent_typeThis line makes clients parent type be a datum
player_ageUsed to determine how old the account is - in days.
player_detailsthese persist between logins/logouts during the same round.
player_join_dateDate that this account was first seen in the server
playing_ambienceKeeps track of what ambience we are playing. Yeah i know it sucks.
prefsPlayer preferences datum for the client
recent_examinesA 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_cidSo admins know why it isn't working - Used to determine what other accounts previously logged in from this computer id
related_accounts_ipSo admins know why it isn't working - Used to determine what other accounts previously logged in from this ip
restricted_modeIf the client is currently under the restrictions of the interview system, or any other reason.
say_slowmodeTracks say() usage for ic/dchat while slowmode is enabled
screen_mapsAssoc list with all the active maps - when a screen obj is added to a map, it's put in here as well.
screen_textslazylist of screen_texts for this client, first in this list is the one playing
script!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!HEY LISTEN!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
seen_messagesMessages currently seen by this client
selected_targetAutoclick list of two elements, first being the clicked thing, second being the parameters.
show_verb_panelhides the byond verb panel as we use our own custom version
spell_tabslist of tabs containing spells and abilities
stat_panelStat panel window declaration
stat_tabour current tab
tgui_cache_reloadedglobal
tgui_windowsglobal
tooltipsdatum that controls the displaying and hiding of tooltips
topiclimiterUsed for limiting the rate of topic sends by the client to avoid abuse
total_count_resetNext tick to reset the total message counter
total_message_countHow many messages sent in the last 10 seconds
updating_macrosSemaphore for macro updates, so that they all complete and don't stomp over each other.
urgent_ahelp_cooldownThe last urgent ahelp that this player sent
view_sizedatum wrapper for client view
visual_delayThe 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

MoveMove a client in a direction
Move_objectforce move the control_object of your client mob
Process_IncorpmoveAllows mobs to ignore density and phase through objects
_Topicdumb workaround because byond doesnt seem to recognize the .proc/Topic() typepath for /datum/proc/Topic() from the client Topic, so we cant queue it without this
adjust_heartGives someone hearted status for OOC, from behavior commendations
admin_followAttempts to make the client orbit the given object, for administrative purposes. If they are not an observer, will try to aghost them.
asset_cache_confirm_arrivalProcess asset cache client topic calls for "asset_cache_confirm_arrival=[INT]"
asset_cache_preload_dataProcess asset cache client topic calls for "asset_cache_preload_data=[HTML+JSON_STRING]"
asset_cache_update_jsonUpdates the client side stored json file used to keep track of what assets the client has between restarts/reconnects.
attempt_auto_fit_viewportAttempt to automatically fit the viewport, assuming the user wants it
body_chestHidden verb to target the chest, bound to 5
body_eyesHidden verb to target the eyes, bound to 7
body_groinHidden verb to target the groin, bound to 2
body_l_armHidden verb to target the left arm, bound to 6
body_l_legHidden verb to target the left leg, bound to 3
body_mouthHidden verb to target the mouth, bound to 9
body_r_armHidden verb to target the right arm, bound to 4
body_r_legHidden verb to target the right leg, bound to 1
body_toggle_headHidden verb to set the target zone of a mob to the head
browse_queue_flushBlocks 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_atmos_controlsChecks the atmos monitor, sensors, meters, vents, and injectors, and makes sure they dont overlap or do nothing.
check_can_moveChecks to see if an external factor is preventing movement, mainly grabbing.
check_drag_proximityHandles 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_selectValidate the client's mob has a valid zone selected
check_panic_bunkerChecks panic bunker status and applies restricted_mode if necessary. Returns TRUE if the client should be kicked.
check_timer_sourcesA debug verb to check the sources of currently running timers
clear_all_mapsClears all the maps of registered screen objects.
clear_mapClears the map of registered screen objects.
close_popupCloses a popup.
cmd_admin_create_centcom_reportVerb to open the create command report window and send command reports.
cmd_change_command_nameVerb to change the global command name.
create_popupCreates a popup window with a basic map element in it, without any further initialization.
debug_spell_requirementsDebug verb for seeing at a glance what all spells have as set requirements
discord_generate_one_time_tokenGenerate a timebound token for discord verification
discord_get_or_generate_one_time_token_for_ckeyGiven a ckey as a string, look up the OTP token attached to that ckey, else generated new one
discord_is_link_validChecks if the the given ckey has a valid discord link Returns: TRUE if valid, FALSE if invalid or missing
discord_lookup_ckeyGiven a discord id as a string, look up the ckey attached to that account, if any
discord_lookup_idGiven a ckey, look up the discord user id attached to the user, if any
discord_read_linked_idChecks if the the given ckey has a valid discord link. This also updates the client's linked account var. Returns: TRUE if valid, FALSE if invalid or missing.
drop_itemIf your mob is concious, drop the item in the active hand
dsayOur current command name to swap back to after sending the report. The sound we're going to play on report.
find_discord_link_by_ckeyFind discord link entry by the passed in user ckey
find_discord_link_by_discord_idFind discord link entry by the passed in user discord id
find_discord_link_by_tokenFind discord link entry by the passed in user token
fix_tgui_paneltgui panel / chat troubleshooting verb
forcerandomrotatebroadcaster[id_tag] = machine listened_to[atmos_chamber_entry] = bool TRUE means we have the corresponding id_tag being listened to by an atmos control computer. broadcasted_to[id_tag[1]] = bool TRUE means we have the corresponding id_tag being broadcasted to by a device, be it meter, sensors, etc. How many things dont fit the recognized subtypes. How many things have invalid (messes with our delimiter) tags. How many things have empty tags, invalids but much worse. How many things have duped id_tag. How many things are broadcasting without an atmos computer listening How many atmos computers are listening to an empty tag.
get_award_statusRedirect proc that makes it easier to get the status of an achievement. Achievement type is the typepath to the award.
get_remaining_daysChecks 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_awardRedirect 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_popup_closeWhen the popup closes in any way (player or proc call) it calls this.
init_verbscompiles a full list of verbs and sends it to the browser
initialize_menusInitializes dropdown menus on client
is_drag_clickableDoes the logic for checking if a drag counts as a click or not Returns true if it does, false otherwise
is_veteranReturns whether the client should receive the gamer cloak
keyUpCheck if the key is short enough to even be a real key
on_stat_panel_messageHandles incoming messages from the stat-panel TGUI.
only_oneGives everyone kilts, berets, claymores, and pinpointers, with the objective to hijack the emergency shuttle. Uses highlander controller to do so!
ooctalking in OOC uses this
open_particle_editoropens the particle editor UI for the in_atom object for this client
register_map_objRegisters screen obj with the client, which makes it visible on the assigned map, and becomes a part of the assigned map's lifecycle.
requestsVerb for opening the requests manager panel
reset_held_keysManually clears any held keys, in case due to lag or other undefined behavior a key gets stuck.
send_resourcesSend resources to the client. Sends both game resources and browser assets.
set_macrosApply client macros. Has a system to prevent infighting bullshit. There's probably a cleaner way to do this but I'm tired.
setup_popupCreate the popup, and get it ready for generic use by giving it a background.
spawn_debug_full_crewDebug verb that spawns human crewmembers of each job type, gives them a mind and assigns the role, and injects them into the manifest, as if they were a "player".
strip_verbsStrip verbs from a client and it's mob.
toggle_walk_runVerb to toggle the walk or run status
uicloseverb
update_exp_listTallies up the exp for the playtime tracking and adds it to the global update list.
update_special_keybindsUpdates the keybinds for special keys

Var Details

AI_Interact

Used for admin AI interaction

account_age

Age of byond account in days

account_join_date

Date of byond account creation in ISO 8601 format

active_mousedown_item

Autoclick variable referencing the associated item.

admin_music_volume

Admin music volume, from 0 to 1.

adminhelptimerid

Client var used for returning the ahelp verb

area

Current area of the controlled mob

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

crew_manifest_delay

rate limiting for the crew manifest

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 updated to be the actual direction later on

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.

last_turn

last turn of the controlled mob, I think this is only used by mechs?

lastping

Last ping of the client

linked_discord_account

Linked Discord account ID. Null is valid if the bunker is disabled.

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_pointer_icon

Use our custom cursor

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

obj_window

Our object window datum. It stores info about and handles behavior for the object tab

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 istype(icon, /datum) and have it return true, you can't do istype(client, /datum), 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

playing_ambience

Keeps track of what ambience we are playing. Yeah i know it sucks.

prefs

Player preferences datum for the client

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

restricted_mode

If the client is currently under the restrictions of the interview system, or any other reason.

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( = list(/atom/movable/screen))

screen_texts

lazylist of screen_texts for this client, first in this list is the one playing

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_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

updating_macros

Semaphore for macro updates, so that they all complete and don't stomp over each other.

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:

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?):

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)

Move_object

force move the control_object of your client mob

Used in admin possession and called from the client Move proc ensures the possessed object moves and not the admin mob

Has no sanity other than checking density

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

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 .proc/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

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.

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_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 verb to set the target zone of a mob to the head

(bound to 8) - repeated presses toggles through head - eyes - mouth Hidden verb to target the head, 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_atmos_controls

Checks the atmos monitor, sensors, meters, vents, and injectors, and makes sure they dont overlap or do nothing.

check_can_move

Checks to see if an external factor is preventing movement, mainly grabbing.

Called by client/Move()

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

check_panic_bunker

Checks panic bunker status and applies restricted_mode if necessary. Returns TRUE if the client should be kicked.

check_timer_sources

A debug verb to check the sources of currently running timers

clear_all_maps

Clears all the maps of registered screen objects.

clear_map

Clears the map of registered screen objects.

close_popup

Closes a popup.

cmd_admin_create_centcom_report

Verb to open the create command report window and send command reports.

cmd_change_command_name

Verb to change the global command name.

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.

debug_spell_requirements

Debug verb for seeing at a glance what all spells have as set requirements

discord_generate_one_time_token

Generate a timebound token for discord verification

This uses the common word list to generate a three word random token, this token can then be fed to a discord bot that has access to the same database, and it can use it to link a ckey to a discord id, with minimal user effort

It returns the token to the calling proc, after inserting an entry into the discord_link table of the following form

(unique_id, ckey, null, the current time, the one time token generated)
the null value will be filled out with the discord id by the integrated discord bot when a user verifies

Notes:

Arguments:

Returns a string representing the one time token

discord_get_or_generate_one_time_token_for_ckey

Given a ckey as a string, look up the OTP token attached to that ckey, else generated new one

Arguments:

Returns: OTP token as string

Checks if the the given ckey has a valid discord link Returns: TRUE if valid, FALSE if invalid or missing

discord_lookup_ckey

Given a discord id as a string, look up the ckey attached to that account, if any

This gets the most recent entry from the discord_link table that is associated with this discord id snowflake

Arguments:

Returns: ckey as string

discord_lookup_id

Given a ckey, look up the discord user id attached to the user, if any

This gets the most recent entry from the discord_link table that is associated with the given ckey

Arguments:

discord_read_linked_id

Checks if the the given ckey has a valid discord link. This also updates the client's linked account var. Returns: TRUE if valid, FALSE if invalid or missing.

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

dsay

Our current command name to swap back to after sending the report. The sound we're going to play on report.

Find discord link entry by the passed in user ckey

This will look into the discord link table and return the last (most recent) entry that matches the given ckey

Arguments:

Returns a /datum/discord_link_record

Find discord link entry by the passed in user discord id

This will look into the discord link table and return the last (most recent) entry that matches the given id number

Arguments:

Returns a /datum/discord_link_record

Find discord link entry by the passed in user token

This will look into the discord link table and return the last (most recent) entry that matches the given one time token

Arguments:

Returns a /datum/discord_link_record

fix_tgui_panel

tgui panel / chat troubleshooting verb

forcerandomrotate

broadcaster[id_tag] = machine listened_to[atmos_chamber_entry] = bool TRUE means we have the corresponding id_tag being listened to by an atmos control computer. broadcasted_to[id_tag[1]] = bool TRUE means we have the corresponding id_tag being broadcasted to by a device, be it meter, sensors, etc. How many things dont fit the recognized subtypes. How many things have invalid (messes with our delimiter) tags. How many things have empty tags, invalids but much worse. How many things have duped id_tag. How many things are broadcasting without an atmos computer listening How many atmos computers are listening to an empty tag.

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_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

keyUp

Check if the key is short enough to even be a real key

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:

ooc

talking in OOC uses this

open_particle_editor

opens the particle editor UI for the in_atom object for this client

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.

requests

Verb for opening the requests manager panel

reset_held_keys

Manually clears any held keys, in case due to lag or other undefined behavior a key gets stuck.

Hardcoded to the ESC key.

send_resources

Send resources to the client. Sends both game resources and browser assets.

set_macros

Apply client macros. Has a system to prevent infighting bullshit. There's probably a cleaner way to do this but I'm tired.

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.

spawn_debug_full_crew

Debug verb that spawns human crewmembers of each job type, gives them a mind and assigns the role, and injects them into the manifest, as if they were a "player".

This spawns humans with minds and jobs, but does NOT make them 'players'. They're all clientles mobs with minds / jobs.

strip_verbs

Strip verbs from a client and it's mob.

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:

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) require macros Arguments: