diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 987bba64be4..ccc9a151a41 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -547,6 +547,25 @@ "set_internal_pressure" = 0 ), signal_source) +/obj/machinery/airalarm/update_appearance(updates) + . = ..() + + if(panel_open || (machine_stat & (NOPOWER|BROKEN)) || shorted) + set_light(0) + return + + var/area/our_area = get_area(src) + var/color + switch(max(danger_level, !!our_area.active_alarms[ALARM_ATMOS])) + if(0) + color = "#03A728" // green + if(1) + color = "#EC8B2F" // yellow + if(2) + color = "#DA0205" // red + + set_light(1.4, 1, color) + /obj/machinery/airalarm/update_icon_state() if(panel_open) switch(buildstage) @@ -558,19 +577,27 @@ icon_state = "alarm_b1" return ..() + icon_state = "alarmp" + return ..() + +/obj/machinery/airalarm/update_overlays() + . = ..() + if((machine_stat & (NOPOWER|BROKEN)) || shorted) - icon_state = "alarmp" - return ..() + return var/area/our_area = get_area(src) + var/state switch(max(danger_level, !!our_area.active_alarms[ALARM_ATMOS])) if(0) - icon_state = "alarm0" + state = "alarm0" if(1) - icon_state = "alarm2" //yes, alarm2 is yellow alarm + state = "alarm2" //yes, alarm2 is yellow alarm if(2) - icon_state = "alarm1" - return ..() + state = "alarm1" + + . += mutable_appearance(icon, state) + . += emissive_appearance(icon, state, alpha = src.alpha) /** * main proc for throwing a shitfit if the air isnt right. diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 7e786f34f55..b1faed4eaea 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -80,12 +80,28 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth, 26) if(event_source) event_source.trigger_event(usr) event_source = null + update_appearance() . = TRUE if("bsa_unlock") if(!event_source) sendEvent(KEYCARD_BSA_UNLOCK) . = TRUE +/obj/machinery/keycard_auth/update_appearance(updates) + . = ..() + + if(event_source && !(machine_stat & (NOPOWER|BROKEN))) + set_light(1.4, 0.7, "#5668E1") + else + set_light(0) + +/obj/machinery/keycard_auth/update_overlays() + . = ..() + + if(event_source && !(machine_stat & (NOPOWER|BROKEN))) + . += mutable_appearance(icon, "auth_on") + . += emissive_appearance(icon, "auth_on", alpha = src.alpha) + /obj/machinery/keycard_auth/proc/sendEvent(event_type) triggerer = usr event = event_type @@ -99,13 +115,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth, 26) waiting = FALSE /obj/machinery/keycard_auth/proc/triggerEvent(source) - icon_state = "auth_on" event_source = source + update_appearance() addtimer(CALLBACK(src, .proc/eventTriggered), 20) /obj/machinery/keycard_auth/proc/eventTriggered() - icon_state = "auth_off" event_source = null + update_appearance() /obj/machinery/keycard_auth/proc/trigger_event(confirmer) log_game("[key_name(triggerer)] triggered and [key_name(confirmer)] confirmed event [event]") diff --git a/icons/obj/monitors.dmi b/icons/obj/monitors.dmi index 38693bc0a0c..5433c042731 100644 Binary files a/icons/obj/monitors.dmi and b/icons/obj/monitors.dmi differ diff --git a/modular_skyrat/modules/aesthetics/airalarm/icons/airalarm.dmi b/modular_skyrat/modules/aesthetics/airalarm/icons/airalarm.dmi index 640e0c5a50e..7267d16db23 100644 Binary files a/modular_skyrat/modules/aesthetics/airalarm/icons/airalarm.dmi and b/modular_skyrat/modules/aesthetics/airalarm/icons/airalarm.dmi differ