atmospherics

Vars | |
can_unwrench | Check if the object can be unwrenched |
---|---|
connection_num | Store the smart pipes connections, used for pipe construction |
construction_type | The path of the pipe/device that will spawn after unwrenching it (such as pipe fittings) |
device_type | The type of the device (UNARY, BINARY, TRINARY, QUATERNARY) |
hide | This only works on pipes, because they have 1000 subtypes wich need to be visible and invisible under tiles, so we track this here |
initialize_directions | Bitflag of the initialized directions (NORTH | SOUTH | EAST | WEST) |
nodes | The lists of nodes that a pipe/device has, depends on the device_type var (from 1 to 4) |
on | Check if the device should be on or off (mostly used in processing for machines) |
paintable | Whether it can be painted |
pipe_color | The color of the pipe |
pipe_flags | The flags of the pipe/component (PIPING_ALL_LAYER | PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY | PIPING_CARDINAL_AUTONORMALIZE) |
pipe_state | icon_state as a pipe item |
pipe_vision_img | The image of the pipe/device used for ventcrawling |
piping_layer | What layer the pipe is in (from 1 to 5, default 3) |
rebuilding | Is the thing being rebuilt by SSair or not. Prevents list bloat |
vent_movement | The bitflag that's being checked on ventcrawling. Default is to allow ventcrawling and seeing pipes. |
Procs | |
GetInitDirections | Getter of initial directions |
SetInitDirections | Set the initial directions of the device (NORTH || SOUTH || EAST || WEST), called on New() |
atmosinit | Initialize for atmos devices |
can_be_node | Check if a node can actually exists by connecting to another machine called on atmosinit() Arguments: |
can_see_pipes | Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it. |
can_unwrench | Getter for can_unwrench |
check_connectable_color | check if the color are the same on both sides or if one of the pipes are grey or have the PIPING_ALL_COLORS flag returns TRUE if one of the parameters is TRUE Arguments: |
check_connectable_layer | check if the piping layer are the same on both sides or one of them has the PIPING_ALL_LAYER flag returns TRUE if one of the parameters is TRUE called by isConnectable() Arguments: |
check_init_directions | check if the initialized direction are the same on both sides (or if is a multiz adapter) returns TRUE or FALSE if the connection is possible or not Arguments: |
connection_check | Check the connection between two nodes |
deconstruct | Pipe deconstruction |
destroy_network | Called by the machinery disconnect(), custom for each type |
disconnect | Disconnects the nodes |
findConnecting | Find a connecting /obj/machinery/atmospherics in specified direction, called by relaymove() used by ventcrawling mobs to check if they can move inside a pipe in a specific direction Arguments: |
getNodeConnects | Getter for node_connects |
get_rebuild_targets | Returns a list of new pipelines that need to be built up |
getpipeimage | Getter for piping layer shifted, pipe colored overlays |
isConnectable | check if the piping layer and color are the same on both sides (grey can connect to all colors) returns TRUE or FALSE if the connection is possible or not Arguments: |
normalize_cardinal_directions | Setter for device direction |
nullifyNode | Called on destroy(mostly deconstruction) and when moving nodes around, disconnect the nodes from the network Arguments: |
paint | Called by the RPD.dm pre_attack(), overriden by pipes.dm Arguments: |
pipeline_expansion | Called on construction and when expanding the datum_pipeline, returns the nodes of the device |
replacePipenet | Similar to setPipenet() but instead of setting a network to a pipeline, it replaces the old pipeline with a new one, called by Merge() in datum_pipeline.dm |
returnPipenet | Called by addMember() in datum_pipeline.dm, returns the parent network the device is connected to |
returnPipenetAirs | Called by addMachineryMember() in datum_pipeline.dm, returns a list of gas_mixtures and assigns them into other_airs (by addMachineryMember) to allow pressure redistribution for the machineries. |
returnPipenets | Getter of a list of pipenets |
setPipenet | Called by build_pipeline() and addMember() in datum_pipeline.dm, set the network the device is connected to, to the datum pipeline it has reference |
setPipingLayer | setter for pipe layers |
shuttleRotate | Machine rotate procs |
unsafe_pressure_release | Pipe pressure release calculations |
update_layer | Update the layer in which the pipe/device is in, that way pipes have consistent layer depending on piping_layer |
Var Details
can_unwrench

Check if the object can be unwrenched
connection_num

Store the smart pipes connections, used for pipe construction
construction_type

The path of the pipe/device that will spawn after unwrenching it (such as pipe fittings)
device_type

The type of the device (UNARY, BINARY, TRINARY, QUATERNARY)
hide

This only works on pipes, because they have 1000 subtypes wich need to be visible and invisible under tiles, so we track this here
initialize_directions

Bitflag of the initialized directions (NORTH | SOUTH | EAST | WEST)
nodes

The lists of nodes that a pipe/device has, depends on the device_type var (from 1 to 4)
on

Check if the device should be on or off (mostly used in processing for machines)
paintable

Whether it can be painted
pipe_color

The color of the pipe
pipe_flags

The flags of the pipe/component (PIPING_ALL_LAYER | PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY | PIPING_CARDINAL_AUTONORMALIZE)
pipe_state

icon_state as a pipe item
pipe_vision_img

The image of the pipe/device used for ventcrawling
piping_layer

What layer the pipe is in (from 1 to 5, default 3)
rebuilding

Is the thing being rebuilt by SSair or not. Prevents list bloat
vent_movement

