mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-31 12:41:46 +00:00
* Port /tg/ move manager, drift and jetpack components. * don't add go through newtonian movement if not moved to a turf * various cleans for blood drifts and mob speed * fix slow meteors * why on fuck's earth aren't speedbikes vehicles * style lint * also wtf * okay i'm an idiot * fix meaty ore speed and blood decal double stepping * fix not unbuckling pulled object occupants * don't bother dealing with immovable rods just yet * exclude bubblegum and vetus from move manager for now * fix issues related to null weightless blood icons * reset blood icon state properly * fuck it, we'll deal with mobs when basic mobs happen * break infinite loop in decal splat
235 lines
9.1 KiB
Plaintext
235 lines
9.1 KiB
Plaintext
/client
|
|
/// Client is casted to /datum so that we're able to use datum variables, search for clients through datums, and not need to duplicate code for GCing
|
|
parent_type = /datum
|
|
////////////////
|
|
//ADMIN THINGS//
|
|
////////////////
|
|
/// hides the byond verb panel as we use our own custom version
|
|
show_verb_panel = FALSE
|
|
var/datum/admins/holder = null
|
|
|
|
var/last_message = "" //contains the last message sent by this client - used to protect against copy-paste spamming.
|
|
var/last_message_count = 0 //contains a number of how many times a message identical to last_message was sent.
|
|
var/last_message_time = 0 //holds the last time (based on world.time) a message was sent
|
|
var/datum/pm_tracker/pm_tracker
|
|
|
|
/////////
|
|
//OTHER//
|
|
/////////
|
|
var/datum/preferences/prefs = null
|
|
var/skip_antag = FALSE //TRUE when a player declines to be included for the selection process of game mode antagonists.
|
|
///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
|
|
var/visual_delay = 0
|
|
var/move_delay = 1
|
|
var/moving = null
|
|
var/area = null
|
|
|
|
// why the hell do we track this when you can just file > reconnect to bypass it
|
|
var/time_died_as_mouse = null //when the client last died as a mouse
|
|
|
|
var/typing = FALSE // Prevents typing window stacking
|
|
|
|
var/adminhelped = 0
|
|
|
|
///////////////
|
|
//SOUND STUFF//
|
|
///////////////
|
|
|
|
var/ambience_playing = FALSE
|
|
|
|
////////////
|
|
//SECURITY//
|
|
////////////
|
|
|
|
/// Used for limiting the rate of topic sends by the client to avoid abuse
|
|
var/list/topiclimiter
|
|
|
|
// comment out the line below when debugging locally to enable the options & messages menu
|
|
control_freak = CONTROL_FREAK_ALL
|
|
|
|
var/ssd_warning_acknowledged = FALSE
|
|
|
|
////////////////////////////////////
|
|
//things that require the database//
|
|
////////////////////////////////////
|
|
var/player_age = "--" //So admins know why it isn't working - Used to determine how old the account is - in days.
|
|
var/list/related_accounts_ip = list() //So admins know why it isn't working - Used to determine what other accounts previously logged in from this ip
|
|
var/list/related_accounts_cid = list() //So admins know why it isn't working - Used to determine what other accounts previously logged in from this computer id
|
|
|
|
preload_rsc = 0 // This is 0 so we can set it to an URL once the player logs in and have them download the resources from a different server.
|
|
|
|
var/atom/movable/screen/click_catcher/void
|
|
|
|
var/ip_intel = "Disabled"
|
|
|
|
var/datum/click_intercept/click_intercept = null
|
|
|
|
/// Time when the click was intercepted
|
|
var/click_intercept_time = 0
|
|
|
|
//datum that controls the displaying and hiding of tooltips
|
|
var/datum/tooltip/tooltips
|
|
|
|
// Overlay for showing debug info
|
|
var/atom/movable/screen/debugtextholder/debug_text_overlay
|
|
|
|
/// Persistent storage for the flavour text of examined atoms.
|
|
var/list/description_holders = list()
|
|
|
|
// Donator stuff.
|
|
var/donator_level = 0
|
|
|
|
// If set to true, this client can interact with atoms such as buttons and doors on top of regular machinery interaction
|
|
var/advanced_admin_interaction = FALSE
|
|
|
|
/// Messages currently seen by this client
|
|
var/list/seen_messages
|
|
|
|
/// list of tabs containing spells and abilities
|
|
var/list/spell_tabs = list()
|
|
|
|
/// our current tab
|
|
var/stat_tab
|
|
|
|
/// list of all tabs
|
|
var/list/panel_tabs = list()
|
|
|
|
// Last world.time that the player tried to request their resources.
|
|
var/last_ui_resource_send = 0
|
|
|
|
/// If true, client cannot ready up, late join, or observe. Used for players with EXTREMELY old byond versions.
|
|
var/version_blocked = FALSE
|
|
|
|
/// Date the client registered their BYOND account on
|
|
var/byondacc_date
|
|
/// Days since the client's BYOND account was created
|
|
var/byondacc_age = 0
|
|
|
|
|
|
// Do not attempt to merge these vars together. They are for different things
|
|
/// Last world.time that a PM was send to discord by a player
|
|
var/last_discord_pm_time = 0
|
|
|
|
/// Last world/time that a PM was sent to the player by an admin
|
|
var/received_discord_pm = -99999 // Yes this super low number is intentional
|
|
|
|
///world.time they connected
|
|
var/connection_time
|
|
|
|
/// Has the client accepted the TOS about data collection and other stuff
|
|
var/tos_consent = FALSE
|
|
|
|
/// Is the client watchlisted
|
|
var/watchlisted = FALSE
|
|
|
|
/// Client's pAI save
|
|
var/datum/pai_save/pai_save
|
|
|
|
/// List of the clients CUIs
|
|
var/list/datum/custom_user_item/cui_entries = list()
|
|
|
|
/// The client's job ban holder
|
|
var/datum/job_ban_holder/jbh = new()
|
|
|
|
/// Input datum, what the client is pressing.
|
|
var/datum/input_data/input_data = new()
|
|
/// The client's active keybindings, depending on their active mob.
|
|
var/list/active_keybindings = list()
|
|
/// The client's movement keybindings to directions, which work regardless of modifiers.
|
|
var/list/movement_kb_dirs = list()
|
|
|
|
/// Used to make a special mouse cursor, this one for mouse up icon
|
|
var/mouse_up_icon = null
|
|
/// Used to make a special mouse cursor, this one for mouse up icon
|
|
var/mouse_down_icon = null
|
|
/// Used to override the mouse cursor so it doesnt get reset
|
|
var/mouse_override_icon = null
|
|
|
|
/// Autoclick list of two elements, first being the clicked thing, second being the parameters.
|
|
var/list/atom/selected_target[2]
|
|
/// Used in MouseDrag to preserve the original mouse click parameters
|
|
var/mouseParams = ""
|
|
/// Used in MouseDrag to preserve the last mouse-entered location.
|
|
var/mouse_location_UID
|
|
/// Used in MouseDrag to preserve the last mouse-entered object.
|
|
var/mouse_object_UID
|
|
/// When we started the currently active drag
|
|
var/drag_start = 0
|
|
/// The params we passed at the start of the drag, in list form
|
|
var/list/drag_details
|
|
|
|
/// The client's currently moused over datum, limited to movable and stored as UID
|
|
var/atom/movable/moused_over
|
|
|
|
/// 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
|
|
/// 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
|
|
var/list/recent_examines
|
|
|
|
/// Used to throw an admin warning if someone used a mouse macro. Also stores the world time so we can send funny noises to them
|
|
var/next_mouse_macro_warning
|
|
|
|
/*
|
|
DEPRECIATED VIEWMODS
|
|
*/
|
|
/// Was used to handle view modifications. Now only used for a mecha module. Please just edit the string in the future
|
|
var/list/ViewMods = list()
|
|
/// Stores the viewmod we set using this system. Only used for a mecha module
|
|
var/ViewModsActive = FALSE
|
|
/// Stores the icon size we use for skins. As the server has control freak enabled, this is always static
|
|
var/ViewPreferedIconSize = 0
|
|
|
|
/// Basically a local variable on a client datum. Used when setting macros and nowhere else
|
|
var/list/macro_sets
|
|
|
|
/// List of all asset filenames sent to this client by the asset cache, along with their assoicated md5s
|
|
var/list/sent_assets = list()
|
|
/// List of all completed blocking send jobs awaiting acknowledgement by send_asset
|
|
var/list/completed_asset_jobs = list()
|
|
|
|
/*
|
|
ASSET SENDING
|
|
*/
|
|
/// The ID of the last asset job
|
|
var/last_asset_job = 0
|
|
/// The ID of the last asset job that was properly finished
|
|
var/last_completed_asset_job = 0
|
|
|
|
/*
|
|
PARALAX RELATED VARIABLES
|
|
*/
|
|
/// List of parallax layers a client is viewing. Accessed when paralax is updated
|
|
var/list/parallax_layers
|
|
/// A cached list of available parallax layers. This may potentially be changeable to a static variable. Updated upon changing parallax prefs
|
|
var/list/parallax_layers_cached
|
|
/// Added to parallax layers when parallax settings are changed
|
|
var/static/list/parallax_static_layers_tail = newlist(/atom/movable/screen/parallax_pmaster, /atom/movable/screen/parallax_space_whitifier)
|
|
/// Used with parallax to update the parallax offsets when the subsystem fires. Compared to the clients Eye variable
|
|
var/atom/movable/movingmob
|
|
/// Used with parallax to grab the offset needed. Uses the X and Y coords of the turf stored here
|
|
var/turf/previous_turf
|
|
/// Stored world.tim of the last parallax update. Used to make sure parallax isn't updated too often
|
|
var/last_parallax_shift
|
|
/// Deciseconds of added delay to parallax by client preferences
|
|
var/parallax_throttle = 0
|
|
/// The direction parallax will be moved it. References parallax_move_direction on areas
|
|
var/parallax_movedir = 0
|
|
/// The amount of parallax layers that will exist on your screen. Affected by the parallax preference
|
|
var/parallax_layers_max = 4
|
|
/// Handles how parallax loops in situations like shuttles leaving. Stores the timer that handles that
|
|
var/parallax_animate_timer
|
|
/// Used with the camera console to clear out the screen objects it adds to the client when the console is deleted
|
|
var/list/screen_maps = list()
|
|
|
|
|
|
/// Assigned say modal of the client
|
|
var/datum/tgui_say/tgui_say
|
|
|
|
/// Our object window datum. It stores info about and handles behavior for the object tab
|
|
var/datum/object_window_info/obj_window
|
|
|
|
/// The current fullscreen state for /client/toggle_fullscreen()
|
|
var/fullscreen = FALSE
|
|
|
|
/// Cache of MD5'd UIDs. This is to stop clients from poking at object UIDs and being exploity with them
|
|
var/list/m5_uid_cache = list()
|