Removed a bunch of tag variables from the map. I hate whoever added those.

Final parts to ZAS.  Works 100% (Or very near such) now.
This commit is contained in:
SkyMarshal
2012-06-08 00:28:47 -07:00
parent a1a2302199
commit dd4f191f28
11 changed files with 780 additions and 759 deletions

View File

@@ -11,6 +11,8 @@ connection
zone zone
zone_A zone_A
zone_B zone_B
ref_A
ref_B
indirect = 0 //If the connection is purely indirect, the zones should not join. indirect = 0 //If the connection is purely indirect, the zones should not join.
last_updated //The tick at which this was last updated. last_updated //The tick at which this was last updated.
no_zone_count = 0 no_zone_count = 0
@@ -21,27 +23,29 @@ connection
if(!A.zone.connections) A.zone.connections = list() if(!A.zone.connections) A.zone.connections = list()
A.zone.connections += src A.zone.connections += src
zone_A = A.zone zone_A = A.zone
ref_A = "\ref[A]"
if(!B.zone.connections) B.zone.connections = list() if(!B.zone.connections) B.zone.connections = list()
B.zone.connections += src B.zone.connections += src
zone_B = B.zone zone_B = B.zone
ref_B = "\ref[B]"
if(!air_master.tiles_with_connections) if(!air_master.tiles_with_connections)
air_master.tiles_with_connections = list() air_master.tiles_with_connections = list()
if(air_master.tiles_with_connections[A]) if(air_master.tiles_with_connections[ref_A])
var/list/A_connections = air_master.tiles_with_connections[A] var/list/A_connections = air_master.tiles_with_connections[ref_A]
A_connections |= src A_connections |= src
else else
var/list/A_connections = list(src) var/list/A_connections = list(src)
air_master.tiles_with_connections[A] = A_connections air_master.tiles_with_connections[ref_A] = A_connections
if(air_master.tiles_with_connections[B]) if(air_master.tiles_with_connections[ref_B])
var/list/B_connections = air_master.tiles_with_connections[B] var/list/B_connections = air_master.tiles_with_connections[ref_B]
B_connections |= src B_connections |= src
else else
var/list/B_connections = list(src) var/list/B_connections = list(src)
air_master.tiles_with_connections[B] = B_connections air_master.tiles_with_connections[ref_B] = B_connections
if(!A.zone.connected_zones) if(!A.zone.connected_zones)
A.zone.connected_zones = list() A.zone.connected_zones = list()
@@ -68,23 +72,23 @@ connection
A.zone.connections.Remove(src) A.zone.connections.Remove(src)
if(!A.zone.connections.len) if(!A.zone.connections.len)
del A.zone.connections del A.zone.connections
if(A in air_master.tiles_with_connections) if(ref_A in air_master.tiles_with_connections)
var/list/A_connections = air_master.tiles_with_connections[A] var/list/A_connections = air_master.tiles_with_connections[ref_A]
A_connections -= src A_connections -= src
if(A_connections && !A_connections.len) if(A_connections && !A_connections.len)
del A_connections del A_connections
air_master.tiles_with_connections.Remove(A) air_master.tiles_with_connections.Remove(ref_A)
if(B) if(B)
if(B.zone && B.zone.connections) if(B.zone && B.zone.connections)
B.zone.connections.Remove(src) B.zone.connections.Remove(src)
if(!B.zone.connections.len) if(!B.zone.connections.len)
del B.zone.connections del B.zone.connections
if(B in air_master.tiles_with_connections) if(ref_B in air_master.tiles_with_connections)
var/list/B_connections = air_master.tiles_with_connections[B] var/list/B_connections = air_master.tiles_with_connections[ref_B]
B_connections -= src B_connections -= src
if(B_connections && !B_connections.len) if(B_connections && !B_connections.len)
del B_connections del B_connections
air_master.tiles_with_connections.Remove(B) air_master.tiles_with_connections.Remove(ref_B)
if(zone_A) if(zone_A)
if(zone_A && zone_A.connections) if(zone_A && zone_A.connections)
zone_A.connections.Remove(src) zone_A.connections.Remove(src)
@@ -173,6 +177,8 @@ connection
if(A.zone == B.zone) if(A.zone == B.zone)
//world.log << "Connection removed: Zones now merged." //world.log << "Connection removed: Zones now merged."
del src del src
if(ref_A != "\ref[A]" || ref_B != "\ref[B]")
del src
if((A.zone && A.zone != zone_A) || (B.zone && B.zone != zone_B)) if((A.zone && A.zone != zone_A) || (B.zone && B.zone != zone_B))
Sanitize() Sanitize()
if(!A.zone || !B.zone) if(!A.zone || !B.zone)
@@ -190,11 +196,8 @@ connection
del src del src
if(A.zone == zone_B && B.zone == zone_A) if(A.zone == zone_B && B.zone == zone_A)
var/turf/Temp = B del src
B = A
A = Temp
zone_B = B.zone
zone_A = A.zone
return return
if(zone_A) if(zone_A)
@@ -252,6 +255,7 @@ connection
zone_A = A.zone zone_A = A.zone
else if(A.zone && A.zone != zone_A) else if(A.zone && A.zone != zone_A)
if(zone_A) if(zone_A)

View File

@@ -8,6 +8,8 @@ zone
//Change all the zone vars of the turfs, check for space to be added to space_tiles. //Change all the zone vars of the turfs, check for space to be added to space_tiles.
for(var/turf/T in contents) for(var/turf/T in contents)
if(T.zone)
T.zone.RemoveTurf(T)
T.zone = src T.zone = src
if(istype(T,/turf/space)) if(istype(T,/turf/space))
AddSpace(T) AddSpace(T)
@@ -30,8 +32,14 @@ zone
Del() Del()
//Ensuring the zone list doesn't get clogged with null values. //Ensuring the zone list doesn't get clogged with null values.
for(var/turf/simulated/T in contents)
if(T.zone && T.zone == src)
T.zone = null
for(var/zone/Z in connected_zones)
if(src in Z.connected_zones)
Z.connected_zones.Remove(src)
for(var/connection/C in connections) for(var/connection/C in connections)
del(C) C.Cleanup()
zones -= src zones -= src
. = ..() . = ..()

View File

@@ -184,9 +184,10 @@ turf
if(!zone) //No zone found, new zone! if(!zone) //No zone found, new zone!
new/zone(src) new/zone(src)
if(!CanPass(null, src, 0, 0)) //Can't pass, and was updated. Delete zone connections involving this turf. if(!CanPass(null, src, 0, 0) && !CanPass(null, src, 1.5, 1)) //Can't pass, and was updated. Delete zone connections involving this turf.
if(air_master.tiles_with_connections[src]) if(air_master.tiles_with_connections["\ref[src]"])
for(var/connection/C in air_master.tiles_with_connections[src]) var/list/connections = air_master.tiles_with_connections["\ref[src]"]
for(var/connection/C in connections)
del C del C
update_zone_properties() //Update self zone and adjacent zones. update_zone_properties() //Update self zone and adjacent zones.
@@ -211,9 +212,11 @@ turf
var/turf/simulated/NT = get_step(src, direction2) var/turf/simulated/NT = get_step(src, direction2)
if(NT && NT.zone && NT.zone == T.zone) if(NT && NT.zone && NT.zone == T.zone)
T.zone.rebuild = 1 T.zone.rebuild = 1
else if((!T.CanPass(null, src, 1.5, 1) && T.CanPass(null, src, 0, 0)) || (!CanPass(null, T, 1.5, 1) && CanPass(null, T, 0, 0)))
if(T.zone != zone)
ZConnect(src,T)
else if(zone && !zone.rebuild) else if(zone && !zone.rebuild)
for(var/direction2 in cardinal - reverse_direction(direction)) //Check all other directions for air that might be connected. for(var/direction2 in cardinal - reverse_direction(direction)) //Check all other directions for air that might be connected.
var/turf/simulated/NT = get_step(T, direction2) var/turf/simulated/NT = get_step(T, direction2)
if(NT && NT.zone && NT.zone == zone) if(NT && NT.zone && NT.zone == zone)
zone.rebuild = 1 zone.rebuild = 1
T.check_connections()

View File

@@ -3,6 +3,8 @@
//Adds the turf to contents, increases the size of the zone, and sets the zone var. //Adds the turf to contents, increases the size of the zone, and sets the zone var.
if(T in contents) if(T in contents)
return return
if(T.zone)
T.zone.RemoveTurf(T)
contents += T contents += T
air.group_multiplier++ air.group_multiplier++
T.zone = src T.zone = src
@@ -119,10 +121,12 @@ proc/ZConnect(turf/A,turf/B)
return ZMerge(A.zone, B.zone) return ZMerge(A.zone, B.zone)
//Ensure the connection isn't already made. //Ensure the connection isn't already made.
for(var/connection/C in air_master.tiles_with_connections[A]) if(air_master.tiles_with_connections["\ref[A]"])
C.Cleanup() var/list/connections = air_master.tiles_with_connections["\ref[A]"]
if(C.B == B || C.A == B) for(var/connection/C in connections)
return C.Cleanup()
if(C.B == B || C.A == B)
return
var/connection/C = new(A,B) var/connection/C = new(A,B)

