movable

Vars | |
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 FALSE, EMISSIVE_BLOCK_GENERIC, or EMISSIVE_BLOCK_UNIQUE |
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 |
demo_last_loc | Last location of the atom for demo recording purposes |
em_block | Internal holder for emissive blocker object, do not use directly use blocks_emissive |
generic_canpass | If false makes CanPass call CanPassThrough on this type instead of using default behaviour |
max_buckled_mobs | The maximum number of mob/livings allowed to be buckled to this atom at once |
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 reccomend you use the movetype_handler system and not modify this directly, especially for living mobs. |
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. |
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. |
tk_throw_range | Max range this atom can be thrown via telekinesis |
Procs | |
CanPassThrough | Returns true or false to allow src to move through the blocker, mover has final say |
CanReach | A backwards depth-limited breadth-first-search to see if the target is logically "in" anything adjacent to us. |
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 |
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. |
attacked_by | Called from /obj/item/proc/attack_obj and /obj/item/proc/attack if the attack succeeds |
become_area_sensitive | See traits.dm. Use this in place of ADD_TRAIT. |
buckle_mob | Set a mob as buckled to src |
can_speak_language | Checks if atom can speak the language. |
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. |
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. |
grant_all_languages | Grants every language. |
grant_language | Grants the supplied language and sets omnitongue true. |
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. |
mouse_buckle_handling | Does some typechecks and then calls user_buckle_mob |
newtonian_move | Only moves the object if it's under no gravity |
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 |
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. |
setGrabState | Updates the grab state of the movable |
set_anchored | Sets the anchored var and returns if it was sucessfully changed or not. |
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. |
unbuckle_all_mobs | Call /atom/movable/proc/unbuckle_mob for all buckled mobs |
unbuckle_mob | Set a mob as unbuckled from src |
update_atom_languages | Empties out the atom specific languages and updates them according to the current atoms language holder. As a side effect, it also creates missing language holders in the process. |
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
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 FALSE, EMISSIVE_BLOCK_GENERIC, or EMISSIVE_BLOCK_UNIQUE
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
demo_last_loc

Last location of the atom for demo recording purposes
em_block

Internal holder for emissive blocker object, do not use directly use blocks_emissive
generic_canpass

If false makes CanPass call CanPassThrough on this type instead of using default behaviour
max_buckled_mobs

The maximum number of mob/livings allowed to be buckled to this atom at once
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 reccomend you use the movetype_handler system and not modify this directly, especially for living mobs.
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.
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.
tk_throw_range

Max range this atom can be thrown via telekinesis
Proc Details
CanPassThrough
Returns true or false to allow src to move through the blocker, mover has final say
CanReach
A backwards depth-limited breadth-first-search to see if the target is logically "in" anything adjacent to us.
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 0 to have src start/keep drifting in a no-grav area and 1 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
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.
attacked_by
Called from /obj/item/proc/attack_obj and /obj/item/proc/attack if the attack succeeds
become_area_sensitive
See traits.dm. Use this in place of ADD_TRAIT.
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.
can_speak_language
Checks if atom can speak the language.
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.
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.
grant_all_languages
Grants every language.
grant_language
Grants the supplied language and sets omnitongue true.
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
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
newtonian_move
Only moves the object if it's under no gravity
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
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.
setGrabState
Updates the grab state of the movable
This exists to act as a hook for behaviour
set_anchored
Sets the anchored var and returns if it was sucessfully changed or not.
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.
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_atom_languages
Empties out the atom specific languages and updates them according to the current atoms language holder. As a side effect, it also creates missing language holders in the process.
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