Space Station 13 - Modules - TypesVar Details - Proc Details

movable

Vars

active_movementA list containing arguments for Moved().
blocks_emissiveEither FALSE, [EMISSIVE_BLOCK_GENERIC], or EMISSIVE_BLOCK_UNIQUE
buckle_lyingBed-like behaviour, forces the mob to lie down if buckle_lying != -1
buckle_offsetThe Pixel_y to offset the buckled mob by
buckle_prevents_pullCan we pull the mob while they're buckled. Currently set to false on every movable
buckle_requires_restraintsRequire people to be handcuffed before being able to buckle. eg: pipes
buckled_mobsLazylist of the mobs buckled to this object.
can_be_unanchoredUsed for icon smoothing. Won't smooth if it ain't anchored and can be unanchored. Only set to true on windows
em_blockInternal holder for emissive blocker object, do not use directly use blocks_emissive
face_while_pullingFace towards the atom while pulling it
max_buckled_mobsThe max amount of mobs that can be buckled to this object. Currently set to 1 on every movable
orbiting_uidUID for the atom which the current atom is orbiting
scatter_distanceHow far (in pixels) should this atom scatter when created/dropped/etc. Does not apply to mapped-in items.
set_dir_on_moveWhether 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.
thought_bubble_imageIcon state for thought bubbles. Normally set by mobs.

Procs

Crosseddefault byond proc that is deprecated for us in lieu of signals. do not call
UncrossUncross() 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).
Uncrosseddefault 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_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()].
admin_FreezeCreated here as a base proc. Override as needed for any type of object or mob you want able to be frozen.
can_reachA backwards depth-limited breadth-first-search to see if the target is logically "in" anything adjacent to us.
create_point_bubbleCreate a bubble pointing at a particular icon and icon state. See args for create_point_bubble_from_atom.
create_point_bubble_from_atomCreate a point bubble towards a given item.
create_point_bubble_from_iconsCreate a point bubble towards a given item, from an icon/icon state.
create_point_bubble_from_pathSee above, this uses an uninstantiated path.
deadchat_playsAdds the deadchat_plays component to this atom with simple movement commands.
end_throwcalled after an items throw is ended.
fall_and_crushTip over this atom onto a turf, crushing things in its path.
key_loopKey loop to check for movement keys held and move in the desired direction.
on_changed_z_levelCalled when a movable changes z-levels.
on_crush_thinguseful callback for things that want special behavior on crush
orbitSet an atom to orbit around another one. This atom will follow the base atom's movement and rotate around it.
point_atPoint at an atom
scatter_atomUsed to scatter atoms so that multiple copies aren't all at the exact same spot.
set_glide_sizeThis proc is recursive, and calls itself to constantly set the glide size of an atom/movable
set_locUsed in shuttle movement and camera eye stuff. Primarily used to notify objects being moved by a shuttle/bluespace fuckup.
shove_impactcalled when a mob gets shoved into an items turf. false means the mob will be shoved backwards normally, true means the mob will not be moved by the disarm proc.
stop_deadchat_playsEasy way to remove the component when the fun has been played out
stop_orbitStop this atom from orbiting whatever it's orbiting.
tilt_overTip over an atom without too much fuss. This won't cause damage to anything, and just rotates the thing and (optionally) adds the component.
untiltUntilt a tilted object.

Var Details

active_movement

A list containing arguments for Moved().

blocks_emissive

Either FALSE, [EMISSIVE_BLOCK_GENERIC], or EMISSIVE_BLOCK_UNIQUE

buckle_lying

Bed-like behaviour, forces the mob to lie down if buckle_lying != -1

buckle_offset

The Pixel_y to offset the buckled mob by

buckle_prevents_pull

Can we pull the mob while they're buckled. Currently set to false on every movable

buckle_requires_restraints

Require people to be handcuffed before being able to buckle. eg: pipes

buckled_mobs

Lazylist of the mobs buckled to this object.

can_be_unanchored

Used for icon smoothing. Won't smooth if it ain't anchored and can be unanchored. Only set to true on windows

em_block

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

face_while_pulling

Face towards the atom while pulling it

max_buckled_mobs

The max amount of mobs that can be buckled to this object. Currently set to 1 on every movable

orbiting_uid

UID for the atom which the current atom is orbiting

scatter_distance

How far (in pixels) should this atom scatter when created/dropped/etc. Does not apply to mapped-in items.

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.

thought_bubble_image

Icon state for thought bubbles. Normally set by mobs.

Proc Details

Crossed

default byond proc that is deprecated for us in lieu of signals. do not call

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.

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 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()].

admin_Freeze

Created here as a base proc. Override as needed for any type of object or mob you want able to be frozen.

can_reach

A backwards depth-limited breadth-first-search to see if the target is logically "in" anything adjacent to us.

create_point_bubble

Create a bubble pointing at a particular icon and icon state. See args for create_point_bubble_from_atom.

create_point_bubble_from_atom

Create a point bubble towards a given item.

Arguments:

create_point_bubble_from_icons

Create a point bubble towards a given item, from an icon/icon state.

Arguments:

create_point_bubble_from_path

See above, this uses an uninstantiated path.

deadchat_plays

Adds the deadchat_plays component to this atom with simple movement commands.

Returns the component added. Arguments:

end_throw

called after an items throw is ended.

fall_and_crush

Tip over this atom onto a turf, crushing things in its path.

Arguments:

key_loop

Key loop to check for movement keys held and move in the desired direction.

on_changed_z_level

Called when a movable changes z-levels.

Arguments:

on_crush_thing

useful callback for things that want special behavior on crush

orbit

Set an atom to orbit around another one. This atom will follow the base atom's movement and rotate around it.

orbiter: atom which will be doing the orbiting radius: range to orbit at, radius of the circle formed by orbiting clockwise: whether you orbit clockwise or anti clockwise rotation_speed: how fast to rotate rotation_segments: the resolution of the orbit circle, less = a more block circle, this can be used to produce hexagons (6 segments) triangles (3 segments), and so on, 36 is the best default. pre_rotation: Chooses to rotate src 90 degress towards the orbit dir (clockwise/anticlockwise), useful for things to go "head first" like ghosts lock_in_orbit: Forces src to always be on A's turf, otherwise the orbit cancels when src gets too far away (eg: ghosts) force_move: If true, ghosts will be ForceMoved instead of having their .loc updated directly. orbit_layer: layer that the orbiter should be on. The original layer will be restored on orbit end.

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

scatter_atom

Used to scatter atoms so that multiple copies aren't all at the exact same spot.

set_glide_size

This proc is recursive, and calls itself to constantly set the glide size of an atom/movable

set_loc

Used in shuttle movement and camera eye stuff. Primarily used to notify objects being moved by a shuttle/bluespace fuckup.

shove_impact

called when a mob gets shoved into an items turf. false means the mob will be shoved backwards normally, true means the mob will not be moved by the disarm proc.

stop_deadchat_plays

Easy way to remove the component when the fun has been played out

stop_orbit

Stop this atom from orbiting whatever it's orbiting.

tilt_over

Tip over an atom without too much fuss. This won't cause damage to anything, and just rotates the thing and (optionally) adds the component.

Arguments:

untilt

Untilt a tilted object.