diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index cd04b4d4a43..5c3e80e238d 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -1,70 +1,123 @@
-//##############################################
-//################### NEWSCASTERS BE HERE! ####
-//###-Agouri###################################
+var/datum/newscaster/feed_network/news_network = new /datum/newscaster/feed_network
+var/list/obj/machinery/newscaster/allCasters = list()
-/datum/feed_comment
+/datum/newscaster
+
+/datum/newscaster/feed_comment
var/author = ""
var/body = ""
var/time_stamp = ""
-/datum/feed_message
+/datum/newscaster/feed_message
var/author =""
var/body =""
- //var/parent_channel
- var/backup_body =""
- var/backup_author =""
+ var/list/authorCensorTime = list()
+ var/list/bodyCensorTime = list()
var/is_admin_message = 0
var/icon/img = null
var/time_stamp = ""
- var/list/datum/feed_comment/comments = list()
+ var/list/datum/newscaster/feed_comment/comments = list()
var/locked = 0
var/caption = ""
+ var/creationTime
+ var/authorCensor
+ var/bodyCensor
-/datum/feed_channel
- var/channel_name=""
- var/list/datum/feed_message/messages = list()
- //var/message_count = 0
- var/locked=0
- var/author=""
- var/backup_author=""
- var/censored=0
- var/is_admin_channel=0
- //var/page = null //For newspapers
+/datum/newscaster/feed_message/proc/returnAuthor(censor)
+ if(censor == -1)
+ censor = authorCensor
+ var/txt = "[news_network.redactedText]"
+ if(!censor)
+ txt = author
+ return txt
-/datum/feed_message/proc/clear()
- src.author = ""
- src.body = ""
- src.backup_body = ""
- src.backup_author = ""
- src.img = null
- src.locked = 0
+/datum/newscaster/feed_message/proc/returnBody(censor)
+ if(censor == -1)
+ censor = bodyCensor
+ var/txt = "[news_network.redactedText]"
+ if(!censor)
+ txt = body
+ return txt
-/datum/feed_channel/proc/clear()
- src.channel_name = ""
- src.messages = list()
- src.locked = 0
- src.author = ""
- src.backup_author = ""
- src.censored = 0
- src.is_admin_channel = 0
+/datum/newscaster/feed_message/proc/toggleCensorAuthor()
+ if(authorCensor)
+ authorCensorTime.Add(news_network.lastAction*-1)
+ else
+ authorCensorTime.Add(news_network.lastAction)
+ authorCensor = !authorCensor
+ news_network.lastAction ++
-/datum/feed_network
- var/list/datum/feed_channel/network_channels = list()
- var/datum/feed_message/wanted_issue
+/datum/newscaster/feed_message/proc/toggleCensorBody()
+ if(bodyCensor)
+ bodyCensorTime.Add(news_network.lastAction*-1)
+ else
+ bodyCensorTime.Add(news_network.lastAction)
+ bodyCensor = !bodyCensor
+ news_network.lastAction ++
-/datum/feed_network/New()
+/datum/newscaster/feed_channel
+ var/channel_name = ""
+ var/list/datum/newscaster/feed_message/messages = list()
+ var/locked = 0
+ var/author = ""
+ var/censored = 0
+ var/list/authorCensorTime = list()
+ var/list/DclassCensorTime = list()
+ var/authorCensor
+ var/is_admin_channel = 0
+
+/datum/newscaster/feed_channel/proc/returnAuthor(censor)
+ if(censor == -1)
+ censor = authorCensor
+ var/txt = "[news_network.redactedText]"
+ if(!censor)
+ txt = author
+ return txt
+
+/datum/newscaster/feed_channel/proc/toggleCensorDclass()
+ if(censored)
+ DclassCensorTime.Add(news_network.lastAction*-1)
+ else
+ DclassCensorTime.Add(news_network.lastAction)
+ censored = !censored
+ news_network.lastAction ++
+
+/datum/newscaster/feed_channel/proc/toggleCensorAuthor()
+ if(authorCensor)
+ authorCensorTime.Add(news_network.lastAction*-1)
+ else
+ authorCensorTime.Add(news_network.lastAction)
+ authorCensor = !authorCensor
+ news_network.lastAction ++
+
+/datum/newscaster/wanted_message
+ var/active
+ var/criminal
+ var/body
+ var/scannedUser
+ var/isAdminMsg
+ var/icon/img
+
+/datum/newscaster/feed_network
+ var/list/datum/newscaster/feed_channel/network_channels = list()
+ var/datum/newscaster/wanted_message/wanted_issue
+ var/lastAction
+ var/redactedText = "\[REDACTED\]"
+
+/datum/newscaster/feed_network/New()
CreateFeedChannel("Station Announcements", "SS13", 1)
+ wanted_issue = new /datum/newscaster/wanted_message
-/datum/feed_network/proc/CreateFeedChannel(var/channel_name, var/author, var/locked, var/adminChannel = 0)
- var/datum/feed_channel/newChannel = new /datum/feed_channel
+/datum/newscaster/feed_network/proc/CreateFeedChannel(channel_name, author, locked, adminChannel = 0)
+ var/datum/newscaster/feed_channel/newChannel = new /datum/newscaster/feed_channel
newChannel.channel_name = channel_name
newChannel.author = author
newChannel.locked = locked
newChannel.is_admin_channel = adminChannel
network_channels += newChannel
-/datum/feed_network/proc/SubmitArticle(var/msg, var/author, var/channel_name, var/obj/item/weapon/photo/photo, var/adminMessage = 0, var/allow_comments = 1)
- var/datum/feed_message/newMsg = new /datum/feed_message
+/datum/newscaster/feed_network/proc/SubmitArticle(msg, author, channel_name, obj/item/weapon/photo/photo, adminMessage = 0, allow_comments = 1)
+ var/datum/newscaster/feed_message/newMsg = new /datum/newscaster/feed_message
newMsg.author = author
newMsg.body = msg
newMsg.time_stamp = "[worldtime2text()]"
@@ -73,17 +126,37 @@
if(photo)
newMsg.img = photo.img
newMsg.caption = photo.scribble
- for(var/datum/feed_channel/FC in network_channels)
+ for(var/datum/newscaster/feed_channel/FC in network_channels)
if(FC.channel_name == channel_name)
- FC.messages += newMsg //Adding message to the network's appropriate feed_channel
+ FC.messages += newMsg
break
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
NEWSCASTER.newsAlert(channel_name)
+ lastAction ++
+ newMsg.creationTime = lastAction
+/datum/newscaster/feed_network/proc/submitWanted(criminal, body, scanned_user, obj/item/weapon/photo/photo, adminMsg = 0, newMessage = 0)
+ wanted_issue.active = 1
+ wanted_issue.criminal = criminal
+ wanted_issue.body = body
+ wanted_issue.scannedUser = scanned_user
+ wanted_issue.isAdminMsg = adminMsg
+ if(photo)
+ wanted_issue.img = photo.img
+ if(newMessage)
+ for(var/obj/machinery/newscaster/N in allCasters)
+ N.newsAlert()
+ N.update_icon()
-var/datum/feed_network/news_network = new /datum/feed_network //The global news-network, which is coincidentally a global list.
+/datum/newscaster/feed_network/proc/deleteWanted()
+ wanted_issue.active = 0
+ wanted_issue.criminal = null
+ wanted_issue.body = null
+ wanted_issue.scannedUser = null
+ wanted_issue.img = null
+ for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
+ NEWSCASTER.update_icon()
-var/list/obj/machinery/newscaster/allCasters = list() //Global list that will contain reference to all newscasters in existence.
/obj/item/newscaster_frame
@@ -117,8 +190,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
qdel(src)
-
-
/obj/machinery/newscaster
name = "newscaster"
desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. All the news you absolutely have no use for, in one place!"
@@ -127,60 +198,36 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
verb_say = "beeps"
verb_ask = "beeps"
verb_exclaim = "beeps"
- var/isbroken = 0 //1 if someone banged it with something heavy
- var/ispowered = 1 //starts powered, changes with power_change()
- //var/list/datum/feed_channel/channel_list = list() //This list will contain the names of the feed channels. Each name will refer to a data region where the messages of the feed channels are stored.
- //OBSOLETE: We're now using a global news network
+ var/isbroken = 0
+ var/ispowered = 1
var/screen = 0
- // 0 = welcome screen - main menu
- // 1 = view feed channels
- // 2 = create feed channel
- // 3 = create feed story
- // 4 = feed story submited sucessfully
- // 5 = feed channel created successfully
- // 6 = ERROR: Cannot create feed story
- // 7 = ERROR: Cannot create feed channel
- // 8 = print newspaper
- // 9 = viewing channel feeds
- // 10 = censor feed story
- // 11 = censor feed channel
- //Holy shit this is outdated, made this when I was still starting newscasters :3
var/paper_remaining = 0
var/securityCaster = 0
- // 0 = Caster cannot be used to issue wanted posters
- // 1 = the opposite
- var/unit_no = 0 //Each newscaster has a unit number
- //var/datum/feed_message/wanted //We're gonna use a feed_message to store data of the wanted person because fields are similar
- //var/wanted_issue = 0 //OBSOLETE
- // 0 = there's no WANTED issued, we don't need a special icon_state
- // 1 = Guess what.
+ var/unit_no = 0
var/alert_delay = 500
var/alert = 0
- // 0 = there hasn't been a news/wanted update in the last alert_delay
- // 1 = there has
- var/scanned_user = "Unknown" //Will contain the name of the person who currently uses the newscaster
- var/msg = ""; //Feed message
+ var/scanned_user = "Unknown"
+ var/msg = ""
var/obj/item/weapon/photo/photo = null
- var/channel_name = ""; //the feed channel which will be receiving the feed, or being created
- var/c_locked=0; //Will our new channel be locked to public submissions?
- var/hitstaken = 0 //Death at 3 hits from an item with force>=15
- var/datum/feed_channel/viewing_channel = null
+ var/channel_name = ""
+ var/c_locked=0
+ var/hitstaken = 0
+ var/datum/newscaster/feed_channel/viewing_channel = null
var/allow_comments = 1
luminosity = 0
anchored = 1
-
-/obj/machinery/newscaster/security_unit //Security unit
+/obj/machinery/newscaster/security_unit
name = "security newscaster"
securityCaster = 1
/obj/machinery/newscaster/New()
allCasters += src
- src.paper_remaining = 15
+ paper_remaining = 15
for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
- src.unit_no++
- src.update_icon() //for any custom ones on the map...
- ..() //I just realised the newscasters weren't in the global machines list. The superconstructor call will tend to that
+ unit_no++
+ update_icon()
+ ..()
/obj/machinery/newscaster/Destroy()
allCasters -= src
@@ -191,76 +238,63 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
/obj/machinery/newscaster/update_icon()
if(!ispowered || isbroken)
icon_state = "newscaster_off"
- if(isbroken) //If the thing is smashed, add crack overlay on top of the unpowered sprite.
- src.overlays.Cut()
- src.overlays += image(src.icon, "crack3")
+ if(isbroken)
+ overlays.Cut()
+ overlays += image(icon, "crack3")
return
-
- src.overlays.Cut() //reset overlays
-
- if(news_network.wanted_issue) //wanted icon state, there can be no overlays on it as it's a priority message
+ overlays.Cut()
+ if(news_network.wanted_issue.active)
icon_state = "newscaster_wanted"
return
-
- if(alert) //new message alert overlay
- src.overlays += "newscaster_alert"
-
- if(hitstaken > 0) //Cosmetic damage overlay
- src.overlays += image(src.icon, "crack[hitstaken]")
-
+ if(alert)
+ overlays += "newscaster_alert"
+ if(hitstaken > 0)
+ overlays += image(icon, "crack[hitstaken]")
icon_state = "newscaster_normal"
- return
/obj/machinery/newscaster/power_change()
- if(isbroken) //Broken shit can't be powered.
+ if(isbroken)
return
- if( src.powered() )
- src.ispowered = 1
+ if(powered())
+ ispowered = 1
stat &= ~NOPOWER
- src.update_icon()
+ update_icon()
else
spawn(rand(0, 15))
- src.ispowered = 0
+ ispowered = 0
stat |= NOPOWER
- src.update_icon()
-
+ update_icon()
/obj/machinery/newscaster/ex_act(severity, target)
switch(severity)
if(1.0)
qdel(src)
- return
if(2.0)
- src.isbroken=1
+ isbroken=1
if(prob(50))
qdel(src)
else
- src.update_icon() //can't place it above the return and outside the if-else. or we might get runtimes of null.update_icon() if(prob(50)) goes in.
- return
+ update_icon()
else
if(prob(50))
- src.isbroken=1
- src.update_icon()
- return
- return
+ isbroken=1
+ update_icon()
-/obj/machinery/newscaster/attack_ai(mob/user as mob)
- return src.attack_hand(user)
+/obj/machinery/newscaster/attack_ai(mob/user)
+ return attack_hand(user)
-/obj/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############
- if(!src.ispowered || src.isbroken)
+/obj/machinery/newscaster/attack_hand(mob/user)
+ if(!ispowered || isbroken)
return
if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) )
var/mob/living/human_or_robot_user = user
var/dat
-
- src.scan_user(human_or_robot_user) //Newscaster scans you
-
+ scan_user(human_or_robot_user)
switch(screen)
if(0)
- dat += "Welcome to Newscasting Unit #[src.unit_no].
Interface & News networks Operational."
+ dat += "Welcome to Newscasting Unit #[unit_no].
Interface & News networks Operational."
dat += "
Property of Nanotransen Inc"
- if(news_network.wanted_issue)
+ if(news_network.wanted_issue.active)
dat+= "
Read Wanted Issue"
dat+= "
Create Feed Channel"
dat+= "
View Feed Channels"
@@ -268,125 +302,113 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
dat+= "
Print newspaper"
dat+= "
Re-scan User"
dat+= "
Exit"
- if(src.securityCaster)
+ if(securityCaster)
var/wanted_already = 0
- if(news_network.wanted_issue)
+ if(news_network.wanted_issue.active)
wanted_already = 1
-
dat+="
Feed Security functions:
"
dat+="
[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue"
dat+="
Censor Feed Stories"
dat+="
Mark Feed Channel with Nanotrasen D-Notice"
- dat+="
The newscaster recognises you as: [src.scanned_user]"
+ dat+="
The newscaster recognises you as: [scanned_user]"
if(1)
dat+= "Station Feed Channels
"
if( isemptylist(news_network.network_channels) )
dat+="No active channels found..."
else
- for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
if(CHANNEL.is_admin_channel)
dat+="[CHANNEL.channel_name]
"
else
dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
"
- /*for(var/datum/feed_channel/CHANNEL in src.channel_list)
- dat+="[CHANNEL.channel_name]:
\[created by: [CHANNEL.author]\]
"
- if( isemptylist(CHANNEL.messages) )
- dat+="No feed messages found in channel...
"
- else
- for(var/datum/feed_message/MESSAGE in CHANNEL.messages)
- dat+="-[MESSAGE.body]
\[Story by [MESSAGE.author]\]
"*/
-
dat+="
Refresh"
dat+="
Back"
if(2)
dat+="Creating new Feed Channel..."
- dat+="
Channel Name: [src.channel_name]
"
- dat+="Channel Author: [src.scanned_user]
"
- dat+="Will Accept Public Feeds: [(src.c_locked) ? ("NO") : ("YES")]
"
+ dat+="
Channel Name: [channel_name]
"
+ dat+="Channel Author: [scanned_user]
"
+ dat+="Will Accept Public Feeds: [(c_locked) ? ("NO") : ("YES")]
"
dat+="
Submit
Cancel
"
if(3)
dat+="Creating new Feed Message..."
- dat+="
Receiving Channel: [src.channel_name]
" //MARK
- dat+="Message Author: [src.scanned_user]
"
- dat+="Message Body:
[parsepencode(src.msg, user, SIGNFONT)]
"
- dat+="Attach Photo: [(src.photo ? "Photo Attached" : "No Photo")]"
+ dat+="
Receiving Channel: [channel_name]
"
+ dat+="Message Author: [scanned_user]
"
+ dat+="Message Body:
[parsepencode(msg, user, SIGNFONT)]
"
+ dat+="Attach Photo: [(photo ? "Photo Attached" : "No Photo")]"
dat+="Comments [allow_comments ? "Enabled" : "Disabled"]
"
dat+="
Submit
Cancel
"
if(4)
- dat+="Feed story successfully submitted to [src.channel_name].
"
+ dat+="Feed story successfully submitted to [channel_name].
"
dat+="
Return
"
if(5)
- dat+="Feed Channel [src.channel_name] created successfully.
"
+ dat+="Feed Channel [channel_name] created successfully.
"
dat+="
Return
"
if(6)
dat+="ERROR: Could not submit Feed story to Network.
"
- if(src.channel_name=="")
+ if(channel_name=="")
dat+="•Invalid receiving channel name.
"
- if(src.scanned_user=="Unknown")
+ if(scanned_user=="Unknown")
dat+="•Channel author unverified.
"
- if(src.msg == "" || src.msg == "\[REDACTED\]")
+ if(msg == "" || msg == "\[REDACTED\]")
dat+="•Invalid message body.
"
-
dat+="
Return
"
if(7)
dat+="ERROR: Could not submit Feed Channel to Network.
"
- //var/list/existing_channels = list() //Let's get dem existing channels - OBSOLETE
var/list/existing_authors = list()
- for(var/datum/feed_channel/FC in news_network.network_channels)
- //existing_channels += FC.channel_name //OBSOLETE
- if(FC.author == "\[REDACTED\]")
- existing_authors += FC.backup_author
+ for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
+ if(FC.authorCensor)
+ existing_authors += news_network.redactedText
else
existing_authors += FC.author
- if(src.scanned_user in existing_authors)
+ if(scanned_user in existing_authors)
dat+="•There already exists a Feed channel under your name.
"
- if(src.channel_name=="" || src.channel_name == "\[REDACTED\]")
+ if(channel_name=="" || channel_name == "\[REDACTED\]")
dat+="•Invalid channel name.
"
var/check = 0
- for(var/datum/feed_channel/FC in news_network.network_channels)
- if(FC.channel_name == src.channel_name)
+ for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
+ if(FC.channel_name == channel_name)
check = 1
break
if(check)
dat+="•Channel name already in use.
"
- if(src.scanned_user=="Unknown")
+ if(scanned_user=="Unknown")
dat+="•Channel author unverified.
"
dat+="
Return
"
if(8)
var/total_num=length(news_network.network_channels)
var/active_num=total_num
var/message_num=0
- for(var/datum/feed_channel/FC in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
if(!FC.censored)
- message_num += length(FC.messages) //Dont forget, datum/feed_channel's var messages is a list of datum/feed_message
+ message_num += length(FC.messages)
else
active_num--
- dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories." //TODO: CONTINUE
- dat+="
Liquid Paper remaining: [(src.paper_remaining) *100 ] cm^3"
+ dat+="Network currently serves a total of [total_num] Feed channels, [active_num] of which are active, and a total of [message_num] Feed Stories."
+ dat+="
Liquid Paper remaining: [(paper_remaining) *100 ] cm^3"
dat+="
Print Paper"
dat+="
Cancel"
if(9)
- dat+="[src.viewing_channel.channel_name]: \[created by: [src.viewing_channel.author]\]
"
- if(src.viewing_channel.censored)
+ dat+="[viewing_channel.channel_name]: \[created by: [viewing_channel.returnAuthor(-1)]\]
"
+ if(viewing_channel.censored)
dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
"
dat+="No further feed story additions are allowed while the D-Notice is in effect.
"
else
- if( isemptylist(src.viewing_channel.messages) )
+ if( isemptylist(viewing_channel.messages) )
dat+="No feed messages found in channel...
"
else
var/i = 0
- for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
+ for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages)
i++
- dat+="-[MESSAGE.body]
"
+ dat+="-[MESSAGE.returnBody(-1)]
"
if(MESSAGE.img)
usr << browse_rsc(MESSAGE.img, "tmp_photo[i].png")
dat+="
"
if(MESSAGE.caption)
dat+="[MESSAGE.caption]
"
dat+="
"
- dat+="\[Story by [MESSAGE.author] \] - ([MESSAGE.time_stamp])
"
+ dat+="\[Story by [MESSAGE.returnAuthor(-1)] \] - ([MESSAGE.time_stamp])
"
dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]
"
- for(var/datum/feed_comment/comment in MESSAGE.comments)
+ for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments)
dat+="[comment.body]
[comment.author] [comment.time_stamp]
"
if(MESSAGE.locked)
dat+="Comments locked
"
@@ -402,7 +424,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(isemptylist(news_network.network_channels))
dat+="No feed channels found active...
"
else
- for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
"
dat+="
Cancel"
if(11)
@@ -413,80 +435,75 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(isemptylist(news_network.network_channels))
dat+="No feed channels found active...
"
else
- for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
"
-
dat+="
Back"
if(12)
- dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \]
"
- dat+="[(src.viewing_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
"
-
-
- if( isemptylist(src.viewing_channel.messages) )
+ dat+="[viewing_channel.channel_name]: \[ created by: [viewing_channel.returnAuthor(-1)] \]
"
+ dat+="[(viewing_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
"
+ if(isemptylist(viewing_channel.messages))
dat+="No feed messages found in channel...
"
else
- for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
- dat+="-[MESSAGE.body]
\[Story by [MESSAGE.author]\]
"
- dat+="[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]
"
+ for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages)
+ dat+="-[MESSAGE.returnBody(-1)]
\[Story by [MESSAGE.returnAuthor(-1)]\]
"
+ dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
"
dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
"
- for(var/datum/feed_comment/comment in MESSAGE.comments)
+ for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments)
dat+="[comment.body] X
[comment.author] [comment.time_stamp]
"
dat+="
Back"
if(13)
- dat+="[src.viewing_channel.channel_name]: \[ created by: [src.viewing_channel.author] \]
"
- dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
"
- if(src.viewing_channel.censored)
+ dat+="[viewing_channel.channel_name]: \[ created by: [viewing_channel.returnAuthor(-1)] \]
"
+ dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
"
+ if(viewing_channel.censored)
dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
"
dat+="No further feed story additions are allowed while the D-Notice is in effect.
"
else
- if( isemptylist(src.viewing_channel.messages) )
+ if(isemptylist(viewing_channel.messages))
dat+="No feed messages found in channel...
"
else
- for(var/datum/feed_message/MESSAGE in src.viewing_channel.messages)
- dat+="-[MESSAGE.body]
\[Story by [MESSAGE.author]\]
"
-
+ for(var/datum/newscaster/feed_message/MESSAGE in viewing_channel.messages)
+ dat+="-[MESSAGE.returnBody(-1)]
\[Story by [MESSAGE.returnAuthor(-1)]\]
"
dat+="
Back"
if(14)
dat+="Wanted Issue Handler:"
var/wanted_already = 0
var/end_param = 1
- if(news_network.wanted_issue)
+ if(news_network.wanted_issue.active)
wanted_already = 1
end_param = 2
-
if(wanted_already)
dat+="
A wanted issue is already in Feed Circulation. You can edit or cancel it below."
dat+="
"
- dat+="Criminal Name: [src.channel_name]
"
- dat+="Description: [src.msg]
"
- dat+="Attach Photo: [(src.photo ? "Photo Attached" : "No Photo")]"
+ dat+="Criminal Name: [channel_name]
"
+ dat+="Description: [msg]
"
+ dat+="Attach Photo: [(photo ? "Photo Attached" : "No Photo")]"
if(wanted_already)
- dat+="Wanted Issue created by: [news_network.wanted_issue.backup_author]
"
+ dat+="Wanted Issue created by: [news_network.wanted_issue.scannedUser]
"
else
- dat+="Wanted Issue will be created under prosecutor: [src.scanned_user]
"
+ dat+="Wanted Issue will be created under prosecutor: [scanned_user]
"
dat+="
[(wanted_already) ? ("Edit Issue") : ("Submit")]"
if(wanted_already)
dat+="
Take down Issue"
dat+="
Cancel"
if(15)
- dat+="Wanted issue for [src.channel_name] is now in Network Circulation.
"
+ dat+="Wanted issue for [channel_name] is now in Network Circulation.
"
dat+="
Return
"
if(16)
dat+="ERROR: Wanted Issue rejected by Network.
"
- if(src.channel_name=="" || src.channel_name == "\[REDACTED\]")
+ if(channel_name=="" || channel_name == "\[REDACTED\]")
dat+="•Invalid name for person wanted.
"
- if(src.scanned_user=="Unknown")
+ if(scanned_user=="Unknown")
dat+="•Issue author unverified.
"
- if(src.msg == "" || src.msg == "\[REDACTED\]")
+ if(msg == "" || msg == "\[REDACTED\]")
dat+="•Invalid description.
"
dat+="
Return
"
if(17)
dat+="Wanted Issue successfully deleted from Circulation
"
dat+="
Return
"
if(18)
- if(news_network.wanted_issue)
- dat+="-- STATIONWIDE WANTED ISSUE --
\[Submitted by: [news_network.wanted_issue.backup_author]\]
"
- dat+="Criminal: [news_network.wanted_issue.author]
"
+ if(news_network.wanted_issue.active)
+ dat+="-- STATIONWIDE WANTED ISSUE --
\[Submitted by: [news_network.wanted_issue.scannedUser]\]
"
+ dat+="Criminal: [news_network.wanted_issue.criminal]
"
dat+="Description: [news_network.wanted_issue.body]
"
dat+="Photo:: "
if(news_network.wanted_issue.img)
@@ -498,7 +515,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
dat+="No current wanted issue found.
"
dat+="
Back
"
if(19)
- dat+="Wanted issue for [src.channel_name] successfully edited.
"
+ dat+="Wanted issue for [channel_name] successfully edited.
"
dat+="
Return
"
if(20)
dat+="Printing successful. Please receive your newspaper from the bottom of the machine.
"
@@ -506,338 +523,264 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(21)
dat+="Unable to print newspaper. Insufficient paper. Please notify maintenance personnel to refill machine storage.
"
dat+="Return"
- else
- dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
-
- //human_or_robot_user << browse(dat, "window=newscaster_main;size=400x600")
- //onclose(human_or_robot_user, "newscaster_main")
-
- var/datum/browser/popup = new(human_or_robot_user, "newscaster_main", "Newscaster Unit #[src.unit_no]", 400, 600)
+ var/datum/browser/popup = new(human_or_robot_user, "newscaster_main", "Newscaster Unit #[unit_no]", 400, 600)
popup.set_content(dat)
- popup.set_title_image(human_or_robot_user.browse_rsc_icon(src.icon, src.icon_state))
+ popup.set_title_image(human_or_robot_user.browse_rsc_icon(icon, icon_state))
popup.open()
/obj/machinery/newscaster/Topic(href, href_list)
if(..())
return
- if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
+ if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.set_machine(src)
scan_user(usr)
if(href_list["set_channel_name"])
- src.channel_name = stripped_input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "", MAX_NAME_LEN)
- while (findtext(src.channel_name," ") == 1)
- src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1)
- src.updateUsrDialog()
- //src.update_icon()
-
+ channel_name = stripped_input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "", MAX_NAME_LEN)
+ while (findtext(channel_name," ") == 1)
+ channel_name = copytext(channel_name,2,lentext(channel_name)+1)
+ updateUsrDialog()
else if(href_list["set_channel_lock"])
- src.c_locked = !src.c_locked
- src.updateUsrDialog()
- //src.update_icon()
-
+ c_locked = !c_locked
+ updateUsrDialog()
else if(href_list["submit_new_channel"])
var/list/existing_authors = list()
- for(var/datum/feed_channel/FC in news_network.network_channels)
- //existing_channels += FC.channel_name
- if(FC.author == "\[REDACTED\]")
- existing_authors += FC.backup_author
+ for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
+ if(FC.authorCensor)
+ existing_authors += news_network.redactedText
else
- existing_authors +=FC.author
+ existing_authors += FC.author
var/check = 0
- for(var/datum/feed_channel/FC in news_network.network_channels)
- if(FC.channel_name == src.channel_name)
+ for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
+ if(FC.channel_name == channel_name)
check = 1
break
- if(src.channel_name == "" || src.channel_name == "\[REDACTED\]" || src.scanned_user == "Unknown" || check || (src.scanned_user in existing_authors) )
- src.screen=7
+ if(channel_name == "" || channel_name == "\[REDACTED\]" || scanned_user == "Unknown" || check || (scanned_user in existing_authors) )
+ screen=7
else
var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel")
if(choice=="Confirm")
scan_user(usr)
- news_network.CreateFeedChannel(src.channel_name, src.scanned_user, c_locked)
+ news_network.CreateFeedChannel(channel_name, scanned_user, c_locked)
feedback_inc("newscaster_channels",1)
- src.screen=5
- src.updateUsrDialog()
- //src.update_icon()
-
+ screen=5
+ updateUsrDialog()
else if(href_list["set_channel_receiving"])
- //var/list/datum/feed_channel/available_channels = list()
var/list/available_channels = list()
- for(var/datum/feed_channel/F in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/F in news_network.network_channels)
if( (!F.locked || F.author == scanned_user) && !F.censored)
available_channels += F.channel_name
- src.channel_name = input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels
- src.updateUsrDialog()
-
+ channel_name = input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels
+ updateUsrDialog()
else if(href_list["set_new_message"])
- var/temp_message = trim(stripped_multiline_input(usr, "Write your Feed story", "Network Channel Handler", src.msg))
+ var/temp_message = trim(stripped_multiline_input(usr, "Write your Feed story", "Network Channel Handler", msg))
if(temp_message)
- src.msg = temp_message
- src.updateUsrDialog()
-
+ msg = temp_message
+ updateUsrDialog()
else if(href_list["set_attachment"])
AttachPhoto(usr)
- src.updateUsrDialog()
-
+ updateUsrDialog()
else if(href_list["submit_new_message"])
- if(src.msg =="" || src.msg=="\[REDACTED\]" || src.scanned_user == "Unknown" || src.channel_name == "" )
- src.screen=6
+ if(msg =="" || msg=="\[REDACTED\]" || scanned_user == "Unknown" || channel_name == "" )
+ screen=6
else
- news_network.SubmitArticle("[parsepencode(src.msg, usr, SIGNFONT)]", scanned_user, channel_name, photo, allow_comments)
+ news_network.SubmitArticle("[parsepencode(msg, usr, SIGNFONT)]", scanned_user, channel_name, photo, 0, allow_comments)
feedback_inc("newscaster_stories",1)
- src.screen=4
- src.msg = ""
- src.updateUsrDialog()
-
+ screen=4
+ msg = ""
+ updateUsrDialog()
else if(href_list["create_channel"])
- src.screen=2
- src.updateUsrDialog()
-
+ screen=2
+ updateUsrDialog()
else if(href_list["create_feed_story"])
- src.screen=3
- src.updateUsrDialog()
-
+ screen=3
+ updateUsrDialog()
else if(href_list["menu_paper"])
- src.screen=8
- src.updateUsrDialog()
+ screen=8
+ updateUsrDialog()
else if(href_list["print_paper"])
- if(!src.paper_remaining)
- src.screen=21
+ if(!paper_remaining)
+ screen=21
else
- src.print_paper()
- src.screen = 20
- src.updateUsrDialog()
-
+ print_paper()
+ screen = 20
+ updateUsrDialog()
else if(href_list["menu_censor_story"])
- src.screen=10
- src.updateUsrDialog()
-
+ screen=10
+ updateUsrDialog()
else if(href_list["menu_censor_channel"])
- src.screen=11
- src.updateUsrDialog()
-
+ screen=11
+ updateUsrDialog()
else if(href_list["menu_wanted"])
var/already_wanted = 0
- if(news_network.wanted_issue)
+ if(news_network.wanted_issue.active)
already_wanted = 1
-
if(already_wanted)
- src.channel_name = news_network.wanted_issue.author
- src.msg = news_network.wanted_issue.body
- src.screen = 14
- src.updateUsrDialog()
-
+ channel_name = news_network.wanted_issue.criminal
+ msg = news_network.wanted_issue.body
+ screen = 14
+ updateUsrDialog()
else if(href_list["set_wanted_name"])
- src.channel_name = trim(stripped_input(usr, "Provide the name of the Wanted person", "Network Security Handler"))
- src.updateUsrDialog()
-
+ channel_name = trim(stripped_input(usr, "Provide the name of the Wanted person", "Network Security Handler"))
+ updateUsrDialog()
else if(href_list["set_wanted_desc"])
- src.msg = trim(stripped_input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler"))
- src.updateUsrDialog()
-
+ msg = trim(stripped_input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler"))
+ updateUsrDialog()
else if(href_list["submit_wanted"])
var/input_param = text2num(href_list["submit_wanted"])
- if(src.msg == "" || src.channel_name == "" || src.scanned_user == "Unknown")
- src.screen = 16
+ if(msg == "" || channel_name == "" || scanned_user == "Unknown")
+ screen = 16
else
var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel")
if(choice=="Confirm")
scan_user(usr)
- if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below
- var/datum/feed_message/WANTED = new /datum/feed_message
- WANTED.author = src.channel_name
- WANTED.body = src.msg
- WANTED.backup_author = src.scanned_user //I know, a bit wacky
- if(photo)
- WANTED.img = photo.img
- news_network.wanted_issue = WANTED
- for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
- NEWSCASTER.newsAlert()
- NEWSCASTER.update_icon()
- src.screen = 15
+ if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one.
+ news_network.submitWanted(channel_name, msg, scanned_user, photo, 0 , 1)
+ screen = 15
else
- if(news_network.wanted_issue.is_admin_message)
+ if(news_network.wanted_issue.isAdminMsg)
alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot edit it.","Ok")
return
- news_network.wanted_issue.author = src.channel_name
- news_network.wanted_issue.body = src.msg
- news_network.wanted_issue.backup_author = src.scanned_user
- if(photo)
- news_network.wanted_issue.img = photo.img
- src.screen = 19
-
- src.updateUsrDialog()
-
+ news_network.submitWanted(channel_name, msg, scanned_user, photo)
+ screen = 19
+ updateUsrDialog()
else if(href_list["cancel_wanted"])
- if(news_network.wanted_issue.is_admin_message)
+ if(news_network.wanted_issue.isAdminMsg)
alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot take it down.","Ok")
return
var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel")
if(choice=="Confirm")
- news_network.wanted_issue = null
- for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
- NEWSCASTER.update_icon()
- src.screen=17
- src.updateUsrDialog()
-
+ news_network.deleteWanted()
+ screen=17
+ updateUsrDialog()
else if(href_list["view_wanted"])
- src.screen=18
- src.updateUsrDialog()
+ screen=18
+ updateUsrDialog()
else if(href_list["censor_channel_author"])
- var/datum/feed_channel/FC = locate(href_list["censor_channel_author"])
+ var/datum/newscaster/feed_channel/FC = locate(href_list["censor_channel_author"])
if(FC.is_admin_channel)
alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok")
return
- if(FC.author != "\[REDACTED\]")
- FC.backup_author = FC.author
- FC.author = "\[REDACTED\]"
- else
- FC.author = FC.backup_author
- src.updateUsrDialog()
-
+ FC.toggleCensorAuthor()
+ updateUsrDialog()
else if(href_list["censor_channel_story_author"])
- var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"])
+ var/datum/newscaster/feed_message/MSG = locate(href_list["censor_channel_story_author"])
if(MSG.is_admin_message)
alert("This message was created by a Nanotrasen Officer. You cannot censor its author.","Ok")
return
- if(MSG.author != "\[REDACTED\]")
- MSG.backup_author = MSG.author
- MSG.author = "\[REDACTED\]"
- else
- MSG.author = MSG.backup_author
- src.updateUsrDialog()
-
+ MSG.toggleCensorAuthor()
+ updateUsrDialog()
else if(href_list["censor_channel_story_body"])
- var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"])
+ var/datum/newscaster/feed_message/MSG = locate(href_list["censor_channel_story_body"])
if(MSG.is_admin_message)
alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok")
return
- if(MSG.body != "\[REDACTED\]")
- MSG.backup_body = MSG.body
- MSG.body = "\[REDACTED\]"
- else
- MSG.body = MSG.backup_body
- src.updateUsrDialog()
-
+ MSG.toggleCensorBody()
+ updateUsrDialog()
else if(href_list["pick_d_notice"])
- var/datum/feed_channel/FC = locate(href_list["pick_d_notice"])
- src.viewing_channel = FC
- src.screen=13
- src.updateUsrDialog()
-
+ var/datum/newscaster/feed_channel/FC = locate(href_list["pick_d_notice"])
+ viewing_channel = FC
+ screen=13
+ updateUsrDialog()
else if(href_list["toggle_d_notice"])
- var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"])
+ var/datum/newscaster/feed_channel/FC = locate(href_list["toggle_d_notice"])
if(FC.is_admin_channel)
alert("This channel was created by a Nanotrasen Officer. You cannot place a D-Notice upon it.","Ok")
return
- FC.censored = !FC.censored
- src.updateUsrDialog()
-
+ FC.toggleCensorDclass()
+ updateUsrDialog()
else if(href_list["view"])
- src.screen=1
- src.updateUsrDialog()
-
- else if(href_list["setScreen"]) //Brings us to the main menu and resets all fields~
- src.screen = text2num(href_list["setScreen"])
- if (src.screen == 0)
- src.scanned_user = "Unknown";
+ screen=1
+ updateUsrDialog()
+ else if(href_list["setScreen"])
+ screen = text2num(href_list["setScreen"])
+ if (screen == 0)
+ scanned_user = "Unknown";
msg = "";
- src.c_locked=0;
+ c_locked=0;
channel_name="";
- src.viewing_channel = null
- src.updateUsrDialog()
-
+ viewing_channel = null
+ updateUsrDialog()
else if(href_list["show_channel"])
- var/datum/feed_channel/FC = locate(href_list["show_channel"])
- src.viewing_channel = FC
- src.screen = 9
- src.updateUsrDialog()
-
+ var/datum/newscaster/feed_channel/FC = locate(href_list["show_channel"])
+ viewing_channel = FC
+ screen = 9
+ updateUsrDialog()
else if(href_list["pick_censor_channel"])
- var/datum/feed_channel/FC = locate(href_list["pick_censor_channel"])
- src.viewing_channel = FC
- src.screen = 12
- src.updateUsrDialog()
-
+ var/datum/newscaster/feed_channel/FC = locate(href_list["pick_censor_channel"])
+ viewing_channel = FC
+ screen = 12
+ updateUsrDialog()
else if(href_list["new_comment"])
- var/datum/feed_message/FM = locate(href_list["new_comment"])
+ var/datum/newscaster/feed_message/FM = locate(href_list["new_comment"])
var/cominput = copytext(stripped_input(usr, "Write your message:", "New comment", null),1,141)
if(cominput)
scan_user(usr)
- var/datum/feed_comment/FC = new/datum/feed_comment
+ var/datum/newscaster/feed_comment/FC = new/datum/newscaster/feed_comment
FC.author = scanned_user
FC.body = cominput
FC.time_stamp = worldtime2text()
FM.comments += FC
- log_comment("[usr]/([usr.ckey]) as [scanned_user] commented on message [FM.body] -- [FC.body]")
+ log_comment("[usr]/([usr.ckey]) as [scanned_user] commented on message [FM.returnBody(-1)] -- [FC.body]")
updateUsrDialog()
-
else if(href_list["del_comment"])
- var/datum/feed_comment/FC = locate(href_list["del_comment"])
- var/datum/feed_message/FM = locate(href_list["del_comment_msg"])
+ var/datum/newscaster/feed_comment/FC = locate(href_list["del_comment"])
+ var/datum/newscaster/feed_message/FM = locate(href_list["del_comment_msg"])
FM.comments -= FC
qdel(FC)
updateUsrDialog()
-
else if(href_list["lock_comment"])
- var/datum/feed_message/FM = locate(href_list["lock_comment"])
+ var/datum/newscaster/feed_message/FM = locate(href_list["lock_comment"])
FM.locked ^= 1
updateUsrDialog()
-
else if(href_list["set_comment"])
allow_comments ^= 1
updateUsrDialog()
-
else if(href_list["refresh"])
- src.updateUsrDialog()
-
-
-/obj/machinery/newscaster/attackby(obj/item/I as obj, mob/living/user as mob, params)
+ updateUsrDialog()
+/obj/machinery/newscaster/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/weapon/wrench))
user << "You start [anchored ? "un" : ""]securing [name]..."
- playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
+ playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 60))
user << "You [anchored ? "un" : ""]secure [name]."
new /obj/item/newscaster_frame(loc)
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
+ playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
qdel(src)
return
-
- if (isbroken)
- playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, 1)
- audible_message("[user.name] further abuses the shattered [src.name].", null, 5 )
+ if(isbroken)
+ playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 100, 1)
+ audible_message("[user.name] further abuses the shattered [name].", null, 5 )
else
- if(istype(I, /obj/item/weapon) )
+ if(istype(I, /obj/item/weapon))
user.do_attack_animation(src)
var/obj/item/weapon/W = I
if(W.damtype == STAMINA)
return
if(W.force <15)
- audible_message("[user.name] hits the [src.name] with the [W.name] with no visible effect.", null , 5 )
- playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1)
+ audible_message("[user.name] hits the [name] with the [W.name] with no visible effect.", null , 5 )
+ playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1)
else
hitstaken++
if(hitstaken==3)
- audible_message("[user.name] smashes the [src.name]!", null, 5 )
+ audible_message("[user.name] smashes the [name]!", null, 5 )
isbroken=1
- playsound(src.loc, 'sound/effects/Glassbr3.ogg', 100, 1)
+ playsound(loc, 'sound/effects/Glassbr3.ogg', 100, 1)
else
- audible_message("[user.name] forcefully slams the [src.name] with the [I.name]!", null, 5 )
- playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1)
+ audible_message("[user.name] forcefully slams the [name] with the [I.name]!", null, 5 )
+ playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1)
else
user << "This does nothing!"
- src.update_icon()
+ update_icon()
-
-/obj/machinery/newscaster/attack_paw(mob/user as mob)
+/obj/machinery/newscaster/attack_paw(mob/user)
user << "The newscaster controls are far too complicated for your tiny brain!"
return
-/obj/machinery/newscaster/proc/AttachPhoto(mob/user as mob)
+/obj/machinery/newscaster/proc/AttachPhoto(mob/user)
if(photo)
if(!photo.sillynewscastervar)
- photo.loc = src.loc
+ photo.loc = loc
if(!issilicon(user))
user.put_in_inactive_hand(photo)
else
@@ -852,7 +795,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
var/find
var/datum/picture/selection
var/obj/item/device/camera/siliconcam/targetcam = null
-
if(istype(user,/mob/living/silicon/ai))
var/mob/living/silicon/ai/R = user
targetcam = R.aicamera
@@ -863,8 +805,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else
targetcam = R.aicamera
else
- user << "You cannot interface with silicon photo uploading!" //gtfo pAIs
-
+ user << "You cannot interface with silicon photo uploading!"
if(targetcam.aipictures.len == 0)
usr << "No images saved"
return
@@ -881,210 +822,210 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
photo = P
qdel(P)
+/obj/machinery/newscaster/proc/scan_user(mob/living/user)
+ if(ishuman(user))
+ var/mob/living/carbon/human/human_user = user
+ if(human_user.wear_id)
+ if(istype(human_user.wear_id, /obj/item/device/pda))
+ var/obj/item/device/pda/P = human_user.wear_id
+ if(P.id)
+ scanned_user = "[P.id.registered_name] ([P.id.assignment])"
+ else
+ scanned_user = "Unknown"
+ else if(istype(human_user.wear_id, /obj/item/weapon/card/id) )
+ var/obj/item/weapon/card/id/ID = human_user.wear_id
+ scanned_user ="[ID.registered_name] ([ID.assignment])"
+ else
+ scanned_user ="Unknown"
+ else
+ scanned_user ="Unknown"
+ else if(istype(user,/mob/living/silicon))
+ var/mob/living/silicon/ai_user = user
+ scanned_user = "[ai_user.name] ([ai_user.job])"
+ else
+ ERROR("Newscaster used by non-human/silicon mob: [user.type]")
+
+/obj/machinery/newscaster/proc/print_paper()
+ feedback_inc("newscaster_newspapers_printed",1)
+ var/obj/item/weapon/newspaper/NEWSPAPER = new /obj/item/weapon/newspaper
+ for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
+ NEWSPAPER.news_content += FC
+ if(news_network.wanted_issue.active)
+ NEWSPAPER.wantedAuthor = news_network.wanted_issue.scannedUser
+ NEWSPAPER.wantedCriminal = news_network.wanted_issue.criminal
+ NEWSPAPER.wantedBody = news_network.wanted_issue.body
+ if(news_network.wanted_issue.img)
+ NEWSPAPER.wantedPhoto = news_network.wanted_issue.img
+ NEWSPAPER.loc = get_turf(src)
+ NEWSPAPER.creationTime = news_network.lastAction
+ paper_remaining--
+
+/obj/machinery/newscaster/proc/newsAlert(channel)
+ if(channel)
+ say("Breaking news from [channel]!")
+ alert ++
+ update_icon()
+ spawn(alert_delay)
+ alert --
+ update_icon()
+ playsound(loc, 'sound/machines/twobeep.ogg', 75, 1)
+ else
+ say("Attention! Wanted issue distributed!")
+ playsound(loc, 'sound/machines/warning-buzzer.ogg', 75, 1)
-//########################################################################################################################
-//###################################### NEWSPAPER! ######################################################################
-//########################################################################################################################
/obj/item/weapon/newspaper
name = "newspaper"
desc = "An issue of The Griffon, the newspaper circulating aboard Nanotrasen Space Stations."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "newspaper"
- w_class = 2 //Let's make it fit in trashbags!
+ w_class = 2
attack_verb = list("bapped")
var/screen = 0
var/pages = 0
var/curr_page = 0
- var/list/datum/feed_channel/news_content = list()
- var/datum/feed_message/important_message = null
+ var/list/datum/newscaster/feed_channel/news_content = list()
var/scribble=""
var/scribble_page = null
+ var/wantedAuthor
+ var/wantedCriminal
+ var/wantedBody
+ var/wantedPhoto
+ var/creationTime
-/*obj/item/weapon/newspaper/attack_hand(mob/user as mob)
- ..()
- world << "derp"*/
-
-obj/item/weapon/newspaper/attack_self(mob/user as mob)
+/obj/item/weapon/newspaper/attack_self(mob/user)
if(ishuman(user))
var/mob/living/carbon/human/human_user = user
var/dat
- src.pages = 0
+ pages = 0
switch(screen)
if(0) //Cover
dat+="The Griffon
"
dat+="Nanotrasen-standard newspaper, for use on Nanotrasen© Space Facilities
"
- if(isemptylist(src.news_content))
- if(src.important_message)
- dat+="Contents:
**Important Security Announcement** \[page [src.pages+2]\]
"
+ if(isemptylist(news_content))
+ if(wantedAuthor)
+ dat+="Contents:
**Important Security Announcement** \[page [pages+2]\]
"
else
dat+="Other than the title, the rest of the newspaper is unprinted..."
else
dat+="Contents:
"
- for(var/datum/feed_channel/NP in src.news_content)
- src.pages++
- if(src.important_message)
- dat+="**Important Security Announcement** \[page [src.pages+2]\]
"
+ for(var/datum/newscaster/feed_channel/NP in news_content)
+ pages++
+ if(wantedAuthor)
+ dat+="**Important Security Announcement** \[page [pages+2]\]
"
var/temp_page=0
- for(var/datum/feed_channel/NP in src.news_content)
+ for(var/datum/newscaster/feed_channel/NP in news_content)
temp_page++
dat+="[NP.channel_name] \[page [temp_page+1]\]
"
dat+="
"
if(scribble_page==curr_page)
- dat+="
There is a small scribble near the end of this page... It reads: \"[src.scribble]\""
+ dat+="
There is a small scribble near the end of this page... It reads: \"[scribble]\""
dat+= "
"
if(1) // X channel pages inbetween.
- for(var/datum/feed_channel/NP in src.news_content)
- src.pages++ //Let's get it right again.
- var/datum/feed_channel/C = src.news_content[src.curr_page]
- dat+="[C.channel_name] \[created by: [C.author]\]
"
- if(C.censored)
+ for(var/datum/newscaster/feed_channel/NP in news_content)
+ pages++
+ var/datum/newscaster/feed_channel/C = news_content[curr_page]
+ dat += "[C.channel_name] \[created by: [C.returnAuthor(notContent(C.authorCensorTime))]\]
"
+ if(notContent(C.DclassCensorTime))
dat+="This channel was deemed dangerous to the general welfare of the station and therefore marked with a D-Notice. Its contents were not transferred to the newspaper at the time of printing."
else
if(isemptylist(C.messages))
dat+="No Feed stories stem from this channel..."
else
- dat+=""
var/i = 0
- for(var/datum/feed_message/MESSAGE in C.messages)
+ for(var/datum/newscaster/feed_message/MESSAGE in C.messages)
+ if(MESSAGE.creationTime > creationTime)
+ if(i == 0)
+ dat+="No Feed stories stem from this channel..."
+ break
+ if(i == 0)
+ dat+=""
i++
- dat+="-[MESSAGE.body]
"
+ dat+="-[MESSAGE.returnBody(notContent(MESSAGE.bodyCensorTime))]
"
if(MESSAGE.img)
user << browse_rsc(MESSAGE.img, "tmp_photo[i].png")
dat+="
"
- dat+="\[Story by [MESSAGE.author]\]
"
+ dat+="\[Story by [MESSAGE.returnAuthor(notContent(MESSAGE.authorCensorTime))]\]
"
dat+="
"
if(scribble_page==curr_page)
- dat+="
There is a small scribble near the end of this page... It reads: \"[src.scribble]\""
+ dat+="
There is a small scribble near the end of this page... It reads: \"[scribble]\""
dat+= "
"
if(2) //Last page
- for(var/datum/feed_channel/NP in src.news_content)
- src.pages++
- if(src.important_message!=null)
+ for(var/datum/newscaster/feed_channel/NP in news_content)
+ pages++
+ if(wantedAuthor!=null)
dat+="Wanted Issue:
"
- dat+="Criminal name: [important_message.author]
"
- dat+="Description: [important_message.body]
"
+ dat+="Criminal name: [wantedCriminal]
"
+ dat+="Description: [wantedBody]
"
dat+="Photo:: "
- if(important_message.img)
- user << browse_rsc(important_message.img, "tmp_photow.png")
+ if(wantedPhoto)
+ user << browse_rsc(wantedPhoto, "tmp_photow.png")
dat+="
"
else
dat+="None"
else
dat+="Apart from some uninteresting Classified ads, there's nothing on this page..."
if(scribble_page==curr_page)
- dat+="
There is a small scribble near the end of this page... It reads: \"[src.scribble]\""
+ dat+="
There is a small scribble near the end of this page... It reads: \"[scribble]\""
dat+= "
"
- else
- dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
-
- dat+="
[src.curr_page+1]
"
+ dat+="
[curr_page+1]
"
human_user << browse(dat, "window=newspaper_main;size=300x400")
onclose(human_user, "newspaper_main")
else
user << "The paper is full of intelligible symbols!"
+/obj/item/weapon/newspaper/proc/notContent(list/L)
+ if(!L.len)
+ return 0
+ for(var/i=L.len;i>0;i--)
+ var/num = abs(L[i])
+ if(creationTime <= num)
+ continue
+ else
+ if(L[i] > 0)
+ return 1
+ else
+ return 0
+ return 0
-obj/item/weapon/newspaper/Topic(href, href_list)
+/obj/item/weapon/newspaper/Topic(href, href_list)
var/mob/living/U = usr
..()
if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ))
U.set_machine(src)
if(href_list["next_page"])
- if(curr_page==src.pages+1)
+ if(curr_page == pages+1)
return //Don't need that at all, but anyway.
- if(src.curr_page == src.pages) //We're at the middle, get to the end
- src.screen = 2
+ if(curr_page == pages) //We're at the middle, get to the end
+ screen = 2
else
if(curr_page == 0) //We're at the start, get to the middle
- src.screen=1
- src.curr_page++
- playsound(src.loc, "pageturn", 50, 1)
-
+ screen=1
+ curr_page++
+ playsound(loc, "pageturn", 50, 1)
else if(href_list["prev_page"])
if(curr_page == 0)
return
if(curr_page == 1)
- src.screen = 0
-
+ screen = 0
else
- if(curr_page == src.pages+1) //we're at the end, let's go back to the middle.
- src.screen = 1
- src.curr_page--
- playsound(src.loc, "pageturn", 50, 1)
+ if(curr_page == pages+1) //we're at the end, let's go back to the middle.
+ screen = 1
+ curr_page--
+ playsound(loc, "pageturn", 50, 1)
+ if(ismob(loc))
+ attack_self(loc)
- if (istype(src.loc, /mob))
- src.attack_self(src.loc)
-
-
-obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+/obj/item/weapon/newspaper/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/pen))
- if(src.scribble_page == src.curr_page)
+ if(scribble_page == curr_page)
user << "There's already a scribble in this page... You wouldn't want to make things too cluttered, would you?"
else
var/s = stripped_input(user, "Write something", "Newspaper")
if (!s)
return
- if (!in_range(src, usr) && src.loc != usr)
+ if (!in_range(src, usr) && loc != usr)
return
- src.scribble_page = src.curr_page
- src.scribble = s
- src.attack_self(user)
- return
-
-
-////////////////////////////////////helper procs
-
-
-/obj/machinery/newscaster/proc/scan_user(mob/living/user as mob)
- if(istype(user,/mob/living/carbon/human)) //User is a human
- var/mob/living/carbon/human/human_user = user
- if(human_user.wear_id) //Newscaster scans you
- if(istype(human_user.wear_id, /obj/item/device/pda) ) //autorecognition, woo!
- var/obj/item/device/pda/P = human_user.wear_id
- if(P.id)
- src.scanned_user = "[P.id.registered_name] ([P.id.assignment])"
- else
- src.scanned_user = "Unknown"
- else if(istype(human_user.wear_id, /obj/item/weapon/card/id) )
- var/obj/item/weapon/card/id/ID = human_user.wear_id
- src.scanned_user ="[ID.registered_name] ([ID.assignment])"
- else
- src.scanned_user ="Unknown"
- else
- src.scanned_user ="Unknown"
- else if(istype(user,/mob/living/silicon))
- var/mob/living/silicon/ai_user = user
- src.scanned_user = "[ai_user.name] ([ai_user.job])"
- else
- ERROR("Newscaster used by non-human/silicon mob: [user.type]")
-
-
-/obj/machinery/newscaster/proc/print_paper()
- feedback_inc("newscaster_newspapers_printed",1)
- var/obj/item/weapon/newspaper/NEWSPAPER = new /obj/item/weapon/newspaper
- for(var/datum/feed_channel/FC in news_network.network_channels)
- NEWSPAPER.news_content += FC
- if(news_network.wanted_issue)
- NEWSPAPER.important_message = news_network.wanted_issue
- NEWSPAPER.loc = get_turf(src)
- src.paper_remaining--
- return
-
-//Removed for now so these aren't even checked every tick. Left this here in-case Agouri needs it later.
-///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.
-
-/obj/machinery/newscaster/proc/newsAlert(channel) //This isn't Agouri's work, for it is ugly and vile.
- if(channel) //Who the fuck uses spawn(600) anyway, jesus christ
- say("Breaking news from [channel]!")
- src.alert = 1
- src.update_icon()
- spawn(300)
- src.alert = 0
- src.update_icon()
- playsound(src.loc, 'sound/machines/twobeep.ogg', 75, 1)
- else
- say("Attention! Wanted issue distributed!")
- playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 75, 1)
- return
+ scribble_page = curr_page
+ scribble = s
+ attack_self(user)
\ No newline at end of file
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index beb7b94079b..54996ca39bc 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -569,22 +569,22 @@ Code:
if (53) // Newscaster
menu = "
Newscaster Access
"
menu += "
Current Newsfeed: [current_channel ? current_channel : "None"]
"
- var/datum/feed_channel/current
- for(var/datum/feed_channel/chan in news_network.network_channels)
+ var/datum/newscaster/feed_channel/current
+ for(var/datum/newscaster/feed_channel/chan in news_network.network_channels)
if (chan.channel_name == current_channel)
current = chan
if(!current)
menu += " ERROR : NO CHANNEL FOUND
"
return
var/i = 1
- for(var/datum/feed_message/msg in current.messages)
- menu +="-[msg.body]
\[Story by [msg.author]\]
"
+ for(var/datum/newscaster/feed_message/msg in current.messages)
+ menu +="-[msg.returnBody(-1)]
\[Story by [msg.returnAuthor(-1)]\]
"
menu +="[msg.comments.len] comment[msg.comments.len > 1 ? "s" : ""]
"
if(msg.img)
user << browse_rsc(msg.img, "tmp_photo[i].png")
menu +="
"
i++
- for(var/datum/feed_comment/comment in msg.comments)
+ for(var/datum/newscaster/feed_comment/comment in msg.comments)
menu +="[comment.body]
[comment.author] [comment.time_stamp]
"
menu += "
Post Message"
@@ -662,8 +662,8 @@ Code:
if("Newscaster Message")
var/pda_owner_name = pda.id ? "[pda.id.registered_name] ([pda.id.assignment])" : "Unknown"
var/message = pda.msg_input()
- var/datum/feed_channel/current
- for(var/datum/feed_channel/chan in news_network.network_channels)
+ var/datum/newscaster/feed_channel/current
+ for(var/datum/newscaster/feed_channel/chan in news_network.network_channels)
if (chan.channel_name == current_channel)
current = chan
if(current.locked && current.author != pda_owner_name)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 6524d509250..8bb956f8580 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -173,14 +173,14 @@ var/global/floorIsLava = 0
dat += "Welcome to the admin newscaster.
Here you can add, edit and censor every newspiece on the network."
dat += "
Feed channels and stories entered through here will be uneditable and handled as official news by the rest of the units."
dat += "
Note that this panel allows full freedom over the news network, there are no constrictions except the few basic ones. Don't break things!"
- if(news_network.wanted_issue)
+ if(news_network.wanted_issue.active)
dat+= "
Read Wanted Issue"
dat+= "
Create Feed Channel"
dat+= "
View Feed Channels"
dat+= "
Submit new Feed story"
dat+= "
Exit"
var/wanted_already = 0
- if(news_network.wanted_issue)
+ if(news_network.wanted_issue.active)
wanted_already = 1
dat+="
Feed Security functions:
"
dat+="
[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue"
@@ -192,7 +192,7 @@ var/global/floorIsLava = 0
if( isemptylist(news_network.network_channels) )
dat+="No active channels found..."
else
- for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
if(CHANNEL.is_admin_channel)
dat+="[CHANNEL.channel_name]
"
else
@@ -209,7 +209,7 @@ var/global/floorIsLava = 0
dat+="Creating new Feed Message..."
dat+="
Receiving Channel: [src.admincaster_feed_channel.channel_name]
" //MARK
dat+="Message Author: [src.admincaster_signature]
"
- dat+="Message Body: [src.admincaster_feed_message.body]
"
+ dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
"
dat+="
Submit
Cancel
"
if(4)
dat+="Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].
"
@@ -221,7 +221,7 @@ var/global/floorIsLava = 0
dat+="ERROR: Could not submit Feed story to Network.
"
if(src.admincaster_feed_channel.channel_name=="")
dat+="•Invalid receiving channel name.
"
- if(src.admincaster_feed_message.body == "" || src.admincaster_feed_message.body == "\[REDACTED\]")
+ if(src.admincaster_feed_message.returnBody(-1) == "" || src.admincaster_feed_message.returnBody(-1) == "\[REDACTED\]")
dat+="•Invalid message body.
"
dat+="
Return
"
if(7)
@@ -229,7 +229,7 @@ var/global/floorIsLava = 0
if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]")
dat+="•Invalid channel name.
"
var/check = 0
- for(var/datum/feed_channel/FC in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
if(FC.channel_name == src.admincaster_feed_channel.channel_name)
check = 1
break
@@ -237,7 +237,7 @@ var/global/floorIsLava = 0
dat+="•Channel name already in use.
"
dat+="
Return
"
if(9)
- dat+="[src.admincaster_feed_channel.channel_name]: \[created by: [src.admincaster_feed_channel.author]\]
"
+ dat+="[admincaster_feed_channel.channel_name]: \[created by: [admincaster_feed_channel.returnAuthor(-1)]\]
"
if(src.admincaster_feed_channel.censored)
dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
"
dat+="No further feed story additions are allowed while the D-Notice is in effect.
"
@@ -246,15 +246,15 @@ var/global/floorIsLava = 0
dat+="No feed messages found in channel...
"
else
var/i = 0
- for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
+ for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
i++
- dat+="-[MESSAGE.body]
"
+ dat+="-[MESSAGE.returnBody(-1)]
"
if(MESSAGE.img)
usr << browse_rsc(MESSAGE.img, "tmp_photo[i].png")
dat+="
"
- dat+="\[Story by [MESSAGE.author]\]
"
+ dat+="\[Story by [MESSAGE.returnAuthor(-1)]\]
"
dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]:
"
- for(var/datum/feed_comment/comment in MESSAGE.comments)
+ for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments)
dat+="[comment.body]
[comment.author] [comment.time_stamp]
"
dat+="
"
dat+="
Refresh"
@@ -267,7 +267,7 @@ var/global/floorIsLava = 0
if(isemptylist(news_network.network_channels))
dat+="No feed channels found active...
"
else
- for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
"
dat+="
Cancel"
if(11)
@@ -278,26 +278,26 @@ var/global/floorIsLava = 0
if(isemptylist(news_network.network_channels))
dat+="No feed channels found active...
"
else
- for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/CHANNEL in news_network.network_channels)
dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
"
dat+="
Back"
if(12)
- dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.author] \]
"
- dat+="[(src.admincaster_feed_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
"
+ dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.returnAuthor(-1)] \]
"
+ dat+="[(src.admincaster_feed_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]
"
if( isemptylist(src.admincaster_feed_channel.messages) )
dat+="No feed messages found in channel...
"
else
- for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
- dat+="-[MESSAGE.body]
\[Story by [MESSAGE.author]\]
"
- dat+="[(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]
"
+ for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
+ dat+="-[MESSAGE.returnBody(-1)]
\[Story by [MESSAGE.returnAuthor(-1)]\]
"
+ dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
"
dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
"
- for(var/datum/feed_comment/comment in MESSAGE.comments)
+ for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments)
dat+="[comment.body] X
[comment.author] [comment.time_stamp]
"
dat+="
Back"
if(13)
- dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.author] \]
"
+ dat+="[src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.returnAuthor(-1)] \]
"
dat+="Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
"
if(src.admincaster_feed_channel.censored)
dat+="ATTENTION: This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.
"
@@ -306,23 +306,23 @@ var/global/floorIsLava = 0
if( isemptylist(src.admincaster_feed_channel.messages) )
dat+="No feed messages found in channel...
"
else
- for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
- dat+="-[MESSAGE.body]
\[Story by [MESSAGE.author]\]
"
+ for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
+ dat+="-[MESSAGE.returnBody(-1)]
\[Story by [MESSAGE.returnAuthor(-1)]\]
"
dat+="
Back"
if(14)
dat+="Wanted Issue Handler:"
var/wanted_already = 0
var/end_param = 1
- if(news_network.wanted_issue)
+ if(news_network.wanted_issue.active)
wanted_already = 1
end_param = 2
if(wanted_already)
dat+="
A wanted issue is already in Feed Circulation. You can edit or cancel it below."
dat+="
"
- dat+="Criminal Name: [src.admincaster_feed_message.author]
"
- dat+="Description: [src.admincaster_feed_message.body]
"
+ dat+="Criminal Name: [src.admincaster_wanted_message.criminal]
"
+ dat+="Description: [src.admincaster_wanted_message.body]
"
if(wanted_already)
- dat+="Wanted Issue created by: [news_network.wanted_issue.backup_author]
"
+ dat+="Wanted Issue created by: [news_network.wanted_issue.scannedUser]
"
else
dat+="Wanted Issue will be created under prosecutor: [src.admincaster_signature]
"
dat+="
[(wanted_already) ? ("Edit Issue") : ("Submit")]"
@@ -330,21 +330,21 @@ var/global/floorIsLava = 0
dat+="
Take down Issue"
dat+="
Cancel"
if(15)
- dat+="Wanted issue for [src.admincaster_feed_message.author] is now in Network Circulation.
"
+ dat+="Wanted issue for [src.admincaster_wanted_message.criminal] is now in Network Circulation.
"
dat+="
Return
"
if(16)
dat+="ERROR: Wanted Issue rejected by Network.
"
- if(src.admincaster_feed_message.author =="" || src.admincaster_feed_message.author == "\[REDACTED\]")
+ if(src.admincaster_wanted_message.criminal =="" || src.admincaster_wanted_message.criminal == "\[REDACTED\]")
dat+="•Invalid name for person wanted.
"
- if(src.admincaster_feed_message.body == "" || src.admincaster_feed_message.body == "\[REDACTED\]")
+ if(src.admincaster_wanted_message.body == "" || src.admincaster_wanted_message.body == "\[REDACTED\]")
dat+="•Invalid description.
"
dat+="
Return
"
if(17)
dat+="Wanted Issue successfully deleted from Circulation
"
dat+="
Return
"
if(18)
- dat+="-- STATIONWIDE WANTED ISSUE --
\[Submitted by: [news_network.wanted_issue.backup_author]\]
"
- dat+="Criminal: [news_network.wanted_issue.author]
"
+ dat+="-- STATIONWIDE WANTED ISSUE --
\[Submitted by: [news_network.wanted_issue.scannedUser]\]
"
+ dat+="Criminal: [news_network.wanted_issue.criminal]
"
dat+="Description: [news_network.wanted_issue.body]
"
dat+="Photo:: "
if(news_network.wanted_issue.img)
@@ -354,7 +354,7 @@ var/global/floorIsLava = 0
dat+="None"
dat+="
Back
"
if(19)
- dat+="Wanted issue for [src.admincaster_feed_message.author] successfully edited.
"
+ dat+="Wanted issue for [src.admincaster_wanted_message.criminal] successfully edited.
"
dat+="
Return
"
else
dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm
index a3f4bcbe1f1..05a7a5ebeaf 100644
--- a/code/modules/admin/holder2.dm
+++ b/code/modules/admin/holder2.dm
@@ -8,10 +8,11 @@ var/list/admin_datums = list()
var/datum/marked_datum
- var/admincaster_screen = 0 //See newscaster.dm under machinery for a full description
- var/datum/feed_message/admincaster_feed_message = new /datum/feed_message //These two will act as holders.
- var/datum/feed_channel/admincaster_feed_channel = new /datum/feed_channel
- var/admincaster_signature //What you'll sign the newsfeeds as
+ var/admincaster_screen = 0 //TODO: remove all these 5 variables, they are completly unacceptable
+ var/datum/newscaster/feed_message/admincaster_feed_message = new /datum/newscaster/feed_message
+ var/datum/newscaster/wanted_message/admincaster_wanted_message = new /datum/newscaster/wanted_message
+ var/datum/newscaster/feed_channel/admincaster_feed_channel = new /datum/newscaster/feed_channel
+ var/admincaster_signature
/datum/admins/New(datum/admin_rank/R, ckey)
if(!ckey)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index ff3a5a9ebc3..778ee03b109 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -2304,7 +2304,7 @@
else if(href_list["ac_submit_new_channel"])
var/check = 0
- for(var/datum/feed_channel/FC in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/FC in news_network.network_channels)
if(FC.channel_name == src.admincaster_feed_channel.channel_name)
check = 1
break
@@ -2321,22 +2321,22 @@
else if(href_list["ac_set_channel_receiving"])
var/list/available_channels = list()
- for(var/datum/feed_channel/F in news_network.network_channels)
+ for(var/datum/newscaster/feed_channel/F in news_network.network_channels)
available_channels += F.channel_name
src.admincaster_feed_channel.channel_name = adminscrub(input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels )
src.access_news_network()
else if(href_list["ac_set_new_message"])
src.admincaster_feed_message.body = adminscrub(input(usr, "Write your Feed story", "Network Channel Handler", ""))
- while (findtext(src.admincaster_feed_message.body," ") == 1)
- src.admincaster_feed_message.body = copytext(src.admincaster_feed_message.body,2,lentext(src.admincaster_feed_message.body)+1)
+ while (findtext(src.admincaster_feed_message.returnBody(-1)," ") == 1)
+ src.admincaster_feed_message.body = copytext(src.admincaster_feed_message.returnBody(-1),2,lentext(src.admincaster_feed_message.returnBody(-1))+1)
src.access_news_network()
else if(href_list["ac_submit_new_message"])
- if(src.admincaster_feed_message.body =="" || src.admincaster_feed_message.body =="\[REDACTED\]" || src.admincaster_feed_channel.channel_name == "" )
+ if(src.admincaster_feed_message.returnBody(-1) =="" || src.admincaster_feed_message.returnBody(-1) =="\[REDACTED\]" || src.admincaster_feed_channel.channel_name == "" )
src.admincaster_screen = 6
else
- news_network.SubmitArticle(src.admincaster_feed_message.body, src.admincaster_signature, src.admincaster_feed_channel.channel_name, null, 1)
+ news_network.SubmitArticle(src.admincaster_feed_message.returnBody(-1), src.admincaster_signature, src.admincaster_feed_channel.channel_name, null, 1)
feedback_inc("newscaster_stories",1)
src.admincaster_screen=4
@@ -2364,98 +2364,74 @@
else if(href_list["ac_menu_wanted"])
var/already_wanted = 0
- if(news_network.wanted_issue)
+ if(news_network.wanted_issue.active)
already_wanted = 1
if(already_wanted)
- src.admincaster_feed_message.author = news_network.wanted_issue.author
- src.admincaster_feed_message.body = news_network.wanted_issue.body
+ src.admincaster_wanted_message.criminal = news_network.wanted_issue.criminal
+ src.admincaster_wanted_message.body = news_network.wanted_issue.body
src.admincaster_screen = 14
src.access_news_network()
else if(href_list["ac_set_wanted_name"])
- src.admincaster_feed_message.author = adminscrub(input(usr, "Provide the name of the Wanted person", "Network Security Handler", ""))
- while (findtext(src.admincaster_feed_message.author," ") == 1)
- src.admincaster_feed_message.author = copytext(admincaster_feed_message.author,2,lentext(admincaster_feed_message.author)+1)
+ src.admincaster_wanted_message.criminal = adminscrub(input(usr, "Provide the name of the Wanted person", "Network Security Handler", ""))
+ while(findtext(src.admincaster_wanted_message.criminal," ") == 1)
+ src.admincaster_wanted_message.criminal = copytext(admincaster_wanted_message.criminal,2,lentext(admincaster_wanted_message.criminal)+1)
src.access_news_network()
else if(href_list["ac_set_wanted_desc"])
- src.admincaster_feed_message.body = adminscrub(input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler", ""))
- while (findtext(src.admincaster_feed_message.body," ") == 1)
- src.admincaster_feed_message.body = copytext(src.admincaster_feed_message.body,2,lentext(src.admincaster_feed_message.body)+1)
+ src.admincaster_wanted_message.body = adminscrub(input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler", ""))
+ while (findtext(src.admincaster_wanted_message.body," ") == 1)
+ src.admincaster_wanted_message.body = copytext(src.admincaster_wanted_message.body,2,lentext(src.admincaster_wanted_message.body)+1)
src.access_news_network()
else if(href_list["ac_submit_wanted"])
var/input_param = text2num(href_list["ac_submit_wanted"])
- if(src.admincaster_feed_message.author == "" || src.admincaster_feed_message.body == "")
+ if(src.admincaster_wanted_message.criminal == "" || src.admincaster_wanted_message.body == "")
src.admincaster_screen = 16
else
var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel")
if(choice=="Confirm")
if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below
- var/datum/feed_message/WANTED = new /datum/feed_message
- WANTED.author = src.admincaster_feed_message.author //Wanted name
- WANTED.body = src.admincaster_feed_message.body //Wanted desc
- WANTED.backup_author = src.admincaster_signature //Submitted by
- WANTED.is_admin_message = 1
- news_network.wanted_issue = WANTED
- for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
- NEWSCASTER.newsAlert()
- NEWSCASTER.update_icon()
+ news_network.submitWanted(admincaster_wanted_message.criminal, admincaster_wanted_message.body, admincaster_signature, null, 1, 1)
src.admincaster_screen = 15
else
- news_network.wanted_issue.author = src.admincaster_feed_message.author
- news_network.wanted_issue.body = src.admincaster_feed_message.body
- news_network.wanted_issue.backup_author = src.admincaster_feed_message.backup_author
+ news_network.submitWanted(admincaster_wanted_message.criminal, admincaster_wanted_message.body, admincaster_signature)
src.admincaster_screen = 19
- log_admin("[key_name(usr)] issued a Station-wide Wanted Notification for [src.admincaster_feed_message.author]!")
+ log_admin("[key_name(usr)] issued a Station-wide Wanted Notification for [src.admincaster_wanted_message.criminal]!")
src.access_news_network()
else if(href_list["ac_cancel_wanted"])
var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel")
if(choice=="Confirm")
- news_network.wanted_issue = null
- for(var/obj/machinery/newscaster/NEWSCASTER in allCasters)
- NEWSCASTER.update_icon()
+ news_network.deleteWanted()
src.admincaster_screen=17
src.access_news_network()
else if(href_list["ac_censor_channel_author"])
- var/datum/feed_channel/FC = locate(href_list["ac_censor_channel_author"])
- if(FC.author != "\[REDACTED\]")
- FC.backup_author = FC.author
- FC.author = "\[REDACTED\]"
- else
- FC.author = FC.backup_author
+ var/datum/newscaster/feed_channel/FC = locate(href_list["ac_censor_channel_author"])
+ FC.toggleCensorAuthor()
src.access_news_network()
else if(href_list["ac_censor_channel_story_author"])
- var/datum/feed_message/MSG = locate(href_list["ac_censor_channel_story_author"])
- if(MSG.author != "\[REDACTED\]")
- MSG.backup_author = MSG.author
- MSG.author = "\[REDACTED\]"
- else
- MSG.author = MSG.backup_author
+ var/datum/newscaster/feed_message/MSG = locate(href_list["ac_censor_channel_story_author"])
+ MSG.toggleCensorAuthor()
src.access_news_network()
else if(href_list["ac_censor_channel_story_body"])
- var/datum/feed_message/MSG = locate(href_list["ac_censor_channel_story_body"])
- if(MSG.body != "\[REDACTED\]")
- MSG.backup_body = MSG.body
- MSG.body = "\[REDACTED\]"
- else
- MSG.body = MSG.backup_body
+ var/datum/newscaster/feed_message/MSG = locate(href_list["ac_censor_channel_story_body"])
+ MSG.toggleCensorBody()
src.access_news_network()
else if(href_list["ac_pick_d_notice"])
- var/datum/feed_channel/FC = locate(href_list["ac_pick_d_notice"])
+ var/datum/newscaster/feed_channel/FC = locate(href_list["ac_pick_d_notice"])
src.admincaster_feed_channel = FC
src.admincaster_screen=13
src.access_news_network()
else if(href_list["ac_toggle_d_notice"])
- var/datum/feed_channel/FC = locate(href_list["ac_toggle_d_notice"])
- FC.censored = !FC.censored
+ var/datum/newscaster/feed_channel/FC = locate(href_list["ac_toggle_d_notice"])
+ FC.toggleCensorDclass()
src.access_news_network()
else if(href_list["ac_view"])
@@ -2466,19 +2442,21 @@
src.admincaster_screen = text2num(href_list["ac_setScreen"])
if (src.admincaster_screen == 0)
if(src.admincaster_feed_channel)
- src.admincaster_feed_channel = new /datum/feed_channel
+ src.admincaster_feed_channel = new /datum/newscaster/feed_channel
if(src.admincaster_feed_message)
- src.admincaster_feed_message = new /datum/feed_message
+ src.admincaster_feed_message = new /datum/newscaster/feed_message
+ if(admincaster_wanted_message)
+ admincaster_wanted_message = new /datum/newscaster/wanted_message
src.access_news_network()
else if(href_list["ac_show_channel"])
- var/datum/feed_channel/FC = locate(href_list["ac_show_channel"])
+ var/datum/newscaster/feed_channel/FC = locate(href_list["ac_show_channel"])
src.admincaster_feed_channel = FC
src.admincaster_screen = 9
src.access_news_network()
else if(href_list["ac_pick_censor_channel"])
- var/datum/feed_channel/FC = locate(href_list["ac_pick_censor_channel"])
+ var/datum/newscaster/feed_channel/FC = locate(href_list["ac_pick_censor_channel"])
src.admincaster_feed_channel = FC
src.admincaster_screen = 12
src.access_news_network()
@@ -2491,13 +2469,13 @@
src.access_news_network()
else if(href_list["ac_del_comment"])
- var/datum/feed_comment/FC = locate(href_list["ac_del_comment"])
- var/datum/feed_message/FM = locate(href_list["ac_del_comment_msg"])
+ var/datum/newscaster/feed_comment/FC = locate(href_list["ac_del_comment"])
+ var/datum/newscaster/feed_message/FM = locate(href_list["ac_del_comment_msg"])
FM.comments -= FC
qdel(FC)
src.access_news_network()
else if(href_list["ac_lock_comment"])
- var/datum/feed_message/FM = locate(href_list["ac_lock_comment"])
+ var/datum/newscaster/feed_message/FM = locate(href_list["ac_lock_comment"])
FM.locked ^= 1
src.access_news_network()