View File

@@ -2,12 +2,12 @@
var/explosion_halt = 0 var/explosion_halt = 0
var/zone_share_percent = 3.5 var/zone_share_percent = 3.5
zone/proc/process() zone/proc/process()
//Deletes zone if empty.
if(!contents.len)
del src
return 0
//Does rebuilding stuff. Not sure if used. //Does rebuilding stuff. Not sure if used.
if(rebuild) if(rebuild)
//Deletes zone if empty.
if(!contents.len)
del src
return 0
//Choose a random turf and regenerate the zone from it. //Choose a random turf and regenerate the zone from it.
var var
@@ -21,7 +21,7 @@ zone/proc/process()
contents.Remove(null) //I can't believe this is needed. contents.Remove(null) //I can't believe this is needed.
do do
sample = pick(contents) //Nor this. sample = pick(contents) //Nor this.
while(!istype(sample)) while(!istype(sample) || !sample.CanPass(null, sample, 1.5, 1))
new_contents = FloodFill(sample) new_contents = FloodFill(sample)
for(var/turf/space/S in new_contents) for(var/turf/space/S in new_contents)
@@ -33,23 +33,25 @@ zone/proc/process()
for(var/turf/T in contents) for(var/turf/T in contents)
if(!(T in new_contents)) if(!(T in new_contents))
problem = 1 problem = 1
break T.zone = null
if(problem) if(problem)
//Build some new zones for stuff that wasn't included. //Build some new zones for stuff that wasn't included.
var/list/rebuild_turfs = list() var/list/turf/simulated/rebuild_turfs = contents - new_contents
for(var/turf/T in contents - new_contents) var/list/turf/simulated/reconsider_turfs = list()
contents -= T contents = new_contents
rebuild_turfs += T
T.zone = null
for(var/turf/T in rebuild_turfs) for(var/turf/T in rebuild_turfs)
if(istype(T,/turf/space))
air_master.tiles_to_update |= T
else if(!T.zone && T.CanPass(null, T, 1.5, 1))
var/zone/Z = new /zone(T)
Z.air.copy_from(air)
else
reconsider_turfs |= T
for(var/turf/T in reconsider_turfs)
if(!T.zone) if(!T.zone)
var/zone/Z = new /zone(T) var/zone/Z = new /zone(T)
Z.air.copy_from(air) Z.air.copy_from(air)
if(istype(T,/turf/space))
if(!T.zone.space_tiles)
T.zone.space_tiles = list()
T.zone.space_tiles |= T
rebuild = 0 rebuild = 0
//Sometimes explosions will cause the air to be deleted for some reason. //Sometimes explosions will cause the air to be deleted for some reason.

View File

@@ -1013,10 +1013,10 @@ table tr:first-child th:first-child { border: none;}
if (alarm_area.atmosalert(new_area_danger_level)) //if area was in normal state or if area was in alert state if (alarm_area.atmosalert(new_area_danger_level)) //if area was in normal state or if area was in alert state
post_alert(new_area_danger_level) post_alert(new_area_danger_level)
if(danger_level > 1) // if(danger_level > 1)
air_doors_close(0) // air_doors_close(0)
else // else
air_doors_open(0) // air_doors_open(0)
update_icon() update_icon()

View File

@@ -343,16 +343,16 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
icon_state = "door_locked" icon_state = "door_locked"
else else
icon_state = "door_closed" icon_state = "door_closed"
if(p_open || welded || air_locked)
overlays = list()
if(p_open)
overlays += image(icon, "panel_open")
if(welded)
overlays += image(icon, "welded")
if(air_locked)
overlays += image('Door1.dmi', "air")
else else
icon_state = "door_open" icon_state = "door_open"
if(p_open || welded || air_locked)
overlays = list()
if(p_open)
overlays += image(icon, "panel_open")
if(welded)
overlays += image(icon, "welded")
if(air_locked)
overlays += image('Door1.dmi', "air")
return return

View File

