From 13780eba094d055ca201f56b31f3a29c657f4978 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Wed, 2 Sep 2015 13:54:24 +0200 Subject: [PATCH] Rotates and otherwise cleans up map intercom usage. --- code/controllers/communications.dm | 8 +- .../objects/items/devices/radio/headset.dm | 1 - .../objects/items/devices/radio/intercom.dm | 86 ++- code/modules/mob/transform_procs.dm | 2 - icons/obj/radio.dmi | Bin 8429 -> 8688 bytes maps/exodus-1.dmm | 573 +++++++++--------- maps/exodus-2.dmm | 106 ++-- maps/exodus-3.dmm | 20 +- maps/exodus-5.dmm | 118 ++-- 9 files changed, 485 insertions(+), 429 deletions(-) diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 6412cf711f1..0f590f56805 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -118,6 +118,10 @@ var/const/SCI_FREQ = 1351 var/const/SRV_FREQ = 1349 var/const/SUP_FREQ = 1347 +// internal department channels +var/const/MED_I_FREQ = 1485 +var/const/SEC_I_FREQ = 1475 + var/list/radiochannels = list( "Common" = PUB_FREQ, "Science" = SCI_FREQ, @@ -130,7 +134,9 @@ var/list/radiochannels = list( "Mercenary" = SYND_FREQ, "Supply" = SUP_FREQ, "Service" = SRV_FREQ, - "AI Private" = AI_FREQ + "AI Private" = AI_FREQ, + "Medical (I)" = MED_I_FREQ, + "Security (I)" = SEC_I_FREQ ) // central command channels, i.e deathsquid & response teams diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 8323145e88f..4f45fc1b27f 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -209,7 +209,6 @@ icon_state = "com_headset" item_state = "headset" ks2type = /obj/item/device/encryptionkey/ert - req_access = list(access_cent_general) /obj/item/device/radio/headset/ia name = "internal affair's headset" diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index a8f25912599..e3e6807cecb 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -1,9 +1,9 @@ // Access check is of the type requires one. These have been carefully selected to avoid allowing the janitor to see channels he shouldn't var/global/list/default_intercom_channels = list( num2text(PUB_FREQ) = list(), - num2text(AI_FREQ) = list(access_synth), + num2text(AI_FREQ) = list(access_synth), num2text(ERT_FREQ) = list(access_cent_specops), - num2text(COMM_FREQ) = list(access_heads), + num2text(COMM_FREQ)= list(access_heads), num2text(ENG_FREQ) = list(access_engine_equip, access_atmospherics), num2text(MED_FREQ) = list(access_medical_equip), num2text(SEC_FREQ) = list(access_security), @@ -13,7 +13,7 @@ var/global/list/default_intercom_channels = list( ) /obj/item/device/radio/intercom - name = "station intercom" + name = "station intercom (General)" desc = "Talk through this." icon_state = "intercom" anchored = 1 @@ -21,34 +21,70 @@ var/global/list/default_intercom_channels = list( canhear_range = 2 flags = CONDUCT | NOBLOODY var/number = 0 - var/anyai = 1 - var/mob/living/silicon/ai/ai = list() var/last_tick //used to delay the powercheck var/list/intercom_channels +/obj/item/device/radio/intercom/custom + name = "station intercom (Custom)" + broadcasting = 0 + listening = 0 + +/obj/item/device/radio/intercom/interrogation + name = "station intercom (Interrogation)" + frequency = 1449 + +/obj/item/device/radio/intercom/private + name = "station intercom (Private)" + frequency = AI_FREQ + +/obj/item/device/radio/intercom/specops + name = "\improper Spec Ops intercom" + frequency = ERT_FREQ + +/obj/item/device/radio/intercom/department + canhear_range = 5 + broadcasting = 0 + listening = 1 + +/obj/item/device/radio/intercom/department/medbay + name = "station intercom (Medbay)" + frequency = MED_I_FREQ + +/obj/item/device/radio/intercom/department/security + name = "station intercom (Security)" + frequency = SEC_I_FREQ + /obj/item/device/radio/intercom/New() ..() processing_objects += src - intercom_channels = default_intercom_channels + intercom_channels = default_intercom_channels.Copy() -/obj/item/device/radio/intercom/syndicate - name = "illicit intercom" - -/obj/item/device/radio/intercom/syndicate/New() +/obj/item/device/radio/intercom/department/medbay/New() ..() intercom_channels = list( num2text(PUB_FREQ) = list(), - num2text(SYND_FREQ) = list(access_syndicate), - num2text(COMM_FREQ) = list(access_syndicate), - num2text(ENG_FREQ) = list(access_syndicate), - num2text(MED_FREQ) = list(access_syndicate), - num2text(SEC_FREQ) = list(access_syndicate), - num2text(SCI_FREQ) = list(access_syndicate), - num2text(SUP_FREQ) = list(access_syndicate), - num2text(SRV_FREQ) = list(access_syndicate) + num2text(MED_I_FREQ) = list(access_medical_equip) ) +/obj/item/device/radio/intercom/department/security/New() + ..() + intercom_channels = list( + num2text(PUB_FREQ) = list(), + num2text(SEC_I_FREQ) = list(access_security) + ) + +/obj/item/device/radio/intercom/syndicate + name = "illicit intercom" + desc = "Talk through this. Evilly" + frequency = SYND_FREQ + subspace_transmission = 1 + syndie = 1 + +/obj/item/device/radio/intercom/syndicate/New() + ..() + intercom_channels[num2text(SYND_FREQ)] = list(access_syndicate) + /obj/item/device/radio/intercom/proc/has_channel_access(var/mob/user, var/freq) if(!user) return 0 @@ -98,12 +134,6 @@ var/global/list/default_intercom_channels = list( return canhear_range - -/obj/item/device/radio/intercom/hear_talk(mob/M as mob, msg) - if(!src.anyai && !(M in src.ai)) - return - ..() - /obj/item/device/radio/intercom/process() if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0)) last_tick = world.timeofday @@ -144,3 +174,11 @@ var/global/list/default_intercom_channels = list( /obj/item/device/radio/intercom/locked/list_channels() return "" + +/obj/item/device/radio/intercom/locked/ai_private + name = "\improper AI intercom" + frequency = AI_FREQ + +/obj/item/device/radio/intercom/locked/confessional + name = "confessional intercom" + frequency = 1480 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 05417c22d78..10b9d0ebbf7 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -98,8 +98,6 @@ loc_landmark = sloc O.loc = loc_landmark.loc - for (var/obj/item/device/radio/intercom/comm in O.loc) - comm.ai += O O.on_mob_init() diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi index 2398058e44ef39268b2f77062ae2ddb4ba9fbe05..8446ea61d083e2f2216f4b6c7c7458a944dc04ec 100644 GIT binary patch literal 8688 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 Z45D=%CNhaG;BO2dMOihOGAYx5{{t