diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index 409a1893057..4a328aeadd8 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -63,7 +63,7 @@ /datum/weather/rad_storm/end() if(..()) return - priority_announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert", ANNOUNCER_RADIATIONPASSED) //SKYRAT EDIT CHANGE + priority_announce("The station has passed the radiation belt, please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Radiation Alert Cleared", ANNOUNCER_RADIATIONPASSED) // BUBBER EDIT CHANGE status_alarm(FALSE) /datum/weather/rad_storm/proc/do_mutate(mob/living/carbon/human/mutant) diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index 2ec4c6b43ff..24e7c101ace 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -207,7 +207,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/keycard_auth/wall_mounted, 26) find_and_hang_on_wall() GLOBAL_VAR_INIT(emergency_access, FALSE) -/proc/make_maint_all_access() +/proc/make_maint_all_access(silent = FALSE) // BUBBER EDIT CHANGE - Silent Emergency Access for(var/area/station/maintenance/area in GLOB.areas) for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) for(var/turf/area_turf as anything in zlevel_turfs) @@ -215,11 +215,12 @@ GLOBAL_VAR_INIT(emergency_access, FALSE) airlock.emergency = TRUE airlock.update_icon(ALL, 0) - minor_announce("Access restrictions on maintenance and external airlocks have been lifted.", "Attention! Station-wide emergency declared!",1) + if(!silent) // BUBBER EDIT ADDITION - Silent Emergency Access + minor_announce("Access restrictions on maintenance and external airlocks have been lifted.", "Attention! Station-wide emergency declared!",1) GLOB.emergency_access = TRUE SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "enabled")) -/proc/revoke_maint_all_access() +/proc/revoke_maint_all_access(silent = FALSE) // BUBBER EDIT CHANGE - Silent Emergency Access for(var/area/station/maintenance/area in GLOB.areas) for (var/list/zlevel_turfs as anything in area.get_zlevel_turf_lists()) for(var/turf/area_turf as anything in zlevel_turfs) @@ -227,7 +228,8 @@ GLOBAL_VAR_INIT(emergency_access, FALSE) airlock.emergency = FALSE airlock.update_icon(ALL, 0) - minor_announce("Access restrictions in maintenance areas have been restored.", "Attention! Station-wide emergency rescinded:") + if(!silent) // BUBBER EDIT ADDITION - Silent Emergency Access + minor_announce("Access restrictions in maintenance areas have been restored.", "Attention! Station-wide emergency rescinded:") GLOB.emergency_access = FALSE SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("emergency maintenance access", "disabled")) diff --git a/modular_skyrat/modules/alerts/code/security_level_procs.dm b/modular_skyrat/modules/alerts/code/security_level_procs.dm index b984a61dd5d..4f7b68c3820 100644 --- a/modular_skyrat/modules/alerts/code/security_level_procs.dm +++ b/modular_skyrat/modules/alerts/code/security_level_procs.dm @@ -12,5 +12,5 @@ GLOB.force_eng_override = TRUE SEND_GLOBAL_SIGNAL(COMSIG_GLOB_FORCE_ENG_OVERRIDE, TRUE) - if(maint_access) - make_maint_all_access() + if(maint_access && !GLOB.emergency_access) + make_maint_all_access(silent = TRUE) diff --git a/modular_skyrat/modules/alerts/sound/alerts/radiation.ogg b/modular_skyrat/modules/alerts/sound/alerts/radiation.ogg index d3c4622105f..05b22c7970d 100644 Binary files a/modular_skyrat/modules/alerts/sound/alerts/radiation.ogg and b/modular_skyrat/modules/alerts/sound/alerts/radiation.ogg differ diff --git a/modular_skyrat/modules/alerts/sound/alerts/radiation1.ogg b/modular_skyrat/modules/alerts/sound/alerts/radiation1.ogg deleted file mode 100644 index c789c8c5180..00000000000 Binary files a/modular_skyrat/modules/alerts/sound/alerts/radiation1.ogg and /dev/null differ diff --git a/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm b/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm index b6526ed67e1..bcdca55ecc1 100644 --- a/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm +++ b/modular_zubbers/code/datums/weather/weather_types/radiation_storm.dm @@ -1,3 +1,8 @@ +/datum/weather/rad_storm + end_duration = 3 SECONDS + telegraph_message = span_userdanger("The air begins to grow warm.") + var/maint_flipped = FALSE + /datum/weather/rad_storm/New(...) LAZYOR(protected_areas, list( /area/station/terminal, @@ -9,3 +14,14 @@ /area/ruin/unpowered/primitive_catgirl_den, )) . = ..() + +/datum/weather/rad_storm/telegraph() + . = ..() + if(!GLOB.emergency_access) + maint_flipped = TRUE + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(make_maint_all_access), TRUE), 0.5 SECONDS) // timed to match the status display + +/datum/weather/rad_storm/end() + . = ..() + if(maint_flipped) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(revoke_maint_all_access), FALSE), 45 SECONDS) diff --git a/modular_zubbers/code/modules/events/ev_roleplay_check.dm b/modular_zubbers/code/modules/events/ev_roleplay_check.dm index 370d8c68102..4ee30bb26d0 100644 --- a/modular_zubbers/code/modules/events/ev_roleplay_check.dm +++ b/modular_zubbers/code/modules/events/ev_roleplay_check.dm @@ -17,15 +17,24 @@ GLOBAL_LIST_EMPTY(dorms_areas) break return filtered_areas -/datum/weather/rad_storm/send_alert(alert_msg, alert_sfx) +/datum/weather/rad_storm/send_alert(alert_msg, alert_sfx, alert_sfx_vol = 100) for(var/area/impacted_area as anything in impacted_areas) for(var/mob/living/player in impacted_area.contents) if(!can_get_alert(player)) continue if(alert_msg) to_chat(player, alert_msg) + + if(!alert_sfx) + return + + for(var/z_level in impacted_z_levels) + for(var/mob/player as anything in SSmobs.clients_by_zlevel[z_level]) + if(!can_get_alert(player)) + continue if(alert_sfx) - SEND_SOUND(player, sound(alert_sfx)) + player.stop_sound_channel(CHANNEL_WEATHER) + SEND_SOUND(player, sound(alert_sfx, channel = CHANNEL_WEATHER, volume = alert_sfx_vol)) /** * Checks if a player meets certain conditions to exclude them from event selection. diff --git a/modular_zubbers/code/modules/events/radiation_storm.dm b/modular_zubbers/code/modules/events/radiation_storm.dm new file mode 100644 index 00000000000..375c9e9d09b --- /dev/null +++ b/modular_zubbers/code/modules/events/radiation_storm.dm @@ -0,0 +1,10 @@ +/datum/round_event/radiation_storm/announce(fake) + priority_announce( + text = "High levels of radiation detected near the station. The entire crew of the station is recomended to find shelter in the technical tunnels of the station.", + title = "Radiation Alert", + sound = ANNOUNCER_RADIATION, + ) + // we trigger the airlocks for a bit to not immediately give away that it's fake + if(fake && !GLOB.emergency_access) + make_maint_all_access(silent = TRUE) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(revoke_maint_all_access), FALSE), 90 SECONDS) diff --git a/tgstation.dme b/tgstation.dme index 8b3a1663a77..ea348252671 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9293,6 +9293,7 @@ #include "modular_zubbers\code\modules\events\ev_roleplay_check.dm" #include "modular_zubbers\code\modules\events\meteor_wave.dm" #include "modular_zubbers\code\modules\events\pipe_carp.dm" +#include "modular_zubbers\code\modules\events\radiation_storm.dm" #include "modular_zubbers\code\modules\events\scrubber_overflow.dm" #include "modular_zubbers\code\modules\events\ghost_role\blob.dm" #include "modular_zubbers\code\modules\examine_tgui\examine_tgui.dm"