From baaee906a2093d18e1392a55928b312d8c995a1c Mon Sep 17 00:00:00 2001 From: Putnam Date: Mon, 11 May 2020 22:01:20 -0700 Subject: [PATCH] fixin' a multiz segfault --- .../space_management/multiz_helpers.dm | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/code/modules/mapping/space_management/multiz_helpers.dm b/code/modules/mapping/space_management/multiz_helpers.dm index f6db12420a..970c25ee9b 100644 --- a/code/modules/mapping/space_management/multiz_helpers.dm +++ b/code/modules/mapping/space_management/multiz_helpers.dm @@ -7,6 +7,20 @@ return get_step(SSmapping.get_turf_below(get_turf(ref)), dir) return get_step(ref, dir) +/proc/get_multiz_accessible_levels(center_z) + . = list(center_z) + var/other_z = center_z + var/offset + while((offset = SSmapping.level_trait(other_z, ZTRAIT_DOWN))) + other_z += offset + . += other_z + other_z = center_z + while((offset = SSmapping.level_trait(other_z, ZTRAIT_UP))) + other_z += offset + . += other_z + return . + + /proc/get_dir_multiz(turf/us, turf/them) us = get_turf(us) them = get_turf(them) @@ -38,10 +52,11 @@ if((holder == NONE) || (holder == (UP|DOWN))) return turn(dir, 180) dir &= ~(UP|DOWN) - dir = turn(dir, 180) + if(dir != 0) + dir = turn(dir, 180) if(holder == UP) holder = DOWN else holder = UP dir |= holder - return dir \ No newline at end of file + return dir