From e5aa095f09ed626c2eaa2e11a553c814fb3dc46b Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 3 Sep 2015 09:01:36 +0200 Subject: [PATCH] Non-headset/borg radios now all allow access to department channels. Headset and borg radios still rely on their encryption keys. --- code/controllers/communications.dm | 6 +- .../objects/items/devices/radio/headset.dm | 6 +- .../objects/items/devices/radio/intercom.dm | 59 +-------------- .../game/objects/items/devices/radio/radio.dm | 73 ++++++++++++++++++- code/modules/assembly/signaler.dm | 8 +- html/changelogs/PsiOmegaDelta-Radio.yml | 2 +- maps/exodus-1.dmm | 35 ++++----- 7 files changed, 104 insertions(+), 85 deletions(-) diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 0f590f5680..f9e7b67c74 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -135,8 +135,8 @@ var/list/radiochannels = list( "Supply" = SUP_FREQ, "Service" = SRV_FREQ, "AI Private" = AI_FREQ, - "Medical (I)" = MED_I_FREQ, - "Security (I)" = SEC_I_FREQ + "Medical(I)" = MED_I_FREQ, + "Security(I)" = SEC_I_FREQ ) // central command channels, i.e deathsquid & response teams @@ -146,7 +146,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, 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) #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 4f45fc1b27..bcf932009d 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -19,6 +19,7 @@ /obj/item/device/radio/headset/New() ..() + internal_channels.Cut() if(ks1type) keyslot1 = new ks1type(src) if(ks2type) @@ -32,11 +33,14 @@ keyslot2 = null ..() +/obj/item/device/radio/headset/list_channels(var/mob/user) + return list_secure_channels() + /obj/item/device/radio/headset/examine(mob/user) if(!(..(user, 1) && radio_desc)) return - user << "The following channels are built-in:" + user << "The following channels are available:" user << radio_desc /obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, message, channel) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index e3e6807cec..2a0341a77e 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -1,17 +1,3 @@ -// 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(ERT_FREQ) = list(access_cent_specops), - 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), - num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology), - num2text(SUP_FREQ) = list(access_cargo), - num2text(SRV_FREQ) = list(access_janitor, access_hydroponics) -) - /obj/item/device/radio/intercom name = "station intercom (General)" desc = "Talk through this." @@ -23,8 +9,6 @@ var/global/list/default_intercom_channels = list( var/number = 0 var/last_tick //used to delay the powercheck - var/list/intercom_channels - /obj/item/device/radio/intercom/custom name = "station intercom (Custom)" broadcasting = 0 @@ -58,18 +42,14 @@ var/global/list/default_intercom_channels = list( /obj/item/device/radio/intercom/New() ..() processing_objects += src - intercom_channels = default_intercom_channels.Copy() /obj/item/device/radio/intercom/department/medbay/New() ..() - intercom_channels = list( - num2text(PUB_FREQ) = list(), - num2text(MED_I_FREQ) = list(access_medical_equip) - ) + internal_channels = default_medbay_channels.Copy() /obj/item/device/radio/intercom/department/security/New() ..() - intercom_channels = list( + internal_channels = list( num2text(PUB_FREQ) = list(), num2text(SEC_I_FREQ) = list(access_security) ) @@ -83,17 +63,7 @@ var/global/list/default_intercom_channels = list( /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 - - if(!(freq in intercom_channels)) - return 0 - - var/obj/item/weapon/card/id/I = user.GetIdCard() - return has_access(list(), intercom_channels[freq], I ? I.GetAccess() : list()) + internal_channels[num2text(SYND_FREQ)] = list(access_syndicate) /obj/item/device/radio/intercom/Destroy() processing_objects -= src @@ -109,16 +79,6 @@ var/global/list/default_intercom_channels = list( spawn (0) attack_self(user) -/obj/item/device/radio/intercom/list_channels(var/mob/user) - var/dat = "" - for (var/priv_chan in intercom_channels) - if(has_channel_access(user, priv_chan)) - dat+="[get_frequency_name(text2num(priv_chan))]
" - - if(dat) - dat = "
Available Channels
" + dat - return dat - /obj/item/device/radio/intercom/receive_range(freq, level) if (!on) return -1 @@ -152,19 +112,6 @@ var/global/list/default_intercom_channels = list( else icon_state = "intercom" -/obj/item/device/radio/intercom/Topic(href, href_list) - if(..()) - return 1 - - if(href_list["spec_freq"]) - var freq = href_list["spec_freq"] - if(has_channel_access(usr, freq)) - set_frequency(text2num(freq)) - . = 1 - - if(.) - interact(usr) - /obj/item/device/radio/intercom/locked var/locked_frequency diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index d6b51727d3..1231f97541 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -1,3 +1,25 @@ +// 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_internal_channels = list( + num2text(PUB_FREQ) = list(), + num2text(AI_FREQ) = list(access_synth), + num2text(ERT_FREQ) = list(access_cent_specops), + num2text(COMM_FREQ)= list(access_heads), + num2text(ENG_FREQ) = list(access_engine_equip, access_atmospherics), + num2text(MED_FREQ) = list(access_medical_equip), + num2text(MED_I_FREQ)=list(access_medical_equip), + num2text(SEC_FREQ) = list(access_security), + num2text(SEC_I_FREQ)=list(access_security), + num2text(SCI_FREQ) = list(access_tox,access_robotics,access_xenobiology), + num2text(SUP_FREQ) = list(access_cargo), + num2text(SRV_FREQ) = list(access_janitor, access_hydroponics) +) + +var/global/list/default_medbay_channels = list( + num2text(PUB_FREQ) = list(), + num2text(MED_FREQ) = list(access_medical_equip), + num2text(MED_I_FREQ) = list(access_medical_equip) +) + /obj/item/device/radio icon = 'icons/obj/radio.dmi' name = "station bounced radio" @@ -15,10 +37,9 @@ var/b_stat = 0 var/broadcasting = 0 var/listening = 1 - var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h + var/list/channels = list() //see communications.dm for full list. First channel is a "default" for :h var/subspace_transmission = 0 var/syndie = 0//Holder to see if it's a syndicate encrypted radio -// "Example" = FREQ_LISTENING|FREQ_BROADCASTING flags = CONDUCT slot_flags = SLOT_BELT throw_speed = 2 @@ -27,7 +48,7 @@ matter = list("glass" = 25,DEFAULT_WALL_MATERIAL = 75) var/const/FREQ_LISTENING = 1 - + var/list/internal_channels /obj/item/device/radio var/datum/radio_frequency/radio_connection @@ -41,6 +62,7 @@ /obj/item/device/radio/New() ..() wires = new(src) + internal_channels = default_internal_channels.Copy() /obj/item/device/radio/Destroy() qdel(wires) @@ -96,11 +118,34 @@ return /obj/item/device/radio/proc/list_channels(var/mob/user) + return list_internal_channels(user) + +/obj/item/device/radio/proc/list_secure_channels(var/mob/user) var/dat = "" for (var/ch_name in channels) dat+=text_sec_channel(ch_name, channels[ch_name]) return dat +/obj/item/device/radio/proc/list_internal_channels(var/mob/user) + var/dat = "" + for (var/internal_chan in internal_channels) + if(has_channel_access(user, internal_chan)) + dat+="[get_frequency_name(text2num(internal_chan))]
" + + if(dat) + dat = "
Internal Channels
" + dat + return dat + +/obj/item/device/radio/proc/has_channel_access(var/mob/user, var/freq) + if(!user) + return 0 + + if(!(freq in internal_channels)) + return 0 + + var/obj/item/weapon/card/id/I = user.GetIdCard() + return has_access(list(), internal_channels[freq], I ? I.GetAccess() : list()) + /obj/item/device/radio/proc/text_wires() if (b_stat) return wires.GetInteractWindow() @@ -155,6 +200,11 @@ else channels[chan_name] |= FREQ_LISTENING . = 1 + else if(href_list["spec_freq"]) + var freq = href_list["spec_freq"] + if(has_channel_access(usr, freq)) + set_frequency(text2num(freq)) + . = 1 if(href_list["nowindow"]) // here for pAIs, maybe others will want it, idk return 1 @@ -513,6 +563,9 @@ myborg = null return ..() +/obj/item/device/radio/borg/list_channels(var/mob/user) + return list_secure_channels(user) + /obj/item/device/radio/borg/talk_into() . = ..() if (isrobot(src.loc)) @@ -662,3 +715,17 @@ /obj/item/device/radio/off listening = 0 + +/obj/item/device/radio/phone + broadcasting = 0 + icon = 'icons/obj/items.dmi' + icon_state = "red_phone" + listening = 1 + name = "phone" + +/obj/item/device/radio/phone/medbay + frequency = MED_I_FREQ + +/obj/item/device/radio/phone/medbay/New() + ..() + internal_channels = default_medbay_channels.Copy() diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 18bb1b6f1f..4a261a3d98 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -3,8 +3,8 @@ desc = "Used to remotely activate devices." icon_state = "signaller" item_state = "signaler" - origin_tech = list(TECH_MAGNET = 1) - matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200, "waste" = 100) + origin_tech = list(TECH_MAGNET = 1) + matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200, "waste" = 100) wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE secured = 1 @@ -79,8 +79,8 @@ if (href_list["freq"]) var/new_frequency = (frequency + text2num(href_list["freq"])) - if(new_frequency < PUBLIC_LOW_FREQ || new_frequency > PUBLIC_HIGH_FREQ) - new_frequency = sanitize_frequency(new_frequency) + if(new_frequency < RADIO_LOW_FREQ || new_frequency > RADIO_HIGH_FREQ) + new_frequency = sanitize_frequency(new_frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ) set_frequency(new_frequency) if(href_list["code"]) diff --git a/html/changelogs/PsiOmegaDelta-Radio.yml b/html/changelogs/PsiOmegaDelta-Radio.yml index 4b689a379a..ec47861f67 100644 --- a/html/changelogs/PsiOmegaDelta-Radio.yml +++ b/html/changelogs/PsiOmegaDelta-Radio.yml @@ -2,4 +2,4 @@ author: PsiOmegaDelta delete-after: True changes: - rscdel: "Manual radio frequency changes can no longer go outside the standard frequency span." - - rscadd: "Users with sufficient access can instead select pre-defined channels outside this span, such as department channels." + - rscadd: "Users with sufficient access can instead select pre-defined channels outside this span, such as department channels, when using intercoms." diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 930b635b51..0f8ef4f3e6 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -3709,8 +3709,8 @@ "btq" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = -32},/obj/effect/floor_decal/corner/paleblue/full,/turf/simulated/floor/tiled/white,/area/medical/reception) "btr" = (/obj/machinery/button/remote/airlock{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; pixel_x = -16; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/tiled,/area/medical/reception) "bts" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/crew,/obj/effect/floor_decal/corner/paleblue{dir = 9},/turf/simulated/floor/tiled,/area/medical/reception) -"btt" = (/obj/machinery/button/remote/blast_door{id = "medbayrecquar"; name = "Medbay Entrance Lockdown Shutters Control"; pixel_x = 6; pixel_y = 8; req_access = list(5)},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"; pixel_x = -5},/obj/structure/table/standard{name = "plastic table frame"},/turf/simulated/floor/tiled,/area/medical/reception) -"btu" = (/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"},/obj/structure/table/standard{name = "plastic table frame"},/turf/simulated/floor/tiled,/area/medical/reception) +"btt" = (/obj/machinery/button/remote/blast_door{id = "medbayrecquar"; name = "Medbay Entrance Lockdown Shutters Control"; pixel_x = 6; pixel_y = 8; req_access = list(5)},/obj/structure/table/standard{name = "plastic table frame"},/obj/item/device/radio/phone/medbay{name = "reception emergency phone"; pixel_x = -5},/turf/simulated/floor/tiled,/area/medical/reception) +"btu" = (/obj/structure/table/standard{name = "plastic table frame"},/obj/item/device/radio/phone/medbay{name = "reception emergency phone"},/turf/simulated/floor/tiled,/area/medical/reception) "btv" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/paleblue{dir = 6},/obj/machinery/papershredder,/turf/simulated/floor/tiled,/area/medical/reception) "btw" = (/obj/machinery/button/remote/airlock{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; pixel_x = 6; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/tiled,/area/medical/reception) "btx" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/reception) @@ -4217,7 +4217,7 @@ "bDe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two) "bDf" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 9},/turf/simulated/floor/tiled,/area/hallway/primary/central_two) "bDg" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/turf/simulated/floor/tiled,/area/hallway/primary/central_two) -"bDh" = (/obj/machinery/door/window/eastright{dir = 1; name = "Emergency Kit"; req_access = list(5)},/obj/machinery/door/firedoor,/obj/item/weapon/storage/toolbox/emergency,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag,/obj/item/device/radio{frequency = 1487; name = "Medbay Emergency Radio Link"},/obj/structure/table/standard{name = "plastic table frame"},/turf/simulated/floor/tiled/white,/area/medical/sleeper) +"bDh" = (/obj/machinery/door/window/eastright{dir = 1; name = "Emergency Kit"; req_access = list(5)},/obj/machinery/door/firedoor,/obj/item/weapon/storage/toolbox/emergency,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/bodybag/cryobag,/obj/item/device/radio{frequency = 1487; name = "medbay emergency radio link"},/obj/structure/table/standard{name = "plastic table frame"},/turf/simulated/floor/tiled/white,/area/medical/sleeper) "bDi" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_one_access = list(5,12,47)},/turf/simulated/floor/plating,/area/maintenance/research_port) "bDj" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/storage) "bDk" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Medicine Storage"; req_access = newlist(); req_one_access = list(33,66)},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/sleeper) @@ -4709,7 +4709,7 @@ "bMC" = (/obj/structure/reagent_dispensers/water_cooler,/obj/effect/floor_decal/corner/grey/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bMD" = (/obj/machinery/light{dir = 1},/obj/structure/bookcase/manuals/medical,/obj/item/weapon/book/manual/stasis,/obj/effect/floor_decal/corner/grey/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bME" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/medical/medbay2) -"bMF" = (/obj/structure/noticeboard{pixel_y = 28},/obj/item/weapon/book/manual/medical_diagnostics_manual{pixel_y = 7},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 4; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Break Room Emergency Phone"},/obj/structure/table/standard{name = "plastic table frame"},/obj/effect/floor_decal/corner/grey/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) +"bMF" = (/obj/structure/noticeboard{pixel_y = 28},/obj/item/weapon/book/manual/medical_diagnostics_manual{pixel_y = 7},/obj/structure/table/standard{name = "plastic table frame"},/obj/effect/floor_decal/corner/grey/diagonal,/obj/item/device/radio/phone/medbay{name = "break room emergency phone"},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bMG" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/medical/genetics) "bMH" = (/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/plating,/area/medical/genetics) "bMI" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research_shuttle) @@ -4855,13 +4855,13 @@ "bPs" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/button/remote/blast_door{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access = list(5)},/obj/machinery/camera/network/medbay{c_tag = "Medbay Acute"},/turf/simulated/floor/tiled/white,/area/medical/sleeper) "bPt" = (/turf/simulated/wall,/area/janitor) "bPu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Acute Treatment"; req_access = list(5)},/turf/simulated/floor/tiled/white,/area/medical/medbay) -"bPv" = (/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/medical{name = "Staff Room"; req_access = list(5)},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbay2) +"bPv" = (/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/medical{name = "Staff Room"; req_access = list(5)},/turf/simulated/floor/tiled/white,/area/medical/medbay2) "bPw" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/engineering) "bPx" = (/turf/simulated/floor/plating,/area/maintenance/engineering) "bPy" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/engineering) "bPz" = (/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 22; pixel_y = -9},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/medbay{c_tag = "Medbay Port Corridor"; dir = 8},/obj/effect/floor_decal/corner/paleblue{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/medbay) "bPA" = (/obj/machinery/light_switch{pixel_x = -22; pixel_y = -9},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = -34; pixel_y = 2},/obj/machinery/camera/network/medbay{c_tag = "Medbay - CMO's Office"; dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) -"bPB" = (/obj/item/weapon/paper{desc = "A few notes scratched out by the last CMO before they departed the station."; info = "\[i]\[center]To the incoming CMO of Exodus:\[/i]\[/center]\[br]\[br]I wish you and your crew well. Do take note:\[br]\[br]\[br]The Medical Emergency Red Phone system has proven itself well. Take care to keep the phones in their designated places as they have been optimised for broadcast. The two handheld green radios (I have left one in this office, and one near the Emergency Entrance) are free to be used. The system has proven effective at alerting Medbay of important details, especially during power outages.\[br]\[br]I think I may have left the toilet cubicle doors shut. It might be a good idea to open them so the staff and patients know they are not engaged.\[br]\[br]The new syringe gun has been stored in secondary storage. I tend to prefer it stored in my office, but 'guidelines' are 'guidelines'.\[br]\[br]Also in secondary storage is the grenade equipment crate. I've just realised I've left it open - you may wish to shut it.\[br]\[br]There were a few problems with their installation, but the Medbay Quarantine shutters should now be working again - they lock down the Emergency and Main entrances to prevent travel in and out. Pray you shan't have to use them.\[br]\[br]The new version of the Medical Diagnostics Manual arrived. I distributed them to the shelf in the staff break room, and one on the table in the corner of this room.\[br]\[br]The exam/triage room has the walking canes in it. I'm not sure why we'd need them - but there you have it.\[br]\[br]Emergency Cryo bags are beside the emergency entrance, along with a kit.\[br]\[br]Spare paper cups for the reception are on the left side of the reception desk.\[br]\[br]I've fed Runtime. She should be fine.\[br]\[br]\[br]\[center]That should be all. Good luck!\[/center]"; name = "Outgoing CMO's Notes"},/obj/item/device/radio{frequency = 1487; name = "Medbay Emergency Radio Link"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) +"bPB" = (/obj/item/weapon/paper{desc = "A few notes scratched out by the last CMO before they departed the station."; info = "\[i]\[center]To the incoming CMO of Exodus:\[/i]\[/center]\[br]\[br]I wish you and your crew well. Do take note:\[br]\[br]\[br]The Medical Emergency Red Phone system has proven itself well. Take care to keep the phones in their designated places as they have been optimised for broadcast. The two handheld green radios (I have left one in this office, and one near the Emergency Entrance) are free to be used. The system has proven effective at alerting Medbay of important details, especially during power outages.\[br]\[br]I think I may have left the toilet cubicle doors shut. It might be a good idea to open them so the staff and patients know they are not engaged.\[br]\[br]The new syringe gun has been stored in secondary storage. I tend to prefer it stored in my office, but 'guidelines' are 'guidelines'.\[br]\[br]Also in secondary storage is the grenade equipment crate. I've just realised I've left it open - you may wish to shut it.\[br]\[br]There were a few problems with their installation, but the Medbay Quarantine shutters should now be working again - they lock down the Emergency and Main entrances to prevent travel in and out. Pray you shan't have to use them.\[br]\[br]The new version of the Medical Diagnostics Manual arrived. I distributed them to the shelf in the staff break room, and one on the table in the corner of this room.\[br]\[br]The exam/triage room has the walking canes in it. I'm not sure why we'd need them - but there you have it.\[br]\[br]Emergency Cryo bags are beside the emergency entrance, along with a kit.\[br]\[br]Spare paper cups for the reception are on the left side of the reception desk.\[br]\[br]I've fed Runtime. She should be fine.\[br]\[br]\[br]\[center]That should be all. Good luck!\[/center]"; name = "Outgoing CMO's Notes"},/obj/item/device/radio{frequency = 1487; name = "medbay emergency radio link"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bPC" = (/obj/machinery/computer/skills{pixel_y = 4},/obj/item/device/megaphone,/obj/structure/table/glass,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bPD" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/med_data/laptop{pixel_x = 3; pixel_y = 4},/obj/structure/table/glass,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bPE" = (/obj/structure/disposalpipe/segment,/obj/machinery/newscaster{pixel_x = 30},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/medbay2) @@ -5138,8 +5138,8 @@ "bUP" = (/obj/item/device/radio/intercom{dir = 8; pixel_x = -22},/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/corner/pink{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/patient_b) "bUQ" = (/obj/machinery/iv_drip,/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/patient_wing) "bUR" = (/obj/structure/closet/secure_closet/personal/patient,/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/patient_wing) -"bUS" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute A"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/medical/patient_wing) -"bUT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute B"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/medical/patient_wing) +"bUS" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute A"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/patient_wing) +"bUT" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute B"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/patient_wing) "bUU" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab) "bUV" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar/red,/obj/item/clothing/glasses/science,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/effect/floor_decal/corner/purple{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab) "bUW" = (/obj/structure/table/reinforced,/obj/machinery/button/ignition{id = "Xenobio"; pixel_x = -6; pixel_y = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab) @@ -5352,7 +5352,7 @@ "bYV" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/medbay4) "bYW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/medbay4) "bYX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/medbay4) -"bYY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{id_tag = "mentaldoor"; name = "Mental Health"; req_access = list(64)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/psych) +"bYY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{id_tag = "mentaldoor"; name = "Mental Health"; req_access = list(64)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/medical/psych) "bYZ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/patient_wing) "bZa" = (/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 4; id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 1; id = "isoC_window_tint"},/obj/structure/window/reinforced/polarized{dir = 8; id = "isoC_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_c) "bZb" = (/obj/machinery/camera/network/medbay{c_tag = "Medbay Patient Hallway - Port"; dir = 4},/obj/effect/floor_decal/corner/lime{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/patient_wing) @@ -5531,7 +5531,7 @@ "ccs" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Research"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/substation/research) "cct" = (/obj/item/device/radio/intercom{dir = 2; pixel_y = -22},/obj/structure/bed/roller,/obj/machinery/camera/network/medbay{c_tag = "Medbay Scanning"; dir = 1},/turf/simulated/floor/tiled,/area/medical/sleeper) "ccu" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 6; name = "Chief Engineer RC"; pixel_x = 0; pixel_y = -34},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) -"ccv" = (/obj/structure/window/basic{dir = 8},/obj/machinery/shower{dir = 1},/obj/machinery/door/window/northright{name = "Shower"},/obj/structure/curtain/open/shower/engineering,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash) +"ccv" = (/obj/structure/table/standard,/obj/machinery/alarm{pixel_y = 22},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/item/weapon/wrench,/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora_storage) "ccw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating,/area/maintenance/research_starboard) "ccy" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/research_starboard) @@ -5661,7 +5661,7 @@ "ceS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/freezer,/area/medical/patient_wing) "ceT" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/freezer,/area/medical/patient_wing) "ceU" = (/obj/structure/closet/secure_closet/hydroponics{req_access = list(47)},/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora_storage) -"ceV" = (/obj/structure/table/standard,/obj/machinery/alarm{pixel_y = 22},/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/hand_labeler,/obj/effect/floor_decal/corner/purple/full{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora_storage) +"ceV" = (/obj/structure/window/basic{dir = 8},/obj/machinery/shower{dir = 1},/obj/machinery/door/window/northright{name = "Shower"},/obj/structure/curtain/open/shower/engineering,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash) "ceW" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/smartfridge/drying_rack,/obj/effect/floor_decal/corner/purple/full{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora_storage) "ceX" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access = list(47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology) "ceY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = 32},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora) @@ -5930,7 +5930,7 @@ "ckb" = (/obj/machinery/computer/operating,/turf/simulated/floor/tiled/white,/area/medical/surgery) "ckc" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/obj/effect/floor_decal/corner/pink{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/surgery) "ckd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/surgery) -"cke" = (/obj/structure/table/standard,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 7; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Surgery Emergency Phone"},/obj/effect/floor_decal/corner/blue{dir = 9},/turf/simulated/floor/tiled,/area/medical/surgeryprep) +"cke" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue{dir = 9},/obj/item/device/radio/phone/medbay{name = "surgery emergency phone"},/turf/simulated/floor/tiled,/area/medical/surgeryprep) "ckf" = (/obj/structure/disposalpipe/segment,/obj/item/roller,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/simulated/floor/tiled,/area/medical/surgeryprep) "ckg" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/medical/surgeryprep) "ckh" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/obj/effect/floor_decal/corner/pink{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/surgery2) @@ -6270,7 +6270,7 @@ "cqD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/atmos/monitoring) "cqE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/solar/starboard) "cqF" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos) -"cqG" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos) +"cqG" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) "cqH" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor/tiled,/area/engineering/atmos) "cqI" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Air Tank Bypass Pump"},/turf/simulated/floor/tiled,/area/engineering/atmos) "cqJ" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/tiled,/area/engineering/atmos) @@ -6679,7 +6679,7 @@ "cyw" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_interior"; locked = 1; name = "Virology Quarantine Airlock"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/black,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/virology) "cyx" = (/obj/structure/bed/chair/office/dark,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/virology) "cyy" = (/obj/item/device/antibody_scanner,/obj/machinery/requests_console{department = "Virology"; name = "Virology Requests Console"; pixel_x = -32},/obj/structure/table/glass,/obj/effect/floor_decal/corner/lime{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/virology) -"cyz" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 8},/obj/structure/disposalpipe/segment,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 7; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Virology Emergency Phone"; pixel_x = -6; pixel_y = 8},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/glass,/turf/simulated/floor/tiled/white,/area/medical/virology) +"cyz" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 8},/obj/structure/disposalpipe/segment,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/glass,/obj/item/device/radio/phone/medbay{name = "virology emergency phone"; pixel_x = -6; pixel_y = 8},/turf/simulated/floor/tiled/white,/area/medical/virology) "cyA" = (/obj/item/roller,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/tiled/white,/area/medical/virology) "cyB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/medical/virology) "cyC" = (/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/research{c_tag = "Xenobiology Southwest"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/xenobiology) @@ -7351,6 +7351,7 @@ "cLs" = (/obj/machinery/light,/obj/item/device/radio/intercom{dir = 2; pixel_y = -22},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/engineering/engine_room) "cLt" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station) "cLu" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station) +"cLv" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos) "cLC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Engine Waste Handling"; req_one_access = list(10,24)},/turf/simulated/floor/plating,/area/maintenance/engi_engine) "cLE" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access = list(11)},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room) "cLF" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access = list(11)},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room) @@ -7525,9 +7526,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamcbOaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaabZfbZgbZgbZgbZHbZgbZgbZEbZCbYIbZGbZIbYIbZKbZJbZNbZLbZPbZObZRbZQbZTbZSbZXbZWbUpbWJbYQcajcakcbkcalbSUcaqcaqcaqcaqcaqcarbNSbDtbZZbZYcctcabcaecadcagcafbTJccUcaocamcapcaEcaFcaGcaHcaIcasbYZcatbZycawcaubZAcaxcazcaybZAcaBbYfbPObIwbXYcaJbXZbXYbXYbIwbIwbIwcaRcaScaTcaUcaVbwwbwwcaCbwwbwwccGcaYcaDcaAcavccJcaZcbacbcccQccMccYccScbhbUnbUnbUnaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKsbKtbTYbTWbTWbLSbLSbLSbLSbLSbLSbLSbLSbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcaKcaMcaLcaOcaNcaWcaPcbbcaXbYIcbdcbfbYIbYIcbicbmcblcbpcbobUxcbqbYCbYBbYGcbrcbsbWJbWJcdYcdZbWJcebbSUcbvcbucaqcbwcaqbTFcbIcbIcbIcbIcbIcbIcbIbTJcbycbxbTJcbzcbCcbBcbDcaEcbPceicelcaIcasbYZcbEbZycbGcbFbZAceAcbKcbJbZAcbMbYfbYbbYdbYccbNccsccAbYccepbYkbYlcktbZDbZwbZFcktcercbQcbScbRcbUcbTcbWcbVcexcevceHceCcevceIceZceKcfeccwccxccycbXbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabOPbKtbMTbKtbKtbLSbLSbLSbLSbLSbLSbLSbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbYcbYcaLccbcbZcaWcceccgccfbYIcchccncckccrccqccuceBccBcczbVwccCccFccDccIccHccKcdycdQcdFcekceecemccLccOccNccRccPcaqbTFcbIccTccVceRccXccWcdaccZcdccdbcdecddcdgcdfcdhcaEcdjcdicdkcaIcasbYZcdlbZycdncdmbZAcdocdqcdpbZAcdrbYfbYfcaQbYccdtcdscdubYcchBccacjfcdLcdLcdvcdwcdLcdOcdxcdAcdzcdOcdScdEcdBcdGcdScdScdScdScdHcdBcdGcdScdSbXjcdXcdMcfIcdPcdNcfUcdRcdVcdVcdVcdVcdVcdVcdVcdVcdVcdVcdVcdVcdVcdVcdVcdVceacdWcdWcecbKtbKtbLSbLScedbLSbLSbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejcegcefbYIbYIbYIbYIbYIbZMcbjcaicaicaiccccehbYCbYBbYGcenbTTceocesceqceucetcewbSUcezceycfQceycaqbTFcbIchvceDceDceDceEceFbTJceJceGbTJcbzcbBceLcbDcaEceMcdiceNcaIcasbYZceObZychEcePbZAbZAbZAbZAbZAceSceTbYfcaQbYcccdcgRbYcbYcchBcgVcjfcdLceVceUceUceWcdOcfdceXcffcdOceYcfacfacfacfbcfgcfccficfhcflcfjcfmcdScfocfncfpbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcfrcfqcftbMXbKsbKtbKtbLSbLUbLSbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejcegcefbYIbYIbYIbYIbYIbZMcbjcaicaicaiccccehbYCbYBbYGcenbTTceocesceqceucetcewbSUcezceycfQceycaqbTFcbIchvceDceDceDceEceFbTJceJceGbTJcbzcbBceLcbDcaEceMcdiceNcaIcasbYZceObZychEcePbZAbZAbZAbZAbZAceSceTbYfcaQbYcccdcgRbYcbYcchBcgVcjfcdLccvceUceUceWcdOcfdceXcffcdOceYcfacfacfacfbcfgcfccficfhcflcfjcfmcdScfocfncfpbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcfrcfqcftbMXbKsbKtbKtbLSbLUbLSbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfvcfucfxcfwcfycejcfAcfzcfFcfBcfDcfCcfEcfEccEcfGcfGcfHcfJcbqbYCbYBbYGcfLbUpcfMcfOcfNcjGcfPcfRbSUceyceycaqcfTcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcgacfZcfYcgbcgdcgccgecaEcgfcdicggcaIcgicghcgjbZycglcgkbZycgnbYfcgpcgrcgqcgtbYfccjccicgwcgucgxcclcclcclccmcdLcgzcgycgycgAcdTcgBcgDcgCcdUcgFcgGcgGcgGcgHcgJcgIcgLcgKcgLcgMcgOcdScgNciCcgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKrbKrbKwbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEaaaaaacfkcgTcgUcgUcgWcgXcejcgZcgYchbchachdchcchfchechhchgchjchichlchkchnchmchpchobSUbSUbSUbSUbSUbSUbSUbSUchqccvcaqchrcaqbTFcbIcbIctpctqctrcbIcbIchschuchtcfYcaEcaEcaEcaEcaEcaIckachxcaIchwchychwbZychAchzbZybYfbYfbVibVicgqchCbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLckkchDchDchFchIchHchKchJchMchLchNchNchNchNchPchOchNchQchNchRchScdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEaaaaaacfkcgTcgUcgUcgWcgXcejcgZcgYchbchachdchcchfchechhchgchjchichlchkchnchmchpchobSUbSUbSUbSUbSUbSUbSUbSUchqceVcaqchrcaqbTFcbIcbIctpctqctrcbIcbIchschuchtcfYcaEcaEcaEcaEcaEcaIckachxcaIchwchychwbZychAchzbZybYfbYfbVibVicgqchCbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLckkchDchDchFchIchHchKchJchMchLchNchNchNchNchPchOchNchQchNchRchScdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchTchUchTcgEchVchXchVcgEchYcicchYcgEaaaaaacfscgTcgUcgWcgWcidcejcigciechWcihcikcijcincilcipciociocirciocbqbYCcisbYGcitcfKciuciwcivciwcixciyciqciqciAciAciAciAbTFciGciHciIciIciKciJciMciLciOciNciQciPciSciRciRciTciUcaIcaIcaIciWciVciXbZybZybZybZycifbLvbViciZciYcjabYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjccjbcjecjdcjhcjgcjjcjicjmcjkcjocjkcjkcjpcjscjqcjucjtcjucjvcjycdScmpcjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchTcjAchTcgEchVcjBchVcgEchYcjCchYcgEaaaaaacfscgUcgWcgWcgWcjDcgmcjFcjEchWclJcjIcjHcjKcjJcgocjLcjNcjMcjOcbqbYCcjPchpcjQcjScjRcjTcjTcjTcjUcjWcjVcjXcmRcjZcjYciAbTFciGclOciIckbckdckccubckeckgckfcngckhckjckiciRclZciUcnkcnwcnuckmcklckncnEcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLckpckockrckqckEcdOckscdOckGckuckwckvckvckwckyckxckvckzckvckAckBcdSckDckCckFcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEckHckJckIcgEckLckOckNcgEckPckRckQcgEaaaaafcfsckScgUcgWcgWcgWcejckMckKchWchWckTchWchWchWchWckUciockVckWcbqckZckYclbclacldclccleclecleclfclhclhcliciAcllcljclwclkciGclmciIclnclrclpclvcluclyclxclAclzclCclBciRclDciUcnVcnXclNclFclEclGclNclRclSclTbYfceQcdIcdIcdIcdIcdIcltbYfaaaaaaaaaaaaaaaaaaaaacdLclIclHclKcmscdOcmDclQclPcdSclVclYclYclYcnScmbcmacmdcmcclYclYcmecdScgScobcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7545,7 +7546,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacpBcpqcxPcxQcxQcxScxRcxQcxScxQcxTcxUcrQcrQcxVcrQcxWcrQcrQcrTcxXcvVcpqcpqcxYcybcyacydcATcyfcyecxecxdcyjcyjcylcykcoBcxicyncnOcyocoMcypcoMcyrcyqcpjcpjcpjcpjcpjcpjcpjbPxcvMcvNcytcyscxmcyucxmcxocyvcvNcyQcADcrGaaaaaaaaaaaaaaaaaacqvcuVcywctFctFcyycyxcyzcyWcsBcsDcsCcyBcsBcuycyAcqvaaaaaaaaaaaacdOcoTcoTcoTckXcyCcyDcrycrycrycxNcrycyEcrycyFcryctjaafaafcrPaafcuRcuUcuUcuUcuUcuXcsGcuZcuYcuYcuYcuYcvaaafcrPaaaczLczLczLczLaaaaaaaaaczLczLczLczLczLczLczLaaaaaaaaaczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacpBcpqcqJcpqcpqcpqcwMcpqcpqcpqcwMcpqcpqcpqcyGcpqcqKcpqcpqcpqcyHcvVcpqcpqcyecwYcyIcyJcwgcAUcwgcwgcyKcyMcyLcBkcykcoBcxicoBcnOcyOcyNcyRcDHcyScoMcnOcBucBzcBzczhcBAcBDczNczOcvNcyUcyTcyVcxocyXcBHcBIcvNcyZcyYcrGaaaaaaaaaaaaaaaaaacqvczbczaczccuVczeczdczfctFcziczgczjcyBczbczkczmcqvaaaaaaaaaaaackEcdOcAfcAgcAgcznczpczoczsczrczucztczwczvczxcoccvlaaaaaacrPaafcvUcvUcvUcvUcvUaaacsGaafcvUcvUcvUcvUcvUaaacrPaaaczLczLczLczLaaaaaaczLczLczLczLczLczLczLczLczLaaaaaaczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaaacvncpqcqJcpqczzcrDcrCcrDczBcrDcrCcrDczBcrDczCcrDczFczIczHcwTczKcyIczMczQczPczSczRczTcwgczUczycwgcwgcwgcwgcwgczAcniczVcnicnOcnOcnOcnOcnOcnOcnOcnOczDcBzcBzczEcANcAObPxcAPcvNcCgcCfczXczWczYcCncCvcvNcAaczZcrGaaaaaaaaaaaaaaaaaacqvcDScAbczmctFcBacBbcBcctFcEccAccAiczGcAjcAccEzcqvaafaafaaaaaaaaaaaacAlaaacdOcAmcAocAncAqcApcAocAtcAucApcAocAvcdOaaaaaacbOaaaaafaaaaafaaaaafaaacsGaaaaafaaaaafaafaafaafcrPaaaczLczLczLczLaaaaaaczLczLczLczLczLczLczLczLczLaaaaaaczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbOaaaaaaaaaaaIaaaaaacwOcpqcqJcpqcAwcybcqJcpqcAxcybcqJcpqcAycybcpqcpqcAzcpqcAAcybcABcAEcACcAHcAFcAJcAIcAKcwgcAMcALcARcAQcASctZcAWcFFctZcAXctZcAYcuccAZcBecBdcBdcBfcBgcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcDFcCbcCacCdcvNcrGcDIcrGaaaaaaaaaaaaaaaaaacqvctFcBhcuVctFcBjcBicBlctFcxscwWcpZcgvcxvcwWcxwcrHaaaaaaaaaaaaaaaaaacBmaafcdOcBncBoclUcomclscBpclqcomclocBqclWcdOaaaaaacrPaaactMctMctMctMctMaafcsGaafctMctMctMctMctMaafcrPaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbOaaaaaaaaaaaIaaaaaacwOcpqcqJcpqcAwcLvcqJcpqcAxcLvcqJcpqcAycLvcpqcpqcAzcpqcAAcLvcABcAEcACcAHcAFcAJcAIcAKcwgcAMcALcARcAQcASctZcAWcFFctZcAXctZcAYcuccAZcBecBdcBdcBfcBgcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcDFcCbcCacCdcvNcrGcDIcrGaaaaaaaaaaaaaaaaaacqvctFcBhcuVctFcBjcBicBlctFcxscwWcpZcgvcxvcwWcxwcrHaaaaaaaaaaaaaaaaaacBmaafcdOcBncBoclUcomclscBpclqcomclocBqclWcdOaaaaaacrPaaactMctMctMctMctMaafcsGaafctMctMctMctMctMaafcrPaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaaIaafaafcwOcpqcBrcBvcBscBycBxcBCcBBcBFcBEcBJcBGcBKcpqcBMcBLcBPcBOcBRcBQcnycnycnycnycnycnycnycnycEJcBNczAcBScBTcoBcBUcoBcoBcxicoBcoBcCccoBcBTcChcClcCicCrcCpcCscCqcCtcFCcAObPwcCRcCucCTcCacAGcAVcBwcCacCxcCwcCzcCycCBaaaaaaaaaaaaaaaaaacqvcCFcCDcCKcCJcCLcuvcCOcCNczlaafaaacCPcCScCQcCUaaaaaaaaaaacaaaaaaaaaaaaaaacdOcCVcoTcoTcomcCWcoTcoTcomcCWcoTcoTcdOaafaafcrPaafcuRcuUcuUcuUcuUcuXcsGcuZcuYcuYcuYcuYcvaaafcrPaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcCXaaaaaaaaIaaaaaaczJcAhcAdcBtcArcCjcCecCkcArcCjcCecCkcArcCjcCmcCmcCocCkcArcCjcCAcnyaaacCMcCYcDacCZcDccDbcDjcDdcDkcDkcDecDlcDocCCcCEcDfcCCcCEcDocDrcDgcDscDrczAczAcAOcGEcGAcDPcDQcAObNUcDRcDhcDicCacCbcGMcCbcCacDncDmcDpaafaaaaaaaaaaaaaaaaaaaaacqvcCFcDqcDucDtcDtcDuczjcDvcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDwcoTcoTcomcDxcoTcoTcomcDxcoTcoTcdOaaaaaacrPaafcvUcvUcvUcvUcvUaaacsGaaacvUcvUcvUcvUcvUaaacrPaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcDBcHjcHjcHCcHjcHjcHjcHjcHVcHjcIAcHjcHVcHjcIAcHjcHVcHjcIAcHjcHjcHjcIAcHjcIAcHjcIMaafaaacDzcDycDCcDAcDDcDEcDjcDGcDkcGBcDLcDKcDJcDMcDOcDNcDTcIZcDJcDUcDWcDVcDraaaaafcAOcDYcDXcEDaafaaabNUbPxbPxbSkcCacEacDZcEbcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcKfcuEcEecEdcEdcEecuvcEfcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcoTcoTcoTcomcEicoTcoTcomcEicoTcoTcdOaacaaacrPaaaaaaaafaafaafaaaaaacEjaafaaaaaaaafaafaaaaaacrPaaaczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLczLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa