diff --git a/code/ZAS/Connection.dm b/code/ZAS/Connection.dm index 41dfd027f5..1bb8f9ca54 100644 --- a/code/ZAS/Connection.dm +++ b/code/ZAS/Connection.dm @@ -6,9 +6,6 @@ Indirect connections will not merge the two zones after they reach equilibrium. #define CONNECTION_INDIRECT 1 #define CONNECTION_CLOSED 0 -#define ZONE_ACTIVE 1 -#define ZONE_SLEEPING 0 - /connection var/turf/simulated/A var/turf/simulated/B diff --git a/code/ZAS/FEA_system.dm b/code/ZAS/FEA_system.dm index 004de68358..5a386d5959 100644 --- a/code/ZAS/FEA_system.dm +++ b/code/ZAS/FEA_system.dm @@ -50,12 +50,8 @@ Important Procedures air_master.process() This first processes the air_master update/rebuild lists then processes all groups and tiles for air calculations - */ -#define ZONE_ACTIVE 1 -#define ZONE_SLEEPING 0 - var/tick_multiplier = 2 atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 0adc394715..8370e717ba 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -80,7 +80,7 @@ obj if(firelevel > vsc.IgnitionLevel) var/turf/simulated/floor/S = loc - if(!S.zone) src.gc_del() //Cannot exist where zones are broken. + if(!S.zone) del src //Cannot exist where zones are broken. if(istype(S)) var @@ -139,17 +139,17 @@ obj else - src.gc_del() + del src S.assume_air(flow) //Then put it back where you found it. else - src.gc_del() + del src else - src.gc_del() + del src else - src.gc_del() + del src for(var/mob/living/carbon/human/M in loc) @@ -160,17 +160,13 @@ obj ..() if(!istype(loc, /turf)) - src.gc_del() + del src dir = pick(cardinal) //sd_SetLuminosity(3,2,0) firelevel = fl air_master.active_hotspots.Add(src) - proc/gc_del() - loc = null - air_master.active_hotspots.Remove(src) - Del() if (istype(loc, /turf/simulated)) //sd_SetLuminosity(0) diff --git a/code/ZAS/ZAS_Turfs.dm b/code/ZAS/ZAS_Turfs.dm index 5280c57250..7ba40ef715 100644 --- a/code/ZAS/ZAS_Turfs.dm +++ b/code/ZAS/ZAS_Turfs.dm @@ -43,6 +43,8 @@ /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. + /turf/simulated/var/tmp/obj/fire/active_hotspot /turf/simulated/proc/update_visuals() @@ -128,9 +130,16 @@ var/air_directions_archived = air_check_directions air_check_directions = 0 + var/unsim_directions_archived = unsim_check_directions + unsim_check_directions = 0 + for(var/direction in cardinal) - if(ZAirPass(get_step(src,direction))) - air_check_directions |= direction + var/turf/check_turf = get_step(src, direction) + if(ZAirPass(check_turf)) + if(istype(check_turf, /turf/simulated)) + air_check_directions |= direction + else if(istype(check_turf, /turf/space) || istype(check_turf, /turf/unsimulated)) + unsim_check_directions |= direction if(!zone && !blocks_air) //No zone, but not a wall. for(var/direction in DoorDirections) //Check door directions first. @@ -166,13 +175,14 @@ if(!istype(T)) continue - //I can connect to air in this direction - if(air_check_directions & direction && !(air_directions_archived & direction)) - + //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) //Something like a wall was built, changing the geometry. - else if(!(air_check_directions & direction) && air_directions_archived & direction) + else 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. diff --git a/code/ZAS/ZAS_Zones.dm b/code/ZAS/ZAS_Zones.dm index 7bb8abd6b4..371be846a9 100644 --- a/code/ZAS/ZAS_Zones.dm +++ b/code/ZAS/ZAS_Zones.dm @@ -326,6 +326,9 @@ var/list/CounterDoorDirections = list(SOUTH,EAST) //Which directions doors turfs archived_air.copy_from(air) +/zone/proc/CheckStatus() + return status + /zone/proc/assume_air(var/datum/gas_mixture/giver) if(status == ZONE_ACTIVE) return air.merge(giver) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index e22b1ce804..b4ba1064e1 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -70,6 +70,7 @@ power_change() if(powered(ENVIRON)) stat &= ~NOPOWER + latetoggle() else stat |= NOPOWER return @@ -197,19 +198,27 @@ nextstate = CLOSED - process() + latetoggle() if(operating || stat & NOPOWER || !nextstate) return switch(nextstate) if(OPEN) - spawn() - open() + nextstate = null + open() if(CLOSED) - spawn() - close() - nextstate = null + nextstate = null + close() return + open() + ..() + latetoggle() + return + + close() + ..() + latetoggle() + return do_animate(animation) switch(animation) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index db10c71214..3a4c6b40b4 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -203,8 +203,15 @@ var/old_lumcount = lighting_lumcount - initial(lighting_lumcount) if(ispath(N, /turf/simulated/floor)) + //if the old turf had a zone, connect the new turf to it as well - Cael + //Adjusted by SkyMarshal 5/10/13 - The air master will handle the addition of the new turf. + if(zone) + zone.RemoveTurf(src) + if(!zone.CheckStatus()) + zone.SetStatus(ZONE_ACTIVE) + var/turf/simulated/W = new N( locate(src.x, src.y, src.z) ) - W.Assimilate_Air() + //W.Assimilate_Air() W.lighting_lumcount += old_lumcount if(old_lumcount != W.lighting_lumcount) @@ -214,20 +221,17 @@ if (istype(W,/turf/simulated/floor)) W.RemoveLattice() - //if the old turf had a zone, connect the new turf to it as well - Cael - if(src.zone) - src.zone.RemoveTurf(src) - W.zone = src.zone - W.zone.AddTurf(W) - if(air_master) air_master.AddTurfToUpdate(src) W.levelupdate() return W + else - /*if(istype(src, /turf/simulated) && src.zone) - src.zone.rebuild = 1*/ + if(zone) + zone.RemoveTurf(src) + if(!zone.CheckStatus()) + zone.SetStatus(ZONE_ACTIVE) var/turf/W = new N( locate(src.x, src.y, src.z) ) W.lighting_lumcount += old_lumcount @@ -235,18 +239,19 @@ W.lighting_changed = 1 lighting_controller.changed_turfs += W - if(src.zone) - src.zone.RemoveTurf(src) - W.zone = src.zone - W.zone.AddTurf(W) - if(air_master) air_master.AddTurfToUpdate(src) W.levelupdate() return W + +//Commented out by SkyMarshal 5/10/13 - If you are patching up space, it should be vacuum. +// If you are replacing a wall, you have increased the volume of the room without increasing the amount of gas in it. +// As such, this will no longer be used. + //////Assimilate Air////// +/* /turf/simulated/proc/Assimilate_Air() var/aoxy = 0//Holders to assimilate air from nearby turfs var/anitro = 0 @@ -290,6 +295,8 @@ S.air.toxins = air.toxins S.air.temperature = air.temperature S.air.update_values() +*/ + /turf/proc/ReplaceWithLattice() src.ChangeTurf(/turf/space) diff --git a/code/setup.dm b/code/setup.dm index 8d456725a9..62515d050c 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -737,3 +737,7 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse //Language flags. #define WHITELISTED 1 // Language is available if the speaker is whitelisted. #define RESTRICTED 2 // Language can only be accquired by spawning or an admin. + +//Flags for zone sleeping +#define ZONE_ACTIVE 1 +#define ZONE_SLEEPING 0 diff --git a/html/changelog.html b/html/changelog.html index a60e24533b..3c772085c6 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -95,6 +95,15 @@ should be listed in the changelog upon commit though. Thanks. --> +
+

18 September 2013

+

Kilakk updated:

+ +
+

August 8th, 2013

Erthilo updated: