Space Station 13 - Modules - TypesVar Details - Proc Details

movable

Vars

blocks_emissiveEither FALSE, EMISSIVE_BLOCK_GENERIC, or EMISSIVE_BLOCK_UNIQUE
can_be_z_movedUsed for space ztransit stuff
client_mobs_in_contentscontains 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
em_blockInternal holder for emissive blocker object, do not use directly use blocks_emissive
floating_need_updateIf we were without gravity and another animation happened, the bouncing will stop, and we need to restart it in next life().
generic_canpassIf false makes CanPass call CanPassThrough on this type instead of using default behaviour
last_yelllast time we yelled
move_packetHolds information about any movement loops currently running/waiting to run on the movable. Lazy, will be null if nothing's going on
movement_typeIn 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_flagsThings 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.
spatial_grid_keyString 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
tooltipsShould we use tooltips, if the thing does not have the code implemented get_tooltip_data(), it will default to examine(src)
yell_powerHow loudly we yell

Procs

CanPassThroughReturns true or false to allow src to move through the blocker, mover has final say
Process_SpacemoveCalled 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
abstract_movemeant for movement with zero side effects. only use for objects that are supposed to move "invisibly" (like camera 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_languageAdds a language to the blocked language list. Use this over remove_language in cases where you will give languages back later.
admin_teleportProc to hook user-enacted teleporting behavior and keep logging of the event.
can_speak_languageChecks if atom can speak the language.
copy_languagesCopies 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_languageReturns the result of tongue specific limitations on spoken languages.
forceMoveFORCED MOVEMENT
get_language_holderGets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one.
get_random_spoken_languageGets a random spoken language, useful for forced speech and such.
get_random_understood_languageGets a random understood language, useful for hallucinations and such.
get_selected_languageReturns selected language, if it can be spoken, or finds, sets and returns a new selected language if possible.
get_tooltip_dataIf set, will return a list for the tooltip (that will also be put together in a Join()) However, if returning null, the tooltip will not be shown as #14942 changed it.
grant_all_languagesGrants every language.
grant_languageGrants the supplied language and sets omnitongue true.
has_languageChecks if atom has the language. If spoken is true, only checks if atom can speak the language.
keybind_face_directionA wrapper for setDir that should only be able to fail by living mobs.
mouse_buckle_handlingDoes some typechecks and then calls user_buckle_mob
newtonian_moveOnly moves the object if it's under no gravity
on_changed_z_levelCalled when a movable changes z-levels.
on_enter_storagecalled 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_storagecalled 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_atPoint at an atom
quoteless_say_quoteQuirky citadel proc for our custom sayverbs to strip the verb out. Snowflakey as hell, say rewrite 3.0 when?
recursive_pulled_glidesize_updateRecursively set glide size for atom's pulled things
relay_container_resist_actcalled when a mob resists while inside a container that is itself inside something.
remove_all_languagesRemoves every language and sets omnitongue false.
remove_blocked_languageRemoves a language from the blocked language list.
remove_languageRemoves a single language.
say_emphasisScans the input sentence for speech emphasis modifiers, notably |italics|, +bold+, and underline -mothblocks
setGrabStateUpdates the grab state of the movable
setMovetypeProc to modify the movement_type and hook behavior associated with it changing.
set_anchoredSets the anchored var and returns if it was sucessfully changed or not.
set_barkSets the vocal bark for the atom, using the bark's ID
set_pulledbyReports the event of the change in value of the pulledby variable.
throw_atIf this returns FALSE then callback will not be called.
update_atom_languagesEmpties 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.

Var Details

blocks_emissive

Either FALSE, EMISSIVE_BLOCK_GENERIC, or EMISSIVE_BLOCK_UNIQUE

can_be_z_moved

Used for space ztransit stuff

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

em_block

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

floating_need_update

If we were without gravity and another animation happened, the bouncing will stop, and we need to restart it in next life().

generic_canpass

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

last_yell

last time we yelled

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

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

tooltips

Should we use tooltips, if the thing does not have the code implemented get_tooltip_data(), it will default to examine(src)

yell_power

How loudly we yell

Proc Details

CanPassThrough

Returns true or false to allow src to move through the blocker, mover has final say

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 1 to stop/not start drifting

Mobs should return TRUE if they should be able to move of their own volition, see [/client/proc/Move]

Arguments:

abstract_move

meant for movement with zero side effects. only use for objects that are supposed to move "invisibly" (like camera 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.

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.

forceMove

FORCED MOVEMENT

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_tooltip_data

If set, will return a list for the tooltip (that will also be put together in a Join()) However, if returning null, the tooltip will not be shown as #14942 changed it.

Though no tooltips will be created for atoms that have tooltips = FALSE

grant_all_languages

Grants every language.

grant_language

Grants the supplied language and sets omnitongue true.

has_language

Checks if atom has the language. If spoken is true, only checks if atom can speak the language.

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_changed_z_level

Called when a movable changes z-levels.

Arguments:

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

quoteless_say_quote

Quirky citadel proc for our custom sayverbs to strip the verb out. Snowflakey as hell, say rewrite 3.0 when?

recursive_pulled_glidesize_update

Recursively set glide size for atom's pulled things

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_emphasis

Scans the input sentence for speech emphasis modifiers, notably |italics|, +bold+, and underline -mothblocks

setGrabState

Updates the grab state of the movable

This exists to act as a hook for behaviour

setMovetype

Proc to modify the movement_type and hook behavior associated with it changing.

set_anchored

Sets the anchored var and returns if it was sucessfully changed or not.

set_bark

Sets the vocal bark for the atom, using the bark's ID

set_pulledby

Reports the event of the change in value of the pulledby variable.

throw_at

If this returns FALSE then callback will not be called.

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.