* Reorganize the mapping code
* Finish this up
* Reee line endings
* FUCKING LINE ENDINGS
* LINARU ENDARU
* >PLS SET REPO LINE ENDINGS
* Comments
* Hoisted by my own travis.yml changes
* adds a turf per ms counter to air's stat page
I'd use the turf cost var but its broken and i don't want to take the time to fix that because it would involve a macro trick to make properly timing shit much easier on subsystems and then applying this to every subsystem.
* Update air.dm
* Moves turf New calls to Initialize
* Much faster
* Fixed
* Makes add_to_active queue up before SSair is initialized
* Remove active queuing
* And the proc
* Move the check
* Fix some shit
* F U C K T U R F S
* Necessary
* Unnecessary
* SHUT THE FUCK UP
* Panic mode hurts the code
* Such a
* Simple answer
* A well thought out plan
* /turf/open optimization
* Undo the warning suppression now that it's fixed
* Fixes lava typecaching badly
* Added late initialization
* Make the atmos offenders late initialize
* Add extra logging
* GLABALS
* Better solution for trying to activate w/o air
* Further base calling copypasta
* Gates, guards, gorans
* Small doc fix
* Do the faster
* T U R F V A R P E R S I S T E N C E
* The solution is always so simple
* The (hopefully) final nail in the coffin
Originally I wanted to just say that such a thing is unsupported, but since byond can just randomly decide to insert a bunch of sleeps into a loop, I can't make that requirement on subsystems, so its now supported.
Basically, they key difference between StonedMC and CarnMC is that when multiple ticks want to run at the same byond tick, we divvy up the tick between the subsystems, rather then allow one subsystem to hog it all.
The key difference between StonedMC and GoonPS is that we allow the subsystems to tell us how to divvy up the tick using flags and priority.
The new SS_ flags allows us to select behaviors that used to be piggybacked as side effects of dynamic wait or default but sometimes unneeded behavior.
Dynamic wait is 100% gone, lower priority and SS_BACKGROUND are better more refined ways of doing this when combined with MC_TICK_CHECK
I have by design never looked at the inners of goonPS, so this is all original code but I know it uses two loops because of comments by goon devs on reddit threads, that design didn't make sense before, but when I can tell a SS how much of a byond tick it is allowed to have, knowing how many need to run this tick is helpful I also know a bit more about how it works from piecing together comments in #vgstation.
Detailed list of changes:
Subsystems now have flags, allowing fine grain control over things like rather or not it processes, inits, rather it's wait is how long between runs (post run timing) or how long between starts, and rather or not late fires should cause the next fire to be earlier.
Mc now has two loops One loop handles queuing shit, one loop handles running shit.
MC now splits up tick allotment rather than first come first serve Subsystems can even request a bigger share using higher priorities. (It will even resume subsystems it paused if other subsystems hadn't used as much as it predicted they might need)
Default fps is now 20 This is related enough to the MC and it's a change that's really long since over due
All code oddities are most likely to be necessities to lower overhead on the mc since it runs every tick
Excited groups will be much more aggressive about averaging out their turfs when air movement within has slowed down.
Excited groups will be less aggressive about sleeping simi-idle turfs to prevent deadlocking
Sleeping thresholds lowered.
SSair will now tick_check all loops, not just active turf processing.
This setup allows subsystems to pause themselves until next mc fire if they are about to go over a tick, and resume on the next mc tick
It also makes it so we prioritize running subsystems we skipped because there wasn't enough time in the current tick to run them based on their avg tick usage. (as well as subsystems paused mid way thru)
Adds a macro for adding this to non-mc procs. just drop it in the loop. There is a define version as well for if checks if you want to know if you just slept to avoid lag.
This is all inside #if DM_VERSION defines, so once i test that 509 still works to compile/test this should be good to merge
It was initializing turfs after atmos machinery but some of those machines expect turfs to be initialized before they initialize.
Also fixes it clearing all active turfs and not just the one in the specified zlevel in turf initialization.