mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
PDA newscaster
One can one access and view newsfeeds from the comfort of one's PDA. Possible to change and disable the newsmessage beep. Known issues: Unlike browse() NanoUI does not appear to wait for browse_rsc(), the method which to transfers image to the client's cache, to finish. This often results in newsfeeds not always displaying their images the first time they are viewed.
This commit is contained in:
@@ -35,10 +35,7 @@
|
|||||||
var/life_status = "[H.stat > 1 ? "<font color=red>Deceased</font>" : "Living"]"
|
var/life_status = "[H.stat > 1 ? "<font color=red>Deceased</font>" : "Living"]"
|
||||||
var/damage_report = "(<font color='blue'>[dam1]</font>/<font color='green'>[dam2]</font>/<font color='orange'>[dam3]</font>/<font color='red'>[dam4]</font>)"
|
var/damage_report = "(<font color='blue'>[dam1]</font>/<font color='green'>[dam2]</font>/<font color='orange'>[dam3]</font>/<font color='red'>[dam4]</font>)"
|
||||||
|
|
||||||
if(H.wear_id)
|
log += "<tr><td width='40%'>[H.get_id_name()]</td>"
|
||||||
log += "<tr><td width='40%'>[H.wear_id.name]</td>"
|
|
||||||
else
|
|
||||||
log += "<tr><td width='40%'>Unknown</td>"
|
|
||||||
|
|
||||||
switch(C.sensor_mode)
|
switch(C.sensor_mode)
|
||||||
if(1)
|
if(1)
|
||||||
|
|||||||
@@ -149,7 +149,4 @@ proc/announce_newscaster_news(datum/news_announcement/news)
|
|||||||
newMsg.body = news.message
|
newMsg.body = news.message
|
||||||
newMsg.message_type = news.message_type
|
newMsg.message_type = news.message_type
|
||||||
|
|
||||||
sendto.messages += newMsg
|
news_network.insert_message_in_channel(sendto, newMsg)
|
||||||
|
|
||||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
|
||||||
NEWSCASTER.newsAlert(news.channel_name)
|
|
||||||
|
|||||||
@@ -58,22 +58,25 @@
|
|||||||
//var/telecomms_intact = telecomms_process(P.owner, owner, t)
|
//var/telecomms_intact = telecomms_process(P.owner, owner, t)
|
||||||
reception.message_server = get_message_server()
|
reception.message_server = get_message_server()
|
||||||
|
|
||||||
var/datum/signal/signal = sender.telecomms_process()
|
var/datum/signal/signal = sender.telecomms_process() // Be aware that this proc calls sleep, to simulate transmition delays
|
||||||
reception.telecomms_reception |= get_sender_reception(sender, signal)
|
reception.telecomms_reception |= get_sender_reception(sender, signal)
|
||||||
reception.telecomms_reception |= get_receiver_reception(receiver, signal)
|
reception.telecomms_reception |= get_receiver_reception(receiver, signal)
|
||||||
reception.message = signal && signal.data["compression"] > 0 ? Gibberish(message, signal.data["compression"] + 50) : message
|
reception.message = signal && signal.data["compression"] > 0 ? Gibberish(message, signal.data["compression"] + 50) : message
|
||||||
|
|
||||||
return reception
|
return reception
|
||||||
|
|
||||||
/proc/get_receptions(var/atom/sender, var/list/receivers)
|
/proc/get_receptions(var/atom/sender, var/list/atom/receivers)
|
||||||
var/datum/receptions/receptions = new
|
var/datum/receptions/receptions = new
|
||||||
receptions.message_server = get_message_server()
|
receptions.message_server = get_message_server()
|
||||||
|
|
||||||
var/datum/signal/signal = sender.telecomms_process()
|
var/datum/signal/signal
|
||||||
receptions.sender_reception = get_sender_reception(sender, signal)
|
if(sender)
|
||||||
|
signal = sender.telecomms_process()
|
||||||
|
receptions.sender_reception = get_sender_reception(sender, signal)
|
||||||
|
|
||||||
if(receptions.sender_reception)
|
for(var/atom/receiver in receivers)
|
||||||
for(var/receiver in receivers)
|
if(!signal)
|
||||||
receptions.receiver_reception[receiver] = get_receiver_reception(receiver, signal)
|
signal = receiver.telecomms_process()
|
||||||
|
receptions.receiver_reception[receiver] = get_receiver_reception(receiver, signal)
|
||||||
|
|
||||||
return receptions
|
return receptions
|
||||||
|
|||||||
@@ -530,12 +530,12 @@ ________________________________________________________________________________
|
|||||||
display_spideros()
|
display_spideros()
|
||||||
return
|
return
|
||||||
P.tnote += "<i><b>← From [!s_control?(A):"an unknown source"]:</b></i><br>[t]<br>"
|
P.tnote += "<i><b>← From [!s_control?(A):"an unknown source"]:</b></i><br>[t]<br>"
|
||||||
if (!P.silent)
|
if (!P.message_silent)
|
||||||
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
for (var/mob/O in hearers(3, P.loc))
|
for (var/mob/O in hearers(3, P.loc))
|
||||||
O.show_message(text("\icon[P] *[P.ttone]*"))
|
O.show_message(text("\icon[P] *[P.ttone]*"))
|
||||||
P.overlays.Cut()
|
P.new_message = 1
|
||||||
P.overlays += image('icons/obj/pda.dmi', "pda-r")
|
P.update_icon()
|
||||||
|
|
||||||
if("Inject")
|
if("Inject")
|
||||||
if( (href_list["tag"]=="radium"? (reagents.get_reagent_amount("radium"))<=(a_boost*a_transfer) : !reagents.get_reagent_amount(href_list["tag"])) )//Special case for radium. If there are only a_boost*a_transfer radium units left.
|
if( (href_list["tag"]=="radium"? (reagents.get_reagent_amount("radium"))<=(a_boost*a_transfer) : !reagents.get_reagent_amount(href_list["tag"])) )//Special case for radium. If there are only a_boost*a_transfer radium units left.
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ datum/game_mode/mutiny
|
|||||||
if (!pda)
|
if (!pda)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if (!pda.silent)
|
if (!pda.message_silent)
|
||||||
playsound(pda.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(pda.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
for (var/mob/O in hearers(3, pda.loc))
|
for (var/mob/O in hearers(3, pda.loc))
|
||||||
O.show_message(text("\icon[pda] *[pda.ttone]*"))
|
O.show_message(text("\icon[pda] *[pda.ttone]*"))
|
||||||
|
|||||||
@@ -458,16 +458,7 @@
|
|||||||
//Sender isn't faking as someone who exists
|
//Sender isn't faking as someone who exists
|
||||||
if(isnull(PDARec))
|
if(isnull(PDARec))
|
||||||
src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]")
|
src.linkedServer.send_pda_message("[customrecepient.owner]", "[customsender]","[custommessage]")
|
||||||
if (!customrecepient.silent)
|
customrecepient.new_message(customsender, customsender, customjob, custommessage)
|
||||||
playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
|
||||||
for (var/mob/O in hearers(3, customrecepient.loc))
|
|
||||||
O.show_message(text("\icon[customrecepient] *[customrecepient.ttone]*"))
|
|
||||||
if( customrecepient.loc && ishuman(customrecepient.loc) )
|
|
||||||
var/mob/living/carbon/human/H = customrecepient.loc
|
|
||||||
H << "\icon[customrecepient] <b>Message from [customsender] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)"
|
|
||||||
log_pda("[usr] (PDA: [customsender]) sent \"[custommessage]\" to [customrecepient.owner]")
|
|
||||||
customrecepient.overlays.Cut()
|
|
||||||
customrecepient.overlays += image('icons/obj/pda.dmi', "pda-r")
|
|
||||||
//Sender is faking as someone who exists
|
//Sender is faking as someone who exists
|
||||||
else
|
else
|
||||||
|
|
||||||
@@ -477,16 +468,7 @@
|
|||||||
if(!customrecepient.conversations.Find("\ref[PDARec]"))
|
if(!customrecepient.conversations.Find("\ref[PDARec]"))
|
||||||
customrecepient.conversations.Add("\ref[PDARec]")
|
customrecepient.conversations.Add("\ref[PDARec]")
|
||||||
|
|
||||||
if (!customrecepient.silent)
|
customrecepient.new_message(PDARec, custommessage)
|
||||||
playsound(customrecepient.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
|
||||||
for (var/mob/O in hearers(3, customrecepient.loc))
|
|
||||||
O.show_message(text("\icon[customrecepient] *[customrecepient.ttone]*"))
|
|
||||||
if( customrecepient.loc && ishuman(customrecepient.loc) )
|
|
||||||
var/mob/living/carbon/human/H = customrecepient.loc
|
|
||||||
H << "\icon[customrecepient] <b>Message from [PDARec.owner] ([customjob]), </b>\"[custommessage]\" (<a href='byond://?src=\ref[customrecepient];choice=Message;skiprefresh=1;target=\ref[PDARec]'>Reply</a>)"
|
|
||||||
log_pda("[usr] (PDA: [PDARec.owner]) sent \"[custommessage]\" to [customrecepient.owner]")
|
|
||||||
customrecepient.overlays.Cut()
|
|
||||||
customrecepient.overlays += image('icons/obj/pda.dmi', "pda-r")
|
|
||||||
//Finally..
|
//Finally..
|
||||||
ResetMessage()
|
ResetMessage()
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
var/author =""
|
var/author =""
|
||||||
var/body =""
|
var/body =""
|
||||||
var/message_type ="Story"
|
var/message_type ="Story"
|
||||||
//var/parent_channel
|
var/datum/feed_channel/parent_channel
|
||||||
var/backup_body =""
|
var/backup_body =""
|
||||||
var/backup_author =""
|
var/backup_author =""
|
||||||
var/is_admin_message = 0
|
var/is_admin_message = 0
|
||||||
@@ -22,8 +22,15 @@
|
|||||||
var/backup_author=""
|
var/backup_author=""
|
||||||
var/censored=0
|
var/censored=0
|
||||||
var/is_admin_channel=0
|
var/is_admin_channel=0
|
||||||
|
var/updated = 0
|
||||||
//var/page = null //For newspapers
|
//var/page = null //For newspapers
|
||||||
|
|
||||||
|
/datum/feed_channel/proc/announce_news()
|
||||||
|
return "Breaking news from [channel_name]!"
|
||||||
|
|
||||||
|
/datum/feed_channel/station/announce_news()
|
||||||
|
return "New Station Announcement Available"
|
||||||
|
|
||||||
/datum/feed_message/proc/clear()
|
/datum/feed_message/proc/clear()
|
||||||
src.author = ""
|
src.author = ""
|
||||||
src.body = ""
|
src.body = ""
|
||||||
@@ -31,6 +38,10 @@
|
|||||||
src.backup_author = ""
|
src.backup_author = ""
|
||||||
src.img = null
|
src.img = null
|
||||||
src.backup_img = null
|
src.backup_img = null
|
||||||
|
parent_channel.update()
|
||||||
|
|
||||||
|
/datum/feed_channel/proc/update()
|
||||||
|
updated = world.time
|
||||||
|
|
||||||
/datum/feed_channel/proc/clear()
|
/datum/feed_channel/proc/clear()
|
||||||
src.channel_name = ""
|
src.channel_name = ""
|
||||||
@@ -40,11 +51,47 @@
|
|||||||
src.backup_author = ""
|
src.backup_author = ""
|
||||||
src.censored = 0
|
src.censored = 0
|
||||||
src.is_admin_channel = 0
|
src.is_admin_channel = 0
|
||||||
|
update()
|
||||||
|
|
||||||
/datum/feed_network
|
/datum/feed_network
|
||||||
var/list/datum/feed_channel/network_channels = list()
|
var/list/datum/feed_channel/network_channels = list()
|
||||||
var/datum/feed_message/wanted_issue
|
var/datum/feed_message/wanted_issue
|
||||||
|
|
||||||
|
/datum/feed_network/proc/add_news(var/channel_name, var/datum/feed_message/newMsg)
|
||||||
|
for(var/datum/feed_channel/FC in news_network.network_channels)
|
||||||
|
if(FC.channel_name == channel_name)
|
||||||
|
insert_message_in_channel(FC, newMsg)
|
||||||
|
break
|
||||||
|
|
||||||
|
/datum/feed_network/proc/insert_message_in_channel(var/datum/feed_channel/FC, var/datum/feed_message/newMsg)
|
||||||
|
FC.messages += newMsg //Adding message to the network's appropriate feed_channel
|
||||||
|
newMsg.parent_channel = FC
|
||||||
|
FC.update()
|
||||||
|
var/announcement = FC.announce_news()
|
||||||
|
alert_readers(announcement)
|
||||||
|
|
||||||
|
/datum/feed_network/proc/alert_readers(var/annoncement)
|
||||||
|
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
||||||
|
NEWSCASTER.newsAlert(annoncement)
|
||||||
|
NEWSCASTER.update_icon()
|
||||||
|
|
||||||
|
var/list/receiving_pdas = new
|
||||||
|
for (var/obj/item/device/pda/P in PDAs)
|
||||||
|
if (!P.owner)
|
||||||
|
continue
|
||||||
|
if (P.toff)
|
||||||
|
continue
|
||||||
|
receiving_pdas += P
|
||||||
|
|
||||||
|
spawn(0) // get_receptions sleeps further down the line, spawn of elsewhere
|
||||||
|
var/datum/receptions/receptions = get_receptions(null, receiving_pdas) // datums are not atoms, thus we have to assume the newscast network always has reception
|
||||||
|
|
||||||
|
for(var/obj/item/device/pda/PDA in receiving_pdas)
|
||||||
|
if(!(receptions.receiver_reception[PDA] & TELECOMMS_RECEPTION_RECEIVER))
|
||||||
|
continue
|
||||||
|
|
||||||
|
PDA.new_news(annoncement)
|
||||||
|
|
||||||
var/datum/feed_network/news_network = new /datum/feed_network //The global news-network, which is coincidentally a global list.
|
var/datum/feed_network/news_network = new /datum/feed_network //The global news-network, which is coincidentally a global list.
|
||||||
|
|
||||||
var/list/obj/machinery/newscaster/allCasters = list() //Global list that will contain reference to all newscasters in existence.
|
var/list/obj/machinery/newscaster/allCasters = list() //Global list that will contain reference to all newscasters in existence.
|
||||||
@@ -506,13 +553,8 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
|||||||
if(photo)
|
if(photo)
|
||||||
newMsg.img = photo.img
|
newMsg.img = photo.img
|
||||||
feedback_inc("newscaster_stories",1)
|
feedback_inc("newscaster_stories",1)
|
||||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
news_network.add_news(src.channel_name, newMsg)
|
||||||
if(FC.channel_name == src.channel_name)
|
|
||||||
FC.messages += newMsg //Adding message to the network's appropriate feed_channel
|
|
||||||
break
|
|
||||||
src.screen=4
|
src.screen=4
|
||||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
|
||||||
NEWSCASTER.newsAlert(src.channel_name)
|
|
||||||
|
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
|
||||||
@@ -581,9 +623,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
|||||||
if(photo)
|
if(photo)
|
||||||
WANTED.img = photo.img
|
WANTED.img = photo.img
|
||||||
news_network.wanted_issue = WANTED
|
news_network.wanted_issue = WANTED
|
||||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
news_network.alert_readers()
|
||||||
NEWSCASTER.newsAlert()
|
|
||||||
NEWSCASTER.update_icon()
|
|
||||||
src.screen = 15
|
src.screen = 15
|
||||||
else
|
else
|
||||||
if(news_network.wanted_issue.is_admin_message)
|
if(news_network.wanted_issue.is_admin_message)
|
||||||
@@ -623,6 +663,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
|||||||
FC.author = "<B>\[REDACTED\]</B>"
|
FC.author = "<B>\[REDACTED\]</B>"
|
||||||
else
|
else
|
||||||
FC.author = FC.backup_author
|
FC.author = FC.backup_author
|
||||||
|
FC.update()
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
|
||||||
else if(href_list["censor_channel_story_author"])
|
else if(href_list["censor_channel_story_author"])
|
||||||
@@ -635,6 +676,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
|||||||
MSG.author = "<B>\[REDACTED\]</B>"
|
MSG.author = "<B>\[REDACTED\]</B>"
|
||||||
else
|
else
|
||||||
MSG.author = MSG.backup_author
|
MSG.author = MSG.backup_author
|
||||||
|
MSG.parent_channel.update()
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
|
||||||
else if(href_list["censor_channel_story_body"])
|
else if(href_list["censor_channel_story_body"])
|
||||||
@@ -652,6 +694,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
|||||||
MSG.body = "<B>\[REDACTED\]</B>"
|
MSG.body = "<B>\[REDACTED\]</B>"
|
||||||
else
|
else
|
||||||
MSG.body = MSG.backup_body
|
MSG.body = MSG.backup_body
|
||||||
|
MSG.parent_channel.update()
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
|
||||||
else if(href_list["pick_d_notice"])
|
else if(href_list["pick_d_notice"])
|
||||||
@@ -666,6 +709,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
|||||||
alert("This channel was created by a Nanotrasen Officer. You cannot place a D-Notice upon it.","Ok")
|
alert("This channel was created by a Nanotrasen Officer. You cannot place a D-Notice upon it.","Ok")
|
||||||
return
|
return
|
||||||
FC.censored = !FC.censored
|
FC.censored = !FC.censored
|
||||||
|
FC.update()
|
||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
|
||||||
else if(href_list["view"])
|
else if(href_list["view"])
|
||||||
@@ -698,6 +742,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
|||||||
src.updateUsrDialog()
|
src.updateUsrDialog()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/newscaster/attackby(obj/item/I as obj, mob/user as mob)
|
/obj/machinery/newscaster/attackby(obj/item/I as obj, mob/user as mob)
|
||||||
|
|
||||||
/* if (istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda) ) //Name verification for channels or messages
|
/* if (istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda) ) //Name verification for channels or messages
|
||||||
@@ -959,11 +1004,11 @@ obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|||||||
///obj/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not
|
///obj/machinery/newscaster/process() //Was thinking of doing the icon update through process, but multiple iterations per second does not
|
||||||
// return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list.
|
// return //bode well with a newscaster network of 10+ machines. Let's just return it, as it's added in the machines list.
|
||||||
|
|
||||||
/obj/machinery/newscaster/proc/newsAlert(channel) //This isn't Agouri's work, for it is ugly and vile.
|
/obj/machinery/newscaster/proc/newsAlert(var/news_call) //This isn't Agouri's work, for it is ugly and vile.
|
||||||
var/turf/T = get_turf(src) //Who the fuck uses spawn(600) anyway, jesus christ
|
var/turf/T = get_turf(src) //Who the fuck uses spawn(600) anyway, jesus christ
|
||||||
if(channel)
|
if(news_call)
|
||||||
for(var/mob/O in hearers(world.view-1, T))
|
for(var/mob/O in hearers(world.view-1, T))
|
||||||
O.show_message("<span class='newscaster'><EM>[src.name]</EM> beeps, \"Breaking news from [channel]!\"</span>",2)
|
O.show_message("<span class='newscaster'><EM>[src.name]</EM> beeps, \"[news_call]\"</span>",2)
|
||||||
src.alert = 1
|
src.alert = 1
|
||||||
src.update_icon()
|
src.update_icon()
|
||||||
spawn(300)
|
spawn(300)
|
||||||
|
|||||||
@@ -21,17 +21,20 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
|
|
||||||
var/lastmode = 0
|
var/lastmode = 0
|
||||||
var/ui_tick = 0
|
var/ui_tick = 0
|
||||||
|
var/nanoUI[0]
|
||||||
|
|
||||||
//Secondary variables
|
//Secondary variables
|
||||||
var/scanmode = 0 //1 is medical scanner, 2 is forensics, 3 is reagent scanner.
|
var/scanmode = 0 //1 is medical scanner, 2 is forensics, 3 is reagent scanner.
|
||||||
var/fon = 0 //Is the flashlight function on?
|
var/fon = 0 //Is the flashlight function on?
|
||||||
var/f_lum = 2 //Luminosity for the flashlight function
|
var/f_lum = 2 //Luminosity for the flashlight function
|
||||||
var/silent = 0 //To beep or not to beep, that is the question
|
var/message_silent = 0 //To beep or not to beep, that is the question
|
||||||
|
var/news_silent = 0 //To beep or not to beep, that is the question
|
||||||
var/toff = 0 //If 1, messenger disabled
|
var/toff = 0 //If 1, messenger disabled
|
||||||
var/tnote[0] //Current Texts
|
var/tnote[0] //Current Texts
|
||||||
var/last_text //No text spamming
|
var/last_text //No text spamming
|
||||||
var/last_honk //Also no honk spamming that's bad too
|
var/last_honk //Also no honk spamming that's bad too
|
||||||
var/ttone = "beep" //The ringtone!
|
var/ttone = "beep" //The PDA ringtone!
|
||||||
|
var/newstone = "beep, beep" //The news ringtone!
|
||||||
var/lock_code = "" // Lockcode to unlock uplink
|
var/lock_code = "" // Lockcode to unlock uplink
|
||||||
var/honkamt = 0 //How many honks left when infected with honk.exe
|
var/honkamt = 0 //How many honks left when infected with honk.exe
|
||||||
var/mimeamt = 0 //How many silence left when infected with mime.exe
|
var/mimeamt = 0 //How many silence left when infected with mime.exe
|
||||||
@@ -42,7 +45,13 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
var/hidden = 0 // Is the PDA hidden from the PDA list?
|
var/hidden = 0 // Is the PDA hidden from the PDA list?
|
||||||
var/active_conversation = null // New variable that allows us to only view a single conversation.
|
var/active_conversation = null // New variable that allows us to only view a single conversation.
|
||||||
var/list/conversations = list() // For keeping up with who we have PDA messsages from.
|
var/list/conversations = list() // For keeping up with who we have PDA messsages from.
|
||||||
var/newmessage = 0 //To remove hackish overlay check
|
var/new_message = 0 //To remove hackish overlay check
|
||||||
|
var/new_news = 0
|
||||||
|
|
||||||
|
var/active_feed // The selected feed
|
||||||
|
var/list/warrant // The warrant as we last knew it
|
||||||
|
var/list/feeds = list() // The list of feeds as we last knew them
|
||||||
|
var/list/feed_info = list() // The data and contents of each feed as we last knew them
|
||||||
|
|
||||||
var/list/cartmodes = list(40, 42, 43, 433, 44, 441, 45, 451, 46, 48, 47, 49) // If you add more cartridge modes add them to this list as well.
|
var/list/cartmodes = list(40, 42, 43, 433, 44, 441, 45, 451, 46, 48, 47, 49) // If you add more cartridge modes add them to this list as well.
|
||||||
var/list/no_auto_update = list(1, 40, 43, 44, 441, 45, 451) // These modes we turn off autoupdate
|
var/list/no_auto_update = list(1, 40, 43, 44, 441, 45, 451) // These modes we turn off autoupdate
|
||||||
@@ -101,8 +110,10 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
/obj/item/device/pda/mime
|
/obj/item/device/pda/mime
|
||||||
default_cartridge = /obj/item/weapon/cartridge/mime
|
default_cartridge = /obj/item/weapon/cartridge/mime
|
||||||
icon_state = "pda-mime"
|
icon_state = "pda-mime"
|
||||||
silent = 1
|
message_silent = 1
|
||||||
|
news_silent = 1
|
||||||
ttone = "silence"
|
ttone = "silence"
|
||||||
|
newstone = "silence"
|
||||||
|
|
||||||
/obj/item/device/pda/heads
|
/obj/item/device/pda/heads
|
||||||
default_cartridge = /obj/item/weapon/cartridge/head
|
default_cartridge = /obj/item/weapon/cartridge/head
|
||||||
@@ -172,7 +183,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
icon_state = "pda-libb"
|
icon_state = "pda-libb"
|
||||||
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a WGW-11 series e-reader."
|
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a WGW-11 series e-reader."
|
||||||
note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant!"
|
note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant!"
|
||||||
silent = 1 //Quiet in the library!
|
message_silent = 1 //Quiet in the library!
|
||||||
|
news_silent = 1
|
||||||
|
|
||||||
/obj/item/device/pda/clear
|
/obj/item/device/pda/clear
|
||||||
icon_state = "pda-transp"
|
icon_state = "pda-transp"
|
||||||
@@ -202,6 +214,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
/obj/item/device/pda/ai
|
/obj/item/device/pda/ai
|
||||||
icon_state = "NONE"
|
icon_state = "NONE"
|
||||||
ttone = "data"
|
ttone = "data"
|
||||||
|
newstone = "news"
|
||||||
detonate = 0
|
detonate = 0
|
||||||
|
|
||||||
|
|
||||||
@@ -246,8 +259,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
if(usr.stat == 2)
|
if(usr.stat == 2)
|
||||||
usr << "You can't do that because you are dead!"
|
usr << "You can't do that because you are dead!"
|
||||||
return
|
return
|
||||||
silent=!silent
|
message_silent=!message_silent
|
||||||
usr << "<span class='notice'>PDA ringer toggled [(silent ? "Off" : "On")]!</span>"
|
usr << "<span class='notice'>PDA ringer toggled [(message_silent ? "Off" : "On")]!</span>"
|
||||||
|
|
||||||
|
|
||||||
/obj/item/device/pda/ai/verb/cmd_show_message_log()
|
/obj/item/device/pda/ai/verb/cmd_show_message_log()
|
||||||
@@ -355,7 +368,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
data["fon"] = fon // Flashlight on?
|
data["fon"] = fon // Flashlight on?
|
||||||
data["pai"] = (isnull(pai) ? 0 : 1) // pAI inserted?
|
data["pai"] = (isnull(pai) ? 0 : 1) // pAI inserted?
|
||||||
data["note"] = note // current pda notes
|
data["note"] = note // current pda notes
|
||||||
data["silent"] = silent // does the pda make noise when it receives a message?
|
data["message_silent"] = message_silent // does the pda make noise when it receives a message?
|
||||||
|
data["news_silent"] = news_silent // does the pda make noise when it receives news?
|
||||||
data["toff"] = toff // is the messenger function turned off?
|
data["toff"] = toff // is the messenger function turned off?
|
||||||
data["active_conversation"] = active_conversation // Which conversation are we following right now?
|
data["active_conversation"] = active_conversation // Which conversation are we following right now?
|
||||||
|
|
||||||
@@ -402,7 +416,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
data["cartridge"] = cartdata
|
data["cartridge"] = cartdata
|
||||||
|
|
||||||
data["stationTime"] = worldtime2text()
|
data["stationTime"] = worldtime2text()
|
||||||
data["newMessage"] = newmessage
|
data["new_Message"] = new_message
|
||||||
|
data["new_News"] = new_news
|
||||||
|
|
||||||
if(mode==2)
|
if(mode==2)
|
||||||
var/convopdas[0]
|
var/convopdas[0]
|
||||||
@@ -463,7 +478,45 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
)
|
)
|
||||||
if(isnull(data["aircontents"]))
|
if(isnull(data["aircontents"]))
|
||||||
data["aircontents"] = list("reading" = 0)
|
data["aircontents"] = list("reading" = 0)
|
||||||
|
if(mode==6)
|
||||||
|
if(news_network.network_channels.len != feeds.len)
|
||||||
|
var/datum/reception/reception = get_reception(src)
|
||||||
|
if(reception.telecomms_reception & TELECOMMS_RECEPTION_SENDER)
|
||||||
|
feeds.Cut()
|
||||||
|
for(var/datum/feed_channel/channel in news_network.network_channels)
|
||||||
|
feeds[++feeds.len] = list("name" = channel.channel_name, "censored" = channel.censored)
|
||||||
|
|
||||||
|
data["feedChannels"] = feeds
|
||||||
|
if(mode==61)
|
||||||
|
var/list/feed = feed_info[active_feed]
|
||||||
|
if(!feed)
|
||||||
|
feed = list()
|
||||||
|
feed["updated"] = -1
|
||||||
|
feed_info[active_feed] = feed
|
||||||
|
var/datum/feed_channel/FC
|
||||||
|
for(FC in news_network.network_channels)
|
||||||
|
if(FC.channel_name == active_feed["name"])
|
||||||
|
break
|
||||||
|
if(FC.updated > feed["updated"])
|
||||||
|
var/datum/reception/reception = get_reception(src)
|
||||||
|
if(reception.telecomms_reception & TELECOMMS_RECEPTION_SENDER)
|
||||||
|
feed["channel"] = FC.channel_name
|
||||||
|
feed["author"] = FC.author
|
||||||
|
feed["updated"] = FC.updated
|
||||||
|
feed["censored"] = FC.censored
|
||||||
|
|
||||||
|
var/list/messages = list()
|
||||||
|
if(!FC.censored)
|
||||||
|
var/index = 0
|
||||||
|
for(var/datum/feed_message/FM in FC.messages)
|
||||||
|
index++
|
||||||
|
if(FM.img)
|
||||||
|
usr << browse_rsc(FM.img, "pda_news_tmp_photo_[feed["channel"]]_[index].png")
|
||||||
|
messages[++messages.len] = list("author" = FM.author, "body" = FM.body, "message_type" = FM.message_type, "has_image" = (FM.img != null), "index" = index)
|
||||||
|
feed["messages"] = messages
|
||||||
|
data["feed"] = feed
|
||||||
|
|
||||||
|
nanoUI = data
|
||||||
// update the ui if it exists, returns null if no ui is passed/found
|
// update the ui if it exists, returns null if no ui is passed/found
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
if (!ui)
|
||||||
@@ -622,7 +675,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
if("Toggle Messenger")
|
if("Toggle Messenger")
|
||||||
toff = !toff
|
toff = !toff
|
||||||
if("Toggle Ringer")//If viewing texts then erase them, if not then toggle silent status
|
if("Toggle Ringer")//If viewing texts then erase them, if not then toggle silent status
|
||||||
silent = !silent
|
message_silent = !message_silent
|
||||||
|
if("Toggle News")
|
||||||
|
news_silent = !news_silent
|
||||||
if("Clear")//Clears messages
|
if("Clear")//Clears messages
|
||||||
if(href_list["option"] == "All")
|
if(href_list["option"] == "All")
|
||||||
tnote.Cut()
|
tnote.Cut()
|
||||||
@@ -652,6 +707,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
else
|
else
|
||||||
ui.close()
|
ui.close()
|
||||||
return 0
|
return 0
|
||||||
|
if("Newstone")
|
||||||
|
var/t = input(U, "Please enter new news tone", name, newstone) as text
|
||||||
|
if (in_range(src, U) && loc == U)
|
||||||
|
if (t)
|
||||||
|
t = copytext(sanitize(t), 1, 20)
|
||||||
|
newstone = t
|
||||||
|
else
|
||||||
|
ui.close()
|
||||||
|
return 0
|
||||||
if("Message")
|
if("Message")
|
||||||
|
|
||||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||||
@@ -667,6 +731,12 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
if(P == n)
|
if(P == n)
|
||||||
active_conversation=P
|
active_conversation=P
|
||||||
mode=21
|
mode=21
|
||||||
|
if("Select Feed")
|
||||||
|
var/n = href_list["name"]
|
||||||
|
for(var/f in feeds)
|
||||||
|
if(f["name"] == n)
|
||||||
|
active_feed = f
|
||||||
|
mode=61
|
||||||
if("Send Honk")//Honk virus
|
if("Send Honk")//Honk virus
|
||||||
if(cartridge && cartridge.access_clown)//Cartridge checks are kind of unnecessary since everything is done through switch.
|
if(cartridge && cartridge.access_clown)//Cartridge checks are kind of unnecessary since everything is done through switch.
|
||||||
var/obj/item/device/pda/P = locate(href_list["target"])//Leaving it alone in case it may do something useful, I guess.
|
var/obj/item/device/pda/P = locate(href_list["target"])//Leaving it alone in case it may do something useful, I guess.
|
||||||
@@ -687,8 +757,10 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
if (!P.toff && cartridge.charges > 0)
|
if (!P.toff && cartridge.charges > 0)
|
||||||
cartridge.charges--
|
cartridge.charges--
|
||||||
U.show_message("\blue Virus sent!", 1)
|
U.show_message("\blue Virus sent!", 1)
|
||||||
P.silent = 1
|
P.message_silent = 1
|
||||||
|
P.news_silent = 1
|
||||||
P.ttone = "silence"
|
P.ttone = "silence"
|
||||||
|
P.newstone = "silence"
|
||||||
else
|
else
|
||||||
U << "PDA not found."
|
U << "PDA not found."
|
||||||
else
|
else
|
||||||
@@ -710,7 +782,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
if("Detonate")//Detonate PDA... maybe
|
if("Detonate")//Detonate PDA... maybe
|
||||||
if(cartridge && cartridge.access_detonate_pda)
|
if(cartridge && cartridge.access_detonate_pda)
|
||||||
var/obj/item/device/pda/P = locate(href_list["target"])
|
var/obj/item/device/pda/P = locate(href_list["target"])
|
||||||
var/datum/reception/reception = get_reception(src, P, "")
|
var/datum/reception/reception = get_reception(src, P, "") // get_reception calls sleep further down the line
|
||||||
if(!(reception.message_server && reception.telecomms_reception & TELECOMMS_RECEPTION_SENDER))
|
if(!(reception.message_server && reception.telecomms_reception & TELECOMMS_RECEPTION_SENDER))
|
||||||
U.show_message("\red An error flashes on your [src]: Connection unavailable", 1)
|
U.show_message("\red An error flashes on your [src]: Connection unavailable", 1)
|
||||||
return
|
return
|
||||||
@@ -776,8 +848,12 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
//EXTRA FUNCTIONS===================================
|
//EXTRA FUNCTIONS===================================
|
||||||
|
|
||||||
if (mode == 2||mode == 21)//To clear message overlays.
|
if (mode == 2||mode == 21)//To clear message overlays.
|
||||||
overlays.Cut()
|
new_message = 0
|
||||||
newmessage = 0
|
update_icon()
|
||||||
|
|
||||||
|
if (mode == 6||mode == 61)//To clear news overlays.
|
||||||
|
new_news = 0
|
||||||
|
update_icon()
|
||||||
|
|
||||||
if ((honkamt > 0) && (prob(60)))//For clown virus.
|
if ((honkamt > 0) && (prob(60)))//For clown virus.
|
||||||
honkamt--
|
honkamt--
|
||||||
@@ -785,6 +861,13 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
|
|
||||||
return 1 // return 1 tells it to refresh the UI in NanoUI
|
return 1 // return 1 tells it to refresh the UI in NanoUI
|
||||||
|
|
||||||
|
/obj/item/device/pda/update_icon()
|
||||||
|
..()
|
||||||
|
|
||||||
|
overlays.Cut()
|
||||||
|
if(new_message || new_news)
|
||||||
|
overlays += image('icons/obj/pda.dmi', "pda-r")
|
||||||
|
|
||||||
/obj/item/device/pda/proc/detonate_act(var/obj/item/device/pda/P)
|
/obj/item/device/pda/proc/detonate_act(var/obj/item/device/pda/P)
|
||||||
//TODO: sometimes these attacks show up on the message server
|
//TODO: sometimes these attacks show up on the message server
|
||||||
var/i = rand(1,100)
|
var/i = rand(1,100)
|
||||||
@@ -883,7 +966,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
var/datum/reception/reception = get_reception(src, P, t)
|
var/datum/reception/reception = get_reception(src, P, t)
|
||||||
t = reception.message
|
t = reception.message
|
||||||
|
|
||||||
if(reception.message_server && reception.telecomms_reception & TELECOMMS_RECEPTION_SENDER) // only send the message if it's stable
|
if(reception.message_server && (reception.telecomms_reception & TELECOMMS_RECEPTION_SENDER)) // only send the message if it's stable
|
||||||
if(reception.telecomms_reception & TELECOMMS_RECEPTION_RECEIVER == 0) // Does our recipient have a broadcaster on their level?
|
if(reception.telecomms_reception & TELECOMMS_RECEPTION_RECEIVER == 0) // Does our recipient have a broadcaster on their level?
|
||||||
U << "ERROR: Cannot reach recipient."
|
U << "ERROR: Cannot reach recipient."
|
||||||
return
|
return
|
||||||
@@ -915,33 +998,48 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
if(ai.aiPDA != P && ai.aiPDA != src)
|
if(ai.aiPDA != P && ai.aiPDA != src)
|
||||||
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
|
ai.show_message("<i>Intercepted message from <b>[who]</b>: [t]</i>")
|
||||||
|
|
||||||
|
P.new_message_from_pda(src, t)
|
||||||
if (!P.silent)
|
nanomanager.update_user_uis(U, src) // Update the sending user's PDA UI so that they can see the new message
|
||||||
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
|
||||||
for (var/mob/O in hearers(3, P.loc))
|
|
||||||
if(!P.silent) O.show_message(text("\icon[P] *[P.ttone]*"))
|
|
||||||
//Search for holder of the PDA.
|
|
||||||
var/mob/living/L = null
|
|
||||||
if(P.loc && isliving(P.loc))
|
|
||||||
L = P.loc
|
|
||||||
//Maybe they are a pAI!
|
|
||||||
else
|
|
||||||
L = get(P, /mob/living/silicon)
|
|
||||||
|
|
||||||
|
|
||||||
if(L)
|
|
||||||
L << "\icon[P] <b>Message from [src.owner] ([ownjob]), </b>\"[t]\" (<a href='byond://?src=\ref[P];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)"
|
|
||||||
nanomanager.update_user_uis(L, P) // Update the receiving user's PDA UI so that they can see the new message
|
|
||||||
|
|
||||||
nanomanager.update_user_uis(U, P) // Update the sending user's PDA UI so that they can see the new message
|
|
||||||
|
|
||||||
log_pda("[usr] (PDA: [src.name]) sent \"[t]\" to [P.name]")
|
|
||||||
P.overlays.Cut()
|
|
||||||
P.overlays += image('icons/obj/pda.dmi', "pda-r")
|
|
||||||
P.newmessage = 1
|
|
||||||
else
|
else
|
||||||
U << "<span class='notice'>ERROR: Messaging server is not responding.</span>"
|
U << "<span class='notice'>ERROR: Messaging server is not responding.</span>"
|
||||||
|
|
||||||
|
/obj/item/device/pda/proc/new_info(var/beep_silent, var/message_tone, var/reception_message)
|
||||||
|
if (!beep_silent)
|
||||||
|
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
|
for (var/mob/O in hearers(3, loc))
|
||||||
|
O.show_message(text("\icon[src] *[message_tone]*"))
|
||||||
|
//Search for holder of the PDA.
|
||||||
|
var/mob/living/L = null
|
||||||
|
if(loc && isliving(loc))
|
||||||
|
L = loc
|
||||||
|
//Maybe they are a pAI!
|
||||||
|
else
|
||||||
|
L = get(src, /mob/living/silicon)
|
||||||
|
|
||||||
|
if(L)
|
||||||
|
if(reception_message)
|
||||||
|
L << reception_message
|
||||||
|
nanomanager.update_user_uis(L, src) // Update the receiving user's PDA UI so that they can see the new message
|
||||||
|
|
||||||
|
/obj/item/device/pda/proc/new_news(var/message)
|
||||||
|
new_info(news_silent, newstone, news_silent ? "" : "\icon[src] <b>[message]</b>")
|
||||||
|
|
||||||
|
new_news = 1
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
/obj/item/device/pda/ai/new_news(var/message)
|
||||||
|
// Do nothing
|
||||||
|
|
||||||
|
/obj/item/device/pda/proc/new_message_from_pda(var/obj/item/device/pda/sending_device, var/message)
|
||||||
|
new_message(sending_device.name, sending_device.owner, sending_device.ownjob, message)
|
||||||
|
|
||||||
|
/obj/item/device/pda/proc/new_message(var/sending_unit, var/sender, var/sender_job, var/message)
|
||||||
|
var/reception_message = "\icon[src] <b>Message from [sender] ([sender_job]), </b>\"[message]\" (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[src]'>Reply</a>)"
|
||||||
|
new_info(news_silent, newstone, reception_message)
|
||||||
|
|
||||||
|
log_pda("[usr] (PDA: [sending_unit]) sent \"[message]\" to [name]")
|
||||||
|
new_message = 1
|
||||||
|
update_icon()
|
||||||
|
|
||||||
/obj/item/device/pda/verb/verb_remove_id()
|
/obj/item/device/pda/verb/verb_remove_id()
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
|
|||||||
@@ -2566,15 +2566,9 @@
|
|||||||
newMsg.body = src.admincaster_feed_message.body
|
newMsg.body = src.admincaster_feed_message.body
|
||||||
newMsg.is_admin_message = 1
|
newMsg.is_admin_message = 1
|
||||||
feedback_inc("newscaster_stories",1)
|
feedback_inc("newscaster_stories",1)
|
||||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
news_network.add_news(src.admincaster_feed_channel.channel_name, newMsg)
|
||||||
if(FC.channel_name == src.admincaster_feed_channel.channel_name)
|
|
||||||
FC.messages += newMsg //Adding message to the network's appropriate feed_channel
|
|
||||||
break
|
|
||||||
src.admincaster_screen=4
|
src.admincaster_screen=4
|
||||||
|
|
||||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
|
||||||
NEWSCASTER.newsAlert(src.admincaster_feed_channel.channel_name)
|
|
||||||
|
|
||||||
log_admin("[key_name_admin(usr)] submitted a feed story to channel: [src.admincaster_feed_channel.channel_name]!")
|
log_admin("[key_name_admin(usr)] submitted a feed story to channel: [src.admincaster_feed_channel.channel_name]!")
|
||||||
src.access_news_network()
|
src.access_news_network()
|
||||||
|
|
||||||
|
|||||||
@@ -91,12 +91,7 @@
|
|||||||
if(FESTIVAL)
|
if(FESTIVAL)
|
||||||
newMsg.body = "A [pick("festival","week long celebration","day of revelry","planet-wide holiday")] has been declared on [affected_dest.name] by [pick("Governor","Commissioner","General","Commandant","Administrator")] [random_name(pick(MALE,FEMALE))] to celebrate [pick("the birth of their [pick("son","daughter")]","coming of age of their [pick("son","daughter")]","the pacification of rogue military cell","the apprehension of a violent criminal who had been terrorising the planet")]. Massive stocks of food and meat have been bought driving up prices across the planet."
|
newMsg.body = "A [pick("festival","week long celebration","day of revelry","planet-wide holiday")] has been declared on [affected_dest.name] by [pick("Governor","Commissioner","General","Commandant","Administrator")] [random_name(pick(MALE,FEMALE))] to celebrate [pick("the birth of their [pick("son","daughter")]","coming of age of their [pick("son","daughter")]","the pacification of rogue military cell","the apprehension of a violent criminal who had been terrorising the planet")]. Massive stocks of food and meat have been bought driving up prices across the planet."
|
||||||
|
|
||||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
news_network.add_news("Nyx Daily", newMsg)
|
||||||
if(FC.channel_name == "Nyx Daily")
|
|
||||||
FC.messages += newMsg
|
|
||||||
break
|
|
||||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
|
||||||
NEWSCASTER.newsAlert("Nyx Daily")
|
|
||||||
|
|
||||||
/datum/event/economic_event/end()
|
/datum/event/economic_event/end()
|
||||||
for(var/good_type in dearer_goods)
|
for(var/good_type in dearer_goods)
|
||||||
|
|||||||
@@ -124,12 +124,7 @@
|
|||||||
"a huge new ARG by a popular entertainment company","a secret tour by popular artiste [random_name(pick(MALE,FEMALE))]")]. \
|
"a huge new ARG by a popular entertainment company","a secret tour by popular artiste [random_name(pick(MALE,FEMALE))]")]. \
|
||||||
Nyx Daily is offering discount tickets for two to see [random_name(pick(MALE,FEMALE))] live in return for eyewitness reports and up to the minute coverage."
|
Nyx Daily is offering discount tickets for two to see [random_name(pick(MALE,FEMALE))] live in return for eyewitness reports and up to the minute coverage."
|
||||||
|
|
||||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
news_network.add_news("Nyx Daily", newMsg)
|
||||||
if(FC.channel_name == "Nyx Daily")
|
|
||||||
FC.messages += newMsg
|
|
||||||
break
|
|
||||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
|
||||||
NEWSCASTER.newsAlert("Nyx Daily")
|
|
||||||
|
|
||||||
/datum/event/trivial_news
|
/datum/event/trivial_news
|
||||||
endWhen = 10
|
endWhen = 10
|
||||||
@@ -225,9 +220,4 @@
|
|||||||
"Broccoli discovered to be colonies of tiny aliens with murder on their minds"\
|
"Broccoli discovered to be colonies of tiny aliens with murder on their minds"\
|
||||||
)
|
)
|
||||||
|
|
||||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
news_network.add_news("The Gibson Gazette", newMsg)
|
||||||
if(FC.channel_name == "The Gibson Gazette")
|
|
||||||
FC.messages += newMsg
|
|
||||||
break
|
|
||||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
|
||||||
NEWSCASTER.newsAlert("The Gibson Gazette")
|
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ var/global/economy_init = 0
|
|||||||
if(economy_init)
|
if(economy_init)
|
||||||
return 2
|
return 2
|
||||||
|
|
||||||
var/datum/feed_channel/newChannel = new /datum/feed_channel
|
var/datum/feed_channel/newChannel = new /datum/feed_channel/station
|
||||||
newChannel.channel_name = "Public Station Announcements"
|
newChannel.channel_name = "Public Station Announcements"
|
||||||
newChannel.author = "Automated Announcement Listing"
|
newChannel.author = "Automated Announcement Listing"
|
||||||
newChannel.locked = 1
|
newChannel.locked = 1
|
||||||
|
|||||||
@@ -31,10 +31,4 @@
|
|||||||
if(!deposit_success)
|
if(!deposit_success)
|
||||||
newMsg.body += "<br>Unfortunately, we were unable to verify the account details provided, so we were unable to transfer the money. Send a cheque containing the sum of $500 to ND 'Stellar Slam' office on the Nyx gateway containing updated details, and your winnings'll be re-sent within the month."
|
newMsg.body += "<br>Unfortunately, we were unable to verify the account details provided, so we were unable to transfer the money. Send a cheque containing the sum of $500 to ND 'Stellar Slam' office on the Nyx gateway containing updated details, and your winnings'll be re-sent within the month."
|
||||||
|
|
||||||
for(var/datum/feed_channel/FC in news_network.network_channels)
|
news_network.add_news("Nyx Daily", newMsg)
|
||||||
if(FC.channel_name == "Nyx Daily")
|
|
||||||
FC.messages += newMsg
|
|
||||||
break
|
|
||||||
|
|
||||||
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
|
|
||||||
NEWSCASTER.newsAlert("Nyx Daily")
|
|
||||||
|
|||||||
@@ -104,10 +104,10 @@
|
|||||||
//Commented out because we don't send messages like this anymore. Instead it will just popup in their chat window.
|
//Commented out because we don't send messages like this anymore. Instead it will just popup in their chat window.
|
||||||
//P.tnote += "<i><b>← From [sender] (Unknown / spam?):</b></i><br>[message]<br>"
|
//P.tnote += "<i><b>← From [sender] (Unknown / spam?):</b></i><br>[message]<br>"
|
||||||
|
|
||||||
if (!P.silent)
|
if (!P.message_silent)
|
||||||
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
playsound(P.loc, 'sound/machines/twobeep.ogg', 50, 1)
|
||||||
for (var/mob/O in hearers(3, P.loc))
|
for (var/mob/O in hearers(3, P.loc))
|
||||||
if(!P.silent) O.show_message(text("\icon[P] *[P.ttone]*"))
|
if(!P.message_silent) O.show_message(text("\icon[P] *[P.ttone]*"))
|
||||||
//Search for holder of the PDA.
|
//Search for holder of the PDA.
|
||||||
var/mob/living/L = null
|
var/mob/living/L = null
|
||||||
if(P.loc && isliving(P.loc))
|
if(P.loc && isliving(P.loc))
|
||||||
|
|||||||
@@ -223,7 +223,7 @@
|
|||||||
if(href_list["toggler"])
|
if(href_list["toggler"])
|
||||||
pda.toff = !pda.toff
|
pda.toff = !pda.toff
|
||||||
else if(href_list["ringer"])
|
else if(href_list["ringer"])
|
||||||
pda.silent = !pda.silent
|
pda.message_silent = !pda.message_silent
|
||||||
else if(href_list["target"])
|
else if(href_list["target"])
|
||||||
if(silence_time)
|
if(silence_time)
|
||||||
return alert("Communications circuits remain uninitialized.")
|
return alert("Communications circuits remain uninitialized.")
|
||||||
@@ -668,7 +668,7 @@
|
|||||||
dat += {"<b>Signal/Receiver Status:</b> <A href='byond://?src=\ref[src];software=pdamessage;toggler=1'>
|
dat += {"<b>Signal/Receiver Status:</b> <A href='byond://?src=\ref[src];software=pdamessage;toggler=1'>
|
||||||
[(pda.toff) ? "<font color='red'> \[Off\]</font>" : "<font color='green'> \[On\]</font>"]</a><br>
|
[(pda.toff) ? "<font color='red'> \[Off\]</font>" : "<font color='green'> \[On\]</font>"]</a><br>
|
||||||
<b>Ringer Status:</b> <A href='byond://?src=\ref[src];software=pdamessage;ringer=1'>
|
<b>Ringer Status:</b> <A href='byond://?src=\ref[src];software=pdamessage;ringer=1'>
|
||||||
[(pda.silent) ? "<font color='red'> \[Off\]</font>" : "<font color='green'> \[On\]</font>"]</a><br><br>"}
|
[(pda.message_silent) ? "<font color='red'> \[Off\]</font>" : "<font color='green'> \[On\]</font>"]</a><br><br>"}
|
||||||
dat += "<ul>"
|
dat += "<ul>"
|
||||||
if(!pda.toff)
|
if(!pda.toff)
|
||||||
for (var/obj/item/device/pda/P in sortAtom(PDAs))
|
for (var/obj/item/device/pda/P in sortAtom(PDAs))
|
||||||
|
|||||||
@@ -412,6 +412,12 @@ div.notice {
|
|||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fixedLeftWiderRed {
|
||||||
|
width: 220px;
|
||||||
|
float: left;
|
||||||
|
background: #ee0000;
|
||||||
|
}
|
||||||
|
|
||||||
.floatRight {
|
.floatRight {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,8 +67,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
|||||||
</div>
|
</div>
|
||||||
<div class="itemContent">
|
<div class="itemContent">
|
||||||
{{:helper.link('Notekeeper', 'note', {'choice' : "1"}, null, 'fixedLeftWide')}}
|
{{:helper.link('Notekeeper', 'note', {'choice' : "1"}, null, 'fixedLeftWide')}}
|
||||||
{{:helper.link('Messenger', data.newMessage ? 'mail-closed' : 'mail-open', {'choice' : "2"}, null, 'fixedLeftWide')}}
|
{{:helper.link('Messenger', data.new_Message ? 'mail-closed' : 'mail-open', {'choice' : "2"}, null, 'fixedLeftWide')}}
|
||||||
{{:helper.link('Crew Manifest', 'contact', {'choice' : "41"}, null, 'fixedLeftWide')}}
|
{{:helper.link('Crew Manifest', 'contact', {'choice' : "41"}, null, 'fixedLeftWide')}}
|
||||||
|
{{:helper.link('News', data.new_News ? 'mail-closed' : 'mail-open', {'choice' : "6"}, null, 'fixedLeftWide')}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
@@ -207,7 +208,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
|||||||
<b>Messenger Functions</b>:
|
<b>Messenger Functions</b>:
|
||||||
</div>
|
</div>
|
||||||
<div class ="itemContent">
|
<div class ="itemContent">
|
||||||
{{:helper.link(data.silent==1 ? 'Ringer: Off' : 'Ringer: On', data.silent==1 ? 'volume-off' : 'volume-on', {'choice' : "Toggle Ringer"}, null, 'fixedLeftWide')}}
|
{{:helper.link(data.message_silent==1 ? 'Ringer: Off' : 'Ringer: On', data.message_silent==1 ? 'volume-off' : 'volume-on', {'choice' : "Toggle Ringer"}, null, 'fixedLeftWide')}}
|
||||||
{{:helper.link(data.toff==1 ? 'Messenger: Off' : 'Messenger: On',data.toff==1 ? 'close':'check', {'choice' : "Toggle Messenger"}, null, 'fixedLeftWide')}}
|
{{:helper.link(data.toff==1 ? 'Messenger: Off' : 'Messenger: On',data.toff==1 ? 'close':'check', {'choice' : "Toggle Messenger"}, null, 'fixedLeftWide')}}
|
||||||
{{:helper.link('Set Ringtone', 'comment', {'choice' : "Ringtone"}, null, 'fixedLeftWide')}}
|
{{:helper.link('Set Ringtone', 'comment', {'choice' : "Ringtone"}, null, 'fixedLeftWide')}}
|
||||||
{{:helper.link('Delete all Conversations', 'trash', {'choice' : "Clear", 'option' : "All"}, null, 'fixedLeftWider')}}
|
{{:helper.link('Delete all Conversations', 'trash', {'choice' : "Clear", 'option' : "All"}, null, 'fixedLeftWider')}}
|
||||||
@@ -946,7 +947,61 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
|||||||
<span class="average">({{:value.x}} / {{:value.y}}) - {{:value.dir}} - Status: {{:value.status}}</span><br>
|
<span class="average">({{:value.x}} / {{:value.y}}) - {{:value.dir}} - Status: {{:value.status}}</span><br>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/for}}
|
{{/for}}
|
||||||
|
|
||||||
|
{{else data.mode == 6}}
|
||||||
|
<H2><span class="white">InstaNews ED 2.0.9</span></H2>
|
||||||
|
|
||||||
|
<div class="item">
|
||||||
|
<div class="itemLabelNarrow">
|
||||||
|
<b>Functions</b>:
|
||||||
</div>
|
</div>
|
||||||
|
<div class ="itemContent">
|
||||||
|
{{:helper.link(data.news_silent==1 ? 'Ringer: Off' : 'Ringer: On', data.news_silent==1 ? 'volume-off' : 'volume-on', {'choice' : "Toggle News"}, null, 'fixedLeftWide')}}
|
||||||
|
{{:helper.link('Set news tone', 'comment', {'choice' : "Newstone"}, null, 'fixedLeftWide')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="item">
|
||||||
|
<div class="itemContent">
|
||||||
|
{{for data.feedChannels}}
|
||||||
|
{{if value.censored}}
|
||||||
|
{{:helper.link(value.name, 'circle-arrow-s', {'choice' : "Select Feed", 'feed' : value.feed, 'name' : value.name } , null, 'fixedLeftWiderRed')}}
|
||||||
|
{{else}}
|
||||||
|
{{:helper.link(value.name, 'circle-arrow-s', {'choice' : "Select Feed", 'feed' : value.feed, 'name' : value.name } , null, 'fixedLeftWider')}}
|
||||||
|
{{/if}}
|
||||||
|
{{empty}}
|
||||||
|
<I>No active channels found...</I>
|
||||||
|
{{/for}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{else data.mode == 61}}
|
||||||
|
<H2><span class="white">{{:data.feed.channel}}</span></H2>
|
||||||
|
<span class="white">Created by: </span><span class="average">{{:data.feed.author}}</span>
|
||||||
|
<div class="statusDisplay" style="overflow: auto;">
|
||||||
|
<div class="item">
|
||||||
|
<div class="itemContent" style="width: 100%;">
|
||||||
|
{{if data.feed.censored}}
|
||||||
|
<H3><span class="bad">Attention</span></H3>
|
||||||
|
This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.<br>
|
||||||
|
No further feed story additions are allowed while the D-Notice is in effect.<br>
|
||||||
|
{{else}}
|
||||||
|
{{for data.feed.messages}}
|
||||||
|
-{{:value.body}}<br>
|
||||||
|
{{if value.has_image}}
|
||||||
|
pda_news_tmp_photo_{{:data.feed.channel}}_{{:value.index}}.png<br>
|
||||||
|
<img src='pda_news_tmp_photo_{{:data.feed.channel}}_{{:value.index}}.png' width = '180'><br>
|
||||||
|
{{/if}}
|
||||||
|
<FONT SIZE=1>[{{:value.message_type}} by <span class="average">{{:value.author}}</span>]<br></FONT>
|
||||||
|
<br>
|
||||||
|
{{empty}}
|
||||||
|
<I>No feed messages found in channel...</I>
|
||||||
|
{{/for}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="wholeScreen">
|
<div class="wholeScreen">
|
||||||
|
|||||||
Reference in New Issue
Block a user