@@ -98,7 +98,21 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
lst[i] = input("Enter type:","Type") in typesof(/obj,/mob,/area,/turf) lst[i] = input("Enter type:","Type") in typesof(/obj,/mob,/area,/turf)
if("reference") if("reference")
lst[i] = input("Select reference:","Reference",src) as mob|obj|turf|area in world switch(alert("Would you like to enter a specific object, or search for it from the world?","Choose!","Specifc UID (Hexadecimal number)", "Search"))
if("Specifc UID (Hexadecimal number)")
var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null
if(!UID) return
var/temp_variable = locate("\[0x[UID]\]")
if(!temp_variable)
usr << "ERROR. Could not locate referenced object."
return
switch(alert("You have chosen [temp_variable], in [get_area(temp_variable)]. Are you sure?","You sure?","Yes","NONOCANCEL!"))
if("Yes")
lst[i] = temp_variable
if("NONOCANCEL!")
return
if("Search")
lst[i] = input("Select reference:","Reference") as null|mob|obj|turf|area in world
if("mob reference") if("mob reference")
lst[i] = input("Select reference:","Reference",usr) as mob in world lst[i] = input("Select reference:","Reference",usr) as mob in world
@@ -171,8 +185,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if("Specifc UID (Hexadecimal number)") if("Specifc UID (Hexadecimal number)")
var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null
if(!UID) return if(!UID) return
if(length(UID) != 7)
usr << "ERROR. UID must be 7 digits"
var/temp_variable = locate("\[0x[UID]\]") var/temp_variable = locate("\[0x[UID]\]")
if(!temp_variable) if(!temp_variable)
usr << "ERROR. Could not locate referenced object." usr << "ERROR. Could not locate referenced object."
@@ -239,8 +251,6 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if("Specifc UID (Hexadecimal number)") if("Specifc UID (Hexadecimal number)")
var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null
if(!UID) return if(!UID) return
if(length(UID) != 7)
usr << "ERROR. UID must be 7 digits"
var/temp_variable = locate("\[0x[UID]\]") var/temp_variable = locate("\[0x[UID]\]")
if(!temp_variable) if(!temp_variable)
usr << "ERROR. Could not locate referenced object." usr << "ERROR. Could not locate referenced object."

View File

@@ -66,8 +66,6 @@ var/list/forbidden_varedit_object_types = list(
if("Specifc UID (Hexadecimal number)") if("Specifc UID (Hexadecimal number)")
var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null
if(!UID) return if(!UID) return
if(length(UID) != 7)
usr << "ERROR. UID must be 7 digits"
var/temp_variable = locate("\[0x[UID]\]") var/temp_variable = locate("\[0x[UID]\]")
if(!temp_variable) if(!temp_variable)
usr << "ERROR. Could not locate referenced object." usr << "ERROR. Could not locate referenced object."
@@ -131,8 +129,6 @@ var/list/forbidden_varedit_object_types = list(
if("Specifc UID (Hexadecimal number)") if("Specifc UID (Hexadecimal number)")
var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null
if(!UID) return if(!UID) return
if(length(UID) != 7)
usr << "ERROR. UID must be 7 digits"
var/temp_variable = locate("\[0x[UID]\]") var/temp_variable = locate("\[0x[UID]\]")
if(!temp_variable) if(!temp_variable)
usr << "ERROR. Could not locate referenced object." usr << "ERROR. Could not locate referenced object."
@@ -308,8 +304,6 @@ var/list/forbidden_varedit_object_types = list(
if("Specifc UID (Hexadecimal number)") if("Specifc UID (Hexadecimal number)")
var/UID = input("Type in UID, without the leading 0x","Type in UID") as null|text var/UID = input("Type in UID, without the leading 0x","Type in UID") as null|text
if(!UID) return if(!UID) return
if(length(UID) != 7)
usr << "ERROR. UID must be 7 digits"
var/temp_variable = locate("\[0x[UID]\]") var/temp_variable = locate("\[0x[UID]\]")
if(!temp_variable) if(!temp_variable)
usr << "ERROR. Could not locate referenced object." usr << "ERROR. Could not locate referenced object."
@@ -554,8 +548,6 @@ var/list/forbidden_varedit_object_types = list(
if("Specifc UID (Hexadecimal number)") if("Specifc UID (Hexadecimal number)")
var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null var/UID = input("Type in UID, without the leading 0x","Type in UID") as text|null
if(!UID) return if(!UID) return
if(length(UID) != 7)
usr << "ERROR. UID must be 7 digits"
var/temp_variable = locate("\[0x[UID]\]") var/temp_variable = locate("\[0x[UID]\]")
if(!temp_variable) if(!temp_variable)
usr << "ERROR. Could not locate referenced object." usr << "ERROR. Could not locate referenced object."

View File

@@ -82,7 +82,6 @@
for(var/L = 1 to netcount) for(var/L = 1 to netcount)
var/datum/powernet/PN = new() var/datum/powernet/PN = new()
//PN.tag = "powernet #[L]"
powernets += PN powernets += PN
PN.number = L PN.number = L
@@ -287,7 +286,6 @@
// not looped, so make a new powernet // not looped, so make a new powernet
var/datum/powernet/PN = new() var/datum/powernet/PN = new()
//PN.tag = "powernet #[L]"
powernets += PN powernets += PN
PN.number = powernets.len PN.number = powernets.len

File diff suppressed because it is too large Load Diff