The bitflag that's being checked on ventcrawling. Default is to allow ventcrawling and seeing pipes.
Proc Details
GetInitDirections
Getter of initial directions
SetInitDirections
Set the initial directions of the device (NORTH || SOUTH || EAST || WEST), called on New()
atmosinit
Initialize for atmos devices
initialize the nodes for each pipe/device, this is called just after the air controller sets up turfs Arguments:
- list/node_connects - a list of the nodes on the device that can make a connection to other machines
can_be_node
Check if a node can actually exists by connecting to another machine called on atmosinit() Arguments:
- obj/machinery/atmospherics/target - the machine we are connecting to
- iteration - the current node we are checking (from 1 to 4)
can_see_pipes
Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it.
can_unwrench
Getter for can_unwrench
Called by wrench_act() to check if the device can be unwrenched, each device override this with custom code (like if on/operating can't unwrench) Arguments:
- mob/user - the mob doing the act
check_connectable_color
check if the color are the same on both sides or if one of the pipes are grey or have the PIPING_ALL_COLORS flag returns TRUE if one of the parameters is TRUE Arguments:
- obj/machinery/atmospherics/target - the machinery we want to connect to
check_connectable_layer
check if the piping layer are the same on both sides or one of them has the PIPING_ALL_LAYER flag returns TRUE if one of the parameters is TRUE called by isConnectable() Arguments:
- obj/machinery/atmospherics/target - the machinery we want to connect to
- given_layer - the piping_layer we are connecting to
check_init_directions
check if the initialized direction are the same on both sides (or if is a multiz adapter) returns TRUE or FALSE if the connection is possible or not Arguments:
- obj/machinery/atmospherics/target - the machinery we want to connect to
connection_check
Check the connection between two nodes
Check if our machine and the target machine are connectable by both calling isConnectable and by checking that the directions and piping_layer are compatible called by can_be_node() (for building a network) and findConnecting() (for ventcrawling) Arguments:
- obj/machinery/atmospherics/target - the machinery we want to connect to
- given_layer - the piping_layer we are checking
deconstruct
Pipe deconstruction
Called by wrench_act(), create a pipe fitting and remove the pipe
destroy_network
Called by the machinery disconnect(), custom for each type
disconnect
Disconnects the nodes
Called by nullifyNode(), it disconnects two nodes by removing the reference id from the node itself that called this proc Arguments:
- obj/machinery/atmospherics/reference - the machinery we are removing from the node connection
findConnecting
Find a connecting /obj/machinery/atmospherics in specified direction, called by relaymove() used by ventcrawling mobs to check if they can move inside a pipe in a specific direction Arguments:
- direction - the direction we are checking against
- prompted_layer - the piping_layer we are inside
getNodeConnects
Getter for node_connects
Return a list of the nodes that can connect to other machines, get called by atmosinit()
get_rebuild_targets
Returns a list of new pipelines that need to be built up
getpipeimage
Getter for piping layer shifted, pipe colored overlays
Creates the image for the pipe underlay that all components use, called by get_pipe_underlay() in components_base.dm Arguments:
- iconfile - path of the iconstate we are using (ex: 'icons/obj/atmospherics/components/thermomachine.dmi')
- iconstate - the image we are using inside the file
- direction - the direction of our device
- color - the color (in hex value, like #559900) that the pipe should have
- piping_layer - the piping_layer the device is in, used inside PIPING_LAYER_SHIFT
- trinary - if TRUE we also use PIPING_FORWARD_SHIFT on layer 1 and 5 for trinary devices (filters and mixers)
isConnectable
check if the piping layer and color are the same on both sides (grey can connect to all colors) returns TRUE or FALSE if the connection is possible or not Arguments:
- obj/machinery/atmospherics/target - the machinery we want to connect to
- given_layer - the piping_layer we are connecting to
normalize_cardinal_directions
Setter for device direction
Set the direction to either SOUTH or WEST if the pipe_flag is set to PIPING_CARDINAL_AUTONORMALIZE, called in New(), used mostly by layer manifolds
nullifyNode
Called on destroy(mostly deconstruction) and when moving nodes around, disconnect the nodes from the network Arguments:
- i - is the current iteration of the node, based on the device_type (from 1 to 4)
paint
Called by the RPD.dm pre_attack(), overriden by pipes.dm Arguments:
- paint_color - color that the pipe will be painted in (colors in hex like #4f4f4f)
pipeline_expansion
Called on construction and when expanding the datum_pipeline, returns the nodes of the device
replacePipenet
Similar to setPipenet() but instead of setting a network to a pipeline, it replaces the old pipeline with a new one, called by Merge() in datum_pipeline.dm
returnPipenet
Called by addMember() in datum_pipeline.dm, returns the parent network the device is connected to
returnPipenetAirs
Called by addMachineryMember() in datum_pipeline.dm, returns a list of gas_mixtures and assigns them into other_airs (by addMachineryMember) to allow pressure redistribution for the machineries.
returnPipenets
Getter of a list of pipenets
called in relaymove() to create the image for vent crawling
setPipenet
Called by build_pipeline() and addMember() in datum_pipeline.dm, set the network the device is connected to, to the datum pipeline it has reference
setPipingLayer
setter for pipe layers
Set the layer of the pipe that the device has to a new_layer Arguments:
- new_layer - the layer at which we want the piping_layer to be (1 to 5)
shuttleRotate
Machine rotate procs
unsafe_pressure_release
Pipe pressure release calculations
Throws the user when they unwrench a pipe with a major difference between the internal and environmental pressure. Called by wrench_act() before deconstruct() Arguments:
- mob_user - the mob doing the act
- pressures - it can be passed on from wrench_act(), it's the pressure difference between the enviroment pressure and the pipe internal pressure
update_layer
Update the layer in which the pipe/device is in, that way pipes have consistent layer depending on piping_layer