Addresses #2914, adds renaming. Unfortunately does not work properly as it should be readding the vents/scrubbers to the new area as well as renaming all the machinery properly from space.
Fixes#2864Fixes#4078
They would radiate and make ultra cold gas under 10 moles, 10 moles is about 10kpa at 20C, which is simply way too high.
They will radiate at less than .001 only, less than the standard moles for a standard 'gasless' tile. And to similarly limit unnecessary gas exchange procs being called pointlessly, will only intermix with at least 1 mole in the atmosphere.
Vents & scrubbers now have their ID changed on the area's vent & scrubber info, and get removed (and have their name set to "vent Pump"/"Air scrubber") if their frequency gets changed to something not 1439
Removed update_values(). RIP, shine on you CPU diamond.
Removed get_moles_by_id and get_archived_moles_by_id, all moles are now accessed directly to reduce call cost.
Added set_temperature and set_volume procs which recalc pressure when temperature or pressure change.
Heat_capacity is now a var updated when gases update.
Modified adjust_gas to use set_gas, modified set_gas to alter heat_capacity, total_moles, and pressure as needed.
Included:
-The process lists use |= instead of += due to the increased stability of the former against double additions.
-Atmospherics machinery is moved under the pipenet processing.
-Modified the atmospherics processes to return 1 when theyve done something, and 0 if they aint done jack shit. Then called scheck() if they return 1, possibly reducing unnecessary scheck calls while still managing to smooth out the atmospherics processing.
-If a powernet happens to get rebuilt by either powernets or power machinery scheck() is also called
Moved gas_mixture gas numbers to a list which is connected to a global gas_datum list, like with reagents.
Modified some maths procs to be more sane, added adjust_gas and set_gas to help with processing.
Added a modular system for gas flags - gases can now be marked as fuel and oxidiser with a flag, logged with a flag, scanned with a flag, etc.
Changed scrubbers to use a list of scrubbing gases rather than a set of vars.
Made miners and xenoarch effects more sensible - they now produce gas by ID, not manually.
Made turfs' starting gases into a list, removed turf gas number vars.
Ventcrawling now correctly starts from any pipe, not just vents and scrubbers.
This has allowed me to fix moving between pipelines : the images are now correctly updated when you change pipes.
Added a small sanity to remove_ventcrawl().
Also edited another thing that Pomf never got around to.
Applies datum pooling to pipelines and pipenetwork for major performance improvements in their deletion.
These improvements should be especially noticeable in anything that deletes pipelines/networks once per tick, ie singulo narsie and supermatter
Removes the wires qdel, just why
Span class fixes for all of atmospherics files.
Calls new ..() for dice, adds minsides for admins to play with
Fixes bug where people would magically change the size of objects using wrapping paper
The last time I dealt with mirrors, the implementation got fudged. Some were flipped but had the same dirs, some were flipped and had the opposite dirs, etc.
This fixes all that by making all mirrors have the same dirs, but different node positions.
Fixes#3140.
Tanks are now unaries, not pipes.
Portable connectors are now unaries, not their own type.
Valves are now binaries, T-Valves are now trinaries.
Pipes as much as possible now use the general attackby code.
Slight changes to pooling code.
Removed loads of duplicate code that existed for no real reason.
T-Valves now come in manual and digital and mirrored under those types, not the other way around.
Mirrored connecting sprites for T-Valves should show up properly now.
Never again.
* Adds "atmos" subject to Investigate.
* Massive overhaul of Investigate, making it more modular.
* Also replaced investigate_log with investigation_log, with swapped arguments (which makes more sense).