diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 84dea24683d..5847565bf26 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -293,7 +293,12 @@ GLOBAL_LIST_INIT(status_display_approved_pictures, list( "default", "biohazard", "lockdown", + "greenalert", + "bluealert", "redalert", + "deltaalert", + "radiation", + "currentalert", //For automatic set of status display on current level )) // Members of status_display_approved_pictures that are actually states and not alert values diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index e30b73138fd..c727b17f0ef 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -37,7 +37,10 @@ SUBSYSTEM_DEF(communications) COOLDOWN_START(src, silicon_message_cooldown, COMMUNICATION_COOLDOWN_AI) else var/list/message_data = user.treat_message(input) - priority_announce(html_decode(message_data["message"]), null, 'sound/misc/announce.ogg', "[syndicate? "Syndicate " : ""]Captain", has_important_message = TRUE, players = players) + if(syndicate) + priority_announce(html_decode(message_data["message"]), null, 'sound/misc/announce_syndi.ogg', "Syndicate Captain", has_important_message = TRUE, players = players) + else + priority_announce(html_decode(message_data["message"]), null, 'sound/misc/announce.ogg', "Captain", has_important_message = TRUE, players = players) COOLDOWN_START(src, nonsilicon_message_cooldown, COMMUNICATION_COOLDOWN) user.log_talk(input, LOG_SAY, tag="priority announcement") message_admins("[ADMIN_LOOKUPFLW(user)] has made a priority announcement.") diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 6de510be91a..7b6b86e6cfb 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -380,7 +380,19 @@ if(picture in GLOB.status_display_state_pictures) post_status(picture) else - post_status("alert", picture) + if(picture == "currentalert") // You cannot set Code Blue display during Code Red and similiar + switch(SSsecurity_level.get_current_level_as_number()) + if(SEC_LEVEL_DELTA) + post_status("alert", "deltaalert") + if(SEC_LEVEL_RED) + post_status("alert", "redalert") + if(SEC_LEVEL_BLUE) + post_status("alert", "bluealert") + if(SEC_LEVEL_GREEN) + post_status("alert", "greenalert") + else + post_status("alert", picture) + playsound(src, SFX_TERMINAL_TYPE, 50, FALSE) if ("toggleAuthentication") // Log out if we're logged in diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 99d4f716c9c..cb2c541d72b 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -199,7 +199,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) var/mob/living/L = usr message = L.treat_message(message)["message"] - minor_announce(message, "[department] Announcement:", html_encode = FALSE) + minor_announce(message, "[department] Announcement:", html_encode = FALSE, sound_override = 'sound/misc/announce_dig.ogg') GLOB.news_network.submit_article(message, department, "Station Announcements", null) usr.log_talk(message, LOG_SAY, tag="station announcement from [src]") message_admins("[ADMIN_LOOKUPFLW(usr)] has made a station announcement from [src] at [AREACOORD(usr)].") diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index ca3e58dd9aa..f955e61f864 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -494,9 +494,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/ai, 32) var/static/list/picture_options = list( "Default" = "default", + "Delta Alert" = "deltaalert", "Red Alert" = "redalert", + "Blue Alert" = "bluealert", + "Green Alert" = "greenalert", "Biohazard" = "biohazard", "Lockdown" = "lockdown", + "Radiation" = "radiation", "Happy" = "ai_happy", "Neutral" = "ai_neutral", "Very Happy" = "ai_veryhappy", diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 20655040ba1..d1f0ed82809 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -546,7 +546,7 @@ Striking a noncultist, however, will tear their flesh."} if(totalcurses >= MAX_SHUTTLE_CURSES && (world.time < first_curse_time + SHUTTLE_CURSE_OMFG_TIMESPAN)) var/omfg_message = pick_list(CULT_SHUTTLE_CURSE, "omfg_announce") || "LEAVE US ALONE!" - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(priority_announce), omfg_message, "Priority Alert", 'sound/misc/notice1.ogg', null, "Nanotrasen Department of Transportation: Central Command"), rand(2 SECONDS, 6 SECONDS)) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(priority_announce), omfg_message, "Priority Alert", 'sound/misc/announce_syndi.ogg', null, "Nanotrasen Department of Transportation: Central Command"), rand(2 SECONDS, 6 SECONDS)) for(var/mob/iter_player as anything in GLOB.player_list) if(IS_CULTIST(iter_player)) iter_player.client?.give_award(/datum/award/achievement/misc/cult_shuttle_omfg, iter_player) diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm index 1097a2a031a..9b080b59260 100644 --- a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm +++ b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm @@ -413,7 +413,7 @@ var/critical = selected_fuel.meltdown_flags & HYPERTORUS_FLAG_CRITICAL_MELTDOWN if(critical) priority_announce("WARNING - The explosion will likely cover a big part of the station and the coming EMP will wipe out most of the electronics. \ - Get as far away as possible from the reactor or find a way to shut it down.", "Alert") + Get as far away as possible from the reactor or find a way to shut it down.", "Alert", 'sound/misc/notice3.ogg') var/speaking = "[emergency_alert] The Hypertorus fusion reactor has reached critical integrity failure. Emergency magnetic dampeners online." radio.talk_into(src, speaking, common_channel, language = get_selected_language()) diff --git a/code/modules/events/meteors/dark_matteor_event.dm b/code/modules/events/meteors/dark_matteor_event.dm index 3d5918eb29b..86d38f93e6c 100644 --- a/code/modules/events/meteors/dark_matteor_event.dm +++ b/code/modules/events/meteors/dark_matteor_event.dm @@ -25,7 +25,7 @@ spawn_meteor(list(/obj/effect/meteor/dark_matteor = 1), null, target) /datum/round_event/dark_matteor/announce(fake) - priority_announce("Warning. Excessive tampering of meteor satellites has attracted a dark matt-eor. Signature approaching [GLOB.station_name]. Please brace for impact.", "Meteor Alert", 'sound/effects/curse1.ogg') + priority_announce("Warning. Excessive tampering of meteor satellites has attracted a dark matt-eor. Signature approaching [GLOB.station_name]. Please brace for impact.", "Meteor Alert", 'sound/misc/airraid.ogg') /datum/event_admin_setup/warn_admin/dark_matteor warning_text = "Dark Matt-eors spawn singularities. The round is ending once a dark matt-eor hits the station. Proceed anyways?" diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 548ba753012..9912fa1af64 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -188,14 +188,16 @@ #define IS_ACTING_CAPTAIN 1 #define IS_FULL_CAPTAIN 2 var/is_captain = IS_NOT_CAPTAIN + var/captain_sound = 'sound/misc/notice2.ogg' // If we already have a captain, are they a "Captain" rank and are we allowing multiple of them to be assigned? if(is_captain_job(job)) is_captain = IS_FULL_CAPTAIN + captain_sound = 'sound/misc/announce.ogg' // If we don't have an assigned cap yet, check if this person qualifies for some from of captaincy. else if(!SSjob.assigned_captain && ishuman(character) && SSjob.chain_of_command[rank] && !is_banned_from(ckey, list(JOB_CAPTAIN))) is_captain = IS_ACTING_CAPTAIN if(is_captain != IS_NOT_CAPTAIN) - minor_announce(job.get_captaincy_announcement(character)) + minor_announce(job.get_captaincy_announcement(character), sound_override = captain_sound) SSjob.promote_to_captain(character, is_captain == IS_ACTING_CAPTAIN) #undef IS_NOT_CAPTAIN #undef IS_ACTING_CAPTAIN diff --git a/code/modules/modular_computers/file_system/programs/statusdisplay.dm b/code/modules/modular_computers/file_system/programs/statusdisplay.dm index 9259e6fd468..d55bafb2e9c 100644 --- a/code/modules/modular_computers/file_system/programs/statusdisplay.dm +++ b/code/modules/modular_computers/file_system/programs/statusdisplay.dm @@ -58,7 +58,18 @@ if(picture in GLOB.status_display_state_pictures) post_status(picture) else - post_status("alert", picture) + if(picture == "currentalert") // You cannot set Code Blue display during Code Red and similiar + switch(SSsecurity_level.get_current_level_as_number()) + if(SEC_LEVEL_DELTA) + post_status("alert", "deltaalert") + if(SEC_LEVEL_RED) + post_status("alert", "redalert") + if(SEC_LEVEL_BLUE) + post_status("alert", "bluealert") + if(SEC_LEVEL_GREEN) + post_status("alert", "greenalert") + else + post_status("alert", picture) log_game("[key_name(usr)] has changed the station status display message to \"[picture]\" [loc_name(usr)]") diff --git a/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm b/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm index 106bc727bbd..5d8cfecaa40 100644 --- a/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm +++ b/code/modules/power/supermatter/supermatter_delamination/cascade_delam.dm @@ -90,7 +90,7 @@ return FALSE priority_announce("Attention: Long range anomaly scans indicate abnormal quantities of harmonic flux originating from \ a subject within [station_name()], a resonance collapse may occur.", - "Nanotrasen Star Observation Association") + "Nanotrasen Star Observation Association", 'sound/misc/airraid.ogg') return TRUE /// Signal calls cant sleep, we gotta do this. diff --git a/code/modules/security_levels/security_level_datums.dm b/code/modules/security_levels/security_level_datums.dm index ea78000ab09..8ed94e50411 100644 --- a/code/modules/security_levels/security_level_datums.dm +++ b/code/modules/security_levels/security_level_datums.dm @@ -67,7 +67,7 @@ */ /datum/security_level/red name = "red" - sound = 'sound/misc/notice1.ogg' // The same angry alarm + sound = 'sound/misc/notice3.ogg' // More angry alarm number_level = SEC_LEVEL_RED lowering_to_configuration_key = /datum/config_entry/string/alert_red_downto elevating_to_configuration_key = /datum/config_entry/string/alert_red_upto @@ -80,7 +80,7 @@ */ /datum/security_level/delta name = "delta" - sound = 'sound/misc/notice1.ogg' // The same angry alarm, again + sound = 'sound/misc/airraid.ogg' // Air alarm to signify importance number_level = SEC_LEVEL_DELTA elevating_to_configuration_key = /datum/config_entry/string/alert_delta shuttle_call_time_mod = 0.25 diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 101b39c26fd..a75327b898c 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -572,7 +572,7 @@ destination_dock = "emergency_syndicate" minor_announce("Corruption detected in \ shuttle navigation protocols. Please contact your \ - supervisor.", "SYSTEM ERROR:", alert=TRUE) + supervisor.", "SYSTEM ERROR:", sound_override = 'sound/misc/announce_syndi.ogg') dock_id(destination_dock) mode = SHUTTLE_ENDGAME diff --git a/icons/obj/machines/status_display.dmi b/icons/obj/machines/status_display.dmi index 76d20addff7..b48cad5293e 100644 Binary files a/icons/obj/machines/status_display.dmi and b/icons/obj/machines/status_display.dmi differ diff --git a/icons/obj/machines/wallmounts.dmi b/icons/obj/machines/wallmounts.dmi index 53575d22bef..39e4cc2476b 100644 Binary files a/icons/obj/machines/wallmounts.dmi and b/icons/obj/machines/wallmounts.dmi differ diff --git a/sound/effects/alert.ogg b/sound/effects/alert.ogg index 69bc52bdb80..e68847321e2 100644 Binary files a/sound/effects/alert.ogg and b/sound/effects/alert.ogg differ diff --git a/sound/effects/license.txt b/sound/effects/license.txt index 77351397fde..04bb7108d95 100644 --- a/sound/effects/license.txt +++ b/sound/effects/license.txt @@ -4,3 +4,6 @@ cartoon_pop.ogg by Tobiasz 'unfa' KaroĊ„ (https://freesound.org/people/unfa/sounds/245645/) It has been licensed under CC-BY 3.0, which can be found at http://creativecommons.org/licenses/by/3.0/ + +alert.ogg by bbrocer. Extended, looped, and reverbed +https://freesound.org/people/bbrocer/sounds/389511/ \ No newline at end of file diff --git a/sound/misc/airraid.ogg b/sound/misc/airraid.ogg index 820eaccf91d..cc9913becdd 100644 Binary files a/sound/misc/airraid.ogg and b/sound/misc/airraid.ogg differ diff --git a/sound/misc/announce_syndi.ogg b/sound/misc/announce_syndi.ogg new file mode 100644 index 00000000000..49c255bd0e9 Binary files /dev/null and b/sound/misc/announce_syndi.ogg differ diff --git a/sound/misc/bloblarm.ogg b/sound/misc/bloblarm.ogg index 93bcdbcc49a..2c934e1bf18 100644 Binary files a/sound/misc/bloblarm.ogg and b/sound/misc/bloblarm.ogg differ diff --git a/sound/misc/license.txt b/sound/misc/license.txt index b92a4a279a9..69ef2992820 100644 --- a/sound/misc/license.txt +++ b/sound/misc/license.txt @@ -2,4 +2,7 @@ bloop.ogg by my man Tim Khan (https://freesound.org/people/tim.kahn/sounds/130377/) knuckles.ogg by CGEffex. Shortened and cut. -https://freesound.org/people/CGEffex/sounds/93981/ \ No newline at end of file +https://freesound.org/people/CGEffex/sounds/93981/ + +airraid.ogg by Jwade722. Shortened and cut. +https://freesound.org/people/Jwade722/sounds/534550/ \ No newline at end of file diff --git a/sound/misc/notice3.ogg b/sound/misc/notice3.ogg new file mode 100644 index 00000000000..e41a4361ca6 Binary files /dev/null and b/sound/misc/notice3.ogg differ diff --git a/tgui/packages/tgui/interfaces/common/StatusDisplayControls.tsx b/tgui/packages/tgui/interfaces/common/StatusDisplayControls.tsx index f5d5cad689b..13caf14f578 100644 --- a/tgui/packages/tgui/interfaces/common/StatusDisplayControls.tsx +++ b/tgui/packages/tgui/interfaces/common/StatusDisplayControls.tsx @@ -51,9 +51,9 @@ export const StatusDisplayControls = (props, context) => { />