When chemical grenade being activated on any unsimulated turf (for example a space turf), smokeFlow() starts infinite while loop, overloading the server.
With the only one unsimulated turf in pending list while() loop can't finish itself and for() loop can't start.
This fix makes chemical grenades being able to explode in space without server going in infinite loop.
Also fixed issue with smoke being able to pass through glass walls with help of c_airblock() proc. That's the best solution I could come up with.
Zone check code was useless because every single turf besides walls (which allready checked) and unsimulated turfs have it, making algorithm believe that turfs behind the glass wall are being reachable by chemsmoke.
I don't know if it was intended not to spread smoke in airless or unsimulated areas, but a bunch of airless simulated floor tiles in space is good enough for this algorithm to start spreading smoke around.
P.S. this algorithm is good for large, open areas and horrible in narrow maint tunnels. It is creating only a single cloud of smoke for 50/50/50 recipie in 1 tile wide tunnel.
Sneaky second CE-door returned. It's gone now.
Moved disposal-to-space sign in Xenoflora to the disposal unit.
The doors of the emergency storages on the starboard side of the station no longer imply that they are maintenance sections but, indeed, emergency storages.
Added oil, webs, dirt, and clutter randomly about the maintenance tunnels.
There was an issue, when APC with removed cell in area was powered at power_restore() proc, making area allways powered despite APC was not working.
Removed part of code which unpowers area directly, bypassing the APC process code. This makes grid_check event less laggy and smooth. Downside is lights not being shut down immediatly.
AI SMES still not being affected after this fix.
Updated surgery helper to account for that, also cleaned it up a little with replacing all the possible causes of lying down with just lying check. It's all checked in can_move already.
Moved code in processing so that ORGAN_DESTROYED limbs won't process wounds and chemicals. They still need to process once to actually fall off (too lazy to change that)
Made dropping limbs remove all wounds and germs. Instead, one big wound is spawned on parent organ. Damage depends on the organ.
Removed missing limbs bleeding on their own, since that's what that wound is for now.
They still would ache until surgically mended anyway.
Fixed possible issue with amputation not fixing the rotten limb.