mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 00:53:23 +01:00
'Unrestricted access from direction' for windoors (#16501)
* Unrestricted Windoor Directions * Mapping helpers
This commit is contained in:
@@ -40,7 +40,6 @@
|
||||
#define BELOW_OPEN_DOOR_LAYER 2.6
|
||||
#define BLASTDOOR_LAYER 2.65
|
||||
#define OPEN_DOOR_LAYER 2.7
|
||||
#define DOOR_HELPER_LAYER 2.71 //keep this above OPEN_DOOR_LAYER
|
||||
#define PROJECTILE_HIT_THRESHHOLD_LAYER 2.75 //projectiles won't hit objects at or below this layer if possible
|
||||
#define TABLE_LAYER 2.8
|
||||
#define BELOW_OBJ_LAYER 2.9
|
||||
@@ -52,6 +51,7 @@
|
||||
#define SHUTTER_LAYER 3.12 // HERE BE DRAGONS
|
||||
#define ABOVE_OBJ_LAYER 3.2
|
||||
#define ABOVE_WINDOW_LAYER 3.3
|
||||
#define DOOR_HELPER_LAYER 3.31 // Keep this above doors and windoors
|
||||
#define SIGN_LAYER 3.4
|
||||
#define NOT_HIGH_OBJ_LAYER 3.5
|
||||
#define HIGH_OBJ_LAYER 3.6
|
||||
|
||||
@@ -85,6 +85,13 @@
|
||||
else
|
||||
do_animate("deny")
|
||||
|
||||
/obj/machinery/door/window/unrestricted_side(mob/M)
|
||||
var/mob_dir = get_dir(src, M)
|
||||
if(mob_dir == 0) // If the mob is inside the tile
|
||||
mob_dir = GetOppositeDir(dir) // Set it to the inside direction of the windoor
|
||||
|
||||
return mob_dir & unres_sides
|
||||
|
||||
/obj/machinery/door/window/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
if(istype(mover) && mover.checkpass(PASSGLASS))
|
||||
return 1
|
||||
|
||||
@@ -67,6 +67,11 @@
|
||||
/obj/effect/mapping_helpers/no_lava
|
||||
icon_state = "no_lava"
|
||||
|
||||
/obj/effect/mapping_helpers/no_lava/New()
|
||||
var/turf/T = get_turf(src)
|
||||
T.flags |= NO_LAVA_GEN
|
||||
..()
|
||||
|
||||
/obj/effect/mapping_helpers/airlock
|
||||
layer = DOOR_HELPER_LAYER
|
||||
|
||||
@@ -78,13 +83,9 @@
|
||||
if(!mapload)
|
||||
log_world("### MAP WARNING, [src] spawned outside of mapload!")
|
||||
return
|
||||
var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in src.loc
|
||||
if(airlock)
|
||||
airlock.unres_sides ^= dir
|
||||
var/obj/machinery/door/door = locate(/obj/machinery/door) in loc
|
||||
if(door)
|
||||
door.unres_sides ^= dir
|
||||
else
|
||||
log_world("### MAP WARNING, [src] failed to find an airlock at [AREACOORD(src)]")
|
||||
..()
|
||||
/obj/effect/mapping_helpers/no_lava/New()
|
||||
var/turf/T = get_turf(src)
|
||||
T.flags |= NO_LAVA_GEN
|
||||
. = ..()
|
||||
..()
|
||||
|
||||
@@ -203,6 +203,7 @@
|
||||
windoor.req_one_access = electronics.selected_accesses
|
||||
else
|
||||
windoor.req_access = electronics.selected_accesses
|
||||
windoor.unres_sides = electronics.unres_access_from
|
||||
windoor.electronics = src.electronics
|
||||
electronics.forceMove(windoor)
|
||||
electronics = null
|
||||
|
||||
Reference in New Issue
Block a user