From b37ea52f4d2b79e9e76f544230f1c1781a0ab9ef Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sun, 12 Aug 2012 00:16:14 -0700 Subject: [PATCH] Some code that ensures ladders and shit play nice with the modular Z-levels --- code/TriDimension/Structures.dm | 84 ++++++++++++++++++++++----------- code/setup_3d.dm | 4 +- 2 files changed, 58 insertions(+), 30 deletions(-) diff --git a/code/TriDimension/Structures.dm b/code/TriDimension/Structures.dm index 2914f6a4ad9..0509f1b36f5 100644 --- a/code/TriDimension/Structures.dm +++ b/code/TriDimension/Structures.dm @@ -23,20 +23,34 @@ New() . = ..() spawn(1) //Allow map to load - if(!target) - var/list/adjacent_to_me = global_adjacent_z_levels["[z]"] - target = locate() in locate(x,y,adjacent_to_me["down"]) - if (istype(target)) - icon_state = top_icon_state - else - target = locate() in locate(x,y,adjacent_to_me["up"]) - if (istype(target)) - icon_state = bottom_icon_state + if(z in levels_3d) + if(!target) + var/list/adjacent_to_me = global_adjacent_z_levels["[z]"] + if("up" in adjacent_to_me) + target = locate() in locate(x,y,adjacent_to_me["up"]) + if(istype(target)) + icon_state = bottom_icon_state + else if("down" in adjacent_to_me) + target = locate() in locate(x,y,adjacent_to_me["down"]) + if(istype(target)) + icon_state = top_icon_state + else + del src + else + del src + else if("down" in adjacent_to_me) + target = locate() in locate(x,y,adjacent_to_me["down"]) + if(istype(target)) + icon_state = bottom_icon_state + else + del src else del src - if(target) - target.icon_state = ( icon_state == top_icon_state ? bottom_icon_state : top_icon_state) - target.target = src + if(target) + target.icon_state = ( icon_state == top_icon_state ? bottom_icon_state : top_icon_state) + target.target = src + else + del src Del() spawn(1) @@ -66,7 +80,7 @@ var/top_icon_state_open = "hatchdown-open" var/top_icon_state_close = "hatchdown-close" - bottom_icon_state = "hatchup" + bottom_icon_state = "ladderup" var/image/green_overlay var/image/red_overlay @@ -127,23 +141,37 @@ New() . = ..() spawn(1) - if(!target) - var/list/adjacent_to_me = global_adjacent_z_levels["[z]"] - target = locate() in locate(x,y,adjacent_to_me["up"]) - if(istype(target)) - icon_state = bottom_icon_state - else - target = locate() in locate(x,y,adjacent_to_me["down"]) - if(istype(target)) - icon_state = top_icon_state + if(z in levels_3d) + if(!target) + var/list/adjacent_to_me = global_adjacent_z_levels["[z]"] + if("up" in adjacent_to_me) + target = locate() in locate(x,y,adjacent_to_me["up"]) + if(istype(target)) + icon_state = bottom_icon_state + else if("down" in adjacent_to_me) + target = locate() in locate(x,y,adjacent_to_me["down"]) + if(istype(target)) + icon_state = top_icon_state + else + del src + else + del src + else if("down" in adjacent_to_me) + target = locate() in locate(x,y,adjacent_to_me["down"]) + if(istype(target)) + icon_state = bottom_icon_state + else + del src else del src - if(target) - target.icon_state = ( icon_state == top_icon_state ? bottom_icon_state : top_icon_state) - target.target = src - var/obj/multiz/stairs/lead_in = locate() in get_step(src, reverse_direction(dir)) - if(lead_in) - lead_in.icon_state = ( icon_state == top_icon_state ? bottom_icon_state : top_icon_state) + if(target) + target.icon_state = ( icon_state == top_icon_state ? bottom_icon_state : top_icon_state) + target.target = src + var/obj/multiz/stairs/lead_in = locate() in get_step(src, reverse_direction(dir)) + if(lead_in) + lead_in.icon_state = ( icon_state == top_icon_state ? bottom_icon_state : top_icon_state) + else + del src Del() diff --git a/code/setup_3d.dm b/code/setup_3d.dm index 5b15584521f..607e350f153 100644 --- a/code/setup_3d.dm +++ b/code/setup_3d.dm @@ -7,9 +7,9 @@ #ifdef ZAS_3D -var/list/levels_3d = list(1,4,7) //To expediate calculations, just do "z in levels_3d" +var/list/levels_3d = list(1,2) //To expediate calculations, just do "z in levels_3d" -var/list/global_adjacent_z_levels = list("1" = list("up" = 2, "down" = 7), "2" = list("down" = 1), "7" = list("up" = 1)) //Example. 2 is above 1 which is above 7. +var/list/global_adjacent_z_levels = list("1" = list("up" = 2), "2" = list("down" = 1)) //Example. 2 is above 1 //Commented out ones are incomplete. //#include "TriDimension\Pipes.dm" //Example