From 41faee7a806cd55dd0c52133f5a2b09d74385316 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 31 Jul 2024 20:17:29 +0300 Subject: [PATCH 1/4] fire alarms --- code/game/machinery/firealarm.dm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index a8f5d048da866..6d5148d1610ac 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -28,6 +28,7 @@ resistance_flags = FIRE_PROOF layer = ABOVE_WINDOW_LAYER zmm_flags = ZMM_MANGLE_PLANES + req_access = null light_power = 0 light_range = 7 @@ -37,9 +38,12 @@ var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone var/last_alarm = 0 var/area/myarea = null + var/locked = FALSE //Are we locked? /obj/machinery/firealarm/Initialize(mapload, dir, building) . = ..() + if (!req_access) + req_access = list(ACCESS_ATMOSPHERICS) if(building) buildstage = 0 panel_open = TRUE @@ -138,6 +142,26 @@ if(user) log_game("[user] reset a fire alarm at [COORD(src)]") +/obj/machinery/firealarm/proc/lock(mob/user) + if(allowed(user)) + locked = TRUE + balloon_alert(user, "Locked") + else + balloon_alert(user, "Access Denied!") + +/obj/machinery/firealarm/proc/unlock(mob/user) + if(allowed(user)) + locked = FALSE + balloon_alert(user, "Unlocked") + else + balloon_alert(user, "Access Denied!") + +/obj/machinery/firealarm/AltClick(mob/user) + if(locked) + unlock(user) + else + lock(user) + /obj/machinery/firealarm/attack_hand(mob/user) if(buildstage != 2) return ..() @@ -145,6 +169,9 @@ play_click_sound("button") var/area/A = get_area(src) if(A.fire) + if(locked) + balloon_alert(user, "Cover is locked!") + return reset(user) else alarm(user) From b8f6cd54e3570f1cbf329bcf0f1e8e02ef0ae82f Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 31 Jul 2024 20:50:56 +0300 Subject: [PATCH 2/4] Update firealarm.dm --- code/game/machinery/firealarm.dm | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 6d5148d1610ac..1fd875290137d 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -122,6 +122,7 @@ /obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) if((temperature > T0C + 200 || temperature < BODYTEMP_COLD_DAMAGE_LIMIT) && (last_alarm+FIREALARM_COOLDOWN < world.time) && !(obj_flags & EMAGGED) && detecting && !machine_stat) alarm() + try_lock(null, TRUE) ..() /obj/machinery/firealarm/proc/alarm(mob/user) @@ -142,25 +143,21 @@ if(user) log_game("[user] reset a fire alarm at [COORD(src)]") -/obj/machinery/firealarm/proc/lock(mob/user) - if(allowed(user)) - locked = TRUE - balloon_alert(user, "Locked") - else - balloon_alert(user, "Access Denied!") - -/obj/machinery/firealarm/proc/unlock(mob/user) - if(allowed(user)) - locked = FALSE - balloon_alert(user, "Unlocked") +/obj/machinery/firealarm/proc/try_lock(mob/user, force_lock = FALSE) + if(allowed(user) || !user || force_lock) + if(!locked || force_lock) + locked = TRUE + balloon_alert(user, "Locked") + else + locked = FALSE + balloon_alert(user, "Unlocked") + playsound(src, 'sound/machines/beep.ogg', 50, 1) else balloon_alert(user, "Access Denied!") + playsound(src, 'sound/machines/terminal_error.ogg', 50, 1) /obj/machinery/firealarm/AltClick(mob/user) - if(locked) - unlock(user) - else - lock(user) + try_lock(user) /obj/machinery/firealarm/attack_hand(mob/user) if(buildstage != 2) @@ -171,6 +168,7 @@ if(A.fire) if(locked) balloon_alert(user, "Cover is locked!") + playsound(loc, 'sound/effects/glassknock.ogg', 10, FALSE, frequency = 32000) return reset(user) else From 3ad78d0ba3c2b3ec319055feaf080bbc84e30b68 Mon Sep 17 00:00:00 2001 From: XeonMations Date: Wed, 7 Aug 2024 03:34:24 +0300 Subject: [PATCH 3/4] made the lights indicate the lock --- code/game/machinery/firealarm.dm | 28 ++++++++++++++++++---------- icons/obj/monitors.dmi | Bin 13228 -> 14203 bytes 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 1fd875290137d..284f1bcce4d6d 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -54,8 +54,7 @@ /obj/machinery/firealarm/proc/handle_alert(datum/source, new_alert) SIGNAL_HANDLER - if(is_station_level(z)) - update_appearance() + update_appearance() /obj/machinery/firealarm/Destroy() myarea.firereset(src) @@ -81,21 +80,27 @@ . += emissive_appearance(icon, "fire_[SEC_LEVEL_GREEN]", layer, alpha = 255) ADD_LUM_SOURCE(src, LUM_SOURCE_MANAGED_OVERLAY) - if(!detecting || !A.fire) //If this is false, leave the green light missing. A good hint to anyone paying attention. - . += "fire_off" - . += mutable_appearance(icon, "fire_off") - . += emissive_appearance(icon, "fire_off", layer, alpha = 255) - ADD_LUM_SOURCE(src, LUM_SOURCE_MANAGED_OVERLAY) - else if(obj_flags & EMAGGED) + if(obj_flags & EMAGGED) . += "fire_emagged" . += mutable_appearance(icon, "fire_emagged") . += emissive_appearance(icon, "fire_emagged", layer, alpha = 255) ADD_LUM_SOURCE(src, LUM_SOURCE_MANAGED_OVERLAY) - else + return //If it's emagged, don't do anything else for overlays. + if(locked) + . += "fire_locked" + . += mutable_appearance(icon, "fire_locked", layer + 1) //If we are locked, overlay that over the fire_off + . += emissive_appearance(icon, "fire_locked", layer, alpha = 255) + ADD_LUM_SOURCE(src, LUM_SOURCE_MANAGED_OVERLAY) + if(detecting && A.fire) . += "fire_on" - . += mutable_appearance(icon, "fire_on") + . += mutable_appearance(icon, "fire_on", layer + 2) //If we are locked and there is a fire, overlay the fire detection overlay ontop of the locked one. . += emissive_appearance(icon, "fire_on", layer, alpha = 255) ADD_LUM_SOURCE(src, LUM_SOURCE_MANAGED_OVERLAY) + else + . += "fire_off" + . += mutable_appearance(icon, "fire_off") + . += emissive_appearance(icon, "fire_off", layer, alpha = 255) + ADD_LUM_SOURCE(src, LUM_SOURCE_MANAGED_OVERLAY) /obj/machinery/firealarm/emp_act(severity) . = ..() @@ -132,6 +137,7 @@ var/area/A = get_area(src) A.firealert(src) playsound(loc, 'goon/sound/machinery/FireAlarm.ogg', 75) + update_appearance() if(user) log_game("[user] triggered a fire alarm at [COORD(src)]") @@ -140,6 +146,7 @@ return var/area/A = get_area(src) A.firereset(src) + update_appearance() if(user) log_game("[user] reset a fire alarm at [COORD(src)]") @@ -155,6 +162,7 @@ else balloon_alert(user, "Access Denied!") playsound(src, 'sound/machines/terminal_error.ogg', 50, 1) + update_appearance() /obj/machinery/firealarm/AltClick(mob/user) try_lock(user) diff --git a/icons/obj/monitors.dmi b/icons/obj/monitors.dmi index ca919d0b9672c2d942f5010361ca67925eb80a27..8f24658c76135ad9c3f355fc5d5bad65bbb73e95 100644 GIT binary patch literal 14203 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 literal 13228 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 F{u`O_M8E(5 From 11646a37978b0170a7a6a21a012ab424950451aa Mon Sep 17 00:00:00 2001 From: XeonMations Date: Thu, 15 Aug 2024 12:25:12 +0300 Subject: [PATCH 4/4] ID card activation --- code/game/machinery/firealarm.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 91838b318c286..d429b35023c00 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -200,6 +200,8 @@ /obj/machinery/firealarm/attackby(obj/item/W, mob/user, params) add_fingerprint(user) + if(istype(W, /obj/item/card/id)||istype(W, /obj/item/modular_computer/tablet/pda)) // trying to unlock the cover with an ID card + try_lock(user) if(W.tool_behaviour == TOOL_SCREWDRIVER && buildstage == 2) W.play_tool_sound(src) panel_open = !panel_open