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 /**