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
Goof was supposed to do this in his pr but he never did. He approves of this change though.
Patches now only hold 40u. This is 1:1 with goon and makes them less of a direct upgrade from pills with a tiny delay.
Medkit patches now only hold 20u by default. As they are now, patches will heal you to full health with like one or two. That means a medkit is more useful than a doctor. This fixes that and is also 1:1 with goon.
Fixes failing to heal robotic bodypart with coil still using 1 coil.
Fixes not being able to eat with sechailer adjust down.
Fixes damage overlay being invisible.
Adds some game logs and warn admins when a player reset a RD console database.
The countdown was being blown about by atmos stuff, and then moved back
each tick. It was amusing to look at, but ultimately, is a bug that
needs fixing.
Numerous small fixes/changes/balances to devils.
Notable changes:
It now requires more souls to increase. It is now 3,7,12 souls, up from 3,6,9.
Devils now have extra rules, no coercing into signing contracts with violence, and no intentionally physically harming another devil.
Burial garment banishment now works on true devils. <--- Unreported issue, can I use that fix for the mergetoken?
Renamed all demon files to devil
Updated religious supplies to have burial garments.
Burial garments re-added to box/meta
Increased infernal fireball cooldown
Soulsellers can now use a pitchfork without being harmed.
Added new book crate, which includes a codex gigas to cargo.
R&D lathe cost slightly upped
Added new "chaos" mode which randomly tosses shit around ("""randomly""")
NEW INHAND SPRITES ARE IN
FIXED THE BUG THAT LEAD TO INFINITE RECURSION AND CRASHED MC