diff --git a/aurorastation.dme b/aurorastation.dme
index 341ce05a092..6225f16ea0b 100644
--- a/aurorastation.dme
+++ b/aurorastation.dme
@@ -135,6 +135,7 @@
#include "code\__DEFINES\dcs\signals.dm"
#include "code\__DEFINES\dcs\signals\signals_datum.dm"
#include "code\__DEFINES\dcs\signals\signals_global.dm"
+#include "code\__DEFINES\dcs\signals\signals_lore_radio.dm"
#include "code\__DEFINES\dcs\signals\signals_record.dm"
#include "code\__DEFINES\dcs\signals\signals_spatial_grid.dm"
#include "code\__DEFINES\dcs\signals\signals_subsystem.dm"
@@ -1014,6 +1015,7 @@
#include "code\game\objects\items\ipc_overloaders.dm"
#include "code\game\objects\items\items_icon.dm"
#include "code\game\objects\items\knitting.dm"
+#include "code\game\objects\items\lore_radio.dm"
#include "code\game\objects\items\paintkit.dm"
#include "code\game\objects\items\recharger_backpack.dm"
#include "code\game\objects\items\shooting_range.dm"
@@ -1610,11 +1612,11 @@
#include "code\modules\background\religion\unathi.dm"
#include "code\modules\background\religion\vaurca.dm"
#include "code\modules\background\space_sectors\badlands.dm"
-#include "code\modules\background\space_sectors\coalition.dm"
#include "code\modules\background\space_sectors\generic_sectors.dm"
#include "code\modules\background\space_sectors\space_sector.dm"
#include "code\modules\background\space_sectors\tauceti.dm"
#include "code\modules\background\space_sectors\void.dm"
+#include "code\modules\background\space_sectors\coalition\coalition.dm"
#include "code\modules\balloon_alert\balloon_alert.dm"
#include "code\modules\battlemonsters\datum_core.dm"
#include "code\modules\battlemonsters\datum_elements.dm"
diff --git a/code/__DEFINES/dcs/signals/signals_lore_radio.dm b/code/__DEFINES/dcs/signals/signals_lore_radio.dm
new file mode 100644
index 00000000000..bb2b5670b81
--- /dev/null
+++ b/code/__DEFINES/dcs/signals/signals_lore_radio.dm
@@ -0,0 +1,4 @@
+// Signals related to lore radios, also known as analog radios
+// Sent from space_sector.dm
+
+#define COMSIG_GLOB_LORE_RADIO_BROADCAST "!lore_radio_broadcast"
diff --git a/code/controllers/subsystems/initialization/atlas.dm b/code/controllers/subsystems/initialization/atlas.dm
index c6168221d2e..ae14bc986a3 100644
--- a/code/controllers/subsystems/initialization/atlas.dm
+++ b/code/controllers/subsystems/initialization/atlas.dm
@@ -210,6 +210,8 @@ SUBSYSTEM_DEF(atlas)
else
current_sector = selected_sector
+ current_sector.setup_current_sector()
+
return SS_INIT_SUCCESS
/datum/controller/subsystem/atlas/proc/load_map_directory(directory, overwrite_default_z = FALSE)
diff --git a/code/game/objects/items/lore_radio.dm b/code/game/objects/items/lore_radio.dm
new file mode 100644
index 00000000000..4857b308be4
--- /dev/null
+++ b/code/game/objects/items/lore_radio.dm
@@ -0,0 +1,64 @@
+/obj/item/lore_radio
+ name = "analog radio"
+ desc = "A portable radio capable of receiving radio waves from nearby space systems."
+ icon = 'icons/obj/radio.dmi'
+ icon_state = "radio"
+ w_class = ITEMSIZE_SMALL
+
+ var/receiving = FALSE
+ var/current_station = null
+ var/starts_on = FALSE //so you can map it and have it broadcast without anyone turning it on
+
+/obj/item/lore_radio/Initialize()
+ . = ..()
+ if(!current_station && SSatlas.current_sector?.lore_radio_stations)
+ current_station = pick(SSatlas.current_sector.lore_radio_stations)
+ if(starts_on)
+ toggle_receiving()
+ RegisterSignal(SSdcs, COMSIG_GLOB_LORE_RADIO_BROADCAST, PROC_REF(relay_lore_radio))
+
+/obj/item/lore_radio/examine(var/mob/user)
+ . = ..()
+ to_chat(user, SPAN_NOTICE("\The [src] is turned [receiving ? "on" : "off"]."))
+ if(current_station)
+ to_chat(user, SPAN_NOTICE("\The [src] is listening to \the [current_station] radio station."))
+
+/obj/item/lore_radio/attack_self(var/mob/user)
+ if(SSatlas.current_sector?.lore_radio_stations)
+ var/picked_station = tgui_input_list(user, "Select the radio frequency.", "Radio Station Selection", SSatlas.current_sector.lore_radio_stations, current_station)
+ if(picked_station)
+ current_station = picked_station
+ if(!receiving)
+ toggle_receiving(user)
+ else
+ audible_message("[src] only emits white noise...")
+
+/obj/item/lore_radio/AltClick(var/mob/user)
+ toggle_receiving(user)
+
+/obj/item/lore_radio/proc/toggle_receiving(var/mob/user)
+ if(!receiving)
+ receiving = TRUE
+ if(user)
+ user.visible_message("[user] flicks \the [src] on.", SPAN_NOTICE("You flick \the [src] on."), range = 3)
+ else
+ receiving = FALSE
+ if(user)
+ user.visible_message("[user] flicks \the [src] off.", SPAN_NOTICE("You flick \the [src] off."), range = 3)
+
+/obj/item/lore_radio/proc/relay_lore_radio(var/datum/source, var/radio_station, var/radio_message)
+ SIGNAL_HANDLER
+
+ if(!receiving || radio_station != current_station)
+ return
+
+ var/displayed_message = radio_message ? "[src.name] transmits, \"[radio_message]\"" : "[src] only emits white noise..."
+ audible_message(displayed_message)
+ if(radio_message)
+ var/list/hearers = get_hearers_in_view(7, src)
+ var/list/clients_in_hearers = list()
+ for(var/mob/mob in hearers)
+ if(mob.client)
+ clients_in_hearers += mob.client
+ if(length(clients_in_hearers))
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, animate_chat), radio_message, null, FALSE, clients_in_hearers, 2 SECONDS)
diff --git a/code/modules/background/space_sectors/coalition.dm b/code/modules/background/space_sectors/coalition/coalition.dm
similarity index 95%
rename from code/modules/background/space_sectors/coalition.dm
rename to code/modules/background/space_sectors/coalition/coalition.dm
index 6b6f2490b86..2030808bafb 100644
--- a/code/modules/background/space_sectors/coalition.dm
+++ b/code/modules/background/space_sectors/coalition/coalition.dm
@@ -72,3 +72,11 @@
sector_welcome_message = 'sound/AI/welcome_konyang.ogg'
sector_hud_menu = 'icons/misc/hudmenu/konyang_hud.dmi'
sector_hud_arrow = "menu_arrow"
+
+ lore_radio_stations = list(
+ "73.2 Navy Broadcasting Service" = "config/lore_radio/konyang/73.2_Navy_Broadcasting_Service.txt",
+ "122 Great Blue Dot" = "config/lore_radio/konyang//122_Great_Blue_Dot.txt",
+ "75.4 PBA" = "config/lore_radio/konyang/75.4_PBA.txt",
+ "77.7 SoulFM" = "config/lore_radio/konyang/77.7_SoulFM.txt",
+ "78.1 RealFM" = "config/lore_radio/konyang/78.1_RealFM.txt"
+ )
diff --git a/code/modules/background/space_sectors/space_sector.dm b/code/modules/background/space_sectors/space_sector.dm
index 5c926d64876..8f44cbc1861 100644
--- a/code/modules/background/space_sectors/space_sector.dm
+++ b/code/modules/background/space_sectors/space_sector.dm
@@ -1,3 +1,7 @@
+#define RADIO_BROADCASTS "broadcasts"
+#define RADIO_NEXT_BROADCAST "next_broadcast"
+#define RADIO_BROADCAST_INDEX "broadcast_index"
+
/datum/space_sector
var/name
var/description
@@ -12,6 +16,10 @@
"iac" = 1, "zsc" = 1, "vfc" = 1, "bis" = 1, "xmg" = 1, "npi" = 1) //how much the space sector afffects how expensive is ordering from that cargo supplier
var/skybox_icon = "ceti"
+ /// An associated list of lore radio stations formatted like so: list("station name" = "path_to_broadcast.txt")
+ /// This gets converted into a formatted list after initialization like so: list(RADIO_BROADCASTS = list("stuff"), RADIO_NEXT_BROADCAST = world.time, RADIO_BROADCAST_INDEX = the entry in the list that will be broadcasted)
+ var/list/lore_radio_stations = null //what radio stations can be heard by the lore radio item here
+
var/list/sector_lobby_art = null //if this is set, it will override the map lobby icons
var/sector_lobby_transitions = null //if this is set, it will override the map lobby transition
var/sector_welcome_message = null ///if this is set, it will override welcome audio message
@@ -110,6 +118,60 @@
/obj/effect/meteor/supermatter=1\
)
+/// When SSAtlas chooses us as the current sector, this function is called, which will set us up to start processing
+/datum/space_sector/proc/setup_current_sector()
+ SHOULD_CALL_PARENT(TRUE)
+
+ // For now, i've put processing to only happen if the sector has a radio station
+ // but if, in the future, you add more stuff for the processor to handle, feel free to move it out of the if block
+ if(length(lore_radio_stations))
+ for(var/station in lore_radio_stations)
+ var/list/station_broadcasts = file2list(lore_radio_stations[station])
+
+ var/text_broadcast_index = 1
+ for(var/broadcast in station_broadcasts)
+ // Italics Regex
+ var/regex/italics_regex = regex("/(.*?)/")
+ broadcast = replacetext(broadcast, italics_regex, "$1")
+
+ // Random Note Regex
+ var/randomnote = pick("\u2669", "\u266A", "\u266B")
+ broadcast = replacetext(broadcast, "\[RANDOMNOTE\]", randomnote)
+
+ station_broadcasts[text_broadcast_index] = broadcast
+ text_broadcast_index++
+
+ var/broadcast_length = length(station_broadcasts)
+ lore_radio_stations[station] = list(
+ RADIO_BROADCASTS = station_broadcasts,
+ RADIO_NEXT_BROADCAST = 0, // start ASAP
+ RADIO_BROADCAST_INDEX = rand(1, broadcast_length) // start randomly in the broadcast so it isn't in the same sequence every time
+ )
+
+ START_PROCESSING(SSprocessing, src)
+
+/datum/space_sector/Destroy(force)
+ STOP_PROCESSING(SSprocessing, src)
+ return ..()
+
+/datum/space_sector/process(seconds_per_tick)
+ for(var/station in lore_radio_stations)
+ var/list/broadcast_info = lore_radio_stations[station]
+ if(world.time < broadcast_info[RADIO_NEXT_BROADCAST])
+ continue
+
+ var/broadcast_index = broadcast_info[RADIO_BROADCAST_INDEX]
+ var/broadcast_message = broadcast_info[RADIO_BROADCASTS][broadcast_index]
+
+ SEND_GLOBAL_SIGNAL(COMSIG_GLOB_LORE_RADIO_BROADCAST, station, broadcast_message)
+
+ if(broadcast_index == length(broadcast_info[RADIO_BROADCASTS]))
+ broadcast_info[RADIO_BROADCAST_INDEX] = 1
+ broadcast_info[RADIO_NEXT_BROADCAST] = world.time + 30 SECONDS // give it a bit of a breather if we've exhausted all the messages
+ else
+ broadcast_info[RADIO_BROADCAST_INDEX]++
+ broadcast_info[RADIO_NEXT_BROADCAST] = world.time + (rand(6, 10) SECONDS) // otherwise, throw in a randomish delay (considering we're on SSprocessing, it'll uusssuaaalllyyy be about 2 seconds at minimum)
+
/datum/space_sector/proc/get_chat_description()
return "
Current Sector: [name]!
[description]
"
@@ -127,3 +189,10 @@
if(name in away_site.sectors)
away_sites += away_site
return away_sites
+
+/datum/space_sector/proc/lore_radio_message(/obj/item/R, chosen_station) //used for the lore radio in lore_radio.dm.
+ return
+
+#undef RADIO_BROADCASTS
+#undef RADIO_NEXT_BROADCAST
+#undef RADIO_BROADCAST_INDEX
diff --git a/code/modules/client/preference_setup/loadout/items/general.dm b/code/modules/client/preference_setup/loadout/items/general.dm
index a6cd5e13c1a..dfb66ca064a 100644
--- a/code/modules/client/preference_setup/loadout/items/general.dm
+++ b/code/modules/client/preference_setup/loadout/items/general.dm
@@ -411,3 +411,7 @@
display_name = "aurora miniature"
description = "A commemorative miniature of the NSS Aurora."
path = /obj/item/toy/aurora
+
+/datum/gear/lore_radio
+ display_name = "analog radio"
+ path = /obj/item/lore_radio
diff --git a/config/example/lore_radio/konyang/122_Great_Blue_Dot.txt b/config/example/lore_radio/konyang/122_Great_Blue_Dot.txt
new file mode 100644
index 00000000000..4171aa1626c
--- /dev/null
+++ b/config/example/lore_radio/konyang/122_Great_Blue_Dot.txt
@@ -0,0 +1,51 @@
+/..hkk#ht../
+/...bzzbbt.../
+/Khhkhhhkh...khhh#t.../
+/...gh#hhk....kt.../
+/Khhkhhht.../
+/..khkbzzzzz-t.../
+/Bzzzt-bzzt.../
+/...khhbzzzt.../
+/....khk#khhh.../
+/...khh..ping../
+/...khhbeware..khhht.../
+/..khhk#hhwaspskhhh-ht../
+/Khhkh$hhkh...khh#$ht.../
+/...ghhhk....kt.../
+/Khhk#hhht.../
+/..khkb$zzzzz-t.../
+/Bzzzt-bzzt.../
+/...hkkhh...khhlook upkhh-hht.../
+/..hkkht../
+/...bzzbbt.../
+/Khhkh$#hhkh...khh$ht.../
+/...khhk-...khhno-timekhh.../
+/..hkkht../
+/...bzzbbt.../
+/Khh#khhhkh...khhh#t.../
+/Bzzzt-bzzt.../
+/...khh*&^zt.../
+/....kh#kkhhh.../
+/...kh2h..ping../
+/...the hive.../
+/...bzz$z$#zt.../
+/...lookup.../
+/..khht.../
+/..khkb$zzzzz-t.../
+/Bzzzt-bzzt.../
+/...khhbzzzt.../
+/....khkkhhh.../
+/...khh..ping../
+/...khhbeware..khhht.../
+/..khhkh$#hwaspsk#hhh-ht../
+/Khhkhhhkh...khhht.../
+/...ghhhk....kt.../
+/Khhkhhht.../
+/..khkb#zzzzz-t.../
+/Bzzzt-bzzt.../
+/...khh..p#ing../
+/...the hive.../
+/...kh#hhtime is nowkhhg$htt.../
+/...khhtkht.../
+/..khhjoin us../
+/..khh$khhjoin us now.../
diff --git a/config/example/lore_radio/konyang/73.2_Navy_Broadcasting_Service.txt b/config/example/lore_radio/konyang/73.2_Navy_Broadcasting_Service.txt
new file mode 100644
index 00000000000..d5ea85fa020
--- /dev/null
+++ b/config/example/lore_radio/konyang/73.2_Navy_Broadcasting_Service.txt
@@ -0,0 +1,100 @@
+This is the Navy Broadcasting Service, at 73.2 MHz.
+Now follows today's Shipping Forecast issued by the Meteorological Office.
+North Sea, strong southerly winds, seven to eight Beaufort, good visibility.
+/Hzzt-..bbrr...ghhk../
+Dongsan Bay, mild westerly winds, three Beaufort, good visibility.
+Boryeong Straits, strong westerly winds, six to seven Beaufort, average visibility.
+Sanggyongpyong station shows stormy weather in the region.
+Finki Sea, average winds, south-westerly, four Beaufort. Poor visibility.
+Kuanhai Bay, calm winds, easterly, good visibility.
+/Bzzt-.../
+Changsan Archipelago, strong northerly winds, eight to nine Beaufort.
+Yamada Straits, storm, southerly, eleven Beaufort.
+Mikkelsen Sea, moderate winds, south-southeasterly, five to six Beaufort.
+Wishing all Konyanger Mariners safety and luck.
+/Hhkkkhhzzt.../
+Daiyuan Sea, calm, excellent visibility.
+Kamazuki Straits, mild winds, northerly.
+This was the Shipping Forecast for our nation's high seas, as issued by the Meteorological Office.
+The Navy Broadcasting Service would like to remind our listeners to stay safe.
+/Hzzt-..bbrr...ghhk../
+Stay safe, stay indoors. Follow all instructions issued by the National Disaster Authority.
+For Positronic Citizens: Remain indoors, solid materials weaken the viral signal.
+Avoid usage of public chargers.
+Run regular diagnostics checks.
+If you experience symptoms, report your location to the KRC emergency number and seek immediate assistance.
+Time is of the essence. If assistance is unavailable, try the following to prevent yourself from harming others:
+Lock yourself indoors.
+Strap yourself down or to a chair.
+If applicable: switch off locomotive functions.
+Do not be afraid: You will be retrieved and repaired.
+For everyone else: report locations of suspicious or infected behavior to the KRC emergency number.
+Do not attempt to restrain, attack or otherwise interfere with rampant Positronics.
+/Hkk..hkkk.../
+Assist any Positronics with barricading their home or strapping them safely.
+Keep in mind: Positronic friends and family members will not be able to recognise you if they are infected. Do not try to talk, reason or plead with them.
+The Konyang Robotics Corporation emergency number is 500-100-500.
+This is the Navy Broadcasting Service, at 73.2 MHz.
+/Hrrrhhkt.../
+You are now listening to the news.
+The secretive positronic collectivity "Purpose" has sparked great interest in the scientific community.
+Requests for a visit on board one of their vessels have been turned down.
+While appearing technologically superior to any known race in the Spur, there are assurances of peace and cooperation with our nation.
+Contact with Purpose was first made in 2460, by a corporate vessel in Tau Ceti.
+Links between Purpose and the Aoyama Vaults speculated, though unconfirmed.
+/Hkkkhhzzt.../
+KRC statistics report over ten hundred thousand daily cases. Ten thousand positronics per day making full recoveries.
+KRC crisis center network expanding in Shuzu, New Busan, Kangdong, Bupyeong, Onan, Mizukami, Yunfu.
+The 55th, 106th and 74th infantry divisions were ordered to deploy to enforce quarantine regulations in New Hong Kong.
+Positronic service members confined in barracks pending KRC assessment throughout the Army and Navy.
+/...khhbzzzt.../
+Konyang Aerospace Forces to intensify patrols in the Haneunim system to crack down on piracy and smuggling.
+Foreign and Coalition countries have dispatched messages of support for our nation.
+/Bzzt-.../
+Prime Minister Myeong Myung-Dae has said that Konyang is not in need of external material assistance at this time.
+The Suwon Stock Exchange has entered a temporary pause of services in light of the viral outbreak. Finance Ministry urges calm.
+/Hkk..hkkk.../
+Severe storms hit the New Kowloon sea wall. Damages reported, but repairs are underway.
+In her address to the Yi Sun-sin Naval Academy, admiral Kim Ha-neul urged the new lieutenants to rise up to the difficult current circumstances.
+Konyang Army medical personnel have completed training in confronting the new virus.
+/Hrrrhhkt.../
+The Stellar Corporate Conglomerate's vessel Horizon has arrived in Haneunim to assist in combatting the virus.
+Chaos in Boryeong City's Han district, as five infected attack vehicles stopped in traffic. Two deaths, three injuries.
+Remote areas of Konyang in additional danger due to distances and lack of supplies, says police.
+Retired Commissioner General of Police Li Jincai recalled to service in advisory role.
+This is the Navy Broadcasting Service, at 73.2 MHz.
+/Khhrrr...khhrrt../
+The Meteorological Office has released the 2465-66 seasonal cycle.
+The cycle is based upon Qixi's orbital projections and meteorological projections.
+Wet Season, starting November 17th, 2465, ending July 29th, 2466.
+Flooding period, December 1st to January 27th, 2466.
+/Hzzt-..bbrr...ghhk../
+High Tide period, January 28th to March 21st.
+Highest Tide period, March 22nd to April 29th.
+Ebbing High Tide period, April 30th to June 2nd.
+Ebbing Flooding period, June 3rd to July 28th.
+Dry Season, Ebbing period, July 29th to September 5th.
+Low Tide period, September 6th to November 13th, 2466.
+Projected highest average wave height during HT period, eight plus minus one meters.
+/Hkk..hkkk.../
+This is the Navy Broadcasting Service, at 73.2 MHz.
+Stay safe, stay indoors.
+A one million credit donation to the Navy Rapid Rescue Force by the PACHROM corporation was warmly welcomed by the Chief of Staff.
+A plan was released to provide funding for the renovation of 60 ambulance mechs.
+Army and National Police vow to "uproot lawlessness" in the bandit-infested Boryeong coasts in 2466.
+Foreign workers in KRC or other presently critical posts "will not be forgotten", says Prime Minister.
+/Hzzt-..bbrr...ghhk../
+Suwon Detention Center No.1 evacuated of its Positronic inmates due to fears of rampancy.
+Army Signal Corps to install additional protective infrastructure around Point Verdant districts.
+/Bzzt-.../
+Warmest wishes from all the staff at the Navy Broadcasting Service.
+Dam and hydroelectric station weather review.
+Kichi Islands, very strong rain, eight Celcius to twelve Celcius.
+Xinhe Islands, strong rain, nine Celcius to fourteen Celcius.
+Dongsan Bay, strong rain, five Celcius to ten Celcius.
+Sinpo Station, rain, seven Celcius to ten Celcius.
+Hoko Station, very strong rain, five Celcius to eight Celcius.
+/Hzzt-..bbrr...ghhk../
+Qinghe Station, very strong rain, two Celcius to five Celcius. Storm warning.
+Wishing all sea station workers safety and luck.
+/Hkk..hkkk.../
diff --git a/config/example/lore_radio/konyang/75.4_PBA.txt b/config/example/lore_radio/konyang/75.4_PBA.txt
new file mode 100644
index 00000000000..2a1bee941f5
--- /dev/null
+++ b/config/example/lore_radio/konyang/75.4_PBA.txt
@@ -0,0 +1,100 @@
+This is the Public Broadcasting Agency, the voice of Konyang, broadcasting from Suwon.
+/A solemn jingle used by the PBA./
+You are now listening to the Public Broadcasting Agency, live from Suwon.
+/The national anthem of Konyang./
+This is a message from the Ministry of Health and Positronic Affairs. Emergency measures for Positronic persons in effect.
+Stay indoors, remain calm, run regular diagnostics.
+….Suwon City, curfew 6 PM to 8 AM. Quarantine in Aoyama City, New Hong Kong City, Boryeong City…
+And now, the news. A state-of-the-art KRC mobile hospital has opened in New Busan, servicing patients exclusively affected by the virus. One thousand personnel inbound.
+Heated debates in Parliament over the inclusion of Positronic MPs in sessions. “Let them holocall” replied Shimazu.
+Bank of Konyang investigation into new national currency instructed to continue despite outbreak. Idris Incorporated approached.
+/Bzzt-.../
+Bust of Shishi completed and revealed in Unity Square to mark the tenth year since the Positronic’s death, the first recorded murder-hate crime.
+Tau Ceti embassy’s Positronic staff evacuated, replacements expected.
+/A solemn jingle used by the PBA./
+This is the Public Broadcasting Agency, broadcasting from Suwon at 75.4 MHz.
+Tired? We've all been there, what about a change? BAM! energy supplements! Available at pharmacies.
+Mishi Sauces. Turn that bland moss gourmet with Mishi Sauces. New Salted Fish flavor out now.
+Speed… comfort… safety. Langenfeld.
+Stop running away from your luck! One in ten wins at the National Lottery! Grand Prize ten million credits!
+Ballet Theater of Boryeong. Plutonian Ballet-Traditional dances. Guest star Yuri Fyodorovich. Tickets out.
+/A solemn jingle used by the PBA./
+/Hrr-hrr...khhr.../
+This is the Public Broadcasting Agency, broadcasting from Suwon at 75.4 MHz. Orbital broadcasting for the Haneunim system available.
+Talking Truths, keeping you company every Thursday.
+This is a message from the Ministry of Environmental Affairs and Response to Calamities.
+Rampancy outbreak emergency guidelines. If you come across an infected Positronic person, alert the authorities immediately.
+Do not approach suspicious Positronic persons. Symptoms include a catatonic posture and off-tune audio responses.
+Do not drive long distances without supplies.
+Do not go into the jungles.
+The virus shuts down major cognitive functions, significantly increasing battery life. Always remain vigilant.
+/A solemn jingle used by the PBA./
+Hayiaaaa! It's so hot! What are we supposed to do?! BreezePunch! The cold beverage to the rescue!
+When Mister Xianma needed new neck oscillators, his KRC appointment had him wait two months. At Jogo Clinics, he was serviced the same day.
+Grandma's moss broth has never been tastier, she uses Gwok SpiceCubes!
+Choson Ferries, safe global sea journeys. Choson Ferries.
+Ajax insulation, for a house against the rain!
+Feeling drained? Go for a walk. Suwon parks society.
+And now, Poetry Corner. From the Public Broadcasting Agency.
+/A short piece of traditional Konyanger instrumental music./
+Rainy season…
+The choking clouds…
+Feeling of hope…
+Warmth of a thousand suns…
+/Two clicks./
+An eye for an eye…
+Maw of the monster…
+Retribution, the killer of life…
+/Three clicks./
+/Hzzt-..bbrr...ghhk../
+When pain is all you feel…
+Remember this…
+A mother's embrace…
+/Four clicks./
+This was Poetry Corner.
+/A solemn jingle used by the PBA./
+Hello and welcome everyone to Frank Conversations, this is your host Woo-Chung.
+Today we will be taking calls from our audience, on the subject of the outbreak.
+/Phone dial tone.../
+Hello? Can you hear us?
+/Yes? Hello./
+Hi, welcome on air. Do you have a story you would wish to share?
+/Yes, actually.. I was wondering if anyone has seen my friend? IPC, about two meters tall, industrial./
+What is your friend's name?
+/He always called himself Daehak. He disappeared last week-/
+Where did they disappear from?
+/Saitama island, he works at the dam there, they don't know where he went after the shift./
+It seems time's up for this call. I'm certain all PBA listeners will do our best.
+If anyone knows anything, please contact the police, or this station directly.
+Let's move to our next caller.
+/Phone dial tone.../
+Hello? You are on air.
+/Hi, PBA?/
+Yes indeed, you are on air.
+/Great. Do you guys have any idea how I am supposed to go to work?/
+What is the problem?
+/Hhhkhhh-.../
+/The quarantine is the problem. I have to commute an hour to go to work. And now even that is impossible./
+Are you calling from Suwon? They are telling me there should be designated lanes where traffic is allowed.
+/Yeah, but they are all clogged up. And my boss won't let us work from home./
+They might have to. All major non-retail businesses must have that option.
+/I don't get it, I'm not even an IPC, why can't they make a lane for humans only?/
+The roadblocks are for everyone's safety. I am sure the police are doing their best.
+/Well their best is not enough./
+Anyways, that is all the time we had for that call.
+We will see you next time on Frank Conversations, broadcast live on PBA.
+/A solemn jingle used by the PBA./
+This is the Public Broadcasting Agency, broadcasting from Suwon at 75.4 MHz.
+Ah, gee, car broke down again? Express Service, call now at 866-941-008.
+Fall all things house, Chipo Furniture has your back!
+Casino Hamki. Combine Luck and Luxury into an unforgetful experience. 21+ admittance only.
+Fresh Fish, only at Otomo Fisheries. The best in Aoyama.
+Jumbo Entertainment presents the new pAI-powered talking squid!
+/Hrrr..bzzt-/
+Take a break, Milto's Chocolates.
+Snacking time? What better than GWOK! Moist Chips?
+At RealLife Insurances, you feel safe.
+Get on the road with BigScooters!
+Shibata Motors new Kawono X5, unparalleled speed, unrivaled quality.
+/Hkk..hkkk.../
+Bullseye Records Suwon top 10 albums are now available!
diff --git a/config/example/lore_radio/konyang/77.7_SoulFM.txt b/config/example/lore_radio/konyang/77.7_SoulFM.txt
new file mode 100644
index 00000000000..6f1898add25
--- /dev/null
+++ b/config/example/lore_radio/konyang/77.7_SoulFM.txt
@@ -0,0 +1,100 @@
+77.7 Soul FM, the number one music station on the GLOBE!
+[RANDOMNOTE] Feeling aliiiive! Soul FM... [RANDOMNOTE]
+What is up everyone, our warmest greetings to our listeners from 77.7 Soul FM, live from Shinzhen, New Hong Kong.
+Now enough talk, let's get the mood up with some classics...
+[RANDOMNOTE] I want to see you smile through the storm, a hole in my heart, only filled by you~ [RANDOMNOTE]
+[RANDOMNOTE] Dance through the night, up in the clouds, your name spelled in the stars. [RANDOMNOTE]
+[RANDOMNOTE] My eyes long to see you, your touch in my hair, the warmth from your embrace! [RANDOMNOTE]
+[RANDOMNOTE] A fiery presence, larger than life, you make me feel like only we matter. [RANDOMNOTE]
+77.7 Soul FM.
+[RANDOMNOTE] Boom boom boom, listen to this, my heartbeat on fire. [RANDOMNOTE]
+[RANDOMNOTE] Alive as ever, an object of desire. [RANDOMNOTE]
+[RANDOMNOTE] Through thick and thin, situations so dire. [RANDOMNOTE]
+[RANDOMNOTE] It's all so crazy I'm about to go haywire... [RANDOMNOTE]
+[RANDOMNOTE] I've told you a million times, I need a life! [RANDOMNOTE]
+/Hbbbrhht../
+[RANDOMNOTE] A life with you and me in it. [RANDOMNOTE]
+That was "Heartbeat" by Gracie Kim. And now, for our Top Ten...
+[RANDOMNOTE] Shape... the future... [RANDOMNOTE]
+[RANDOMNOTE] Believe... in the future... [RANDOMNOTE]
+[RANDOMNOTE] Beep-ep-ob. Beep-beep-peb-beep-bep-ob. [RANDOMNOTE]
+[RANDOMNOTE] Run up... to the future... [RANDOMNOTE]
+[RANDOMNOTE] Live in... to the future... [RANDOMNOTE]
+77.7 Soooooul FM!
+And don't forget, dear listeners, our daily competition ends in an hour!
+Call us at 522-059-900 to join our participation pool, for 5 credits per call.
+[RANDOMNOTE] I like it, I like it! [RANDOMNOTE]
+[RANDOMNOTE] Turn on the holoscreen! [RANDOMNOTE]
+[RANDOMNOTE] A million ways to see our life- [RANDOMNOTE]
+[RANDOMNOTE] Fifty million light-years wide [RANDOMNOTE]
+[RANDOMNOTE] I like it, I like it! [RANDOMNOTE]
+[RANDOMNOTE] Turn on the volume! [RANDOMNOTE]
+[RANDOMNOTE] Ask me what that is, that is our bright starred future! [RANDOMNOTE]
+[RANDOMNOTE] I like it, I like it! [RANDOMNOTE]
+[RANDOMNOTE] Do you like it? [RANDOMNOTE]
+That was "Turn on the Holoscreen", by Million-Six.
+/Bzzt../
+Hephaestus Industries. The anvil upon which the world is built.
+Ayaa, you burnt the rice! Don't worry, we'll go to UP! Burger! By Gwok Foods.
+Fever, aches, food poisoning? Why miss out on life? HydroMol Relief.
+My father always told me to prepare. KNN National Insurance.
+[RANDOMNOTE] Uh-ah, woohoo, hee-he.. we need some help over here! [RANDOMNOTE]
+[RANDOMNOTE] I want to hold your hand, feeling like- [RANDOMNOTE]
+[RANDOMNOTE] Playing like a whole band, spending like- [RANDOMNOTE]
+[RANDOMNOTE] Much over a whole grand, shouting like- [RANDOMNOTE]
+[RANDOMNOTE] Animals that don't bite, over here! [RANDOMNOTE]
+[RANDOMNOTE] Could use some help, picking up myself. [RANDOMNOTE]
+[RANDOMNOTE] The burdens of the world- [RANDOMNOTE]
+[RANDOMNOTE] Humming to myself- [RANDOMNOTE]
+[RANDOMNOTE] A tune worth a lot more. [RANDOMNOTE]
+/Bzztht../
+Sooooul FM!
+Soul FM, 77.7.
+/Hhhkht.../
+Piercing your minds from Shinzen, New Hong Kong!
+Hey everyone, I hope you're all safe during these crazy times.
+Thoughts and prayers for all our brothers and sisters facing the virus.
+Nasty thing, but it will be over soon.
+Got some news, the SCCV Horizon might be listening. They carried the cure over!
+If you are, thanks, SCCV Horizon. We owe you guys.
+For all you crewmembers in the sky above, this one's for you!
+[RANDOMNOTE] Ladies and gentlemen... [RANDOMNOTE]
+[RANDOMNOTE] We've got all this and more in store-store-ore! [RANDOMNOTE]
+[RANDOMNOTE] Piercing the skies, fearless. [RANDOMNOTE]
+[RANDOMNOTE] Smashing through bluespace, still. [RANDOMNOTE]
+[RANDOMNOTE] Our hearts on target, our minds on the task. [RANDOMNOTE]
+[RANDOMNOTE] Dashing through bluespace, sailors of the void. [RANDOMNOTE]
+[RANDOMNOTE] Charting the unknown, with danger to our own. [RANDOMNOTE]
+[RANDOMNOTE] We are pioneers, sailors of the void. [RANDOMNOTE]
+/Brrr-hhkkt../
+Bullseye Records Suwon top 10 albums are now available!
+Take a break, Milto's Chocolates.
+Fall all things house, Chipo Furniture has your back!
+Think you can handle it? KANMAN escape rooms, now available in 20 places.
+Fresh Fish, only at Otomo Fisheries. The best in Aoyama.
+Konyang Can! Gwok Coffee.
+I feel like I can dance again!
+[RANDOMNOTE] Dance-dance, dance like you're 20 [RANDOMNOTE]
+[RANDOMNOTE] Feel the rhythm, feel the vibe [RANDOMNOTE]
+[RANDOMNOTE] Dance-dance, dance like it don't matter [RANDOMNOTE]
+[RANDOMNOTE] All around you lights, underneath the dancefloor [RANDOMNOTE]
+[RANDOMNOTE] Dance-dance, dance like you mean it! [RANDOMNOTE]
+[RANDOMNOTE] Keep it up, don't stop [RANDOMNOTE]
+[RANDOMNOTE] Don't stop till I tell you to stop! [RANDOMNOTE]
+[RANDOMNOTE] A dancing plaaaague! [RANDOMNOTE]
+This was Dance, by 24/7!
+Sooooul FM! The soul of music
+77.7 Soul FM!
+Feeling unproductive? Himel Vitamins. Extra energy, extra productivity.
+Coming hot with the new Poplar Mastiff-6, compact power for the city streets.
+/Hrrrkt.../
+Speak up Trombones, now from 899.99.
+[RANDOMNOTE] Fly me to Qixi [RANDOMNOTE]
+[RANDOMNOTE] Let me see the stars [RANDOMNOTE]
+[RANDOMNOTE] Felt like a butterfly [RANDOMNOTE]
+[RANDOMNOTE] The weight of the planet [RANDOMNOTE]
+[RANDOMNOTE] Makes me feel like a bulldozer [RANDOMNOTE]
+[RANDOMNOTE] Trying to catch a butterfly- [RANDOMNOTE]
+Soooul FM! 77.7.
+Einstein Engines, Lead by our history, leading our future.
+/Hrrrrkt./
diff --git a/config/example/lore_radio/konyang/78.1_RealFM.txt b/config/example/lore_radio/konyang/78.1_RealFM.txt
new file mode 100644
index 00000000000..accd630e95c
--- /dev/null
+++ b/config/example/lore_radio/konyang/78.1_RealFM.txt
@@ -0,0 +1,100 @@
+78.1 RealFM. Speaking only truths.
+I'm Bo Hoon, you're listening to Real Talk on RealFM.
+I gotta tell you folks, things are looking worse day after day.
+They're going to tell you that the so called hivebot virus were aliens.
+Yeah we've heard that story before. But what the hell even /are/ these things?
+Now they're finally trying to slowly unveil The Machine, and they dubbed it what, "Purpose"?
+I was the one talking about that here TWO YEARS AGO. But NOBODY listened.
+Now look where we're at. MILLIONS are getting mind controlled DAILY.
+Oh but they won't admit it. The stats the police gives out are a fraud.
+THE MACHINE is behind all this. Listen to me. Remember the Glorsh files I uncovered.
+The Skrell have planned this virus out to take out our labor force. Humiliate us for embracing IPCs.
+ONLY ON REAL FM WILL YOU HEAR THIS.
+They got us all figured out. We've walked right into their trap. The Prime Minister is an untagged shell, mind controlled by the Machine.
+And NOBODY CARES. NOBODY is doing ANYTHING. Not the courts, not the army, NOBODY.
+Now our cities are quarantined and the Skrell laugh.
+This Deluge guy that they made? Yeah, the Skrell control him too. With this virus, they tell him to do what he does.
+Why? To RUIN the REPUTATION of IPCs, so that humanity can stop making them.
+They're trying to make us think they're dangerous.
+But the real danger is them. Hivebots? Those little ancient drones?
+They're trying to tell us it's a totally new thing. But it's Glorsh-era technology. I know it, I've seen it.
+We'll be back after an ad break. STAY TUNED, THERE'S A LOT MORE COMING.
+/Hhkkt./
+Luxury taste with EYE. The top Brandy marque on Konyang.
+Pack big, pack hard. Show them who's boss with ARMLIFE Hunting Rifles.
+/Brrrtbr../
+AlterPaste Nanopaste allows you and your loved ones anonymous and at-home repairs!
+Tsunamis and floods are no joke on Konyang. With BunkerDown Tech products, you too can purchase your own underground evacuation facility.
+BunkerDown Tech Survive Deluxe now provides more worth for half the price. Antibiotics pack included.
+/Hhhkhh../
+I'm Bo Hoon, we're back at Real Talk.
+I'd like to personally thank BunkerDown Tech for sponsoring our broadcast since the day we started.
+There isn't many out there willing to bear the truth these days.
+Anyway, since I've gotten some messages regarding what I said before about the virus.
+There's sheep out there that still think this is just a "phase" or whatever.
+They're dipshits. Yeah I said it, and I'll eat the fine I don't care!
+That's the only way you can describe someone this stupid. THE WORLD IS FALLING APART, WAKE UP.
+There's TANKS on the streets, Government House in Suwon is protected by MECHS.
+Real Army stuff. The Navy is shutting down the shipping lanes. They want to paralize EVERYTHING.
+I'm telling you, life after this won't be the same. We'll all be looking over our shoulder.
+That's what they're trying to do with this. The Machine has come at us with full force.
+I have a friend, he said he saw an old lady getting her face TORN APART by a G2. It's nuts out there.
+And now they're sending the... what was it called again? The Horizon? To save us.
+They are controlled by NANOTRASEN, WAKE UP.
+With Skrell made technology to "save us" from the virus. I'm telling you, the Electronic Countermeasures Device will fry our brains.
+They won't target IPCs anymore. They will target our brains with human-sensitive radiowaves.
+They want to destabilize our country. EXACTLY like they did to Sol.
+Did you ever wonder how a literal GIANT like Sol fell apart?
+Ever wonder who stands to benefit from the breakup of Humanity like that?
+Yeah, the Skrell. Bingo. And all their corporate puppets.
+I'm telling you guys, Einstein is the only one fighting them. That's why they treat them like outcasts.
+The Phoenixport purchase for example. Their phoney courts ripped it off Einstein's hands.
+/Hkkhhhht..../
+Alex Mason made a phonecall, and bam, Tau Ceti fell on its knees before him and Trasen.
+Of course our government didn't do anything. They were obviously too busy getting scammed by the PM.
+So was our entire nation, and now it is too late.
+You know what, the guys in the coasts of north Boryeong, I get them now.
+I used to think they're scum and pirates and all that.
+But they're actually the most free out of all of us.
+You're listening in at 78.1 RealFM, keeping it real and until after the break!
+/Hhkmmkt../
+ARMLIFE wet season gear are now out. Seek our new boot collection.
+Escape to VYSOKA with Getaway! The practical shuttleline.
+Legal Optics offers professional legal services to citizens of all backgrounds.
+AlterPaste Nanopaste allows you and your loved ones anonymous and at-home repairs!
+Pack big, pack hard. Show them who's boss with ARMLIFE Hunting Rifles.
+/Hrrhhhkt./
+Don't think twice, Gear up at ARMLIFE!
+Alright, we're back. I'm Bo Hoon, and something big just came in.
+I was informed by my associates... that the new AlkaSerum is out.
+You know what AlkaSerum is? I'll tell you. It's ESSENTIAL that's what it is.
+It's a cream made out of alkalines and meshed up metals, backed up by real science.
+It's designed to stop any interfering signals from reaching the positronic.
+Simply take some in your fingers, and apply it over the IPC's head.
+Trust me when I say this, it REDUCES the chances of infection by EIGHTY PERCENT.
+And it's not me, again, it's real science. The tests speak for themselves.
+And for this broadcast, whoever calls within the next TWENTY MINUTES can get AlkaSerum for ONLY 79.99.
+CALL 988-043-100 NOW to get your AlkaSerum. Man, the price is GOOD!
+Because we here at Real FM don't put a price on safety.
+We're not like others, we fight back against The Machine and those that want to tear down our SOCIETY.
+Call now at 988-043-100. That is 988-043-100.
+/Hhhrkkhtzt..../
+And remember. If you see these hivebots, shoot them down where they are.
+Nothing better than some ARMLIFE firepower in these trying times.
+Folks. We got to keep safe.
+The ministry will tell you to keep your distance and stuff like that. Nah, that doesn't work.
+Me? I barricade my windows. Wooden planks and a layer of tinfoil behind it.
+It stops all electromagnetic radiation from even getting close.
+I honestly think it's time everyone woke up and banded together over this.
+We have to protect our loved ones and ourselves from the virus.
+To hell with all the politicians, this is real war.
+They want to TEAR US APART. We won't let them. No Sir.
+/Khkhh..hrtt.../
+You heard that?
+Thought I heard something. Weird.
+Stay tuned.
+Pack big, pack hard. Show them who's boss with ARMLIFE Hunting Rifles.
+Escape to VYSOKA with Getaway! The practical shuttleline.
+Luxury taste with EYE. The top Brandy marque on Konyang.
+Tsunamis and floods are no joke on Konyang. With BunkerDown Tech products, you too can purchase your own underground evacuation facility.
+Don't think twice, Gear up at ARMLIFE!
diff --git a/html/changelogs/alberyk-radio.yml b/html/changelogs/alberyk-radio.yml
new file mode 100644
index 00000000000..f7399e0016a
--- /dev/null
+++ b/html/changelogs/alberyk-radio.yml
@@ -0,0 +1,7 @@
+author: Alberyk, Geeves
+
+delete-after: True
+
+changes:
+ - rscadd: "Added an analog radio that can display lore related radio station to the system the ship is currently in."
+
diff --git a/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm b/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
index 04e31a7ddba..656175c3bd4 100644
--- a/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
+++ b/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
@@ -15111,6 +15111,10 @@
id = "Bar_Private_Lounge";
pixel_y = 24
},
+/obj/item/lore_radio{
+ pixel_x = 9;
+ pixel_y = 2
+ },
/turf/simulated/floor/carpet/red,
/area/horizon/bar)
"gUA" = (