mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 09:42:29 +00:00
* Multi-Z Support for Lazy Templates | Cleans up some turf flag misuse * Update hilbertshotel.dm * Modular proc ref --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
47 lines
988 B
Plaintext
47 lines
988 B
Plaintext
/proc/get_step_multiz(ref, dir)
|
|
var/turf/us = get_turf(ref)
|
|
if(dir & UP)
|
|
dir &= ~UP
|
|
return get_step(GET_TURF_ABOVE(us), dir)
|
|
if(dir & DOWN)
|
|
dir &= ~DOWN
|
|
return get_step(GET_TURF_BELOW(us), dir)
|
|
return get_step(ref, dir)
|
|
|
|
/proc/get_dir_multiz(turf/us, turf/them)
|
|
us = get_turf(us)
|
|
them = get_turf(them)
|
|
if(!us || !them)
|
|
return NONE
|
|
if(us.z == them.z)
|
|
return get_dir(us, them)
|
|
else
|
|
var/turf/T = GET_TURF_ABOVE(us)
|
|
var/dir = NONE
|
|
if(T && (T.z == them.z))
|
|
dir = UP
|
|
else
|
|
T = GET_TURF_BELOW(us)
|
|
if(T && (T.z == them.z))
|
|
dir = DOWN
|
|
else
|
|
return get_dir(us, them)
|
|
return (dir | get_dir(us, them))
|
|
|
|
/proc/get_lowest_turf(atom/ref)
|
|
var/turf/us = get_turf(ref)
|
|
var/turf/next = GET_TURF_BELOW(us)
|
|
while(next)
|
|
us = next
|
|
next = GET_TURF_BELOW(us)
|
|
return us
|
|
|
|
// I wish this was lisp
|
|
/proc/get_highest_turf(atom/ref)
|
|
var/turf/us = get_turf(ref)
|
|
var/turf/next = GET_TURF_ABOVE(us)
|
|
while(next)
|
|
us = next
|
|
next = GET_TURF_ABOVE(us)
|
|
return us
|