diff --git a/code/ZAS/Atom.dm b/code/ZAS/Atom.dm
index b4d1de20af..1a2ad9cb02 100644
--- a/code/ZAS/Atom.dm
+++ b/code/ZAS/Atom.dm
@@ -47,7 +47,7 @@ turf/c_airblock(turf/other)
#ifdef ZASDBG
ASSERT(isturf(other))
#endif
- if(blocks_air)
+ if(blocks_air || other.blocks_air)
return BLOCKED
//Z-level handling code. Always block if there isn't an open space.
diff --git a/code/ZAS/Connection.dm b/code/ZAS/Connection.dm
index b9cf2278a1..37600dadea 100644
--- a/code/ZAS/Connection.dm
+++ b/code/ZAS/Connection.dm
@@ -76,11 +76,15 @@ Class Procs:
edge.add_connection(src)
/connection/proc/mark_direct()
- state |= CONNECTION_DIRECT
+ if(!direct())
+ state |= CONNECTION_DIRECT
+ edge.direct++
//world << "Marked direct."
/connection/proc/mark_indirect()
- state &= ~CONNECTION_DIRECT
+ if(direct())
+ state &= ~CONNECTION_DIRECT
+ edge.direct--
//world << "Marked indirect."
/connection/proc/mark_space()
@@ -110,10 +114,9 @@ Class Procs:
erase()
return
else if(block_status & ZONE_BLOCKED)
- if(direct())
- mark_indirect()
- else
- mark_direct()
+ mark_indirect()
+ else
+ mark_direct()
var/b_is_space = !istype(B,/turf/simulated)
diff --git a/code/ZAS/ConnectionGroup.dm b/code/ZAS/ConnectionGroup.dm
index 7fab5e94ad..94731228a6 100644
--- a/code/ZAS/ConnectionGroup.dm
+++ b/code/ZAS/ConnectionGroup.dm
@@ -61,6 +61,7 @@ Class Procs:
/connection_edge/var/zone/A
/connection_edge/var/list/connecting_turfs = list()
+/connection_edge/var/direct = 0
/connection_edge/var/coefficient = 0
@@ -69,6 +70,7 @@ Class Procs:
/connection_edge/proc/add_connection(connection/c)
coefficient++
+ if(c.direct()) direct++
//world << "Connection added: [type] Coefficient: [coefficient]"
/connection_edge/proc/remove_connection(connection/c)
@@ -76,6 +78,7 @@ Class Procs:
coefficient--
if(coefficient <= 0)
erase()
+ if(c.direct()) direct--
/connection_edge/proc/contains_zone(zone/Z)
@@ -114,7 +117,6 @@ Class Procs:
/connection_edge/zone/var/zone/B
-/connection_edge/zone/var/direct = 0
/connection_edge/zone/New(zone/A, zone/B)
@@ -128,11 +130,9 @@ Class Procs:
/connection_edge/zone/add_connection(connection/c)
. = ..()
connecting_turfs.Add(c.A)
- if(c.direct()) direct++
/connection_edge/zone/remove_connection(connection/c)
connecting_turfs.Remove(c.A)
- if(c.direct()) direct--
. = ..()
/connection_edge/zone/contains_zone(zone/Z)
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index 8e8fb39529..9c23657aca 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -76,7 +76,7 @@
title+= "[R.title]"
title+= " ([R.req_amount] [src.singular_name]\s)"
if (can_build)
- t1 += text("[title] ")
+ t1 += text("[title] ")
else
t1 += text("[]", title)
continue
@@ -112,7 +112,8 @@
recipes_list = srl.recipes
var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])]
var/multiplier = text2num(href_list["multiplier"])
- if (!multiplier) multiplier = 1
+ if (!multiplier || (multiplier <= 0)) //href exploit protection
+ return
if (src.amount < R.req_amount*multiplier)
if (R.req_amount*multiplier>1)
usr << "\red You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!"
diff --git a/code/modules/nano/nanomanager.dm b/code/modules/nano/nanomanager.dm
index f3396ecd3f..da546ac66d 100644
--- a/code/modules/nano/nanomanager.dm
+++ b/code/modules/nano/nanomanager.dm
@@ -27,8 +27,9 @@
filenames = flist(path)
for(var/filename in filenames)
if(copytext(filename, length(filename)) != "/") // filenames which end in "/" are actually directories, which we want to ignore
- asset_files.Add(file(path + filename)) // add this file to asset_files for sending to clients when they connect
-
+ if(fexists(path + filename))
+ asset_files.Add(fcopy_rsc(path + filename)) // add this file to asset_files for sending to clients when they connect
+
return
/**