From 7d074edf6ba63c81e71a0c03dc20c084290d4e28 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Fri, 10 Apr 2020 19:48:59 -0400 Subject: [PATCH] VS: Update announcer for telecomms refactor --- code/defines/procs/announce.dm | 49 +++++++++++++++++++++------------- maps/~map_system/maps.dm | 8 +++--- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index c68acc43a46..e04283c7cb0 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -32,7 +32,7 @@ title = "Security Announcement" announcement_type = "Security Announcement" -/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0) +/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0, zlevel) if(!message) return var/message_title = new_title ? new_title : title @@ -42,28 +42,32 @@ message = sanitize(message, extra = 0) message_title = sanitizeSafe(message_title) - Message(message, message_title) + var/list/zlevels + if(zlevel) + zlevels = using_map.get_map_levels(zlevel, TRUE) + + Message(message, message_title, zlevels) if(do_newscast) NewsCast(message, message_title) - Sound(message_sound) + Sound(message_sound, zlevels) Log(message, message_title) -datum/announcement/proc/Message(message as text, message_title as text) - global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME) +datum/announcement/proc/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, zlevels) -datum/announcement/minor/Message(message as text, message_title as text) - global_announcer.autosay(message, announcer ? announcer : ANNOUNCER_NAME) +datum/announcement/minor/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay(message, announcer ? announcer : ANNOUNCER_NAME, zlevels) -datum/announcement/priority/Message(message as text, message_title as text) - global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME) +datum/announcement/priority/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[message_title]: [message]", announcer ? announcer : ANNOUNCER_NAME, zlevels) -datum/announcement/priority/command/Message(message as text, message_title as text) - global_announcer.autosay("[command_name()] - [message_title]: [message]", ANNOUNCER_NAME) +datum/announcement/priority/command/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[command_name()] - [message_title]: [message]", ANNOUNCER_NAME, zlevels) -datum/announcement/priority/security/Message(message as text, message_title as text) - global_announcer.autosay("[message_title]: [message]", ANNOUNCER_NAME) +datum/announcement/priority/security/Message(var/message as text, var/message_title as text, var/list/zlevels) + global_announcer.autosay("[message_title]: [message]", ANNOUNCER_NAME, zlevels) -datum/announcement/proc/NewsCast(message as text, message_title as text) +datum/announcement/proc/NewsCast(var/message as text, var/message_title as text) if(!newscast) return @@ -75,10 +79,16 @@ datum/announcement/proc/NewsCast(message as text, message_title as text) news.can_be_redacted = 0 announce_newscaster_news(news) -datum/announcement/proc/PlaySound(var/message_sound) +datum/announcement/proc/PlaySound(var/message_sound, var/zlevel = 0) if(!message_sound) return + var/list/zlevels + if(zlevel) + zlevels = using_map.get_map_levels(zlevel) + for(var/mob/M in player_list) + if(zlevels && !(M.z in zlevels)) + continue if(!istype(M,/mob/new_player) && !isdeaf(M)) M << message_sound @@ -107,11 +117,12 @@ datum/announcement/proc/Log(message as text, message_title as text) /proc/ion_storm_announcement() command_announcement.Announce("It has come to our attention that \the [station_name()] passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert") -/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message) +/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank, var/join_message, var/channel = "Common", var/zlevel) if (ticker.current_state == GAME_STATE_PLAYING) + var/list/zlevels = zlevel ? using_map.get_map_levels(zlevel, TRUE) : null if(character.mind.role_alt_title) rank = character.mind.role_alt_title - AnnounceArrivalSimple(character.real_name, rank, join_message) + AnnounceArrivalSimple(character.real_name, rank, join_message, channel, zlevels) -/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "will arrive at the station shortly", new_sound = 'sound/misc/notice3.ogg') //VOREStation Edit - Remove shuttle reference - global_announcer.autosay("[name], [rank], [join_message].", "Arrivals Announcement Computer") +/proc/AnnounceArrivalSimple(var/name, var/rank = "visitor", var/join_message = "will arrive at the station shortly", var/channel = "Common", var/list/zlevels) + global_announcer.autosay("[name], [rank], [join_message].", "Arrivals Announcement Computer", channel, zlevels) diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index a7a44f73561..8a1f360c719 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -167,8 +167,8 @@ var/list/all_maps = list() //Get what sector we're in var/obj/effect/overmap/visitable/O = get_overmap_sector(srcz) if(!istype(O)) - //Not in a sector, just the passed zlevel - return list(srcz) + //Anything in multiz then (or just themselves) + return GetConnectedZlevels(srcz) //Just the sector we're in if(om_range == -1) @@ -190,9 +190,9 @@ var/list/all_maps = list() //If in station levels, return station levels else if (srcz in station_levels) return station_levels.Copy() - //Just give them back their zlevel + //Anything in multiz then (or just themselves) else - return list(srcz) + return GetConnectedZlevels(srcz) /datum/map/proc/get_zlevel_name(var/index) var/datum/map_z_level/Z = zlevels["[index]"]