diff --git a/code/datums/periodic_news.dm b/code/datums/periodic_news.dm index d0d1f01ebf3..fb6dcd3fb1b 100644 --- a/code/datums/periodic_news.dm +++ b/code/datums/periodic_news.dm @@ -120,7 +120,7 @@ GLOBAL_LIST_EMPTY(announced_news_types) /proc/announce_newscaster_news(datum/news_announcement/news) var/datum/feed_channel/sendto - for(var/datum/feed_channel/FC in GLOB.news_network.network_channels) + for(var/datum/feed_channel/FC in GLOB.news_network.channels) if(FC.channel_name == news.channel_name) sendto = FC break @@ -129,17 +129,16 @@ GLOBAL_LIST_EMPTY(announced_news_types) sendto = new /datum/feed_channel sendto.channel_name = news.channel_name sendto.author = news.author - sendto.locked = 1 - sendto.is_admin_channel = 1 - GLOB.news_network.network_channels += sendto + sendto.frozen = TRUE + sendto.admin_locked = TRUE + GLOB.news_network.channels += sendto var/datum/feed_message/newMsg = new /datum/feed_message newMsg.author = news.author ? news.author : sendto.author - newMsg.is_admin_message = !news.can_be_redacted + newMsg.admin_locked = !news.can_be_redacted newMsg.body = news.message - newMsg.message_type = news.message_type - sendto.messages += newMsg + sendto.add_message(newMsg) for(var/obj/machinery/newscaster/NEWSCASTER in GLOB.allNewscasters) - NEWSCASTER.newsAlert(news.channel_name) + NEWSCASTER.alert_news(news.channel_name) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm deleted file mode 100644 index c2396ab1d9f..00000000000 --- a/code/game/machinery/newscaster.dm +++ /dev/null @@ -1,855 +0,0 @@ -//############################################## -//################### NEWSCASTERS BE HERE! #### -//###-Agouri################################### - -/datum/feed_message - var/author = "" - var/title = "" - var/body = "" - var/message_type = "Story" - var/backup_body = "" - var/backup_author = "" - var/is_admin_message = 0 - var/icon/img = null - var/icon/backup_img - var/view_count = 0 - -/datum/feed_channel - var/channel_name = "" - var/list/datum/feed_message/messages = list() - var/locked = 0 - var/author = "" - var/backup_author = "" - var/censored = 0 - var/is_admin_channel = 0 - var/total_view_count = 0 - -/datum/feed_message/proc/clear() - author = "" - body = "" - backup_body = "" - backup_author = "" - img = null - backup_img = null - view_count = 0 - -/datum/feed_channel/proc/clear() - channel_name = "" - messages = list() - locked = 0 - author = "" - backup_author = "" - censored = 0 - is_admin_channel = 0 - total_view_count = 0 - -/datum/feed_channel/proc/announce_news(title="") - if(title) - return "Breaking news from [channel_name]: [title]" - return "Breaking news from [channel_name]" - -/datum/feed_channel/station/announce_news() - return "New Station Announcement Available" - -/datum/feed_network - var/list/datum/feed_channel/network_channels = list() - var/datum/feed_message/wanted_issue - -GLOBAL_DATUM_INIT(news_network, /datum/feed_network, new()) //The global news-network, which is coincidentally a global list. - -GLOBAL_LIST_EMPTY(allNewscasters) //Global list that will contain reference to all newscasters in existence. - -#define NEWSCASTER_MAIN 0 // Main menu -#define NEWSCASTER_FC_LIST 1 // Feed channel list -#define NEWSCASTER_CREATE_FC 2 // Create feed channel -#define NEWSCASTER_CREATE_FM 3 // Create feed message -#define NEWSCASTER_PRINT 4 // Print newspaper -#define NEWSCASTER_VIEW_FC 5 // Read feed channel -#define NEWSCASTER_NT_CENSOR 6 // Nanotrasen Feed Censorship Tool -#define NEWSCASTER_D_NOTICE 7 // Nanotrasen D-Notice Handler -#define NEWSCASTER_CENSOR_FC 8 // Censor feed channel -#define NEWSCASTER_D_NOTICE_FC 9 // D-Notice feed channel -#define NEWSCASTER_W_ISSUE_H 10 // Wanted Issue handler -#define NEWSCASTER_W_ISSUE 11 // STATIONWIDE WANTED ISSUE -#define NEWSCASTER_JOBS 12 // Available jobs - -/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!" - icon = 'icons/obj/terminals.dmi' - icon_state = "newscaster_normal" - armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) - max_integrity = 200 - integrity_failure = 50 - var/screen = NEWSCASTER_MAIN - var/paper_remaining = 15 - 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/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/msg_title = "" // Feed message title - var/obj/item/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/datum/feed_channel/viewing_channel = null - var/silence = 0 - var/temp = null - var/temp_back_screen = NEWSCASTER_MAIN - var/list/jobblacklist = list( - /datum/job/ai, - /datum/job/cyborg, - /datum/job/captain, - /datum/job/judge, - /datum/job/blueshield, - /datum/job/nanotrasenrep, - /datum/job/pilot, - /datum/job/brigdoc, - /datum/job/mechanic, - /datum/job/barber, - /datum/job/chaplain, - /datum/job/ntnavyofficer, - /datum/job/ntspecops, - /datum/job/civilian, - /datum/job/syndicateofficer) - - var/static/REDACTED = "\[REDACTED\]" - light_range = 0 - anchored = 1 - - -/obj/machinery/newscaster/security_unit - name = "Security Newscaster" - securityCaster = 1 - -/obj/machinery/newscaster/New() - GLOB.allNewscasters += src - unit_no = GLOB.allNewscasters.len - update_icon() //for any custom ones on the map... - ..() - -/obj/machinery/newscaster/Destroy() - GLOB.allNewscasters -= src - viewing_channel = null - QDEL_NULL(photo) - return ..() - -/obj/machinery/newscaster/update_icon() - cut_overlays() - if(inoperable()) - icon_state = "newscaster_off" - else - if(!GLOB.news_network.wanted_issue) //wanted icon state, there can be no overlays on it as it's a priority message - icon_state = "newscaster_normal" - if(alert) //new message alert overlay - add_overlay("newscaster_alert") - var/hp_percent = obj_integrity * 100 /max_integrity - switch(hp_percent) - if(75 to 100) - return - if(50 to 75) - add_overlay("crack1") - if(25 to 50) - add_overlay("crack2") - else - add_overlay("crack3") - -/obj/machinery/newscaster/power_change() - ..() - update_icon() - -/obj/machinery/newscaster/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) - . = ..() - update_icon() - -/obj/machinery/newscaster/attack_ghost(mob/user) - ui_interact(user) - -/obj/machinery/newscaster/attack_hand(mob/user) - if(..()) - return - ui_interact(user) - -/obj/machinery/newscaster/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - user.set_machine(src) - if(can_scan(user)) - scan_user(user) - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "newscaster.tmpl", name, 400, 600) - ui.open() - -/obj/machinery/newscaster/ui_data(user) - var/list/data = list() - - data["unit_no"] = unit_no - data["temp"] = temp - data["temp_back_screen"] = temp_back_screen - data["screen"] = screen - - switch(screen) - if(0) - data["wanted_issue"] = GLOB.news_network.wanted_issue ? 1 : 0 - data["silence"] = silence - data["securityCaster"] = securityCaster - if(securityCaster) - data["scanned_user"] = scanned_user - if(1, 6, 7) - var/list/channels = list() - data["channels"] = channels - for(var/datum/feed_channel/C in GLOB.news_network.network_channels) - channels[++channels.len] = list("name" = C.channel_name, "ref" = "\ref[C]", "censored" = C.censored, "admin" = C.is_admin_channel) - if(2) - data["scanned_user"] = scanned_user - data["channel_name"] = channel_name - data["c_locked"] = c_locked - if(3) - data["scanned_user"] = scanned_user - data["channel_name"] = channel_name - data["title"] = msg_title - data["msg"] = msg - data["photo"] = photo ? 1 : 0 - if(4) - var/total_num = length(GLOB.news_network.network_channels) - var/active_num = total_num - var/message_num=0 - for(var/datum/feed_channel/FC in GLOB.news_network.network_channels) - if(!FC.censored) - message_num += length(FC.messages) - else - active_num-- - data["total_num"] = total_num - data["active_num"] = active_num - data["message_num"] = message_num - data["paper_remaining"] = paper_remaining * 100 - if(5) - data["channel_name"] = viewing_channel.channel_name - data["author"] = viewing_channel.author - data["total_view_count"] = viewing_channel.total_view_count - data["censored"] = viewing_channel.censored - var/list/messages = list() - data["messages"] = messages - var/message_number = 0 - for(var/datum/feed_message/M in viewing_channel.messages) - if(M.img) - user << browse_rsc(M.img, "tmp_photo[message_number].png") - messages[++messages.len] = list("title" = M.title, "body" = M.body, "img" = M.img ? M.img : null, "message_type" = M.message_type, "author" = M.author, "view_count" = M.view_count, "message_number" = message_number) - message_number += 1 - if(8, 9) - data["channel_name"] = viewing_channel.channel_name - data["ref"] = "\ref[viewing_channel]" - data["author"] = viewing_channel.author - data["author_redacted"] = viewing_channel.author == REDACTED ? 1 : 0 - data["total_view_count"] = viewing_channel.total_view_count - data["censored"] = viewing_channel.censored - var/list/messages = list() - data["messages"] = messages - for(var/datum/feed_message/M in viewing_channel.messages) - messages[++messages.len] = list("title" = M.title, "body" = M.body, "body_redacted" = (M.body == REDACTED ? 1 : 0) , "message_type" = M.message_type, "author" = M.author, "author_redacted" = (M.author == REDACTED ? 1 : 0), "ref" = "\ref[M]", "view_count" = M.view_count) - if(10) - var/wanted_already = 0 - var/end_param = 1 - if(GLOB.news_network.wanted_issue) - wanted_already = 1 - end_param = 2 - data["wanted_already"] = wanted_already - data["end_param"] = end_param - data["channel_name"] = channel_name - data["msg"] = msg - data["photo"] = photo ? 1 : 0 - if(wanted_already) - data["author"] = GLOB.news_network.wanted_issue.backup_author - else - data["scanned_user"] = scanned_user - if(11) - data["author"] = GLOB.news_network.wanted_issue.backup_author - data["criminal"] = GLOB.news_network.wanted_issue.author - data["description"] = GLOB.news_network.wanted_issue.body - if(GLOB.news_network.wanted_issue.img) - user << browse_rsc(GLOB.news_network.wanted_issue.img, "tmp_photow.png") - data["photo"] = GLOB.news_network.wanted_issue.img ? GLOB.news_network.wanted_issue.img : 0 - if(12) - var/list/jobs = list() - data["jobs"] = jobs - for(var/datum/job/job in SSjobs.occupations) - if(job_blacklisted(job)) - continue - if(job.is_position_available()) - jobs[++jobs.len] = list("title" = job.title) - return data - -/obj/machinery/newscaster/Topic(href, href_list) - if(..()) - return 1 - - if(href_list["set_channel_name"]) - channel_name = trim(sanitize(strip_html_simple(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "")))) - - else if(href_list["set_channel_lock"]) - c_locked = !c_locked - - else if(href_list["submit_new_channel"]) - var/list/existing_authors = list() - for(var/datum/feed_channel/FC in GLOB.news_network.network_channels) - if(FC.author == REDACTED) - existing_authors += FC.backup_author - else - existing_authors += FC.author - var/check = 0 - for(var/datum/feed_channel/FC in GLOB.news_network.network_channels) - if(FC.channel_name == channel_name) - check = 1 - break - var/choice = alert("Please confirm feed channel creation", "Network Channel Handler", "Confirm", "Cancel") - if(choice == "Confirm") - if(channel_name == "" || channel_name == REDACTED || scanned_user == "Unknown" || check || (scanned_user in existing_authors)) - temp = "ERROR: Could not submit feed channel to Network.

"
- else
- dat+="None"
- else
- dat+="Apart from some uninteresting Classified ads, there's nothing on this page..."
- if(scribble_page==curr_page)
- dat+="
"
- else
- dat+="None"
- dat+="
"
+ else
+ dat+="None"
+ else
+ dat+="Apart from some uninteresting Classified ads, there's nothing on this page..."
+ if(scribble_page==curr_page)
+ dat+="
- {{:value.title}}
-

- {{:value.body}}
-

Main Content sdfsf |