mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 20:17:15 +01:00
Expands the use of the new announcement system.
Code Green/Blue/Red/Delta, ERT, and captain annoncements now use the new announcement system. These announcements are stored as newscasts.
This commit is contained in:
@@ -129,14 +129,6 @@ proc/check_for_newscaster_updates(type)
|
||||
announce_newscaster_news(news)
|
||||
|
||||
proc/announce_newscaster_news(datum/news_announcement/news)
|
||||
|
||||
var/datum/feed_message/newMsg = new /datum/feed_message
|
||||
newMsg.author = news.author
|
||||
newMsg.is_admin_message = !news.can_be_redacted
|
||||
|
||||
newMsg.body = news.message
|
||||
newMsg.message_type = news.message_type
|
||||
|
||||
var/datum/feed_channel/sendto
|
||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
||||
if(FC.channel_name == news.channel_name)
|
||||
@@ -151,6 +143,12 @@ proc/announce_newscaster_news(datum/news_announcement/news)
|
||||
sendto.is_admin_channel = 1
|
||||
news_network.network_channels += sendto
|
||||
|
||||
var/datum/feed_message/newMsg = new /datum/feed_message
|
||||
newMsg.author = news.author ? news.author : sendto.author
|
||||
newMsg.is_admin_message = !news.can_be_redacted
|
||||
newMsg.body = news.message
|
||||
newMsg.message_type = news.message_type
|
||||
|
||||
sendto.messages += newMsg
|
||||
|
||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
||||
|
||||
@@ -330,13 +330,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
//world << "<b>[newname] is the AI!</b>"
|
||||
//world << sound('sound/AI/newAI.ogg')
|
||||
// Set eyeobj name
|
||||
if(A.eyeobj)
|
||||
A.eyeobj.name = "[newname] (AI Eye)"
|
||||
|
||||
// Set ai pda name
|
||||
if(A.aiPDA)
|
||||
A.aiPDA.owner = newname
|
||||
A.aiPDA.name = newname + " (" + A.aiPDA.ownjob + ")"
|
||||
A.SetName(newname)
|
||||
|
||||
|
||||
fully_replace_character_name(oldname,newname)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// A default priority announcement which doesn't log
|
||||
var/global/datum/announcement/priority/priority_announcement = new(0)
|
||||
/var/datum/announcement/priority/priority_announcement = new(do_log = 0)
|
||||
/var/datum/announcement/priority/command/command_announcement = new(do_log = 0, do_newscast = 1)
|
||||
/var/datum/announcement/priority/security/security_announcement = new(do_log = 0, do_newscast = 1)
|
||||
|
||||
/datum/announcement
|
||||
var/title = "Attention"
|
||||
@@ -10,32 +11,74 @@ var/global/datum/announcement/priority/priority_announcement = new(0)
|
||||
var/channel_name = "Public Station Announcements"
|
||||
var/announcement_type = "Announcement"
|
||||
|
||||
/datum/announcement/New(var/new_sound = null)
|
||||
/datum/announcement/New(var/do_log = 0, var/new_sound = null, var/do_newscast = 0)
|
||||
sound = new_sound
|
||||
log = do_log
|
||||
newscast = do_newscast
|
||||
|
||||
/datum/announcement/priority/New(var/do_log = 1, var/new_sound = sound('sound/items/AirHorn.ogg'))
|
||||
/datum/announcement/priority/New(var/do_log = 1, var/new_sound = sound('sound/items/AirHorn.ogg'), var/do_newscast = 0)
|
||||
..(do_log, new_sound, do_newscast)
|
||||
title = "Priority Announcement"
|
||||
announcement_type = "Priority Announcement"
|
||||
log = do_log
|
||||
sound = new_sound
|
||||
|
||||
/datum/announcement/proc/Announce(message as text)
|
||||
if (!message)
|
||||
/datum/announcement/priority/command/New(var/do_log = 1, var/new_sound = sound('sound/items/AirHorn.ogg'), var/do_newscast = 0)
|
||||
..(do_log, new_sound, do_newscast)
|
||||
title = "[command_name()] Update"
|
||||
announcement_type = "[command_name()] Update"
|
||||
|
||||
/datum/announcement/priority/security/New(var/do_log = 1, var/new_sound = sound('sound/items/AirHorn.ogg'), var/do_newscast = 0)
|
||||
..(do_log, new_sound, do_newscast)
|
||||
title = "Security Announcement"
|
||||
announcement_type = "Security Announcement"
|
||||
|
||||
/datum/announcement/proc/Announce(var/message as text, var/new_title = "")
|
||||
if(!message)
|
||||
return
|
||||
Message(message)
|
||||
NewsCast(message)
|
||||
Sound()
|
||||
Log(message)
|
||||
var/tmp/message_title = new_title ? new_title : title
|
||||
|
||||
/datum/announcement/proc/Message(message as text)
|
||||
message = html_encode(message)
|
||||
message_title = html_encode(message_title)
|
||||
|
||||
Message(message, message_title)
|
||||
NewsCast(message, message_title)
|
||||
Sound()
|
||||
Log(message, message_title)
|
||||
|
||||
datum/announcement/proc/Message(message as text, message_title as text)
|
||||
for(var/mob/M in player_list)
|
||||
if(!istype(M,/mob/new_player) && !isdeaf(M))
|
||||
M << "<h2 class='alert'>[title]</h2>"
|
||||
M << "<span class='alert'>[html_encode(message)]</span>"
|
||||
M << "<span class='alert'>[message]</span>"
|
||||
if (announcer)
|
||||
M << "<span class='alert'> -[html_encode(announcer)]</span>"
|
||||
|
||||
/datum/announcement/proc/NewsCast(message as text)
|
||||
datum/announcement/minor/Message(message as text, message_title as text)
|
||||
world << "<b>[message]</b>"
|
||||
|
||||
datum/announcement/priority/Message(message as text, message_title as text)
|
||||
world << "<h1 class='alert'>[message_title]</h1>"
|
||||
world << "<span class='alert'>[message]</span>"
|
||||
if(announcer)
|
||||
world << "<span class='alert'> -[html_encode(announcer)]</span>"
|
||||
world << "<br>"
|
||||
|
||||
datum/announcement/priority/command/Message(message as text, message_title as text)
|
||||
var/command
|
||||
command += "<h1 class='alert'>[command_name()] Update</h1>"
|
||||
if (message_title)
|
||||
command += "<br><h2 class='alert'>[message_title]</h2>"
|
||||
|
||||
command += "<br><span class='alert'>[message]</span><br>"
|
||||
command += "<br>"
|
||||
for(var/mob/M in player_list)
|
||||
if(!istype(M,/mob/new_player) && !isdeaf(M))
|
||||
M << command
|
||||
|
||||
datum/announcement/priority/security/Message(message as text, message_title as text)
|
||||
world << "<font size=4 color='red'>[message_title]</font>"
|
||||
world << "<font color='red'>[message]</font>"
|
||||
|
||||
datum/announcement/proc/NewsCast(message as text, message_title as text)
|
||||
if(!newscast)
|
||||
return
|
||||
|
||||
@@ -47,29 +90,28 @@ var/global/datum/announcement/priority/priority_announcement = new(0)
|
||||
news.can_be_redacted = 0
|
||||
announce_newscaster_news(news)
|
||||
|
||||
/datum/announcement/proc/Sound()
|
||||
datum/announcement/proc/PlaySound()
|
||||
if(!sound)
|
||||
return
|
||||
for(var/mob/M in player_list)
|
||||
if(!istype(M,/mob/new_player) && !isdeaf(M))
|
||||
M << sound
|
||||
|
||||
/datum/announcement/proc/Log(message as text)
|
||||
if(log)
|
||||
log_say("[key_name(usr)] has made a(n) [announcement_type]: [title] - [message] - [announcer]")
|
||||
message_admins("[key_name_admin(usr)] has made a(n) [announcement_type].", 1)
|
||||
datum/announcement/proc/Sound()
|
||||
PlaySound()
|
||||
|
||||
/datum/announcement/priority/Message(message as text)
|
||||
world << "<h1 class='alert'>[title]</h1>"
|
||||
world << "<span class='alert'>[html_encode(message)]</span>"
|
||||
if(announcer)
|
||||
world << "<span class='alert'> -[html_encode(announcer)]</span>"
|
||||
world << "<br>"
|
||||
|
||||
/datum/announcement/priority/Sound()
|
||||
datum/announcement/priority/Sound()
|
||||
if(sound)
|
||||
world << sound
|
||||
|
||||
datum/announcement/priority/command/Sound()
|
||||
PlaySound()
|
||||
|
||||
datum/announcement/proc/Log(message as text, message_title as text)
|
||||
if(log)
|
||||
log_say("[key_name(usr)] has made a(n) [announcement_type]: [message_title] - [message] - [announcer]")
|
||||
message_admins("[key_name_admin(usr)] has made a(n) [announcement_type].", 1)
|
||||
|
||||
/proc/GetNameAndAssignmentFromId(var/obj/item/weapon/card/id/I)
|
||||
// Formant currently matches that of newscaster feeds.
|
||||
return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name
|
||||
// Format currently matches that of newscaster feeds: Registered Name (Assigned Rank)
|
||||
return I.assignment ? "[I.registered_name] ([I.assignment])" : I.registered_name
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
|
||||
/datum/job/captain
|
||||
title = "Captain"
|
||||
flag = CAPTAIN
|
||||
@@ -32,7 +34,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_r_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack)
|
||||
world << "<b>[H.real_name] is the captain!</b>"
|
||||
captain_announcement.Announce("All hands, captain [H.real_name] on deck!")
|
||||
|
||||
H.implant_loyalty(src)
|
||||
|
||||
|
||||
@@ -133,11 +133,11 @@ proc/trigger_armed_response_team(var/force = 0)
|
||||
|
||||
// there's only a certain chance a team will be sent
|
||||
if(!prob(send_team_chance))
|
||||
command_alert("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "Central Command")
|
||||
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "Central Command")
|
||||
can_call_ert = 0 // Only one call per round, ladies.
|
||||
return
|
||||
|
||||
command_alert("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "Central Command")
|
||||
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "Central Command")
|
||||
|
||||
can_call_ert = 0 // Only one call per round, gentleman.
|
||||
send_emergency_team = 1
|
||||
|
||||
@@ -86,6 +86,11 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
|
||||
/mob/living/silicon/ai/New(loc, var/datum/ai_laws/L, var/obj/item/device/mmi/B, var/safety = 0)
|
||||
announcement = new()
|
||||
announcement.title = "A.I. Announcement"
|
||||
announcement.announcement_type = "A.I. Announcement"
|
||||
announcement.newscast = 1
|
||||
|
||||
var/list/possibleNames = ai_names
|
||||
|
||||
var/pickedName = null
|
||||
@@ -96,8 +101,8 @@ var/list/ai_verbs_default = list(
|
||||
possibleNames -= pickedName
|
||||
pickedName = null
|
||||
|
||||
real_name = pickedName
|
||||
name = real_name
|
||||
aiPDA = new/obj/item/device/pda/ai(src)
|
||||
SetName(pickedName)
|
||||
anchored = 1
|
||||
canmove = 0
|
||||
density = 1
|
||||
@@ -113,11 +118,6 @@ var/list/ai_verbs_default = list(
|
||||
else
|
||||
laws = new base_law_type
|
||||
|
||||
aiPDA = new/obj/item/device/pda/ai(src)
|
||||
aiPDA.owner = name
|
||||
aiPDA.ownjob = "AI"
|
||||
aiPDA.name = name + " (" + aiPDA.ownjob + ")"
|
||||
|
||||
aiMulti = new(src)
|
||||
aiRadio = new(src)
|
||||
aiRadio.myAi = src
|
||||
@@ -168,10 +168,6 @@ var/list/ai_verbs_default = list(
|
||||
hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
|
||||
hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank")
|
||||
|
||||
announcement = new()
|
||||
announcement.announcer = name
|
||||
announcement.title = "A.I. announcement"
|
||||
|
||||
ai_list += src
|
||||
..()
|
||||
return
|
||||
@@ -180,6 +176,18 @@ var/list/ai_verbs_default = list(
|
||||
ai_list -= src
|
||||
..()
|
||||
|
||||
/mob/living/silicon/ai/proc/SetName(pickedName as text)
|
||||
real_name = pickedName
|
||||
name = pickedName
|
||||
announcement.announcer = pickedName
|
||||
if(eyeobj)
|
||||
eyeobj.name = "[pickedName] (AI Eye)"
|
||||
|
||||
// Set ai pda name
|
||||
if(aiPDA)
|
||||
aiPDA.ownjob = "AI"
|
||||
aiPDA.owner = pickedName
|
||||
aiPDA.name = pickedName + " (" + aiPDA.ownjob + ")"
|
||||
|
||||
/*
|
||||
The AI Power supply is a dummy object used for powering the AI since only machinery should be using power.
|
||||
@@ -326,8 +334,6 @@ var/list/ai_verbs_default = list(
|
||||
return
|
||||
|
||||
announcement.Announce(input)
|
||||
log_say("[key_name(usr)] has made an AI announcement: [input]")
|
||||
message_admins("[key_name_admin(usr)] has made an AI announcement.", 1)
|
||||
message_cooldown = 1
|
||||
spawn(600)//One minute cooldown
|
||||
message_cooldown = 0
|
||||
|
||||
@@ -21,8 +21,7 @@
|
||||
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != security_level)
|
||||
switch(level)
|
||||
if(SEC_LEVEL_GREEN)
|
||||
world << "<font size=4 color='red'>Attention! Security level lowered to green</font>"
|
||||
world << "<font color='red'>[config.alert_desc_green]</font>"
|
||||
security_announcement.Announce("[config.alert_desc_green]", "Attention! Security level lowered to green")
|
||||
security_level = SEC_LEVEL_GREEN
|
||||
for(var/obj/machinery/firealarm/FA in machines)
|
||||
if(FA.z == 1 || FA.z == 5)
|
||||
@@ -30,11 +29,9 @@
|
||||
FA.overlays += image('icons/obj/monitors.dmi', "overlay_green")
|
||||
if(SEC_LEVEL_BLUE)
|
||||
if(security_level < SEC_LEVEL_BLUE)
|
||||
world << "<font size=4 color='red'>Attention! Security level elevated to blue</font>"
|
||||
world << "<font color='red'>[config.alert_desc_blue_upto]</font>"
|
||||
security_announcement.Announce("[config.alert_desc_blue_upto]", "Attention! Security level elevated to blue")
|
||||
else
|
||||
world << "<font size=4 color='red'>Attention! Security level lowered to blue</font>"
|
||||
world << "<font color='red'>[config.alert_desc_blue_downto]</font>"
|
||||
security_announcement.Announce("[config.alert_desc_blue_downto]", "Attention! Security level lowered to blue")
|
||||
security_level = SEC_LEVEL_BLUE
|
||||
for(var/obj/machinery/firealarm/FA in machines)
|
||||
if(FA.z == 1 || FA.z == 5)
|
||||
@@ -42,11 +39,9 @@
|
||||
FA.overlays += image('icons/obj/monitors.dmi', "overlay_blue")
|
||||
if(SEC_LEVEL_RED)
|
||||
if(security_level < SEC_LEVEL_RED)
|
||||
world << "<font size=4 color='red'>Attention! Code red!</font>"
|
||||
world << "<font color='red'>[config.alert_desc_red_upto]</font>"
|
||||
security_announcement.Announce("[config.alert_desc_red_upto]", "Attention! Code red!")
|
||||
else
|
||||
world << "<font size=4 color='red'>Attention! Code red!</font>"
|
||||
world << "<font color='red'>[config.alert_desc_red_downto]</font>"
|
||||
security_announcement.Announce("[config.alert_desc_red_downto]", "Attention! Code red!")
|
||||
security_level = SEC_LEVEL_RED
|
||||
|
||||
/* - At the time of commit, setting status displays didn't work properly
|
||||
@@ -60,8 +55,7 @@
|
||||
FA.overlays += image('icons/obj/monitors.dmi', "overlay_red")
|
||||
|
||||
if(SEC_LEVEL_DELTA)
|
||||
world << "<font size=4 color='red'>Attention! Delta security level reached!</font>"
|
||||
world << "<font color='red'>[config.alert_desc_delta]</font>"
|
||||
security_announcement.Announce("[config.alert_desc_delta]", "Attention! Delta security level reached!")
|
||||
security_level = SEC_LEVEL_DELTA
|
||||
for(var/obj/machinery/firealarm/FA in machines)
|
||||
if(FA.z == 1 || FA.z == 5)
|
||||
|
||||
Reference in New Issue
Block a user