Baystation12/Baystation12 — pull request #5362 by Loganbacca (2014-06-25 13:11:16+00:00)
Title: Atmos Overhaul - Phase 1

So this originally started out as a project to add omni devices (user configurable gas filters and mixers), but after seeing [this PR](https://github.com/tgstation/-tg-station/pull/3611) on /tg/ I've decided to take this project a step further and aim for the same thing.

While this PR is no where near the final goal, I did use it to prototype a number of things that will be needed for the rest of the overhaul (icon caching, overlays, pipe colour standardization, etc.).

### Features
Adds omni devices. These are user configurable gas filters and mixers that can have inputs/outputs on any side. They dynamically generate their icon via overlays sourced from a shared image cache. They visually connect to pipes and will colour the connecting icon appropriately. If a pipe is painted later, the omni device can be clicked on with the pipe painter to update the connected pipe ends. All inputs and outputs can be configured to any direction.
##### Gas Mixers
> These can have either two or three inputs, and one output. The input ratios auto balance, and are lockable to stop auto balancing if so desired. If an input is balance locked it will attempt to balance all remaining unlocked inputs (if any).

![Omni gas mixer](https://cloud.githubusercontent.com/assets/6357112/3385228/9647994e-fc67-11e3-876f-5578c591aa26.png)
##### Gas Filters
> These have one input, one output, and either one or two filter outputs. The following gases can be filtered: Oxygen, Nitrogen, Carbon Dioxide, Phoron, and Nitrous Oxide. The filter will stop if any of the outputs reach the target pressure.

![Omni gas filter](https://cloud.githubusercontent.com/assets/6357112/3385235/bbbf6e68-fc67-11e3-8989-64467ea53eff.png)

They are configured through a NanoUI interface:
![Omni gas mixer interface](https://cloud.githubusercontent.com/assets/6357112/3385263/28ad4bda-fc68-11e3-8e7a-039da9c88d6c.png)

They can be mapped in by setting the "tag_*direction*" (*i.e. tag_north*) variables to one of the following filter names (or numeric codes) in Dream Maker:
```
Mode	variable name	numeric code
Disabled	ATM_NONE	0
Input	ATM_INPUT	1
Output	ATM_OUTPUT	2

//The following will only work on the gas filter
Oxygen	ATM_O2	3
Nitrogen	ATM_N2	4
CO2	ATM_CO2	5
Phoron	ATM_P	6
N2O	ATM_N2O	7
```

### Other Fixes
- Cleans up silent pipe deleting (now creates a loose pipe item where the pipe section was)
- Allows pipe painters to paint pipes that have one end disconnected
- Removes OOC message from IC feedback when a pipe has nothing to connect to