movable
Vars | |
active_movement | A list containing arguments for Moved(). |
---|---|
affected_dynamic_lights | Lazylist to keep track on the sources of illumination. |
affecting_dynamic_lumi | Highest-intensity light affecting us, which determines our visibility. |
blocks_emissive | Either EMISSIVE_BLOCK_NONE, EMISSIVE_BLOCK_GENERIC, or EMISSIVE_BLOCK_UNIQUE |
buckle_dir | Bed-like behaviour, sets mob dir to buckle_dir if not set to BUCKLE_MATCH_DIR. If set to BUCKLE_MATCH_DIR, makes mob dir match ours. |
buckle_lying | Bed-like behaviour, forces mob.lying = buckle_lying if not set to NO_BUCKLE_LYING. |
buckle_prevents_pull | Whether things buckled to this atom can be pulled while they're buckled |
buckle_requires_restraints | Require people to be handcuffed before being able to buckle. eg: pipes |
buckled_mobs | The mobs currently buckled to this atom |
can_be_unanchored | Used for the calculate_adjacencies proc for icon smoothing. |
can_buckle | Whether the atom allows mobs to be buckled to it. Can be ignored in [/atom/movable/proc/buckle_mob()] if force = TRUE |
client_mobs_in_contents | contains every client mob corresponding to every client eye in this container. lazily updated by SSparallax and is sparse: only the last container of a client eye has this list assuming no movement since SSparallax's last fire |
contents_pressure_protection | The degree of pressure protection that mobs in list/contents have from the external environment, between 0 and 1 |
contents_thermal_insulation | The degree of thermal insulation that mobs in list/contents have from the external environment, between 0 and 1 |
currently_z_moving | is the mob currently ascending or descending through z levels? |
drift_handler | Datum that keeps all data related to zero-g drifting and handles related code/comsigs |
em_block | Internal holder for emissive blocker object, do not use directly use blocks_emissive |
explosion_block | Value used to increment ex_act() if reactionary_explosions is on How much we as a source block explosions by Will not automatically apply to the turf below you, you need to apply /datum/element/block_explosives in conjunction with this |
faction | The list of factions this atom belongs to |
generic_canpass | If false makes CanPass call CanPassThrough on this type instead of using default behaviour |
important_recursive_contents | an associative lazylist of relevant nested contents by "channel", the list is of the form: list(channel = list(important nested contents of that type)) each channel has a specific purpose and is meant to replace potentially expensive nested contents iteration. do NOT add channels to this for little reason as it can add considerable memory usage. |
inertia_force_weight | Object "weight", higher weight reduces acceleration applied to the object |
inertia_move_multiplier | Multiplier for inertia based movement in space |
inertia_moving | Are we moving with inertia? Mostly used as an optimization |
initial_language_holder | What language holder type to init as |
language_holder | Holds all languages this mob can speak and understand |
last_pushoff | The last time we pushed off something This is a hack to get around dumb him him me scenarios |
max_buckled_mobs | The maximum number of mob/livings allowed to be buckled to this atom at once |
max_grab | The strongest grab we can acomplish |
move_packet | Holds information about any movement loops currently running/waiting to run on the movable. Lazy, will be null if nothing's going on |
movement_type | In case you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc. I recommend you use the movetype_handler system and not modify this directly, especially for living mobs. |
moving_diagonally | 0: not doing a diagonal move. 1 and 2: doing the first/second step of the diagonal move |
moving_from_pull | attempt to resume grab after moving instead of before. |
pass_flags | Things we can pass through while moving. If any of this matches the thing we're trying to pass's [pass_flags_self], then we can pass through. |
pitch | The pitch adjustment that this movable uses when speaking. |
pressure_resistance | How much delta pressure is needed for us to move |
req_access | List of accesses needed to use this object: The user must possess all accesses in this list in order to use the object. Example: If req_access = list(ACCESS_ENGINE, ACCESS_CE)- then the user must have both ACCESS_ENGINE and ACCESS_CE in order to use the object. |
req_one_access | List of accesses needed to use this object: The user must possess at least one access in this list in order to use the object. Example: If req_one_access = list(ACCESS_ENGINE, ACCESS_CE)- then the user must have either ACCESS_ENGINE or ACCESS_CE in order to use the object. |
set_dir_on_move | Whether this atom should have its dir automatically changed when it moves. Setting this to FALSE allows for things such as directional windows to retain dir on moving without snowflake code all of the place. |
spatial_grid_key | String representing the spatial grid groups we want to be held in. acts as a key to the list of spatial grid contents types we exist in via SSspatial_grid.spatial_grid_categories. We do it like this to prevent people trying to mutate them and to save memory on holding the lists ourselves |
tk_throw_range | Max range this atom can be thrown via telekinesis |
tts_silicon_voice_effect | Set to anything other than "" to activate the silicon voice effect for TTS messages. |
verb_say | Use get_default_say_verb() in say.dm instead of reading verb_say. |
voice | The voice that this movable makes when speaking |
voice_filter | The filter to apply to the voice when processing the TTS audio message. |
Procs | |
CanEnterDisposals | Called to check if an atom can fit inside the diposal |
CanPassThrough | Returns true or false to allow src to move through the blocker, mover has final say |
Crossed | default byond proc that is deprecated for us in lieu of signals. do not call |
Hear | Called when this movable hears a message from a source. Returns TRUE if the message was received and understood. |
Moved | Called after a successful Move(). By this point, we've already moved. Arguments: |
Process_Spacemove | Called whenever an object moves and by mobs when they attempt to move themselves through space And when an object or action applies a force on src, see newtonian_move |
Uncross | Uncross() is a default BYOND proc that is called when something is going
to exit this atom's turf. It is prefered over Uncrossed when you want to
deny that movement, such as in the case of border objects, objects that allow
you to walk through them in any direction except the one they block
(think side windows). |
Uncrossed | default byond proc that is normally called on everything inside the previous turf a movable was in after moving to its current turf this is wasteful since the vast majority of objects do not use Uncrossed use connect_loc to register to COMSIG_ATOM_EXITED instead |
abstract_move | meant for movement with zero side effects. only use for objects that are supposed to move "invisibly" (like eye mobs or ghosts) if you want something to move onto a tile with a beartrap or recycler or tripmine or mouse without that object knowing about it at all, use this most of the time you want forceMove() |
add_blocked_language | Adds a language to the blocked language list. Use this over remove_language in cases where you will give languages back later. |
admin_teleport | Proc to hook user-enacted teleporting behavior and keep logging of the event. |
allowed | Returns TRUE if this mob has sufficient access to use this object |
apply_crit_crush | Should be where critcase effects are actually implemented. Use this to apply critcases. Args: |
become_active_storage | called when this movable becomes the parent of a storage component that is currently being viewed by a player. uses important_recursive_contents |
become_area_sensitive | allows this movable to know when it has "entered" another area no matter how many movable atoms its stuffed into, uses important_recursive_contents |
become_hearing_sensitive | allows this movable to hear and adds itself to the important_recursive_contents list of itself and every movable loc its in |
blended | What should The atom that blended an object do with it afterwards? Default behaviour is to delete it |
buckle_mob | Set a mob as buckled to src |
can_infuse | returns a boolean whether a machine occupant can be infused |
can_speak | Checks if our movable can currently speak, vocally, in general. Should NOT include feedback messages about why someone can or can't speak |
can_speak_language | Checks if atom can speak the language. |
can_z_move | Checks if the destination turf is elegible for z movement from the start turf to a given direction and returns it if so. Args: |
check_pulling | Checks if the pulling and pulledby should be stopped because they're out of reach. If z_allowed is TRUE, the z level of the pulling will be ignored.This is to allow things to be dragged up and down stairs. |
copy_languages | Copies all languages into the supplied atom/language holder. Source should be overridden when you do not want the language overwritten by later atom updates or want to avoid blocked languages. |
could_speak_language | Returns the result of tongue specific limitations on spoken languages. |
deadchat_plays | Adds the deadchat_plays component to this atom with simple movement commands. |
dust_animation | Animates turning into dust. Does not delete src afterwards, BUT it will become invisible (and grey), so ensure you handle that yourself |
faction_check_atom | Check if the other atom/movable has any factions the same as us. Defined at the atom/movable level so it can be defined for just about anything. |
fall_and_crush | Causes src to fall onto [target], crushing everything on it (including itself) with [damage] and a small chance to do a spectacular effect per entity (if a chance above 0 is provided). |
fall_and_crush_crit_rebate_table | Allows damage to be reduced on certain crit cases. Args: |
get_cell | Returns an atom's power cell, if it has one. Overload for individual items. Args |
get_crit_crush_chances | Returns a assoc list of (critcase -> num), where critcase is a critical define in crushing.dm and num is a weight. Use with pickweight to acquire a random critcase. |
get_default_say_verb | Gets the say verb we default to if no special verb is chosen. This is primarily a hook for inheritors, like human_say.dm's tongue-based verb_say changes. |
get_infusion_entry | returns /datum/infuser_entry that matches an item being used for infusion, returns a fly mutation on failure |
get_language_holder | Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one. |
get_random_spoken_language | Gets a random spoken language, useful for forced speech and such. |
get_random_understood_language | Gets a random understood language, useful for hallucinations and such. |
get_selected_language | Returns selected language, if it can be spoken, or finds, sets and returns a new selected language if possible. |
get_z_move_affected | Returns a list of movables that should also be affected when src moves through zlevels, and src. |
grant_all_languages | Grants every language. |
grant_language | Grants the supplied language and sets omnitongue true. |
grant_random_uncommon_language | Teaches a random non-common language and sets it as the active language |
has_buckled_mobs | Returns TRUE if there are mobs buckled to this atom and FALSE otherwise |
has_language | Checks if atom has the language. If spoken is true, only checks if atom can speak the language. |
is_buckle_possible | Simple helper proc that runs a suite of checks to test whether it is possible or not to buckle the target mob to src. |
is_user_buckle_possible | Simple helper proc that runs a suite of checks to test whether it is possible or not for user to buckle target mob to src. |
keybind_face_direction | A wrapper for setDir that should only be able to fail by living mobs. |
lose_active_storage | called when this movable's storage component is no longer viewed by any players, unsets important_recursive_contents |
lose_area_sensitivity | removes the area sensitive channel from the important_recursive_contents list of this and all nested locs containing us if there are no more source of the trait left |
lose_hearing_sensitivity | removes the hearing sensitivity channel from the important_recursive_contents list of this and all nested locs containing us if there are no more sources of the trait left since RECURSIVE_CONTENTS_HEARING_SENSITIVE is also a spatial grid content type, removes us from the spatial grid if the trait is removed |
mouse_buckle_handling | Does some typechecks and then calls user_buckle_mob |
move_from_pull | Called when src is being moved to a target turf because another movable (puller) is moving around. |
newtonian_move | Only moves the object if it's under no gravity Accepts the direction to move, if the push should be instant, and an optional parameter to fine tune the start delay Drift force determines how much acceleration should be applied. Controlled cap, if set, will ensure that if the object was moving slower than the cap before, it cannot accelerate past the cap from this move. |
onShuttleMove | Called on atoms to move the atom to the new location |
on_changed_z_level | Called when a movable changes z-levels. |
on_enter_storage | called when this atom is added into a storage item, which is passed on as S. The loc variable is already set to the storage item. |
on_exit_storage | called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called. |
point_at | Point at an atom |
post_crush_living | Exists for the purposes of custom behavior. Called directly after [crushed] is crushed. |
post_tilt | Exists for the purposes of custom behavior. Called directly after src actually rotates and falls over. |
pre_impact | Called before we attempt to call hitby and send the COMSIG_MOVABLE_IMPACT signal |
randomize_language_if_on_station | Randomizes our atom's language to an uncommon language if: |
relay_container_resist_act | called when a mob resists while inside a container that is itself inside something. |
remove_all_languages | Removes every language and sets omnitongue false. |
remove_blocked_language | Removes a language from the blocked language list. |
remove_language | Removes a single language. |
say | What makes things... talk. |
say_emphasis | Scans the input sentence for speech emphasis modifiers, notably |italics|, +bold+, and underline -mothblocks |
say_mod | Works out and returns which prefix verb the passed message should use. |
say_quote | This prock is used to generate a message for chat
Generates the says, "<span class='red'>meme</span>" part of the Grey Tider says, "meme" . |
setGrabState | Updates the grab state of the movable |
set_active_language | Sets the passed path as the active language Returns the currently selected language if successful, if the language was not valid, returns null |
set_anchored | Sets the anchored var and returns if it was successfully changed or not. |
set_currently_z_moving | Sets the currently_z_moving variable to a new value. Used to allow some zMovement sources to have precedence over others. |
set_light_range_power_color | Helper to change several lighting overlay settings. |
set_pulledby | Reports the event of the change in value of the pulledby variable. |
shuttleRotate | Base /atom/movable proc |
throw_at | If this returns FALSE then callback will not be called. |
translate_language | Modifies the message by comparing the languages of the speaker with the languages of the hearer. Called on the hearer. |
try_speak | Checks if our movable can speak the provided message, passing it through filters and spam detection. Does not call can_speak. CAN include feedback messages about why someone can or can't speak |
unbuckle_all_mobs | Call /atom/movable/proc/unbuckle_mob for all buckled mobs |
unbuckle_mob | Set a mob as unbuckled from src |
update_dynamic_luminosity | Keeps track of the sources of dynamic luminosity and updates our visibility with the highest. |
user_buckle_mob | Handles a mob buckling another mob to src and sends a visible_message |
user_unbuckle_mob | Handles a user unbuckling a mob from src and sends a visible_message |
Var Details
active_movement
A list containing arguments for Moved().
affected_dynamic_lights
Lazylist to keep track on the sources of illumination.
affecting_dynamic_lumi
Highest-intensity light affecting us, which determines our visibility.
blocks_emissive
Either EMISSIVE_BLOCK_NONE, EMISSIVE_BLOCK_GENERIC, or EMISSIVE_BLOCK_UNIQUE
buckle_dir
Bed-like behaviour, sets mob dir to buckle_dir if not set to BUCKLE_MATCH_DIR. If set to BUCKLE_MATCH_DIR, makes mob dir match ours.
buckle_lying
Bed-like behaviour, forces mob.lying = buckle_lying if not set to NO_BUCKLE_LYING.
buckle_prevents_pull
Whether things buckled to this atom can be pulled while they're buckled
buckle_requires_restraints
Require people to be handcuffed before being able to buckle. eg: pipes
buckled_mobs
The mobs currently buckled to this atom
can_be_unanchored
Used for the calculate_adjacencies proc for icon smoothing.
can_buckle
Whether the atom allows mobs to be buckled to it. Can be ignored in [/atom/movable/proc/buckle_mob()] if force = TRUE
client_mobs_in_contents
contains every client mob corresponding to every client eye in this container. lazily updated by SSparallax and is sparse: only the last container of a client eye has this list assuming no movement since SSparallax's last fire
contents_pressure_protection
The degree of pressure protection that mobs in list/contents have from the external environment, between 0 and 1
contents_thermal_insulation
The degree of thermal insulation that mobs in list/contents have from the external environment, between 0 and 1
currently_z_moving
is the mob currently ascending or descending through z levels?
drift_handler
Datum that keeps all data related to zero-g drifting and handles related code/comsigs
em_block
Internal holder for emissive blocker object, do not use directly use blocks_emissive
explosion_block
Value used to increment ex_act() if reactionary_explosions is on How much we as a source block explosions by Will not automatically apply to the turf below you, you need to apply /datum/element/block_explosives in conjunction with this
faction
The list of factions this atom belongs to
generic_canpass
If false makes CanPass call CanPassThrough on this type instead of using default behaviour
important_recursive_contents
an associative lazylist of relevant nested contents by "channel", the list is of the form: list(channel = list(important nested contents of that type)) each channel has a specific purpose and is meant to replace potentially expensive nested contents iteration. do NOT add channels to this for little reason as it can add considerable memory usage.
inertia_force_weight
Object "weight", higher weight reduces acceleration applied to the object
inertia_move_multiplier
Multiplier for inertia based movement in space
inertia_moving
Are we moving with inertia? Mostly used as an optimization
initial_language_holder
What language holder type to init as
language_holder
Holds all languages this mob can speak and understand
last_pushoff
The last time we pushed off something This is a hack to get around dumb him him me scenarios
max_buckled_mobs
The maximum number of mob/livings allowed to be buckled to this atom at once
max_grab
The strongest grab we can acomplish
move_packet
Holds information about any movement loops currently running/waiting to run on the movable. Lazy, will be null if nothing's going on
movement_type
In case you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc. I recommend you use the movetype_handler system and not modify this directly, especially for living mobs.
moving_diagonally
0: not doing a diagonal move. 1 and 2: doing the first/second step of the diagonal move
moving_from_pull
attempt to resume grab after moving instead of before.
pass_flags
Things we can pass through while moving. If any of this matches the thing we're trying to pass's [pass_flags_self], then we can pass through.
pitch
The pitch adjustment that this movable uses when speaking.
pressure_resistance
How much delta pressure is needed for us to move
req_access
List of accesses needed to use this object: The user must possess all accesses in this list in order to use the object. Example: If req_access = list(ACCESS_ENGINE, ACCESS_CE)- then the user must have both ACCESS_ENGINE and ACCESS_CE in order to use the object.
req_one_access
List of accesses needed to use this object: The user must possess at least one access in this list in order to use the object. Example: If req_one_access = list(ACCESS_ENGINE, ACCESS_CE)- then the user must have either ACCESS_ENGINE or ACCESS_CE in order to use the object.
set_dir_on_move
Whether this atom should have its dir automatically changed when it moves. Setting this to FALSE allows for things such as directional windows to retain dir on moving without snowflake code all of the place.
spatial_grid_key
String representing the spatial grid groups we want to be held in. acts as a key to the list of spatial grid contents types we exist in via SSspatial_grid.spatial_grid_categories. We do it like this to prevent people trying to mutate them and to save memory on holding the lists ourselves
tk_throw_range
Max range this atom can be thrown via telekinesis
tts_silicon_voice_effect
Set to anything other than "" to activate the silicon voice effect for TTS messages.
verb_say
Use get_default_say_verb() in say.dm instead of reading verb_say.
voice
The voice that this movable makes when speaking
voice_filter
The filter to apply to the voice when processing the TTS audio message.
Proc Details
CanEnterDisposals
Called to check if an atom can fit inside the diposal
CanPassThrough
Returns true or false to allow src to move through the blocker, mover has final say
Crossed
default byond proc that is deprecated for us in lieu of signals. do not call
Hear
Called when this movable hears a message from a source. Returns TRUE if the message was received and understood.
Moved
Called after a successful Move(). By this point, we've already moved. Arguments:
- old_loc is the location prior to the move. Can be null to indicate nullspace.
- movement_dir is the direction the movement took place. Can be NONE if it was some sort of teleport.
- The forced flag indicates whether this was a forced move, which skips many checks of regular movement.
- The old_locs is an optional argument, in case the moved movable was present in multiple locations before the movement.
- momentum_change represents whether this movement is due to a "new" force if TRUE or an already "existing" force if FALSE
Process_Spacemove
Called whenever an object moves and by mobs when they attempt to move themselves through space And when an object or action applies a force on src, see newtonian_move
Return FALSE to have src start/keep drifting in a no-grav area and TRUE to stop/not start drifting
Mobs should return 1 if they should be able to move of their own volition, see /client/proc/Move
Arguments:
- movement_dir - 0 when stopping or any dir when trying to move
- continuous_move - If this check is coming from something in the context of already drifting
Uncross
Uncross()
is a default BYOND proc that is called when something is going
to exit this atom's turf. It is prefered over Uncrossed
when you want to
deny that movement, such as in the case of border objects, objects that allow
you to walk through them in any direction except the one they block
(think side windows).
While being seemingly harmless, most everything doesn't actually want to use this, meaning that we are wasting proc calls for every single atom on a turf, every single time something exits it, when basically nothing cares.
This overhead caused real problems on Sybil round #159709, where lag attributed to Uncross was so bad that the entire master controller collapsed and people made Among Us lobbies in OOC.
If you want to replicate the old Uncross()
behavior, the most apt
replacement is [/datum/element/connect_loc
] while hooking onto
[COMSIG_ATOM_EXIT
].
Uncrossed
default byond proc that is normally called on everything inside the previous turf a movable was in after moving to its current turf this is wasteful since the vast majority of objects do not use Uncrossed use connect_loc to register to COMSIG_ATOM_EXITED instead
abstract_move
meant for movement with zero side effects. only use for objects that are supposed to move "invisibly" (like eye mobs or ghosts) if you want something to move onto a tile with a beartrap or recycler or tripmine or mouse without that object knowing about it at all, use this most of the time you want forceMove()
add_blocked_language
Adds a language to the blocked language list. Use this over remove_language in cases where you will give languages back later.
admin_teleport
Proc to hook user-enacted teleporting behavior and keep logging of the event.
allowed
Returns TRUE if this mob has sufficient access to use this object
- accessor - mob trying to access this object, !!CAN BE NULL!! because of telekiesis because we're in hell
apply_crit_crush
Should be where critcase effects are actually implemented. Use this to apply critcases. Args:
- crit_case: The chosen critcase, defined in crushing.dm.
- atom/atom_target: The target to apply the critical hit to. Cannot be null. Can be anything except /area.
Returns: TRUE if a crit case is successfully applied, FALSE otherwise.
become_active_storage
called when this movable becomes the parent of a storage component that is currently being viewed by a player. uses important_recursive_contents
become_area_sensitive
allows this movable to know when it has "entered" another area no matter how many movable atoms its stuffed into, uses important_recursive_contents
become_hearing_sensitive
allows this movable to hear and adds itself to the important_recursive_contents list of itself and every movable loc its in
blended
What should The atom that blended an object do with it afterwards? Default behaviour is to delete it
buckle_mob
Set a mob as buckled to src
If you want to have a mob buckling another mob to something, or you want a chat message sent, use user_buckle_mob instead. Arguments: M - The mob to be buckled to src force - Set to TRUE to ignore src's can_buckle and M's can_buckle_to check_loc - Set to FALSE to allow buckling from adjacent turfs, or TRUE if buckling is only allowed with src and M on the same turf. buckle_mob_flags- Used for riding cyborgs and humans if we need to reserve an arm or two on either the rider or the ridden mob. ignore_self - If set to TRUE, this will not do a check to see if the user can move into the turf of the mob and will just automatically mount them.
can_infuse
returns a boolean whether a machine occupant can be infused
can_speak
Checks if our movable can currently speak, vocally, in general. Should NOT include feedback messages about why someone can or can't speak
Used in various places to check if a movable is simply able to speak in general, regardless of OOC status (being muted) and regardless of what they're actually saying.
Checked AFTER handling of xeno channels. (I'm not sure what this comment means, but it was here in the past, so I'll maintain it here.)
allow_mimes - Determines if this check should skip over mimes. (Only matters for living mobs and up.) If FALSE, this check will always fail if the movable has a mind and is miming. if TRUE, we will check if the movable can speak REGARDLESS of if they have an active mime vow.
can_speak_language
Checks if atom can speak the language.
can_z_move
Checks if the destination turf is elegible for z movement from the start turf to a given direction and returns it if so. Args:
- direction: the direction to go, UP or DOWN, only relevant if target is null.
- start: Each destination has a starting point on the other end. This is it. Most of the times the location of the source.
- z_move_flags: bitflags used for various checks. See __DEFINES/movement.dm.
- rider: A living mob in control of the movable. Only non-null when a mob is riding a vehicle through z-levels.
check_pulling
Checks if the pulling and pulledby should be stopped because they're out of reach. If z_allowed is TRUE, the z level of the pulling will be ignored.This is to allow things to be dragged up and down stairs.
copy_languages
Copies all languages into the supplied atom/language holder. Source should be overridden when you do not want the language overwritten by later atom updates or want to avoid blocked languages.
could_speak_language
Returns the result of tongue specific limitations on spoken languages.
deadchat_plays
Adds the deadchat_plays component to this atom with simple movement commands.
Returns the component added. Arguments:
- mode - Either ANARCHY_MODE or DEMOCRACY_MODE passed to the deadchat_control component. See /datum/component/deadchat_control for more info.
- cooldown - The cooldown between command inputs passed to the deadchat_control component. See /datum/component/deadchat_control for more info.
dust_animation
Animates turning into dust. Does not delete src afterwards, BUT it will become invisible (and grey), so ensure you handle that yourself
faction_check_atom
Check if the other atom/movable has any factions the same as us. Defined at the atom/movable level so it can be defined for just about anything.
If exact match is set, then all our factions must match exactly
fall_and_crush
Causes src to fall onto [target], crushing everything on it (including itself) with [damage] and a small chance to do a spectacular effect per entity (if a chance above 0 is provided).
Args:
- turf/target: The turf to fall onto. Cannot be null.
- damage: The raw numerical damage to do by default.
- chance_to_crit: The percent chance of a critical hit occurring. Default: 0
- forced_crit_case: If given a value from crushing.dm, [target] and its contents will always be hit with that specific critical hit. Default: null
- paralyze_time: The time, in deciseconds, a given mob/living will be paralyzed for if crushed.
- crush_dir: The direction the crush is coming from. Default: dir of src to [target].
- damage_type: The type of damage to do. Default: BRUTE
- damage_flag: The attack flag for armor purposes. Default: MELEE
- rotation: The angle of which to rotate src's transform by on a successful tilt. Default: 90.
Returns: A collection of bitflags defined in crushing.dm. Read that file's documentation for info.
fall_and_crush_crit_rebate_table
Allows damage to be reduced on certain crit cases. Args:
- crit_case: The critical case chosen.
get_cell
Returns an atom's power cell, if it has one. Overload for individual items. Args
- /atom/movable/interface - the atom that is trying to interact with this cell
- mob/user - the mob that is holding the interface
get_crit_crush_chances
Returns a assoc list of (critcase -> num), where critcase is a critical define in crushing.dm and num is a weight. Use with pickweight to acquire a random critcase.
get_default_say_verb
Gets the say verb we default to if no special verb is chosen. This is primarily a hook for inheritors, like human_say.dm's tongue-based verb_say changes.
get_infusion_entry
returns /datum/infuser_entry that matches an item being used for infusion, returns a fly mutation on failure
get_language_holder
Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one.
get_random_spoken_language
Gets a random spoken language, useful for forced speech and such.
get_random_understood_language
Gets a random understood language, useful for hallucinations and such.
get_selected_language
Returns selected language, if it can be spoken, or finds, sets and returns a new selected language if possible.
get_z_move_affected
Returns a list of movables that should also be affected when src moves through zlevels, and src.
grant_all_languages
Grants every language.
grant_language
Grants the supplied language and sets omnitongue true.
grant_random_uncommon_language
Teaches a random non-common language and sets it as the active language
has_buckled_mobs
Returns TRUE if there are mobs buckled to this atom and FALSE otherwise
has_language
Checks if atom has the language. If spoken is true, only checks if atom can speak the language.
is_buckle_possible
Simple helper proc that runs a suite of checks to test whether it is possible or not to buckle the target mob to src.
Returns FALSE if any conditions that should prevent buckling are satisfied. Returns TRUE otherwise. Called from /atom/movable/proc/buckle_mob and /atom/movable/proc/is_user_buckle_possible. Arguments:
- target - Target mob to check against buckling to src.
- force - Whether or not the buckle should be forced. If TRUE, ignores src's can_buckle var and target's can_buckle_to
- check_loc - TRUE if target and src have to be on the same tile, FALSE if they are allowed to just be adjacent
is_user_buckle_possible
Simple helper proc that runs a suite of checks to test whether it is possible or not for user to buckle target mob to src.
Returns FALSE if any conditions that should prevent buckling are satisfied. Returns TRUE otherwise. Called from /atom/movable/proc/user_buckle_mob. Arguments:
- target - Target mob to check against buckling to src.
- user - The mob who is attempting to buckle the target to src.
- check_loc - TRUE if target and src have to be on the same tile, FALSE if buckling is allowed from adjacent tiles
keybind_face_direction
A wrapper for setDir that should only be able to fail by living mobs.
Called from [/atom/movable/proc/keyLoop], this exists to be overwritten by living mobs with a check to see if we're actually alive enough to change directions
lose_active_storage
called when this movable's storage component is no longer viewed by any players, unsets important_recursive_contents
lose_area_sensitivity
removes the area sensitive channel from the important_recursive_contents list of this and all nested locs containing us if there are no more source of the trait left
lose_hearing_sensitivity
removes the hearing sensitivity channel from the important_recursive_contents list of this and all nested locs containing us if there are no more sources of the trait left since RECURSIVE_CONTENTS_HEARING_SENSITIVE is also a spatial grid content type, removes us from the spatial grid if the trait is removed
- trait_source - trait source define or ALL, if ALL, force removes hearing sensitivity. if a trait source define, removes hearing sensitivity only if the trait is removed
mouse_buckle_handling
Does some typechecks and then calls user_buckle_mob
Arguments: M - The mob being buckled to src user - The mob buckling M to src
move_from_pull
Called when src is being moved to a target turf because another movable (puller) is moving around.
newtonian_move
Only moves the object if it's under no gravity Accepts the direction to move, if the push should be instant, and an optional parameter to fine tune the start delay Drift force determines how much acceleration should be applied. Controlled cap, if set, will ensure that if the object was moving slower than the cap before, it cannot accelerate past the cap from this move.
onShuttleMove
Called on atoms to move the atom to the new location
on_changed_z_level
Called when a movable changes z-levels.
Arguments:
- old_turf - The previous turf they were on before.
- new_turf - The turf they have now entered.
- same_z_layer - If their old and new z levels are on the same level of plane offsets or not
- notify_contents - Whether or not to notify the movable's contents that their z-level has changed. NOTE, IF YOU SET THIS, YOU NEED TO MANUALLY SET PLANE OF THE CONTENTS LATER
on_enter_storage
called when this atom is added into a storage item, which is passed on as S. The loc variable is already set to the storage item.
on_exit_storage
called when this atom is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
point_at
Point at an atom
Intended to enable and standardise the pointing animation for all atoms
Not intended as a replacement for the mob verb
post_crush_living
Exists for the purposes of custom behavior. Called directly after [crushed] is crushed.
Args:
- mob/living/crushed: The mob that was crushed.
- was_alive: Boolean. True if the mob was alive before the crushing.
post_tilt
Exists for the purposes of custom behavior. Called directly after src actually rotates and falls over.
pre_impact
Called before we attempt to call hitby and send the COMSIG_MOVABLE_IMPACT signal
randomize_language_if_on_station
Randomizes our atom's language to an uncommon language if:
- They are on the station Z level OR
- They are on the escape shuttle
relay_container_resist_act
called when a mob resists while inside a container that is itself inside something.
remove_all_languages
Removes every language and sets omnitongue false.
remove_blocked_language
Removes a language from the blocked language list.
remove_language
Removes a single language.
say
What makes things... talk.
- message - The message to say.
- bubble_type - The type of speech bubble to use when talking
- spans - A list of spans to attach to the message. Includes the atom's speech span by default
- sanitize - Should we sanitize the message? Only set to FALSE if you have ALREADY sanitized it
- language - The language to speak in. Defaults to the atom's selected language
- ignore_spam - Should we ignore spam checks?
- forced - What was it forced by? null if voluntary. (NOT a boolean!)
- filterproof - Do we bypass the filter when checking the message?
- message_range - The range of the message. Defaults to 7
- saymode - Saymode passed to the speech This is usually set automatically and is only relevant for living mobs.
- message_mods - A list of message modifiers, i.e. whispering/singing. Most of these are set automatically but you can pass in your own pre-say.
say_emphasis
Scans the input sentence for speech emphasis modifiers, notably |italics|, +bold+, and underline -mothblocks
say_mod
Works out and returns which prefix verb the passed message should use.
input - The message for which we want the verb. message_mods - A list of message modifiers, i.e. whispering/singing.
say_quote
This prock is used to generate a message for chat
Generates the says, "<span class='red'>meme</span>"
part of the Grey Tider says, "meme"
.
input - The message to be said spans - A list of spans to attach to the message. Includes the atom's speech span by default message_mods - A list of message modifiers, i.e. whispering/singing
setGrabState
Updates the grab state of the movable
This exists to act as a hook for behaviour
set_active_language
Sets the passed path as the active language Returns the currently selected language if successful, if the language was not valid, returns null
set_anchored
Sets the anchored var and returns if it was successfully changed or not.
set_currently_z_moving
Sets the currently_z_moving variable to a new value. Used to allow some zMovement sources to have precedence over others.
set_light_range_power_color
Helper to change several lighting overlay settings.
set_pulledby
Reports the event of the change in value of the pulledby variable.
shuttleRotate
Base /atom/movable proc
throw_at
If this returns FALSE then callback will not be called.
translate_language
Modifies the message by comparing the languages of the speaker with the languages of the hearer. Called on the hearer.
try_speak
Checks if our movable can speak the provided message, passing it through filters and spam detection. Does not call can_speak. CAN include feedback messages about why someone can or can't speak
Used in [proc/say] and other methods of speech (radios) after a movable has inputted some message. If you just want to check if the movable is able to speak in character, use [proc/can_speak] instead.
Parameters:
- message (string): the original message
- ignore_spam (bool): should we ignore spam?
- forced (null|string): what was it forced by? null if voluntary
- filterproof (bool): are we filterproof?
Returns: TRUE of FASE depending on if our movable can speak
unbuckle_all_mobs
Call /atom/movable/proc/unbuckle_mob for all buckled mobs
unbuckle_mob
Set a mob as unbuckled from src
The mob must actually be buckled to src or else bad things will happen. Arguments: buckled_mob - The mob to be unbuckled force - TRUE if we should ignore buckled_mob.can_buckle_to
update_dynamic_luminosity
Keeps track of the sources of dynamic luminosity and updates our visibility with the highest.
user_buckle_mob
Handles a mob buckling another mob to src and sends a visible_message
Basically exists to do some checks on the user and then call buckle_mob where the real buckling happens. First, checks if the buckle is valid and cancels if it isn't. Second, checks if src is on a different turf from the target; if it is, does a do_after and another check for sanity Finally, calls /atom/movable/proc/buckle_mob to buckle the target to src then gives chat feedback Arguments:
- M - The target mob/living being buckled to src
- user - The other mob that's buckling M to src
- check_loc - TRUE if src and M have to be on the same turf, false otherwise
user_unbuckle_mob
Handles a user unbuckling a mob from src and sends a visible_message
Basically just calls unbuckle_mob, sets fingerprint, and sends a visible_message about the user unbuckling the mob Arguments: buckled_mob - The mob/living to unbuckle user - The mob unbuckling buckled_mob