From 3b1407371f532a4ddba4412b910ce445393f271f Mon Sep 17 00:00:00 2001 From: S34N <12197162+S34NW@users.noreply.github.com> Date: Sat, 23 Apr 2022 17:47:24 +0100 Subject: [PATCH] Stops firelocks stealing airlock helper values by applying them to all doors in a turf (#17649) * Fixes airlock helpers only applying to firelocks under doors * adds blacklist, makes icon show for windoors --- code/game/machinery/doors/airlock.dm | 25 ------------------------- code/game/machinery/doors/door.dm | 25 +++++++++++++++++++++++++ code/modules/mapping/mapping_helpers.dm | 11 +++++++---- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c0d163e59c2..8eeb7a6a2a2 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -654,31 +654,6 @@ About the new airlock wires panel: if(user) attack_ai(user) -/obj/machinery/door/airlock/proc/check_unres() //unrestricted sides. This overlay indicates which directions the player can access even without an ID - if(hasPower() && unres_sides) - if(unres_sides & NORTH) - var/image/I = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_n") //layer=src.layer+1 - I.pixel_y = 32 - set_light(l_range = 1, l_power = 1, l_color = "#00FF00") - add_overlay(I) - if(unres_sides & SOUTH) - var/image/I = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_s") //layer=src.layer+1 - I.pixel_y = -32 - set_light(l_range = 1, l_power = 1, l_color = "#00FF00") - add_overlay(I) - if(unres_sides & EAST) - var/image/I = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_e") //layer=src.layer+1 - I.pixel_x = 32 - set_light(l_range = 1, l_power = 1, l_color = "#00FF00") - add_overlay(I) - if(unres_sides & WEST) - var/image/I = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_w") //layer=src.layer+1 - I.pixel_x = -32 - set_light(l_range = 1, l_power = 1, l_color = "#00FF00") - add_overlay(I) - else - set_light(0) - /obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target, height=0) if(isElectrified() && density && istype(mover, /obj/item)) var/obj/item/I = mover diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 5617aa35d00..6aeed9f1161 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -380,6 +380,31 @@ return 1 return 0 +/obj/machinery/door/proc/check_unres() //unrestricted sides. This overlay indicates which directions the player can access even without an ID + if(hasPower() && unres_sides) + if(unres_sides & NORTH) + var/image/I = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_n") //layer=src.layer+1 + I.pixel_y = 32 + set_light(l_range = 1, l_power = 1, l_color = "#00FF00") + add_overlay(I) + if(unres_sides & SOUTH) + var/image/I = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_s") //layer=src.layer+1 + I.pixel_y = -32 + set_light(l_range = 1, l_power = 1, l_color = "#00FF00") + add_overlay(I) + if(unres_sides & EAST) + var/image/I = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_e") //layer=src.layer+1 + I.pixel_x = 32 + set_light(l_range = 1, l_power = 1, l_color = "#00FF00") + add_overlay(I) + if(unres_sides & WEST) + var/image/I = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_w") //layer=src.layer+1 + I.pixel_x = -32 + set_light(l_range = 1, l_power = 1, l_color = "#00FF00") + add_overlay(I) + else + set_light(0) + /obj/machinery/door/morgue icon = 'icons/obj/doors/doormorgue.dmi' diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index e872dc4366c..b068d52b309 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -74,6 +74,7 @@ /obj/effect/mapping_helpers/airlock layer = DOOR_HELPER_LAYER late = TRUE + var/list/blacklist = list(/obj/machinery/door/firedoor, /obj/machinery/door/poddoor, /obj/machinery/door/unpowered) /obj/effect/mapping_helpers/airlock/Initialize(mapload) . = ..() @@ -81,11 +82,13 @@ log_world("[src] spawned outside of mapload!") return - var/obj/machinery/door/airlock = locate(/obj/machinery/door) in loc - if(!airlock) + if(!(locate(/obj/machinery/door) in get_turf(src))) log_world("[src] failed to find an airlock at [AREACOORD(src)]") - else - payload(airlock) + + for(var/obj/machinery/door/D in get_turf(src)) + if(!is_type_in_list(D, blacklist)) + payload(D) + return INITIALIZE_HINT_QDEL /obj/effect/mapping_helpers/airlock/proc/payload(obj/machinery/door/airlock/payload)