diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index f9e7b67c74..b842742d1a 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -108,6 +108,7 @@ var/const/ERT_FREQ = 1345 var/const/AI_FREQ = 1343 var/const/DTH_FREQ = 1341 var/const/SYND_FREQ = 1213 +var/const/ENT_FREQ = 1461 //entertainment frequency. This is not a diona exclusive frequency. // department channels var/const/PUB_FREQ = 1459 @@ -135,6 +136,7 @@ var/list/radiochannels = list( "Supply" = SUP_FREQ, "Service" = SRV_FREQ, "AI Private" = AI_FREQ, + "Entertainment" = ENT_FREQ, "Medical(I)" = MED_I_FREQ, "Security(I)" = SEC_I_FREQ ) @@ -146,7 +148,7 @@ var/list/CENT_FREQS = list(ERT_FREQ, DTH_FREQ) var/list/ANTAG_FREQS = list(SYND_FREQ) //Department channels, arranged lexically -var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, MED_FREQ, SEC_FREQ, SCI_FREQ, SRV_FREQ, SUP_FREQ) +var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, MED_FREQ, SEC_FREQ, SCI_FREQ, SRV_FREQ, SUP_FREQ, ENT_FREQ) #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 @@ -177,6 +179,8 @@ var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, MED_FREQ, SEC_FREQ, SCI return "supradio" if(frequency == SRV_FREQ) // service return "srvradio" + if(frequency == ENT_FREQ) // entertainment + return "entradio" if(frequency in DEPT_FREQS) return "deptradio" diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index 4a6aded43b..93d6743b8e 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -56,7 +56,7 @@ id = "Receiver A" network = "tcommsat" autolinkers = list("receiverA") // link to relay - freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ) + freq_listening = list(AI_FREQ, SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ, COMM_FREQ, ENG_FREQ, SEC_FREQ, ENT_FREQ) //Common and other radio frequencies for people to freely use New() @@ -102,7 +102,7 @@ /obj/machinery/telecomms/bus/preset_four id = "Bus 4" network = "tcommsat" - freq_listening = list(ENG_FREQ, AI_FREQ, PUB_FREQ) + freq_listening = list(ENG_FREQ, AI_FREQ, PUB_FREQ, ENT_FREQ) autolinkers = list("processor4", "engineering", "common") /obj/machinery/telecomms/bus/preset_cent @@ -168,7 +168,7 @@ /obj/machinery/telecomms/server/presets/common id = "Common Server" - freq_listening = list(PUB_FREQ, AI_FREQ) // AI Private and Common + freq_listening = list(PUB_FREQ, AI_FREQ, ENT_FREQ) // AI Private and Common autolinkers = list("common") // "Unused" channels, AKA all others. diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 72d4c50685..216e2e59d0 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -43,6 +43,10 @@ icon_state = "medintercom" frequency = SEC_I_FREQ +/obj/item/device/radio/intercom/entertainment + name = "entertainment intercom" + frequency = ENT_FREQ + /obj/item/device/radio/intercom/New() ..() processing_objects += src @@ -59,6 +63,13 @@ num2text(SEC_I_FREQ) = list(access_security) ) +/obj/item/device/radio/intercom/entertainment/New() + ..() + internal_channels = list( + num2text(PUB_FREQ) = list(), + num2text(ENT_FREQ) = list() + ) + /obj/item/device/radio/intercom/syndicate name = "illicit intercom" desc = "Talk through this. Evilly" diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index c173e0344e..cec23e818f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -2,6 +2,7 @@ var/global/list/default_internal_channels = list( num2text(PUB_FREQ) = list(), num2text(AI_FREQ) = list(access_synth), + num2text(ENT_FREQ) = list(), num2text(ERT_FREQ) = list(access_cent_specops), num2text(COMM_FREQ)= list(access_heads), num2text(ENG_FREQ) = list(access_engine_equip, access_atmospherics), diff --git a/code/game/objects/items/devices/tvcamera.dm b/code/game/objects/items/devices/tvcamera.dm new file mode 100644 index 0000000000..b449a6ce3b --- /dev/null +++ b/code/game/objects/items/devices/tvcamera.dm @@ -0,0 +1,95 @@ +/obj/item/device/tvcamera + name = "press camera drone" + desc = "A Ward-Takahashi EyeBuddy media streaming hovercam. Weapon of choice for war correspondents and reality show cameramen." + icon_state = "camcorder" + item_state = "camcorder" + w_class = ITEMSIZE_LARGE + slot_flags = SLOT_BELT + var/channel = "NCS Northern Star News Feed" + var/obj/machinery/camera/network/thunder/camera + var/obj/item/device/radio/radio + +/obj/item/device/tvcamera/New() + ..() + listening_objects += src + +/obj/item/device/tvcamera/Destroy() + listening_objects -= src + qdel(camera) + qdel(radio) + camera = null + radio = null + ..() + +/obj/item/device/tvcamera/examine() + ..() + to_chat(usr, "Video feed is [camera.status ? "on" : "off"]") + to_chat(usr, "Audio feed is [radio.broadcasting ? "on" : "off"]") + +/obj/item/device/tvcamera/initialize() + ..() + camera = new(src) + camera.c_tag = channel + camera.status = FALSE + radio = new(src) + radio.listening = FALSE + radio.set_frequency(ENT_FREQ) + radio.icon = src.icon + radio.icon_state = src.icon_state + update_icon() + +/obj/item/device/tvcamera/hear_talk(mob/living/M, msg, var/verb="says", datum/language/speaking=null) + radio.hear_talk(M,msg,verb,speaking) + ..() + +/obj/item/device/tvcamera/attack_self(mob/user) + add_fingerprint(user) + user.set_machine(src) + var/dat = list() + dat += "Channel name is: [channel ? channel : "unidentified broadcast"]
" + dat += "Video streaming is [camera.status ? "on" : "off"]
" + dat += "Mic is [radio.broadcasting ? "on" : "off"]
" + dat += "Sound is being broadcasted on frequency [format_frequency(radio.frequency)] ([get_frequency_name(radio.frequency)])
" + var/datum/browser/popup = new(user, "Hovercamera", "Eye Buddy", 300, 390, src) + popup.set_content(jointext(dat,null)) + popup.open() + +/obj/item/device/tvcamera/Topic(bred, href_list, state = physical_state) + if(..()) + return 1 + if(href_list["channel"]) + var/nc = input(usr, "Channel name", "Select new channel name", channel) as text|null + if(nc) + channel = nc + camera.c_tag = channel + to_chat(usr, "New channel name - '[channel]' is set") + if(href_list["video"]) + camera.set_status(!camera.status) + if(camera.status) + to_chat(usr,"Video streaming activated. Broadcasting on channel '[channel]'") + else + to_chat(usr,"Video streaming deactivated.") + update_icon() + if(href_list["sound"]) + radio.ToggleBroadcast() + if(radio.broadcasting) + to_chat(usr,"Audio streaming activated. Broadcasting on frequency [format_frequency(radio.frequency)].") + else + to_chat(usr,"Audio streaming deactivated.") + if(!href_list["close"]) + attack_self(usr) + +/obj/item/device/tvcamera/update_icon() + ..() + if(camera.status) + icon_state = "camcorder_on" + item_state = "camcorder_on" + else + icon_state = "camcorder" + item_state = "camcorder" + var/mob/living/carbon/human/H = loc + if(istype(H)) + H.update_inv_r_hand() + H.update_inv_l_hand() + H.update_inv_belt() + diff --git a/code/stylesheet.dm b/code/stylesheet.dm index c7b7300113..2cade230af 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -47,6 +47,7 @@ em {font-style: normal;font-weight: bold;} .syndradio {color: #6D3F40;} .centradio {color: #5C5C8A;} .airadio {color: #FF00FF;} +.entradio {color: #339966;} .secradio {color: #A30000;} .engradio {color: #A66300;} diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 18c6f0e46c..134f719c3a 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi index 55f131159d..9b95d51dc3 100644 Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi index 158f56b45f..754d4309e9 100644 Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 8714d670a1..3c5b0ce667 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/polaris.dme b/polaris.dme index 413a2fd1ca..0c0b3034a9 100644 --- a/polaris.dme +++ b/polaris.dme @@ -777,6 +777,7 @@ #include "code\game\objects\items\devices\taperecorder.dm" #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\tvcamera.dm" #include "code\game\objects\items\devices\uplink.dm" #include "code\game\objects\items\devices\uplink_random_lists.dm" #include "code\game\objects\items\devices\violin.dm"