Skip to content

Commit

Permalink
Allow airlock helpers to work with windoors (Monkestation#1568)
Browse files Browse the repository at this point in the history
* Allow airlock helpers to work with windoors

* fix that

* whoops
  • Loading branch information
Absolucy authored Apr 3, 2024
1 parent 708edfe commit 4131716
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 8 deletions.
11 changes: 3 additions & 8 deletions _maps/~monkestation/RandomBars/Tram/tram_bar_beachside.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -426,8 +426,7 @@
"nN" = (
/obj/structure/ladder,
/obj/machinery/door/window/left/directional/north{
name = "Bar Backroom Access";
req_one_access = list("bar")
name = "Bar Backroom Access"
},
/obj/structure/window/reinforced/spawner/directional/west,
/obj/structure/window/reinforced/spawner/directional/east,
Expand Down Expand Up @@ -605,8 +604,7 @@
name = "Kitchen Counter Shutters"
},
/obj/machinery/door/window/left/directional/west{
name = "Kitchen";
req_one_access = list("kitchen")
name = "Kitchen"
},
/obj/effect/mapping_helpers/airlock/access/all/service/kitchen,
/turf/open/floor/wood,
Expand Down Expand Up @@ -820,7 +818,6 @@
/area/station/commons/lounge)
"zo" = (
/obj/machinery/door/window/left/directional/south{
req_one_access = list("kitchen");
name = "Kitchen"
},
/obj/effect/turf_decal/siding/wood,
Expand Down Expand Up @@ -877,8 +874,7 @@
/area/station/commons/lounge)
"AC" = (
/obj/machinery/door/window/left/directional/east{
name = "Bar";
req_one_access = list("bar")
name = "Bar"
},
/obj/effect/turf_decal/siding/wood{
dir = 4
Expand Down Expand Up @@ -1558,7 +1554,6 @@
/area/station/commons/lounge)
"TG" = (
/obj/machinery/door/window/left/directional/south{
req_one_access = list("kitchen");
name = "Kitchen Coldroom Access"
},
/obj/effect/turf_decal/siding/wood{
Expand Down
2 changes: 2 additions & 0 deletions code/modules/mapping/mapping_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@
layer = DOOR_HELPER_LAYER
late = TRUE

/* replaced in monkestation\code\modules\mapping\mapping_helpers.dm
/obj/effect/mapping_helpers/airlock/Initialize(mapload)
. = ..()
if(!mapload)
Expand All @@ -121,6 +122,7 @@
log_mapping("[src] failed to find an airlock at [AREACOORD(src)]")
else
payload(airlock)
*/

/obj/effect/mapping_helpers/airlock/LateInitialize()
. = ..()
Expand Down
15 changes: 15 additions & 0 deletions monkestation/code/modules/mapping/access_helpers.dm
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
/obj/effect/mapping_helpers/airlock/access/any/payload_windoor(obj/machinery/door/window/windoor)
if(windoor.req_access != null)
log_mapping("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!")
else
var/list/access_list = get_access()
windoor.req_one_access += access_list

/obj/effect/mapping_helpers/airlock/access/all/payload_windoor(obj/machinery/door/window/windoor)
if(windoor.req_one_access != null)
log_mapping("[src] at [AREACOORD(src)] tried to set req_one_access, but req_access was already set!")
else
var/list/access_list = get_access()
windoor.req_access += access_list


/obj/effect/mapping_helpers/airlock/access/all/service/kitchen/east_offset
offset_dir = EAST

Expand Down
27 changes: 27 additions & 0 deletions monkestation/code/modules/mapping/mapping_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,30 @@

/obj/effect/area_power_helper/requires_power
set_state = TRUE

/obj/effect/mapping_helpers/airlock/Initialize(mapload)
. = ..()
if(!mapload)
log_mapping("[src] spawned outside of mapload!")
return

var/turf/spot = (offset_dir ? get_step(src, offset_dir) : loc)
if(!try_for_airlock(spot) && !try_for_windoor(spot))
log_mapping("[src] failed to find an airlock at [AREACOORD(src)]")

/obj/effect/mapping_helpers/airlock/proc/try_for_airlock(turf/spot)
. = FALSE
var/obj/machinery/door/airlock/airlock = locate(/obj/machinery/door/airlock) in spot
if(!QDELETED(airlock))
payload(airlock)
return TRUE

/obj/effect/mapping_helpers/airlock/proc/try_for_windoor(turf/spot)
. = FALSE
var/obj/machinery/door/window/windoor = locate(/obj/machinery/door/window) in spot
if(!QDELETED(windoor))
payload_windoor(windoor)
return TRUE

/obj/effect/mapping_helpers/airlock/proc/payload_windoor(obj/machinery/door/window/windoor)
return

0 comments on commit 4131716

Please sign in to comment.