diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 0267aed853..a0d9067038 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -75,6 +75,7 @@ Radio: 1341 - death squad 1443 - Confession Intercom 1347 - Cargo techs +1349 - Service people Devices: 1451 - tracking implant @@ -109,6 +110,7 @@ var/const/ENG_FREQ = 1357 var/const/SCI_FREQ = 1351 var/const/MED_FREQ = 1355 var/const/SUP_FREQ = 1347 +var/const/SRV_FREQ = 1349 var/list/radiochannels = list( "Common" = PUB_FREQ, @@ -121,6 +123,7 @@ var/list/radiochannels = list( "Special Ops" = DTH_FREQ, "Mercenary" = SYND_FREQ, "Supply" = SUP_FREQ, + "Service" = SRV_FREQ, "AI Private" = AI_FREQ ) @@ -131,11 +134,43 @@ var/list/CENT_FREQS = list(ERT_FREQ, DTH_FREQ) var/list/ANTAG_FREQS = list(SYND_FREQ) //depenging helpers -var/list/DEPT_FREQS = list(SCI_FREQ, MED_FREQ, ENG_FREQ, SEC_FREQ, SUP_FREQ, ERT_FREQ, SYND_FREQ, DTH_FREQ) +var/list/DEPT_FREQS = list(SCI_FREQ, MED_FREQ, ENG_FREQ, SEC_FREQ, SUP_FREQ, SRV_FREQ, ERT_FREQ, SYND_FREQ, DTH_FREQ) #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 +/proc/frequency_span_class(var/frequency) + // Antags! + if (frequency in ANTAG_FREQS) + return "syndradio" + // centcomm channels (deathsquid and ert) + else if(frequency in CENT_FREQS) + return "centradio" + // command channel + else if(frequency == COMM_FREQ) + return "comradio" + // AI private channel + else if(frequency == AI_FREQ) + return "airadio" + // department radio formatting (poorly optimized, ugh) + else if(frequency == SEC_FREQ) + return "secradio" + else if (frequency == ENG_FREQ) + return "engradio" + else if(frequency == SCI_FREQ) + return "sciradio" + else if(frequency == MED_FREQ) + return "medradio" + else if(frequency == SUP_FREQ) // cargo + return "supradio" + else if(frequency == SRV_FREQ) // service + return "srvradio" + // If all else fails and it's a dept_freq, color me purple! + else if(frequency in DEPT_FREQS) + return "deptradio" + + return "radio" + /* filters */ //When devices register with the radio controller, they might register under a certain filter. //Other devices can then choose to send signals to only those devices that belong to a particular filter. diff --git a/code/game/atoms.dm b/code/game/atoms.dm index bf86972fdc..2ccfb5b249 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -248,7 +248,7 @@ its easier to just keep the beam vertical. src.fingerprintslast = M.key return -/atom/proc/add_fingerprint(mob/living/M as mob) +/atom/proc/add_fingerprint(mob/living/M as mob, ignoregloves = 0) if(isnull(M)) return if(isAI(M)) return if(isnull(M.key)) return @@ -284,11 +284,12 @@ its easier to just keep the beam vertical. H.gloves.add_fingerprint(M) //Deal with gloves the pass finger/palm prints. - if(H.gloves != src) - if(prob(75) && istype(H.gloves, /obj/item/clothing/gloves/latex)) - return 0 - else if(H.gloves && !istype(H.gloves, /obj/item/clothing/gloves/latex)) - return 0 + if(!ignoregloves) + if(H.gloves != src) + if(prob(75) && istype(H.gloves, /obj/item/clothing/gloves/latex)) + return 0 + else if(H.gloves && !istype(H.gloves, /obj/item/clothing/gloves/latex)) + return 0 //More adminstuffz if(fingerprintslast != H.key) diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 3d83666a46..c38ed72ab1 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -18,6 +18,7 @@ if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/device/pda/bar(H), slot_belt) @@ -56,6 +57,7 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) @@ -85,6 +87,7 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves) @@ -286,6 +289,7 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt) diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 682c80f174..0c44f6f260 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -70,4 +70,43 @@ if(!isnum(minimal_player_age)) return 0 - return max(0, minimal_player_age - C.player_age) \ No newline at end of file + return max(0, minimal_player_age - C.player_age) + +/datum/job/proc/apply_fingerprints(var/mob/living/carbon/human/H) + if(!istype(H)) + return + if(H.back) + H.back.add_fingerprint(H,1) //The 1 sets a flag to ignore gloves + for(var/obj/item/I in H.back.contents) + I.add_fingerprint(H,1) + if(H.wear_id) + H.wear_id.add_fingerprint(H,1) + if(H.w_uniform) + H.w_uniform.add_fingerprint(H,1) + if(H.wear_suit) + H.wear_suit.add_fingerprint(H,1) + if(H.wear_mask) + H.wear_mask.add_fingerprint(H,1) + if(H.head) + H.head.add_fingerprint(H,1) + if(H.shoes) + H.shoes.add_fingerprint(H,1) + if(H.gloves) + H.gloves.add_fingerprint(H,1) + if(H.l_ear) + H.l_ear.add_fingerprint(H,1) + if(H.r_ear) + H.r_ear.add_fingerprint(H,1) + if(H.glasses) + H.glasses.add_fingerprint(H,1) + if(H.belt) + H.belt.add_fingerprint(H,1) + for(var/obj/item/I in H.belt.contents) + I.add_fingerprint(H,1) + if(H.s_store) + H.s_store.add_fingerprint(H,1) + if(H.l_store) + H.l_store.add_fingerprint(H,1) + if(H.r_store) + H.r_store.add_fingerprint(H,1) + return 1 diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index a564f68692..15a8016b34 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -386,6 +386,7 @@ var/global/datum/controller/occupations/job_master //Equip job items. job.equip(H) + job.apply_fingerprints(H) else H << "Your job is [rank] and the game just can't handle it! Please report this bug to an administrator." diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 9994e71340..06a308a33d 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -330,7 +330,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept if (length(heard_masked) || length(heard_normal) || length(heard_voice) || length(heard_garbled) || length(heard_gibberish)) /* --- Some miscellaneous variables to format the string output --- */ - var/part_a = "" // goes in the actual output + var/part_a = "" // goes in the actual output var/freq_text = get_frequency_name(display_freq) // --- Some more pre-message formatting --- @@ -341,41 +341,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/part_b = " \icon[radio]\[[freq_text]\][part_b_extra] " // Tweaked for security headsets -- TLE var/part_c = "" - // Antags! - if (display_freq in ANTAG_FREQS) - part_a = "" - // centcomm channels (deathsquid and ert) - else if (display_freq in CENT_FREQS) - part_a = "" - - // command channel - else if (display_freq == COMM_FREQ) - part_a = "" - - // AI private channel - else if (display_freq == AI_FREQ) - part_a = "" - - // department radio formatting (poorly optimized, ugh) - else if (display_freq == SEC_FREQ) - part_a = "" - - else if (display_freq == ENG_FREQ) - part_a = "" - - else if (display_freq == SCI_FREQ) - part_a = "" - - else if (display_freq == MED_FREQ) - part_a = "" - - else if (display_freq == SUP_FREQ) // cargo - part_a = "" - - // If all else fails and it's a dept_freq, color me purple! - else if (display_freq in DEPT_FREQS) - part_a = "" - // --- Filter the message; place it in quotes apply a verb --- @@ -412,6 +377,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept blackbox.msg_syndicate += blackbox_msg if(SUP_FREQ) blackbox.msg_cargo += blackbox_msg + if(SRV_FREQ) + blackbox.msg_service += blackbox_msg else blackbox.messages += blackbox_msg @@ -599,6 +566,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept blackbox.msg_syndicate += blackbox_msg if(SUP_FREQ) blackbox.msg_cargo += blackbox_msg + if(SRV_FREQ) + blackbox.msg_service += blackbox_msg else blackbox.messages += blackbox_msg @@ -664,7 +633,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept //#### Sending the signal to all subspace receivers ####// for(var/obj/machinery/telecomms/receiver/R in telecomms_list) R.receive_signal(signal) - + if(do_sleep) sleep(rand(10,25)) diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index 8b4977f106..b4b9b07791 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -58,7 +58,7 @@ id = "Receiver A" network = "tcommsat" autolinkers = list("receiverA") // link to relay - freq_listening = list(SCI_FREQ, MED_FREQ, SUP_FREQ) // science, medical, supply + freq_listening = list(SCI_FREQ, MED_FREQ, SUP_FREQ, SRV_FREQ) // science, medical, supply, service //--PRESET RIGHT--// @@ -94,7 +94,7 @@ /obj/machinery/telecomms/bus/preset_two id = "Bus 2" network = "tcommsat" - freq_listening = list(SUP_FREQ) + freq_listening = list(SUP_FREQ, SRV_FREQ) autolinkers = list("processor2", "supply") /obj/machinery/telecomms/bus/preset_three @@ -167,7 +167,7 @@ /obj/machinery/telecomms/server/presets/supply id = "Supply Server" - freq_listening = list(SUP_FREQ) + freq_listening = list(SUP_FREQ, SRV_FREQ) autolinkers = list("supply") /obj/machinery/telecomms/server/presets/common diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index e10e963b5f..e3e4408a47 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -1,7 +1,7 @@ /obj/item/device/encryptionkey/ name = "Standard Encrpytion Key" - desc = "An encyption key for a radio headset. Has no special codes in it. WHY DOES IT EXIST? ASK NANOTRASEN." + desc = "An encyption key for a radio headset. Contains cypherkeys." icon = 'icons/obj/radio.dmi' icon_state = "cypherkey" item_state = "" @@ -29,107 +29,95 @@ /obj/item/device/encryptionkey/headset_sec name = "Security Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "sec_cypherkey" channels = list("Security" = 1) /obj/item/device/encryptionkey/headset_eng name = "Engineering Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "eng_cypherkey" channels = list("Engineering" = 1) /obj/item/device/encryptionkey/headset_rob name = "Robotics Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "rob_cypherkey" channels = list("Engineering" = 1, "Science" = 1) /obj/item/device/encryptionkey/headset_med name = "Medical Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "med_cypherkey" channels = list("Medical" = 1) /obj/item/device/encryptionkey/headset_sci name = "Science Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "sci_cypherkey" channels = list("Science" = 1) /obj/item/device/encryptionkey/headset_medsci name = "Medical Research Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "medsci_cypherkey" channels = list("Medical" = 1, "Science" = 1) /obj/item/device/encryptionkey/headset_com name = "Command Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "com_cypherkey" channels = list("Command" = 1) /obj/item/device/encryptionkey/heads/captain name = "Captain's Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "cap_cypherkey" - channels = list("Command" = 1, "Security" = 1, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0) + channels = list("Command" = 1, "Security" = 1, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0) /obj/item/device/encryptionkey/heads/ai_integrated name = "AI Integrated Encryption Key" desc = "Integrated encryption key" icon_state = "cap_cypherkey" - channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "AI Private" = 1) + channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1) /obj/item/device/encryptionkey/heads/rd name = "Research Director's Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "rd_cypherkey" channels = list("Science" = 1, "Command" = 1) /obj/item/device/encryptionkey/heads/hos name = "Head of Security's Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "hos_cypherkey" channels = list("Security" = 1, "Command" = 1) /obj/item/device/encryptionkey/heads/ce name = "Chief Engineer's Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "ce_cypherkey" channels = list("Engineering" = 1, "Command" = 1) /obj/item/device/encryptionkey/heads/cmo name = "Chief Medical Officer's Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "cmo_cypherkey" channels = list("Medical" = 1, "Command" = 1) /obj/item/device/encryptionkey/heads/hop name = "Head of Personnel's Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "hop_cypherkey" - channels = list("Supply" = 1, "Command" = 1, "Security" = 0) + channels = list("Supply" = 1, "Service" = 1, "Command" = 1, "Security" = 0) /* /obj/item/device/encryptionkey/headset_mine name = "Mining Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "mine_cypherkey" channels = list("Mining" = 1) /obj/item/device/encryptionkey/heads/qm name = "Quartermaster's Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "qm_cypherkey" channels = list("Cargo" = 1, "Mining" = 1) */ /obj/item/device/encryptionkey/headset_cargo name = "Supply Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." icon_state = "cargo_cypherkey" channels = list("Supply" = 1) +/obj/item/device/encryptionkey/headset_service + name = "Service Radio Encryption Key" + icon_state = "srv_cypherkey" + channels = list("Service" = 1) + /obj/item/device/encryptionkey/ert name = "NanoTrasen ERT Radio Encryption Key" - desc = "An encyption key for a radio headset. Contains cypherkeys." - channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1) + channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 1e7eecb9a7..f697520b23 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -28,7 +28,7 @@ var/datum/language/hivemind = all_languages["Hivemind"] hivemind.broadcast(M, message) return null - + return ..() /obj/item/device/radio/headset/receive_range(freq, level, aiOverride = 0) @@ -108,7 +108,7 @@ /obj/item/device/radio/headset/heads/captain name = "captain's headset" - desc = "The headset of the boss. Channels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :m - medical, :n - science." + desc = "The headset of the boss. Channels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." icon_state = "com_headset" item_state = "headset" keyslot2 = new /obj/item/device/encryptionkey/heads/captain @@ -158,7 +158,7 @@ /obj/item/device/radio/headset/heads/hop name = "head of personnel's headset" - desc = "The headset of the guy who will one day be captain. Channels are as follows: :u - supply, :c - command, :s - security" + desc = "The headset of the guy who will one day be captain. Channels are as follows: :u - supply, :v - service, :c - command, :s - security" icon_state = "com_headset" item_state = "headset" keyslot2 = new /obj/item/device/encryptionkey/heads/hop @@ -184,9 +184,16 @@ item_state = "headset" keyslot2 = new /obj/item/device/encryptionkey/headset_cargo +/obj/item/device/radio/headset/headset_service + name = "service radio headset" + desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean. To access the service channel, use :v." + icon_state = "srv_headset" + item_state = "headset" + keyslot2 = new /obj/item/device/encryptionkey/headset_service + /obj/item/device/radio/headset/ert name = "CentCom Response Team headset" - desc = "The headset of the boss's boss. Channels are as follows: :h - Response Team :c - command, :s - security, :e - engineering, :d - mining, :q - cargo, :m - medical, :n - science." + desc = "The headset of the boss's boss. Channels are as follows: :h - Response Team :c - command, :s - security, :e - engineering, :d - mining, :u - cargo, :v - service, :m - medical, :n - science." icon_state = "com_headset" item_state = "headset" freerange = 1 diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 0846070a71..49e032ff59 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -19,6 +19,8 @@ sleep(2) new /obj/item/clothing/head/that(src) new /obj/item/clothing/head/that(src) + new /obj/item/device/radio/headset/headset_service(src) + new /obj/item/device/radio/headset/headset_service(src) new /obj/item/clothing/head/hairflower new /obj/item/clothing/under/sl_suit(src) new /obj/item/clothing/under/sl_suit(src) @@ -30,6 +32,28 @@ new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) +/* + * Chef + */ +/obj/structure/closet/chefcloset + name = "\proper chef's closet" + desc = "It's a storage unit for foodservice garments." + icon_state = "black" + icon_closed = "black" + +/obj/structure/closet/chefcloset/New() + ..() + sleep(2) + new /obj/item/clothing/under/sundress(src) + new /obj/item/clothing/under/waiter(src) + new /obj/item/clothing/under/waiter(src) + new /obj/item/device/radio/headset/headset_service(src) + new /obj/item/device/radio/headset/headset_service(src) + new /obj/item/weapon/storage/box/mousetraps(src) + new /obj/item/weapon/storage/box/mousetraps(src) + new /obj/item/clothing/under/rank/chef(src) + new /obj/item/clothing/head/chefhat(src) + /* * Janitor */ @@ -43,6 +67,7 @@ ..() sleep(2) new /obj/item/clothing/under/rank/janitor(src) + new /obj/item/device/radio/headset/headset_service(src) new /obj/item/weapon/cartridge/janitor(src) new /obj/item/clothing/gloves/black(src) new /obj/item/clothing/head/soft/purple(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index 6a6a1eee09..4f5b9a9adf 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -20,6 +20,7 @@ new /obj/item/weapon/storage/bag/plants(src) new /obj/item/clothing/under/rank/hydroponics(src) new /obj/item/device/analyzer/plant_analyzer(src) + new /obj/item/device/radio/headset/headset_service(src) new /obj/item/clothing/head/greenbandana(src) new /obj/item/weapon/minihoe(src) new /obj/item/weapon/hatchet(src) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index ba8613dcbb..4deaae5c5d 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -12,6 +12,7 @@ var/list/department_radio_keys = list( ":w" = "whisper", "#w" = "whisper", ".w" = "whisper", ":t" = "Mercenary", "#t" = "Mercenary", ".t" = "Mercenary", ":u" = "Supply", "#u" = "Supply", ".u" = "Supply", + ":v" = "Service", "#v" = "Service", ".v" = "Service", ":o" = "AI Private", "#o" = "AI Private", ".o" = "AI Private", ":R" = "right ear", "#R" = "right ear", ".R" = "right ear", @@ -26,6 +27,7 @@ var/list/department_radio_keys = list( ":W" = "whisper", "#W" = "whisper", ".W" = "whisper", ":T" = "Mercenary", "#T" = "Mercenary", ".T" = "Mercenary", ":U" = "Supply", "#U" = "Supply", ".U" = "Supply", + ":V" = "Service", "#V" = "Service", ".V" = "Service", ":O" = "AI Private", "#O" = "AI Private", ".O" = "AI Private", //kinda localization -- rastaf0 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index b0c7acad23..caf76cbf0b 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -198,6 +198,7 @@ var/list/robot_verbs_default = list( if("Service") module = new /obj/item/weapon/robot_module/butler(src) + module.channels = list("Service" = 1) module_sprites["Waitress"] = "Service" module_sprites["Kent"] = "toiletbot" module_sprites["Bro"] = "Brobot" @@ -207,6 +208,7 @@ var/list/robot_verbs_default = list( if("Clerical") module = new /obj/item/weapon/robot_module/clerical(src) + module.channels = list("Service" = 1) module_sprites["Waitress"] = "Service" module_sprites["Kent"] = "toiletbot" module_sprites["Bro"] = "Brobot" @@ -280,6 +282,7 @@ var/list/robot_verbs_default = list( if("Janitor") module = new /obj/item/weapon/robot_module/janitor(src) + module.channels = list("Service" = 1) module_sprites["Basic"] = "JanBot2" module_sprites["Mopbot"] = "janitorrobot" module_sprites["Mop Gear Rex"] = "mopgearrex" diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index 2ff6abba53..b0cc8d6050 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -217,6 +217,7 @@ var/obj/machinery/blackbox_recorder/blackbox var/list/msg_deathsquad = list() var/list/msg_syndicate = list() var/list/msg_cargo = list() + var/list/msg_service = list() var/list/datum/feedback_variable/feedback = new() @@ -241,6 +242,7 @@ var/obj/machinery/blackbox_recorder/blackbox BR.msg_deathsquad = msg_deathsquad BR.msg_syndicate = msg_syndicate BR.msg_cargo = msg_cargo + BR.msg_service = msg_service BR.feedback = feedback BR.messages = messages BR.messages_admin = messages_admin @@ -281,6 +283,7 @@ var/obj/machinery/blackbox_recorder/blackbox feedback_add_details("radio_usage","DTH-[msg_deathsquad.len]") feedback_add_details("radio_usage","SYN-[msg_syndicate.len]") feedback_add_details("radio_usage","CAR-[msg_cargo.len]") + feedback_add_details("radio_usage","SRV-[msg_service.len]") feedback_add_details("radio_usage","OTH-[messages.len]") feedback_add_details("radio_usage","PDA-[pda_msg_amt]") feedback_add_details("radio_usage","RC-[rc_msg_amt]") diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 21a2a9abfe..67e13f8e32 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -37,6 +37,7 @@ em {font-style: normal; font-weight: bold;} .medradio {color: #008160;} .sciradio {color: #993399;} .supradio {color: #5F4519;} +.srvradio {color: #6eaa2c;} .alert {color: #ff0000;} h1.alert, h2.alert {color: #000000;} diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi index 9c4830d273..cd4fac17b9 100644 Binary files a/icons/obj/radio.dmi and b/icons/obj/radio.dmi differ diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index d14a2e344b..a17cf7f019 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -1824,7 +1824,7 @@ "aJd" = (/turf/simulated/wall,/area/crew_quarters/kitchen) "aJe" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/crew_quarters/locker) "aJf" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage) -"aJg" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/crate{desc = "It's a storage unit for kitchen clothes and equipment."; name = "Kitchen Crate"},/obj/item/clothing/head/chefhat,/obj/item/clothing/under/rank/chef,/obj/item/weapon/storage/box/mousetraps{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/box/mousetraps,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/clothing/under/sundress,/obj/item/device/eftpos{eftpos_name = "Kitchen EFTPOS scanner"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) +"aJg" = (/obj/structure/closet/chefcloset,/obj/machinery/light/small{dir = 1},/obj/item/device/eftpos{eftpos_name = "Kitchen EFTPOS scanner"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aJh" = (/obj/machinery/camera{c_tag = "Kitchen Cold Room"},/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aJi" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Kitchen Delivery"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/kitchen) "aJj" = (/turf/simulated/wall,/area/hydroponics) @@ -8712,7 +8712,7 @@ "dlB" = (/turf/space/transit/east/shuttlespace_ew1,/area/space) "dlC" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air{filled = 0.05},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/tcommsat/entrance) "dlD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation) -"dlE" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) +"dlE" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/djstation) "dlF" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/wall,/area/constructionsite/hallway/aft) "dlG" = (/obj/machinery/door/airlock/highsecurity{icon_state = "door_closed"; locked = 0; name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor/plating/airless,/area/constructionsite/hallway/aft) "dlH" = (/obj/machinery/atmospherics/tvalve/mirrored/digital{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engine/engine_room)