Merge pull request #6296 from GinjaNinja32/multiz-fixes3

Multiz fixes and mapping features
This commit is contained in:
Zuhayr
2014-09-08 11:20:34 +09:30
5 changed files with 106 additions and 20 deletions

View File

@@ -1369,9 +1369,11 @@
#include "code\modules\virus2\isolator.dm"
#include "code\modules\virus2\items_devices.dm"
#include "code\TriDimension\controller.dm"
#include "code\TriDimension\controller_presets.dm"
#include "code\TriDimension\Movement.dm"
#include "code\TriDimension\Pipes.dm"
#include "code\TriDimension\Structures.dm"
#include "code\TriDimension\Structures_presets.dm"
#include "code\TriDimension\Turfs.dm"
#include "code\WorkInProgress\autopsy.dm"
#include "code\WorkInProgress\buildmode.dm"

View File

@@ -208,6 +208,8 @@
icon_state = "rampbottom"
var/obj/multiz/stairs/connected
var/turf/target
var/turf/target2
var/suggest_dir // try this dir first when finding stairs; this is the direction to walk *down* the stairs
New()
..()
@@ -219,23 +221,14 @@
O.ChangeTurf(/turf/simulated/floor/open)
spawn(1)
var/turf/T
if(suggest_dir)
T = get_step(src.loc,suggest_dir)
find_stair_connection(T, suggest_dir, 1)
if(!target)
for(var/dir in cardinal)
var/turf/T = get_step(src.loc,dir)
for(var/obj/multiz/stairs/S in T)
if(S && S.icon_state == "rampbottom" && !S.connected)
S.dir = dir
src.dir = dir
S.connected = src
src.connected = S
src.icon_state = "ramptop"
src.density = 1
var/turf/controllerlocation = locate(1, 1, src.z)
for(var/obj/effect/landmark/zcontroller/controller in controllerlocation)
if(controller.up)
var/turf/above = locate(src.x, src.y, controller.up_target)
if(istype(above,/turf/space) || istype(above,/turf/simulated/floor/open))
src.target = above
break
T = get_step(src.loc,dir)
find_stair_connection(T, dir)
if(target)
break
@@ -245,3 +238,40 @@
if(Con == src.connected) //make sure the atom enters from the approriate lower stairs tile
M.Move(target)
return
proc/find_stair_connection(var/turf/T, var/dir, var/suggested=0)
for(var/obj/multiz/stairs/S in T)
if(S && S.icon_state == "rampbottom" && !S.connected)
if(!S.suggest_dir || S.suggest_dir == dir) // it doesn't have a suggested direction, or it's the same direction as we're trying, so we connect to it
initialise_stair_connection(src, S, dir)
else if(!suggested) // we're trying directions, so it could be a reverse stair (i.e. we're the bottom stair rather than the top)
var/inv_dir = 0
switch(dir)
if(1)
inv_dir = 2
if(2)
inv_dir = 1
if(4)
inv_dir = 8
if(8)
inv_dir = 4
if(S.suggest_dir == inv_dir)
initialise_stair_connection(S, src, inv_dir)
proc/initialise_stair_connection(var/obj/multiz/stairs/top, var/obj/multiz/stairs/bottom, var/dir)
top.dir = dir
bottom.dir = dir
top.connected = bottom
bottom.connected = top
top.icon_state = "ramptop"
top.density = 1
var/turf/controllerlocation = locate(1, 1, top.z)
for(var/obj/effect/landmark/zcontroller/controller in controllerlocation)
if(controller.up)
var/turf/above = locate(top.x, top.y, controller.up_target)
if(istype(above,/turf/space) || istype(above,/turf/simulated/floor/open))
top.target = above
var/turf/above2 = locate(bottom.x, bottom.y, controller.up_target)
if(istype(above2, /turf/space) || istype(above,/turf/simulated/floor/open))
top.target2 = above2
return

View File

@@ -0,0 +1,11 @@
/obj/multiz/stairs/north_up
suggest_dir = SOUTH
/obj/multiz/stairs/south_up
suggest_dir = NORTH
/obj/multiz/stairs/east_up
suggest_dir = WEST
/obj/multiz/stairs/west_up
suggest_dir = EAST

View File

@@ -26,6 +26,12 @@
var/soft = 0
for(var/atom/A in floorbelow.contents)
if(A.density)
if(istype(A, /obj/structure/window))
var/obj/structure/window/W = A
blocked = W.is_fulltile()
if(blocked)
break
else
blocked = 1
break
if(istype(A, /obj/machinery/atmospherics/pipe/zpipe/up) && istype(AM,/obj/item/pipe))

View File

@@ -0,0 +1,37 @@
/obj/effect/landmark/zcontroller/level_1_bottom
up = 1
up_target = 2
/obj/effect/landmark/zcontroller/level_2_mid
up = 1
up_target = 3
down = 1
down_target = 1
/obj/effect/landmark/zcontroller/level_3_mid
up = 1
up_target = 4
down = 1
down_target = 2
/obj/effect/landmark/zcontroller/level_4_mid
up = 1
up_target = 5
down = 1
down_target = 3
/obj/effect/landmark/zcontroller/level_2_top
down = 1
down_target = 1
/obj/effect/landmark/zcontroller/level_3_top
down = 1
down_target = 2
/obj/effect/landmark/zcontroller/level_4_top
down = 1
down_target = 3
/obj/effect/landmark/zcontroller/level_5_top
down = 1
down_target = 4