From 8ecfd565409c9f155e6f315f56c177130e040ddb Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Wed, 8 Jan 2014 21:36:03 -0700 Subject: [PATCH] Some turf cleanup and the like. Trace gases are now properly handled by ZAS on world load. Fixes #2485 --- code/ATMOSPHERICS/datum_pipeline.dm | 4 --- code/ZAS/ZAS_Turfs.dm | 34 +++++++++++------------- code/ZAS/ZAS_Zones.dm | 18 +++++++++---- code/game/turfs/simulated/floor_types.dm | 2 +- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index 5ade345e08..3501b606d5 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -149,10 +149,6 @@ datum/pipeline air.merge(air_sample) //turf_air already modified by equalize_gases() - if(istype(target) && !target.processing) - if(target.air) - if(target.air.check_tile_graphic()) - target.update_visuals(target.air) if(network) network.update = 1 diff --git a/code/ZAS/ZAS_Turfs.dm b/code/ZAS/ZAS_Turfs.dm index 12ac2df244..468d321094 100644 --- a/code/ZAS/ZAS_Turfs.dm +++ b/code/ZAS/ZAS_Turfs.dm @@ -39,8 +39,6 @@ /turf/simulated/var/tmp/datum/gas_mixture/air -/turf/simulated/var/tmp/processing = 1 - /turf/simulated/var/tmp/air_check_directions = 0 //Do not modify this, just add turf to air_master.tiles_to_update /turf/simulated/var/tmp/unsim_check_directions = 0 //See above. @@ -61,8 +59,6 @@ overlays.Add(slmaster) /turf/simulated/New() - ..() - if(!blocks_air) air = new @@ -84,6 +80,8 @@ if(istype(target)) air_master.tiles_to_update |= target + . = ..() + /turf/simulated/Del() if(active_hotspot) del(active_hotspot) @@ -171,24 +169,27 @@ if(zone && CanPass(null, src, 0, 0)) for(var/direction in cardinal) - var/turf/T = get_step(src,direction) + var/turf/T = get_step(src, direction) if(!istype(T)) continue - //I can connect to air or space in this direction - if((air_check_directions & direction && !(air_directions_archived & direction)) || \ - (unsim_check_directions & direction && !(unsim_directions_archived & direction))) - ZConnect(src,T) + //A connection to simulated floor has been made where one did not exist. + if((air_check_directions & direction && air_directions_archived & ~direction) ||\ + (unsim_check_directions & direction && unsim_directions_archived & ~direction)) + //Simply connect them. + ZConnect(src, T) zone.ActivateIfNeeded() - if(T.zone) T.zone.ActivateIfNeeded() + if(T.zone) + T.zone.ActivateIfNeeded() //Something like a wall was built, changing the geometry. - else if((!(air_check_directions & direction) && air_directions_archived & direction) || \ - (!(unsim_check_directions & direction) && unsim_directions_archived & direction)) + if((air_check_directions & ~direction && air_directions_archived & direction) || \ + (unsim_check_directions & ~direction && unsim_directions_archived & direction)) + var/turf/NT = get_step(T, direction) //If the tile is in our own zone, and we cannot connect to it, better rebuild. - if(istype(NT,/turf/simulated) && NT in zone.contents) + if(istype(NT, /turf/simulated) && NT in zone.contents) air_master.zones_needing_rebuilt.Add(zone) //Parse if we need to remove the tile, or rebuild the zone. @@ -197,7 +198,7 @@ //Loop through all neighboring turfs to see if we should remove the turf or just rebuild. for(var/d in cardinal) - var/turf/UT = get_step(NT,d) + var/turf/UT = get_step(NT, d) //If we find a neighboring tile that is in the same zone, rebuild if(istype(UT, /turf/simulated) && UT.zone == zone && UT.CanPass(null, NT, 0, 0)) @@ -212,11 +213,6 @@ //Not adjacent to anything, and unsimulated. Goodbye~ else zone.RemoveTurf(NT) - - if(air_check_directions) - processing = 1 - else - processing = 0 return 1 /turf/proc/HasDoor(turf/O) diff --git a/code/ZAS/ZAS_Zones.dm b/code/ZAS/ZAS_Zones.dm index d747b2c150..783d8d617f 100644 --- a/code/ZAS/ZAS_Zones.dm +++ b/code/ZAS/ZAS_Zones.dm @@ -50,11 +50,19 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs air = new air.group_multiplier = contents.len for(var/turf/simulated/T in contents) - air.oxygen += T.oxygen / air.group_multiplier - air.nitrogen += T.nitrogen / air.group_multiplier - air.carbon_dioxide += T.carbon_dioxide / air.group_multiplier - air.toxins += T.toxins / air.group_multiplier - air.temperature += T.temperature / air.group_multiplier + if(!T.air) + continue + air.oxygen += T.air.oxygen / air.group_multiplier + air.nitrogen += T.air.nitrogen / air.group_multiplier + air.carbon_dioxide += T.air.carbon_dioxide / air.group_multiplier + air.toxins += T.air.toxins / air.group_multiplier + air.temperature += T.air.temperature / air.group_multiplier + for(var/datum/gas/trace in T.air.trace_gases) + var/datum/gas/corresponding_gas = locate(trace.type) in air.trace_gases + if(!corresponding_gas) + corresponding_gas = new trace.type() + air.trace_gases.Add(corresponding_gas) + corresponding_gas.moles += trace.moles air.update_values() //Add this zone to the global list. diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 201fd974ad..2e82577a4b 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -73,7 +73,7 @@ /turf/simulated/floor/engine/n20 New() - ..() + . = ..() var/datum/gas_mixture/adding = new var/datum/gas/sleeping_agent/trace_gas = new