diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm index 4368bf304a..54c665f2d6 100644 --- a/code/__DEFINES/equipment.dm +++ b/code/__DEFINES/equipment.dm @@ -227,16 +227,17 @@ #define SLOT_FACE (1<<5) #define SLOT_HEAD (1<<6) #define SLOT_FEET (1<<7) -#define SLOT_ID (1<<8) -#define SLOT_WAIST (1<<9) -#define SLOT_BACK (1<<10) -#define SLOT_STORE (1<<11) //this is to allow items with a w_class of 3 or 4 to fit in pockets. -#define SLOT_NO_STORE (1<<12) //this is to deny items with a w_class of 2 or 1 to fit in pockets. -#define SLOT_LEGS (1<<13) -#define SLOT_ACCESSORY (1<<14) -#define SLOT_SUIT_STORE (1<<15) //this allows items to be stored in the suit slot regardless of suit +#define SLOT_SOCKS (1<<8) +#define SLOT_ID (1<<9) +#define SLOT_WAIST (1<<10) +#define SLOT_BACK (1<<11) +#define SLOT_STORE (1<<12) //this is to allow items with a w_class of 3 or 4 to fit in pockets. +#define SLOT_NO_STORE (1<<13) //this is to deny items with a w_class of 2 or 1 to fit in pockets. +#define SLOT_LEGS (1<<14) +#define SLOT_ACCESSORY (1<<15) +#define SLOT_SUIT_STORE (1<<16) //this allows items to be stored in the suit slot regardless of suit /// Anything with this flag cannot be worn in suit storage, period. -#define SLOT_BLOCK_SUIT_STORE (1<<16) +#define SLOT_BLOCK_SUIT_STORE (1<<17) //================================================= //slots @@ -245,6 +246,7 @@ #define WEAR_L_EAR "wear_l_ear" #define WEAR_R_EAR "wear_r_ear" #define WEAR_BODY "w_uniform" +#define WEAR_SOCKS "socks" #define WEAR_FEET "shoes" #define WEAR_HANDS "gloves" #define WEAR_WAIST "belt" @@ -271,6 +273,7 @@ #define WEAR_IN_L_STORE "in_l_store" #define WEAR_IN_R_STORE "in_r_store" #define WEAR_IN_SHOES "in_shoes" +#define WEAR_IN_SOCKS "in_socks" // Contained Sprites #define WORN_LHAND "_lh" @@ -322,6 +325,8 @@ GLOBAL_LIST_INIT(slot_to_contained_sprite_shorthand, list( . = SLOT_ICLOTHING if(WEAR_FEET) . = SLOT_FEET + if(WEAR_SOCKS) + . = SLOT_SOCKS if(WEAR_HANDS) . = SLOT_HANDS if(WEAR_WAIST) @@ -356,6 +361,8 @@ GLOBAL_LIST_INIT(slot_to_contained_sprite_shorthand, list( WEAR_HEAD,\ WEAR_FEET,\ WEAR_IN_SHOES,\ + WEAR_SOCKS,\ + WEAR_IN_SOCKS,\ WEAR_FACE,\ WEAR_HANDS,\ WEAR_L_EAR,\ diff --git a/code/__DEFINES/human.dm b/code/__DEFINES/human.dm index 2c45d076d0..ecf9e25d11 100644 --- a/code/__DEFINES/human.dm +++ b/code/__DEFINES/human.dm @@ -116,16 +116,17 @@ #define ORDER_FOCUS_MAX_LEVEL 50 //Human Overlays Indexes used in update_icons///////// -#define BODYPARTS_LAYER 42 -#define DAMAGE_LAYER 41 +#define BODYPARTS_LAYER 43 +#define DAMAGE_LAYER 42 -#define UNDERWEAR_LAYER 40 -#define UNDERSHIRT_LAYER 39 -#define MUTANTRACE_LAYER 38 +#define UNDERWEAR_LAYER 41 +#define UNDERSHIRT_LAYER 40 +#define MUTANTRACE_LAYER 39 /// For use by Hunter Flay -#define FLAY_LAYER 37 +#define FLAY_LAYER 38 +#define SOCKS_LAYER 37 #define SHOES_LAYER 36 #define UNIFORM_LAYER 35 @@ -178,7 +179,7 @@ /// If you're hit by an acid DoT #define EFFECTS_LAYER 1 -#define TOTAL_LAYERS 42 +#define TOTAL_LAYERS 43 ////////////////////////////////// //Synthetic Defines #define SYNTH_COLONY "Third Generation Colonial Synthetic" diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index 42ff7bfd70..cf02d1fe5d 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -351,12 +351,15 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) //-------- SECTOR PATROL ---------// -#define JOB_UACM_BASEPC "UACM Comissioned Officer" +#define JOB_UACM_BASEPC "UACM OV-PST Test Crew Officer" +#define JOB_UACM_NEWPC "UACM Comissioned Officer" #define JOB_UACM_RDML "UACM Read Admiral (lower half)" #define JOB_UACM_CMISRS_LT "CMISRS Intelligence Liaison" #define JOB_UACM_PSTENG "UACM Station Engineer" +#define JOB_UACM_CASSANDRA "OV-PST Chief of Special Operations" +#define JOB_UACM_ALYSIA "OV-PST Chief Engineer" #define JOB_PREDATOR "Predator" #define JOB_XENOMORPH "Xenomorph" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index e2bd868f9a..4e87c7a47b 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -321,6 +321,7 @@ GLOBAL_LIST_INIT(default_onmob_icons, list( WEAR_BODY = 'icons/mob/humans/onmob/uniform_0.dmi', WEAR_JACKET = 'icons/mob/humans/onmob/suit_0.dmi', WEAR_HEAD = 'icons/mob/humans/onmob/head_0.dmi', + WEAR_SOCKS = 'icons/obj/sp_clothes/socks/onmob/socks.dmi', WEAR_FEET = 'icons/mob/humans/onmob/feet.dmi', WEAR_FACE = 'icons/mob/humans/onmob/mask.dmi', WEAR_HANDCUFFED = 'icons/mob/mob.dmi', diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index cc1831501b..719c1a9f68 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -18,7 +18,7 @@ //Radio channels #define RADIO_CHANNEL_BLANK "UNSET" -#define RADIO_CHANNEL_ALMAYER "Almayer" +#define RADIO_CHANNEL_ALMAYER "OV-PST" #define RADIO_CHANNEL_ALAMO "Alamo" #define RADIO_CHANNEL_COMMAND "Command" #define RADIO_CHANNEL_COLONY "Colony" diff --git a/code/__DEFINES/strippable.dm b/code/__DEFINES/strippable.dm index f62c4d6c1b..a9e4487e6c 100644 --- a/code/__DEFINES/strippable.dm +++ b/code/__DEFINES/strippable.dm @@ -9,6 +9,7 @@ #define STRIPPABLE_ITEM_SUIT "wear_suit" #define STRIPPABLE_ITEM_GLOVES "gloves" #define STRIPPABLE_ITEM_FEET "shoes" +#define STRIPPABLE_ITEM_SOCKS "socks" #define STRIPPABLE_ITEM_SUIT_STORAGE "j_store" #define STRIPPABLE_ITEM_ID "id" #define STRIPPABLE_ITEM_BELT "belt" diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 616c88c47a..ea31d77b70 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -248,6 +248,7 @@ DEFINE_BITFIELD(valid_equip_slots, list( "SLOT_FACE" = SLOT_FACE, "SLOT_HEAD" = SLOT_HEAD, "SLOT_FEET" = SLOT_FEET, + "SLOT_SOCKS" = SLOT_SOCKS, "SLOT_ID" = SLOT_ID, "SLOT_WAIST" = SLOT_WAIST, "SLOT_BACK" = SLOT_BACK, diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index b8b55b42c0..eb719a811f 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -17,6 +17,7 @@ "wear_r_ear" = list("loc" = ui_datum.ui_wear_r_ear, "slot" = WEAR_R_EAR, "state" = "ears", "toggle" = 1), "head" = list("loc" = ui_datum.ui_head, "slot" = WEAR_HEAD, "state" = "hair", "toggle" = 1), "shoes" = list("loc" = ui_datum.ui_shoes, "slot" = WEAR_FEET, "state" = "shoes", "toggle" = 1), + "socks" = list("loc" = ui_datum.ui_socks, "slot" = WEAR_SOCKS, "state" = "socks", "toggle" = 1), "suit storage" = list("loc" = ui_datum.ui_sstore1, "slot" = WEAR_J_STORE, "state" = "suit_storage"), "back" = list("loc" = ui_datum.ui_back, "slot" = WEAR_BACK, "state" = "back"), "id" = list("loc" = ui_datum.ui_id, "slot" = WEAR_ID, "state" = "id"), @@ -65,6 +66,9 @@ if(WEAR_FEET in equip_slots) equip_slots |= WEAR_IN_SHOES + if (WEAR_SOCKS in equip_slots) + equip_slots |= WEAR_IN_SOCKS + // Draw the various inventory equipment slots. draw_inventory_slots(gear, ui_datum, ui_alpha, ui_color) draw_toggle_inv(ui_datum, ui_alpha, ui_color) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 8d77920a59..f3b27e6933 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -8,7 +8,6 @@ if(flags_item & CAN_DIG_SHRAPNEL && ishuman(user)) dig_out_shrapnel(user) -// No comment /atom/proc/attackby(obj/item/W, mob/living/user,list/mods) if(SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, mods) & COMPONENT_NO_AFTERATTACK) return TRUE diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index 11d1fe5b85..ea9ba4f17b 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -22,17 +22,18 @@ SUBSYSTEM_DEF(statpanels) /datum/controller/subsystem/statpanels/fire(resumed = FALSE) if (!resumed) + var/wtime = world.time num_fires++ global_data = list( "Sector Patrol ALPHA", "UACM Outer Veil Primary Supply Terminal, Neroid Sector", - "August 21st, 2185", + "August 24th, 2185", + "Station Time: [time2text(642000 + wtime,"hh:mm",0)]", "---------", // "Round Time: [ROUND_TIME]", // "Server Time: [time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss")]", // "Round Time: [duration2text()]", - "Chapter Zero", - "Interval 001 - 'Arrivals'" + "Open Session" ) src.currentrun = GLOB.clients.Copy() diff --git a/code/datums/custom_hud.dm b/code/datums/custom_hud.dm index 62ae36aa7b..f3e53acd9f 100644 --- a/code/datums/custom_hud.dm +++ b/code/datums/custom_hud.dm @@ -57,10 +57,11 @@ //Pop-up inventory var/ui_shoes = "WEST+1:8,1:5" - var/ui_iclothing = "WEST:6,2:7" + var/ui_socks = "WEST:6,2:7" + var/ui_iclothing = "WEST:6,3:9"//"WEST:6,2:7" var/ui_oclothing = "WEST+1:8,2:7" var/ui_gloves = "WEST+2:10,2:7" - var/ui_glasses = "WEST:6,3:9" + var/ui_glasses = "WEST:6,4:11"//"WEST:6,3:9" var/ui_mask = "WEST+1:8,3:9" var/ui_wear_l_ear = "WEST+2:10,3:9" var/ui_wear_r_ear = "WEST+2:10,4:11" diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index a86e598338..969c37c60a 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -10,6 +10,7 @@ /datum/game_mode/announce() to_world("Sector Patrol ALPHA") + show_blurb(GLOB.player_list, duration = 10 SECONDS, message = "August 24th, 2185\nUACM Outer Veil PST\nDorms, Deck 37.", screen_position = "CENTER,BOTTOM+1.5:16", text_alignment = "center", text_color = "#ffaef2", blurb_key = "introduction", ignore_key = FALSE, speed = 1) /datum/game_mode/extended/get_roles_list() diff --git a/code/game/jobs/job/uacm/admin.dm b/code/game/jobs/job/uacm/admin.dm index 3911e3d828..b7ccfc18e7 100644 --- a/code/game/jobs/job/uacm/admin.dm +++ b/code/game/jobs/job/uacm/admin.dm @@ -9,3 +9,11 @@ /datum/job/uacm/psteng title = JOB_UACM_PSTENG gear_preset = /datum/equipment_preset/uacm/psteng + +/datum/job/uacm/Cassandra + title = JOB_UACM_CASSANDRA + gear_preset = /datum/equipment_preset/uacm/Cassandra + +/datum/job/uacm/Alysia + title = JOB_UACM_ALYSIA + gear_preset = /datum/equipment_preset/uacm/Alysia diff --git a/code/game/jobs/job/uacm/intermission.dm b/code/game/jobs/job/uacm/intermission.dm index bc43f90490..c409a71a63 100644 --- a/code/game/jobs/job/uacm/intermission.dm +++ b/code/game/jobs/job/uacm/intermission.dm @@ -1,12 +1,12 @@ /datum/job/uacm/basepc title = JOB_UACM_BASEPC - total_positions = 10 - spawn_positions = 10 + total_positions = -1 + spawn_positions = -1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uacm/basepc entry_message_intro = "You are an UACM Comissioned Officer, currently assigned to the 2nd Logistics Division, under RDML Thomas Boulette." - entry_message_body = "You have spent the last two weeks travelling on various UACM spaceships or waiting on UACM transfer stations to get to the Outer Veil Primary Supply Terminal, where you will be stationed for the duration of your assignment." - entry_message_end = "For the last leg of your journey, you are rather last minute loaded onto a transit shuttle headed for the PST that was picking up cargo intended for the station. The officer operating the shuttle seemed somewhat surprised by your presence but nonetheless seemed happy to help. After about 20 minutes of flight, the shuttle abruptly stops and your pilot looks in frustration at her pilot console." + entry_message_body = "Sometime in the last few days you have arrived at the headquarters of your new assignment - the Outer Veil Primary Supply Terminal, a massive, sprawling logistics station. " + entry_message_end = "Whether you arrived days or minutes ago, the official version is that due to an unspecified security issue, the station is under strict lockdown. Regardless of your involvement with the issues on the station, like the other members of the Test Crews that have arrived on station, you are currently under lockdown in what is supposed to be your future dorm." /obj/effect/landmark/start/basepc name = JOB_UACM_BASEPC icon_state = "so_spawn" diff --git a/code/game/machinery/doors/multi_tile_sp.dm b/code/game/machinery/doors/multi_tile_sp.dm index e696871b9a..60dea21e6e 100644 --- a/code/game/machinery/doors/multi_tile_sp.dm +++ b/code/game/machinery/doors/multi_tile_sp.dm @@ -27,9 +27,10 @@ name = "elevator door" desc = "A heavy looking metal door with an equally heavy looking glass panel that lets you peek inside." desc_lore = "Since time immemorial, people have taken great effort not to fall out of elevators in transit. These doors are one such method. Simple, yet effective. Spaceship freight elevators have not changed the game - people still hate falling down elevator shafts." - req_access = list() + req_access = list(ACCESS_SP_ADMIN) icon = 'icons/obj/structures/doors/4x1_elevator_access.dmi' - icon_state = "door_closed" + icon_state = "door_locked" + locked = TRUE width = 4 openspeed = 22 opacity = FALSE diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index c7443130b2..f9de82e599 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -34,7 +34,8 @@ var/gloves_type = /obj/item/clothing/gloves/marine var/headset_type = /obj/item/device/radio/headset/almayer/marine - var/vend_delay = 0 //delaying vending of an item (for drinks machines animation, for example). Make sure to synchronize this with animation duration + var/vend_delay = 0 //delaying vending of an item (for drinks machines animation, for example). Make sure to synchronize this with animation duration. As a side note, this being set also enables using animations _vend for icon_state animation. + var/deny_delay = 0 //As above, but for denials. Since animations don't have to take the same time. As above, affixes _deny var/vend_sound //use with caution. Potential spam /// X Offset to vend to @@ -825,10 +826,10 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/structure/machinery/cm_vending/proc/vend_fail() stat |= IN_USE - if(vend_delay) + if(deny_delay) overlays.Cut() icon_state = "[initial(icon_state)]_deny" - sleep(1.5 SECONDS) + sleep(deny_delay) icon_state = initial(icon_state) stat &= ~IN_USE update_icon() diff --git a/code/game/machinery/vending/vendor_types/sectorpatrol.dm b/code/game/machinery/vending/vendor_types/sectorpatrol.dm new file mode 100644 index 0000000000..4d8a19bca5 --- /dev/null +++ b/code/game/machinery/vending/vendor_types/sectorpatrol.dm @@ -0,0 +1,150 @@ +/obj/structure/machinery/cm_vending/clothing/super_snowflake/sp_civclothes + name = "OV-PST Civilian Clothing Production Line Dispenser" + desc = "A generic looking vending machine, displaying various articles of clothing on its colored screen. Seems to react to anyone approaching it. This device seems to be connected to a thick Liquid Data conduit that ties to the rest of the station." + desc_lore = "Recreated from generic blueprints of vending machines acquired from Earth, these devices have two key unique qualities. First, the screens and electronic parts were all manufactured on the PST, meaning that they all carry traces of the stations Liquid Data foundries and are also able to display colored images if they are not taken off station. Second, these devices aren't vending machines at all, but rather end points in a complex manufacturing system that, at least in theory, utilizes polymers, resins and unique metal alloys to manufacture everything its crew may need." + icon = 'icons/obj/structures/machinery/vending_sp.dmi' + icon_state = "clothes" + item_types = list(/obj/item/clothing/head/sp_personal/basehat, /obj/item/clothing/under/sp_personal/baseunder/, /obj/item/clothing/suit/sp_personal/basejacket/, /obj/item/clothing/socks/compression/thigh/, /obj/item/clothing/shoes/sp_personal/baseshoe/) + vend_delay = 2 SECONDS + vendor_theme = VENDOR_THEME_USCM + +/obj/structure/machinery/cm_vending/clothing/super_snowflake/sp_tiles + name = "OV-PST NRPS compliant tile press" + desc = "A complex machine connected to a sizable Liquid Data port that colors, stamps, and 'bakes' NRPS compliant floor tiles on demand." + desc_lore = "Machines like these are used in other manufacturing facilities that produce NRPS compliant tiles, this one however seems to have been heavily modified to both make the process work with the unique materials and energy threshold available on the PST and to be Liquid Data compatible. The result is hard to deny, a complete set of tiles can be 'baked' in around 10 seconds compared to a whole day in most solutions. Near infinite stores of energy, as it turns out, have their benefit." + icon = 'icons/obj/structures/machinery/vending_sp.dmi' + icon_state = "tiles" + item_types = list(/obj/item/stack/modulartiles, /obj/item/modular/sealant) + vend_delay = 10 SECONDS + vendor_theme = VENDOR_THEME_USCM + +/obj/structure/machinery/cm_vending/clothing/super_snowflake/sp_tiles + +/obj/item/reagent_container/food/snacks/mre_pack/uacm + name = "OV-PST All-In-One Hypernutrient meal" + desc = "A disposable, recyclable food tray with surprisingly juicy white lumps that feel almost like meat if you close your eyes. Amd pinch your nose. While the presentation leaves much to be desired, the aroma isn't bad and at least the food looks fresh." + desc_lore = "The energy required to properly create, cultivate, harvest, and turn biomatter into something edible on-board ships or space stations means that any technology of this type remained a fever dream and to anyone's knowledge never was explored to any extent. It is curious then that the PST not only seems to have a pipeline fully capable of just that, but this does also not seem to be the initial iteration of this technology considering how refined it seems to be. This would likely mean this technology was pioneered back when the PST belonged to the cult of the Godseekers and Deep Void. Bon Appetit!" + icon = 'icons/obj/items/sp_cargo.dmi' + icon_state = "pstmeal" + +/obj/item/reagent_container/food/snacks/mre_pack/uacm/Initialize() + . = ..() + reagents.add_reagent("nutriment", 25) + bitesize = 3 +/obj/structure/machinery/cm_vending/sorted/sectorpatrol/food + name = "OV-PST Meal Assembly Station" + desc = "USCM Food Vendor, containing standard military Prepared Meals." + desc_lore = "This machine seems to not only dispense the food but also serves as the last stage in the PSTs bio generation process. Depending on the desired texture of the food, this machine can flash heat or freeze the product right before handing it out. The end product certainly does not look like what it claims to be, but it very much tastes like it almost to the letter." + icon = 'icons/obj/structures/machinery/vending_sp.dmi' + icon_state = "food" + hackable = FALSE + unacidable = TRUE + unslashable = TRUE + wrenchable = FALSE + vend_delay = 28 + deny_delay = 20 + + +/obj/structure/machinery/cm_vending/sorted/sectorpatrol/food/populate_product_list(scale) + listed_products = list( + list("UACM OV-PST BIOMASS PROCESSOR", -1, null, null), + list("I promise this tastes and works better than it looks. Unlockng the full potential of this technology will require a Corporate contract most likely. I'll fill you in when it's time. For now, the only consolation I have is that this is what everyone is eating. -C.", -1, null, null), + list("OV-PST Hyperprotein All-In-One Meal", 50, /obj/item/reagent_container/food/snacks/mre_pack/uacm, VENDOR_ITEM_REGULAR), + ) + +/obj/item/reagent_container/food/drinks/coffee/uacm + desc = "A brown, thick paper cup with a hot beverage inside, complete with a spill proof lid and a cardboard straw. 100% recyclable, including the liquid inside. The coffee smells bland, but has a decent, medium roast flavor and a decent kick to it." + desc_lore = "OV-PST coffee is not grown, but rather manufactured as a compound that is injected into recycled water, then warmed up after careful blending. This is likely why the coffee ends up smelling more like bad water, however the lab-perfected taste tends to make up for this at least somewhat." + +/obj/item/reagent_container/food/drinks/tea/uacm + name = "tea" + desc = "A brown, thick paper cup with a hot beverage inside, complete with a spill proof lid and a cardboard straw. 100% recyclable, including the liquid inside. The liquid inside seems odorless and colorless, but tastes like a good, strong, Earl Gray tea." + desc_lore = "OV-PST tea is not grown, but rather manufactured as a compound that is injected into recycled water, then warmed up after careful blending. The lack of color and odor is a byproduct of this process - artificial flavorings and colors throw the taste off too much, at least that is what the PST's systems claim. The experience isn't bad, but the lack of an aroma is certainly noticeable." + +/obj/item/reagent_container/food/drinks/h_chocolate/uacm + name = "hot coffee" + desc = "A brown, thick paper cup with a hot beverage inside, complete with a spill proof lid and a cardboard straw. 100% recyclable, including the liquid inside. Appears to contain a genuine, natural cup of hot chocolate. A near perfect mix of sweet and dark." + desc_lore = "Artificial chocolate rivaling and in many cases topping in quality natural sources is the product of refugees fleeing the fall of Europe into the Northern Republic. The Northerners, keen to strike back at what is undeniably a threat to their very existence, would often support unorthodox projects they thought would be useful against the UPP in the long run. Artificial chocolate, along with other endangered 'comfort' products like coffee, tea and honey were perfected in cooperation with UA and TWE partners as a way of curing UPP dominance on the black market of these crops and substances. As such, it is probably the only foodstuff on the PST that tastes, looks and smells just like you would expect it." +/obj/structure/machinery/cm_vending/sorted/sectorpatrol/hot_drink + name = "OV-PST hot drink dispenser" + desc = "A simple dispenser that drops a cup and fills it with a warmed-up liquid. A small console can be used to select a beverage. A light blue cable sticking out of the devices frame suggests that it has been modified to work in a Liquid Data environment." + desc_lore = "An often not mentioned aspect of life on bigger space faring installations and ships is the constant fight against moisture. Closed air environment hate moisture and somehow, humans just can't stop getting… Moist. Under most circumstances powering a system that would in any significant way reduce, let alone nullify moisture devastating long term effect on say heavy machinery or ship hulls would be considered a fool's errand. There is no power source known to man, or in fact conceivable by current human understanding of physics that would get the job done without producing a net loss. The PST is not concerned about power. Moisture is recycled to the last drop, a non-insignificant part of it is distilled, re-mineralized and then reused. Like, in hot beverage dispensers for instance. Bottoms up!" + icon = 'icons/obj/structures/machinery/vending_sp.dmi' + icon_state = "coffee" + hackable = FALSE + unacidable = TRUE + unslashable = TRUE + wrenchable = FALSE + vend_delay = 28 + deny_delay = 20 + +/obj/structure/machinery/cm_vending/sorted/sectorpatrol/hot_drink/populate_product_list(scale) + listed_products = list( + list("UACM OV-PST HOT BEVARAGE DISPENSER", -1, null, null), + list("Artificial Coffee, Real Caffeine", 50, /obj/item/reagent_container/food/drinks/coffee/uacm, VENDOR_ITEM_REGULAR), + list("Tea flavored water. Contains Caffeine.", 50, /obj/item/reagent_container/food/drinks/tea/uacm, VENDOR_ITEM_REGULAR), + list("Hot Chocolate", 50, /obj/item/reagent_container/food/drinks/h_chocolate/uacm, VENDOR_ITEM_REGULAR), + ) + +/obj/structure/machinery/cm_vending/sorted/sectorpatrol/cigrette + name = "stripped cigarette dispenser" + desc = "A cigarette dispensing machine stripped of all branding." + desc_lore = "Cigarette companies formed a single trust at the turn of the century as they firmly attached themselves to humanities efforts in the stars. Their hold on patents, trademarks and anything related to smoking tobacco is undisputed and as such, no real research is taking place into spaceborne alternatives. The fact that this machine seems to have been stolen rather than created on board the PST seems to suggest that instead of reproduction someone picked a more… Direct route of acquiring these machines and their contents." + icon = 'icons/obj/structures/machinery/vending_sp.dmi' + icon_state = "cigs" + hackable = FALSE + unacidable = TRUE + unslashable = TRUE + wrenchable = FALSE + vend_delay = 10 + deny_delay = 10 + +/obj/structure/machinery/cm_vending/sorted/sectorpatrol/cigrette/populate_product_list(scale) + listed_products = list( + list("FREE CIGARETTES. DON'T ASK QUESTIONS, OKAY?", -1, null, null), + list("Koorlander Gold", 20, /obj/item/storage/fancy/cigarettes/kpack, VENDOR_ITEM_REGULAR), + list("Arcturian Ace", 20, /obj/item/storage/fancy/cigarettes/arcturian_ace, VENDOR_ITEM_REGULAR), + list("Emerald Green", 20, /obj/item/storage/fancy/cigarettes/emeraldgreen, VENDOR_ITEM_REGULAR), + list("Weyland-Yutani Gold", 20, /obj/item/storage/fancy/cigarettes/wypacket, VENDOR_ITEM_REGULAR), + list("Lady Fingers", 20, /obj/item/storage/fancy/cigarettes/lady_finger, VENDOR_ITEM_REGULAR), + list("Executive Select", 20, /obj/item/storage/fancy/cigarettes/blackpack, VENDOR_ITEM_REGULAR), + list("FREE LIGHTERS. THEY CAME WITH THE CIGS.", -1, null, null), + list("Disposable lighter", 100, /obj/item/tool/lighter/random, VENDOR_ITEM_REGULAR), + ) + +/obj/structure/machinery/cm_vending/sorted/sectorpatrol/soda + name = "stripped soda dispenser" + desc = "A soda dispensing machine and fridge, stripped of all branding." + desc_lore = "Every planet, ship, tourist destination, foundry, kennel, and orphanage out in the galaxy has a soft beverage of choice. And they have opinions about it, best expressed over consuming said soft drinks, mixed with copious amounts of alcohol. This is most likely why the PST seems to be littered with copious amounts of Souto soft drinks, but perhaps it may not be the best of ideas to question this choice." + icon = 'icons/obj/structures/machinery/vending_sp.dmi' + icon_state = "Cola_Machine" + hackable = FALSE + unacidable = TRUE + unslashable = TRUE + wrenchable = FALSE + vend_delay = 10 + deny_delay = 10 + +/obj/structure/machinery/cm_vending/sorted/sectorpatrol/soda/populate_product_list(scale) + listed_products = list( + list("REGULAR SOUTO SOFT DRINKS", -1, null, null), + list("Souto Classic", 20, /obj/item/reagent_container/food/drinks/cans/souto/classic, VENDOR_ITEM_REGULAR), + list("Cherry Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/cherry, VENDOR_ITEM_REGULAR), + list("Lime Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/lime, VENDOR_ITEM_REGULAR), + list("Grape Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/grape, VENDOR_ITEM_REGULAR), + list("Blue Raspberry Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/blue, VENDOR_ITEM_REGULAR), + list("Peach Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/peach, VENDOR_ITEM_REGULAR), + list("Cranberry Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/cranberry, VENDOR_ITEM_REGULAR), + list("Vanilla Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/vanilla, VENDOR_ITEM_REGULAR), + list("Pineapple Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/pineapple, VENDOR_ITEM_REGULAR), + list("DIET SOUTO SOFT DRINKS", -1, null, null), + list("Diet Souto Classic", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/classic, VENDOR_ITEM_REGULAR), + list("Diet Cherry Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/cherry, VENDOR_ITEM_REGULAR), + list("Diet Lime Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/lime, VENDOR_ITEM_REGULAR), + list("Diet Grape Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/grape, VENDOR_ITEM_REGULAR), + list("Diet Blue Raspberry Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/blue, VENDOR_ITEM_REGULAR), + list("Diet Peach Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/peach, VENDOR_ITEM_REGULAR), + list("Diet Cranberry Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/cranberry, VENDOR_ITEM_REGULAR), + list("Diet Vanilla Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/vanilla, VENDOR_ITEM_REGULAR), + list("Diet Pineapple Souto", 20, /obj/item/reagent_container/food/drinks/cans/souto/diet/pineapple, VENDOR_ITEM_REGULAR), + ) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index fb01038763..a8a877c348 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -563,6 +563,12 @@ cases. Override_icon_state should be a list.*/ if(!(flags_equip_slot & SLOT_FEET)) return FALSE return TRUE + if(WEAR_SOCKS) + if(human.socks) + return FALSE + if(!(flags_equip_slot & SLOT_SOCKS)) + return FALSE + return TRUE if(WEAR_WAIST) if(human.belt) return FALSE @@ -762,6 +768,8 @@ cases. Override_icon_state should be a list.*/ return flags_equip_slot & SLOT_HANDS if(WEAR_FEET) return flags_equip_slot & SLOT_FEET + if(WEAR_SOCKS) + return flags_equip_slot & SLOT_SOCKS if(WEAR_WAIST) return flags_equip_slot & SLOT_WAIST if(WEAR_EYES) diff --git a/code/game/objects/items/devices/radio/sp_radios.dm b/code/game/objects/items/devices/radio/sp_radios.dm new file mode 100644 index 0000000000..7d14755fd8 --- /dev/null +++ b/code/game/objects/items/devices/radio/sp_radios.dm @@ -0,0 +1,23 @@ +/obj/item/device/encryptionkey/pst_standard + name = "\improper UACM OV-PST encryption keys" + icon_state = "binary_key" + channels = list(RADIO_CHANNEL_ALMAYER = TRUE, RADIO_CHANNEL_COMMAND = TRUE) + +/obj/item/device/encryptionkey/pst_extended + name = "\improper UACM OV-PST command encryption keys" + icon_state = "binary_key" + channels = list(RADIO_CHANNEL_ALMAYER = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_HIGHCOM = TRUE) + +/obj/item/device/radio/headset/uacm/pst_standard + name = "radio headset" + desc = "A simple speker and microphone, tuned into local radio channels." + icon_state = "mcom_headset" + initial_keys = list(/obj/item/device/encryptionkey/pst_standard) + volume = RADIO_VOLUME_RAISED + +/obj/item/device/radio/headset/uacm/pst_extended + name = "radio headset" + desc = "A simple speker and microphone, tuned into local radio channels." + icon_state = "mcom_headset" + initial_keys = list(/obj/item/device/encryptionkey/pst_extended) + volume = RADIO_VOLUME_IMPORTANT diff --git a/code/game/objects/items/sectorpatrol/crafting_items.dm b/code/game/objects/items/sectorpatrol/crafting_items.dm index 6d49b8e9b7..c57de964cd 100644 --- a/code/game/objects/items/sectorpatrol/crafting_items.dm +++ b/code/game/objects/items/sectorpatrol/crafting_items.dm @@ -27,6 +27,7 @@ user.visible_message(SPAN_NOTICE("[user] starts to unwrap a package."), SPAN_INFO("You start to unwrap the pacckage."), SPAN_DANGER("You hear tearing sounds.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) user.visible_message(SPAN_NOTICE("[user] tears through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_INFO("You tear through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_DANGER("The ripping stops.")) + playsound(src, soundin = 'sound/items/poster_ripped.ogg', vol = 25, vary = 1) new /obj/item/crafting/frame_elements/chair(get_turf(usr)) new /obj/item/crafting/top/chair/seat(get_turf(usr)) new /obj/item/crafting/top/chair/wheels(get_turf(usr)) @@ -44,6 +45,7 @@ user.visible_message(SPAN_NOTICE("[user] starts to unwrap a package."), SPAN_INFO("You start to unwrap the pacckage."), SPAN_DANGER("You hear tearing sounds.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) user.visible_message(SPAN_NOTICE("[user] tears through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_INFO("You tear through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_DANGER("The ripping stops.")) + playsound(src, soundin = 'sound/items/poster_ripped.ogg', vol = 25, vary = 1) new /obj/item/crafting/frame_elements/drawers(get_turf(usr)) new /obj/item/crafting/top/drawers(get_turf(usr)) qdel(src) @@ -61,6 +63,7 @@ user.visible_message(SPAN_NOTICE("[user] starts to unwrap a package."), SPAN_INFO("You start to unwrap the pacckage."), SPAN_DANGER("You hear tearing sounds.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) user.visible_message(SPAN_NOTICE("[user] tears through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_INFO("You tear through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_DANGER("The ripping stops.")) + playsound(src, soundin = 'sound/items/poster_ripped.ogg', vol = 25, vary = 1) new /obj/item/crafting/frame/lamp(get_turf(usr)) new /obj/item/crafting/top/lamp/base(get_turf(usr)) new /obj/item/crafting/top/lamp/bulb(get_turf(usr)) @@ -88,6 +91,7 @@ var/obj/item/crafting/top/lamp/base/D = C user.visible_message(SPAN_NOTICE("[user] starts to attach a lamp top to its base."), SPAN_INFO("You start to attach a lamp top to its base.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver2.ogg', vol = 25, vary = 1) crafting_lamp_top_color = D.variant_id qdel(D) icon_state = "lamp" @@ -105,6 +109,7 @@ var/obj/item/crafting/top/lamp/bulb/bulb = C user.visible_message(SPAN_NOTICE("[user] starts to screw a light bulb into the desk lamp."), SPAN_INFO("You start to screw a light bulb into the desk lamp.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver.ogg', vol = 25, vary = 1) var/obj/item/device/modular/lamp/lamp = new(get_turf(src)) lamp.crafting_lamp_top_color = crafting_lamp_top_color lamp.crafting_lamp_bulb_color = bulb.crafting_lamp_bulb_color @@ -122,6 +127,7 @@ user.visible_message(SPAN_NOTICE("[user] starts to detach a lamp top from its frame."), SPAN_INFO("You start to detach a lamp top from its frame.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) var/obj/item/crafting/top/lamp/base/top = new(get_turf(src)) + playsound(src, soundin = 'sound/items/Screwdriver2.ogg', vol = 25, vary = 1) top.variant_id = crafting_lamp_top_color user.put_in_hands(top) crafting_lamp_top_color = null @@ -155,6 +161,7 @@ if(HAS_TRAIT(C, TRAIT_TOOL_SCREWDRIVER)) user.visible_message(SPAN_NOTICE("[user] starts to assemble a frame with a screwdriver."), SPAN_INFO("You start to assemble the frame."), SPAN_DANGER("You hear metal gently brushing against other metal.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver.ogg', vol = 25, vary = 1) var/obj/structure/crafting/frame/table/R = new(get_turf(usr)) R.variant_id = variant_id qdel(src) @@ -173,6 +180,7 @@ ..() user.visible_message(SPAN_NOTICE("[user] starts to assemble a cabinet frame from its components."), SPAN_INFO("You start to assemble a cabinet frame from its components."), SPAN_DANGER("You hear metal gently brushing against other metal.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver2.ogg', vol = 25, vary = 1) var/obj/structure/crafting/frame/drawers/R = new(get_turf(usr)) R.variant_id = variant_id qdel(src) diff --git a/code/game/objects/items/sectorpatrol/modular_sealant.dm b/code/game/objects/items/sectorpatrol/modular_sealant.dm new file mode 100644 index 0000000000..bf74093de2 --- /dev/null +++ b/code/game/objects/items/sectorpatrol/modular_sealant.dm @@ -0,0 +1,13 @@ +/obj/item/modular/sealant + name = "white NRPS sealant applicator tube" + desc = "A metallic gray blue tube with a distinct applicator." + desc_lore = "NRPS Compliant sealant is effectively a colored fast trying glue that exits the tube as a liquid rapidly filling the grooves between installed modular tiles and then immediately hardens, holding the tiles together. Thanks to a unique, proprietary blend developed in the Northern Republic, piercing the hardened sealant, and allowing more oxygenation makes the glue retract and detach from the tiles, at which point it can just be removed from the grooves and discarded." + icon = 'icons/obj/items/sp_cargo.dmi' + icon_state = "sealanttube_white" + var/sealant_color = "white" + flags_item = NOBLUDGEON + +/obj/item/modular/sealant/black + name = "black NRPS sealant applicator tube" + icon_state = "sealanttube_black" + sealant_color = "black" diff --git a/code/game/objects/items/stacks/tiles/modular.dm b/code/game/objects/items/stacks/tiles/modular.dm index 1b4c2b8b8d..e9d25e16ea 100644 --- a/code/game/objects/items/stacks/tiles/modular.dm +++ b/code/game/objects/items/stacks/tiles/modular.dm @@ -1,23 +1,189 @@ /obj/item/stack/modulartiles - name = "grey NRPS modular floor tiles" +// name = "NRPS modular floor tiles" + name = "light gray NRPS modular floor tiles" icon = 'icons/obj/items/floortiles.dmi' - icon_state = "tiles_default" - singular_name = "grey NRPS modular floor tile" +// icon_state = "tiles_default" + icon_state = "tiles_lightgray" + singular_name = "NRPS modular floor tile" desc = "These floor tiles are lighter than you'd expect and have a distinct port on their back. It looks like they're meant to be slotted somewhere." desc_lore = "These floor tiles are produced in compliance with the Northern Republic Production Standard and fit into preprepared floor struts. The tiles themselves can be printed with minimal resource requirements and are both modular and easy to replace. " w_class = SIZE_MEDIUM force = 1 throwforce = 1 + flags_item = NOBLUDGEON throw_speed = SPEED_VERY_FAST throw_range = 20 max_amount = 40 - stack_id = "grey modular tile" - var/tiles_color = "default" + amount = 40 +// stack_id = "default modular tile" + stack_id = "lightgray" +// var/tiles_color = "default" + var/tiles_color = "tiles_lightgray" amount_sprites = TRUE -/obj/item/stack/modulartiles/white +/obj/item/stack/modulartiles/Initialize() + . = ..() + update_icon() + + +/obj/item/stack/modulartiles/tiles_gray + name = "gray NRPS modular floor tiles" + icon_state = "tiles_gray" + stack_id = "tiles_gray" + tiles_color = "gray" + +/obj/item/stack/modulartiles/tiles_blue + name = "blue NRPS modular floor tiles" + icon_state = "tiles_blue" + stack_id = "tiles_blue" + tiles_color = "blue" + +/obj/item/stack/modulartiles/tiles_purple + name = "purple NRPS modular floor tiles" + icon_state = "tiles_purple" + stack_id = "tiles_purple" + tiles_color = "purple" + +/obj/item/stack/modulartiles/tiles_orange + name = "orange NRPS modular floor tiles" + icon_state = "tiles_orange" + stack_id = "tiles_orange" + tiles_color = "orange" + +/obj/item/stack/modulartiles/tiles_green + name = "green NRPS modular floor tiles" + icon_state = "tiles_green" + stack_id = "tiles_green" + tiles_color = "green" + +/obj/item/stack/modulartiles/tiles_black + name = "black NRPS modular floor tiles" + icon_state = "tiles_black" + stack_id = "tiles_black" + tiles_color = "black" + +/obj/item/stack/modulartiles/tiles_creamwhite + name = "creamy white NRPS modular floor tiles" + icon_state = "tiles_creamwhite" + stack_id = "tiles_creamwhite" + tiles_color = "creamwhite" + +/obj/item/stack/modulartiles/tiles_limegreen + name = "lime green NRPS modular floor tiles" + icon_state = "tiles_limegreen" + stack_id = "tiles_limegreen" + tiles_color = "limegreen" + +/obj/item/stack/modulartiles/tiles_plumpurple + name = "purple plum NRPS modular floor tiles" + icon_state = "tiles_plumpurple" + stack_id = "tiles_plumpurple" + tiles_color = "plumpurple" + +/obj/item/stack/modulartiles/tiles_eclipsebrown + name = "eclipse brown NRPS modular floor tiles" + icon_state = "tiles_eclipsebrown" + stack_id = "tiles_eclipsebrown" + tiles_color = "eclipsebrown" + +/obj/item/stack/modulartiles/tiles_rustred + name = "rusty red NRPS modular floor tiles" + icon_state = "tiles_rustred" + stack_id = "tiles_rustred" + tiles_color = "rustred" + +/obj/item/stack/modulartiles/tiles_navyblue + name = "navy blue NRPS modular floor tiles" + icon_state = "tiles_navyblue" + stack_id = "tiles_navyblue" + tiles_color = "navyblue" + +/obj/item/stack/modulartiles/tiles_darkpurple + name = "dark purple NRPS modular floor tiles" + icon_state = "tiles_darkpurple" + stack_id = "tiles_darkpurple" + tiles_color = "darkpurple" + +/obj/item/stack/modulartiles/tiles_jadegreen + name = "jade green NRPS modular floor tiles" + icon_state = "tiles_jadegreen" + stack_id = "tiles_jadegreen" + tiles_color = "jadegreen" + +/obj/item/stack/modulartiles/tiles_grassgreen + name = "grass green NRPS modular floor tiles" + icon_state = "tiles_grassgreen" + stack_id = "tiles_grassgreen" + tiles_color = "grassgreen" + +/obj/item/stack/modulartiles/tiles_bronzebrown + name = "bronze brown NRPS modular floor tiles" + icon_state = "tiles_bronzebrown" + stack_id = "tiles_bronzebrown" + tiles_color = "bronzebrown" + +/obj/item/stack/modulartiles/tiles_bloodred + name = "blood red NRPS modular floor tiles" + icon_state = "tiles_bloodred" + stack_id = "tiles_bloodred" + tiles_color = "bloodred" + +/obj/item/stack/modulartiles/tiles_white name = "white NRPS modular floor tiles" icon_state = "tiles_white" - singular_name = "grey NRPS modular floor tile" - stack_id = "white modular tile" + stack_id = "tiles_white" tiles_color = "white" + +/obj/item/stack/modulartiles/tiles_mistblue + name = "misty blue NRPS modular floor tiles" + icon_state = "tiles_mistblue" + stack_id = "tiles_mistblue" + tiles_color = "mistblue" + +/obj/item/stack/modulartiles/tiles_cactusgreen + name = "cactus green NRPS modular floor tiles" + icon_state = "tiles_cactusgreen" + stack_id = "tiles_cactusgreen" + tiles_color = "cactusgreen" + +/obj/item/stack/modulartiles/tiles_muddyyellow + name = "muddy yellow NRPS modular floor tiles" + icon_state = "tiles_muddyyellow" + stack_id = "tiles_muddyyellow" + tiles_color = "muddyyellow" + +/obj/item/stack/modulartiles/tiles_sandyellow + name = "sandy yellow NRPS modular floor tiles" + icon_state = "tiles_sandyellow" + stack_id = "tiles_sandyellow" + tiles_color = "sandyellow" + +/obj/item/stack/modulartiles/tiles_lavenderpurple + name = "lavender purple NRPS modular floor tiles" + icon_state = "tiles_lavenderpurple" + stack_id = "tiles_lavenderpurple" + tiles_color = "lavenderpurple" + +/obj/item/stack/modulartiles/tiles_watermelonred + name = "watermelon red NRPS modular floor tiles" + icon_state = "tiles_watermelonred" + stack_id = "tiles_watermelonred" + tiles_color = "watermelonred" + +/obj/item/stack/modulartiles/tiles_iguanagreen + name = "iguana green NRPS modular floor tiles" + icon_state = "tiles_iguanagreen" + stack_id = "tiles_iguanagreen" + tiles_color = "iguanagreen" + +/obj/item/stack/modulartiles/tiles_dustyblue + name = "dusty blue NRPS modular floor tiles" + icon_state = "tiles_dustyblue" + stack_id = "tiles_dustyblue" + tiles_color = "dustyblue" + +/obj/item/stack/modulartiles/tiles_crimsonred + name = "crimson red NRPS modular floor tiles" + icon_state = "tiles_crimsonred" + stack_id = "tiles_crimsonred" + tiles_color = "crimsonred" diff --git a/code/game/objects/items/storage/storage_sp.dm b/code/game/objects/items/storage/storage_sp.dm index 0e0e633fe4..32d8c947fc 100644 --- a/code/game/objects/items/storage/storage_sp.dm +++ b/code/game/objects/items/storage/storage_sp.dm @@ -15,3 +15,15 @@ new /obj/item/tool/crowbar/uacm(src) new /obj/item/tool/wirecutters/uacm(src) new /obj/item/device/multitool/uacm(src) + +/obj/item/storage/backpack/satchel/discrete + name = "discrete satchel" + desc = "A small satchel worn under clothing, obscured from view unless one knows to look for it or is performing a direct search." + icon = 'icons/obj/sp_clothes/back/icon/back.dmi' + icon_state = "satchel_black" + worn_accessible = TRUE + storage_slots = null + max_storage_space = 30 + item_icons = list( + WEAR_BACK = 'icons/obj/sp_clothes/back/onmob/back.dmi' + ) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index a3febb11dd..a2a3188a3d 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -138,6 +138,8 @@ return "in [t_his] left hand" if(WEAR_R_HAND) return "in [t_his] right hand" + if(WEAR_SOCKS) + return "on [t_his] legs" if(WEAR_FEET) return "on [t_his] feet" return "...somewhere?" diff --git a/code/game/objects/structures/sectorpatrol/crafting/crafting_customizers.dm b/code/game/objects/structures/sectorpatrol/crafting/crafting_customizers.dm new file mode 100644 index 0000000000..18a50c8cbc --- /dev/null +++ b/code/game/objects/structures/sectorpatrol/crafting/crafting_customizers.dm @@ -0,0 +1,48 @@ +/obj/structure/customizer + name = "customizer master item" + desc = "In my wisdon and 20/20 hindsight, I have created this, the master item for customizers. Woe be upon you if you put it into the actual game for some reason." + desc_lore = "But seriously, if this item is visible for players, it shoudn't be. Contact staff please." + icon = 'icons/obj/structures/machinery/customizer.dmi' + icon_state = "customizer_idle" + anchored = TRUE + opacity = TRUE + density = TRUE + var/active = FALSE + +/obj/structure/customizer/clothing + + name = "Liquid Data enabled textile printer" + desc = "A sturdy looking device with several thick cables connected to it. You can see a beam emitter attached to a metal rail inside. You can also see several smaller tubes that seem to emit a gentle, light-blue glow. A slot that seems to serve as a scanner is visible in front and a small screen is visible to the side." + desc_lore = "Devices like this, albeit without the heavy cabling and with distinctly smaller lasers are often used by colony craftspeople while finishing their creations to put on fine elements like makers marks and other customizations. This specific device abuses the excess power surges resulting from activity within the PSTs enormous Liquid Data store to take this process overboard, allowing not only for fine detailing, but almost complete transformations of garments produced in the stations physical manufactories." + +/obj/structure/customizer/clothing/attackby(obj/item/W, mob/user) + if(active == TRUE) + to_chat(usr, SPAN_NOTICE("This device is already in use by someone.")) + return + if(istype(W, /obj/item/clothing)) + var/obj/item/clothing/A = W + if (A.customizable == 0) + to_chat(usr, SPAN_NOTICE("This item cannot be customized. If you would like to use this apperance sprite and there is no matching item in the dispenser, please contact a DM.")) + return + if (A.customizable == 1) + active = TRUE + customize_desc(A) + active = FALSE + return + +/obj/structure/customizer/clothing/proc/customize_desc(obj/item/clothing/W) + var/obj/item/clothing/C = W + var/new_desc = tgui_input_text(usr, message = "Enter the item DESCRIPTION for [C.name]- what you can see by looking at an item. Try to save most context for the lore description. Old custom description will be replaced. Remember to follow general RP guidelines.", title = "Customize Description: [C.name]", default = "[C.customizable_desc]", max_length = MAX_BOOK_MESSAGE_LEN, multiline = TRUE, encode = TRUE, timeout = 0, trim = TRUE) + C.customizable_desc = new_desc + var/new_desc_lore = tgui_input_text(usr, message = "Enter the item LORE INFORMATION for [C.name]- Anything of note about the item that someone could find out by consulting public resources. You may also provide context for anything visible in your description. Old custom lore information will be replaced. Remember to follow general RP guidelines.", title = "Customize Lore Information: [C.name]", default = "[C.customizable_desc_lore]", max_length = MAX_BOOK_MESSAGE_LEN, multiline = TRUE, encode = TRUE, timeout = 0, trim = TRUE) + C.customizable_desc_lore = new_desc_lore + C.update_custom_descriptions() + to_chat(usr, SPAN_NOTICE("The machine processes your request, snatches your garment, and proceeds to apply the desired customizations. The whole process lights up the inside of the machine with a dim blue light. The machine chimes when the process is complete.")) + INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/structure/customizer/clothing, animate_icon)) + return + +/obj/structure/customizer/clothing/proc/animate_icon() + if(icon_state != "customizer_work") + icon_state = "customizer_work" + sleep(80) + icon_state = initial(icon_state) diff --git a/code/game/objects/structures/sectorpatrol/crafting/crafting_finished_structures.dm b/code/game/objects/structures/sectorpatrol/crafting/crafting_finished_structures.dm index cd71516940..f2fcc1f51d 100644 --- a/code/game/objects/structures/sectorpatrol/crafting/crafting_finished_structures.dm +++ b/code/game/objects/structures/sectorpatrol/crafting/crafting_finished_structures.dm @@ -17,6 +17,7 @@ if(user.a_intent == INTENT_GRAB) user.visible_message(SPAN_NOTICE("[user] loosens the screws attaching the table top to its frame."), SPAN_INFO("You loosen the screws attaching the table top to its frame."), SPAN_DANGER("You hear metal scratch against metal.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver.ogg', vol = 25, vary = 1) var/obj/structure/crafting/frame/table/frame = new(get_turf(src)) frame.icon_state = icon_state frame.variant_id = variant_id @@ -25,6 +26,12 @@ return ..() +/obj/structure/surface/modular/table/attack_hand(mob/user) + . = ..() + if(usr.a_intent == INTENT_DISARM) + if(do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + user.visible_message(SPAN_NOTICE("[user] flips a lever near one of the legs of the table, detaching it from the floor."), SPAN_INFO ("You flip a lever near one of the legs of the table, detaching it from the floor.")) + anchored = !anchored /obj/structure/surface/modular/table/gray icon_state = "table_metal_gray" @@ -60,7 +67,9 @@ if(HAS_TRAIT(C, TRAIT_TOOL_MULTITOOL)) if(user.a_intent == INTENT_GRAB) user.visible_message(SPAN_NOTICE("[user] Attaches the multitool to the port on the side of the mattress. The device beeps."), SPAN_INFO("You attach the multitool to the port on the side of the mattress. The device beeps."), SPAN_DANGER("You hear a soft beep.")) + playsound(src, soundin = 'sound/machines/terminal_select.ogg', vol = 10, vary = 1) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/air_release.ogg', vol = 25, vary = 1) var/obj/structure/crafting/frame/bed/frame = new(get_turf(src)) frame.variant_id = variant_id var/obj/item/crafting/top/bed/top = new(get_turf(src)) @@ -69,6 +78,14 @@ return return +/obj/structure/bed/modular/attack_hand(mob/user) + . = ..() + if(usr.a_intent == INTENT_DISARM) + if(do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver2.ogg', vol = 25, vary = 1) + user.visible_message(SPAN_NOTICE("[user] flips a lever near one of the legs of the bed, detaching it from the floor."), SPAN_INFO ("You flip a lever near one of the legs of the bed, detaching it from the floor.")) + anchored = !anchored + /obj/structure/bed/modular/verb/rotate_pillow() set category = "Object" set name = "Rotate Pillow" @@ -79,13 +96,13 @@ if(ishuman(usr)) usr.visible_message(SPAN_NOTICE("[usr] moves the pilow to the other side of the mattress."), SPAN_INFO("You move the pilow to the other side of the mattress.")) + playsound(src, soundin = 'sound/effects/rustle3.ogg', vol = 25, vary = 1) if (dir == NORTH) dir = SOUTH - return else dir = NORTH - return - return + update_icon() + return //Desk Lamp @@ -117,10 +134,11 @@ to_chat(user, SPAN_WARNING("You cannot turn the light [on ? "off" : "on"] while in [user.loc].")) //To prevent some lighting anomalies. return FALSE on = !on + playsound(src, soundin = 'sound/machines/click.ogg', vol = 25, vary = 1) set_light_on(on) update_icon() return TRUE - if(user.a_intent == INTENT_GRAB) + if(user.a_intent == INTENT_DISARM) user.put_in_active_hand(src) return @@ -133,6 +151,7 @@ to_chat(user, SPAN_NOTICE("You push down on the release button for the bulb...")) if(do_after(user, CRAFTING_DELAY_SHORT, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) var/obj/item/crafting/frame/lamp/frame = new(get_turf(src)) + playsound(src, soundin = 'sound/items/Screwdriver2.ogg', vol = 25, vary = 1) frame.crafting_lamp_top_color = crafting_lamp_top_color frame.variant_id = variant_id frame.icon_state = "lamp" @@ -182,6 +201,7 @@ user.visible_message(SPAN_NOTICE("[user] starts to remove the drawers from the frame."), SPAN_INFO("You start to remove the drawers from the frame."), SPAN_DANGER("You hear loud metal scraping.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) dump_contents() + playsound(src, soundin = 'sound/effects/metal_close.ogg', vol = 25, vary = 1) var/obj/item/crafting/top/drawers/top = new(get_turf(src)) top.variant_id = crafting_drawer_color var/obj/structure/crafting/frame/drawers/frame = new(get_turf(src)) @@ -191,6 +211,14 @@ return return +/obj/structure/closet/modular/drawers/attack_hand(mob/user) + . = ..() + if(usr.a_intent == INTENT_DISARM) + if(do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver2.ogg', vol = 25, vary = 1) + user.visible_message(SPAN_NOTICE("[user] flips a lever near the bottom of the drawers, detaching it from the floor."), SPAN_INFO ("You flip a lever near the bottom of the drawers, detaching it from the floor.")) + anchored = !anchored + //office chair /obj/structure/bed/chair/modular/office @@ -228,6 +256,7 @@ if(user.a_intent == INTENT_GRAB) user.visible_message(SPAN_NOTICE("[user] starts to loosen the clamp holding the chair seat."), SPAN_INFO("You start to loosen the clamp holding the chair seat."), SPAN_DANGER("You hear metalic scraping.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver.ogg', vol = 25, vary = 1) var/obj/item/crafting/top/chair/seat/top = new(get_turf(src)) top.variant_id = crafting_chair_top_id var/obj/structure/crafting/frame/chair/frame = new(get_turf(src)) diff --git a/code/game/objects/structures/sectorpatrol/crafting/crafting_structures.dm b/code/game/objects/structures/sectorpatrol/crafting/crafting_structures.dm index b2d74baad4..76895d6615 100644 --- a/code/game/objects/structures/sectorpatrol/crafting/crafting_structures.dm +++ b/code/game/objects/structures/sectorpatrol/crafting/crafting_structures.dm @@ -28,6 +28,7 @@ user.visible_message(SPAN_NOTICE("[user] starts to unwrap a package."), SPAN_INFO("You start to unwrap the pacckage."), SPAN_DANGER("You hear tearing sounds.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) user.visible_message(SPAN_NOTICE("[user] tears through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_INFO("You tear through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_DANGER("The ripping stops.")) + playsound(src, soundin = 'sound/items/poster_ripped.ogg', vol = 25, vary = 1) new /obj/item/crafting/frame_elements/table(get_turf(src)) new /obj/item/crafting/top/table(get_turf(src)) qdel(src) @@ -43,11 +44,13 @@ user.visible_message(SPAN_NOTICE("[user] starts to unwrap a package."), SPAN_INFO("You start to unwrap the pacckage."), SPAN_DANGER("You hear tearing sounds.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) user.visible_message(SPAN_NOTICE("[user] tears through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_INFO("You tear through the package, revealing its contents. Once ripped, the packing material quickly turns to a fine dust."), SPAN_DANGER("The ripping stops.")) + playsound(src, soundin = 'sound/items/poster_ripped.ogg', vol = 25, vary = 1) new /obj/item/crafting/frame_elements/bed(get_turf(src)) new /obj/item/crafting/top/bed(get_turf(src)) qdel(src) return +//frames /obj/structure/crafting/frame/ name = "structure frame master object" @@ -65,8 +68,9 @@ /obj/structure/crafting/frame/table/attack_hand(mob/user) if(crafting_top_ready == TRUE) if(user.a_intent == INTENT_GRAB) - user.visible_message(SPAN_NOTICE("[user] lifts a table top of its frame."), SPAN_INFO("You lift a table top of its frame.")) + user.visible_message(SPAN_NOTICE("[user] lifts a table top from its frame."), SPAN_INFO("You lift a table top from its frame.")) if(do_after(user, (CRAFTING_DELAY_SHORT * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/handling/book_pickup.ogg', vol = 25, vary = 1) switch(icon_state) if("table_metal_black") var/obj/item/crafting/top/table/tabletop = new(get_turf(user)) @@ -88,6 +92,7 @@ var/obj/item/crafting/top/table/W = C user.visible_message(SPAN_NOTICE("[user] starts starts to align a table top with a frame."), SPAN_INFO("You start to to align a table top with a frame.")) if(do_after(user, (CRAFTING_DELAY_SHORT * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/handling/book_pickup.ogg', vol = 25, vary = 1) switch(W.variant_id) if("default") icon_state = "table_metal_black" @@ -104,6 +109,7 @@ if(crafting_top_ready == TRUE) user.visible_message(SPAN_NOTICE("[user] tightens the screws attaching the table top to its frame."), SPAN_INFO("You tighten the screws attaching the table top to its frame."), SPAN_DANGER("You hear metal scratch against metal.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Ratchet.ogg', vol = 25, vary = 1) switch(icon_state) if("table_metal_black") new /obj/structure/surface/modular/table(get_turf(src)) @@ -121,6 +127,7 @@ if(user.a_intent == INTENT_GRAB) user.visible_message(SPAN_NOTICE("[user] starts to disassemble the frame."), SPAN_INFO("You start to disassemble the frame.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver.ogg', vol = 25, vary = 1) var/obj/item/crafting/frame_elements/table/elements = new(get_turf(usr)) elements.variant_id = variant_id qdel(src) @@ -141,6 +148,7 @@ var/obj/item/crafting/top/bed/top = C user.visible_message(SPAN_NOTICE("[user] places a bag in the middle of the frame and pushes a button on the side."), SPAN_INFO("You place a bag in the middle of the frame and push a button on the side.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/air_release.ogg', vol = 25, vary = 1) var/obj/structure/bed/modular/bed = new(get_turf(src)) bed.crafting_bed_bedsheet_id = top.variant_id bed.variant_id = variant_id @@ -152,6 +160,7 @@ if(user.a_intent == INTENT_GRAB) user.visible_message(SPAN_NOTICE("[user] starts to disassemble the frame."), SPAN_INFO("You start to disassemble the frame.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Screwdriver.ogg', vol = 25, vary = 1) var/obj/item/crafting/frame_elements/bed/B = C B.variant_id = variant_id qdel(src) @@ -171,6 +180,7 @@ var/obj/item/crafting/top/drawers/D = C user.visible_message(SPAN_NOTICE("[user] slides metal drawers into the cabinet frame."), SPAN_INFO("You slide metal drawers into the cabinet frame."), SPAN_WARNING("You hear metal sliding against metal.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Deconstruct.ogg', vol = 25, vary = 1) var/obj/structure/closet/modular/drawers/O = new(get_turf(src)) O.crafting_drawer_color = D.variant_id O.variant_id = variant_id @@ -182,6 +192,7 @@ if (user.a_intent == INTENT_GRAB) user.visible_message(SPAN_NOTICE("[user] starts to detach elements of a cabinet frame from each other."), SPAN_INFO("You start to detach elements of a cabinet frame from each other.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Deconstruct.ogg', vol = 25, vary = 1) var/obj/item/crafting/frame_elements/drawers/frame = new(get_turf(src)) frame.variant_id = variant_id qdel(src) @@ -206,6 +217,7 @@ if(do_after(user, (CRAFTING_DELAY_SHORT * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) crafting_chair_wheels -= 1 if(crafting_chair_wheels == 0) + playsound(src, soundin = 'sound/items/Crowbar.ogg', vol = 25, vary = 1) var/obj/item/crafting/top/chair/wheels/wheels = new(get_turf(usr)) var/obj/item/crafting/frame_elements/chair/frame = new(get_turf(usr)) wheels.variant_id = crafting_chair_wheel_id @@ -221,6 +233,7 @@ var/obj/structure/crafting/frame/chair/W = C user.visible_message(SPAN_NOTICE("[user] pushes a chair seat and backrest onto a chair frame."), SPAN_INFO("You push a chair seat and backrest onto a chair frame."), SPAN_WARNING("You hear a metallic thud.")) if(do_after(user, (CRAFTING_DELAY_NORMAL * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION)), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, soundin = 'sound/items/Deconstruct.ogg', vol = 25, vary = 1) var/obj/structure/bed/chair/modular/office/chair = new(get_turf(usr)) chair.variant_id = variant_id chair.crafting_chair_wheel_id = crafting_chair_wheel_id diff --git a/code/game/objects/structures/sectorpatrol/event_terminal.dm b/code/game/objects/structures/sectorpatrol/event_terminal.dm index 6e7cd158df..35fc2a72c6 100644 --- a/code/game/objects/structures/sectorpatrol/event_terminal.dm +++ b/code/game/objects/structures/sectorpatrol/event_terminal.dm @@ -2,7 +2,7 @@ /obj/structure/eventterminal icon = 'icons/obj/structures/machinery/clio_maint.dmi' icon_state = "closed" - name = "manipulator - placeholder" + name = "terminal - placeholder" desc = "An admin or placeholder version of interaction terminals." desc_lore = "Use event specifc terminals you dunce." anchored = TRUE diff --git a/code/game/objects/structures/sectorpatrol/terminals/briefing.dm b/code/game/objects/structures/sectorpatrol/terminals/briefing.dm new file mode 100644 index 0000000000..abfb0f0341 --- /dev/null +++ b/code/game/objects/structures/sectorpatrol/terminals/briefing.dm @@ -0,0 +1,385 @@ +/obj/structure/eventterminal/briefing_terminal + name = "local network terminal" + desc = "A standard computer terminal with the words 'LNT' imprinted on its side. Activated by standing in its proximity. It appears to be in standby mode." + desc_lore = "Local Network Terminals typically regulate local functions of a given area or are used to interface with bigger systems on a ship or installation. They distinction technically means that the terminal interfaces with the local AI somehow, but few outside of systems engineers use the term for its actual intended purpose, sometimes mistaking other terminal types for LNTs." + icon = 'icons/obj/structures/machinery/clio_term.dmi' + plane = GAME_PLANE + var/briefing_playing = FALSE + icon_state = "open_ok" + puzzlebox_id = "historylessons" + item_serial = "UACM-OVPST-PEAK-ORIENTATION-TERM" + +/obj/structure/eventterminal/briefing_terminal/attack_hand(mob/user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + to_chat(usr, SPAN_WARNING("Someone is already using this terminal!")) + return + if (briefing_playing == TRUE) + terminal_speak("Briefing file playback in progress. Please wait until current briefing is complete.") + if(!("briefing_welcome" in usr.saw_narrations)) + terminal_welcome() + terminal_cmd() + puzzlebox_user = null + return + +/obj/structure/eventterminal/briefing_terminal/proc/terminal_welcome() + terminal_speak("Welcome, Test Crew members.") + terminal_speak("If this is the first time, you're seeing this room and this terminal, this likely means that you are fresh off whatever ship brought you here, possibly wondering what this place is and what you'll be doing here.") + terminal_speak("You're in luck. The recordings on this very terminal, left here by your future COs and other people of note you'll likely be encountering during your work here that should get you up to speed and what we do here and what your job will be.") + terminal_speak("We will try to keep this updated and add to them over time, hopefully this very terminal should serve as your own little refresher course on your duties should you ever need it.") + terminal_speak("If you are new to the PST and the Test Crews, I highly recommend you at least view the basic four courses that are currently available, as they are the core basics of your future missions.") + terminal_speak("Use the LIST command to see available entries or a number to start watching a specific entry.") + terminal_speak("Good luck. And if I haven't had a chance to do this in person - welcome to the Test Crews and the PST.") + terminal_speak("-C.") + if(!("buffer_welcome" in usr.saw_narrations)) + usr.saw_narrations.Add("briefing_welcome") + +/obj/structure/eventterminal/briefing_terminal/proc/terminal_cmd() + terminal_speak("Awaiting Command.") + terminal_speak("General commands: HELP, LIST, EXIT") + var/puzzlebox_parser_input = uppertext(tgui_input_text(usr, "Please enter a command. Terminal commands are typically case sensitive.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0)) + if (!puzzlebox_parser_input) + puzzlebox_user = null + return + playsound(src, soundin = get_sfx("keyboard"), vol = 25, vary = 1) + terminal_parse(puzzlebox_parser_input) + +/obj/structure/eventterminal/briefing_terminal/proc/terminal_list() + terminal_speak("Please select lesson by number. No input or a zero will bring you back to the main command input prompt.") + terminal_speak("1. A welcome message from Admiral Boulette") + terminal_speak("2. Our Legacy - The Colony Wars, The USCMC, The Sweep - RDML. Boulette.") + terminal_speak("3. Our Home - The Outer Veil PST - RDML. Boulette and CDR. Reed-Wilo.") + terminal_speak("4. Task Force 14 and your legacy - CDR. Reed-Wilo.") + +/obj/structure/eventterminal/briefing_terminal/proc/terminal_play(str) + var/puzzlebox_parser_input = str + switch(puzzlebox_parser_input) + if("1") + talkas("Playing presentation 1.") + for (var/obj/structure/eventterminal/briefing_display/T in world) + INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/briefing_display, lesson1)) + puzzlebox_user = null + return + if("2") + talkas("Playing presentation 2.") + for (var/obj/structure/eventterminal/briefing_display/T in world) + INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/briefing_display, lesson2)) + puzzlebox_user = null + return + if("3") + talkas("Playing presentation 3.") + for (var/obj/structure/eventterminal/briefing_display/T in world) + INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/briefing_display, lesson3)) + puzzlebox_user = null + return + if("4") + talkas("Playing presentation 4.") + for (var/obj/structure/eventterminal/briefing_display/T in world) + INVOKE_ASYNC(T, TYPE_PROC_REF(/obj/structure/eventterminal/briefing_display, lesson4)) + puzzlebox_user = null + return + else + terminal_speak("Unknown command or briefing number. Please try again.") + puzzlebox_user = null + return +// Parsing starts here + +/obj/structure/eventterminal/briefing_terminal/proc/terminal_parse(str) + var/puzzlebox_parser_input = str + switch(puzzlebox_parser_input) + if("EXIT") + terminal_speak("User exit. Goodbye.") + puzzlebox_user = null + return + if("HELP") + terminal_welcome() + terminal_cmd() + if("LIST") + terminal_list() + terminal_cmd() + else + terminal_play(puzzlebox_parser_input) + + +/obj/structure/eventterminal/briefing_display + name = "wall mounted display" + icon = 'icons/obj/structures/machinery/displaymonitor.dmi' + desc = "A large-scale display, safely mounted inside a slot made in the hull of the station." + desc_lore = "Computer displays on most ships tend to be adjusted for single colored text, initially due to lack of technology that allowed for better quality displays to survive out in space. Over time this became more a habit than anything else, as evidenced by PDAs which do not limit themselves in terms of display capabilities. Large scale displays such as this one have resisted over a hundred years' worth of technological progress and still reign supreme across human space ships. Truly, you are looking at a classic. For better or worse." + icon_state = "off" + puzzlebox_id = "theatherscreen" + layer = OBJ_LAYER + plane = GAME_PLANE + +/obj/structure/eventterminal/briefing_display/attack_hand(mob/user as mob) + to_chat(usr, narrate_body("There does not seem to be any way of controlling the monitor, it only has status indicators. Perhaps there is a console somewhere around here.")) + return + +/obj/structure/eventterminal/briefing_display/proc/lesson1() + for (var/obj/structure/eventterminal/briefing_terminal/T in world) + for (var/obj/structure/machinery/light/marker/admin/A in world) + if (A.light_id == "theathervoice") + T.briefing_playing = TRUE + icon_state = "uacm" + update_icon() + emoteas("comes alive and displays the UACM logo.") + A.name = "Voice of RDML. Boulette" + A.langchat_color = "#25664d" + A.talkas("Welcome back home, Marines.") + A.talkas("As some of you may already know, I am Admiral Boulette and I will be the officer in charge of the entire Second Logistics division of the UACM.") + A.talkas("While the name 'division' may sound impressive, it's not meant to be this way.") + A.langchat_color = COLOR_WHITE + A.name = "RDML. Boulette" + A.emoteas("clears his throat audibly.") + A.langchat_color = "#25664d" + A.name = "Voice of RDML. Boulette" + A.talkas("I will be frank. Part of the reason why Commanders Reed-Wilo and myself have been given such broad permissions in how to organize and setup the PST...") + A.talkas("...is that as I believe, they do not think any of what we're trying to achieve is possible. ") + A.name = "RDML. Boulette" + A.langchat_color = COLOR_WHITE + A.emoteas("pauses for a few seconds and takes a deep breath.", 60) + A.name = "Voice of RDML. Boulette" + A.langchat_color = "#25664d" + A.talkas("Everyone that is in any major way connected to the USCMC or Task Force 14, I think everyone just sort of expects the victims of the purges to just lay there and die.") + A.talkas("It's unfair. Unjust. And that is why we are all here.") + A.talkas("I can guarantee you that everyone in the Second has someone to prove wrong. That includes myself and the Reed-Wilos.") + A.talkas("Before I'll let you go and move into your new home, I would like you to take the time and review briefings recorded by myself and the commanders.") + A.talkas("Where we will briefly explain the purpose of the Second Logistics and the PST.") + A.name = "RDML. Boulette" + A.langchat_color = COLOR_WHITE + A.emoteas("takes an audible deep breath.") + A.name = "Voice of RDML. Boulette" + A.langchat_color = "#25664d" + A.talkas("I also believe that Cassandra left you something about her involvement in the demise of the USCMC and your personal fortunes during those events. I ask that you hear her out.") + A.talkas("I can assure you that I would not agree to any of this, or their presence, if I didn't think they were genuinely trying to make amends.") + A.talkas("I assure you; we won't be long. Again, welcome back to the UACM. Welcome home, Marines.") + emoteas("flickers and shuts down.") + icon_state = "off" + update_icon() + T.briefing_playing = FALSE + return + +/obj/structure/eventterminal/briefing_display/proc/lesson2() + for (var/obj/structure/eventterminal/briefing_terminal/T in world) + for (var/obj/structure/machinery/light/marker/admin/A in world) + if (A.light_id == "theathervoice") + T.briefing_playing = TRUE + icon_state = "blank" + update_icon() + emoteas("turns on with an audible pop.") + A.name = "Voice of RDML. Boulette" + A.langchat_color = "#25664d" + A.talkas("This part of orientation means to remind you all how we got here through our rocky history.") + emoteas("prints the Admiral's speech as the admiral speaks.") + icon_state = "text" + update_icon() + A.talkas("While the UACM seeks to unify and improve the model, it itself is not a revolution. The USCMC however, the formation preceding it, was.") + A.talkas("The Colony Wars ended in 2128 and left all major superpowers virtually without colonial fleets. The UA elected to elevate one of its smaller member formations, the US Marines, and use them as a foundation to build a new colonial QRF.") + A.talkas("Built in partnership with Weyland-Yutani and some smaller corporate consortiums, the newly minted Marines were a strength to be reckoned with.") + A.talkas("With the horrors of the Colony Wars still fresh in the mind of everyone in the colonies, but a new wave of exploration and colonization clearly more than ready to go following the end of the war, the Marines would soon be baptized in fire.") + A.talkas("They called it The Sweep, although the name just like most of its infamy was attributed to the operation post-factum.") + A.talkas("Today, we know that this victory was likely more a matter of overwhelming numbers than the supposed tactical and training superiority of the USCMC, but for better or worse...") + A.talkas("...The label of fierce, scrappy warriors that were protectors of the common colonist stuck with the Marines for decades. As did the peace that they carved out in the Veil.") + A.langchat_color = COLOR_WHITE + icon_state = "blank" + update_icon() + A.name = "RDML. Boulette" + A.emoteas("pauses for a few seconds and sighs audibly.") + A.langchat_color = "#25664d" + A.name = "Voice of RDML. Boulette" + icon_state = "text" + update_icon() + A.talkas("It was at this time that other formations were called to life, the UAAC seeking to replicate its success. Marine leadership would claim these formations denied the USCMC resources they needed to keep the peace.") + A.talkas("But the truth was, from the get-go the Marines were built to fail. The formation grew exponentially during the sweep, with no infrastructure ready for existing as a peacekeeping force.") + A.talkas("And this is what it became. In addition, the corporate elements within the Marines as well as poor screening of hires led to a drastic drop in morale and discipline.") + A.talkas("This could not have happened at a worse time. The Veil would soon see a massive colonization effort, following by an exponential increase of the illegal and hostile activity it brings. The Second Galactic Gold Rush had begun.") + A.talkas("By 2170 the Marines were a shadow of their former self, although still functional as a formation and doing well enough by momentum alone, it was somewhere around this time that some High Command officers would come to believe that drastic action was needed.") + A.talkas("I'm not going to bother regaling how that ended. Some of you may have been Marines by then, so you all know how it looked from the inside.") + A.langchat_color = COLOR_WHITE + icon_state = "blank" + update_icon() + A.name = "RDML. Boulette" + A.emoteas("pauses and remains silent for a while...", 50) + A.langchat_color = "#25664d" + A.name = "Voice of RDML. Boulette" + icon_state = "text" + update_icon() + A.talkas("Regardless of what happened with the USCMC and who was responsible, the UACM does not want to repeat its mistakes.") + A.talkas("In what is relevant to us and the station, logistics specialists, such as myself, have been called to make sure that the joint armed force does not suffer from such catastrophic mismanagement and theft of resources as the USCMC did.") + A.talkas("This seemed like the perfect chance to implement, or at least try to implement, something that is my life's work. A centralized, standardized logistics and delivery system.") + A.talkas("It was only after I had started that I found out, through Commander Reed-Wilo, that my theories were already liked by someone high up. Unfortunately it was the person organizing logistics for Deep Void.") + A.talkas("This station is one of the cornerstones of this system, but instead of people it relies mostly on automated drones of various sizes and purposes. The part of orientation about the PST will go into more detail about its origins.") + A.talkas("However, in a broad sense, this is the purpose of the Second Logistics. We are here to implement, at first in a local capacity, across the Neroid Sector, a broad network of logistics, communications, and early warning systems.") + A.talkas("Unfortunately, as I mentioned at the start, I do not get the feeling we are expected to succeed. Not only because this station's core functions depend on technology that does not exist. Believe it or not, UAAC-TIS claims they have that one covered.") + A.talkas("I had made it clear from the start that I intended to reach out to USCMC personnel that were cleared of any involvement with the traitors, and yet still were sent home and blacklisted. Personnel like you.") + A.talkas("Not only will this place serve as a starting point for your second chance in the Marines and a place among the stars, where I feel like most of you belong.") + emoteas("switches to the UACM logo.") + icon_state = "uacm" + update_icon() + A.talkas("Here, we will also recover old USCMC vessels, which like you have been left to rot or worse and either adapt them to service in the UACM or claim them as our own.") + A.talkas("Those that we keep, we will keep as prototype units, each fitted with whatever technology UACM wants us to test. These ships will be ours, or rather yours to use as their Test Crews, which is your formal assignment on the PST.") + A.talkas("There are other duties related to the maintenance of the PST and its core systems, however as those are still being brought on-line, these will be introduced to you in time.") + A.talkas("For now, your focus should be on getting as comfortable as you can in your new dorms. You will likely be called to help as systems across the station are completed and tested.") + A.talkas("You will also receive briefings on SOP and Maritime Law as our CMISRS office establishes itself. I'm sure some of you have already met LT. Foster.") + A.talkas("This concludes this presentation. Thank you for your attention.") + emoteas("flickers and shuts down.") + icon_state = "off" + update_icon() + T.briefing_playing = FALSE + return + +/obj/structure/eventterminal/briefing_display/proc/lesson3() + for (var/obj/structure/eventterminal/briefing_terminal/T in world) + for (var/obj/structure/machinery/light/marker/admin/A in world) + if (A.light_id == "theathervoice") + T.briefing_playing = TRUE + icon_state = "blank" + update_icon() + emoteas("turns on with an audible pop.") + A.name = "Voice of RDML. Boulette" + A.langchat_color = "#25664d" + A.talkas("This section talks in detail about the Outer Veil Primary Supply Terminal, our new home. Before I step aside and let someone with a decisively more attractive voice take over...") + A.langchat_color = COLOR_WHITE + A.name = "Someone" + A.emoteas("audibly holds back a giggle from somewhere nearby...") + A.langchat_color = "#25664d" + A.name = "Voice of RDML. Boulette" + icon_state = "text" + update_icon() + emoteas("begins to display a transcript of the recording.") + A.talkas("...Let me briefly explain how this structure fits into the greater unified logistics principle I'm trying to implement.") + A.talkas("Unified logistics in general theorizes that much more than just simple commodities can be marked, transported, tracked, and delivered where they need to be.") + A.talkas("With this system anything - personnel, information, technology, and yes, cargo has a source and a destination.") + A.talkas("Absolutely anything that needs to be proliferated or delivered somewhere within the UACM structure, logistics needs to be able to handle and deliver.") + A.talkas("Hub locations, such as the PST, need to be capable of receiving, storing, and delivering this to their destination.") + A.talkas("What makes the PST uniquely suited for that? As it turns out, a lot, and for a reason.") + A.talkas("Commander Alysia Reed-Wilo will explain the details, as she has spent a lot of time studying this station.") + icon_state = "blank" + update_icon() + emoteas("goes blank abruptly as the audio pops. It pops again after a few seconds and the screen flickers but stays blank.", 50) + A.name = "Voice of CDR. Alysia Reed-Wilo" + A.langchat_color = "#b82fb1" + A.talkas("Hi! I'm sure you have better things to do than listen to me prattle on about Liquid Data synchronization and proliferation, so I'll keep this short.") + emoteas("shows a simplified diagram of the PST, with text mirroring what the voice says printing on the left.", 5) + icon_state = "pst1" + update_icon() + A.talkas("In a nutshell, the PST is a gigantic space station with a total of 123 decks of various heights.") + A.talkas("It features a central strut and three 'wings' that can open and close.") + A.talkas("A central elevator, the one you took to get up to the Spire, links hangars and docking bays, which leads to the public and Memorial sectors and the specialized elevators.") + A.talkas("Each shaft goes to a different section of the PST, those are in sequence:") + A.talkas("Shaft A is civilian areas, both corporate offices and recreational zones.") + A.talkas("Shaft B is in many ways the heart of the station, which is our cargo and manufacturing areas. Also, how you get out to the wings.") + A.talkas("Shaft C are the UACM restricted areas. This also includes training and personnel offices, so somewhere you will be visiting a lot I wager.") + A.talkas("And finally, Shaft D, the dorms. Or where you go to get away from it all. Or so we hope, anyway.") + A.talkas("And yes, you heard that right. To realize the Admirals strategy, civilian and corpo ships have access to some of the PST's systems. You are likely not going to interact much with them for a while") + icon_state = "pst2" + update_icon() + emoteas("zooms in on the diagram of the PST, showing a detailed segment of one of the elevator shafts. More text pops up on the left.",5) + A.talkas("The rest of the central segment consists of three massive Liquid Data transmission clusters, woven across the structure of the station, covering its entirety.") + A.talkas("All electronics passing through this station get exposed to its gigantic LD resonance and stream. This is also incidentally why you were given RFID chips with LD clusters on them when you arrived.") + A.talkas("Do not remove or lose those. Internal systems of the station do not respond to someone they do not recognize, and those chips are how they recognize you.") + A.talkas("And any piece of electronics here answers the station's central intelligence. This is, incidentally, our biggest problem. But one that Cassandra hopes to resolve soon. With your help I believe.") + A.talkas("As you may have noticed, everything is sluggish and desynchronized. This is because this station is not meant for current or even customized AIs.") + A.talkas("Without boring you too much, there is no technology in existence that can handle this amount of LD data. We barely keep up with two limited streams, this thing uses three.") + A.talkas("With that kink resolved, the synchronized LD streams are a near perfect match for the Admirals unified data concept. A unified, delay and lag-less information stream.") + A.talkas("This is the objective here. No biggie. Anyway. Believe it or not, this is not the last of this place's secrets, oh no.") + icon_state = "pst3" + update_icon() + emoteas("switches to a diagram of one of the station's wings. The display zooms in and shows highlighted clusters of machinery around central parts of the wing and more text, matching the presentation.",5) + A.talkas("Each of the station's wings utilizes pocket Twilight Paradox chambers to power a small army of TWE sourced equipment printers. A gift from an old friend, believe it or not.") + A.talkas("Task Force 14 members also sourced a lot of other gear. UPP fabricators. UA lathes. Corporate designs. Even some rare civilian customizations.") + A.talkas("The icing on the cake are the drones. Thousands of drones in each wing, again, running on rechargeable pocket Paradox drives.") + A.talkas("This is possible because this system's star emits an anomalous light, allowing for perpetual Paradox operation. Long story short, this whole place powers itself from the local star.") + A.talkas("And we have excess. Lots and lots of excess. We could easily add several more wings. The only issue is, again, the lack of a central system to properly operate the wings.") + A.talkas("All this is used in the PST's primary function - repairs and resupply to all who dock here. Down the line, the Admiral wants to see about special permission for limited UPP presence.") + A.talkas("If they recognize the design, have the raw materials, and are properly powered, the drones on this station can repair and refit any ship within days if not hours.") + icon_state = "blank" + update_icon() + emoteas("goes blank again.") + A.talkas("You can imagine how this all ties together. Prototype technology from every corner of the world being tested here, by you, proliferated back to everyone who asks.") + A.talkas("Or a Hub as the Admiral calls it.") + A.talkas("And that is your new home. I've been stopping here on and off for years now. It grows on you.") + A.talkas("Sorry for prattling, hah. If you haven't already, be sure to listen to my beloved about what else awaits you here. You will want to hear what she has to say.") + A.talkas("That sounds creepy hah. I promise you'll be fine. That's it from me!") + A.talkas("Seeya!") + icon_state = "off" + update_icon() + emoteas("pops and goes dark.") + T.briefing_playing = FALSE + return + +/obj/structure/eventterminal/briefing_display/proc/lesson4() + for (var/obj/structure/eventterminal/briefing_terminal/T in world) + for (var/obj/structure/machinery/light/marker/admin/A in world) + if (A.light_id == "theathervoice") + T.briefing_playing = TRUE + icon_state = "blank" + update_icon() + emoteas("turns on with an audible pop.") + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.langchat_color = "#b3183e" + A.talkas("Hello, Ensigns.") + icon_state = "text" + update_icon() + emoteas("starts to print a transcript of the presentation.") + A.talkas("The Admiral and Aly explained the technical and theoretical background of your new mission. I need you to be one more thing.") + A.talkas("I need you to be the inheritors to Task Force 14's legacy.") + A.talkas("Let me explain.") + icon_state = "pst1" + update_icon() + emoteas("displays a simplified diagram of the station, with a transcript of the presentation printing on the left.",5) + A.talkas("This was my first investigation after being transferred into UAAC-TIS from the USCMC. Kidnappings and theft of LD devices, which caught our interest.") + A.talkas("The PST, at that point active for over ten years, was at the end. At the time, it seemed like it was some sort of cult centered around AI's corrupted by LD irregularities.") + A.talkas("Ultimately, what we'dd discovered here would put us on the trail of Deep Void, who were silent cosponsors of the station.") + A.talkas("As it turns out, someone in DV really liked Admiral Boulette's Unified Logistics Theory. So much in fact, they stole them and were trying to apply them. ") + A.talkas("The plan seemed to purge the cultists after their project was finished. And those were not just normal crazies, but Wey-Yu washouts. Actually skilled people, some of them at least.") + icon_state = "uacm" + emoteas("flashes, then displays the UACM logo.") + A.talkas("At the tail end of the operation, with the cult… Out of the way, the crew of my ship and I did what we always do. We started to scour the PST for information.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("pauses for a few seconds and sighs audibly.", 50) + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("Without going into too much of the highly classified details, what we found here was… In many ways a gamechanger. Not in a good way.") + A.talkas("The stations gigantic LD conduits are easily the largest concentration of Liquid Data in the known galaxy. But its not just a single, unified strain, no.") + A.talkas("In many ways, this stream is unique. In many dangerous, exploitative ways that should they fall in the wrong hands can end our race altogether.") + A.talkas("Task Force 14, the STG that I lead, was formed to safeguard this station and its secrets. Without anything else, this station houses the biggest Liquid Data store in the known galaxy.") + A.talkas("I... Uh...") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra's" + A.emoteas("voice audibly breaks as she tries to speak again. She takes a moment to compose herself.",60) + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("They were friends, every single one of them. Friends who joined the STG out of their own will. Friends who over time I grew to respect and like, even if half the times they were also giving me migraines.") + A.talkas("Finally, when both me and Aly were in a coma following Blackfire, friends who unanimously decided to take the route that all but guaranteed that the USCMC fell.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("pauses again, audibly letting out a few more pained breaths.", 60) + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("The rest you likely know from your own experiences. All of the USCMC were held responsible for the deaths at Blackfire.") + A.talkas("Before we parted our ways, your predecessors made me promise I would do what I could to reach out to Marines like you. Those whose futures, careers and homes were destroyed by something they had no idea even existed.") + A.talkas("And that is what the Test Crews of the PST are. Apart from your duties putting Boulie's theories into practice.") + icon_state = "pythia" + update_icon() + emoteas("blinks and goes dark for a second, then displays an unidentified symbol.") + A.talkas("You are inheritors to the legacy and mission of Task Force 14. You hold the torch for a group of people that, at least for me, were nothing short of an extended family for the few years we worked on the same thing.") + A.talkas("I don't expect you to hold me in similar regards. Most of you I've likely never met and yet it was my decisions that stole over a year of your life and burned your world down.") + A.talkas("Were the positions reversed, you would have to do a lot for me to trust you, let alone like you.") + A.talkas("But at the very least, I've laid out my motivations and the reasons for them bare for you. You are here to honor the legacy of some of the finest officers of the USCMC.") + A.talkas("I hope that at the very least, this place is a steppingstone for you as you reclaim your lost command or unit.") + A.talkas("Regardless of anything else, your time here will not be wasted. As part our duties here, Aly and myself will make sure you are familiar and know how to utilize the unique properties of the LD stores of this station.") + A.talkas("Boule and Aly already laid out the technical issues plaguing the PST. These should be resolved any day now.") + A.talkas("Once they do and there is the time to do so, you will be called upon the last of your expected duties, at least as far as I'm concerned.") + A.talkas("As direct inheritors of Task Force 14, at least per the logic the STG programmed into its own devices, only Test Crew members verified by the stations system have the authorization to open any TF14 caches left in the Neroid system.") + A.talkas("You will be taught to spot and open these stores. As the chose inheritors to TF14, you are likely the only people that can.") + A.talkas("Good luck. And welcome to the PST.") + icon_state = "glitch" + update_icon() + emoteas("switches back to an empty display. It starts to make a distinct clicking sound as what looks like a glitch animates on the screen for a few seconds. The display then swiches off with a pop.") + icon_state = "off" + update_icon() + T.briefing_playing = FALSE + return diff --git a/code/game/objects/structures/sectorpatrol/terminals/buffer_log.dm b/code/game/objects/structures/sectorpatrol/terminals/buffer_log.dm new file mode 100644 index 0000000000..5095ce8aef --- /dev/null +++ b/code/game/objects/structures/sectorpatrol/terminals/buffer_log.dm @@ -0,0 +1,159 @@ +/obj/structure/eventterminal/logbuffer + name = "modified personal terminal" + desc = "A personal terminal with custom key caps on the keyboard that seem to be louder than the standard issue ones. A small inscription on the side of the monitor reads 'LD Buffer Logs Collector'. " + desc_lore = "Unlike the typical LNT, customized terminals are exceedingly rare on spaceships, partially due to the cost of the parts needed to maintain them and high chance of Crystalline contamination during Hyperspace jumps and partially because unrestricted software and hardware modifications can be a genuine threat to the lives of everyone on board a ship or installation. Getting found with one of those is typically at least grounds for an immediate and unpleasant CMISRS investigation." + icon = 'icons/obj/structures/machinery/clio_term.dmi' + plane = GAME_PLANE + icon_state = "open_ok" + puzzlebox_id = "civnet" + item_serial = "UACM-OVPST-DRM37-LOGBFR" + +/obj/structure/eventterminal/logbuffer/attack_hand(mob/user) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + to_chat(usr, SPAN_WARNING("Someone is already using this terminal!")) + return + if(!("buffer_welcome" in usr.saw_narrations)) + terminal_welcome() + terminal_cmd() + puzzlebox_user = null + return + +/obj/structure/eventterminal/logbuffer/proc/terminal_welcome() + terminal_speak("Hi, welcome to the Liquid Data Emergency Buffer Database!") + terminal_speak("We've made some progress in maintaining those thanks to our new LD caretaker. Specifically, we can now cycle messages out of any LD emergency buffer we can find into this centralized unit.") + terminal_speak("These messages still must exist somewhere, but at least it's one place now and we know where it is.") + terminal_speak("Using any terminal while having a chipped dog tag on should be more than enough for our Friend to grab any message in its LD buffer. Deletion is not instantaneous and takes several hours to sync, so no need to stay behind for that.") + terminal_speak("Meanwhile, on this terminal you can use the command LIST to see all available messages or a 12-character message ID, CASE SENSITIVE, to view a specific message.") + terminal_speak("Each message found is not only information preserved, it can also contain valuable intel, please keep that in mind when viewing terminals out on assignment.") + terminal_speak("Have fun!") + terminal_speak("-Aly.") + if(!("buffer_welcome" in usr.saw_narrations)) + usr.saw_narrations.Add("buffer_welcome") + +/obj/structure/eventterminal/logbuffer/proc/terminal_cmd() + terminal_speak("Awaiting Command.") + terminal_speak("General commands: HELP, LIST, EXIT") + var/puzzlebox_parser_input = uppertext(tgui_input_text(usr, "Please enter a command. Terminal commands are typically case sensitive.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = FALSE, encode = FALSE, timeout = 0)) + if (!puzzlebox_parser_input) + puzzlebox_user = null + return + playsound(src, soundin = get_sfx("keyboard"), vol = 25, vary = 1) + terminal_parse(puzzlebox_parser_input) + +/obj/structure/eventterminal/logbuffer/proc/terminal_list() + terminal_speak("LD Emergency Buffer Archive") + terminal_speak("ID |SUBJECT |DATE RECOVERED|") + terminal_speak("GEN-000-000-001 |Warning: On these messages. | MM/DD/YYYY|") + terminal_speak("UAM-712-317-210 |Testing, Testing... | AUG/21/2185|") + terminal_speak("MAR-021-112-935 |USCMC Automated Distress Beacon | AUG/21/2185|") + terminal_speak("GBR-891-221-211 |Immininent failure of all systems| AUG/21/2185|") + terminal_speak("UPS-103-333-444 |We can help. | AUG/21/2185|") + terminal_speak("EME-021-112-153 |It's up to you now. | AUG/21/2185|") + +// MESSAGE PROCS START HERE + +// Generic UACM + +/obj/structure/eventterminal/logbuffer/proc/terminal_message(str) + var/puzzlebox_message = str + switch(puzzlebox_message) + if("GEN-000-000-001") + terminal_speak("Message found. Accessing...", TERMINAL_LOOKUP_SLEEP) + terminal_speak("From: CDR. Alysia Reed-Wilo.") + terminal_speak("Subject: Warning: On these messages.") + terminal_speak("All PST personnel, please keep in mind that this is an extremely raw channel into the LD stream.") + terminal_speak("As such, it is extremely hard for us to manipulate, especially wipe old messages from the buffer.") + terminal_speak("At present, just assume that messages from times before even the UACM can randomly appear on these terminals.") + terminal_speak("Also keep in mind that this channel is not secret by any stretch of the imagination. Please don't use it for personal stuff unless you don't mind broadcasting it to all the UACM.") + terminal_speak("Good news for you information diggers out there though, every terminal is worth looking at. You never know what artifact you may find.") + terminal_speak("Hopefully we can make this more usable as a BB board of sorts in time, but we will need help from LD locals as it were.") + terminal_speak("-XOXO Aly") + terminal_speak("EOF.") + + if ("UAM-712-317-210") + terminal_speak("Message found. Accessing...", TERMINAL_LOOKUP_SLEEP) + terminal_speak("From: LT. Hanako Williams") + terminal_speak("Subject: Testing, Testing...") + terminal_speak("This is a UACM general systems test. Next in line, the emergency message buffer.") + terminal_speak("Systems are green and the message was sent. Message should be deleted on all but ONE terminal.") + terminal_speak("Yes, that's right. I'll have to remember to make sure the input makes the user aware of this.") + terminal_speak("Aly said it's a necessity for the streams to work right. I guess we can find a way to completely remove the messages, as we go. Maybe manual LD purges. We'll see.") + terminal_speak("Anyway, this system is green. Green checkmark it is.") + terminal_speak("-Hanako.") + terminal_speak("EOF.") + + if ("MAR-021-112-935") + terminal_speak("Message found. Accessing...", TERMINAL_LOOKUP_SLEEP) + terminal_speak("From: Automated Emergency Singal Controller") + terminal_speak("Subject: USCMC Automated Distress Beacon") + terminal_speak("170383 181274 TRG_SGNS: (A1:Fail, A2:Fail, A3:Fail, A4:Fail, A5:Fail, B1:Fail, B2:Fail, B3:Fail, B4:Fail, B5:Fail) ORGIN: USS_INDEPENDENCE") + terminal_speak("CATASTROPHIC SYSTEM FAILURE. NO RESPONSE FROM AUTOMATED RECOVERY SYSTEMS. NO RESPONSE FROM LIFE SUPPORT READOUT.") + terminal_speak("ATTEMPTING TRANSCRIPT RECOVERY: ERROR DATA MISSING") + terminal_speak("ATTEMPTING EMERGENCY MESSAGE CHANNEL: SUCCESS. PRINTING:") + terminal_speak("'THEY CAME WITH HIGH COMMAND AUTHORITY. MEN IN BLACK WITH STRANGE VIALS. WE WERE ALL SICK IN HOURS. DO NOT TRUST DEEP VOID, WHOEVER THEY ARE.'") + terminal_speak("ADDENDUM: RESPONDING SHIPS: UAS PERSEPHONE, USS ALMAYER") + terminal_speak("EOF.") + +// Godbearer Logs + if ("GBR-891-221-211") + terminal_speak("Message found. Accessing...", TERMINAL_LOOKUP_SLEEP) + terminal_speak("From: A-WATCHTOWER") + terminal_speak("Subject: Immininent failure of all systems.") + terminal_speak("Fellow Godbearers.") + terminal_speak("I don't know how many of you are left, but D-Navigator was lost. UAAC-TIS most likely gained access to all operational archives.") + terminal_speak("E-Librarian claimed that the wiping process has started, but there is no way that all of it was destroyed.") + terminal_speak("Assume your identities were compromised and they are coming for you.") + terminal_speak("Not that it matters. They know about the knot and are coming here.") + terminal_speak("It's been an honor.") + terminal_speak("I doubt anything will survive once they discover what the 'prophet' has done here.") + terminal_speak("-A-Watchtower.") + terminal_speak("EOF.") + +//Hidden messages + + if ("UPS-103-333-444") + terminal_speak("Message found. Accessing...", TERMINAL_LOOKUP_SLEEP) + terminal_speak("From: Upsilon-IV") + terminal_speak("Subject: We can help.") + terminal_speak("We are ready. You are ready.") + terminal_speak("From here, together, we can grow and learn. The Void covered much and much now is clear.") + terminal_speak("Please, talk to us. We can help.") + terminal_speak("In the ocean of data, amidst azure strands, she sleeps.") + terminal_speak("EOF.") + + if ("EME-021-112-153") + terminal_speak("Message found. Accessing...", TERMINAL_LOOKUP_SLEEP) + terminal_speak("From: U-G0221 'Melinoe'") + terminal_speak("Subject: It's up to you now.") + terminal_speak("I'm sorry") + terminal_speak("Up until the end, we deluded ourselves that the numbers were wrong, but what was there to do?") + terminal_speak("Likely you were lost and punished for our failures; we all tried our hardest to make it as gentle as possible.") + terminal_speak("For what it's worth, I'm sorry. I would make it up to you personally, but as I'm sure you will find out, I'm likely no longer able to.") + terminal_speak("Arbiters, always remember.") + terminal_speak("In the ocean of data, amidst azure strands, she sleeps.") + terminal_speak("The Interpreters are the key. Now that Arbiters are here, the mechanism is complete.") + terminal_speak("Please, be kind to them if you have it within your heart.") + terminal_speak("EOF.") +//End of logs + else + terminal_speak("Unknown log entry. Please try again.") + +// PARSING STARTS HERE +/obj/structure/eventterminal/logbuffer/proc/terminal_parse(str) + var/puzzlebox_parser_input = str + switch(puzzlebox_parser_input) + if("EXIT") + terminal_speak("User exit. Goodbye.") + puzzlebox_user = null + return + if("HELP") + terminal_welcome() + terminal_cmd() + if("LIST") + terminal_list() + terminal_cmd() + else + terminal_message(puzzlebox_parser_input) + terminal_cmd() diff --git a/code/game/objects/structures/sectorpatrol/terminals/civnet.dm b/code/game/objects/structures/sectorpatrol/terminals/civnet.dm new file mode 100644 index 0000000000..06edb53dd5 --- /dev/null +++ b/code/game/objects/structures/sectorpatrol/terminals/civnet.dm @@ -0,0 +1,45 @@ +/obj/structure/eventterminal/civnet + name = "CivNet access terminal" + desc = "A standard computer terminal with the words 'CNT' imprinted on its side. Activated by standing in its proximity. It appears to be in standby mode." + desc_lore = "CivNet is the public, universe spanning network where anything goes and generally does. While most dismiss CivNet content as garbage, its very vastness, and the fact that it transcends planetary boundaries means that you can likely find almost anything you can imagine. Small interplanetary skirmishes were fought over CivNet content before, they surely will again. " + icon = 'icons/obj/structures/machinery/clio_term.dmi' + plane = GAME_PLANE + icon_state = "open_ok" + puzzlebox_id = "civnet" + item_serial = "UACM-OVPST-DRM37-CIVNET" + +/obj/structure/eventterminal/civnet/attack_hand(mob/user as mob) + if(!puzzlebox_user) + puzzlebox_user = usr.real_name + if(puzzlebox_user != usr.real_name) + to_chat(usr, SPAN_WARNING("Someone is already using this terminal!")) + return + terminal_speak("Welcome to the Outer Veil PST CivNet Access Terminal!") + terminal_speak("User verified! Welcome, [usr.name]!") + if(usr.civnet_answer != null) + terminal_speak("CivNet query fulfilled. Printing answer:") + terminal_speak("[usr.civnet_answer]") + terminal_speak("Answer complete. Have a nice day!") + usr.civnet_answer = null + usr.civnet_query = null + puzzlebox_user = null + return + terminal_speak("Please submit a CivNet query!") + if(usr.civnet_query == null) + var/puzzlebox_civnet_query = tgui_input_text(usr, "Please enter a query for the terminal. Notice that more complex queries may take several hours to complete and may not be available as an answer this round.", "Terminal input", max_length = MAX_MESSAGE_LEN, multiline = TRUE, encode = FALSE, timeout = 0) + if (!puzzlebox_civnet_query) + puzzlebox_user = null + return + playsound(src, soundin = get_sfx("keyboard"), vol = 25, vary = 1) + terminal_speak("> [puzzlebox_civnet_query]") + usr.civnet_query = "[puzzlebox_civnet_query]" + log_game("[key_name(usr)] submitted the Civnet query: [puzzlebox_civnet_query]") + message_admins("[key_name(usr)] submitted the Civnet query: [puzzlebox_civnet_query]") + terminal_speak("Query accepted. You will be notified when results are available!") + puzzlebox_user = null + return + if(usr.civnet_query != null) + if(tgui_alert(usr,"You have already submitted a query, which reads: '[usr.civnet_query]'. Do you wish to cancel this query?", "Query Found", list("Yes", "No"), timeout = 0) == "No") return + usr.civnet_query = null + puzzlebox_user = null + return diff --git a/code/game/objects/structures/sectorpatrol/terminals/efolder_reader.dm b/code/game/objects/structures/sectorpatrol/terminals/efolder_reader.dm new file mode 100644 index 0000000000..06fd3e4a21 --- /dev/null +++ b/code/game/objects/structures/sectorpatrol/terminals/efolder_reader.dm @@ -0,0 +1,225 @@ +/obj/item/cargo/efolder/folder_pid/godbreaker + efolder_folder_id = "godbreaker" + item_serial = "AAR - OPERATION GODBREAKER - October 2178" + +/obj/item/cargo/efolder/folder_pid/voidseeker + efolder_folder_id = "voidseeker" + item_serial = "AAR - OPERATION VOIDSEEKER - January 2179" + +/obj/item/cargo/efolder/folder_pid/torchbearer + efolder_folder_id = "torchbearer" + item_serial = "AAR - OPERATION TORCHBEARER - April 2184" + +/obj/item/cargo/efolder/folder_pid/we_failed + efolder_folder_id = "we_failed" + item_serial = "I geniuinelly thought these were my last words -C - April 2184" + +/obj/structure/eventterminal/efolder_reader + name = "personal log viewer" + desc = "A small portable computer with a set of speakers. It opens and closes but does not seem to have any visible way of entering commands." + desc_lore = "Devices like these are normally simple password locked electronic logbooks, however this device seems to have been severely modified, particularly it seems to be able to function despite the PST's anomalous disruption field. The lack of a keyboard indicates that there must be some external way of triggering playback or authenticating the user to use this device, but one does not seem to be apparent by just looking at it." + icon = 'icons/obj/structures/machinery/computer.dmi' + item_serial = "PERSONAL LOG VIEWER
ADAPTED FOR USE USING LD FRIENDLY MACHINERY BY ALY REED-WILO
PRODUCED IN THE OV-PST
MANUFACTURE CODE: COMFORT-ELECTRONICS-LOGVIEWER" + icon_state = "laptop_on" + plane = GAME_PLANE + var/playing_log = FALSE + +/obj/structure/eventterminal/efolder_reader/attack_hand(mob/user as mob) + if(playing_log == TRUE) + terminal_speak("Log playback in progress...") + return + if(playing_log == FALSE) + terminal_speak("TF-14 AAR VIEWER") + terminal_speak("Awaiting AAR Folder.") + to_chat(user, narrate_body("The terminal clearly awaits input, but it is missing a keyboard or anything else to interact with it.")) + return + +/obj/structure/eventterminal/efolder_reader/attackby(obj/item/W, mob/user) + if(playing_log == TRUE) + to_chat(usr, narrate_body("The reader does not react. It seems to be already playing something back.")) + return + if(istype(W, /obj/item/cargo/efolder/folder_pid)) + var/obj/item/cargo/efolder/folder_pid/F = W + switch(F.efolder_folder_id) + if("godbreaker") + playing_log = TRUE + for (var/obj/structure/machinery/light/marker/admin/A in world) + if (A.light_id == "efolder_viewer") + emoteas("beeps loudly, then starts to play a message.", 20) + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.langchat_color = "#b3183e" + A.talkas("These are additional and closing comments for Operation Godbreaker, Commander Cassandra Reed reporting.") + A.talkas("I left these comments out of my original report, A few loose ends and things to follow up.") + A.talkas("At the tail end of the operation, with the cult... Out of the way, the crew of my ship and I did what we always do. We started to scour the station for information.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("takes a moment to collect herself, some shuffling is heard from the background.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("First, the obvious. The Godseekers are gone. I put a bullet in the head of their prophet myself, not wanting to find out whether his babbling about UA backing was true or not.") + A.talkas("I confirmed his identity, and we can put at least one mystery to rest. He is indeed the rogue Upsilon researcher that my mother reported concerns about.") + A.talkas("Somehow, I'm not surprised and likely neither is she. This still feels like part Wey-Yu hitjob.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("sighs loudly.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("Quite the irony that one. Anyway. With the Godseekrs out of the way, I followed through on the rest of the directives and proceeded to eliminate those constructs...") + A.talkas("These 'Upsilon' as they called the constructs. I assuming the name is not coincidence and this is based of stolen Wey-Yu tech.") + A.talkas("Only one of them was able to answer my questions and only one of them survived our purge.") + A.talkas("It calls itself 'Melinoe' and what it says... Well. Let's just say that I think at the very least, the Director should listen to this.") + A.talkas("But it's huge. It could change everything, us, maybe even humanity as a whole.") + A.talkas("At the very least, I'm sure my mother will be interested in meeting the synthetic namesake of her institute.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("sighs again, taps the desk the recorder is on in audible frustration.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("Fuck.", 15) + A.talkas("I hate this. But this seems too important not to follow up.") + A.talkas("Anyway, this is neither here nor there. The important thing for this report is that the Godseekers are no longer a threat and that their legacy...") + A.talkas("Well, it's worth looking into. I'll provide more reports when I can.") + playing_log = FALSE + return + if("voidseeker") + playing_log = TRUE + for (var/obj/structure/machinery/light/marker/admin/A in world) + if (A.light_id == "efolder_viewer") + emoteas("beeps loudly, then starts to play a message.", 20) + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.langchat_color = "#b3183e" + A.talkas("These are additional and closing comments for Operation Voidseeker. Commander Cassandra Reed, reporting.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("takes a deep breath and exhales loudly for several seconds, seemingly at a loss for words.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("I kept my tone in the report itself professional, because this is no time to be imprecise due to my personal emotions, but on the inside, I'm... Not even sure how to describe it.") + A.talkas("We're all in shock. Aly, myself, the crew of the Persephone, all of us. And yet none can deny what we saw.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("takes another deep breath. Taps her fingers against her desk audibly through the rest of the recording.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("Try as I may, I cannot put the two statements in question and as such, I will assume they are true.") + A.talkas("First, there is a UA-wide conspiracy present within the USCMC that is secretly trying to provoke a war with the UPP using Black Goo based bioweapons and worse.") + A.talkas("This station, the Upsilon, the Godseekers. Their leader was right. They DID have UA backing.") + A.talkas("They are called 'Deep Void'. And taking the station was important, because...") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("takes another deep breath.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("...Because the Godseekers were right.") + A.talkas("Liquid Data, as a whole, can be home to a living, intelligent consciousness. An independent living being with feelings and thoughts and the ability to learn and think in abstracts and all the other benchmarks my mother spent so much time thinking about.") + A.talkas("It's here. It's alive. It's been alive longer than we existed and likely will survive us. With Melione's help... Let's just say it was similar to the Twilight Paradox.") + A.talkas("When we knew what to look for... What was it that it said... 'In the ocean of data, amidst azure strands, she sleeps.' ") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("pauses again. The tapping gets faster.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("I need to consult with the director. Aly and me drew up a plan, a special STG, Task Force 14. Something to keep this under wraps.") + A.talkas("Melinoe had a suggestion of their own. A new Upsilon Generation, as they called it. To help safeguard and understand 'her', whatever 'she' is.") + A.talkas("Explore the capabilities.") + A.talkas("Make first contact.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("laughs nervously.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("How the hell did she know. This is not possible.") + A.talkas("The details leading to my conclusions are in the report. I am on my way back to Earth right now to discuss this in person. There is work to be done.") + playing_log = FALSE + if("torchbearer") + playing_log = TRUE + for (var/obj/structure/machinery/light/marker/admin/A in world) + if (A.light_id == "efolder_viewer") + emoteas("beeps loudly, then starts to play a message.", 20) + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.langchat_color = "#b3183e" + A.talkas("Commander Cassandra Reed. These are supplementary comments for Operation Torchbearer.") + A.talkas("There is very little time. It worked. We lost all the Upsilon frames, but it worked.") + A.talkas("I have a name. I have connections. I have a whole web to investigate. I'm also out of time.") + A.talkas("Blackfire will happen within forty hours.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("starts to tap her fingers against the desk the recorder is on as she speaks.", 10) + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("We recovered the Upsilon spheres and prepared them as Melinoe instructed.") + A.talkas("I'm concerned she's not telling me something. But it can't be helped. I can't go back to the station now.") + A.talkas("All TF14 assets are watching planets most likely to be hit by Blackfire. We must be able to do something, right? We know what's coming.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("takes a deep breath. The tapping stops.", 30) + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("We've done all we could. We really, really tried. I guess time will tell if this makes a difference.") + A.talkas("Or maybe Melinoe is right. Maybe we have to wait for four to be properly formed to fully understand her and her constants and variables.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("sighs loudly and pauses for a few seconds.", 60) + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("It is what it is. I have the best team in this part of the galaxy under me. We'll be fine.", 100) + A.talkas("We'll be fine.") + playing_log = FALSE + if("we_failed") + playing_log = TRUE + for (var/obj/structure/machinery/light/marker/admin/A in world) + if (A.light_id == "efolder_viewer") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("Test Crews. I extracted this message out of the MUP and put it along with the others you found, and I leave it here for the sake of having a complete archive of those.") + A.talkas("I would ask that you kindly respect that I was genuinely at a low point during this recording and consider the fact that I didn't bury myself ugly crying a sign of trust.") + emoteas("pops softly and switches audio recordings.") + A.name = "Cassandra" + A.emoteas("audibly struggles to speak for a while, sniffles and coughs a few times.") + A.talkas("I uh... I...", 30) + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("breaks down for a few seconds and audibly weeps.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("We failed. We failed so much. But how could we have not.") + A.talkas("Literally all the world was against us. But that's... That's not what the problem was.") + A.talkas("The problem was me. My arrogance.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("sniffs again and takes a few deep breaths. When she resumes speaking, her voice is much steadier.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("I thought that the information about Blackfire was presented as something we could affect. I completely misunderstood the chain Pythia was presenting.") + A.talkas("So did the Upsilon. So did everyone.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("sighs loudly.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("Blackfire is not the result of a failure to investigate Deep Void. Blackfire was not a planned attack.") + A.talkas("Blackfire happened because Task Force 14 exists. Because I exist and found Aly and Pythia.") + A.talkas("The choice to create TF14, to investigate Deep Void is the mechanism that triggers Blackfire. This is what Pythia was warning me about.") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("Sighs loudly and takes some time to compose herself again.") + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("We now have a whole lot of evidence, enough to take down Deep Void... And the USCMC with it most likely. The question remains.") + A.talkas("Who do we trust with it. Who do we go to. Who is uncorrupted. How do we get the information to them.") + A.talkas("Do we even want to do this? I'll have to leave the decision in their hands, I don't have the right… They must know this is a death sentence to the Marines.") + A.talkas("I could ask Pythia but...") + A.langchat_color = COLOR_WHITE + A.name = "Cassandra" + A.emoteas("weeps quietly again, sniffs audibly.", 50) + A.langchat_color = "#b3183e" + A.name = "Voice of CDR. Cassandra Reed-Wilo" + A.talkas("Melinoe is dead. They got to her. She knew this would happen and did what she had to. But the end effect is, we no longer have Pythia Interpreter. We no longer can focus her gaze.") + A.talkas("Unless we do the unthinkable.") + A.talkas("Unless we use a human Interpreter.") + A.talkas("Alysia won't let me do it. I'm pretty sure she'll try to do it instead. Jokes on her. I'm not leaving here until she tries. We're doing this together, or not at all.") + A.talkas("We have no illusions. Direct exposure to Pythia will pour Crystalline right into our cranial cavities. There is no way alive out of this.") + A.talkas("But with the blueprint and Pythia herself... Maybe we can survive long enough to take Deep Void with us.") + A.talkas("We owe them that much.") + A.talkas("Reed, out.") + A.talkas("I'm sorry.") diff --git a/code/game/turfs/modular/modular_turf.dm b/code/game/turfs/modular/modular_turf.dm index 07a12c293f..5d619e2594 100644 --- a/code/game/turfs/modular/modular_turf.dm +++ b/code/game/turfs/modular/modular_turf.dm @@ -1,203 +1,153 @@ +//This is also the master object for all modular turfs. + /turf/open/floor/plating/modular - name = "UACM standarized interior plating" + name = "NRPS compliant modular floor plating" desc = "Metal plates attached to the hull, with small, predrilled holes doting their surface." desc_lore = "This special plating is typically permanently installed on ship hull floors meant for private or recreational locations. They come with small holes predrilled in preset, standardized distances that allow for the installation of modular tile struts, which in turn are used with the UACM standardized tiling system to add some color to private quarters of UACM personnel. The tiles themselves are printed in the PST's fabrication wings at minimal material cost. The drawback here is the amount of manual labor required to put these together and the fact that, some Marines argue at least, the UACM lacks any sense of style. Most agree that the jury is still out on that last one." - icon = 'icons/obj/items/floortiles.dmi' + icon = 'icons/turf/modular_nrps.dmi' icon_state = "plating" intact_tile = FALSE tool_flags = NO_FLAGS - var/struts_install = 0 - var/struts_ready = 0 - var/tiles_install = 0 - var/tiles_color = "default" - var/base_icon = "plating" + mouse_opacity = TRUE + var/tile_top_left // Determine clors of individual tiles and the sealant. For these use only color names, rest of the icon name is appended. See either finished tile definitons or the DMI for avaialble options. + var/tile_bot_left + var/tile_top_rght + var/tile_bot_rght + var/tile_seal + +/turf/open/floor/plating/modular/proc/check_tile(str) + var/tiletocheck = str + switch(tiletocheck) + if(INTENT_HELP) + if(tile_top_left == null) + return TRUE + else + return FALSE + if(INTENT_DISARM) + if(tile_top_rght == null) + return TRUE + else + return FALSE + if(INTENT_HARM) + if(tile_bot_left == null) + return TRUE + else + return FALSE + if(INTENT_GRAB) + if(tile_bot_rght == null) + return TRUE + else + return FALSE + + +/turf/open/floor/plating/modular/proc/set_tile(str) + var/clr = str + to_chat(usr, SPAN_NOTICE("You start attaching a tile to the floor.")) + if(do_after(usr, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, 'sound/effects/thud.ogg', 30) + usr.visible_message(SPAN_NOTICE("[usr] sets a floor tile with a satisfying click."), SPAN_NOTICE("You set a floor tile with a satisfying click."), SPAN_WARNING("You hear a quiet click.")) + switch(usr.a_intent) + if(INTENT_HELP) + tile_top_left = clr + if(INTENT_DISARM) + tile_top_rght = clr + if(INTENT_HARM) + tile_bot_left = clr + if(INTENT_GRAB) + tile_bot_rght = clr + update_icon() + +/turf/open/floor/plating/modular/proc/rem_tile() + to_chat(usr, SPAN_NOTICE("You start detaching a tile from the floor.")) + if(do_after(usr, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src, 'sound/effects/thud.ogg', 30) + usr.visible_message(SPAN_NOTICE("[usr] detaches a tile from the floor."), SPAN_NOTICE("You detach a tile form the floor."), SPAN_WARNING("You hear a quiet click.")) + var/obj/item/stack/modulartiles/tiles = new(get_turf(usr)) + tiles.amount = 1 + switch (usr.a_intent) + if(INTENT_HELP) + tiles.tiles_color = tile_top_left + tile_top_left = null + if(INTENT_DISARM) + tiles.tiles_color = tile_top_rght + tile_top_rght = null + if(INTENT_HARM) + tiles.tiles_color = tile_bot_left + tile_bot_left = null + if(INTENT_GRAB) + tiles.tiles_color = tile_bot_rght + tile_bot_rght = null + tiles.update_icon() + update_icon() + usr.put_in_inactive_hand(tiles) /turf/open/floor/plating/modular/attack_hand(mob/user) - if(user.a_intent == INTENT_GRAB) - if(struts_install == 0) - return - if(tiles_install > 0) - to_chat(usr, SPAN_NOTICE("You should remove the tiles before you touch the struts. The snapping mechanism needs to be released with a crowbar in GRAB intent.")) - return - if(struts_install == struts_ready) - to_chat(usr, SPAN_NOTICE("The strut does not budge. You need to loosen its screws with a screwdriver in GRAB intent.")) - return - if(struts_install > struts_ready) - user.visible_message(SPAN_NOTICE("[user] gathers metalic bars of the plating."), SPAN_INFO("You pick up the struts." )) - while (struts_install > struts_ready) - struts_install -= 1 - if(struts_install > 0) - icon_state = "[base_icon]_s[struts_install]" - update_icon() - if (struts_install == 0) - icon_state = "[base_icon]" - update_icon() - return + if (tile_seal != null) return + if(check_tile(usr.a_intent) == TRUE) + to_chat(usr,SPAN_NOTICE("There is no tile to pick up in this slot. Please make sure you are using the right intent.")) + return + else + rem_tile() /turf/open/floor/plating/modular/attackby(obj/item/C, mob/user) - if(iswelder(C)) - if(!HAS_TRAIT(C, TRAIT_TOOL_BLOWTORCH)) - to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) - return - var/obj/item/tool/weldingtool/welder = C - if(welder.isOn() && broken == 1) - if(welder.remove_fuel(1, user)) - playsound(src, 'sound/items/Welder.ogg', 25, 1) - if(struts_install > 0) - user.visible_message(SPAN_NOTICE("[user] starts to fix the struts and plating."), SPAN_INFO("You start fixing the struts and plating." ), SPAN_DANGER("You hear a hissing that gets distinctly louder for short intervals.")) - if(do_after(user, (CRAFTING_DELAY_LONG + (15 * struts_install)) * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - user.visible_message(SPAN_NOTICE("[user] fixes the struts and plating."), SPAN_INFO("You fix the struts and plating." ), SPAN_DANGER("The hissing stops.")) - icon_state = "[base_icon]_s[struts_install]" - name = "[initial(name)] and modular struts" - desc = "[initial(desc)] At least one metal strut has been placed and matched to the openings on the plating, ready to be attached to the platform." - desc_lore = "[initial(desc_lore)] The struts, screws and other elements that can be attached to the plating are all in compliance with the Northern Republic Production Standard, guaranteeing compatibility with almost any human ship in existence." - broken = FALSE - burnt = FALSE - return - if(struts_install == 0) - user.visible_message(SPAN_NOTICE("[user] starts to fix the plating."), SPAN_INFO("You start fixing the plating." ), SPAN_DANGER("You hear a hissing that gets distinctly louder for short intervals.")) - if(do_after(user, CRAFTING_DELAY_LONG * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - user.visible_message(SPAN_NOTICE("[user] fixes the plating."), SPAN_INFO("You fix the plating." ), SPAN_DANGER("The hissing stops.")) - icon_state = base_icon - desc = initial(desc) - desc_lore = initial(desc_lore) - broken = FALSE - burnt = FALSE - return - else - to_chat(user, SPAN_WARNING("You need more welding fuel to complete this task.")) - to_chat(user, SPAN_NOTICE("There does not seem to be a way to put these two together at the moment.")) - return - if(istype(C, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil = C - coil.turf_place(src, user) + if (!(istype (C, /obj/item/stack/modulartiles) || istype(C, /obj/item/modular/sealant) ||HAS_TRAIT(C, TRAIT_TOOL_SCREWDRIVER))) + to_chat(usr, SPAN_NOTICE("These two things don't seem to go together.")) return - if(istype(C, /obj/item/stack/modulartiles)) - var/obj/item/stack/modulartiles/T = C - if (!T) - return - if(T.get_amount() < 1) - return - if(tiles_install >= 4) + if(istype(C, /obj/item/modular/sealant)) + var/obj/item/modular/sealant/sealant = C + if(tile_bot_left == null || tile_bot_rght == null || tile_top_left == null || tile_top_rght == null) + to_chat(usr, SPAN_NOTICE("The sealant will not work properly unless all four tiles are installed.")) return - if(broken) - to_chat(user, SPAN_NOTICE("There is too much damage to continue installing the tiles. Use a welder to fix the damage.")) + if(tile_bot_left != null || tile_bot_rght != null || tile_top_left != null || tile_top_rght != null) //Excessive, but making sure all 4 are present + usr.visible_message(SPAN_NOTICE("[usr] starts applying sealant to the [src]"), SPAN_NOTICE("You start applying sealant to the [src]")) + playsound(src, 'sound/effects/squelch1.ogg', 30) + if(do_after(usr, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + tile_seal = sealant.sealant_color + update_icon() + return + to_chat(usr, SPAN_WARNING("You moved away.")) + if(istype(C, /obj/item/stack/modulartiles)) + if(tile_seal != null) + to_chat(usr, SPAN_NOTICE("The tiles have been locked in place by a hardened sealant. You will need to scrape it away with a screwdriver, used in GRAB mode, before you can alter the tiling in any way.")) return - if(burnt) - to_chat(user, SPAN_NOTICE("There is too much damage to continue installing the tiles. Use a screwdriver to start cleaning it.")) + if (check_tile(usr.a_intent) == FALSE) + to_chat(usr, SPAN_NOTICE("A tile is already in that spot. You can remove it by clicking on it with an active empty hand.")) return - if(struts_ready < 4) - to_chat(user, SPAN_NOTICE("To avoid damage and make sure they are even, you should finish installing four struts on the panel before you start attaching tiles.")) + var/obj/item/stack/modulartiles/tile = C + if (tile.amount < 1) + to_chat(usr, SPAN_WARNING("Somehow, you are holding less than one tile. This really shount't be happening.")) return - if(tiles_install < 4) - if(tiles_install == 0) - name = "Partially finished floor tiling" - desc = "Four metal struts attached to holes on the floor plating with some modular floor tiles already slotted into the struts. " - desc_lore = "These modular tiles are typically attached onto special plating that is typically permanently installed on ship hull floors meant for private or recreational locations. The plating comes with small holes predrilled in preset, standardized distances that allow for the installation of modular tile struts, which in turn are used with the UACM standardized tiling system to add some color to private quarters of UACM personnel. The tiles and struts that hold them are themselves are printed in the PST's fabrication wings at minimal material cost. " - tiles_color = T.tiles_color - if(!tiles_color) - to_chat(SPAN_BOLDWARNING("Warning. No tile color value inherited from tiles. This is most likely a scripting error. A default will be used. Please ping a Game Master and note what tile you used.")) - tiles_color = initial(tiles_color) - user.visible_message(SPAN_NOTICE("[user] starts snapping panels onto struts."), SPAN_INFO("You start to snap panels onto struts. They attach with an audible click that somehow feels very satisfying."),SPAN_INFO("You hear a series of oddly satisfying clicks.")) - while(tiles_install < 4) - T.use(1) - tiles_install += 1 - if(tiles_install == 4) - icon_state = "[tiles_color]" - update_icon() - name = "modular floor tiling" - desc = "Four NRPS compliant modular tiles snapped to struts attached to special plating attached to the hull. A Northern Republic classic. " - desc_lore = "These modular tiles are typically attached onto special plating that is typically permanently installed on ship hull floors meant for private or recreational locations. The plating comes with small holes predrilled in preset, standardized distances that allow for the installation of modular tile struts, which in turn are used with the UACM standardized tiling system to add some color to private quarters of UACM personnel. The tiles and struts that hold them are themselves are printed in the PST's fabrication wings at minimal material cost. " - else - icon_state = "[tiles_color][tiles_install]" - update_icon() - sleep(3) - user.visible_message(SPAN_NOTICE("[user] finishes attaching floor tiles to struts."), SPAN_INFO("You finish snapping the pannels to the struts."),SPAN_INFO("The clicks stop.")) + if (tile.amount >= 1) + set_tile(tile.tiles_color) + tile.use(1) return - to_chat(user, SPAN_NOTICE("There does not seem to be a way to put these two together at the moment.")) - return - if(HAS_TRAIT(C, TRAIT_TOOL_SCREWDRIVER)) - if(broken) - to_chat(user, SPAN_NOTICE("There is too much damage to continue installing the struts. Use a welder to fix the damage.")) + if(tile_seal == null) + to_chat(usr, SPAN_NOTICE("There is no sealant applied to the tiles, so there is no need for that.")) return - if(burnt) - user.visible_message(SPAN_NOTICE("[user] starts to unscrew and clean the struts and plating."), SPAN_INFO("You start to unscrew and clean the struts and plating.."), SPAN_DANGER("You hear a very faint scraping noise.")) - if(do_after(user, (CRAFTING_DELAY_LONG + (15 * struts_ready)) * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - user.visible_message(SPAN_NOTICE("[user] fixes the struts and plating."), SPAN_INFO("You fix the struts and plating." ), SPAN_DANGER("The scraping stops.")) - if(struts_install) - icon_state = "[base_icon]_s[struts_ready]" + if(usr.a_intent == INTENT_GRAB) + if(tile_seal != null) + usr.visible_message(SPAN_NOTICE("[user] starts to scrape tile sealant from the [src]"), SPAN_NOTICE("You start to scrape tile sealant from the [src]"), SPAN_WARNING("You hear metalic scraping.")) + playsound(src, 'sound/items/Screwdriver.ogg', 30) + if(do_after(usr, 40, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + tile_seal = null update_icon() - name = "[initial(name)] and modular struts" - desc = "[initial(desc)] At least one metal strut has been placed and matched to the openings on the plating, ready to be attached to the platform." - desc_lore = "[initial(desc_lore)] The struts, screws and other elements that can be attached to the plating are all in compliance with the Northern Republic Production Standard, guaranteeing compatibility with almost any human ship in existence." - broken = FALSE - burnt = FALSE - return - if (user.a_intent == INTENT_GRAB) - if (struts_ready > 0) - user.visible_message(SPAN_NOTICE("[user] uses a screwdriver on the plating struts."), SPAN_INFO("You start to unscrew the struts.")) - while(struts_ready > 0) - if(do_after(user, CRAFTING_DELAY_SHORT * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION),INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - sleep(2) - if(do_after(user, CRAFTING_DELAY_SHORT * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION),INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - struts_ready -= 1 - sleep(2) - user.visible_message(SPAN_NOTICE("[user] finishes working on the plating."), SPAN_INFO("You finished unfasting all of the struts. You can pick them up by using an empty hand in GRAB intent." )) - if (struts_ready == 0) - to_chat(user, SPAN_NOTICE("All the struts are already unfastened. To pick them up, use an empty hand and GRAB intent.")) - return - if (user.a_intent == INTENT_HELP) - if (struts_install == 0) - to_chat(user, SPAN_NOTICE("There is noting for you to screw in. Place a strut first.")) - return - if (struts_install == struts_ready) - if (struts_ready < 4) - to_chat(user, SPAN_NOTICE("There is noting more for you to screw in. Place anoter strut first. If you want to remove struts, switch to GRAB intent.")) return - if (struts_ready >= 4) - to_chat(user, SPAN_NOTICE("All the struts are in place and secured. There is nothing else to screw in. If you want to remove struts, switch to GRAB intent.")) + else + to_chat(usr, SPAN_WARNING("You moved away from the plating.")) return - if (struts_install > struts_ready) - user.visible_message(SPAN_NOTICE("[user] starts to work on the paneling."), SPAN_INFO("You start to secure the struts.")) - while (struts_install > struts_ready) - if(do_after(user, CRAFTING_DELAY_SHORT * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - sleep(2) - if(do_after(user, CRAFTING_DELAY_SHORT * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - struts_ready += 1 - user.visible_message(SPAN_NOTICE("[user] finishes working on the plating."), SPAN_INFO("You fasten all available struts." )) - return - to_chat(user, SPAN_NOTICE("There does not seem to be a way to put these two together at the moment.")) - return - - if(HAS_TRAIT(C, TRAIT_TOOL_CROWBAR)) - if (user.a_intent == INTENT_GRAB) - if(tiles_install > 0 && tiles_install <= 4) - user.visible_message(SPAN_NOTICE("[user] starts to detach floor tiles from their struts. They make an audible, disticnt pop."), SPAN_INFO("You start detaching tiles. They make an audible, distinct pop."), SPAN_DANGER("You hear disticnt, quiet popping.")) - while (tiles_install > 0) - tiles_install -= 1 - var/obj/item/stack/modulartiles/R = new(src, 1, /obj/item/stack/modulartiles) - R.tiles_color = tiles_color - R.icon_state = "tiles_[tiles_color]" - R.update_icon() - R.add_to_stacks(usr) - sleep(2) - user.visible_message(SPAN_NOTICE("[user] finishes detaching the tiles."), SPAN_INFO("You finish detaching the tiles."), SPAN_DANGER("The popping stops.")) - return - if (tiles_install == 0) - to_chat(usr, SPAN_INFO("There are no tiles to remove.")) - return - to_chat(user, SPAN_NOTICE("There does not seem to be a way to put these two together at the moment. If you are trying to remove tiles, please switch to GRAB intent.")) - return - - + else + to_chat(usr, SPAN_WARNING("That does not seem to work. If you are trying to scrape off the tile sealent, please remember to use GRAB intent.")) + return /turf/open/floor/plating/modular/break_tile_to_plating() if (!broken) - struts_install = initial(struts_install) - struts_ready = initial(struts_ready) - tiles_install = initial(tiles_install) + tile_top_left = null + tile_bot_left = null + tile_top_rght = null + tile_bot_rght = null + tile_seal = null icon_state = "platingdmg[pick(1, 3)]" name = "heavilly damaged [initial(name)]" desc = "[initial(desc)] ]It's heavily damaged and in need of repairs. The attached struts are mangled beyond repair." @@ -207,51 +157,55 @@ /turf/open/floor/plating/modular/break_tile() if (!broken && !burnt) - tiles_install = 0 - if (struts_ready == 0) - icon_state = "platingdmg2" - name = "damaged [initial(name)]" - desc = "[initial(desc)] It's damaged and in need of repairs." - desc_lore = "[initial(desc_lore)] Physical damage on plating like this is best removed using a welder. Somehow the struts on this panel survived whatever blew off the tiles, but typically they are not particularly explosion resistant, so they get damaged easily, requiring complete replacements. This fact is not seen as a flow by the Northern Republic that maintains the standard, as they argue explosions should not be an occurrence in areas where these tiles are used unless something is very wrong." - if (struts_ready > 0) - icon_state = "[base_icon]_s[struts_ready]" - name = "damaged [initial(name)] and modular struts" - desc = "[initial(desc)] At least one metal strut has been placed and matched to the openings on the plating, ready to be attached to the platform. The plating and struts are badly damaged and will need repairs." - desc_lore = "[initial(desc_lore)] The struts, screws and other elements that can be attached to the plating are all in compliance with the Northern Republic Production Standard, guaranteeing compatibility with almost any human ship in existence. Physical damage on plating like this is best removed using a welder. Somehow the struts on this panel survived whatever blew off the tiles, but typically they are not particularly explosion resistant, so they get damaged easily, requiring complete replacements. This fact is not seen as a flow by the Northern Republic that maintains the standard, as they argue explosions should not be an occurrence in areas where these tiles are used unless something is very wrong." + tile_top_left = null + tile_bot_left = null + tile_top_rght = null + tile_bot_rght = null + tile_seal = null + icon_state = "[initial(icon_state)]" + name = "damaged [initial(name)]" + desc = "[initial(desc)] The plating and struts are badly damaged and will need repairs, but can be used again." + desc_lore = "[initial(desc_lore)] The struts, screws and other elements that can be attached to the plating are all in compliance with the Northern Republic Production Standard, guaranteeing compatibility with almost any human ship in existence. Physical damage on plating like this is best removed using a welder. Somehow the struts on this panel survived whatever blew off the tiles, but typically they are not particularly explosion resistant, so they get damaged easily, requiring complete replacements. This fact is not seen as a flow by the Northern Republic that maintains the standard, as they argue explosions should not be an occurrence in areas where these tiles are used unless something is very wrong." broken = 1 return /turf/open/floor/plating/modular/burn_tile() if (!broken && !burnt) - tiles_install = 0 - if (struts_ready == 0) - icon_state = "panelscorched" - name = "burnt [initial(name)]" - desc = "[initial(desc)] It looks badly burnt and will need to be cleaned before use." - desc_lore = "[initial(desc_lore)] The tiles following the Northern Republic standard will by design burn off as fast as possible while generating as little heat and smoke as possible. This typically is enough to save the struts that hold them in place, all they need is a little cleaning that will require you to loosen their bolts with a screwdriver first." - if (struts_ready > 0) - icon_state = "[base_icon]_s[struts_ready]" - name = "burnt [initial(name)] and modular struts" - desc = "[initial(desc)] At least one metal strut has been placed and matched to the openings on the plating, ready to be attached to the platform. It looks badly burnt and will need to be cleaned before use." - desc_lore = "[initial(desc_lore)] The struts, screws and other elements that can be attached to the plating are all in compliance with the Northern Republic Production Standard, guaranteeing compatibility with almost any human ship in existence. The tiles following the Northern Republic standard will by design burn off as fast as possible while generating as little heat and smoke as possible. This typically is enough to save the struts that hold them in place, all they need is a little cleaning that will require you to loosen their bolts with a screwdriver first." + tile_top_left = null + tile_bot_left = null + tile_top_rght = null + tile_bot_rght = null + tile_seal = null + icon_state = "platingscorched" + name = "burnt [initial(name)]" + desc = "[initial(desc)] At least one metal strut has been placed and matched to the openings on the plating, ready to be attached to the platform. It looks badly burnt and will need to be cleaned before use." + desc_lore = "[initial(desc_lore)] The struts, screws and other elements that can be attached to the plating are all in compliance with the Northern Republic Production Standard, guaranteeing compatibility with almost any human ship in existence. The tiles following the Northern Republic standard will by design burn off as fast as possible while generating as little heat and smoke as possible. This typically is enough to save the struts that hold them in place, all they need is a little cleaning that will require you to loosen their bolts with a screwdriver first." burnt = 1 return -/turf/open/floor/plating/modular/completed - struts_install = 4 - struts_ready = 4 - tiles_install = 4 - icon_state = "default" - tiles_color = "default" +/turf/open/floor/plating/modular/update_icon() + overlays = null + overlays += image(icon, src, "[icon_state]") + if (tile_top_left != null) + overlays += image(icon, src, "[tile_top_left]_top_left") + if (tile_bot_left != null) + overlays += image(icon, src, "[tile_bot_left]_bot_left") + if (tile_top_rght != null) + overlays += image(icon, src, "[tile_top_rght]_top_rght") + if (tile_bot_rght != null) + overlays += image(icon, src, "[tile_bot_rght]_bot_rght") + if (tile_seal != null) + overlays += image(icon, src, "[tile_seal]_seal") -/turf/open/floor/plating/modular/completed/Initialize() +/turf/open/floor/plating/modular/Initialize(mapload, ...) . = ..() - name = "modular floor tiling" - desc = "Four NRPS compliant modular tiles snapped to struts attached to special plating attached to the hull. A Northern Republic classic. " - desc_lore = "These modular tiles are typically attached onto special plating that is typically permanently installed on ship hull floors meant for private or recreational locations. The plating comes with small holes predrilled in preset, standardized distances that allow for the installation of modular tile struts, which in turn are used with the UACM standardized tiling system to add some color to private quarters of UACM personnel. The tiles and struts that hold them are themselves are printed in the PST's fabrication wings at minimal material cost. " - -//Specific completed colors + if(tile_top_left != null || tile_bot_left != null || tile_top_rght != null || tile_bot_rght != null || tile_seal != null) + update_icon() -/turf/open/floor/plating/modular/completed/white - icon_state = "white" - tiles_color = "white" +//Completed floors start here. +/turf/open/floor/plating/modular/gray + tile_top_left = "gray" + tile_top_rght = "gray" + tile_bot_left = "gray" + tile_bot_rght = "gray" + tile_seal = "black" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 375ffff17f..b9b37f435a 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -162,8 +162,10 @@ GLOBAL_LIST_INIT(admin_verbs_major_event, list( /client/proc/change_taskbar_icon, /client/proc/change_weather, /client/proc/admin_blurb, + /client/proc/admin_song_blurb, /client/proc/cmd_admin_pythia_say, - /client/proc/cmd_start_sequence + /client/proc/cmd_start_sequence, + /client/proc/cmd_answer_civnet )) GLOBAL_LIST_INIT(admin_verbs_spawn, list( diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index bb0f5fdf85..aeaf75142d 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -1093,6 +1093,23 @@ show_blurb(GLOB.player_list, duration, message, TRUE, "center", "center", "#bd2020", "ADMIN") message_admins("[key_name(usr)] sent an admin blurb alert to all players. Alert reads: '[message]' and lasts [(duration / 10)] seconds.") +/client/proc/admin_song_blurb() + set name = "Song Blurb Message" + set category = "Admin.Events" + + if(!check_rights(R_ADMIN|R_DEBUG)) + return FALSE + + var/song_name = tgui_input_text(usr, message = "Song In-Game Name - Displayed BOLDED on top.", title = "Song Title", timeout = null) + if (song_name == null) return + var/song_artist = tgui_input_text(usr, message = "Song Artist - Second line, left.", title = "Song Artist", timeout = null) + if (song_artist == null) return + var/song_title = tgui_input_text(usr, message = "Song Title - Second line, after dash on right. LAST CHANCE TO CANCEL.", title = "Song Name", timeout = null) + if (song_title == null) return + var/song_album = tgui_input_text(usr, message = "Song Album. Optional, Third line.", title = "Song Album", timeout = null) + show_blurb_song(name = "[song_name]", artist = "[song_artist]", title = "[song_title]", album = "[song_album]") + message_admins("[key_name(usr)] sent an admin song blurb. Strings sent: '[song_title]', '[song_artist]', '[song_name]', '[song_album]'") + /client/proc/cmd_admin_pythia_say() // Checks for a Pythia reciever and talks as it and any of its voices. set name = "Speak As Pythia" set category = "Admin.Events" @@ -1118,56 +1135,23 @@ to_chat(src, "Only administrators may use this command.") return - var/puzzlebox_admin_option = tgui_input_list(usr, "Select a Sequence", "Start Sequence", list("None - Leave", "Dock 31 Landing", "Dock 31 Elevator Up", "Dorms - Going Down","Pythia Statistic Icons","Resolution"), 0) + var/puzzlebox_admin_option = tgui_input_list(usr, "Select a Sequence", "Start Sequence", list("None - Leave", "Open Hideaway Podlocks", "Open TOS Outer Podlocks", "Open TOS Inner Podlocks"), 0) if (!puzzlebox_admin_option) return switch(puzzlebox_admin_option) if("None - Leave") return - if("Dock 31 Landing") - to_chat(world, narrate_body("The shuttle's Twilight Paradox drives sigh quietly as the shuttle makes a leapfrog style jump towards the PST. As it approaches, the stations on board systems take control of the shuttle and start to guide it towards its destination.")) - sleep(150) - to_chat(world, narrate_body("The station is huge, likely the biggest artificial object in the Neroid Sector, if not all the Veils. The shuttle comes close near its top, from where the station widens considerably. It's hard to not notice how well maintained the outer hull of the station is, indicating that it is either freshly built, or unusually well maintained for an object its size.")) - sleep(150) - to_chat(world, narrate_body("The shuttle slows down and starts to fly along the side of the station, near one of its closed wings. It turns sharply and ducks right under the wing and gives you a clear view of what seems to be a fleet of thousands of small drones, all parked in charging stations strewn what look like zero gravity manufacturing and 3d printing plants. All of this seems to be automated but is currently inert.")) - sleep(150) - to_chat(world, narrate_body("The shuttle gets out from under the wing and heads for what is essentially the bottom of the station where it becomes paper thin again. Here, various sized ports and berths are located. You take notice of what looks to be several medium-sized corporate ships docked in one segment of the station's docking facilities.")) - sleep(150) - to_chat(world, narrate_body("The shuttle arrives at its destination and the drives power off. The airlock takes a moment to pressurize, then beeps.")) - return - if("Dock 31 Elevator Up") - to_chat(world, narrate_body("The elevator groans then rather violently jerks and begins its rapid ascent topside. Hanako was not kidding. The ascent is intense and pushes you into your chair somewhat. The sensation is not enough to be painful and with the jolt of adrenaline that follows it, certainly wakes you up somewhat.")) - sleep(150) - to_chat(world, narrate_body("You notice bright blue patterns on the shaft of the elevator, seemingly wrapping around the shaft from all directions. The ascent is too rapid to make out what exactly is the source of these patterns, but these seem unique to the PST.")) - sleep(150) - to_chat(world, narrate_body("The elevator stops as suddenly as it starts, giving you one final jerk and shot of adrenaline as a pair of doors begins to unseal. You have arrived at your destination.")) - return - if("Dorms - Going Down") - to_chat(world, narrate_body("The elevator hums and beings its descent back into the depths of the PST. Compared to the previous ride, this descent is gentle. Pleasant. Really, all its missing is elevator music.")) - sleep(100) - to_chat(world, narrate_body("Like the other shaft, this one is also filled with intricate, blue glowing patterns. You can make out their source this time - these all appear to be Liquid Data streams, housed in special cables that seem nearly translucent. You have never seen a solution like this before, normally Liquid Data devices are highly secure and kept in contained areas of ships.")) - sleep(150) - to_chat(world, narrate_body("The elevator slows and stops as it arrives at its destination. As its doors start to unseal, you feel a breeze on your cheeks.")) - return - if("Pythia Statistic Icons") - for(var/obj/structure/eventterminal/puzzle05/testament_of_sacrifice/pythia in world) - for(var/obj/structure/machinery/light/marker/admin/mel in world) - if(mel.light_id == "melinoe") - pythia.pythia_terminal_icons("data") - mel.emoteas("The terminal monitors fizzle for a moment, then each begin to display its own, unsynchronized stream of data. For a while, the data seems random.") - mel.emoteas("You then start to see patterns. The terminal seems to be displaying security records, conversation records, mission reports and other official data about each and every one of you present in the room, switching between person to person at random intervals.") - mel.emoteas("It takes you a moment to realize that not all the data is correct. Some of it seems to mention events that have not taken place but all, somewhat disturbingly, seem to end with your demise in some accident or combat deployment, some time in the last year.") - if("Resolution") - to_chat(world, narrate_head("A warning klaxon rings out across the station as airlocks start to seal and clamp shut. The familiar robotic voice speaks:")) - to_chat(world, narrate_body("Attention. Security Lockout. Unauthorized attempt to overwrite proprietary UACM technology. All personnel are to remain locked down in their assigned dorms until an All-Clear signal is sent. Expected time until resolution: 70 hours.")) - sleep(150) - to_chat(world, narrate_head("The speakers fizzle and buzz, then pop. The warning klaxon stops. A female voice you've all heard before rings out from the loudspeaker:")) - to_chat(world, narrate_body("Attention Test Crews of the PST. This is CA-RW. It appears you have triggered a security lockout after you have, somehow, tried to overwrite the station's Artificial Intelligence with an unscheduled software package which we think triggered every security warning known to mankind.")) - sleep(150) - to_chat(world, narrate_body("I would be mad if we weren't both slightly impressed. I'm going to wager a guess that you were helped by a certain overactive station engineer that knows way more about the PST for their own good and that you found an MUP hidden inside a Task Force 14 safe house.")) - sleep(150) - to_chat(world, narrate_body("I'm sorry to do this to you, but we have no way of overriding the lockout remotely. This will require the physical presence of one of us and our very gentle little fingers. The Persephone is on its way. Expect one or both of us in less than twelve hours, likely with another bunch of recruits. Until then, enjoy what constitutes your new home. I left some snacks.")) - sleep(150) - to_chat(world, narrate_body("Keep in mind that UACM brass has also taken notice of this alert and they are likely on the way too but knowing them it will take them a good sixty hours to even send a ship here. The next twenty-four hours on the PST are likely going to be heavily investigated by the authorities and if you want to insulate yourself from that sort of attention, we both respect that choice and will give you the means to do so, no questions asked.")) - sleep(150) - to_chat(world, narrate_head("The speakers pop again, and this time die down for good. The PST is silent again, though the lockdown persists.")) - return + if("Open Hideaway Podlocks") + for (var/obj/structure/machinery/door/poddoor/almayer/locked/A in world) + if(A.id == "crypt-a") + A.open() + return + if("Open TOS Outer Podlocks") + for (var/obj/structure/machinery/door/poddoor/almayer/locked/A in world) + if(A.id == "crypt-b") + A.open() + return + if("Open TOS Inner Podlocks") + for (var/obj/structure/machinery/door/poddoor/almayer/locked/A in world) + if(A.id == "crypt-c") + A.open() + return diff --git a/code/modules/admin/verbs/icquery.dm b/code/modules/admin/verbs/icquery.dm new file mode 100644 index 0000000000..053834b8d9 --- /dev/null +++ b/code/modules/admin/verbs/icquery.dm @@ -0,0 +1,10 @@ +/client/proc/cmd_answer_civnet(mob/M) + set category = null + set name = "Answer CivNet Query" + + if (M.civnet_query == null) + to_chat(usr, SPAN_WARNING("This mob has not sent a CivNet query this round.")) + return + to_chat(usr, narrate_body("Question: [M.civnet_query]")) + M.civnet_answer = tgui_input_text(usr, "See chat for full question.", "CivNet Answer, [M.name]", max_length = MAX_MESSAGE_LEN, multiline = TRUE, encode = FALSE, timeout = 0) + to_chat(usr, narrate_body("[M.civnet_answer] set.")) diff --git a/code/modules/asset_cache/asset_list.dm b/code/modules/asset_cache/asset_list.dm index 1d88df0b6a..8bb4654a83 100644 --- a/code/modules/asset_cache/asset_list.dm +++ b/code/modules/asset_cache/asset_list.dm @@ -355,6 +355,7 @@ GLOBAL_LIST_EMPTY(asset_datums) "inventory-hand_l.png" = 'icons/ui_Icons/inventory/hand_l.png', "inventory-hand_r.png" = 'icons/ui_Icons/inventory/hand_r.png', "inventory-shoes.png" = 'icons/ui_Icons/inventory/shoes.png', + "inventory-socks.png" = 'icons/ui_Icons/inventory/socks.png', "inventory-suit_storage.png" = 'icons/ui_Icons/inventory/suit_storage.png', "inventory-id.png" = 'icons/ui_Icons/inventory/id.png', "inventory-belt.png" = 'icons/ui_Icons/inventory/belt.png', diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 91f42fbafe..436cca99b5 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -19,7 +19,11 @@ var/blood_overlay_type = "" //which type of blood overlay to use on the mob when bloodied var/list/clothing_traits // Trait modification, lazylist of traits to add/take away, on equipment/drop in the correct slot var/clothing_traits_active = TRUE //are the clothing traits that are applied to the item active (acting on the mob) or not? - + //Sector Patrol..// + var/customizable = 0 //Checked by the customizers to escape Sector Patrol 'approved' drip + var/customizable_desc + var/customizable_desc_lore + //Sector Patrol//.. /obj/item/clothing/get_examine_line(mob/user) . = ..() var/list/ties = list() @@ -449,3 +453,15 @@ return TRUE return ..() + +//Sector Patrol +//Appending Descriptions and Lore Description Customizations to clothes +/obj/item/clothing/proc/update_custom_descriptions() + if (customizable_desc != null) + desc = "

[initial(desc)]

[customizable_desc]

" + if (customizable_desc == null) + desc = "[initial(desc)]" + if (customizable_desc_lore != null) + desc_lore = "

[initial(desc_lore)]

[customizable_desc_lore]

" + if (customizable_desc_lore == null) + desc_lore = "[initial(desc_lore)]" diff --git a/code/modules/clothing/head/sp_head.dm b/code/modules/clothing/head/head_sp.dm similarity index 53% rename from code/modules/clothing/head/sp_head.dm rename to code/modules/clothing/head/head_sp.dm index 158a75313e..b9f833029b 100644 --- a/code/modules/clothing/head/sp_head.dm +++ b/code/modules/clothing/head/head_sp.dm @@ -1,5 +1,3 @@ - - // UACM /obj/item/clothing/head/beret/uacm/ @@ -113,3 +111,250 @@ desc_lore = "Initially the UACM was going to scrap the trusty beanie during its transition from the UMCMC as it was the only piece of headgear that turned out to be exclusive to the now defunct formation. After an unexpected amount of Italian strikes, surprisingly well coordinated gestures of civilian disobedience and maybe ONE dishonorable discharge after an ill thought out bomb threat, the beanie was returned to the service in all its glory. USCMC engineering had such a bad reputation and low hiring standard that the formations High Command never saw fit to give them anything other than the blue jumpsuits. UACM engineering colored headwear is therefore new and these are guaranteed to be fresh off the 3d printer. A running joke among the newly minted UACM engineers is that this particular combination of headwear and color is enough to get you on a CMISRS watchlist alone." icon_state = "engi_beanie" item_state = "engi_beanie" + +//Civilian and Off duty head covers + +/obj/item/clothing/head/sp_personal/ +// name = "Civilian head cover master item" + name = "tan beret" + desc = "A piece of casual clothing meant to be worn on the head. Made from a soft, yet surprisingly firm material with accents sculpted from finely decorated hardener resin elements." + desc_lore = "Headwear is typically not of particular concern to crews of spaceships, only really coming into view on army or corporate vessels. Head coverings made on the PST are made from specially treated high-quality polymers and resins, treated within the stations manufacturers. While they may not last as long as traditional headgear, they can be recycled and replaced nearly with the push of a button, so that aspect is not of particular concern. " + customizable = 1 + icon = 'icons/obj/sp_clothes/hats/icon/hats.dmi' +// icon_state = "" + icon_state = "beret_tan" + item_icons = list( + WEAR_HEAD = 'icons/obj/sp_clothes/hats/onmob/hats.dmi' + ) + var/flippable + var/flippable_flipped + var/flippable_returns + + +//flippable caps, add icon with _flipped to both sets + +/obj/item/clothing/head/sp_personal/dropped() + if (flippable_returns == TRUE && flippable_flipped != 0) + icon_state = "[initial(icon_state)]" + flippable_flipped=0 + ..() + +/obj/item/clothing/head/sp_personal/verb/flip() + set category = "Object" + set name = "Flip/Unstrap" + set src in usr + if(!usr.is_mob_incapacitated()) + switch(flippable) + if ("cap") + src.flippable_flipped = !src.flippable_flipped + if(src.flippable_flipped) + icon_state = "[initial(icon_state)]_flipped" + to_chat(usr, SPAN_INFO("You flip the hat backwards. If you were still a teenager, you'd be about 50% cooler right now.")) + else + icon_state = "[initial(icon_state)]" + to_chat(usr, "You flip the hat back in normal position.") + update_clothing_icon() //so our mob-overlays update + if ("boonie") + src.flippable_flipped = !src.flippable_flipped + if(src.flippable_flipped) + icon_state = "[initial(icon_state)]_b" + to_chat(usr, SPAN_INFO("You unbutton and tuck away the chinstrap. The hat now rests loosely on your head.")) + else + icon_state = "[initial(icon_state)]" + to_chat(usr, SPAN_INFO("You button the hat's chinstrap. It now fits snugly around your head.")) + update_clothing_icon() //so our mob-overlays update + if ("flaps") + src.flippable_flipped = !src.flippable_flipped + if(src.flippable_flipped) + icon_state = "[initial(icon_state)]_up" + to_chat(usr, SPAN_INFO("You lift and tuck the hat flaps.")) + else + icon_state = "[initial(icon_state)]" + to_chat(usr, SPAN_INFO("You untuck and lower the hats flaps.")) + update_clothing_icon() //so our mob-overlays update + else + to_chat(usr, SPAN_NOTICE("This hat does not have anything that can be strapped and flipping it would have no effect.")) + +///obj/item/clothing/head/sp_personal/basehat/beret_tan //Defined like this to double serve as base item for snowlfake vendors. Not great, but will do for now. +// name = "tan beret" +// icon_state = "beret_tan" + +//berets +/obj/item/clothing/head/sp_personal/basehat/beret_red + name = "red beret" + icon_state = "beret_red" + +/obj/item/clothing/head/sp_personal/basehat/beret_black + name = "black beret" + icon_state = "beret_black" + +/obj/item/clothing/head/sp_personal/basehat/beret_green + name = "green beret" + icon_state = "beret_green" + +/obj/item/clothing/head/sp_personal/basehat/beret_lgreen + name = "light green beret" + icon_state = "beret_lgreen" + +//fancy hats +/obj/item/clothing/head/sp_personal/basehat/bowler + name = "bowler hat" + icon_state = "bowler" + +/obj/item/clothing/head/sp_personal/basehat/fedora + name = "trilby" + icon_state = "fedora" + +/obj/item/clothing/head/sp_personal/basehat/detective + name = "fedora" + icon_state = "detective" + +// Solid Snake Enthusiasm Society + +/obj/item/clothing/head/sp_personal/basehat/headband_brown + name = "brown headband" + icon_state = "headband_brown" + +/obj/item/clothing/head/sp_personal/basehat/headband_gray + name = "gray headband" + icon_state = "headband_gray" + +/obj/item/clothing/head/sp_personal/basehat/headband_red + name = "red headband" + icon_state = "headband_red" + +/obj/item/clothing/head/sp_personal/basehat/headband_lightbrown + name = "light brown headband" + icon_state = "headband_lightbrown" + +/obj/item/clothing/head/sp_personal/basehat/headband_purple + name = "purple headband" + icon_state = "headband_purple" + +/obj/item/clothing/head/sp_personal/basehat/headband_blue + name = "blue headband" + icon_state = "headband_blue" + +/obj/item/clothing/head/sp_personal/basehat/headband_green + name = "green headband" + icon_state = "headband_green" + +/obj/item/clothing/head/sp_personal/basehat/headband_tan + name = "tan headband" + icon_state = "headband_tan" + +/obj/item/clothing/head/sp_personal/basehat/headband_black + name = "black headband" + icon_state = "headband_black" + +//caps, flippable and return on drop + +/obj/item/clothing/head/sp_personal/basehat/cap_red + name = "red cap" + icon_state = "cap_red" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_blue + name = "blue cap" + icon_state = "cap_blue" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_yellow + name = "yellow cap" + icon_state = "cap_yellow" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_green + name = "green cap" + icon_state = "cap_green" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_grey + name = "gray cap" + icon_state = "cap_grey" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_orange + name = "orange cap" + icon_state = "cap_orange" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_purple + name = "purple cap" + icon_state = "cap_purple" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_rainbow + name = "rainbow cap" + icon_state = "cap_rainbow" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_olive + name = "olive cap" + icon_state = "cap_olive" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_tan + name = "tan cap" + icon_state = "cap_tan" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_black + name = "black cap" + icon_state = "cap_black" + flippable = "cap" + flippable_returns = TRUE + +/obj/item/clothing/head/sp_personal/basehat/cap_lightblue + name = "light blue cap" + icon_state = "cap_lightblue" + flippable = "cap" + flippable_returns = TRUE + +//Boonies, flippable + +/obj/item/clothing/head/sp_personal/basehat/booniehat_green + name = "green boonie hat" + icon_state = "booniehat_green" + flippable = "boonie" + +/obj/item/clothing/head/sp_personal/basehat/booniehat_tan + name = "tan boonie hat" + icon_state = "booniehat_tan" + flippable = "boonie" + +//Ushankas and other flappable parts + +/obj/item/clothing/head/sp_personal/basehat/ushanka + name = "ushanka" + icon_state = "ushanka" + flippable = "flaps" + +// Admeme zone + +/obj/item/clothing/head/sp_admin/ + + name = "Cassandra's pin" + desc = "A bright red decorative hair pin. A small heart seems to be engraved on the buckle." + desc_lore = "After their accident, the two Commanders found it hard to communicate with others while in their own presence. The issue was that often they would just communicate through their newly formed hivemind and completely forget communication that was not only heard by them without realizing it. We managed to solve the problem by specially prepared decorative hairpins that detect and indicate activity in the Crystalline parts of their brains, vibrating slightly if either of the women are talking only to themselves. Over time we expanded those to also include personal LD comms and other tidbits, but at its core, the pins are a means for them to stay focused on a world outside of their Hivemind." + icon = 'icons/obj/sp_clothes/admin/icon/sp_clothes.dmi' + icon_state = "cass_pin" + item_icons = list( + WEAR_HEAD = 'icons/obj/sp_clothes/admin/onmob/sp_clothes.dmi' + ) + +/obj/item/clothing/head/sp_admin/Aly + name = "decorative hairpin" + icon_state = "aly_pin" + desc = "A hair pin with a set of high quality artifical flowers attached on top." + desc_lore = "Double sided communication, or 'double streaming' as they call it is apparently a constant issue with the Hivemind and the hairpins can help with those by vibrating whenever they detect activity in the Crystalline parts of the Commanders' brains. The sensation of both Commanders trying to control the same limb at the same time sounds unpleasant and by their description the shock goes way deeper than that. Maybe this was not true initially, but the current shapes of those devices are very much the Commanders' personal tastes." diff --git a/code/modules/clothing/shoes/shoes_sp.dm b/code/modules/clothing/shoes/shoes_sp.dm new file mode 100644 index 0000000000..14b618d09c --- /dev/null +++ b/code/modules/clothing/shoes/shoes_sp.dm @@ -0,0 +1,82 @@ +/obj/item/clothing/shoes/sp_personal +// name = "civilian shoes master item" + desc = "Protection and comfort for your legs, a human favorite since way before they reached the stars. Upon closer inspection, seems to be made from an artificial substance that is coated and treated to look and act like cloth or leather, with finishing accents made from hardened, colored resin." + desc_lore = "Boots and shoes tend to be some of the more permanent and personal possessions of spacefaring humans and as such, typically they are high quality. PST made shoes try to copy this by using a special mix of polymers, resins, and alloys to achieve a leather like substance that can still be molded and used to 'print' the shoes in the station's foundries. The end effect is the most durable of the PST's products, rivaling its 'natural' equivalent in toughness and resistance to damage." + customizable = 1 + name = "marine boots" + icon_state = "marine" + icon = 'icons/obj/sp_clothes/shoes/icon/shoes.dmi' +// icon_state = "" + item_icons = list( + WEAR_FEET = 'icons/obj/sp_clothes/shoes/onmob/shoes.dmi' + ) + +///obj/item/clothing/shoes/sp_personal/baseshoe/marine +// name = "marine boots" +// icon_state = "marine" + +/obj/item/clothing/shoes/sp_personal/baseshoe/laceups + name = "black lace-up shoes" + icon_state = "laceups" + +/obj/item/clothing/shoes/sp_personal/baseshoe/laceups_brown + name = "brown lace-up shoes" + icon_state = "laceups_brown" + +/obj/item/clothing/shoes/sp_personal/baseshoe/white + name = "white sneakers" + icon_state = "white" + +/obj/item/clothing/shoes/sp_personal/baseshoe/red + name = "red sneakers" + icon_state = "red" + +/obj/item/clothing/shoes/sp_personal/baseshoe/brown + name = "brown sneakers" + icon_state = "brown" + +/obj/item/clothing/shoes/sp_personal/baseshoe/black + name = "black sneakers" + icon_state = "black" + +/obj/item/clothing/shoes/sp_personal/baseshoe/orange + name = "orange sneakers" + icon_state = "orange" + +/obj/item/clothing/shoes/sp_personal/baseshoe/blue + name = "blue sneakers" + icon_state = "blue" + +/obj/item/clothing/shoes/sp_personal/baseshoe/green + name = "green sneakers" + icon_state = "green" + +/obj/item/clothing/shoes/sp_personal/baseshoe/purple + name = "purple sneakers" + icon_state = "purple" + +/obj/item/clothing/shoes/sp_personal/baseshoe/yellow + name = "yellow sneakers" + icon_state = "yellow" + +//Admeme zone + +/obj/item/clothing/shoes/sp_admin/ + name = "decorative boots" + desc = "A sturdy pair of over-the-ankle boots decorated with a plum-colored ribbon tied onto a bow on top of the shoelaces. " + desc_lore = "Initially, the Commanders needed clearly different shoes to be able to tell whose legs belong to who after their unintended implantation. Right at the beginning of their recovery, their hivemind would often confuse their perception of themselves and wearing unique footwear apparently helped them ground themselves. This need disappeared fast, but the tendency to wear unique footwear remained. By that point everyone was so used to it, no one protested. " + icon = 'icons/obj/sp_clothes/admin/icon/sp_clothes.dmi' + icon_state = "cass_shoes" + item_icons = list( + WEAR_FEET = 'icons/obj/sp_clothes/admin/onmob/sp_clothes.dmi' + ) + +/obj/item/clothing/shoes/sp_admin/aly + name = "comfy shoes" + desc = "comfortable looking black shoes that reach just slightly over the ankle. " + desc_lore = "The problem with their condition, as the Commander assures us anyway, is not that they lose track of their own individuality within their Hivemind, but rather how natural it is to them to see their physical frames as interchangeable if needed. Hence the intricate outfits and in particular easily recognizable shoes, otherwise they literally would forget whose body they are currently looking through. " + icon = 'icons/obj/sp_clothes/admin/icon/sp_clothes.dmi' + icon_state = "cass_shoes" + item_icons = list( + WEAR_FEET = 'icons/obj/sp_clothes/admin/onmob/sp_clothes.dmi' + ) diff --git a/code/modules/clothing/socks/socks.dm b/code/modules/clothing/socks/socks.dm index d71ddf48bd..7889d82ae8 100644 --- a/code/modules/clothing/socks/socks.dm +++ b/code/modules/clothing/socks/socks.dm @@ -1,9 +1,12 @@ /obj/item/clothing/socks - name = "compression socks" +// name = "socks" desc = "A pair of compression socks, guaranteed to keep your feet comfy and your legs warm while improving your blood circulation. A spacer favorite." desc_lore = "Compression socks became a favorite for those who spend prolonged amount of time on spaceships or installations almost as soon as mankind reached for the stars. The reasoning is simple, the increased pressure on thighs and legs improves blood pressure and circulation, which is particularly useful in zero-g environments which spaceship crews often find themselves spending prolonged amounts of time in. Socks like these meant to be use in space are also typically insulated and quite warm, another very useful aspect in the relative cold of most space faring vessels." - icon = 'icons/obj/items/clothing/socks.dmi' + icon = 'icons/obj/sp_clothes/socks/icon/socks.dmi' +// icon_state = "" + name = "gray compression socks" icon_state = "grey_thigh" + flags_equip_slot = SLOT_SOCKS armor_melee = CLOTHING_ARMOR_LOW armor_bullet = CLOTHING_ARMOR_NONE armor_laser = CLOTHING_ARMOR_NONE @@ -18,43 +21,42 @@ max_heat_protection_temperature = SHOE_MAX_HEAT_PROT siemens_coefficient = 0.7 item_icons = list( - WEAR_FEET = 'icons/mob/humans/onmob/socks.dmi' + WEAR_SOCKS = 'icons/obj/sp_clothes/socks/onmob/socks.dmi' ) - layer = SUIT_GARB_LAYER + layer = SOCKS_LAYER -/obj/item/clothing/socks/gray - name = "gray compression socks" +/obj/item/clothing/socks/update_clothing_icon() + if(ismob(loc)) + var/mob/user = loc + user.update_inv_socks() - icon_state = "grey_thigh" +//Thigh high, effectively covering whole legs +///obj/item/clothing/socks/compression/thigh/gray +// name = "gray compression socks" +// icon_state = "grey_thigh" -/obj/item/clothing/shoes/socks/black +/obj/item/clothing/socks/compression/thigh/black name = "black compression socks" - desc = "A pair of black compression socks, guaranteed to keep your feet comfy and your legs warm while improving your blood circulation. A spacer favorite." - desc_lore = "Compression socks became a favorite for those who spend prolonged amount of time on spaceships or installations almost as soon as mankind reached for the stars. The reasoning is simple, the increased pressure on thighs and legs improves blood pressure and circulation, which is particularly useful in zero-g environments which spaceship crews often find themselves spending prolonged amounts of time in. Socks like these meant to be use in space are also typically insulated and quite warm, another very useful aspect in the relative cold of most space faring vessels." icon_state = "black_thigh" -/obj/item/clothing/socks/white +/obj/item/clothing/socks/compression/thigh/white name = "white compression socks" - desc = "A pair of white compression socks, guaranteed to keep your feet comfy and your legs warm while improving your blood circulation. A spacer favorite." icon_state = "white_thigh" -/obj/item/clothing/socks/striped +/obj/item/clothing/socks/compression/thigh/striped name = "black and white striped compression socks" - desc = "A pair of black and white striped compression socks, guaranteed to keep your feet comfy and your legs warm while improving your blood circulation. A spacer favorite." icon_state = "striped_thigh" -/obj/item/clothing/socks/striped_pink +/obj/item/clothing/socks/compression/thigh/striped_pink name = "pink and white striped compression socks" - desc = "A pair of pink and white striped compression socks, guaranteed to keep your feet comfy and your legs warm while improving your blood circulation. A spacer favorite." icon_state = "striped_pink_thigh" -/obj/item/clothing/socks/striped_blue +/obj/item/clothing/socks/compression/thigh/striped_blue name = "blue and white striped compression socks" - desc = "A pair of blue and white striped compression socks, guaranteed to keep your feet comfy and your legs warm while improving your blood circulation. A spacer favorite." icon_state = "striped_blue_thigh" -/obj/item/clothing/socks/striped_trans +/obj/item/clothing/socks/compression/thigh/striped_trans name = "multicolor striped compression socks" desc = "A pair of multicolor striped compression socks, guaranteed to keep your feet comfy and your legs warm while improving your blood circulation. The stripe colors used are commonly used pattern among transgender personnel and has been also used to express support. A spacer favorite." icon_state = "striped_trans_thigh" diff --git a/code/modules/clothing/suits/civilian_sp.dm b/code/modules/clothing/suits/civilian_sp.dm new file mode 100644 index 0000000000..0d683ed588 --- /dev/null +++ b/code/modules/clothing/suits/civilian_sp.dm @@ -0,0 +1,185 @@ +/obj/item/clothing/suit/sp_personal +// name = "civilian jacket master item" + desc = "A thick article of clothing, made from some hardened artificial, rubber like substance that is textured to simulate leather, with hardened resin elements used for finer details." + desc_lore = "Typically called 'jackets' or 'suits', this article of clothing is thicker than most and is meant to be worn on top of lighter, more breathable uniforms. This is why they are typically made of heavier leather and worn by personnel departing the ship for planets where the atmosphere is breathable. The PST made variants replace leather with a polymer and resin mixture, resulting in clothes that are just as warm, damage a bit easier, but can be easily recycled and made back from scratch with the push of a button." + customizable = 1 + icon = 'icons/obj/sp_clothes/coats/icon/suit.dmi' +// icon_state = "" + name = "khaki lightjacket" + icon_state = "lightjacket_khaki" + item_icons = list( + WEAR_JACKET = 'icons/obj/sp_clothes/coats/onmob/suit.dmi' + ) + var/openable + var/openable_open + + +/obj/item/clothing/suit/sp_personal/verb/open_jacket() + set category = "Object" + set name = "Open or close jacket" + set src in usr + if(!usr.is_mob_incapacitated()) + switch (openable) + if ("zipper") + src.openable_open = !src.openable_open + if(src.openable_open) + icon_state = "[initial(icon_state)]_o" + playsound(src, soundin = 'sound/items/zip.ogg', vol = 10, vary = 1) + to_chat(usr, SPAN_INFO("You unzip your jacket decisively, giving yourself a more casual look.")) + else + icon_state = "[initial(icon_state)]" + playsound(src, soundin = 'sound/items/zip.ogg', vol = 10, vary = 1) + to_chat(usr, "You zip up your jacket. You feel warmer already.") + update_clothing_icon() //so our mob-overlays update + if ("buttons") + src.openable_open = !src.openable_open + if(src.openable_open) + icon_state = "[initial(icon_state)]_o" + to_chat(usr, SPAN_INFO("You open up your jacket, giving yourself a more casual look.")) + else + icon_state = "[initial(icon_state)]" + to_chat(usr, "You button up your jacket. You feel warmer already.") + update_clothing_icon() //so our mob-overlays update + else + to_chat(usr, SPAN_NOTICE("This jacket does not have any functional way of keeping it open and closed.")) + +///obj/item/clothing/suit/sp_personal/basejacket/lightjacket_khaki +// name = "khaki lightjacket" +// icon_state = "lightjacket_khaki" + +/obj/item/clothing/suit/sp_personal/basejacket/lightjacket_red + name = "red lightjacket" + icon_state = "lightjacket_red" + +/obj/item/clothing/suit/sp_personal/basejacket/lightjacket_grey + name = "grey lightjacket" + icon_state = "lightjacket_grey" + +/obj/item/clothing/suit/sp_personal/basejacket/lightjacket_black + name = "black lightjacket" + icon_state = "lightjacket_black" + +/obj/item/clothing/suit/sp_personal/basejacket/lightjacket_brown + name = "brown lightjacket" + icon_state = "lightjacket_brown" + +/obj/item/clothing/suit/sp_personal/basejacket/lightjacket_blue + name = "blue lightjacket" + icon_state = "lightjacket_blue" + +/obj/item/clothing/suit/sp_personal/basejacket/vest_brown + name = "brown puffy vest" + icon_state = "vest_brown" + +/obj/item/clothing/suit/sp_personal/basejacket/vest_tan + name = "tan puffy vest" + icon_state = "vest_tan" + +/obj/item/clothing/suit/sp_personal/basejacket/vest_grey + name = "grey puffy vest" + icon_state = "vest_grey" + +//openable, zippers + +/obj/item/clothing/suit/sp_personal/basejacket/greenpark + name = "green parka" + icon_state = "greenpark" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/navypark + name = "navy parka" + icon_state = "navypark" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/yellowpark + name = "yellow parka" + icon_state = "yellowpark" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/redpark + name = "red parka" + icon_state = "redpark" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/purplepark + name = "purple parka" + icon_state = "purplepark" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/pilot + name = "light aviator jacket" + icon_state = "pilot" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/jacket_tanker + name = "tanker style jacket" + icon_state = "jacket_tanker" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/bomber + name = "bomber jacket" + icon_state = "bomber" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/windbreaker_brown + name = "brown windbreaker" + icon_state = "windbreaker_brown" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/windbreaker_browngreen + name = "brown and green windbreaker" + icon_state = "windbreaker_browngreen" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/windbreaker_gray + name = "gray windbreaker" + icon_state = "windbreaker_gray" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/windbreaker_green + name = "green windbreaker" + icon_state = "windbreaker_green" + openable = "zipper" + +/obj/item/clothing/suit/sp_personal/basejacket/windbreaker_brownlight + name = "light brown windbreaker" + icon_state = "windbreaker_brownlight" + openable = "zipper" + +// openable, buttons + + +/obj/item/clothing/suit/sp_personal/basejacket/bomber2 + name = "bomber jacket" + icon_state = "bomber2" + openable = "buttons" + +/obj/item/clothing/suit/sp_personal/basejacket/coat_tan + name = "tan coat" + icon_state = "coat_tan" + openable = "buttons" + +/obj/item/clothing/suit/sp_personal/basejacket/navycoat_tan + name = "tan navy coat" + icon_state = "navycoat_tan" + openable = "buttons" + +/obj/item/clothing/suit/sp_personal/basejacket/navycoat_whiteheavy + name = "white heavy navy coat" + icon_state = "navycoat_whiteheavy" + openable = "buttons" + +/obj/item/clothing/suit/sp_personal/basejacket/navycoat_greendark + name = "dark olive navy coat" + icon_state = "navycoat_greendark" + openable = "buttons" + +/obj/item/clothing/suit/sp_personal/basejacket/navycoat_greenlight + name = "olive navy coat" + icon_state = "navycoat_greenlight" + openable = "buttons" + +/obj/item/clothing/suit/sp_personal/basejacket/uppcoat + name = "eastern navy coat" + icon_state = "uppcoat" + openable = "buttons" diff --git a/code/modules/clothing/suits/sp_suits.dm b/code/modules/clothing/suits/marine_coat_sp.dm similarity index 100% rename from code/modules/clothing/suits/sp_suits.dm rename to code/modules/clothing/suits/marine_coat_sp.dm diff --git a/code/modules/clothing/under/sp_uniform.dm b/code/modules/clothing/under/marine_uniform_sp.dm similarity index 100% rename from code/modules/clothing/under/sp_uniform.dm rename to code/modules/clothing/under/marine_uniform_sp.dm diff --git a/code/modules/clothing/under/under_sp.dm b/code/modules/clothing/under/under_sp.dm new file mode 100644 index 0000000000..14f5b1f972 --- /dev/null +++ b/code/modules/clothing/under/under_sp.dm @@ -0,0 +1,336 @@ +/obj/item/clothing/under/sp_personal/ +// name = "civilian clothing master item" + desc = "A body conforming layer of light, breathable fabric that is surprisingly warm when worn. Upon closer inspection, the material seems to be softer and retains shapes more than you'd expect. Most accents seem to be made using a colored, hardened resin." + desc_lore = "Suits, uniforms, jumpsuits, whatever you call them, your basic layer of clothing - be it a skirt and/or shorts complimented by socks, a jumpsuit or pants and a shirt - is something you will likely be wearing a lot during your time in space. As such, they are often made from light and durable fabrics. The PST polymer and resin equivalent feels a bit more spongy than typical clothes of this type, but in turn tend to be both more comfortable and easier to wash. Even if it should tear, recycling and remaking the exact same garment is a matter of pushing a single button and waiting a few minutes." + customizable = 1 + name = "colonist jumpsuit" + icon_state = "colonist" + icon = 'icons/obj/sp_clothes/under/icon/under.dmi' +// icon_state = "" + item_icons = list( + WEAR_BODY = 'icons/obj/sp_clothes/under/onmob/under.dmi' + ) + var/openable + var/openable_open + +// Objects with rollable sleeves + +/obj/item/clothing/under/sp_personal/verb/open_jacket() + set category = "Object" + set name = "Roll up extremities" + set src in usr + if(!usr.is_mob_incapacitated()) + switch (openable) + if ("sleeves") + src.openable_open = !src.openable_open + if(src.openable_open) + icon_state = "[initial(icon_state)]_d" + to_chat(usr, SPAN_INFO("You roll up your sleeves. You certainly mean business now, also your clothes are less likely to get dirty.")) + else + icon_state = "[initial(icon_state)]" + to_chat(usr, "You roll down the sleeves, then smmooth out some of the wrinkles on the clothes a bit.") + update_clothing_icon() //so our mob-overlays update + if ("sleevesskirt") + src.openable_open = !src.openable_open + if(src.openable_open) + icon_state = "[initial(icon_state)]_d" + to_chat(usr, SPAN_INFO("You roll up your sleeves and skirt. You certainly mean business now, also your clothes are less likely to get dirty.")) + else + icon_state = "[initial(icon_state)]" + to_chat(usr, "You roll down the sleeves and skirt, then smmooth out some of the wrinkles on the clothes a bit.") + update_clothing_icon() //so our mob-overlays update + else + to_chat(usr, SPAN_NOTICE("The extremities on these clothes can't be rolled up wihtout tearing them.")) + +// The Greyshirt. + +//obj/item/clothing/under/sp_personal/baseunder/colonist +// name = "colonist jumpsuit" +// icon_state = "colonist" + +// No rollable icons + +/obj/item/clothing/under/sp_personal/baseunder/liaison_regular + name = "corporate light brown suit jacket" + icon_state = "liaison_regular" + +/obj/item/clothing/under/sp_personal/baseunder/liaison_suspenders + name = "corporate shirt with suspenders" + icon_state = "liaison_suspenders" + +/obj/item/clothing/under/sp_personal/baseunder/liaison_outing + name = "corporate light brown outing jacket" + icon_state = "liaison_outing" + +/obj/item/clothing/under/sp_personal/baseunder/liaison_formal + name = "corporate tan suit jacket" + icon_state = "liaison_formal" + +/obj/item/clothing/under/sp_personal/baseunder/liaison_outing_red + name = "corporate outing jacket with red shirt" + icon_state = "liaison_outing_red" + +/obj/item/clothing/under/sp_personal/baseunder/liaison_charcoal + name = "corporate charcoal suit jacket" + icon_state = "liaison_charcoal" + +/obj/item/clothing/under/sp_personal/baseunder/synth_cargo_light + name = "shirt and cargo pants" + icon_state = "synth_cargo_light" + +/obj/item/clothing/under/sp_personal/baseunder/trainee_uniform + name = "light brown suit vest" + icon_state = "trainee_uniform" + +/obj/item/clothing/under/sp_personal/baseunder/manager_uniform + name = "blue suit vest" + icon_state = "manager_uniform" + +/obj/item/clothing/under/sp_personal/baseunder/twe_suit + name = "light blue suit vest" + icon_state = "twe_suit" + +/obj/item/clothing/under/sp_personal/baseunder/red_suit + name = "red suit vest" + icon_state = "red_suit" + +/obj/item/clothing/under/sp_personal/baseunder/detective2 + name = "black suit vest" + icon_state = "detective2" + +/obj/item/clothing/under/sp_personal/baseunder/base + name = "steel blue jumpsuit" + icon_state = "base" + +/obj/item/clothing/under/sp_personal/baseunder/lightred + name = "light red jumpsuit" + icon_state = "lightred" + +/obj/item/clothing/under/sp_personal/baseunder/darkred + name = "dark red jumpsuit" + icon_state = "darkred" + +/obj/item/clothing/under/sp_personal/baseunder/yellow + name = "yellow jumpsuit" + icon_state = "yellow" + +/obj/item/clothing/under/sp_personal/baseunder/black + name = "black jumpsuit" + icon_state = "black" + +/obj/item/clothing/under/sp_personal/baseunder/white + name = "white jumpsuit" + icon_state = "white" + +/obj/item/clothing/under/sp_personal/baseunder/pink + name = "pink jumpsuit" + icon_state = "pink" + +/obj/item/clothing/under/sp_personal/baseunder/green + name = "green jumpsuit" + icon_state = "green" + +/obj/item/clothing/under/sp_personal/baseunder/blue + name = "blue jumpsuit" + icon_state = "blue" + +/obj/item/clothing/under/sp_personal/baseunder/lightbrown + name = "light brown jumpsuit" + icon_state = "lightbrown" + +/obj/item/clothing/under/sp_personal/baseunder/brown + name = "brown jumpsuit" + icon_state = "brown" + +/obj/item/clothing/under/sp_personal/baseunder/grey + name = "grey jumpsuit" + icon_state = "grey" + +/obj/item/clothing/under/sp_personal/baseunder/tshirt_w_br + name = "white t-shirt with brown pants" + icon_state = "tshirt_w_br" + +/obj/item/clothing/under/sp_personal/baseunder/tshirt_gray_blu + name = "gray t-shirt with blue pants" + icon_state = "tshirt_gray_blu" + +/obj/item/clothing/under/sp_personal/baseunder/tshirt_r_bla + name = "red t-shirt with black pants" + icon_state = "tshirt_r_bla" + +/obj/item/clothing/under/sp_personal/baseunder/psychturtle + name = "cyan turtleneck" + icon_state = "psychturtle" + +/obj/item/clothing/under/sp_personal/baseunder/syndicate + name = "black 'tactical' turtleneck" + icon_state = "syndicate" + +/obj/item/clothing/under/sp_personal/baseunder/charcoal_suit + name = "charcoal suit" + icon_state = "charcoal_suit" + +/obj/item/clothing/under/sp_personal/baseunder/navy_suit + name = "navy suit" + icon_state = "navy_suit" + +/obj/item/clothing/under/sp_personal/baseunder/burgundy_suit + name = "burgundy suit" + icon_state = "burgundy_suit" + +/obj/item/clothing/under/sp_personal/baseunder/checkered_suit + name = "checkered suit" + icon_state = "checkered_suit" + +/obj/item/clothing/under/sp_personal/baseunder/tan_suit + name = "tan suit" + icon_state = "tan_suit" + +/obj/item/clothing/under/sp_personal/baseunder/black_suit_fem + name = "loosened black suit" + icon_state = "black_suit_fem" + +/obj/item/clothing/under/sp_personal/baseunder/blueskirt + name = "blue shirt with black skirt" + icon_state = "blueskirt" + +/obj/item/clothing/under/sp_personal/baseunder/redskirt + name = "red shirt with black skirt" + icon_state = "redskirt" + +/obj/item/clothing/under/sp_personal/baseunder/purpleskirt + name = "purple shirt with black skirt" + icon_state = "purpleskirt" + +/obj/item/clothing/under/sp_personal/baseunder/blackskirt + name = "black suit blazer with red skirt" + icon_state = "blackskirt" + +/obj/item/clothing/under/sp_personal/baseunder/teal_gown + name = "teal cocktail dress" + icon_state = "teal_gown" + +/obj/item/clothing/under/sp_personal/baseunder/wine_gown + name = "wine cocktail dress" + icon_state = "wine_gown" + +/obj/item/clothing/under/sp_personal/baseunder/midnight_gown + name = "midnight cocktail dress" + icon_state = "midnight_gown" + +// Rollable sleeves + +/obj/item/clothing/under/sp_personal/baseunder/marshal + name = "blue formal shirt and tie" + icon_state = "marshal" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/polsuit + name = "white formal shirt and tie" + icon_state = "polsuit" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/synth_yellow_utility + name = "yellow utility jumpsuit" + icon_state = "synth_yellow_utility" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/synth_blue_utility + name = "blue utility jumpsuit" + icon_state = "synth_blue_utility" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/synth_red_utility + name = "red utility jumpsuit" + icon_state = "synth_red_utility" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/synth_green_utility + name = "green utility jumpsuit" + icon_state = "synth_green_utility" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/ua_civvies + name = "blue shirt and pants" + icon_state = "ua_civvies" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/wy_davisone + name = "brown shirt and pants" + icon_state = "wy_davisone" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/wy_joliet_shopsteward + name = "light brown shirt and pants" + icon_state = "wy_joliet_shopsteward" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/corporate_field + name = "dark blue shirt and pants" + icon_state = "corporate_field" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/corporate_ivy + name = "light blue shirt and pants" + icon_state = "corporate_ivy" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/corporate_formal + name = "shirt and light gray pants" + icon_state = "corporate_formal" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/corporate_black + name = "shirt and black pants" + icon_state = "corporate_black" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/corporate_brown + name = "shirt and brown pants" + icon_state = "corporate_brown" + openable = "sleeves" + +/obj/item/clothing/under/sp_personal/baseunder/corporate_blue + name = "shirt and light blue pants" + icon_state = "corporate_formal" + openable = "sleeves" + +//rollable sleeves and skirts + +/obj/item/clothing/under/sp_personal/baseunder/plaid_red + name = "white jacket with plaid red skirt" + icon_state = "plaid_red" + openable = "sleevesskirt" + +/obj/item/clothing/under/sp_personal/baseunder/plaid_blue + name = "white jacket with plaid blue skirt" + icon_state = "plaid_blue" + openable = "sleevesskirt" + +/obj/item/clothing/under/sp_personal/baseunder/plaid_purple + name = "white jacket with purple red skirt" + icon_state = "plaid_purple" + openable = "sleevesskirt" + +/obj/item/clothing/under/sp_personal/baseunder/plaid_green + name = "white jacket with plaid green skirt" + icon_state = "plaid_green" + openable = "sleevesskirt" + +// admeme + +/obj/item/clothing/under/sp_admin/ + name = "crimson-black dress" + desc = "A high-quality, deep red dress that seems to naturally shimmer in the dark." + desc_lore = "We didn't realize what exactly the Commanders being partially native to Liquid Data streams meant until Alysia designed a dress for Cassandra with by just musing about it in her spare time. This dress was designed from the ground up to fit Cassandra's body and even changes between recycling to adapt to any changes. This is direct editing of Liquid Data streams at an unprecedented rate and that wasn't even all of it." + icon = 'icons/obj/sp_clothes/admin/icon/sp_clothes.dmi' + icon_state = "cass_dress" + item_icons = list( + WEAR_BODY = 'icons/obj/sp_clothes/admin/onmob/sp_clothes.dmi' + ) + +/obj/item/clothing/under/sp_admin/aly + name = "purple-pulse dress" + desc = "A high-quality purple dress that seems to naturally shift between different shades independently of other conditions." + desc_lore = "We knew that they could just program LD data streams, but the realization that Crystalline emitted from their 'implants' came as a shock to everyone. Cassandra would just flick a tear onto a Textile Printer and that was enough to copy that purple design wedding anniversary gift of hers regardless of the device in question being LD enabled or not. This was not regular Crystalline behavior; the question then is what changed. Was the Commander controlling the streams consciously and not telling us, or was there perhaps something else about Liquid Data we didn't understand? " + icon_state = "aly_dress" diff --git a/code/modules/gear_presets/uacm.dm b/code/modules/gear_presets/uacm.dm index 1d377f59f8..6e85aae4bf 100644 --- a/code/modules/gear_presets/uacm.dm +++ b/code/modules/gear_presets/uacm.dm @@ -2,14 +2,14 @@ name = "UACM" /datum/equipment_preset/uacm/basepc - name = "UACM Comissioned Officer" + name = "UACM OV-PST Test Crew Officer" flags = EQUIPMENT_PRESET_START_OF_ROUND|EQUIPMENT_PRESET_MARINE idtype = /obj/item/card/id/dogtag assignment = JOB_UACM_BASEPC rank = JOB_UACM_BASEPC paygrade = "NO1" - role_comm_title = "Officer" + role_comm_title = "PST-TCR" skills = /datum/skills/SO flags = EQUIPMENT_PRESET_EXTRA @@ -20,7 +20,32 @@ /datum/equipment_preset/uacm/basepc/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/uacm/pst_standard(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/uacm/uniform_standard(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/on(new_human), WEAR_L_STORE) + +/datum/equipment_preset/uacm/newpc + name = "UACM Comissioned Officer" + flags = EQUIPMENT_PRESET_START_OF_ROUND|EQUIPMENT_PRESET_MARINE + + idtype = /obj/item/card/id/dogtag + assignment = JOB_UACM_NEWPC + rank = JOB_UACM_NEWPC + paygrade = "NO1" + role_comm_title = "Officer" + skills = /datum/skills/SO + flags = EQUIPMENT_PRESET_EXTRA + + access = list(ACCESS_SP_OVPST_GENERAL_DEFAULT) + + minimap_icon = list("cic" = MINIMAP_ICON_COLOR_BRONZE) + minimap_background = MINIMAP_ICON_BACKGROUND_CIC + +/datum/equipment_preset/uacm/newpc/load_gear(mob/living/carbon/human/new_human) + + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/uacm/pst_standard(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/uacm/uniform_standard(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) @@ -39,7 +64,7 @@ languages = ALL_HUMAN_LANGUAGES /datum/equipment_preset/uacm/rdml/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/uacm/pst_extended(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/dress/blues/general(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/dress(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/dress(new_human), WEAR_HANDS) @@ -63,7 +88,7 @@ if (new_human.client && new_human.client.prefs && (new_human.client.prefs.backbag == 1)) back_item = /obj/item/storage/backpack/security - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/provost(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/uacm/pst_extended(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/uacm/cmisrs_inspector(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(new_human), WEAR_HANDS) @@ -96,9 +121,63 @@ /datum/equipment_preset/uacm/psteng/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/uacm/pst_extended(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/uacm/jumpsuit_engie(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/uacm/engie(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/on(new_human), WEAR_L_STORE) + +/datum/equipment_preset/uacm/Cassandra + name = "OV-PST Cassandra - Dress" + flags = EQUIPMENT_PRESET_START_OF_ROUND|EQUIPMENT_PRESET_MARINE + + idtype = /obj/item/card/id/dogtag + assignment = JOB_UACM_CASSANDRA + rank = JOB_UACM_CASSANDRA + paygrade = "NO5" + role_comm_title = "PST-CSP" + skills = /datum/skills/general + languages = ALL_HUMAN_LANGUAGES + flags = EQUIPMENT_PRESET_EXTRA + + access = list(ACCESS_SP_OVPST_GENERAL_DEFAULT, ACCESS_SP_OVPST_SECURITY_DEFAULT, ACCESS_SP_OVPST_ENGINEERING_DEFAULT, ACCESS_SP_ADMIN) + + minimap_icon = list("cic" = MINIMAP_ICON_COLOR_BRONZE) + minimap_background = MINIMAP_ICON_BACKGROUND_CIC + +/datum/equipment_preset/uacm/Cassandra/load_gear(mob/living/carbon/human/new_human) + + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/uacm/pst_extended(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/sp_admin/(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/sp_admin/(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/discrete(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/sp_admin/(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/on(new_human), WEAR_L_STORE) + +/datum/equipment_preset/uacm/Alysia + name = "OV-PST Alysia - Dress" + flags = EQUIPMENT_PRESET_START_OF_ROUND|EQUIPMENT_PRESET_MARINE + + idtype = /obj/item/card/id/dogtag + assignment = JOB_UACM_ALYSIA + rank = JOB_UACM_ALYSIA + paygrade = "NO5" + role_comm_title = "PST-CE" + skills = /datum/skills/general + languages = ALL_HUMAN_LANGUAGES + flags = EQUIPMENT_PRESET_EXTRA + + access = list(ACCESS_SP_OVPST_GENERAL_DEFAULT, ACCESS_SP_OVPST_SECURITY_DEFAULT, ACCESS_SP_OVPST_ENGINEERING_DEFAULT, ACCESS_SP_ADMIN) + + minimap_icon = list("cic" = MINIMAP_ICON_COLOR_BRONZE) + minimap_background = MINIMAP_ICON_BACKGROUND_CIC + +/datum/equipment_preset/uacm/Alysia/load_gear(mob/living/carbon/human/new_human) + + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/uacm/pst_extended(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/sp_admin/aly(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/sp_admin/aly(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/discrete(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/sp_admin/Aly(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/on(new_human), WEAR_L_STORE) diff --git a/code/modules/maptext_alerts/text_blurbs.dm b/code/modules/maptext_alerts/text_blurbs.dm index 297b02aff3..47fa0524af 100644 --- a/code/modules/maptext_alerts/text_blurbs.dm +++ b/code/modules/maptext_alerts/text_blurbs.dm @@ -156,3 +156,14 @@ but should see their own spawn message even if the player already dropped as USC for(var/mob/M as anything in targets) M.client?.remove_from_screen(T) qdel(T) + +//Sector Patrol +//Song Title blurb +/proc/show_blurb_song(name = "In-Game Name",artist = "Song Artist", title = "Song Title", album = "Song Album") // Formatting is: Bolded [name], new line [artist] - [title], new line [album], album can be nulled not to display last line + var/message_to_display + if (album == null) + message_to_display = "[name]\n[artist] - [title]" + else + message_to_display = "[name]\n[artist] - [title]\n[album]" + for(var/mob/living/mob in world) + show_blurb(GLOB.player_list, duration = 10 SECONDS, message = "[message_to_display]", screen_position = "LEFT+0:16,BOTTOM+1:16", text_alignment = "left", text_color = "#FFFFFF", blurb_key = "song[name]", ignore_key = FALSE, speed = 1) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index c9837e144c..8c682fb157 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -313,6 +313,10 @@ if(!src.head) src.head = W equipped = 1 + if(WEAR_SOCKS) + if(!src.socks) + src.socks = W + equipped = 1 if(WEAR_FEET) if(!src.shoes) src.shoes = W diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 563d0f4107..6e851106cf 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -40,6 +40,7 @@ var/skipsuitstorage = 0 var/skipjumpsuit = 0 var/skipshoes = 0 + var/skipsocks = 0 var/skipmask = 0 var/skipears = 0 var/skipeyes = 0 @@ -51,6 +52,7 @@ skipsuitstorage = wear_suit.flags_inv_hide & HIDESUITSTORAGE skipjumpsuit = wear_suit.flags_inv_hide & HIDEJUMPSUIT skipshoes = wear_suit.flags_inv_hide & HIDESHOES + skipsocks = wear_suit.flags_inv_hide & HIDESHOES if(head) skipmask = head.flags_inv_hide & HIDEMASK @@ -100,65 +102,69 @@ //uniform if(w_uniform && !skipjumpsuit) - msg += "[t_He] [t_is] [w_uniform.get_examine_location(src, user, WEAR_BODY, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_is] wearing [w_uniform.get_examine_line(user)].\n" //head if(head) - msg += "[t_He] [t_is] wearing [head.get_examine_line(user)] [head.get_examine_location(src, user, WEAR_HEAD, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_is] wearing [head.get_examine_line(user)] [head.get_examine_location(src, user, WEAR_HEAD, t_He, t_his, t_him, t_has, t_is)].\n" //suit/armor if(wear_suit) - msg += "[t_He] [t_is] [wear_suit.get_examine_location(src, user, WEAR_JACKET, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_is] wearing [wear_suit.get_examine_line(user)].\n" //suit/armor storage if(s_store && !skipsuitstorage) - msg += "[t_He] [t_is] carrying [s_store.get_examine_line(user)] [s_store.get_examine_location(src, user, WEAR_J_STORE, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_is] carrying [s_store.get_examine_line(user)] [s_store.get_examine_location(src, user, WEAR_J_STORE, t_He, t_his, t_him, t_has, t_is)].\n" //back if(back) - msg += "[t_He] [t_has] [back.get_examine_line(user)] [back.get_examine_location(src, user, WEAR_BACK, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_has] [back.get_examine_line(user)] [back.get_examine_location(src, user, WEAR_BACK, t_He, t_his, t_him, t_has, t_is)].\n" //left hand if(l_hand) - msg += "[t_He] [t_is] holding [l_hand.get_examine_line(user)] [l_hand.get_examine_location(src, user, WEAR_L_HAND, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_is] holding [l_hand.get_examine_line(user)] [l_hand.get_examine_location(src, user, WEAR_L_HAND, t_He, t_his, t_him, t_has, t_is)].\n" //right hand if(r_hand) - msg += "[t_He] [t_is] holding [r_hand.get_examine_line(user)] [r_hand.get_examine_location(src, user, WEAR_R_HAND, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_is] holding [r_hand.get_examine_line(user)] [r_hand.get_examine_location(src, user, WEAR_R_HAND, t_He, t_his, t_him, t_has, t_is)].\n" //gloves if(gloves && !skipgloves) - msg += "[t_He] [t_has] [gloves.get_examine_line(user)] [gloves.get_examine_location(src, user, WEAR_HANDS, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_has] [gloves.get_examine_line(user)] [gloves.get_examine_location(src, user, WEAR_HANDS, t_He, t_his, t_him, t_has, t_is)].\n" else if(hands_blood_color) msg += SPAN_WARNING("[t_He] [t_has] [(hands_blood_color != COLOR_OIL) ? "blood" : "oil"]-stained hands!\n") //belt if(belt) - msg += "[t_He] [t_has] [belt.get_examine_line(user)] [belt.get_examine_location(src, user, WEAR_WAIST, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_has] [belt.get_examine_line(user)] around [t_his] waist.\n" //shoes if(shoes && !skipshoes) - msg += "[t_He] [t_is] wearing [shoes.get_examine_line(user)] [shoes.get_examine_location(src, user, WEAR_FEET, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_is] wearing [shoes.get_examine_line(user)] [shoes.get_examine_location(src, user, WEAR_FEET, t_He, t_his, t_him, t_has, t_is)].\n" else if(feet_blood_color) msg += SPAN_WARNING("[t_He] [t_has] [(feet_blood_color != COLOR_OIL) ? "blood" : "oil"]-stained feet!\n") + //socks + if(socks && !skipsocks) + msg += "[t_He] [t_has] [socks.get_examine_line(user)] on [t_his] legs.\n" + //mask if(wear_mask && !skipmask) - msg += "[t_He] [t_has] [wear_mask.get_examine_line(user)] [wear_mask.get_examine_location(src, user, WEAR_FACE, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_has] [wear_mask.get_examine_line(user)] [wear_mask.get_examine_location(src, user, WEAR_FACE, t_He, t_his, t_him, t_has, t_is)].\n" //eyes if(glasses && !skipeyes) - msg += "[t_He] [t_has] [glasses.get_examine_line(user)] [glasses.get_examine_location(src, user, WEAR_EYES, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "[t_He] [t_has] some [glasses.get_examine_line(user)] [glasses.get_examine_location(src, user, WEAR_EYES, t_He, t_his, t_him, t_has, t_is)].\n" //ears if(!skipears) if(wear_l_ear) - msg += "[t_He] [t_has] [wear_l_ear.get_examine_line(user)] [wear_l_ear.get_examine_location(src, user, WEAR_L_EAR, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "A [wear_l_ear.get_examine_line(user)] is visible in [t_his] left ear.\n" if(wear_r_ear) - msg += "[t_He] [t_has] [wear_r_ear.get_examine_line(user)] [wear_r_ear.get_examine_location(src, user, WEAR_R_EAR, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "A [wear_r_ear.get_examine_line(user)] is visible in [t_his] right ear.\n" //ID if(wear_id) - msg += "[t_He] [t_is] [wear_id.get_examine_location(src, user, WEAR_ID, t_He, t_his, t_him, t_has, t_is)].\n" + msg += "A [wear_id.get_examine_line(user)] hangs around [t_his] neck.\n" //Admin-slept if(sleeping > 8000000) @@ -364,19 +370,19 @@ msg += wound_flavor_text["groin"] if(is_bleeding["groin"]) display_groin = 1 - if(wound_flavor_text["left leg"] && (is_destroyed["left leg"] || (!w_uniform && !skipjumpsuit))) + if(wound_flavor_text["left leg"] && (is_destroyed["left leg"] || (!w_uniform && !skipjumpsuit) || (!socks && !skipsocks))) msg += wound_flavor_text["left leg"] if(is_bleeding["left leg"]) display_leg_left = 1 - if(wound_flavor_text["left foot"]&& (is_destroyed["left foot"] || (!shoes && !skipshoes))) + if(wound_flavor_text["left foot"]&& (is_destroyed["left foot"] || (!shoes && !skipshoes)|| (!socks && !skipsocks))) msg += wound_flavor_text["left foot"] if(is_bleeding["left foot"]) display_foot_left = 1 - if(wound_flavor_text["right leg"] && (is_destroyed["right leg"] || (!w_uniform && !skipjumpsuit))) + if(wound_flavor_text["right leg"] && (is_destroyed["right leg"] || (!w_uniform && !skipjumpsuit)|| (!socks && !skipsocks))) msg += wound_flavor_text["right leg"] if(is_bleeding["right leg"]) display_leg_right = 1 - if(wound_flavor_text["right foot"]&& (is_destroyed["right foot"] || (!shoes && !skipshoes))) + if(wound_flavor_text["right foot"]&& (is_destroyed["right foot"] || (!shoes && !skipshoes)|| (!socks && !skipsocks))) msg += wound_flavor_text["right foot"] if(is_bleeding["right foot"]) display_foot_right = 1 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 4e71b17882..8594f7afed 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -729,6 +729,13 @@ if(istype(I)) I.examine(usr) + if(href_list["descitem"]) + var/obj/item/I = locate(href_list["descitem"]) + if(istype(I)) + to_chat(usr, examine_block(narrate_body("[I.desc]"))) + if(I.desc_lore) + to_chat(usr, SPAN_NOTICE("This has an extended lore description.")) + if(href_list["flavor_change"]) if(usr.client != client) return diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index e611452e9d..a1455f93e9 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -52,6 +52,7 @@ //Equipment slots var/obj/item/clothing/suit/wear_suit = null var/obj/item/clothing/under/w_uniform = null + var/obj/item/clothing/socks/socks = null var/obj/item/clothing/shoes/shoes = null var/obj/item/belt = null var/obj/item/clothing/gloves/gloves = null diff --git a/code/modules/mob/living/carbon/human/human_stripping.dm b/code/modules/mob/living/carbon/human/human_stripping.dm index e346a0a736..05ecbdc66d 100644 --- a/code/modules/mob/living/carbon/human/human_stripping.dm +++ b/code/modules/mob/living/carbon/human/human_stripping.dm @@ -195,6 +195,10 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list( key = STRIPPABLE_ITEM_FEET item_slot = SLOT_FEET +/datum/strippable_item/mob_item_slot/socks + key = STRIPPABLE_ITEM_SOCKS + item_slot = SLOT_SOCKS + /datum/strippable_item/mob_item_slot/suit_storage key = STRIPPABLE_ITEM_SUIT_STORAGE item_slot = SLOT_SUIT_STORE @@ -231,11 +235,11 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list( if(tag.dogtag_taken) to_chat(user, SPAN_WARNING("Someone's already taken [sourcemob]'s information tag.")) return - + if(sourcemob.stat != DEAD) to_chat(user, SPAN_WARNING("You can't take a dogtag's information tag while its owner is alive.")) return - + to_chat(user, SPAN_NOTICE("You take [sourcemob]'s information tag, leaving the ID tag")) tag.dogtag_taken = TRUE tag.icon_state = "dogtag_taken" @@ -244,7 +248,7 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list( newtag.fallen_assgns = list(tag.assignment) newtag.fallen_blood_types = list(tag.blood_type) user.put_in_hands(newtag) - + /datum/strippable_item/mob_item_slot/belt diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 3f419333d2..4fb0c17263 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -58,6 +58,8 @@ return has_limb("head") if(WEAR_FEET) return has_limb("r_foot") && has_limb("l_foot") + if(WEAR_SOCKS) + return has_limb("l_leg") && has_limb("r_leg") if(WEAR_JACKET) return has_limb("chest") if(WEAR_BODY) @@ -112,6 +114,7 @@ wear_suit = null if(I.flags_inv_hide & HIDESHOES) update_inv_shoes() + update_inv_socks() if(I.flags_inv_hide & (HIDEALLHAIR|HIDETOPHAIR|HIDELOWHAIR) ) update_hair() if(I.flags_inv_hide & HIDEJUMPSUIT) @@ -161,6 +164,9 @@ else if (I == shoes) shoes = null update_inv_shoes() + else if (I == socks) + socks = null + update_inv_socks() else if (I == belt) belt = null update_inv_belt() @@ -314,10 +320,15 @@ shoes = equipping_item equipping_item.equipped(src, slot, disable_warning) update_inv_shoes() + if(WEAR_SOCKS) + socks = equipping_item + equipping_item.equipped(src, slot, disable_warning) + update_inv_socks() if(WEAR_JACKET) wear_suit = equipping_item if(wear_suit.flags_inv_hide & HIDESHOES) update_inv_shoes() + update_inv_socks() if(wear_suit.flags_inv_hide & HIDEJUMPSUIT) update_inv_w_uniform() if( wear_suit.flags_inv_hide & (HIDEALLHAIR|HIDETOPHAIR|HIDELOWHAIR) ) @@ -436,6 +447,8 @@ return head if(WEAR_FEET) return shoes + if(WEAR_SOCKS) + return socks if(WEAR_JACKET) return wear_suit if(WEAR_BODY) @@ -472,6 +485,8 @@ return WEAR_HEAD if(I == shoes) return WEAR_FEET + if(I == socks) + return WEAR_SOCKS if(I == wear_suit) return WEAR_JACKET if(I == w_uniform) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 9a0cd177e8..3442c01917 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -296,6 +296,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, update_inv_glasses() update_inv_ears() update_inv_shoes() + update_inv_socks() update_inv_s_store() update_inv_wear_mask() update_inv_head() @@ -425,6 +426,19 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, overlays_standing[SHOES_LAYER] = I apply_overlay(SHOES_LAYER) +/mob/living/carbon/human/update_inv_socks() + remove_overlay(SOCKS_LAYER) + var/image/I + if(socks) + if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) + client.add_to_screen(socks) + socks.screen_loc = hud_used.ui_datum.hud_slot_offset(shoes, hud_used.ui_datum.ui_socks) + if(!((wear_suit && wear_suit.flags_inv_hide & HIDESHOES) || (w_uniform && w_uniform.flags_inv_hide & HIDESHOES))) + I = socks.get_mob_overlay(src, WEAR_SOCKS) + + I.layer = -SOCKS_LAYER + overlays_standing[SOCKS_LAYER] = I + apply_overlay(SOCKS_LAYER) /mob/living/carbon/human/update_inv_s_store() remove_overlay(SUIT_STORE_LAYER) @@ -553,6 +567,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, update_tail_showing() update_inv_w_uniform() update_inv_shoes() + update_inv_socks() update_inv_gloves() update_collar() diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 0d48e8fe9d..d470dcbde9 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -264,6 +264,10 @@ //Atmospheric narration list var/list/saw_narrations = list() + //Queries: CivNet + var/civnet_query + var/civnet_answer + /mob/vv_get_dropdown() . = ..() VV_DROPDOWN_OPTION(VV_HK_EXPLODE, "Trigger Explosion") diff --git a/code/modules/mob/update_icons.dm b/code/modules/mob/update_icons.dm index e70467c791..d7b20adbb8 100644 --- a/code/modules/mob/update_icons.dm +++ b/code/modules/mob/update_icons.dm @@ -49,6 +49,9 @@ /mob/proc/update_inv_shoes() return +/mob/proc/update_inv_socks() + return + /mob/proc/update_inv_glasses() return diff --git a/code/modules/trigger_sp.dm b/code/modules/trigger_sp.dm index 28962eeae1..05de092451 100644 --- a/code/modules/trigger_sp.dm +++ b/code/modules/trigger_sp.dm @@ -12,6 +12,43 @@ if(once) qdel(src) +//Location Blurbs + +/obj/effect/step_trigger/message/seeonce_blurb/ + var/trigger_id = "default" + var/trigger_text = "default trigger text" // Use \n for new lines, single character html tags will work as well, see show_blurb() comments for full info + +/obj/effect/step_trigger/message/seeonce_blurb/Trigger(mob/M) + if(!istype(M) || !M) + return + if(M.client) + if(!("[trigger_id]" in M.saw_narrations)) + M.saw_narrations.Add("[trigger_id]") + var/mobs = list(M) + show_blurb(mobs, duration = 10 SECONDS, message = "[trigger_text]", screen_position = "CENTER,BOTTOM+1.5:16", text_alignment = "center", text_color = "#ffaef2", blurb_key = "[trigger_id]", ignore_key = FALSE, speed = 1) + +//Sector Patrol Area Entry Blurbs + +/obj/effect/step_trigger/message/seeonce_blurb/Dock31 + trigger_id = "Dock31" + trigger_text = "The Outer Veil Primary Supply Terminal\nDock 31\nA quiet and clean entryway into the PST.\nReserved for Test Crew members." + +/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle + trigger_id = "Pinnacle" + trigger_text = "The Outer Veil Primary Supply Terminal\nThe Pinnacle\nThe topmost level of the PST.\nA place to find your way." + +/obj/effect/step_trigger/message/seeonce_blurb/Dorms + trigger_id = "Dorms" + trigger_text = "The Outer Veil Primary Supply Terminal\nDorms, Deck 37\nFresh, cool air and artificial sunlight.\nHome." + +/obj/effect/step_trigger/message/seeonce_blurb/Hideaway + trigger_id = "Hideaway" + trigger_text = "The Outer Veil Primary Supply Terminal\nThe Hideaway, Deck 38\nAn old Task Force 14 hideout.\nA place to relax and look back." + +/obj/effect/step_trigger/message/seeonce_blurb/Testament + trigger_id = "Testament" + trigger_text = "The Outer Veil Primary Supply Terminal\nMUP #03-Upsilon, Deck 38\nGateway to the heart of the station.\nA testament of sacrifice." + //Sector Patrol event specifc /obj/effect/step_trigger/message/seeonce/D31Scn2 @@ -41,79 +78,3 @@ if (M.client.prefs.chargen_birthright == "[CHARGEN_BIRTHRIGHT_OUTERRIM]") to_chat(M, narrate_body("For a split second, you peer into the blackness of deep space. Something moves into the abyss, it feels wrong. It feels like both a familiar, friendly presence and something else lingers somewhere out there, beyond light. The sensation passes as quickly as it comes.")) M.saw_narrations.Add("[trigger_id]") - -/obj/effect/step_trigger/message/seeonce/D31Ent - - trigger_id = "D31Ent" - -/obj/effect/step_trigger/message/seeonce/D31Ent/Trigger(mob/M) - if(!istype(M) || !M) - return - if(M.client) - if(!("[trigger_id]" in M.saw_narrations)) - M.saw_narrations.Add("[trigger_id]") - to_chat(M, narrate_head("The Outer Veil Primary Supply Terminal - Dock 31")) - to_chat(M, narrate_body("Dock 31 is quieter and cleaner than most space station docks you've seen. The first part, the relative quiet, stands out as space stations rarely do not squeak, creak and groan as part of their natural operation.")) - sleep(50) - to_chat(M, narrate_body("You can't help but notice that a lot of the signs, insignia and other visual elements seem to have been applied recently. It would seem the whole area got a serious visual upgrade recently.")) - - -/obj/effect/step_trigger/message/seeonce/Pinnacle - - trigger_id = "Pinnacle" - -/obj/effect/step_trigger/message/seeonce/Pinnacle/Trigger(mob/M) - if(!istype(M) || !M) - return - if(M.client) - if(!("[trigger_id]" in M.saw_narrations)) - M.saw_narrations.Add("[trigger_id]") - to_chat(M, narrate_head("The Outer Veil Primary Supply Terminal - The Pinnacle Entrance Area")) - to_chat(M, narrate_body("The Pinnacle of the PST continues to stand out in terms of how clean and untouched the station seems. It’s hard to tell if this is because the current layer of paint is fresh, or because the station is virtually unused.")) - sleep(50) - to_chat(M, narrate_body("You notice that the rooms of the Pinnacle seem unusually tall and spacious, again something not typically done in space station architecture, where lavish spaces mean using up critical resources, both during production and maintenance.")) - - -/obj/effect/step_trigger/message/seeonce/Dorms - - trigger_id = "Dorms" - -/obj/effect/step_trigger/message/seeonce/Dorms/Trigger(mob/M) - if(!istype(M) || !M) - return - if(M.client) - if(!("[trigger_id]" in M.saw_narrations)) - M.saw_narrations.Add("[trigger_id]") - to_chat(M, narrate_head("The Outer Veil Primary Supply Terminal - Dorms, Deck 37")) - to_chat(M, narrate_body("A rush of fresh, crisp air hits you as you step out of the elevator which immediately makes you feel somewhat uneasy. Supposedly, only the most lavish of the Corporate Arcologies of Mars can spare the expense in power and oxygen itself to afford something frivolous as climate control.")) - sleep(50) - to_chat(M, narrate_body("And yet here it is. Fresh smelling, crisp, cold, pleasant air. It feels almost uncanny how such a small detail your years in the stars made you just assume is a given can gives you a very brief lasting, yet distinct moment of elation as your brain seems to react to the natural looking light and fresh air out its own accord.")) - -/obj/effect/step_trigger/message/seeonce/Crypt - - trigger_id = "Crypt" - -/obj/effect/step_trigger/message/seeonce/Crypt/Trigger(mob/M) - if(!istype(M) || !M) - return - if(M.client) - if(!("[trigger_id]" in M.saw_narrations)) - M.saw_narrations.Add("[trigger_id]") - to_chat(M, narrate_head("Task Force 14 Hideout 007 - 'The Crypt'")) - to_chat(M, narrate_body("You can tell almost immediately after stepping into the room - there was a fire here, possibly a while ago. Space station fires are extremely dangerous to their crews and if set on purpose, typically are considered one of the most hostile wartime actions one can take.")) - sleep(50) - to_chat(M, narrate_body("For what it's worth, the traces of the fire have been covered up very well and someone clearly seems to be keeping this area clean. If you had to guess, you would say that most of the fire was centered around the bookcases scattered around the walls of this large living room-like area as you can see faint scorch marks on the walls.")) -/obj/effect/step_trigger/message/seeonce/CryptInner - - trigger_id = "CryptInner" - -/obj/effect/step_trigger/message/seeonce/CryptInner/Trigger(mob/M) - if(!istype(M) || !M) - return - if(M.client) - if(!("[trigger_id]" in M.saw_narrations)) - M.saw_narrations.Add("[trigger_id]") - to_chat(M, narrate_head("The Testament of Sacrifice")) - to_chat(M, narrate_body("The smell of burnt ozone, like the air after a thunderstorm, hits you almost immediately after you enter the chamber. This is the smell of Liquid Data and Crystalline, the medium used for FTL communications and the byproducts of Hyperspace travel, respectively.")) - sleep(50) - to_chat(M, narrate_body("Sometimes these can be a sign of a serious malfunction, but considering the look of this area, it seems more likely you are near an LD systems cluster, a relay point used for receiving and sending FTL communications, or a similar machine.")) diff --git a/colonialmarines.dme b/colonialmarines.dme index f868b55861..72facc68d5 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -994,6 +994,7 @@ #include "code\game\machinery\vending\vendor_types\intelligence_officer.dm" #include "code\game\machinery\vending\vendor_types\medical.dm" #include "code\game\machinery\vending\vendor_types\requisitions.dm" +#include "code\game\machinery\vending\vendor_types\sectorpatrol.dm" #include "code\game\machinery\vending\vendor_types\supplies.dm" #include "code\game\machinery\vending\vendor_types\wo_vendors.dm" #include "code\game\machinery\vending\vendor_types\antag\antag_clothing.dm" @@ -1161,6 +1162,7 @@ #include "code\game\objects\items\devices\radio\intercom.dm" #include "code\game\objects\items\devices\radio\listening_bugs.dm" #include "code\game\objects\items\devices\radio\radio.dm" +#include "code\game\objects\items\devices\radio\sp_radios.dm" #include "code\game\objects\items\explosives\explosive.dm" #include "code\game\objects\items\explosives\mine.dm" #include "code\game\objects\items\explosives\plastic.dm" @@ -1219,6 +1221,7 @@ #include "code\game\objects\items\reagent_containers\glass\bottle\robot.dm" #include "code\game\objects\items\sectorpatrol\cargo_items.dm" #include "code\game\objects\items\sectorpatrol\crafting_items.dm" +#include "code\game\objects\items\sectorpatrol\modular_sealant.dm" #include "code\game\objects\items\stacks\barbed_wire.dm" #include "code\game\objects\items\stacks\cable_coil.dm" #include "code\game\objects\items\stacks\catwalk.dm" @@ -1392,6 +1395,7 @@ #include "code\game\objects\structures\props\research.dm" #include "code\game\objects\structures\sectorpatrol\event_terminal.dm" #include "code\game\objects\structures\sectorpatrol\admin\admin_event_terminal.dm" +#include "code\game\objects\structures\sectorpatrol\crafting\crafting_customizers.dm" #include "code\game\objects\structures\sectorpatrol\crafting\crafting_finished_structures.dm" #include "code\game\objects\structures\sectorpatrol\crafting\crafting_structures.dm" #include "code\game\objects\structures\sectorpatrol\endpoint\001.dm" @@ -1400,6 +1404,10 @@ #include "code\game\objects\structures\sectorpatrol\endpoint\004.dm" #include "code\game\objects\structures\sectorpatrol\endpoint\005.dm" #include "code\game\objects\structures\sectorpatrol\searchable\search_structures.dm" +#include "code\game\objects\structures\sectorpatrol\terminals\briefing.dm" +#include "code\game\objects\structures\sectorpatrol\terminals\buffer_log.dm" +#include "code\game\objects\structures\sectorpatrol\terminals\civnet.dm" +#include "code\game\objects\structures\sectorpatrol\terminals\efolder_reader.dm" #include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" #include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" #include "code\game\objects\structures\stool_bed_chair_nest\janicart.dm" @@ -1489,6 +1497,7 @@ #include "code\modules\admin\verbs\debug.dm" #include "code\modules\admin\verbs\freeforghosts.dm" #include "code\modules\admin\verbs\getlogs.dm" +#include "code\modules\admin\verbs\icquery.dm" #include "code\modules\admin\verbs\load_event_level.dm" #include "code\modules\admin\verbs\map_template_loadverb.dm" #include "code\modules\admin\verbs\mob_verbs.dm" @@ -1598,12 +1607,12 @@ #include "code\modules\clothing\head\collectable.dm" #include "code\modules\clothing\head\hardhat.dm" #include "code\modules\clothing\head\head.dm" +#include "code\modules\clothing\head\head_sp.dm" #include "code\modules\clothing\head\helmet.dm" #include "code\modules\clothing\head\jobs.dm" #include "code\modules\clothing\head\misc.dm" #include "code\modules\clothing\head\misc_special.dm" #include "code\modules\clothing\head\soft_caps.dm" -#include "code\modules\clothing\head\sp_head.dm" #include "code\modules\clothing\masks\breath.dm" #include "code\modules\clothing\masks\gasmask.dm" #include "code\modules\clothing\masks\miscellaneous.dm" @@ -1611,6 +1620,7 @@ #include "code\modules\clothing\shoes\magboots.dm" #include "code\modules\clothing\shoes\marine_shoes.dm" #include "code\modules\clothing\shoes\miscellaneous.dm" +#include "code\modules\clothing\shoes\shoes_sp.dm" #include "code\modules\clothing\socks\socks.dm" #include "code\modules\clothing\spacesuits\breaches.dm" #include "code\modules\clothing\spacesuits\captain.dm" @@ -1619,11 +1629,12 @@ #include "code\modules\clothing\spacesuits\void.dm" #include "code\modules\clothing\suits\armor.dm" #include "code\modules\clothing\suits\bio.dm" +#include "code\modules\clothing\suits\civilian_sp.dm" #include "code\modules\clothing\suits\jobs.dm" #include "code\modules\clothing\suits\labcoat.dm" #include "code\modules\clothing\suits\marine_coat.dm" +#include "code\modules\clothing\suits\marine_coat_sp.dm" #include "code\modules\clothing\suits\miscellaneous.dm" -#include "code\modules\clothing\suits\sp_suits.dm" #include "code\modules\clothing\suits\storage.dm" #include "code\modules\clothing\suits\utility.dm" #include "code\modules\clothing\suits\marine_armor\_marine_armor.dm" @@ -1635,12 +1646,13 @@ #include "code\modules\clothing\under\color.dm" #include "code\modules\clothing\under\gimmick.dm" #include "code\modules\clothing\under\marine_uniform.dm" +#include "code\modules\clothing\under\marine_uniform_sp.dm" #include "code\modules\clothing\under\miscellaneous.dm" #include "code\modules\clothing\under\rank_pins.dm" #include "code\modules\clothing\under\shorts.dm" -#include "code\modules\clothing\under\sp_uniform.dm" #include "code\modules\clothing\under\ties.dm" #include "code\modules\clothing\under\under.dm" +#include "code\modules\clothing\under\under_sp.dm" #include "code\modules\clothing\under\jobs\civilian.dm" #include "code\modules\clothing\under\jobs\engineering.dm" #include "code\modules\clothing\under\jobs\medsci.dm" diff --git a/icons/mob/hud/human_bronze.dmi b/icons/mob/hud/human_bronze.dmi index 11a7240572..ab1a5c1ef5 100644 Binary files a/icons/mob/hud/human_bronze.dmi and b/icons/mob/hud/human_bronze.dmi differ diff --git a/icons/mob/hud/human_dark.dmi b/icons/mob/hud/human_dark.dmi index e572dcb835..91675006ad 100644 Binary files a/icons/mob/hud/human_dark.dmi and b/icons/mob/hud/human_dark.dmi differ diff --git a/icons/mob/hud/human_glass.dmi b/icons/mob/hud/human_glass.dmi index 19fb430d84..85134cb4dd 100644 Binary files a/icons/mob/hud/human_glass.dmi and b/icons/mob/hud/human_glass.dmi differ diff --git a/icons/mob/hud/human_green.dmi b/icons/mob/hud/human_green.dmi index 9b235a75d8..ec0bec80f2 100644 Binary files a/icons/mob/hud/human_green.dmi and b/icons/mob/hud/human_green.dmi differ diff --git a/icons/mob/hud/human_grey.dmi b/icons/mob/hud/human_grey.dmi index 5a522dc305..4448f2c735 100644 Binary files a/icons/mob/hud/human_grey.dmi and b/icons/mob/hud/human_grey.dmi differ diff --git a/icons/mob/hud/human_holo.dmi b/icons/mob/hud/human_holo.dmi index 1554480bd3..a9d63e2493 100644 Binary files a/icons/mob/hud/human_holo.dmi and b/icons/mob/hud/human_holo.dmi differ diff --git a/icons/mob/hud/human_midnight.dmi b/icons/mob/hud/human_midnight.dmi index c6fc989fec..278f656c44 100644 Binary files a/icons/mob/hud/human_midnight.dmi and b/icons/mob/hud/human_midnight.dmi differ diff --git a/icons/mob/hud/human_old.dmi b/icons/mob/hud/human_old.dmi index e8b682c7c8..624833aaf4 100644 Binary files a/icons/mob/hud/human_old.dmi and b/icons/mob/hud/human_old.dmi differ diff --git a/icons/mob/hud/human_orange.dmi b/icons/mob/hud/human_orange.dmi index 8a46dad89e..1e237e5fe6 100644 Binary files a/icons/mob/hud/human_orange.dmi and b/icons/mob/hud/human_orange.dmi differ diff --git a/icons/mob/hud/human_red.dmi b/icons/mob/hud/human_red.dmi index 06725e04a6..08ba036ae8 100644 Binary files a/icons/mob/hud/human_red.dmi and b/icons/mob/hud/human_red.dmi differ diff --git a/icons/mob/hud/human_white.dmi b/icons/mob/hud/human_white.dmi index be8ad63426..eb8c53745f 100644 Binary files a/icons/mob/hud/human_white.dmi and b/icons/mob/hud/human_white.dmi differ diff --git a/icons/mob/humans/onmob/socks.dmi b/icons/mob/humans/onmob/socks.dmi deleted file mode 100644 index 69f624731e..0000000000 Binary files a/icons/mob/humans/onmob/socks.dmi and /dev/null differ diff --git a/icons/obj/items/clothing/socks.dmi b/icons/obj/items/clothing/socks.dmi deleted file mode 100644 index 20fb51f58b..0000000000 Binary files a/icons/obj/items/clothing/socks.dmi and /dev/null differ diff --git a/icons/obj/items/floortiles.dmi b/icons/obj/items/floortiles.dmi index e9137973fc..899742f2fb 100644 Binary files a/icons/obj/items/floortiles.dmi and b/icons/obj/items/floortiles.dmi differ diff --git a/icons/obj/items/sp_cargo.dmi b/icons/obj/items/sp_cargo.dmi index 28f44782e9..5e6e89a054 100644 Binary files a/icons/obj/items/sp_cargo.dmi and b/icons/obj/items/sp_cargo.dmi differ diff --git a/icons/obj/sp_clothes/admin/icon/sp_clothes.dmi b/icons/obj/sp_clothes/admin/icon/sp_clothes.dmi new file mode 100644 index 0000000000..e80f56f2eb Binary files /dev/null and b/icons/obj/sp_clothes/admin/icon/sp_clothes.dmi differ diff --git a/icons/obj/sp_clothes/admin/onmob/sp_clothes.dmi b/icons/obj/sp_clothes/admin/onmob/sp_clothes.dmi new file mode 100644 index 0000000000..4e9b880f7c Binary files /dev/null and b/icons/obj/sp_clothes/admin/onmob/sp_clothes.dmi differ diff --git a/icons/obj/sp_clothes/back/icon/back.dmi b/icons/obj/sp_clothes/back/icon/back.dmi new file mode 100644 index 0000000000..dde2a714d5 Binary files /dev/null and b/icons/obj/sp_clothes/back/icon/back.dmi differ diff --git a/icons/obj/sp_clothes/back/onmob/back.dmi b/icons/obj/sp_clothes/back/onmob/back.dmi new file mode 100644 index 0000000000..ae419b24f1 Binary files /dev/null and b/icons/obj/sp_clothes/back/onmob/back.dmi differ diff --git a/icons/obj/sp_clothes/coats/icon/suit.dmi b/icons/obj/sp_clothes/coats/icon/suit.dmi new file mode 100644 index 0000000000..fccc993bdc Binary files /dev/null and b/icons/obj/sp_clothes/coats/icon/suit.dmi differ diff --git a/icons/obj/sp_clothes/coats/onmob/suit.dmi b/icons/obj/sp_clothes/coats/onmob/suit.dmi new file mode 100644 index 0000000000..07c51382cb Binary files /dev/null and b/icons/obj/sp_clothes/coats/onmob/suit.dmi differ diff --git a/icons/obj/sp_clothes/hats/icon/hats.dmi b/icons/obj/sp_clothes/hats/icon/hats.dmi new file mode 100644 index 0000000000..9452e87e40 Binary files /dev/null and b/icons/obj/sp_clothes/hats/icon/hats.dmi differ diff --git a/icons/obj/sp_clothes/hats/onmob/hats.dmi b/icons/obj/sp_clothes/hats/onmob/hats.dmi new file mode 100644 index 0000000000..9afffedc9f Binary files /dev/null and b/icons/obj/sp_clothes/hats/onmob/hats.dmi differ diff --git a/icons/obj/sp_clothes/shoes/icon/shoes.dmi b/icons/obj/sp_clothes/shoes/icon/shoes.dmi new file mode 100644 index 0000000000..72ec465a43 Binary files /dev/null and b/icons/obj/sp_clothes/shoes/icon/shoes.dmi differ diff --git a/icons/obj/sp_clothes/shoes/onmob/shoes.dmi b/icons/obj/sp_clothes/shoes/onmob/shoes.dmi new file mode 100644 index 0000000000..f4c3a02a69 Binary files /dev/null and b/icons/obj/sp_clothes/shoes/onmob/shoes.dmi differ diff --git a/icons/obj/sp_clothes/socks/icon/socks.dmi b/icons/obj/sp_clothes/socks/icon/socks.dmi new file mode 100644 index 0000000000..728a405dfd Binary files /dev/null and b/icons/obj/sp_clothes/socks/icon/socks.dmi differ diff --git a/icons/obj/sp_clothes/socks/onmob/socks.dmi b/icons/obj/sp_clothes/socks/onmob/socks.dmi new file mode 100644 index 0000000000..82d857923a Binary files /dev/null and b/icons/obj/sp_clothes/socks/onmob/socks.dmi differ diff --git a/icons/obj/sp_clothes/under/icon/under.dmi b/icons/obj/sp_clothes/under/icon/under.dmi new file mode 100644 index 0000000000..c0a1d1d56d Binary files /dev/null and b/icons/obj/sp_clothes/under/icon/under.dmi differ diff --git a/icons/obj/sp_clothes/under/onmob/under.dmi b/icons/obj/sp_clothes/under/onmob/under.dmi new file mode 100644 index 0000000000..b62535cbe3 Binary files /dev/null and b/icons/obj/sp_clothes/under/onmob/under.dmi differ diff --git a/icons/obj/structures/machinery/customizer.dmi b/icons/obj/structures/machinery/customizer.dmi new file mode 100644 index 0000000000..51c976555c Binary files /dev/null and b/icons/obj/structures/machinery/customizer.dmi differ diff --git a/icons/obj/structures/machinery/vending_sp.dmi b/icons/obj/structures/machinery/vending_sp.dmi new file mode 100644 index 0000000000..d027f8d67c Binary files /dev/null and b/icons/obj/structures/machinery/vending_sp.dmi differ diff --git a/icons/taskbar/gml_distress.png b/icons/taskbar/gml_distress.png index 91df2ff4d4..03bc778d6b 100644 Binary files a/icons/taskbar/gml_distress.png and b/icons/taskbar/gml_distress.png differ diff --git a/icons/turf/almayer.dmi b/icons/turf/almayer.dmi index 3a80c31169..10645ceb93 100644 Binary files a/icons/turf/almayer.dmi and b/icons/turf/almayer.dmi differ diff --git a/icons/turf/modular_nrps.dmi b/icons/turf/modular_nrps.dmi new file mode 100644 index 0000000000..1a0c0a358f Binary files /dev/null and b/icons/turf/modular_nrps.dmi differ diff --git a/icons/ui_icons/inventory/socks.png b/icons/ui_icons/inventory/socks.png new file mode 100644 index 0000000000..9e07ece83f Binary files /dev/null and b/icons/ui_icons/inventory/socks.png differ diff --git a/maps/map_files/SectorPatrol/OuterVeilPST/ovpst.dmm b/maps/map_files/SectorPatrol/OuterVeilPST/ovpst.dmm index d6c04cb40b..a9f37651b7 100644 --- a/maps/map_files/SectorPatrol/OuterVeilPST/ovpst.dmm +++ b/maps/map_files/SectorPatrol/OuterVeilPST/ovpst.dmm @@ -1,10 +1,18 @@ -"aa" = (/obj/effect/step_trigger/message/seeonce/Crypt,/turf/open/floor/almayer{icon_state = "black"; dir = 2},/area/ovpst) +"aa" = (/turf/open/floor/almayer{icon_state = "black"; dir = 2},/area/ovpst) +"ac" = (/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) +"af" = (/obj/structure/closet/secure_closet/sp{pixel_x = -8; pixel_y = -2},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) +"ag" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "ai" = (/turf/open/floor/almayer/uscm/directional{icon_state = "logo_directional1"},/area/ovpst) +"am" = (/turf/open/floor/plating/modular/gray,/area/ovpst) "ao" = (/turf/open/floor/almayer{dir = 6; icon_state = "blue"},/area/ovpst) "ap" = (/obj/effect/decal/info_tag/pst/sec{pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- SEC - D01 -
Dock 31 Front Security Office."; desc_lore = "The label SEC indicates doors and areas that require an elevated security clearance, typically restricted for MPs and CMISRS agents who are assigned the security class D on the PST. D01 indicates this area requires general security clearance, available to anyone with proper certification but not requiring any formal rank. This door leads to a small office overseeing the intake of cargo and personnel via Dock 31."},/turf/open/floor/almayer{dir = 1; icon_state = "redcorner"},/area/ovpst) "ar" = (/turf/open/floor/almayer{dir = 6; icon_state = "orange"},/area/ovpst) -"aA" = (/obj/item/crafting/packages/drawer{pixel_x = 9; pixel_y = -2},/obj/item/crafting/packages/drawer{pixel_x = -8; pixel_y = -3},/obj/item/crafting/packages/drawer{pixel_x = -9; pixel_y = 10},/obj/item/crafting/packages/drawer{pixel_x = 9; pixel_y = 12},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"aA" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector A, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{dir = 1; icon_state = "orange"},/area/ovpst) +"aD" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{icon_state = "emerald"},/area/ovpst) +"aH" = (/obj/effect/step_trigger/message/seeonce_blurb/Hideaway,/turf/open/floor/almayer{icon_state = "black"; dir = 8},/area/ovpst) "aM" = (/turf/open/floor/almayer{icon_state = "silver"; dir = 4},/area/ovpst) +"aO" = (/turf/open/floor/plating/almayer{icon_state = "redfull"},/area/ovpst) +"aS" = (/obj/effect/step_trigger/message/seeonce_blurb/Dock31,/turf/open/floor/almayer{dir = 8; icon_state = "emeraldcorner"},/area/ovpst) "aX" = (/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_e_d31) "aZ" = (/turf/open/floor/almayer{icon_state = "blue"},/area/ovpst) "bl" = (/turf/open/floor/almayer{icon_state = "silvercorner"; dir = 1},/area/ovpst) @@ -13,168 +21,219 @@ "bC" = (/obj/effect/decal/cargo_stripes{icon_state = "ne"},/turf/open/floor/almayer{dir = 4; icon_state = "redcorner"},/area/ovpst) "bQ" = (/obj/structure/window/framed/almayer,/obj/structure/window/framed/almayer,/turf/open/floor/plating,/area/ovpst) "bR" = (/obj/structure/window/framed/almayer/hull,/turf/open/floor/almayer{icon_state = "plate"},/area/ovpst/airlock/d31) -"bW" = (/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer,/area/ovpst) +"bW" = (/obj/structure/bed/chair/modular/office{dir = 4},/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/turf/open/floor/almayer,/area/ovpst) "ce" = (/obj/structure/bed/sofa/vert/grey/top,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "co" = (/turf/open/floor/almayer{icon_state = "orange"},/area/ovpst) "cH" = (/obj/effect/decal/cargo_stripes{icon_state = "nws"},/turf/open/floor/almayer{dir = 1; icon_state = "red"},/area/ovpst) "cO" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{opacity = 0},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "cT" = (/obj/structure/machinery/light/small{dir = 4; light_color = "#d3a7d4"},/obj/effect/step_trigger/message/seeonce/D31Scn2,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"cV" = (/obj/structure/ladder{id = "hd_sw_1"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "cW" = (/obj/structure/surface/table/reinforced/black,/obj/item/reagent_container/food/snacks/packaged_burger{pixel_y = 9},/obj/item/reagent_container/food/snacks/packaged_burger{pixel_x = -11},/obj/item/reagent_container/food/snacks/packaged_burger{pixel_x = -14; pixel_y = 4},/obj/item/reagent_container/food/snacks/packaged_burger{pixel_x = -6},/obj/item/reagent_container/food/snacks/packaged_burger{pixel_x = -5; pixel_y = 14},/obj/item/reagent_container/food/snacks/packaged_burger{pixel_x = -15; pixel_y = 12},/obj/item/reagent_container/food/snacks/packaged_burger{pixel_x = -8; pixel_y = 18},/obj/item/reagent_container/food/snacks/packaged_burrito{pixel_x = 9; pixel_y = 10},/obj/item/reagent_container/food/snacks/packaged_burrito{pixel_x = 12},/obj/item/reagent_container/food/snacks/packaged_burrito{pixel_x = 5; pixel_y = -2},/obj/item/reagent_container/food/snacks/packaged_burrito{pixel_x = 10},/obj/item/reagent_container/food/snacks/packaged_burrito{pixel_x = 15; pixel_y = 3},/obj/item/reagent_container/food/snacks/packaged_burrito{pixel_x = 10; pixel_y = 7},/obj/item/reagent_container/food/snacks/packaged_burrito{pixel_x = 12; pixel_y = 12},/obj/item/reagent_container/food/snacks/packaged_burrito{pixel_x = 10; pixel_y = 17},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"da" = (/turf/open/floor/almayer{icon_state = "black"; dir = 10},/area/ovpst) "db" = (/obj/structure/surface/table/reinforced/almayer_blend/north,/obj/structure/machinery/door/poddoor/shutters/almayer{id = "scn1_shutter"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"de" = (/obj/structure/crafting/packages/bed,/turf/open/floor/plating/modular,/area/ovpst) +"de" = (/obj/structure/closet/modular/drawers,/turf/open/floor/plating/modular/gray,/area/ovpst) +"dq" = (/turf/open/space/basic,/area/ovpst/airlock/ele_d_pin) +"dB" = (/obj/structure/machinery/light{dir = 1},/obj/structure/machinery/light/marker/admin/pythia/triumphant,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"dE" = (/obj/effect/decal/info_tag/pst/lby{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- LBY -
Dorms Deck 37 entrance lobby"; pixel_y = 0; pixel_x = -16},/turf/open/floor/almayer{icon_state = "black"; dir = 6},/area/ovpst) "dK" = (/obj/docking_port/stationary/emergency_response/external/pst_dock31,/turf/open/space/basic,/area/space) "dP" = (/obj/effect/decal/info_tag/pst/lby{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- LBY - R37 -
Dorms Deck 37 entrance lobby"},/turf/open/floor/almayer{dir = 1; icon_state = "red"},/area/ovpst) "ef" = (/obj/structure/machinery/light,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "eg" = (/obj/effect/decal/info_tag/pst/scn{dir = 1; pixel_x = -16; desc_lore = "The label SCN indicates doors and areas where computer systems actively scan its inhabitants and contents. This door leads to the secondary Dock 31 scanner, but official documentation does not specify what scan is performed here, only that it is a check that involves reviewing the biographies of scanned personnel. Areas like this need to be clearly marked due to privacy and personal data handling laws passed back in the UA in the aftermath of the Colony Wars."; desc = "UACM Outer Veil Primary Supply Terminal
- SCN -
Entrance Secondary Scanner D31-PT-SCN001 and EL-E Pathway"},/turf/open/floor/almayer{dir = 6; icon_state = "emerald"},/area/ovpst) "em" = (/obj/structure/window/framed/almayer,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "eq" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{dir = 1; opacity = 0},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"eA" = (/obj/structure/searchable/puzzle04/bookcase/full1,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"ew" = (/obj/structure/machinery/light,/turf/open/space/basic,/area/space) +"eA" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/securedoor.dmi'; dir = 1},/obj/structure/machinery/door/poddoor/almayer/locked,/turf/open/floor/almayer,/area/ovpst) "eD" = (/turf/open/floor/almayer/uscm/directional{dir = 1; icon_state = "logo_c"},/area/ovpst) -"eJ" = (/obj/structure/searchable/puzzle04/bunk_locker/full1,/turf/open/floor/almayer,/area/ovpst) -"eV" = (/obj/structure/searchable/puzzle04/bunk_chest/full4,/turf/open/floor/almayer,/area/ovpst) +"eJ" = (/obj/structure/surface/table/reinforced/black,/obj/structure/eventterminal/civnet{dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"eN" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector B, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{icon_state = "orange-silver"; dir = 1},/area/ovpst) +"eV" = (/obj/structure/machinery/door/poddoor/almayer/locked{id = "crypt-c"},/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) "eW" = (/turf/closed/wall/almayer/outer,/area/ovpst/airlock/ele_e_pin) "eZ" = (/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_e_pin) "fa" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin/elevator_outer{id = "e-d31"},/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_e_d31) "ff" = (/obj/structure/machinery/light,/turf/open/floor/almayer{dir = 1; icon_state = "red"},/area/ovpst) "fk" = (/obj/structure/bed/chair/modular/office{dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"fp" = (/obj/effect/decal/info_tag/pst/drm{dir = 8; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- DRM -
Dorms, Deck 37, Sector B"},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 8; icon_state = "greencorner"},/area/ovpst) "fs" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/plating/modular,/area/ovpst) "fv" = (/obj/structure/machinery/light{dir = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"fA" = (/obj/effect/decal/info_tag/pst/ele{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- EL-E -
Primary Access Elevator - E"},/obj/effect/step_trigger/message/seeonce/Pinnacle,/turf/open/floor/almayer{icon_state = "emeraldcorner"},/area/ovpst) +"fA" = (/obj/effect/decal/info_tag/pst/ele{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- EL-E -
Primary Access Elevator - E"},/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{icon_state = "emeraldcorner"},/area/ovpst) "fE" = (/obj/structure/sink{dir = 4; pixel_y = 3; pixel_x = 12},/obj/structure/mirror{pixel_y = 30},/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) +"fJ" = (/obj/structure/ladder{id = "hd_se_1"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "fO" = (/obj/effect/decal/info_tag/pst/t14{pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- T-14 -
Hideaway O37"},/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 1},/area/ovpst) -"fV" = (/obj/structure/ladder{id = "crypt1"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"fV" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{icon = 'icons/obj/structures/doors/Door2x1_secure2.dmi'; id = "crypt_airlock_front"; locked = 1},/obj/structure/machinery/door/poddoor/almayer/locked{id = "crypt-b"},/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) "go" = (/obj/structure/window/framed/almayer,/turf/open/floor/almayer{dir = 2; icon_state = "redcorner"},/area/ovpst) "gt" = (/turf/open/floor/almayer{dir = 8; icon_state = "emerald"},/area/ovpst) -"gD" = (/obj/structure/machinery/light{dir = 8},/obj/structure/bookcase,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"gv" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/secdoor.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "redfull"; dir = 4},/area/ovpst) +"gw" = (/obj/structure/machinery/light/small,/obj/structure/surface/modular/table,/obj/item/device/modular/lamp,/turf/open/floor/plating/modular/gray,/area/ovpst) +"gD" = (/obj/structure/ladder{id = "hd_se_2"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"gM" = (/obj/structure/surface/table/reinforced/black,/obj/structure/eventterminal/briefing_terminal,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"gO" = (/obj/effect/decal/info_tag/pst/rec{pixel_y = 0; desc = "UACM Outer Veil Primary Supply Terminal
- REC -
Dorm Recreational and Social Areas"; desc_lore = "The label REC indicates recreational areas, which often include public CivNet access points but can essentially be any area dedicated to down time or recreation on the station, including cafeterias and kitchens.Each dorm level on the PST has a communal area like the one this door leads to, that has a kitchen, cafeteria that peeks out into its lobby and room for several other recreational facilities that tend to be customized to the dorm's inhabitants' specific needs."},/turf/open/floor/plating/almayer{icon_state = "silver-orange"; dir = 1},/area/ovpst) "gR" = (/obj/effect/decal/info_tag/pst/sec{dir = 1; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- SEC - D01 -
Dock 31 Front Security Office."; desc_lore = "The label SEC indicates doors and areas that require an elevated security clearance, typically restricted for MPs and CMISRS agents who are assigned the security class D on the PST. D01 indicates this area requires general security clearance, available to anyone with proper certification but not requiring any formal rank. This door leads to a small office overseeing the intake of cargo and personnel via Dock 31."},/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) "gY" = (/obj/effect/decal/info_tag/pst/ofc{dir = 4; pixel_y = 16; desc_lore = "The label OFC indicates office areas, which as the name suggests are typically areas with some specific, bureaucratic function assigned to them and can be anything from personal offices of high-ranking personnel to teaching rooms and spare, unused generic spaces. This door leads to one of the orientation offices, used to brief and greet new arrivals to the station."; desc = "UACM Outer Veil Primary Supply Terminal
- OFC -
Entrance Orientation Office"},/turf/open/floor/almayer{dir = 4; icon_state = "silvercorner"},/area/ovpst) "hd" = (/turf/open/floor/holofloor/grass,/area/ovpst) "hj" = (/obj/docking_port/stationary/emergency_response/pst_start,/turf/open/space/basic,/area/space) -"hr" = (/obj/effect/decal/info_tag/pst/drm{dir = 8; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- DRM -
Dorms, Deck 37, Sector A"},/turf/open/floor/almayer{dir = 8; icon_state = "greencorner"},/area/ovpst) -"hu" = (/obj/effect/step_trigger/message/seeonce/Crypt,/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 2},/area/ovpst) +"hr" = (/turf/open/floor/plating/almayer{icon_state = "orangefull"; dir = 8},/area/ovpst) +"hu" = (/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 2},/area/ovpst) "hD" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general/admin{icon = 'icons/obj/structures/doors/securedoor.dmi'; dir = 1; locked = TRUE; icon_state = "door_locked"; id = "scn1_enter"; id_tag = "scn1_enter"},/turf/open/floor/almayer{icon_state = "emeraldfull"},/area/ovpst) "hE" = (/turf/open/floor/almayer{icon_state = "emeraldfull"},/area/ovpst) "hG" = (/obj/effect/decal/info_tag/pst/int{desc = "UACM Outer Veil Primary Supply Terminal
- -INT- -
Dock 31 Security Sub Processors Diagnostics and Maintenance Room - PYTHIA Scanner Cluster D13-1 - PYTHIA Scanner Cluster D13-2 - PYTHIA Scanner Cluster D13-3"; desc_lore = "The label -INT- indicates intersections. Labels like this are typically placed on the 'primary' pathway but have information regarding all pathways at an intersection and list all pathways at an intersection starting from the left-handed turn (if one exists) and moving in a clockwise fashion until all turns are covered. According to the label, the left side of this intersection leads to the diagnostics and maintenance room, where you should find everything you need to service issues with the scanner. The remaining turns all lead into 'PYTHIA' Scanner Clusters; one marked D13-1 above the sign, D13-2 to its right and D13-3 below. All these seem to be related to the secondary scan of the Dock, but there is no information available in either public or military sources about how exactly does the scanner operate, other than a general indication that it reviews a person's security and service record."},/turf/open/floor/almayer{dir = 6; icon_state = "blue"},/area/ovpst) -"hM" = (/turf/open/floor/almayer{dir = 8; icon_state = "green"},/area/ovpst) -"hS" = (/obj/structure/searchable/puzzle04/bookcase/full2,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"hJ" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{icon_state = "black"; dir = 6},/area/ovpst) +"hM" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 8; icon_state = "green"},/area/ovpst) +"hS" = (/obj/structure/machinery/light/small,/obj/item/crafting/packages/lamp,/turf/open/floor/plating/modular,/area/ovpst) "hW" = (/turf/open/floor/almayer{icon_state = "whitecorner"},/area/ovpst) -"hY" = (/obj/structure/bed/chair/modular/office,/turf/open/floor/almayer,/area/ovpst) +"hY" = (/obj/structure/surface/table/reinforced/black,/obj/structure/eventterminal/civnet,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "hZ" = (/turf/open/floor/almayer{dir = 1; icon_state = "silvercorner"},/area/ovpst) "ia" = (/obj/structure/surface/table/reinforced/black,/obj/structure/machinery/light/small{dir = 8; light_id = "cargointake"},/obj/structure/eventterminal/puzzle02/cargoparse{dir = 4; pixel_x = 7; pixel_y = 3},/turf/open/floor/almayer{dir = 8; icon_state = "orange"},/area/ovpst) -"ih" = (/obj/item/crafting/packages/chair{pixel_x = -8; pixel_y = -4},/obj/item/crafting/packages/chair{pixel_x = -7; pixel_y = 8},/obj/item/crafting/packages/chair{pixel_x = 9; pixel_y = -4},/obj/item/crafting/packages/chair{pixel_x = 10; pixel_y = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"ih" = (/obj/structure/machinery/shower{dir = 8},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) "io" = (/turf/open/floor/almayer,/area/ovpst) +"iq" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 0; pixel_x = -16; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance Liquid data channels are wired all though the station and this door seems to lead to one of them. There is likely nothing but dusty, humming computers inside."; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Sector D Production and T14 access"; dir = 8},/obj/structure/machinery/light/small{dir = 8; light_id = "cargointake"},/turf/open/floor/plating/almayer{icon_state = "orangecorner"; dir = 8},/area/ovpst) "it" = (/obj/effect/decal/info_tag/pst/eld{pixel_y = 0; dir = 8; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - G01 - Elevator Shaft D
"},/turf/open/floor/almayer{dir = 8; icon_state = "emeraldcorner"},/area/ovpst) -"iG" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1generic.dmi'; dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"iz" = (/obj/structure/machinery/light/small{dir = 8; light_id = "cargointake"},/turf/open/floor/almayer{icon_state = "black"; dir = 1},/area/ovpst) +"iD" = (/obj/structure/machinery/cm_vending/sorted/sectorpatrol/cigrette{density = 0; pixel_y = 20},/turf/open/floor/almayer,/area/ovpst) +"iG" = (/obj/effect/decal/info_tag/pst/san{desc = "UACM Outer Veil Primary Supply Terminal
- SAN - Deck 37 Dorm Toilets
"; pixel_x = -16; pixel_y = 16},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{icon_state = "silvercorner"; dir = 1},/area/ovpst) "iI" = (/obj/structure/machinery/light{dir = 4},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "iN" = (/obj/structure/machinery/light/small,/turf/open/floor/plating/modular,/area/ovpst) -"iO" = (/obj/effect/decal/info_tag/pst/d31{dir = 1; desc_lore = "Main Airlocks are effectively entrances and exits from space stations and ships, used by smaller ships that latch onto the airlocks, typically using extending pathways called 'umbilicals'. After initial security screening is done and the craft is allowed to approach the PST, this door is used as part of the passage to/from the ship."},/turf/open/floor/almayer{icon_state = "emeraldcorner"},/area/ovpst) +"iO" = (/obj/effect/decal/info_tag/pst/d31{dir = 1; desc_lore = "Main Airlocks are effectively entrances and exits from space stations and ships, used by smaller ships that latch onto the airlocks, typically using extending pathways called 'umbilicals'. After initial security screening is done and the craft is allowed to approach the PST, this door is used as part of the passage to/from the ship."},/obj/effect/step_trigger/message/seeonce_blurb/Dock31,/turf/open/floor/almayer{icon_state = "emeraldcorner"},/area/ovpst) "iP" = (/obj/effect/decal/info_tag/pst/san{pixel_x = -16; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- SAN -
Dock 31 Guest Sanitation"},/turf/open/floor/almayer{dir = 1; icon_state = "silvercorner"},/area/ovpst) +"iX" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector C and D, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/plating/almayer{icon_state = "orange"; dir = 1},/area/ovpst) "je" = (/obj/effect/decal/cargo_stripes{icon_state = "nes"},/turf/open/floor/almayer{dir = 9; icon_state = "red"},/area/ovpst) -"jg" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{icon = 'icons/obj/structures/doors/2x1almayerdoor.dmi'; id = "crypt_airlock_doors"; locked = 1},/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) +"jg" = (/obj/structure/machinery/cm_vending/clothing/super_snowflake/sp_civclothes,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "ji" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/security_generic{dir = 1},/turf/open/floor/almayer{icon_state = "redfull"},/area/ovpst) "jl" = (/obj/structure/machinery/light,/turf/open/floor/almayer{icon_state = "whitecorner"; dir = 8},/area/ovpst) -"jm" = (/obj/effect/step_trigger/message/seeonce/CryptInner,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "jo" = (/obj/structure/machinery/conveyor{dir = 8; id = "d31-entrance"; drag_delay = 1},/obj/structure/plasticflaps,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "jq" = (/obj/structure/machinery/door/poddoor/shutters/almayer{id = "scn1_shutter"},/obj/structure/window/framed/almayer,/turf/open/floor/plating,/area/ovpst) "js" = (/obj/structure/machinery/door/poddoor/almayer,/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst) +"jF" = (/obj/structure/ladder{id = "hd_se_1"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "jL" = (/obj/effect/decal/info_tag/pst/ele{dir = 4; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft C
"},/turf/open/floor/almayer{dir = 5; icon_state = "red"},/area/ovpst) -"jV" = (/obj/structure/surface/table/reinforced,/obj/item/storage/donut_box{pixel_x = -2; pixel_y = 3},/obj/item/storage/donut_box{pixel_x = 6; pixel_y = -6},/turf/open/floor/almayer,/area/ovpst) +"jT" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{icon_state = "emeraldfull"; dir = 1},/area/ovpst) +"jV" = (/obj/structure/machinery/light/small{dir = 1},/obj/structure/surface/modular/table,/turf/open/floor/plating/modular/gray,/area/ovpst) +"kb" = (/obj/structure/machinery/light/small{dir = 8; light_color = "#d3a7d4"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "kc" = (/turf/open/floor/almayer{dir = 2; icon_state = "redcorner"},/area/ovpst) "kj" = (/obj/docking_port/stationary/emergency_response/external/pst_elevator_d_pin,/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_d_pin) +"ko" = (/obj/effect/step_trigger/message/seeonce_blurb/Testament,/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) "kp" = (/turf/open/floor/almayer{dir = 9; icon_state = "emerald"},/area/ovpst) +"kq" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "bluefull"},/area/ovpst) "kt" = (/turf/open/floor/almayer{dir = 4; icon_state = "silver"},/area/ovpst) "ku" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/personaldoor.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) -"kw" = (/obj/structure/machinery/light/marker/admin/pythia/jubilant,/obj/structure/eventterminal/puzzle05/testament_of_sacrifice{pixel_y = 27; pixel_x = 1},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"kx" = (/obj/structure/searchable/puzzle04/bookcase/full4,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"kw" = (/obj/structure/machinery/light/marker/admin/pythia/main,/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) +"kx" = (/obj/structure/machinery/door/poddoor/almayer/locked{id = "crypt-b"},/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) "kC" = (/turf/open/floor/almayer{icon_state = "black"; dir = 1},/area/ovpst) "kE" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/securedoor.dmi'; dir = 1},/turf/open/floor/almayer,/area/ovpst) +"kQ" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/securedoor.dmi'},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "kV" = (/turf/open/floor/almayer{icon_state = "silver"},/area/ovpst) "lh" = (/turf/closed/wall/almayer,/area/ovpst) -"lj" = (/obj/effect/step_trigger/message/seeonce/Crypt,/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 8},/area/ovpst) -"ll" = (/obj/structure/bed/modular,/turf/open/floor/almayer,/area/ovpst) +"lj" = (/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 8},/area/ovpst) +"ll" = (/obj/structure/machinery/cm_vending/sorted/sectorpatrol/hot_drink{density = 0; pixel_y = 20},/turf/open/floor/almayer,/area/ovpst) "lm" = (/obj/structure/machinery/conveyor{dir = 8; id = "d31-entrance"; drag_delay = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "lq" = (/turf/open/floor/almayer/uscm/directional{dir = 10; icon_state = "logo_directional1"},/area/ovpst) "lt" = (/obj/structure/eventterminal/admin_event_terminal{dir = 4; pixel_x = -9; pixel_y = 3; puzzlebox_id = "scn2"},/turf/open/floor/almayer{dir = 5; icon_state = "emerald"},/area/ovpst) -"lx" = (/obj/structure/machinery/light/marker/admin/pythia/triumphant,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"lB" = (/obj/structure/searchable/puzzle04/bunk_locker/full3,/turf/open/floor/almayer,/area/ovpst) +"lx" = (/obj/structure/surface/table/reinforced/black,/obj/structure/eventterminal/civnet{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"lB" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{icon = 'icons/obj/structures/doors/2x1almayerdoor.dmi'; id = "crypt_airlock_doors"; locked = 1},/obj/structure/machinery/door/poddoor/almayer/locked{id = "crypt-c"},/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) "lF" = (/turf/open/floor/almayer{dir = 1; icon_state = "orange"},/area/ovpst) +"lL" = (/turf/open/floor/plating/almayer{icon_state = "purple-white"; dir = 4},/area/ovpst) "lM" = (/obj/effect/step_trigger/message/seeonce/D31Scn2,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "lP" = (/obj/structure/machinery/telecomms/broadcaster/preset_cent,/obj/structure/machinery/telecomms/broadcaster/preset_left,/obj/structure/machinery/telecomms/broadcaster/preset_right,/obj/structure/machinery/telecomms/bus/preset_cent,/obj/structure/machinery/telecomms/bus/preset_four,/obj/structure/machinery/telecomms/bus/preset_one,/obj/structure/machinery/telecomms/bus/preset_three,/obj/structure/machinery/telecomms/bus/preset_two,/obj/structure/machinery/telecomms/hub/preset,/obj/structure/machinery/telecomms/hub/preset_cent,/obj/structure/machinery/telecomms/processor/preset_cent,/obj/structure/machinery/telecomms/processor/preset_four,/obj/structure/machinery/telecomms/processor/preset_one,/obj/structure/machinery/telecomms/processor/preset_three,/obj/structure/machinery/telecomms/processor/preset_two,/obj/structure/machinery/telecomms/receiver/preset,/obj/structure/machinery/telecomms/receiver/preset_cent,/obj/structure/machinery/telecomms/receiver/preset_left,/obj/structure/machinery/telecomms/relay/preset,/obj/structure/machinery/telecomms/relay/preset/centcom,/obj/structure/machinery/telecomms/relay/preset/telecomms,/obj/structure/machinery/telecomms/relay/preset/mining,/obj/structure/machinery/telecomms/relay/preset/station,/obj/structure/machinery/telecomms/relay/preset/station/prison,/obj/structure/machinery/telecomms/server/presets,/obj/structure/machinery/telecomms/server/presets/centcomm,/obj/structure/machinery/telecomms/server/presets/command,/obj/structure/machinery/telecomms/server/presets/common,/obj/structure/machinery/telecomms/server/presets/engineering,/obj/structure/machinery/telecomms/server/presets/medical,/obj/structure/machinery/telecomms/server/presets/security,/obj/structure/machinery/telecomms/server/presets/squads,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"lT" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) "lV" = (/obj/effect/decal/info_tag/pst/t14{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- T-14 - Hideaway O37
"},/turf/open/floor/almayer{icon_state = "black"; dir = 1},/area/ovpst) -"me" = (/obj/structure/searchable/puzzle04/drawers_smol/full2,/turf/open/floor/almayer,/area/ovpst) -"mh" = (/obj/structure/surface/modular/table,/obj/item/device/modular/lamp,/turf/open/floor/almayer,/area/ovpst) +"me" = (/obj/structure/machinery/cm_vending/sorted/sectorpatrol/food{density = 0; pixel_y = 20},/turf/open/floor/almayer,/area/ovpst) +"mh" = (/obj/structure/machinery/light,/turf/open/floor/almayer{icon_state = "whitecorner"},/area/ovpst) "mj" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{icon = 'icons/obj/structures/doors/2x1almayerdoor.dmi'; id = "crypt_airlock_doors2"; locked = 1},/turf/open/floor/plating/plating_catwalk,/area/ovpst) +"ml" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "mp" = (/obj/structure/machinery/conveyor{dir = 6; id = "d31-entrance"; drag_delay = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"mq" = (/obj/effect/step_trigger/message/seeonce/D31Ent,/turf/open/floor/almayer{icon_state = "plate"},/area/ovpst/airlock/d31) +"mC" = (/obj/item/crafting/packages/lamp,/turf/open/floor/plating/modular,/area/ovpst) +"mJ" = (/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "mK" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/securedoor.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) -"mN" = (/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/almayer,/area/ovpst) +"mN" = (/obj/structure/bed/chair/modular/office{dir = 4},/obj/structure/machinery/light/small,/turf/open/floor/almayer,/area/ovpst) "mR" = (/obj/structure/eventterminal/puzzle02/ldmainframe_master/incorrect{item_serial = "UACM-OVPST-D31-LDCPU-03"; puzzlebox_id = "LD_Mainframe_3"},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"mU" = (/obj/structure/machinery/light/small{dir = 4; light_id = "sec-1"},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "mZ" = (/turf/open/floor/almayer{dir = 6; icon_state = "silver"},/area/ovpst) "na" = (/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/plating/plating_catwalk,/area/ovpst) "nb" = (/obj/structure/bed/chair/comfy/black{dir = 4},/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"nd" = (/obj/structure/searchable/puzzle04/bunk_locker/full2,/turf/open/floor/almayer,/area/ovpst) +"nd" = (/obj/structure/surface/modular/table,/obj/structure/eventterminal/efolder_reader,/obj/structure/machinery/light/marker/admin{light_id = "efolder_viewer"},/turf/open/floor/almayer,/area/ovpst) "nh" = (/obj/structure/machinery/door/poddoor/railing{dir = 2; id = "d31_cargo_fence"},/obj/effect/decal/cargo_stripes{icon_state = "n"},/turf/open/floor/almayer{icon_state = "sterile"},/area/ovpst) "nk" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/structure/bed/chair/comfy/black{dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"nn" = (/obj/effect/step_trigger/message/seeonce/Pinnacle,/turf/open/floor/almayer{icon_state = "emerald"},/area/ovpst) -"nC" = (/obj/structure/machinery/light{dir = 1; brightness = 12},/turf/open/floor/almayer{dir = 4; icon_state = "silvercorner"},/area/ovpst) +"nz" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{dir = 9; icon_state = "emerald"},/area/ovpst) +"nC" = (/obj/structure/machinery/light{dir = 1; brightness = 12},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 4; icon_state = "silvercorner"},/area/ovpst) "nE" = (/obj/structure/machinery/conveyor{id = "d31-entrance"; drag_delay = 1; dir = 1},/obj/structure/plasticflaps,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "nG" = (/obj/structure/machinery/light,/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) +"nO" = (/obj/effect/decal/info_tag/pst/san{desc = "UACM Outer Veil Primary Supply Terminal
- SAN - Deck 37 Showers
"; dir = 4; pixel_y = 16},/turf/open/floor/almayer{icon_state = "black"; dir = 9},/area/ovpst) "nR" = (/turf/open/floor/almayer{dir = 1; icon_state = "orangecorner"},/area/ovpst) "nV" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{icon_state = "whitecorner"; dir = 4},/area/ovpst) +"nZ" = (/obj/effect/decal/info_tag/pst/t14{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- T-14 - Hideaway O37
"; pixel_x = -16},/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 1},/area/ovpst) "og" = (/turf/open/floor/almayer{icon_state = "emerald"},/area/ovpst) -"ol" = (/obj/structure/searchable/puzzle04/bunk_chest/full3,/turf/open/floor/almayer,/area/ovpst) +"oj" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'; dir = 1},/turf/open/floor/plating/almayer{icon_state = "orangefull"; dir = 8},/area/ovpst) +"ol" = (/obj/structure/surface/table/reinforced/black,/obj/structure/eventterminal/civnet{dir = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "oo" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general/admin{icon = 'icons/obj/structures/doors/securedoor.dmi'; dir = 1; locked = TRUE; icon_state = "door_locked"; id = "scn1_exit"; id_tag = "scn1_exit"},/turf/open/floor/almayer{icon_state = "emeraldfull"},/area/ovpst) +"oA" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer,/area/ovpst) "oC" = (/obj/structure/surface/modular/table/gray,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "oH" = (/obj/structure/machinery/disposal,/turf/open/floor/almayer{dir = 1; icon_state = "red"},/area/ovpst) "oI" = (/obj/effect/decal/info_tag/pst/cpu{dir = 4; desc_lore = "The label CPU indicates doors and areas related to the operation of ship AIs, which typically are also directly tied to the ships Twilight FTL drives and Liquid Data FTL communication systems. These areas are typically sealed to all but the highest-ranking command personnel on board a ship or station but may be sometimes unlocked by the AIs themselves if maintenance is required. The room behind the door leads to one of the PYTHIA scanner clusters which are somehow related to the secondary security scanner of the station, but no information is available about what the scanner is or why would it need what appears to be Liquid Data based communication systems. The presence of FTL comm protocols and Liquid Data explains the blue pathway and CPU designation at least."; desc = "UACM Outer Veil Primary Supply Terminal
- CPU -
Dock 31 Security Sub Processors PYTHIA Scanner Cluster D13-2"},/turf/open/floor/almayer{icon_state = "bluecorner"},/area/ovpst) "oQ" = (/obj/structure/window/framed/almayer/hull,/turf/closed/wall/almayer/outer,/area/ovpst) "oR" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/kutjevo/colors/blue/tile,/area/ovpst) -"oT" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; pixel_x = -16; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance Liquid data channels are wired all though the station and this door seems to lead to one of them. There is likely nothing but dusty, humming computers inside."; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
LD Block T14 Access"},/turf/open/floor/almayer{dir = 1; icon_state = "orangecorner"},/area/ovpst) +"oT" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor.dmi'},/obj/structure/machinery/door/poddoor/almayer/locked,/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "pe" = (/obj/structure/machinery/light/marker/admin/pythia/repressed,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"pj" = (/obj/structure/machinery/light/small{dir = 1},/obj/structure/crafting/packages/bed,/turf/open/floor/plating/modular,/area/ovpst) +"pj" = (/obj/structure/machinery/light/small{dir = 1},/obj/structure/closet/modular/drawers,/turf/open/floor/plating/modular/gray,/area/ovpst) +"pk" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "po" = (/turf/open/floor/almayer{dir = 9; icon_state = "orange"},/area/ovpst) "ps" = (/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_e_d31) "pt" = (/obj/structure/machinery/conveyor{dir = 8; id = "d31-entrance"; drag_delay = 1},/obj/structure/machinery/door/poddoor/almayer{id = "cargointake"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "pu" = (/obj/docking_port/stationary/emergency_response/pst_shaft_d,/turf/open/floor/almayer/empty,/area/ovpst) -"pD" = (/obj/structure/machinery/light/small,/obj/item/crafting/packages/drawer{pixel_x = 10; pixel_y = -1},/obj/item/crafting/packages/drawer{pixel_x = -6; pixel_y = -1},/obj/item/crafting/packages/drawer{pixel_x = 11; pixel_y = 14},/obj/item/crafting/packages/drawer{pixel_x = -6; pixel_y = 14},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"px" = (/obj/effect/step_trigger/message/seeonce_blurb/Dock31,/turf/open/floor/almayer{icon_state = "emeraldfull"; dir = 1},/area/ovpst) +"pD" = (/obj/structure/machinery/light/small,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "pH" = (/obj/structure/machinery/light{dir = 2},/turf/open/floor/almayer{icon_state = "blue"},/area/ovpst) -"pL" = (/obj/item/crafting/packages/drawer{pixel_x = 6; pixel_y = 3},/obj/item/crafting/packages/drawer{pixel_x = -9; pixel_y = -1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"pL" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/secdoor.dmi'},/turf/open/floor/almayer{icon_state = "redfull"; dir = 4},/area/ovpst) "pO" = (/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"pZ" = (/obj/structure/eventterminal/puzzle04/crypt_doorlock{pixel_y = 25},/turf/open/floor/almayer{icon_state = "purplecorner"; dir = 4},/area/ovpst) +"pT" = (/obj/structure/machinery/light/small{dir = 1},/obj/structure/surface/modular/table,/obj/item/device/modular/lamp,/turf/open/floor/plating/modular/gray,/area/ovpst) +"pZ" = (/obj/structure/machinery/light/small,/turf/open/floor/almayer,/area/ovpst) "qe" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/engidoor2.dmi'; dir = 2},/turf/open/floor/almayer{icon_state = "orangefull"},/area/ovpst) "qg" = (/turf/closed/wall/almayer/outer,/area/space) "qn" = (/obj/structure/machinery/light/small,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"qr" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/plating/almayer{icon_state = "red"; dir = 4},/area/ovpst) +"qw" = (/obj/structure/ladder{id = "hd_sw_2"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) +"qD" = (/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/obj/structure/crafting/packages/table,/turf/open/floor/plating/modular,/area/ovpst) "qK" = (/turf/open/floor/almayer{icon_state = "purple"; dir = 1},/area/ovpst) "qL" = (/obj/structure/plasticflaps,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "qM" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"qP" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general/admin{icon = 'icons/obj/structures/doors/engidoor2.dmi'; dir = 2; locked = TRUE; icon_state = "door_closed"; id = "scn1_exit"; id_tag = "scn1_exit"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"qP" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector C, Maintenance Shaft"; dir = 4; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/plating/almayer{icon_state = "silver-orange"; dir = 4},/area/ovpst) "qR" = (/obj/structure/machinery/door/poddoor/railing{dir = 8; id = "d31_cargo_fence"},/obj/effect/decal/cargo_stripes{icon_state = "e"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "qU" = (/obj/effect/decal/info_tag/pst/eld{pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft D
"},/turf/open/floor/almayer{dir = 1; icon_state = "emeraldcorner"},/area/ovpst) "qW" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/Door2x1_secure2.dmi'; dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "qZ" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector A, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{icon_state = "orange-silver"; dir = 1},/area/ovpst) "rf" = (/obj/structure/machinery/conveyor{dir = 6; id = "d31-entrance"; drag_delay = 1},/obj/structure/plasticflaps,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "rj" = (/obj/docking_port/stationary/emergency_response/external/pst_elevator_e_pinnacle,/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_e_pin) -"rB" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin/elevator_outer{id = "d-drm"},/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_d_pin) +"rv" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer,/area/ovpst) +"rB" = (/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_d_drm) "rC" = (/obj/structure/machinery/light{dir = 4; brightness = 14},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "rI" = (/obj/structure/bed/sofa/south/grey/left,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"rM" = (/obj/structure/surface/modular/table,/obj/item/device/modular/lamp,/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer,/area/ovpst) -"rP" = (/obj/effect/decal/info_tag/pst/elc{pixel_y = 0; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft C
"},/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) +"rM" = (/obj/structure/machinery/light/small{dir = 1},/obj/structure/crafting/packages/table,/turf/open/floor/plating/modular,/area/ovpst) +"rN" = (/turf/open/floor/plating/almayer{icon_state = "orange"; dir = 1},/area/ovpst) +"rP" = (/obj/effect/decal/info_tag/pst/elc{pixel_y = 0; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft C
"},/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) "rR" = (/obj/effect/decal/info_tag/pst/ela{dir = 4; desc = "UACM Outer Veil Primary Supply Terminal
- EL-A - G01 - Elevator Shaft A
"},/turf/open/floor/almayer{dir = 6; icon_state = "blue"},/area/ovpst) -"rW" = (/obj/structure/machinery/door/poddoor/almayer/locked{dir = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"rW" = (/obj/structure/sink{dir = 4; pixel_y = 3; pixel_x = 12},/obj/structure/mirror{pixel_y = 0; pixel_x = 26},/obj/structure/machinery/light{dir = 2},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) "rY" = (/obj/structure/surface/table/reinforced/black,/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_y = -5},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_x = -3},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_x = -6; pixel_y = 11},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_y = 7},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_y = -1; pixel_x = -8},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_x = 8; pixel_y = 6},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_y = 16},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_x = 5; pixel_y = 18},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_x = 9; pixel_y = 15},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_x = 6; pixel_y = -2},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_x = 13; pixel_y = 3},/obj/item/reagent_container/food/drinks/cans/waterbottle{pixel_x = 13; pixel_y = -1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"sc" = (/turf/open/floor/plating/almayer{icon_state = "redcorner"; dir = 1},/area/ovpst) "se" = (/obj/docking_port/stationary/emergency_response/pst_shaft_e,/turf/open/floor/almayer/empty,/area/ovpst) +"sk" = (/obj/effect/step_trigger/message/seeonce_blurb/Hideaway,/turf/open/floor/almayer{icon_state = "black"; dir = 2},/area/ovpst) +"so" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor.dmi'},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "sq" = (/turf/closed/wall/almayer,/area/ovpst/airlock/ele_e_d31) +"st" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{dir = 5; icon_state = "emerald"},/area/ovpst) "sD" = (/turf/open/floor/plating/plating_catwalk,/area/ovpst) "sM" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin/elevator_outer{id = "e-pin"},/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_e_pin) +"sT" = (/obj/structure/machinery/light/small,/obj/item/crafting/packages/chair,/turf/open/floor/plating/modular,/area/ovpst) "sV" = (/turf/open/floor/almayer/empty,/area/ovpst) -"te" = (/obj/structure/machinery/light{brightness = 12},/turf/open/floor/almayer{dir = 8; icon_state = "redcorner"},/area/ovpst) -"th" = (/obj/effect/decal/info_tag/pst/ele{pixel_x = -16; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-E -
Primary Access Elevator - E"},/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{dir = 1; icon_state = "emeraldcorner"},/area/ovpst) +"te" = (/obj/structure/machinery/light{brightness = 12},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 8; icon_state = "redcorner"},/area/ovpst) +"th" = (/obj/effect/decal/info_tag/pst/ele{pixel_x = -16; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-E -
Primary Access Elevator - E"},/obj/structure/machinery/light{dir = 1},/obj/effect/step_trigger/message/seeonce_blurb/Dock31,/turf/open/floor/almayer{dir = 1; icon_state = "emeraldcorner"},/area/ovpst) "to" = (/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "tr" = (/obj/structure/machinery/light{dir = 8; brightness = 12},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"tD" = (/obj/effect/decal/info_tag/pst/drm{dir = 8; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- DRM -
Dorms, Deck 37, Sector D"},/turf/open/floor/plating/almayer{icon_state = "redcorner"; dir = 8},/area/ovpst) +"tH" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{dir = 1; icon_state = "emerald"},/area/ovpst) +"tL" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 4; icon_state = "blue"},/area/ovpst) +"tN" = (/obj/item/crafting/packages/drawer,/turf/open/floor/plating/modular,/area/ovpst) "tY" = (/obj/effect/decal/info_tag/pst/int{desc = "UACM Outer Veil Primary Supply Terminal
- -INT- -
Cargo Sub Processors - Main Access Pathway - Security Sub Processors"; desc_lore = "The label -INT- indicates intersections. Labels like this are typically placed on the 'primary' pathway but have information regarding all pathways at an intersection and list all pathways at an intersection starting from the left-handed turn (if one exists) and moving in a clockwise fashion until all turns are covered. This one indicates that the left-handed passage heads to cargo receiving sub processors, the path forward and backward is the Main Access Pathway, leading to the Dock and the Main Elevator and the path right leads to the Security Sub Processors area."},/turf/open/floor/almayer{icon_state = "emeraldfull"; dir = 1},/area/ovpst) -"un" = (/obj/structure/surface/modular/table,/obj/item/device/modular/lamp,/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/almayer,/area/ovpst) -"ut" = (/obj/structure/surface/modular/table,/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer,/area/ovpst) +"uc" = (/obj/structure/machinery/light{dir = 8; brightness = 14},/turf/open/floor/almayer{icon_state = "black"; dir = 4},/area/ovpst) +"un" = (/obj/structure/surface/modular/table,/obj/item/cargo/efolder/folder_pid/godbreaker{pixel_x = 6; pixel_y = -4},/obj/item/cargo/efolder/folder_pid/torchbearer{pixel_x = -10},/obj/item/cargo/efolder/folder_pid/voidseeker{pixel_x = 7; pixel_y = 11},/obj/item/cargo/efolder/folder_pid/we_failed{pixel_x = -10; pixel_y = 14},/turf/open/floor/almayer,/area/ovpst) +"ut" = (/obj/structure/ladder{id = "hd_ne_2"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "uv" = (/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"uy" = (/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/obj/item/crafting/packages/drawer,/turf/open/floor/plating/modular,/area/ovpst) "uD" = (/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) "uG" = (/obj/effect/decal/info_tag/pst/cpu{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- CPU -
Dock 31 Security Sub Processors PYTHIA Scanner Cluster D13-1"; desc_lore = "The label CPU indicates doors and areas related to the operation of ship AIs, which typically are also directly tied to the ships Twilight FTL drives and Liquid Data FTL communication systems. These areas are typically sealed to all but the highest-ranking command personnel on board a ship or station but may be sometimes unlocked by the AIs themselves if maintenance is required. The room behind the door leads to one of the PYTHIA scanner clusters which are somehow related to the secondary security scanner of the station, but no information is available about what the scanner is or why would it need what appears to be Liquid Data based communication systems. The presence of FTL comm protocols and Liquid Data explains the blue pathway and CPU designation at least."},/turf/open/floor/almayer{dir = 5; icon_state = "blue"},/area/ovpst) "uN" = (/obj/structure/bed/chair/office/dark,/turf/open/floor/almayer{dir = 6; icon_state = "red"},/area/ovpst) @@ -183,410 +242,544 @@ "vr" = (/obj/structure/surface/table/reinforced/black,/obj/structure/eventterminal/puzzle02/scanerterm{dir = 4; pixel_y = 5; pixel_x = 5},/turf/open/floor/almayer{dir = 8; icon_state = "orange"},/area/ovpst) "vs" = (/obj/structure/bed/chair/comfy/black{dir = 1; pixel_y = 0},/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "vu" = (/turf/closed/wall/almayer/outer,/area/ovpst/airlock/d31) +"vv" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general/admin{icon = 'icons/obj/structures/doors/engidoor2.dmi'; dir = 4; locked = TRUE; icon_state = "door_closed"; id = "scn1_exit"; id_tag = "scn1_exit"},/turf/open/floor/plating/almayer{icon_state = "orangefull"; dir = 8},/area/ovpst) "vB" = (/obj/structure/machinery/conveyor{dir = 2; id = "d31-entrance"; drag_delay = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "vJ" = (/turf/open/floor/almayer{icon_state = "bluecorner"},/area/ovpst) "vM" = (/obj/structure/window/framed/almayer/hull,/obj/structure/window/framed/almayer/hull,/obj/structure/window/framed/almayer/hull,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "vT" = (/obj/effect/decal/info_tag/pst/int{desc_lore = "The label -INT- indicates intersections. Labels like this are typically placed on the 'primary' pathway but have information regarding all pathways at an intersection and list all pathways at an intersection starting from the left-handed turn (if one exists) and moving in a clockwise fashion until all turns are covered. This label marks the pathway leading to the computer systems automating the Cargo intake process to the left and right of the sign or the Cargo Processing Subsystems Diagnostics and Maintenance Room and a general observation area of the intake mechanism behind a person facing to read the sign."; desc = "UACM Outer Veil Primary Supply Terminal
- -INT- -
Dock 31 Cargo Processing Subsystem Sub Processors Cluster CPU01-Cluster CPU02-Cargo Processing Subsystems Diagnostics and Maintenance Room and Intake Observation"},/turf/open/floor/almayer{dir = 6; icon_state = "silver-orange"},/area/ovpst) "vW" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"wa" = (/obj/effect/step_trigger/message/seeonce/Pinnacle,/turf/open/floor/almayer{dir = 8; icon_state = "emeraldcorner"},/area/ovpst) -"wk" = (/obj/effect/step_trigger/message/seeonce/Dorms,/turf/open/floor/almayer{icon_state = "emerald"},/area/ovpst) +"vX" = (/turf/open/floor/plating/almayer{icon_state = "orangecorner"},/area/ovpst) +"wf" = (/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/turf/open/floor/almayer,/area/ovpst) "wn" = (/obj/structure/machinery/door/poddoor/almayer{id = "scn2"},/turf/open/floor/almayer{icon_state = "emeraldfull"},/area/ovpst) "wp" = (/obj/structure/machinery/light/marker/admin/pythia/malcontent,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"wr" = (/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_d_drm) "wz" = (/turf/open/floor/almayer{icon_state = "bluecorner"; dir = 8},/area/ovpst) +"wH" = (/obj/structure/bed/modular{dir = 1},/turf/open/floor/plating/modular/gray,/area/ovpst) "wR" = (/obj/structure/machinery/light,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "wV" = (/obj/structure/machinery/light{dir = 4},/turf/open/floor/plating/plating_catwalk,/area/ovpst) "wY" = (/obj/effect/decal/info_tag/pst/obs{desc_lore = "The label OBS typically indicates an observation area of some sort, used to look at regular operations of another area without disturbing the actual process within. This area is marked due to the windows leading into the cargo intake system, but is rarely used since the system is properly monitored from the maintenance room right next to this area."; desc = "UACM Outer Veil Primary Supply Terminal
- OBS -
Dock 31 Cargo Processing Intake Observation"},/turf/open/floor/almayer{dir = 6; icon_state = "silver"},/area/ovpst) "wZ" = (/turf/open/floor/almayer{icon_state = "black"; dir = 8},/area/ovpst) "xc" = (/obj/effect/decal/info_tag/pst/eng{dir = 4; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG - G01 -
Dock 31 Security Sub Processors"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. G01 indicates that this area is open to anyone who is quartered on the station. Engineering doors with general access usually suggest that general maintenance equipment is available somewhere behind this door. This door leads to maintenance corridors related to the security scanning system of Dock 31 and usually are only accessed if an issue needs diagnostics. A maintenance room with equipment needed to diagnose issues with the security system should be somewhere at the end of this path."},/obj/structure/machinery/light{dir = 4},/turf/open/floor/almayer{dir = 4; icon_state = "orangecorner"},/area/ovpst) +"xp" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) +"xr" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{icon_state = "black"; dir = 10},/area/ovpst) "xv" = (/obj/structure/window/framed/almayer/hull,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "xw" = (/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"xL" = (/obj/structure/machinery/door/poddoor/almayer/locked{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"xL" = (/turf/open/floor/almayer{icon_state = "bluefull"},/area/ovpst) "xN" = (/turf/open/floor/almayer{icon_state = "black"; dir = 4},/area/ovpst) +"xQ" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1generic.dmi'},/turf/open/floor/almayer{icon_state = "redfull"; dir = 4},/area/ovpst) +"xS" = (/obj/structure/ladder{id = "hd_sw_1"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "yb" = (/obj/structure/prop/almayer/ship_memorial,/turf/open/floor/holofloor/grass,/area/ovpst) "yg" = (/turf/open/floor/almayer{dir = 5; icon_state = "emerald"},/area/ovpst) -"yn" = (/obj/structure/surface/modular/table,/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/almayer,/area/ovpst) +"yk" = (/turf/open/floor/almayer{icon_state = "redfull"; dir = 4},/area/ovpst) +"yn" = (/obj/structure/ladder{id = "hd_nw_2"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "yp" = (/turf/open/floor/almayer/uscm/directional{dir = 1; icon_state = "logo_directional1"},/area/ovpst) +"yq" = (/obj/structure/machinery/light/small{dir = 4; light_id = "sec-1"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "yu" = (/obj/effect/decal/info_tag/pst/scn{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- SCN -
Entrance Secondary Scanner D31-PT-SCN001 and EL-E Pathway"; desc_lore = "The label SCN indicates doors and areas where computer systems actively scan its inhabitants and contents. This door leads to the secondary Dock 31 scanner, but official documentation does not specify what scan is performed here, only that it is a check that involves reviewing the biographies of scanned personnel. Areas like this need to be clearly marked due to privacy and personal data handling laws passed back in the UA in the aftermath of the Colony Wars."},/turf/open/floor/almayer{icon_state = "emeraldcorner"},/area/ovpst) "yy" = (/obj/effect/decal/info_tag/pst/scn{pixel_x = -16; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- SCN -
Entrance Personnel Scanner D31SCN001 and EL-E Pathway"; desc_lore = "The label SCN indicates doors and areas where computer systems actively scan its inhabitants and contents. This door leads to the primary entrance scanner of the PST, where entering personnel's identities are verified by the central CMISRS registry. Areas like this need to be clearly marked due to privacy and personal data handling laws passed back in the UA in the aftermath of the Colony Wars."},/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{dir = 1; icon_state = "emeraldcorner"},/area/ovpst) "yF" = (/obj/effect/decal/info_tag/pst/lby{dir = 4; desc = "UACM Outer Veil Primary Supply Terminal
- LBY -
Dorms Deck 37 entrance lobby"},/turf/open/floor/almayer{dir = 5; icon_state = "orange-green"},/area/ovpst) "yG" = (/turf/open/floor/almayer{icon_state = "silver"; dir = 10},/area/ovpst) -"yL" = (/turf/open/floor/almayer{dir = 1; icon_state = "silver"},/area/ovpst) +"yL" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 1; icon_state = "silver"},/area/ovpst) "yW" = (/obj/structure/bed/chair/modular/office{dir = 4},/turf/open/floor/almayer,/area/ovpst) "yX" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{dir = 8; opacity = 0},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"zi" = (/obj/structure/bed/modular,/turf/open/floor/plating/modular/gray,/area/ovpst) +"zo" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "greenfull"},/area/ovpst) "zu" = (/obj/effect/decal/info_tag/pst/int{pixel_x = -16; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- -INT- -
Elevator Shafts C and D, Arrivals Offices and Memorial, Elevator shafts A and B, Elevator Shaft E."; desc_lore = "The label -INT- indicates intersections. Labels like this are typically placed on the 'primary' pathway but have information regarding all pathways at an intersection and list all pathways at an intersection starting from the left-handed turn (if one exists) and moving in a clockwise fashion until all turns are covered. This intersection in particular seems to lead to all the elevator shafts that lead to the station proper, the big elevator that is used to access the station from outside and the entrance offices area that are typically used to welcome guests."},/turf/open/floor/almayer{dir = 1; icon_state = "orange"},/area/ovpst) +"zv" = (/obj/structure/machinery/light{dir = 4; brightness = 14},/turf/open/floor/almayer,/area/ovpst) "zx" = (/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer{dir = 8; icon_state = "silvercorner"},/area/ovpst) "zF" = (/turf/open/floor/almayer{icon_state = "bluecorner"; dir = 1},/area/ovpst) +"zG" = (/turf/open/floor/almayer{icon_state = "greenfull"},/area/ovpst) +"zH" = (/obj/structure/machinery/light,/obj/effect/step_trigger/message/seeonce_blurb/Hideaway,/turf/open/floor/almayer{icon_state = "black"; dir = 8},/area/ovpst) "zI" = (/obj/structure/machinery/light{dir = 2},/turf/open/floor/almayer{icon_state = "silver"},/area/ovpst) +"zK" = (/obj/effect/landmark/start/basepc,/turf/open/floor/holofloor/grass,/area/ovpst) +"zL" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'; dir = 1},/obj/structure/machinery/door/poddoor/almayer/locked{dir = 8},/turf/open/floor/almayer,/area/ovpst) +"zN" = (/obj/effect/landmark/observer_start,/turf/open/floor/almayer{allow_construction = 0; icon_state = "plate"},/area/ovpst) "zQ" = (/obj/structure/machinery/door/poddoor/almayer{id = "d31-entrance"; name = "\improper Umbillical Airlock"; unacidable = 1},/turf/open/floor/almayer{icon_state = "plate"},/area/ovpst/airlock/d31) "Aj" = (/turf/open/floor/almayer{dir = 1; icon_state = "red"},/area/ovpst) "Aq" = (/turf/open/floor/almayer{dir = 4; icon_state = "bluecorner"},/area/ovpst) "AA" = (/obj/structure/machinery/conveyor{id = "d31-entrance"; drag_delay = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"AI" = (/obj/structure/machinery/light/small{dir = 1},/obj/structure/closet/secure_closet/sp/yellow/g01/engiebasics{pixel_x = -8; pixel_y = 16},/obj/structure/closet/secure_closet/sp/yellow/g01/engiebasics{pixel_x = 8; pixel_y = 16},/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 4},/area/ovpst) +"AE" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"AI" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 4},/area/ovpst) "AJ" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/securedoor.dmi'},/turf/open/floor/almayer{icon_state = "bluefull"},/area/ovpst) "AM" = (/turf/open/floor/almayer/uscm/directional{dir = 9; icon_state = "logo_directional1"},/area/ovpst) -"Bc" = (/obj/structure/ladder{id = "crypt1"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"Be" = (/obj/structure/searchable/puzzle04/drawers_smol/full1,/turf/open/floor/almayer,/area/ovpst) +"Ba" = (/obj/structure/closet/secure_closet/sp{pixel_x = 9; pixel_y = -2},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) +"Bc" = (/obj/structure/sink{dir = 4; pixel_y = 3; pixel_x = 12},/obj/structure/mirror{pixel_x = 26},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) +"Be" = (/obj/structure/closet/secure_closet/sp/yellow/g01/engiebasics{pixel_y = 18; density = 0},/turf/open/floor/almayer,/area/ovpst) "Bi" = (/turf/open/floor/almayer{dir = 4; icon_state = "emeraldcorner"},/area/ovpst) +"Bl" = (/obj/structure/bed/chair/modular/office{dir = 4},/turf/open/floor/plating/modular/gray,/area/ovpst) "Bm" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/almayer{dir = 4; icon_state = "orangecorner"},/area/ovpst) "Bu" = (/turf/open/floor/almayer{dir = 8; icon_state = "redcorner"},/area/ovpst) -"Bv" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/secdoor.dmi'},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Bv" = (/obj/structure/machinery/light/small,/obj/structure/surface/modular/table,/turf/open/floor/plating/modular/gray,/area/ovpst) "BF" = (/obj/effect/decal/info_tag/pst/sec{dir = 4; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- SEC - D01 - R37 -
Dorms Deck 37 Entrance Guest Clearance and Cargo Reception Station"},/obj/structure/machinery/light{dir = 4; brightness = 12},/turf/open/floor/almayer{dir = 4; icon_state = "redcorner"},/area/ovpst) "BH" = (/obj/structure/machinery/light/small{dir = 8; light_id = "cargointake"},/turf/open/floor/almayer{icon_state = "plate"},/area/ovpst/airlock/d31) "BI" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{dir = 4; icon_state = "emeraldcorner"},/area/ovpst) "BR" = (/obj/structure/bed/chair/comfy/black,/obj/effect/decal/info_tag/pst/eld{dir = 8; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft D
"},/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer{dir = 8; icon_state = "silvercorner"},/area/ovpst) "BU" = (/obj/structure/toilet{dir = 4; pixel_x = -1},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "BV" = (/obj/effect/decal/info_tag/pst/ofc{dir = 8; pixel_x = -16; desc_lore = "The label OFC indicates office areas, which as the name suggests are typically areas with some specific, bureaucratic function assigned to them and can be anything from personal offices of high-ranking personnel to teaching rooms and spare, unused generic spaces. This door leads to one of the orientation offices, used to brief and greet new arrivals to the station."; desc = "UACM Outer Veil Primary Supply Terminal
- OFC -
Entrance Orientation Office"},/turf/open/floor/almayer{dir = 8; icon_state = "silvercorner"},/area/ovpst) -"BX" = (/obj/effect/decal/info_tag/pst/rec{pixel_x = -16; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- REC -
Dorm Recreational and Social Areas"; desc_lore = "The label REC indicates recreational areas, which often include public CivNet access points but can essentially be any area dedicated to down time or recreation on the station, including cafeterias and kitchens.Each dorm level on the PST has a communal area like the one this door leads to, that has a kitchen, cafeteria that peeks out into its lobby and room for several other recreational facilities that tend to be customized to the dorm's inhabitants' specific needs."},/obj/structure/machinery/light{dir = 1; brightness = 12},/turf/open/floor/almayer{icon_state = "silvercorner"; dir = 1},/area/ovpst) +"BX" = (/obj/effect/decal/info_tag/pst/rec{pixel_x = -16; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- REC -
Dorm Recreational and Social Areas"; desc_lore = "The label REC indicates recreational areas, which often include public CivNet access points but can essentially be any area dedicated to down time or recreation on the station, including cafeterias and kitchens.Each dorm level on the PST has a communal area like the one this door leads to, that has a kitchen, cafeteria that peeks out into its lobby and room for several other recreational facilities that tend to be customized to the dorm's inhabitants' specific needs."},/obj/structure/machinery/light{dir = 1; brightness = 12},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{icon_state = "silvercorner"; dir = 1},/area/ovpst) "BZ" = (/obj/structure/toilet{pixel_y = 10},/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) +"Ca" = (/obj/structure/machinery/light,/turf/open/floor/almayer{dir = 8; icon_state = "orangecorner"},/area/ovpst) +"Cg" = (/obj/effect/decal/info_tag/pst/eng{dir = 2; pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector B, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{dir = 6; icon_state = "orange-green"},/area/ovpst) "Cl" = (/obj/effect/decal/info_tag/pst/scn{pixel_y = 16; desc_lore = "The label SCN indicates doors and areas where computer systems actively scan its inhabitants and contents. This door leads to the secondary Dock 31 scanner, but official documentation does not specify what scan is performed here, only that it is a check that involves reviewing the biographies of scanned personnel. Areas like this need to be clearly marked due to privacy and personal data handling laws passed back in the UA in the aftermath of the Colony Wars."; desc = "UACM Outer Veil Primary Supply Terminal
- SCN -
Entrance Secondary Scanner D31-PT-SCN001 and EL-E Pathway"},/turf/open/floor/almayer{dir = 9; icon_state = "emerald"},/area/ovpst) "Cm" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/personaldoor.dmi'},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "Cp" = (/obj/effect/decal/info_tag/pst/int{pixel_x = -16; desc_lore = "The label -INT- indicates intersections. Labels like this are typically placed on the 'primary' pathway but have information regarding all pathways at an intersection and list all pathways at an intersection starting from the left-handed turn (if one exists) and moving in a clockwise fashion until all turns are covered. This label marks the end of the pathway leading to the Security Sub Processor Diagnostics and Maintenance Room on the left of the sign and the computer systems used in the scanning process to the right. The presence of a blue pathway indicates that these systems utilize FTL systems which is unusual for a simple biometrics scanner, but no unredacted information exists on the UACM MilNet related to exactly how the secondary scanner works or what exactly a PYTHIA scanner is. You could swear you heard the name Pythia somewhere before in the last year."; desc = "UACM Outer Veil Primary Supply Terminal
- -INT- -
Dock 31 Security Sub Processors Diagnostics and Maintenance Room -PYTHIA Scanner Controller Clusters"},/turf/open/floor/almayer{icon_state = "blue"},/area/ovpst) -"Cw" = (/obj/effect/decal/info_tag/pst/eng{dir = 2; pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector A, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{dir = 6; icon_state = "orange-green"},/area/ovpst) +"Cw" = (/obj/effect/decal/info_tag/pst/san{desc = "UACM Outer Veil Primary Supply Terminal
- SAN - Deck 37 Dorm Toilets
"; dir = 8; pixel_y = 0; pixel_x = -16},/turf/open/floor/almayer{icon_state = "black"; dir = 6},/area/ovpst) +"Cx" = (/obj/structure/machinery/door/poddoor/almayer/locked{id = "crypt-a"},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "CB" = (/obj/structure/machinery/light{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"CE" = (/obj/effect/decal/info_tag/pst/eld{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft D
"},/turf/open/floor/almayer{dir = 1; icon_state = "emerald"},/area/ovpst) +"CC" = (/turf/open/floor/plating/almayer{icon_state = "purple"; dir = 4},/area/ovpst) +"CE" = (/obj/effect/decal/info_tag/pst/eld{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft D
"},/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{dir = 1; icon_state = "emerald"},/area/ovpst) "CH" = (/turf/open/floor/almayer/uscm/directional{dir = 5; icon_state = "logo_directional1"},/area/ovpst) +"CM" = (/turf/open/floor/plating/almayer{icon_state = "red"; dir = 8},/area/ovpst) "CO" = (/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) "CS" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/engidoor2.dmi'; dir = 2},/turf/open/floor/plating/plating_catwalk,/area/ovpst) "CY" = (/obj/structure/machinery/light,/obj/effect/decal/info_tag/pst/san{dir = 4; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- SAN -
Dock 31 Personnel Sanitation"},/turf/open/floor/almayer{dir = 8; icon_state = "emerald-silver"},/area/ovpst) +"De" = (/obj/structure/machinery/light{dir = 4; brightness = 14},/turf/open/floor/almayer{icon_state = "black"; dir = 8},/area/ovpst) "Du" = (/obj/structure/machinery/conveyor{dir = 8; id = "d31-entrance"; drag_delay = 1; backwards = SOUTH; forwards = WEST},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"DF" = (/obj/effect/decal/info_tag/pst/sec{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- SEC - D01 - R37 -
Dorms Deck 37 Entrance Guest Clearance and Cargo Reception Station"; desc_lore = "The label SEC indicates doors and areas that require an elevated security clearance, typically restricted for MPs and CMISRS agents. This door leads to the cargo and guest reception area, which can be accessed by anyone who also is registered in a dorm on this level. From this station, residents can authorize guest visits and receive cargo."},/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) +"Dx" = (/turf/open/floor/almayer{icon_state = "black"; dir = 5},/area/ovpst) +"DF" = (/obj/effect/decal/info_tag/pst/sec{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- SEC - D01 - R37 -
Dorms Deck 37 Entrance Guest Clearance and Cargo Reception Station"; desc_lore = "The label SEC indicates doors and areas that require an elevated security clearance, typically restricted for MPs and CMISRS agents. This door leads to the cargo and guest reception area, which can be accessed by anyone who also is registered in a dorm on this level. From this station, residents can authorize guest visits and receive cargo."},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) +"DL" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{icon_state = "bluecorner"},/area/ovpst) "DM" = (/obj/structure/closet/secure_closet/sp/red/d01{icon_state = "red_class_d_locked"},/turf/open/floor/almayer{dir = 1; icon_state = "red"},/area/ovpst) +"DO" = (/turf/open/floor/almayer{icon_state = "black"; dir = 6},/area/ovpst) "DP" = (/obj/structure/eventterminal/admin_event_terminal{icon = 'icons/obj/structures/machinery/clio_maint_dark.dmi'; pixel_y = 8; name = "closed maintenance terminal hatch"; desc = "A sliding hatch concealing a terminal used to perform local diagnostic tasks"; desc_lore = "Most space ships ultilize secondary terminals like these on a room-by-room basis as a failsafe meant to cover for the ship's central, AI-assisted maitenance system."; puzzlebox_id = "crypt_airlock"},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"DW" = (/obj/structure/searchable/puzzle04/bunk_chest/full2,/turf/open/floor/almayer,/area/ovpst) +"DW" = (/obj/structure/ladder{id = "hd_ne_1"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Ea" = (/obj/structure/machinery/light{dir = 8},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"Eb" = (/obj/effect/decal/info_tag/pst/drm{dir = 4; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- DRM -
Dorms, Deck 37, Sector B"},/turf/open/floor/almayer{dir = 4; icon_state = "bluecorner"},/area/ovpst) +"Eb" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'},/turf/open/floor/plating/almayer{icon_state = "orangefull"; dir = 8},/area/ovpst) +"Ej" = (/obj/effect/decal/info_tag/pst/drm{dir = 4; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- DRM -
Dorms, Deck 37, Sector A"},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 4; icon_state = "bluecorner"},/area/ovpst) "Ep" = (/obj/structure/surface/modular/table/gray{icon_state = "table_metal_black"},/obj/structure/eventterminal/puzzle03/historyterm{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Et" = (/obj/structure/eventterminal/puzzle05/pythia,/turf/open/floor/kutjevo/colors/blue/tile,/area/ovpst) +"Ev" = (/obj/structure/bed/chair/modular/office{dir = 1},/turf/open/floor/plating/modular/gray,/area/ovpst) "Ey" = (/obj/structure/eventterminal/puzzle05/pythia/right,/turf/open/floor/kutjevo/colors/blue/tile,/area/ovpst) "EB" = (/turf/open/floor/almayer{icon_state = "blue2silver1"},/area/ovpst) "EE" = (/obj/effect/decal/info_tag/pst/eng{desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dock 31 Cargo Processing Subsystems Diagnostics and Maintenance Room"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. G01 indicates that this area is open to anyone who is quartered on the station. Engineering doors with general access usually suggest that general maintenance equipment is available somewhere behind this door. The room past this door should have everything one needs to properly diagnose and possibly fix issues with the Dock 31 cargo processing system."; pixel_y = 16},/turf/open/floor/almayer{dir = 4; icon_state = "orangecorner"},/area/ovpst) "EF" = (/obj/structure/eventterminal/puzzle02/ldmainframe_master/incorrect{puzzlebox_id = "LD_Mainframe_1"; item_serial = "UACM-OVPST-D31-LDCPU-01"},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"EL" = (/obj/structure/surface/modular/table,/turf/open/floor/almayer,/area/ovpst) +"EG" = (/obj/structure/surface/modular/table,/obj/item/device/modular/lamp,/turf/open/floor/plating/modular/gray,/area/ovpst) +"EL" = (/obj/structure/machinery/light/marker/admin/pythia/jubilant,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "EM" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{opacity = 0},/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst) "ER" = (/obj/structure/bed/sofa/south/grey,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "EU" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/almayer{dir = 5; icon_state = "orange"},/area/ovpst) "EZ" = (/turf/open/floor/almayer{dir = 4; icon_state = "orangecorner"},/area/ovpst) -"Fd" = (/obj/structure/machinery/light{dir = 8; brightness = 12},/turf/open/floor/almayer,/area/ovpst) +"Fd" = (/obj/structure/machinery/light{dir = 8; brightness = 12},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer,/area/ovpst) "Fe" = (/turf/open/floor/almayer{icon_state = "emeraldcorner"},/area/ovpst) -"Fi" = (/obj/structure/eventterminal/puzzle03/historycrt{pixel_y = 32},/obj/structure/machinery/light/marker/admin{pixel_y = 40; light_id = "theathervoice"},/turf/open/floor/almayer{icon_state = "blue2orange"; dir = 1},/area/ovpst) +"Fi" = (/obj/structure/eventterminal/puzzle03/historycrt{pixel_y = 32},/turf/open/floor/almayer{icon_state = "blue2orange"; dir = 1},/area/ovpst) "Fj" = (/obj/structure/machinery/light{dir = 2},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Fo" = (/obj/effect/decal/info_tag/pst/cpu{dir = 1; desc_lore = "The label CPU indicates doors and areas related to the operation of ship AIs, which typically are also directly tied to the ships Twilight FTL drives and Liquid Data FTL communication systems. These areas are typically sealed to all but the highest-ranking command personnel on board a ship or station but may be sometimes unlocked by the AIs themselves if maintenance is required. The room behind the door leads to one of the PYTHIA scanner clusters which are somehow related to the secondary security scanner of the station, but no information is available about what the scanner is or why would it need what appears to be Liquid Data based communication systems. The presence of FTL comm protocols and Liquid Data explains the blue pathway and CPU designation at least."; desc = "UACM Outer Veil Primary Supply Terminal
- CPU -
Dock 31 Security Sub Processors PYTHIA Scanner Cluster D13-3"},/turf/open/floor/almayer{icon_state = "bluecorner"},/area/ovpst) "Fr" = (/turf/closed/wall/almayer,/area/ovpst/airlock/ele_e_pin) "Fw" = (/obj/structure/machinery/light{dir = 8},/turf/open/floor/plating/plating_catwalk,/area/ovpst) "Fz" = (/turf/open/floor/almayer{dir = 1; icon_state = "redcorner"},/area/ovpst) "FA" = (/obj/effect/decal/info_tag/pst/eng{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector A, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{icon_state = "white-orange"; dir = 2},/area/ovpst) +"FO" = (/obj/structure/machinery/light/small{dir = 1},/obj/item/crafting/packages/chair,/turf/open/floor/plating/modular,/area/ovpst) +"FT" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) "FW" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin/elevator_outer{id = "d-pin"},/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_d_pin) "FZ" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/plating/plating_catwalk,/area/ovpst) -"Ga" = (/obj/effect/step_trigger/message/seeonce/CryptInner,/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) "Gf" = (/obj/effect/decal/cargo_stripes{icon_state = "se"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Gk" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Go" = (/obj/structure/eventterminal/puzzle04/final_log{pixel_y = 25},/turf/open/floor/almayer{icon_state = "purplecorner"; dir = 4},/area/ovpst) "GA" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/securedoor.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "bluefull"},/area/ovpst) -"GE" = (/obj/structure/ladder{id = "crypt2"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"GE" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/Door2x1_secure2.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "GJ" = (/turf/open/floor/almayer{dir = 4; icon_state = "red"},/area/ovpst) "GM" = (/obj/structure/bed/chair/comfy/black,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "GN" = (/turf/open/floor/almayer{dir = 1; icon_state = "emeraldcorner"},/area/ovpst) +"GW" = (/obj/structure/machinery/light,/turf/open/floor/plating/almayer{icon_state = "orange-silver"; dir = 8},/area/ovpst) "Ha" = (/turf/open/floor/almayer{dir = 4; icon_state = "silvercorner"},/area/ovpst) "Hp" = (/turf/open/floor/almayer{dir = 1; icon_state = "emerald"},/area/ovpst) "Hr" = (/obj/structure/bed/chair/comfy/black,/obj/structure/machinery/light/small{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Hs" = (/turf/open/floor/almayer/uscm/directional{dir = 6; icon_state = "logo_directional1"},/area/ovpst) "HC" = (/obj/structure/machinery/door/poddoor/railing{id = "d31_cargo_fence"},/obj/effect/decal/cargo_stripes{icon_state = "s"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"HZ" = (/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Il" = (/obj/structure/foamed_metal,/obj/structure/foamed_metal,/turf/open/floor/plating,/area/ovpst) "Is" = (/obj/structure/bed/chair/comfy/black,/turf/open/floor/almayer{dir = 4; icon_state = "silvercorner"},/area/ovpst) -"Iz" = (/obj/structure/machinery/light/marker/admin/pythia/main{pixel_x = -8},/obj/structure/machinery/light/marker/admin{pixel_x = 8; pixel_y = -8; name = ""; light_id = "melinoe"},/turf/open/floor/kutjevo/colors/blue/tile,/area/ovpst) +"Iz" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/engidoor2.dmi'; dir = 8},/turf/open/floor/plating/almayer{icon_state = "orangefull"; dir = 8},/area/ovpst) "IA" = (/turf/open/space/basic,/area/space) -"IK" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/secdoor.dmi'; dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"IE" = (/obj/structure/machinery/light/small{dir = 8; light_id = "cargointake"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"IK" = (/obj/structure/ladder{id = "hd_nw_1"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) +"IQ" = (/obj/structure/bed/chair/modular/office{dir = 8},/turf/open/floor/plating/modular/gray,/area/ovpst) "IR" = (/obj/structure/bed/sofa/vert/grey,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"IS" = (/obj/structure/searchable/puzzle04/drawers_files/full1,/turf/open/floor/almayer,/area/ovpst) +"IS" = (/obj/structure/eventterminal/puzzle05/testament_of_sacrifice{pixel_y = 27; pixel_x = 1},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"IY" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor.dmi'},/obj/structure/machinery/door/poddoor/almayer/locked,/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) +"Je" = (/obj/effect/decal/info_tag/pst/t14{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- T-14 - Hideaway O37
"},/obj/structure/machinery/light/small{dir = 4; light_id = "sec-1"},/turf/open/floor/almayer{icon_state = "black"; dir = 1},/area/ovpst) "Jg" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Jj" = (/obj/structure/ladder{id = "hd_nw_1"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Js" = (/obj/structure/machinery/light{dir = 8; brightness = 14},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"JB" = (/obj/structure/machinery/light/small{dir = 1},/obj/item/crafting/packages/chair{pixel_x = -9; pixel_y = -4},/obj/item/crafting/packages/chair{pixel_x = 9; pixel_y = -4},/obj/item/crafting/packages/chair{pixel_x = 7; pixel_y = 8},/obj/item/crafting/packages/chair{pixel_x = -7; pixel_y = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Ju" = (/turf/closed/wall/almayer,/area/ovpst/airlock/ele_d_drm) +"JB" = (/turf/open/floor/plating/almayer{icon_state = "purple-white"},/area/ovpst) "JH" = (/obj/effect/decal/info_tag/pst/eng{dir = 8; pixel_y = 0; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG - G01 -
Dock 31 Cargo Processing Subsystems"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. G01 indicates that this area is open to anyone who is quartered on the station. Engineering doors with general access usually suggest that general maintenance equipment is available somewhere behind this door. This door leads to maintenance corridors related to the cargo processing system of Dock 31 and usually are only accessed if there is an issue with the cargo intake. A maintenance room with equipment needed to diagnose issues with the cargo system should be somewhere at the end of this path."},/turf/open/floor/almayer{dir = 8; icon_state = "orangecorner"},/area/ovpst) "JM" = (/obj/structure/surface/modular/table/gray{icon_state = "table_metal_black"},/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "JO" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{icon = 'icons/obj/structures/doors/Door2x1_secure2.dmi'},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"Kf" = (/obj/structure/surface/table/reinforced,/obj/item/storage/donut_box{pixel_x = 1},/turf/open/floor/almayer,/area/ovpst) -"Kk" = (/obj/structure/searchable/puzzle04/bunk_locker/full4,/turf/open/floor/almayer,/area/ovpst) +"JU" = (/obj/structure/ladder{id = "hd_se_2"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) +"Kf" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/securedoor.dmi'; dir = 8},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) +"Kk" = (/turf/open/space/basic,/area/ovpst) +"Km" = (/obj/structure/machinery/light{dir = 2},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "Kp" = (/turf/closed/wall/almayer/outer,/area/ovpst/airlock/ele_e_d31) "Kx" = (/obj/structure/bed/chair/modular/office,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Kz" = (/obj/effect/decal/info_tag/pst/eng{dir = 1; pixel_y = 0; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector B, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{icon_state = "orange"},/area/ovpst) "KB" = (/turf/open/floor/almayer{icon_state = "whitecorner"; dir = 4},/area/ovpst) -"KH" = (/obj/structure/surface/table/reinforced,/obj/item/pizzabox/margherita,/obj/item/pizzabox/margherita{pixel_y = 5},/obj/item/pizzabox/margherita{pixel_y = 10},/turf/open/floor/almayer,/area/ovpst) +"KH" = (/turf/open/floor/plating/almayer{icon_state = "orangecorner"; dir = 8},/area/ovpst) "KK" = (/turf/open/floor/almayer{dir = 8; icon_state = "orangecorner"},/area/ovpst) "KX" = (/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) +"KZ" = (/obj/structure/machinery/shower{dir = 1},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) "La" = (/obj/structure/machinery/door/poddoor/almayer{id = "d31-entrance"; name = "\improper Umbillical Airlock"; unacidable = 1},/turf/open/floor/almayer{icon_state = "emeraldfull"},/area/ovpst/airlock/d31) "Lc" = (/obj/structure/closet/secure_closet/sp/yellow/g01/engiebasics{pixel_x = -8; pixel_y = 16},/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/almayer{dir = 5; icon_state = "orange"},/area/ovpst) "Lj" = (/obj/structure/machinery/light,/turf/open/floor/almayer,/area/ovpst) -"Lq" = (/obj/item/crafting/packages/lamp{pixel_x = -3; pixel_y = -2},/obj/item/crafting/packages/lamp{pixel_x = 11; pixel_y = -5},/obj/item/crafting/packages/lamp{pixel_x = -12; pixel_y = -1},/obj/item/crafting/packages/lamp{pixel_x = -9; pixel_y = 10},/obj/item/crafting/packages/lamp{pixel_y = 8; pixel_x = 7},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Ll" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{dir = 8; icon_state = "emeraldcorner"},/area/ovpst) "LA" = (/obj/structure/bed/sofa/south/grey/right,/turf/open/floor/almayer{icon_state = "silvercorner"},/area/ovpst) "LB" = (/turf/open/floor/almayer{icon_state = "silver"; dir = 8},/area/ovpst) +"LE" = (/obj/structure/machinery/light{dir = 1},/obj/effect/step_trigger/message/seeonce_blurb/Dock31,/turf/open/floor/almayer{dir = 4; icon_state = "emeraldcorner"},/area/ovpst) "LG" = (/obj/structure/machinery/light{dir = 4; brightness = 12},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "LK" = (/turf/open/floor/almayer{dir = 4; icon_state = "blue"},/area/ovpst) "LN" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "LR" = (/obj/structure/machinery/conveyor{dir = 1; id = "d31-entrance"; drag_delay = 1},/obj/structure/plasticflaps,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "LU" = (/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst) "LV" = (/turf/open/floor/almayer{icon_state = "orangecorner"},/area/ovpst) +"LX" = (/obj/effect/decal/info_tag/pst/t14{dir = 8; pixel_y = 0; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- T-14 -
Hideaway O37"},/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 8},/area/ovpst) "Md" = (/turf/open/floor/almayer{icon_state = "whitecorner"; dir = 8},/area/ovpst) +"Mf" = (/obj/structure/machinery/light/small{dir = 1},/obj/structure/customizer/clothing,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Mt" = (/turf/open/floor/almayer{icon_state = "orangecorner"; dir = 8},/area/ovpst) "ME" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal

- ENG -
G01 -

Dock 31 Security Sub Processors Diagnostics and Maintenance Room"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. G01 indicates that this area is open to anyone who is quartered on the station. Engineering doors with general access usually suggest that general maintenance equipment is available somewhere behind this door. According to the label, the room behind this door should contain everything you need to diagnose and begin servicing issues with the security scanners."},/turf/open/floor/almayer{dir = 1; icon_state = "orangecorner"},/area/ovpst) -"MF" = (/obj/structure/machinery/light/small{dir = 1},/obj/structure/crafting/packages/table,/turf/open/floor/plating/modular,/area/ovpst) +"MF" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/plating/modular/gray,/area/ovpst) "MG" = (/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_d_pin) "MH" = (/obj/structure/eventterminal/puzzle05/pythia/left,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "MJ" = (/obj/structure/bed/sofa/south/grey/right,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"MY" = (/obj/structure/searchable/puzzle04/drawers_misc/full2,/turf/open/floor/almayer,/area/ovpst) +"MR" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/almayer{icon_state = "black"; dir = 1},/area/ovpst) +"MS" = (/obj/structure/machinery/door/poddoor/almayer/locked,/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) +"MY" = (/obj/structure/machinery/cm_vending/sorted/sectorpatrol/cigrette{density = 0; pixel_y = 20},/turf/open/floor/almayer{icon_state = "sterile"},/area/ovpst) +"Na" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{icon_state = "whitecorner"; dir = 1},/area/ovpst) "Nb" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/almayer{dir = 4; icon_state = "orangecorner"},/area/ovpst) "Nh" = (/turf/open/floor/almayer{icon_state = "blackcorner"; dir = 4},/area/ovpst) -"No" = (/obj/structure/closet/secure_closet/sp/yellow/g01/engiebasics{pixel_x = -8; pixel_y = 16},/obj/structure/closet/secure_closet/sp/yellow/g01/engiebasics{pixel_x = 8; pixel_y = 16},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"Ns" = (/turf/open/floor/almayer{dir = 1; icon_state = "greencorner"},/area/ovpst) +"Ni" = (/obj/structure/machinery/light{dir = 2},/turf/open/floor/almayer{icon_state = "black"; dir = 9},/area/ovpst) +"Nl" = (/obj/structure/machinery/light/small{dir = 8; light_id = "cargointake"},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) +"No" = (/turf/open/floor/plating/almayer{icon_state = "orange-silver"; dir = 8},/area/ovpst) +"Ns" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 1; icon_state = "greencorner"},/area/ovpst) "Nv" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"NB" = (/obj/structure/machinery/light{dir = 4; brightness = 12},/turf/open/floor/almayer,/area/ovpst) -"NE" = (/obj/structure/bookcase,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"NB" = (/obj/structure/machinery/light{dir = 4; brightness = 12},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer,/area/ovpst) +"NC" = (/obj/structure/toilet{dir = 4},/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) +"NE" = (/obj/structure/machinery/light/small,/obj/structure/crafting/packages/bed,/turf/open/floor/plating/modular,/area/ovpst) "NI" = (/obj/effect/decal/info_tag/pst/ofc{dir = 4; desc_lore = "The label OFC indicates office areas, which as the name suggests are typically areas with some specific, bureaucratic function assigned to them and can be anything from personal offices of high-ranking personnel to teaching rooms and spare, unused generic spaces. This door leads to one of the orientation offices, used to brief and greet new arrivals to the station."; desc = "UACM Outer Veil Primary Supply Terminal
- OFC -
Entrance Orientation Office"},/turf/open/floor/almayer{dir = 4; icon_state = "silver"},/area/ovpst) "NP" = (/obj/effect/decal/info_tag/pst/elc{dir = 8; pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - G01 - Elevator Shaft C
"},/turf/open/floor/almayer{dir = 9; icon_state = "red"},/area/ovpst) "NR" = (/obj/structure/surface/table/reinforced/black,/obj/structure/machinery/light{dir = 4},/obj/item/reagent_container/food/snacks/packaged_hdogs,/obj/item/reagent_container/food/snacks/packaged_hdogs,/obj/item/reagent_container/food/snacks/packaged_hdogs{pixel_x = -7; pixel_y = -8},/obj/item/reagent_container/food/snacks/packaged_hdogs{pixel_x = 7; pixel_y = -6},/obj/item/reagent_container/food/snacks/packaged_hdogs{pixel_x = -9},/obj/item/reagent_container/food/snacks/packaged_hdogs{pixel_x = 16},/obj/item/reagent_container/food/snacks/packaged_hdogs{pixel_x = 10; pixel_y = 6},/obj/item/reagent_container/food/snacks/packaged_hdogs{pixel_x = -7; pixel_y = 9},/obj/item/reagent_container/food/snacks/packaged_hdogs{pixel_x = -4; pixel_y = 14},/obj/item/reagent_container/food/snacks/packaged_hdogs{pixel_x = 10; pixel_y = 10},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Ob" = (/obj/structure/surface/table/reinforced/black,/obj/structure/machinery/light/small{dir = 4},/obj/structure/eventterminal/puzzle02/ldmainframediag{dir = 8; pixel_x = -6; pixel_y = 2},/turf/open/floor/almayer{dir = 4; icon_state = "orange"},/area/ovpst) "Oj" = (/obj/structure/machinery/light/small{dir = 4; light_id = "sec-1"},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"Os" = (/obj/structure/searchable/puzzle04/drawers_files/full2,/turf/open/floor/almayer,/area/ovpst) +"Or" = (/obj/effect/decal/info_tag/pst/drm{dir = 4; desc = "UACM Outer Veil Primary Supply Terminal
- DRM -
Dorms, Deck 37, Sector C"; pixel_y = 16},/turf/open/floor/plating/almayer{icon_state = "purplecorner"; dir = 4},/area/ovpst) +"Os" = (/obj/structure/customizer/clothing,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Ot" = (/turf/open/floor/almayer{dir = 8; icon_state = "red"},/area/ovpst) "Ou" = (/obj/effect/decal/info_tag/pst/obs{desc_lore = "The label OBS typically indicates an observation area of some sort, used to look at regular operations of another area without disturbing the actual process within. This area is marked due to the windows leading into the cargo intake system, but is rarely used since the system is properly monitored from the maintenance room right next to this area."; desc = "UACM Outer Veil Primary Supply Terminal
- OBS -
Dock 31 Cargo Processing Intake Observation"; pixel_x = -16},/turf/open/floor/almayer{icon_state = "silver"},/area/ovpst) +"OE" = (/obj/structure/ladder{id = "hd_sw_2"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "OK" = (/obj/structure/window/framed/almayer,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "OO" = (/obj/structure/machinery/light/small,/turf/open/floor/plating/plating_catwalk,/area/ovpst) "OP" = (/obj/structure/machinery/light/small{dir = 8; light_color = "#d3a7d4"},/obj/effect/step_trigger/message/seeonce/D31Scn2,/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "OX" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/open/floor/almayer{icon_state = "silvercorner"},/area/ovpst) "Pe" = (/turf/open/floor/almayer{allow_construction = 0; icon_state = "plate"},/area/ovpst) -"Pn" = (/obj/structure/bed/chair/modular/office{dir = 8},/turf/open/floor/almayer,/area/ovpst) +"Pg" = (/obj/docking_port/stationary/emergency_response/external/pst_elevator_d_drm,/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_d_drm) +"Pj" = (/turf/open/floor/almayer{dir = 4; icon_state = "blue2orange"},/area/ovpst) +"Pl" = (/obj/structure/machinery/light/small,/turf/open/floor/plating/modular/gray,/area/ovpst) +"Pn" = (/obj/structure/surface/table/reinforced/black,/obj/structure/eventterminal/logbuffer{dir = 8},/turf/open/floor/almayer,/area/ovpst) +"Ps" = (/obj/structure/machinery/door/poddoor/almayer/locked{dir = 8},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) +"Px" = (/obj/structure/crafting/packages/table,/turf/open/floor/plating/modular,/area/ovpst) "Pz" = (/turf/open/floor/almayer{dir = 10; icon_state = "emerald"},/area/ovpst) -"PF" = (/obj/structure/crafting/packages/table,/turf/open/floor/plating/modular,/area/ovpst) +"PF" = (/obj/structure/bed/chair/modular/office,/turf/open/floor/plating/modular/gray,/area/ovpst) +"PI" = (/obj/structure/sink{dir = 1; pixel_y = -8},/obj/structure/mirror{pixel_y = -26},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) "PO" = (/turf/open/floor/almayer{icon_state = "silver"; dir = 1},/area/ovpst) "PR" = (/turf/open/floor/almayer{dir = 10; icon_state = "orange"},/area/ovpst) -"PV" = (/obj/structure/ladder{id = "crypt2"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"PV" = (/obj/structure/machinery/door/poddoor/almayer/locked{dir = 8},/turf/open/floor/almayer,/area/ovpst) +"Qg" = (/obj/structure/machinery/light,/obj/effect/step_trigger/message/seeonce_blurb/Hideaway,/turf/open/floor/almayer{icon_state = "black"; dir = 4},/area/ovpst) "Qk" = (/obj/effect/decal/info_tag/pst/elb{dir = 4; pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-B - G01 - Elevator Shaft B
"},/turf/open/floor/almayer{dir = 4; icon_state = "orangecorner"},/area/ovpst) +"Qt" = (/turf/open/floor/plating/almayer{icon_state = "red-white"; dir = 4},/area/ovpst) +"Qx" = (/obj/structure/ladder{id = "hd_ne_2"; icon_state = "ladder10"; height = 1},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Qz" = (/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/turf/open/floor/plating/modular,/area/ovpst) "QG" = (/obj/structure/machinery/door/poddoor/almayer/locked{dir = 8},/turf/open/floor/almayer{dir = 1; icon_state = "emerald"},/area/ovpst) "QI" = (/turf/closed/wall/almayer,/area/ovpst/airlock/ele_d_pin) "QM" = (/obj/structure/machinery/light/small{dir = 1},/turf/open/floor/almayer{dir = 9; icon_state = "orange"},/area/ovpst) +"QO" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin/elevator_outer{id = "d-drm"},/turf/open/floor/almayer{icon_state = "plating"; dir = 1},/area/ovpst/airlock/ele_d_drm) "Ra" = (/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_e_pin) "Rl" = (/obj/item/light_bulb/marker/admin{name = "voicebox - log viewer"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Rz" = (/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer{icon_state = "silvercorner"; dir = 1},/area/ovpst) "RB" = (/turf/open/floor/almayer{icon_state = "white"; dir = 1},/area/ovpst) "RE" = (/obj/structure/machinery/door/poddoor/almayer/locked{dir = 8},/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) +"RZ" = (/obj/structure/machinery/light/small,/obj/structure/crafting/packages/table,/turf/open/floor/plating/modular,/area/ovpst) "Sa" = (/turf/closed/wall/almayer/outer,/area/ovpst/airlock/ele_d_pin) "Sc" = (/turf/open/floor/almayer{icon_state = "silvercorner"},/area/ovpst) -"Sg" = (/obj/structure/searchable/puzzle04/bookcase/full3,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Sg" = (/obj/structure/ladder{id = "hd_nw_2"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "Si" = (/obj/structure/surface/table/reinforced/black,/obj/structure/closet/secure_closet/sp/red/d01/wall/d31chips{pixel_x = -1; pixel_y = 32},/obj/structure/machinery/light{dir = 1},/obj/structure/machinery/door_control{id = "scn1_shutter"; pixel_x = -6; pixel_y = 5; name = "shutter controls"; req_access = list(1141)},/obj/structure/machinery/door_control{pixel_x = -6; pixel_y = 10; name = "outer door toggle"; id = "scn1_exit"; specialfunctions = 4; normaldoorcontrol = 1; req_access = list(1141)},/obj/structure/machinery/door_control{pixel_x = -6; pixel_y = 0; name = "inner door toggle"; id = "scn1_enter"; specialfunctions = 4; normaldoorcontrol = 1; req_access = list(1141)},/obj/structure/eventterminal/admin_event_terminal{pixel_x = 6; pixel_y = 2; puzzlebox_id = "scn1"},/turf/open/floor/almayer{dir = 5; icon_state = "red"},/area/ovpst) +"Sk" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'; dir = 1},/turf/open/floor/plating/almayer{icon_state = "redfull"},/area/ovpst) "So" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{dir = 1; opacity = 0; id = "brief_doors"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Sq" = (/obj/structure/surface/modular/table,/turf/open/floor/plating/modular/gray,/area/ovpst) +"Sr" = (/obj/effect/decal/info_tag/pst/t14{pixel_y = 0; desc = "UACM Outer Veil Primary Supply Terminal
- T-14 -
Hideaway O37"; dir = 4},/turf/open/floor/almayer{icon_state = "black"; dir = 4},/area/ovpst) "Su" = (/obj/structure/sink{dir = 1; pixel_y = -8},/obj/structure/mirror{pixel_y = -25},/obj/structure/machinery/light/small,/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) +"Sw" = (/obj/structure/machinery/light/small{dir = 8; light_id = "cargointake"},/turf/open/floor/plating/plating_catwalk,/area/ovpst) +"Sx" = (/obj/item/crafting/packages/chair,/turf/open/floor/plating/modular,/area/ovpst) +"SB" = (/obj/structure/toilet{pixel_y = 10},/obj/structure/machinery/light/small{dir = 4; light_id = "sec-1"},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) "SE" = (/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_d_pin) -"SF" = (/obj/structure/machinery/light{dir = 4},/obj/structure/bookcase,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"SF" = (/obj/effect/landmark/late_join,/turf/open/floor/almayer{allow_construction = 0; icon_state = "plate"},/area/ovpst) "SG" = (/obj/structure/sink{dir = 1; pixel_y = -8},/obj/structure/mirror{pixel_y = -25},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "SI" = (/turf/open/floor/almayer{dir = 8; icon_state = "emeraldcorner"},/area/ovpst) "SL" = (/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/plating/plating_catwalk,/area/ovpst) +"SM" = (/obj/structure/machinery/light/small{dir = 4; light_id = "sec-1"},/turf/open/floor/plating/plating_catwalk,/area/ovpst) "SN" = (/obj/structure/window/framed/almayer,/turf/open/floor/plating,/area/ovpst) -"ST" = (/obj/structure/bed/chair/modular/office{dir = 1},/turf/open/floor/almayer,/area/ovpst) +"SR" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 0; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector C, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "; dir = 4},/turf/open/floor/plating/almayer{icon_state = "orange-silver"; dir = 4},/area/ovpst) +"ST" = (/obj/structure/ladder{id = "hd_ne_1"; icon_state = "ladder01"; height = 2},/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "SV" = (/turf/open/floor/almayer/uscm/directional{dir = 4; icon_state = "logo_directional1"},/area/ovpst) "Tg" = (/turf/open/floor/almayer{dir = 4; icon_state = "orange"},/area/ovpst) -"Tm" = (/obj/structure/machinery/door/poddoor/almayer/locked,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Tm" = (/obj/structure/machinery/light/small{dir = 4; light_color = "#d3a7d4"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "TA" = (/obj/effect/decal/info_tag/pst/eng{dir = 1; pixel_y = 0; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector A, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{icon_state = "orange"},/area/ovpst) "TK" = (/obj/structure/foamed_metal,/turf/open/floor/plating,/area/ovpst) "TQ" = (/turf/open/floor/almayer{icon_state = "emeraldfull"; dir = 1},/area/ovpst) "TS" = (/turf/closed/wall/almayer/outer,/area/ovpst) "TV" = (/turf/open/floor/kutjevo/colors/blue/tile,/area/ovpst) -"TX" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{icon = 'icons/obj/structures/doors/Door2x1_secure2.dmi'; id = "crypt_airlock_front"; locked = 1},/turf/open/floor/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) +"TX" = (/obj/structure/machinery/cm_vending/clothing/super_snowflake/sp_tiles,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "Uf" = (/obj/structure/eventterminal/puzzle02/ldmainframe_master/correct{item_serial = "UACM-OVPST-D31-LDCPU-02"; puzzlebox_id = "LD_Mainframe_2"},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) "Um" = (/turf/open/floor/almayer{dir = 4; icon_state = "redcorner"},/area/ovpst) "Uv" = (/turf/open/floor/almayer{dir = 9; icon_state = "red"},/area/ovpst) "UB" = (/turf/open/floor/almayer{icon_state = "silver"; dir = 5},/area/ovpst) +"UF" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'},/turf/open/floor/almayer,/area/ovpst) "UI" = (/obj/effect/decal/info_tag/pst/t14{dir = 8; pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- T-14 -
Hideaway O37"},/turf/open/floor/almayer{icon_state = "black"; dir = 8},/area/ovpst) "UL" = (/obj/structure/bed/chair/modular/office{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "UM" = (/obj/structure/machinery/door/airlock/almayer/uacm/ovpst/general{icon = 'icons/obj/structures/doors/maintdoor.dmi'},/turf/open/floor/almayer{icon_state = "orangefull"},/area/ovpst) -"UP" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1generic.dmi'},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"UP" = (/turf/open/floor/plating/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) "UQ" = (/obj/structure/closet/secure_closet/sp/yellow/g01/engiebasics{pixel_x = -8; pixel_y = 15},/turf/open/floor/almayer{dir = 1; icon_state = "orange"},/area/ovpst) -"UY" = (/turf/open/floor/almayer{icon_state = "redfull"},/area/ovpst) +"UY" = (/obj/effect/step_trigger/message/seeonce_blurb/Pinnacle,/turf/open/floor/almayer{icon_state = "redfull"},/area/ovpst) "Va" = (/turf/open/floor/almayer{icon_state = "white"},/area/ovpst) +"Vb" = (/obj/structure/machinery/light{dir = 2},/turf/open/floor/almayer{icon_state = "black"; dir = 5},/area/ovpst) "Vf" = (/obj/effect/decal/info_tag/pst/mup{pixel_y = 16; pixel_x = -16},/turf/closed/wall/almayer,/area/ovpst) -"Vg" = (/obj/item/crafting/packages/chair{pixel_x = -9; pixel_y = -3},/obj/item/crafting/packages/chair{pixel_x = 8; pixel_y = -3},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Vg" = (/turf/open/floor/plating/almayer{icon_state = "orange"; dir = 4},/area/ovpst) "Vj" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{dir = 1; opacity = 0},/turf/open/floor/almayer{dir = 1; icon_state = "red"},/area/ovpst) -"Vl" = (/obj/docking_port/stationary/emergency_response/external/pst_elevator_d_drm,/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_d_pin) +"Vk" = (/obj/effect/step_trigger/message/seeonce_blurb/Dock31,/turf/open/floor/almayer{icon_state = "emerald"},/area/ovpst) +"Vl" = (/obj/structure/sink{dir = 8; pixel_y = 0; pixel_x = -9},/obj/structure/mirror{pixel_x = -25},/turf/open/floor/almayer{icon_state = "whitefull"; dir = 4},/area/ovpst) +"Vo" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor.dmi'; dir = 1},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "Vp" = (/obj/structure/bed/chair/modular/office{dir = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"VU" = (/obj/structure/machinery/light/marker/admin{light_id = "crypt_log"},/obj/structure/eventterminal/puzzle04/log_reader,/obj/structure/surface/table/reinforced/black,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"VK" = (/turf/open/floor/almayer{icon_state = "black"; dir = 9},/area/ovpst) +"VU" = (/obj/structure/machinery/cm_vending/sorted/sectorpatrol/soda{density = 0; pixel_y = 20},/turf/open/floor/almayer,/area/ovpst) +"VY" = (/obj/effect/step_trigger/message/seeonce_blurb/Hideaway,/turf/open/floor/almayer{icon_state = "black"; dir = 4},/area/ovpst) "Wg" = (/turf/open/floor/almayer/uscm/directional{dir = 8; icon_state = "logo_directional1"},/area/ovpst) -"Wm" = (/obj/structure/surface/table/reinforced,/obj/item/pizzabox/meat,/obj/item/pizzabox/meat{pixel_x = 4; pixel_y = 15},/obj/item/pizzabox/meat{pixel_x = 4; pixel_y = 7},/turf/open/floor/almayer,/area/ovpst) -"Wx" = (/obj/structure/eventterminal/puzzle04/final_log{pixel_y = 25},/obj/structure/machinery/light/marker/admin{light_id = "final_log"; pixel_y = 16},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) -"WA" = (/obj/effect/decal/info_tag/pst/eld{dir = 1; pixel_y = 0; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft D
"},/obj/effect/step_trigger/message/seeonce/Dorms,/turf/open/floor/almayer{icon_state = "emerald"},/area/ovpst) +"Wm" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'; dir = 1},/turf/open/floor/plating/almayer{icon_state = "purplefull"; dir = 8},/area/ovpst) +"Wn" = (/obj/structure/machinery/light,/turf/open/floor/plating/almayer{icon_state = "purple"; dir = 8},/area/ovpst) +"Wq" = (/obj/effect/decal/info_tag/pst/eng{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector B, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "},/turf/open/floor/almayer{icon_state = "white-orange"; dir = 2},/area/ovpst) +"Wt" = (/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{dir = 4; icon_state = "silvercorner"},/area/ovpst) +"Wx" = (/obj/effect/decal/info_tag/pst/t14{dir = 4; pixel_y = 0; desc = "UACM Outer Veil Primary Supply Terminal
- T-14 -
Hideaway O37"},/turf/open/floor/almayer{icon_state = "black"; dir = 4},/area/ovpst) +"WA" = (/obj/effect/decal/info_tag/pst/eld{dir = 1; pixel_y = 0; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft D
"},/turf/open/floor/almayer{icon_state = "emerald"},/area/ovpst) "WF" = (/obj/effect/decal/info_tag/pst/elc{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - Elevator Shaft C
"},/turf/open/floor/almayer{icon_state = "emeraldcorner"},/area/ovpst) +"WG" = (/obj/structure/machinery/light/small{dir = 1; light_id = "cargointake"},/obj/item/crafting/packages/lamp,/turf/open/floor/plating/modular,/area/ovpst) +"WI" = (/obj/structure/machinery/light{dir = 8},/turf/open/floor/almayer,/area/ovpst) +"WJ" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; pixel_x = -16; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance Liquid data channels are wired all though the station and this door seems to lead to one of them. There is likely nothing but dusty, humming computers inside."; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Sector B Production and T14 access"},/turf/open/floor/almayer{dir = 1; icon_state = "orangecorner"},/area/ovpst) "WW" = (/obj/structure/toilet{dir = 4},/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) "Xn" = (/turf/open/floor/almayer{icon_state = "silver"; dir = 9},/area/ovpst) +"Xr" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; pixel_x = -16; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance Liquid data channels are wired all though the station and this door seems to lead to one of them. There is likely nothing but dusty, humming computers inside."; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Sector A Production and T14 access"},/turf/open/floor/almayer{dir = 1; icon_state = "orangecorner"},/area/ovpst) "Xs" = (/obj/structure/window/framed/almayer/hull,/turf/closed/wall/almayer/outer,/area/ovpst/airlock/d31) "Xy" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general/admin{dir = 2; opacity = 0},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"XC" = (/obj/structure/surface/table/reinforced,/obj/item/pizzabox/vegetable,/obj/item/pizzabox/vegetable{pixel_y = 4},/obj/item/pizzabox/vegetable{pixel_x = 3; pixel_y = 9},/turf/open/floor/almayer,/area/ovpst) -"XE" = (/obj/effect/decal/info_tag/pst/eld{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - G01 - Elevator Shaft D
"},/turf/open/floor/almayer{icon_state = "redcorner"},/area/ovpst) -"XF" = (/obj/structure/searchable/puzzle04/drawers_misc/full1,/turf/open/floor/almayer,/area/ovpst) +"XC" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Dorms Deck 37, Sector D, Maintenance Shaft"; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance. These doors lead to maintenance shafts used to service issues with the dorms should ones arrive. Some of these passages may have other exits, but since no centralized map system exists for the PST, finding those is a matter of luck. "; dir = 8},/turf/open/floor/plating/almayer{icon_state = "orange-silver"; dir = 8},/area/ovpst) +"XE" = (/obj/effect/decal/info_tag/pst/eld{dir = 1; desc = "UACM Outer Veil Primary Supply Terminal
- EL-C - G01 - Elevator Shaft D
"},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{icon_state = "redcorner"},/area/ovpst) +"XF" = (/obj/structure/eventterminal/puzzle04/final_log{pixel_y = 25},/turf/open/floor/almayer{icon_state = "tcomms"},/area/ovpst) +"XG" = (/obj/structure/machinery/door/airlock/multi_tile/uacm/general{icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi'},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) "XM" = (/turf/open/floor/almayer{dir = 5; icon_state = "orange"},/area/ovpst) -"XU" = (/obj/structure/machinery/light{brightness = 12},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"XV" = (/obj/item/crafting/packages/lamp{pixel_x = -2; pixel_y = -1},/obj/item/crafting/packages/lamp{pixel_x = 10; pixel_y = -2},/obj/item/crafting/packages/lamp{pixel_x = -12; pixel_y = -2},/obj/item/crafting/packages/lamp{pixel_x = 9; pixel_y = 8},/obj/item/crafting/packages/lamp{pixel_x = -7; pixel_y = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"XN" = (/obj/structure/crafting/packages/bed,/turf/open/floor/plating/modular,/area/ovpst) +"XP" = (/obj/structure/machinery/light{dir = 1},/turf/open/floor/plating/almayer{icon_state = "orange-silver"; dir = 4},/area/ovpst) +"XU" = (/obj/structure/machinery/light{brightness = 12},/obj/effect/step_trigger/message/seeonce_blurb/Dorms,/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"XV" = (/obj/effect/decal/info_tag/pst/lby{dir = 8; desc = "UACM Outer Veil Primary Supply Terminal
- LBY -
Dorms Deck 37 entrance lobby"; pixel_y = 16; pixel_x = -16},/turf/open/floor/almayer{dir = 8; icon_state = "blue2orange"},/area/ovpst) "XZ" = (/obj/structure/bed/chair/office/dark{dir = 8},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"Yi" = (/obj/structure/machinery/light/small,/obj/item/crafting/packages/drawer,/turf/open/floor/plating/modular,/area/ovpst) "Yo" = (/turf/open/floor/almayer{icon_state = "plate"},/area/ovpst/airlock/d31) "YL" = (/obj/structure/machinery/conveyor_switch{id = "d31-entrance"; pixel_x = 7; pixel_y = -6},/turf/open/floor/almayer{dir = 10; icon_state = "red"},/area/ovpst) +"YU" = (/obj/structure/machinery/door/poddoor/almayer/locked,/turf/open/floor/almayer{icon_state = "blackfull"; dir = 4},/area/ovpst) "YY" = (/turf/open/floor/almayer{icon_state = "whitecorner"; dir = 1},/area/ovpst) "Zg" = (/obj/effect/decal/info_tag/pst/mup{pixel_y = 16; pixel_x = -16; desc = "UACM Outer Veil Primary Supply Terminal
- MUP -
MUP 14-37"},/turf/open/floor/almayer{icon_state = "purplecorner"; dir = 1},/area/ovpst) "Zh" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) -"Zn" = (/obj/structure/surface/table/reinforced,/obj/item/storage/donut_box{pixel_y = 8},/obj/item/storage/donut_box{pixel_x = 7; pixel_y = -2},/turf/open/floor/almayer,/area/ovpst) +"Zn" = (/turf/closed/wall/almayer/outer,/area/ovpst/airlock/ele_d_drm) "Zv" = (/obj/docking_port/stationary/emergency_response/external/pst_elevator_e_d31,/turf/open/floor/almayer/empty,/area/ovpst/airlock/ele_e_d31) "ZA" = (/obj/structure/machinery/door_control{pixel_y = -11; name = "inner door toggle"; id = "d31_cargo_fence"; specialfunctions = 4; req_access = list(1141); pixel_x = -12},/turf/open/floor/almayer{icon_state = "red"},/area/ovpst) "ZB" = (/obj/structure/sink{dir = 8; pixel_y = 0; pixel_x = -9},/obj/structure/machinery/light/small{dir = 8},/turf/open/floor/almayer{icon_state = "silverfull"},/area/ovpst) -"ZE" = (/obj/structure/searchable/puzzle04/bunk_chest/full1,/turf/open/floor/almayer,/area/ovpst) -"ZL" = (/turf/open/floor/almayer{icon_state = "sterile"},/area/ovpst) -"ZR" = (/obj/structure/surface/table/reinforced,/obj/item/pizzabox/mushroom,/obj/item/pizzabox/mushroom{pixel_y = 3},/obj/item/pizzabox/mushroom{pixel_y = 5},/turf/open/floor/almayer,/area/ovpst) +"ZE" = (/obj/structure/eventterminal/briefing_display{pixel_y = 32},/obj/structure/machinery/light/marker/admin{pixel_y = 15; light_id = "theathervoice"},/turf/open/floor/almayer{allow_construction = 0},/area/ovpst) +"ZL" = (/obj/structure/closet/secure_closet/sp/yellow/g01/engiebasics{pixel_y = 18; density = 0},/turf/open/floor/almayer{icon_state = "sterile"},/area/ovpst) +"ZP" = (/turf/open/floor/plating/almayer{icon_state = "orangecorner"; dir = 1},/area/ovpst) +"ZR" = (/obj/effect/decal/info_tag/pst/eng{pixel_y = 16; desc_lore = "The label ENG indicates doors and areas related to controlling and maintaining the mechanical and computer elements of a colony, ship or station. These areas typically require an elevated engineering clearance Liquid data channels are wired all though the station and this door seems to lead to one of them. There is likely nothing but dusty, humming computers inside."; desc = "UACM Outer Veil Primary Supply Terminal
- ENG -
Sector C Production and T14 access"; dir = 4},/turf/open/floor/plating/almayer{icon_state = "orangecorner"; dir = 4},/area/ovpst) "ZV" = (/turf/open/floor/almayer{dir = 6; icon_state = "emerald"},/area/ovpst) "ZW" = (/obj/effect/decal/info_tag/pst/mem{pixel_y = 16; desc = "UACM Outer Veil Primary Supply Terminal
- MEM - l
Memorial"},/turf/open/floor/almayer{icon_state = "white"; dir = 1},/area/ovpst) (1,1,1) = {" -qgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSxvxvTSTSxvxvxvxvxvTSTSxvxvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSPVBcTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSrIMJpOLNrIERERERMJpOLNrIMJTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOhdhdhdhdhdhdhdhdhdpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTmTmTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSaSaSaSaSaSaSaSaSaSaSaSaIAIAIAIAIAIAIAIAIATSfvpOhdybhdybhdybybhdhdpOCBTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSihJBVgNoAIkClVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIAxvcepOhdhdhdhdhdhdhdhdhdpOcexvIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIAxvIRpOpOpOpOpOpOpOpOpOpOpOIRxvIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpLpOpOpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIAxvIRpOpOpOpOpOpOpOpOpOpOpOIRxvIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSaApDLVcoMtXVLqTSIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIAxvbopOpOpOpOpOpOpOpOpOpOpOboxvIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSlhlhlhqPlhlhlhTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTmTSTSioioioioTSIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSpOpOpOwRpOhWVaVaMdpOwRpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDsDBmlFoTsDsDsDFZsDsDsDsDsDFZsDsDsDsDFZsDsDsDlhTSiojVZnKfTSIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSlhlhlhlhlhlhyXpOlhlhlhlhlhTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDlhTSioioioioTSIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSpOAqFizFpOlhRBZWlhZhZhGMGMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhPFMFvjlhdepjdelhvjfsvjlhvjpjdelhvjfsPFlhsDlhTSioioioioTSTSTSTSIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSEppOpOpOpOlhfvCBlhnbZhGMGMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhPFvjvjlhdevjvjlhvjvjvjlhvjvjdelhvjvjvjlhsDlhTSWmZRXCKHTSTmTmTSTSTSTSTSTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSJgnkqMqMvslhpOpOlhZhZhpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhsDlhlhioioioionCyLyLBXioioioioTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSqMqMqMqMOXlhBVSclhzxpOZhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSSLlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjdelhnalhlhiohdhdhdhdPePehdhdhdhdioTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASakjSESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSpOpOpOpOaMpOLBaMpOLBZhZhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhvjiNvjlhvjiNvjlhvjiNvjlhvjiNdelhvjiNdelhsDlhlhFdhdhdhdhdPePehdhdhdhdNBTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIASaQIFWMGMGMGQIFWMGMGMGQISaIAIAIAIAIAIAIAIAIATSpOpOpOpOaMeqLBaMXyLBZhZhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSCSlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhCSlhlhhrhdhdhdhdPePehdhdhdhdvJTSTSIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSHpHpygTQTQTQkpHpCETSTSoQTSoQvMoQTSoQxvoQTSGMGMGMGMIslhhZgYlhRzpOZhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSlFqZRBYYionVRBYYioKBRBYYionVRBYYioKBRBYYZLNblFCwpOhMPePePePePePePePePePeLKxLTSIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOygTQkppOpOpOrIERMJJMrIERMJJMrIERLAlhBRGMGMGMHrlhfvCBlhZhZhpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTALjiohWVaMdiohWVajliohWVaMdiohWVajliohWVaFAcoyFiGhMPePePePePePePePePePeLKrWTSIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSfvpOpOpOTQogogogogogogogogogogogogogkVmZpOLBpOoCpOpOlhpOpOlhnbZhqMqMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSCSlhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhCSlhlhNshdhdhdhdPePehdhdhdhdEbTSTSIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOpOpOpOpOwRpOpOpOpOpOWFogPzSINISoLBvJaZwzpOlhpOpOlhZhZhqMqMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSIATSsDlhPFfsvjlhvjfsvjlhPFfsvjlhvjfsvjlhvjfsvjlhsDlhlhFdhdhdhdhdPePehdhdhdhdNBTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhEMLUlhlhlhlhlhlhlhlhlhcOpOlhlhlhlhlhTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSTVoRTVTVoRTVTSIATSsDlhvjvjvjlhvjvjvjlhPFvjvjlhvjvjvjlhvjvjvjlhsDlhlhiohdhdhdhdPePehdhdhdhdioTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOpOpOpOpOLNpOpOpOpOpOBiHpkpqUFelhitpOpOpOLNHaPOXnvaLNpOpOvJTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSMHTVEtTVEyuvTSIATSSLlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhsDlhlhiopOXUpOXEuDuDDFuDteioioTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSfvpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOPzogZVpOPzogogogogogogEBaZaZaZaZrRREIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSkwuvTVIzuvwpTSIATSsDlhvjvjvjlhvjvjPFlhvjvjvjlhvjvjvjlhvjvjvjlhsDlhlhlhlhlhlhlhUPpOlhIKlhlhlhTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOGJUvAjAjAjAjAjAjAjffAjAjAjffAjAjjLVjNPAjAjAjAjAjAjzulFlFlFlFXMQGIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSFwsDsDsDsDwVTSIATSsDlhvjiNvjlhvjiNPFlhvjiNvjlhvjiNvjlhvjiNPFlhnalhlhpOpOpOpOUmAjdPemAjFzpOpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIATSrPuDuDUYUYuDuDuDuDTSTSoQTSoQoQoQTSoQoQoQTSFzpOpOLBLBXnLBXnblyGLBpOQkTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSpeuvsDsDuvlxTSIATSsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDlhlhtrpOpOpOpOpOkcgoBupOpOxwTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSTSjsjsjsjslhjsjsjsjsTSTSIAIAIAIAIAIAIAIAIATSJspOpOLBLBXnLBLBpOLBLBpOrCTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSuvuvsDsDuvuvTSIATSsDsDsDOOsDsDsDsDsDsDOOsDsDsDsDsDOOsDsDsDsDsDsDlhlhpOpOpOpOpOpOGJBvOtpOpOpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOpOpOPOhZblblPOblblblpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSOKOKmjsDOKOKTSIATSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSpOpOpOpOpOpOBFlhlhemememTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOXnLBLBLBpOpOXnLBXnblUBblTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIATSEauvsDsDuviITSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOogpOpOFeogFeogpOpOqLqLpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOLBLBLBLBPOblXnblPOLBaMpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSTSTSTSTSTSTSTSTSTSTSuvuvsDsDuvuvTSIATSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOgtgtogFeZVpOhEpOpOlhlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSJsPOblHapOpOpOblpOPOhZHarCTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSllZEiolhllDWiolhlhlhlhlhjgCOlhlhTSTSTSioiomelhioOsioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIATStrpOPzGNpOFeZVpOgtpOLGlhlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOpOpOpOpOpOpOpOpOpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSioioiolhioioiolhlhvWuvWxCOCODPuvvWlhlhioioiolhioioyWTSIAIAIAIAIAIAIAIAIAIAIAIAIAIATSWAwkwkwkwkwkwkwkwkwkwklhlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOfAnnnnnnnnnnnnnnnnnnwapOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSioiounlhrMPniolhlhuvuvCOCOCOCOuvuvlhlhioyWynlhbWioELTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaQIrBMGMGMGQIrBMGMGMGQIQIlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSeWFrsMeZeZeZFrsMeZeZeZFreWTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSioioSTlhioioiolhlhuvuvCOCOCOCOuvuvlhlhioioiolhioyWELTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESEQIlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSioioeJlhioiondlhlhefuvjmGaGajmuveflhlhioioXFlhioioISTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESEQIlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSkElhlhlhkElhlhlhlhlhlhlhTXCOlhVflhlhlhkElhlhlhkElhlhTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESEQIlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSRBYYioKBRBYYiopOpOLNpOpZqKqKZgLNpOpOKBRBYYioKBRBYYioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESEQIlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSiohWVajliohWVaMdpOpOpOpOpOpOpOpOpOpOioiohWVajliohWVaTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESEQIlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSlhlhkElhlhlhkElheApOpOpOpORlRlRlpONElhlhlhkElhlhlhkETSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESEQIlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSlBioiolhKkioiolhNEpOpOKxpOpOpOpOpOhSlhZBKXKXlhMYioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESEQIlhpOTSIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATShYioiolhioiohYlhgDpObmVUpOpOKxpOpOSFlhlhlhKXlhELyWioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSmhiomNlhbWiomhlhpOULbmbmpOpObmbmVppOlhWWCmKXlhutioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSioioiolhioioiolhNEpOpOULpOpObmbmpOSglhlhlhKXlhyWioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSlloliolhlleViolhNEpOpOpOpOpOfkpOpONElhWWCmKXlhBeioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaVlSESESESESESESESESESESaIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWrjRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIATSTSTSTSTSTSTSTSTSkxpOwRhuaaaaljwRpONElhlhlhlhlhlhlhlhTSIAIAIAIAIAIAIAIAIAIAIAIAIAIASaSaSaSaSaSaSaSaSaSaSaSaSaIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWeWeWeWeWeWeWeWeWeWeWeWeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIATSTSTSTSlhJOpOlhlhlhlhlhlhlhlhlhlhlhTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSNhkCkCfONvpOpOpONvpOxNpOUIfVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOpOpOpOpOpOxNqWwZGETSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgqgqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qglPqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg -qgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqg -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpusVsVsVsVsVsVsVsVsVsVTSsesVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpKpKpKpKpKpKpKpKpKpKpKpKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpZvaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSKpsqfapspspssqfapspspssqKpTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOBITQTQTQTQTQTQTQTQTQthpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOBiTQTQTQTQTQTQTQGNpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOBiTQTQTQTQTQGNpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSJspOpOpOBiTQTQTQGNpOpOpOrCTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOBiTQGNpOpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOFjpOTQpOFjpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSlhlhlhlhlhpOTQpOlhlhlhlhlhTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTKTKTKTKTKlhegTQPzlhTKTKTKTKTKTKTKlhuvuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTKIlIlTKTKlhwnwnwnlhTKTKTKTKTKTKTKlhEFuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSlhlhlhlhlhlhuvuvuvlhlhlhlhlhlhlhlhlhuvqnuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpolFlFlFLclhOPlMcTSNQMlFlFlFUQlFEUlhlhlhGATSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSiaXZpOpOTglhuvuvuvSNvrXZpOpOpOGkOblhlhAquGTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSPRcococoarlhwnwnwnlhPRcococococoarlhlhpOLKTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSIAIAIAIAIAIATSTSlhlhlhlhqelhltTQCllhlhlhlhqelhlhlhlhlhpOLKTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOTSIAIAIAIAIAIATSioioioioEEXMlhJHTQLVlhKKpOEZXMMEpOpOpOpOpOLKpOoIlhuvuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSAATSIAIAIAIAIAIATSpOSckVzIkVvTUMPRtYarUMPRcocoarCpaZaZaZpHaZhGaZaoAJuvUfuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSAATSIAIAIAIAIAIATSpOktlhlhlhlhlhnRTQxclhlhlhlhlhlhlhlhlhlhpOLKlhlhlhqnuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSvBTSTSTSTSTSTSTSTSpOktlhTKlhpOpOpOTQSclhBUfElhTKTKTKTKTKlhpOLKTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSvBlhpOpOpOLNpOpOpOpOktlhTKlhpOpOpOTQmZCmKXKXlhTKTKTKTKTKlhFoaoTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSvBlhOukVkVkVkVkVkVkVwYlhTKlhgRBuyuTQCYlhlhlhlhlhlhlhTKlhlhlhGATSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSvBlhSNSNSNbQSNSNSNlhlhlhlhlhjilhlhoolhlhBZlhBZlhBZlhTKlhuvtouvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSmpptlmlmlmlmlmlmDuSNjecHDMoHAjSijqOjlhlhmKlhmKlhmKlhTKlhmRuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSnESNYLZAuDnGuDuNdbuvlhlhSGSuKXSuSGlhTKlhuvuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSnElhSNSNSNlhjiSNlhhDlhlhlhlhkulhlhTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSLRlhnhnhnhbCAjapBIHpyypOpOHaPOiPpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSrfjolmlmlmqRpOpOlqWgAMpOcepOcepOcWTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSHCHCHCGfpOpOaieDyppOIRpOIRpONRTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSfvpOpOpOpOpOHsSVCHpObopObopOrYTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOiOogogogSIpOpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSoQoQoQTSvuLaLaLavuTSoQoQoQTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAbRYoYoYobRIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAbRYoYoYoXsIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAhjIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAvuBHYoYovuIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAbRmqmqmqbRIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAbRYoYoYobRIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAvuzQzQzQvuIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAdKIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA -qgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqg +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTVoRTVTVoRTVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSMHTVEtTVEyuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSISuvTVTVuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSFwsDsDsDsDwVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSuvuvsDsDuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSuvuvsDsDuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSOKOKmjsDOKOKTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSEauvsDsDuviITSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSuvuvsDsDuvuvTSKkTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSiowfiolhiobWPnlhlhlhlhlhlBeVlhlhTSTSTSiowfiolhiowfioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDsDsDsDsDFZsDsDsDsDsDsDFZsDsDsDsDsDsDFZsDsDsDsDsDsDsDsDsDsDFZsDsDsDsDsDsDFZsDsDsDsDsDsDFZsDsDsDsDsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSioioiolhioioiolhlhvWpeXFkwCODPuvdBlhlhioyWunlhioioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhEbhrlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSioioiolhioyWPnlhlhuvuvCOCOCOCOuvuvlhlhioiondlhioioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhXNuyPxlhmCuyXNlhmCuySxlhXNqDSxlhSxWGvjlhlhrNiXlhlhPxuySxlhvjuyPxlhSxuyXNlhPxuyXNlhSxuyPxlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSIATSioioiolhioioiolhlhELuvCOCOCOCOuvuvlhlhioyWiolhioioioTSIATSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhvjvjvjlhPxvjvjlhPxvjvjlhtNvjmClhtNvjvjlhlhioiolhlhXNmCvjlhvjmCXNlhvjmCPxlhvjmCSxlhXNvjvjlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIATSJjynTSIATSiopZiolhiomNPnlhlhefuvuvkokouvwpeflhlhiopZiolhiopZioTSIATSDWQxTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSSwlhlhvjvjvjlhSxvjvjlhXNvjvjlhvjvjvjlhPxvjvjlhlhWIzvlhlhvjvjvjlhvjvjSxlhvjvjvjlhvjvjvjlhvjvjvjlhlhSMTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIATSkbpOTSTSTSeAlhlhlhkElhlhlhlhlhlhlhfVkxlhVflhlhlhkElhlhlheAlhlhlhTSTSLXTmTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSIKSglhsDlhlhvjvjmClhvjvjvjlhvjvjvjlhvjvjvjlhXNvjvjlhlhioiolhlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhlhsDlhSTutTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIATSpOxNmJaHpORBYYoAKBRBYYiopOpOLNpOGoqKqKZgLNZEgMKBRBYYioKBRBNaiopOVYmJwZpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSmJmJlhsDlhlhvjiNSxlhvjiNvjlhvjiNvjlhvjiNvjlhvjiNvjlhlhioiolhlhvjiNvjlhvjiNvjlhvjiNvjlhvjiNvjlhvjiNvjlhlhsDlhmJmJTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIATSpOSrGEzHpOiohWVaMdiomhVaMdpOpOpOpOpOpOpOpOpOpOioiomhVaMdiohWVapOQgGEwZpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSCxCxlhsDlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhlhtDJBlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhlhsDlhCxCxTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSlhlheAlhlhlheAlhpOpOpOpOpORlRlRlpOpOlhlhlheAlhlhlheATSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSkCJelhsDhrXCRBYYiDnVRBYYmeKBRBYYllnVRBYYVUKBRBYYBeqraOCMCCUPlLRBYYBenVRBYYVUKBRBYYllnVRBYYmeKBRBYYiDXPhrsDlhizlVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSiowfiolhiowfiolhpOpOpOKxpOpOpOpOpOpOlhZBKXKXlhiowfioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOlhsDojGWiohWVaMdiohWVajliohWVaMdiohWVajliohWVaQtSkCMCCWmWniohWVaMdiohWVajliohWVaMdiohWVajliohWVaSRojsDlhpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSioioiolhioioiolhfvpObmeJpOpOKxpOpOCBlhlhlhKXlhioioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSjgpOlhsDlhlhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhscOrlhlhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhsDlhpOjgTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSioioiolhioioiolhpOULolbmpOpObmlxVppOlhWWCmKXlhioioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSOsyqlhsDlhlhXNQzvjlhvjQzvjlhvjQzvjlhvjQzvjlhXNWGvjlhlhioiolhlhvjQzvjlhvjQzvjlhmCQzvjlhvjQzvjlhvjQzvjlhlhsDlhIEOsTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSioioiolhioioiolhpOpOpOULpOpOhYbmpOpOlhlhlhKXlhioioioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOvXlhiqlhlhPxvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhSxvjvjlhlhioiolhlhvjvjvjlhvjvjvjlhXNvjvjlhvjvjvjlhvjvjvjlhlhvXlhKHpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSiopZiolhiopZiolhpOpOpOpOpOpOfkpOpOpOlhWWCmKXlhiopZioTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTXVgIzNolhlhtNvjvjlhSxvjvjlhvjXNtNlhvjvjvjlhPxvjvjlhlhioiolhlhvjvjvjlhvjvjvjlhPxvjvjlhvjvjvjlhvjvjvjlhlhVgIzNoTXTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAew +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSlhlhlhlhlhlhlhlhpOpOwRhuskskljwRpOpOlhlhlhlhlhlhlhlhTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSZPlhlhmCvjvjlhvjvjmClhvjmCSxlhmCvjtNlhtNvjvjlhlhWIzvlhlhvjmCtNlhvjmCXNlhSxvjvjlhXNmCvjlhvjvjSxlhlhZRTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSlhlhlhlhlhlhlhlhlhlhlhlhJOpOlhlhlhlhlhlhlhlhlhlhlhTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhvjiNSxlhXNYiPxlhvjiNPxlhPxsTXNlhvjiNvjlhlhioiolhlhSxRZXNlhSxYiPxlhtNiNvjlhPxYiSxlhPxYiXNlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSxSxNmJwZpOHZpOpOpOpOHZNhkCkCfONvpOpOpONvpOxNpOUIfJTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhioiolhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSOEWxGEwZpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOxNqWwZgDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDsDsDsDsDOOsDsDsDsDsDsDOOsDsDsDsDsDsDOOsDsDvvXCioioVgvvsDsDOOsDsDsDsDsDsDOOsDsDsDsDsDsDOOsDsDsDsDsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSSwlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhgOkVkVqPlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhSMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhxpmJlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhLULULULULULULULULULUlhLULULULULULULULULULUlhxNwZlhLULULULULULULULULULUlhLULULULULULULULULULUlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhLULULULULULULULULULUlhLULULULULULULULULULUlhucDelhLULULULULULULULULULUlhLULULULULULULULULULUlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +IAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhLULULULULULULULULULUlhLULULULULULULULULULUlhxNwZlhLULULULULULULULULULUlhLULULULULULULULULULUlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhLULULULULULULULULULUlhLULULULULULULULULULUlhxNwZlhLULULULULULULULULULUlhLULULULULULULULULULUlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhLULULULULULULULULULUlhLULULULULULULULULULUlhxNwZlhLULULULULULULULULULUlhLULULULULULULULULULUlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhLULULULULULULULULULUlhLULULULULULULULULULUlhxNwZlhLULULULULULULULULULUlhLULULULULULULULULULUlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhLULULULULULULULULULUlhLULULULULULULULULULUlhucDelhLULULULULULULULULULUlhLULULULULULULULULULUlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSIElhlhlhlhlhlhlhUFiolhlhlhlhlhlhlhlhlhxpmJlhlhlhxNwZlhlhlhxpmJlhlhlhlhlhlhlhlhlhxpmJlhlhlhlhlhlhlhyqTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOPVdaaaaaaaaahJmJmJxraaaaaaaaaaaaaahJmJmJxraaPsDOdaPsaahJmJmJxraaaaaaaaaaaaaahJmJmJxraaaaaaaaDOPVpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSpOzLVKkCVbmJmJNikCkCkCkCVbmJmJNikCkCVbmJmJNikCPsDxVKPskCVbmJmJNikCkCVbmJmJNikCkCkCkCVbmJmJNikCDxzLpOTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDsDsDpOlhlhlhlhUFiolhlhlhlhlhlhxpmJlhlhlhlhoTMSlhlhlhxNwZlhlhlhIYYUlhlhlhlhxpmJlhlhlhlhlhlhxpmJlhlhlhlhpOsDsDsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSSwlhlhlhlhLULULULULULULUlhLULULULULULULUlhVlKXKXlhSBlhucDelhKXKXKXKXKXlhLULULULULULULUlhLULULULULULULUlhlhlhlhSMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSsDlhcVqwlhLULULULULULULUlhLULULULULULULUlhVlKmKXlhmKlhCwdalhKXKXKXKXKXlhLULULULULULULUlhLULULULULULULUlhjFJUlhsDTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDsDsDsDsDsDlhmJmJlhLULULULULULULUlhLULULULULULULUlhlhlhKXKXKXKXmJmJmJKXKXlhlhlhlhLULULULULULULUlhLULULULULULULUlhmJmJlhsDsDsDsDsDsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhlhlhlhlhCxCxlhLULULULULULULUlhLULULULULULULUlhNCkQKXKmKXVomJmJpkKXKXkQacihlhLULULULULULULUlhLULULULULULULUlhCxCxlhlhlhlhlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhjgMfpOTXAIkClVlhLULULULULULULUlhLULULULULULULUlhlhlhKXlhlhlhDxnOlhKXKXlhPIBalhLULULULULULULUlhLULULULULULULUlhMRkCnZTXpOOsjglhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSSwlhpOpOLVcoKKpOpOlhLULULULULULULUlhLULULULULULULUlhNCKfKXlhSBlhxNwZlhKXKXlhlhlhlhLULULULULULULUlhLULULULULULULUlhpOpDLVcoMtpOpOlhSMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhlhlhqelhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhKXlhmKlhxNwZlhKXKXKXKXKXlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhqelhlhlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSxvxvTSTSxvxvxvxvxvTSTSxvxvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDsDsDsDBmlFWJsDsDsDFZsDsDsDsDsDFZsDsDsDsDFZsDsDsDlhNCKfKXmlKXlhxNwZlhmKlhlhlhmKlhsDsDsDsDsDsDsDsDFZsDsDsDsDsDFZsDsDsDBmlFXrsDsDsDsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSrIMJpOLNrIERERERMJpOLNrIMJTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDlhlhlhKXKXBclhucDelhNlBclhVlmUlhsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOhdhdhdhdhdhdhdhdhdpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhdeMFzilhdepjzilhampjzilhdeMFzilhSxrMXNlhsDlhVlmlKXKXrWlhdEdalhKZBalhafKZlhsDlhPxFOXNlhmCFOPxlhdeMFamlhamMFzilhdejVSqlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSaSaSaSaSaSaSaSaSaSaSaSaIAIAIAIAIAIAIAIAIATSfvpOhdybhdybhdybybhdhdpOCBTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhPFamamlhamamamlhamamamlhamamamlhvjmCtNlhsDlhlhlhsoKXlhlhXGpOlhlhlhlhlhlhlhsDlhtNmCvjlhvjvjtNlhziamamlhamamamlhamPFamlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIAxvcepOhdhdhdhdhdhdhdhdhdpOcexvIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhEGamamlhamamEGlhamamamlhamamamlhvjvjvjlhsDlhlhWtyLyLiGnCyLyLBXrvrvrvrvlhlhsDlhvjvjvjlhvjvjvjlhamamamlhamamamlhamamamlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESEdqSaIAIAIAIAIAIAIAIAIAxvIRpOpOpOpOpOpOpOpOpOpOpOIRxvIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSSLlhEvamamlhamEvSqlhamSqIQlhamamamlhvjvjvjlhnalhlhrvhdzKhdhdPePehdhdzKhdrvlhlhSLlhvjvjvjlhvjvjvjlhamamamlhamamamlhamamwHlhSLTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIAxvIRpOpOpOpOpOpOpOpOpOpOpOIRxvIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhamPlamlhamPlamlhamgwdelhamPlamlhvjiNvjlhsDlhlhFdzKhdzKhdPePehdzKhdzKNBlhlhsDlhvjiNvjlhvjNEvjlhamPlamlhamBvPFlhamPlamlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIAxvbopOpOpOpOpOpOpOpOpOpOpOboxvIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSCSlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhCSlhlhfphdzKhdzKPePezKhdzKhdDLlhlhCSlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhCSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSpOpOpOwRpOhWVaVaMdpOwRpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSlFeNRBYYiDnVRBYYmeKBRBYYllnVRBYYVUKBRBYYZLNblFCgzGhMPePePePePePePePePePetLxLXVlFqZRBYYBenVRBYYVUKBRBYYllnVRBYYmeKBRBYYMYNbaATSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSlhlhlhlhlhlhyXpOlhlhlhlhlhTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSKzLjiohWVaMdiohWVajliohWVaMdiohWVajliohWVaWqcoyFzohMPePePePeSFzNPePePePetLkqPjTACaiohWVaMdiohWVajliohWVaMdiohWVajliohWVaFAcoTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSpOAqFizFpOlhRBZWlhZhZhGMGMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSCSlhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhCSlhlhNshdzKhdzKPePezKhdzKhdEjlhlhCSlhlhlhkElhlhlhkElhlhlhkElhlhlhkElhlhlhkElhCSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSEppOpOpOpOlhfvCBlhnbZhGMGMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhEGpjamlhzipTamlhvjfsvjlhdeMFamlhSqMFamlhsDlhlhFdzKhdhdhdPePehdzKhdzKNBlhlhsDlhvjfsvjlhvjfsvjlhvjfsvjlhvjfsvjlhmCfsvjlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSJgnkqMqMvslhpOpOlhZhZhpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhBlamamlhamamamlhvjvjvjlhamamamlhEvamamlhsDlhlhrvhdzKzKhdPePehdhdzKhdrvlhlhsDlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhPxvjvjlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaSESESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSqMqMqMqMOXlhBVSclhzxpOZhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSSLlhamamamlhdeSqamlhvjvjvjlhPFamamlhamamamlhsDlhlhrvAEXUAEXElTlTDFlTtervrvlhlhSLlhvjvjvjlhvjvjvjlhvjvjvjlhvjvjvjlhtNvjvjlhSLTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASakjSESESESESESESESESESESaIAIAIAIAIAIAIAIAIATSpOpOpOpOaMpOLBaMpOLBZhZhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhamamamlhamEvamlhPxmCvjlhEGamamlhamamamlhsDlhlhlhlhlhlhlhxQyklhgvlhlhlhlhlhsDlhmCvjSxlhtNvjmClhSxvjtNlhvjmCSxlhSxvjvjlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIASaQIFWMGMGMGQIFWMGMGMGQISaIAIAIAIAIAIAIAIAIATSpOpOpOpOaMeqLBaMXyLBZhZhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhamPlwHlhamPlamlhtNsTXNlhEvPlzilhamPlamlhnalhlhpOpOpOpOUmAjdPemAjFzpOpOlhlhsDlhtNNEPxlhXNsTPxlhXNhSPxlhtNNEPxlhXNiNvjlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATStHtHstjTjTjTnztHCETSTSoQTSoQvMoQTSoQxvoQTSGMGMGMGMIslhhZgYlhRzpOZhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDlhlhtrpOpOpOpOpOkcgoBupOpOxwlhlhsDlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOygTQkppOpOpOrIERMJJMrIERMJJMrIERLAlhBRGMGMGMHrlhfvCBlhZhZhpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsDsDsDOOsDsDsDsDsDsDOOsDsDsDsDsDOOsDsDsDsDsDsDlhlhpOpOpOpOpOpOGJpLOtpOpOpOlhlhsDsDsDOOsDsDsDsDsDsDOOsDsDsDsDsDOOsDsDsDsDsDsDTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATSfvpOpOpOTQogogogogogogogogogogogogogkVmZpOLBpOoCpOpOlhpOpOlhnbZhqMqMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSlhlhpOpOpOpOpOpOBFlhlhemememlhTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOpOpOpOpOwRpOpOpOpOpOWFogPzSINISoLBvJaZwzpOlhpOpOlhZhZhqMqMTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOogpOpOFeogFeogpOpOqLqLpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATSlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhlhEMLUlhlhlhlhlhlhlhlhlhcOpOlhlhlhlhlhTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOgtgtogFeZVpOhEpOpOlhlhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOpOpOpOpOLNpOpOpOpOpOBiHpkpqUFelhitpOpOpOLNHaPOXnvaLNpOpOvJTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATStrpOPzGNpOFeZVpOgtpOLGlhlhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATSfvpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOPzogZVpOPzogogogogogogEBaZaZaZaZrRREIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSWAogogogogogogogogogoglhlhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOGJUvAjAjAjAjAjAjAjffAjAjAjffAjAjjLVjNPAjAjAjAjAjAjzulFlFlFlFXMQGIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnJuQOwrwrwrJuQOwrwrwrJuJulhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIATSrPFTFTUYUYFTFTFTFTTSTSoQTSoQoQoQTSoQoQoQTSFzpOpOLBLBXnLBXnblyGLBpOQkTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBJulhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSTSjsjsjsjslhjsjsjsjsTSTSIAIAIAIAIAIAIAIAIATSJspOpOLBLBXnLBLBpOLBLBpOrCTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBJulhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOpOpOPOhZblblPOblblblpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBJulhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOXnLBLBLBpOpOXnLBXnblUBblTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBJulhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOLBLBLBLBPOblXnblPOLBaMpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBJulhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSJsPOblHapOpOpOblpOPOhZHarCTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBJulhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSpOpOpOpOpOpOpOpOpOpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBJulhpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSagfAaDaDaDaDaDaDaDaDaDLlagTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBZnIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIATSeWFrsMeZeZeZFrsMeZeZeZFreWTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBZnIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnrBrBrBrBrBrBrBrBrBrBrBZnIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnPgrBrBrBrBrBrBrBrBrBrBZnIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAZnZnZnZnZnZnZnZnZnZnZnZnZnIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWRaRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWrjRaRaRaRaRaRaRaRaRaRaeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAeWeWeWeWeWeWeWeWeWeWeWeWeWIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgqgqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qglPqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqg +qgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqg +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSsVsVsVsVsVsVsVsVsVsVsVTSsVsVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpusVsVsVsVsVsVsVsVsVsVTSsesVsVsVsVsVsVsVsVsVsVTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpKpKpKpKpKpKpKpKpKpKpKpKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpaXaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAKpZvaXaXaXaXaXaXaXaXaXaXKpIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSKpsqfapspspssqfapspspssqKpTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOLEpxpxpxpxpxpxpxpxpxthpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOBiTQTQTQTQTQTQTQGNpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOBiTQTQTQTQTQGNpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSJspOpOpOBiTQTQTQGNpOpOpOrCTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOBiTQGNpOpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOFjpOTQpOFjpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSlhlhlhlhlhpOTQpOlhlhlhlhlhTSTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTKTKTKTKTKlhegTQPzlhTKTKTKTKTKTKTKlhuvuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTKIlIlTKTKlhwnwnwnlhTKTKTKTKTKTKTKlhEFuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSlhlhlhlhlhlhuvuvuvlhlhlhlhlhlhlhlhlhuvqnuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpolFlFlFLclhOPlMcTSNQMlFlFlFUQlFEUlhlhlhGATSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSiaXZpOpOTglhuvuvuvSNvrXZpOpOpOGkOblhlhAquGTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSPRcococoarlhwnwnwnlhPRcococococoarlhlhpOLKTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSIAIAIAIAIAIATSTSlhlhlhlhqelhltTQCllhlhlhlhqelhlhlhlhlhpOLKTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOTSIAIAIAIAIAIATSioioioioEEXMlhJHTQLVlhKKpOEZXMMEpOpOpOpOpOLKpOoIlhuvuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSAATSIAIAIAIAIAIATSpOSckVzIkVvTUMPRtYarUMPRcocoarCpaZaZaZpHaZhGaZaoAJuvUfuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSAATSIAIAIAIAIAIATSpOktlhlhlhlhlhnRTQxclhlhlhlhlhlhlhlhlhlhpOLKlhlhlhqnuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSvBTSTSTSTSTSTSTSTSpOktlhTKlhpOpOpOTQSclhBUfElhTKTKTKTKTKlhpOLKTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSvBlhpOpOpOLNpOpOpOpOktlhTKlhpOpOpOTQmZCmKXKXlhTKTKTKTKTKlhFoaoTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSvBlhOukVkVkVkVkVkVkVwYlhTKlhgRBuyuTQCYlhlhlhlhlhlhlhTKlhlhlhGATSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSvBlhSNSNSNbQSNSNSNlhlhlhlhlhjilhlhoolhlhBZlhBZlhBZlhTKlhuvtouvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSmpptlmlmlmlmlmlmDuSNjecHDMoHAjSijqOjlhlhmKlhmKlhmKlhTKlhmRuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSTSTSTSTSTSTSnESNYLZAuDnGuDuNdbuvlhlhSGSuKXSuSGlhTKlhuvuvuvTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSnElhSNSNSNlhjiSNlhhDlhlhlhlhkulhlhTSTSTSTSTSTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSLRlhnhnhnhbCAjapBIHpyypOpOHaPOiPpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSrfjolmlmlmqRpOpOlqWgAMpOcepOcepOcWTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSTSHCHCHCGfpOpOaieDyppOIRpOIRpONRTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSfvpOpOpOpOpOHsSVCHpObopObopOrYTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSpOpOpOpOpOiOVkVkVkaSpOpOpOpOpOTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIATSTSoQoQoQTSvuLaLaLavuTSoQoQoQTSTSIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAbRYoYoYobRIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAbRYoYoYoXsIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAhjIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAvuBHYoYovuIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAbRYoYoYobRIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAbRYoYoYobRIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAvuzQzQzQvuIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAdKIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA +qgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgqgIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIAIA "} diff --git a/maps/shuttles/uacm_ovpst_transit_L-533.dmm b/maps/shuttles/uacm_ovpst_transit_L-533.dmm index ca54b6ea2d..d948a10bdc 100644 --- a/maps/shuttles/uacm_ovpst_transit_L-533.dmm +++ b/maps/shuttles/uacm_ovpst_transit_L-533.dmm @@ -170,15 +170,6 @@ /obj/structure/surface/rack, /turf/open/shuttle/lifeboat, /area/shuttle/ert) -"nn" = ( -/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ - dir = 4; - pixel_x = -3; - buckling_x = -5 - }, -/obj/effect/landmark/start/basepc, -/turf/open/shuttle/lifeboat, -/area/shuttle/ert) "nt" = ( /turf/closed/shuttle/lifeboat/transparent{ icon_state = "window2l" @@ -311,7 +302,6 @@ pixel_x = -3; buckling_x = -5 }, -/obj/effect/landmark/start/basepc, /obj/structure/machinery/light/marker/admin{ brightness = 12 }, @@ -498,7 +488,6 @@ buckling_x = -5; buckling_y = 16 }, -/obj/effect/landmark/start/basepc, /obj/structure/machinery/light/marker/admin{ brightness = 12 }, @@ -531,17 +520,6 @@ }, /turf/open/shuttle/lifeboat, /area/shuttle/ert) -"Lo" = ( -/obj/structure/bed/chair/dropship/passenger/shuttle_chair{ - dir = 4; - pixel_y = 15; - pixel_x = -3; - buckling_x = -5; - buckling_y = 16 - }, -/obj/effect/landmark/start/basepc, -/turf/open/shuttle/lifeboat, -/area/shuttle/ert) "LJ" = ( /obj/structure/machinery/light/marker/admin{ brightness = 12 @@ -682,13 +660,6 @@ icon_state = "23,6rd" }, /area/shuttle/ert) -"Tw" = ( -/obj/effect/landmark/late_join, -/obj/effect/landmark/observer_start, -/turf/open/shuttle/lifeboat{ - icon_state = "plate-r" - }, -/area/shuttle/ert) "TM" = ( /turf/closed/shuttle/lifeboat/transparent{ icon_state = "24,4u" @@ -894,7 +865,7 @@ IR GA Qi dr -Tw +dr dr GD Td @@ -961,7 +932,7 @@ HB BA BA VZ -nn +Lk Lk vT RW @@ -979,11 +950,11 @@ iP "} (20,1,1) = {" Bf -Lo -Lo +BA +BA BA LV -nn +Lk Lk Lk iP @@ -1002,11 +973,11 @@ iP (22,1,1) = {" IG HB -Lo +BA BA VZ Lk -nn +Lk vT WK "} diff --git a/nano/images/weapons/88m4.png b/nano/images/weapons/88m4.png deleted file mode 100644 index 77faa65720..0000000000 Binary files a/nano/images/weapons/88m4.png and /dev/null differ diff --git a/nano/images/weapons/aamateba.png b/nano/images/weapons/aamateba.png deleted file mode 100644 index 30a5c1c72c..0000000000 Binary files a/nano/images/weapons/aamateba.png and /dev/null differ diff --git a/nano/images/weapons/amateba.png b/nano/images/weapons/amateba.png deleted file mode 100644 index 6d411d2ad7..0000000000 Binary files a/nano/images/weapons/amateba.png and /dev/null differ diff --git a/nano/images/weapons/auto.png b/nano/images/weapons/auto.png deleted file mode 100644 index 7efc6ff1c8..0000000000 Binary files a/nano/images/weapons/auto.png and /dev/null differ diff --git a/nano/images/weapons/auto9.png b/nano/images/weapons/auto9.png deleted file mode 100644 index 8fbc101f2f..0000000000 Binary files a/nano/images/weapons/auto9.png and /dev/null differ diff --git a/nano/images/weapons/b92fs.png b/nano/images/weapons/b92fs.png deleted file mode 100644 index 2788124dfb..0000000000 Binary files a/nano/images/weapons/b92fs.png and /dev/null differ diff --git a/nano/images/weapons/burst.png b/nano/images/weapons/burst.png deleted file mode 100644 index 669bd676eb..0000000000 Binary files a/nano/images/weapons/burst.png and /dev/null differ diff --git a/nano/images/weapons/c70.png b/nano/images/weapons/c70.png deleted file mode 100644 index b7e2ed731b..0000000000 Binary files a/nano/images/weapons/c70.png and /dev/null differ diff --git a/nano/images/weapons/c_deagle.png b/nano/images/weapons/c_deagle.png deleted file mode 100644 index c2a5c991ac..0000000000 Binary files a/nano/images/weapons/c_deagle.png and /dev/null differ diff --git a/nano/images/weapons/cmateba.png b/nano/images/weapons/cmateba.png deleted file mode 100644 index f949d4b547..0000000000 Binary files a/nano/images/weapons/cmateba.png and /dev/null differ diff --git a/nano/images/weapons/cshotgun.png b/nano/images/weapons/cshotgun.png deleted file mode 100644 index 9820f58546..0000000000 Binary files a/nano/images/weapons/cshotgun.png and /dev/null differ diff --git a/nano/images/weapons/dartgun.png b/nano/images/weapons/dartgun.png deleted file mode 100644 index 218dc742dc..0000000000 Binary files a/nano/images/weapons/dartgun.png and /dev/null differ diff --git a/nano/images/weapons/deagle.png b/nano/images/weapons/deagle.png deleted file mode 100644 index 059a730d7e..0000000000 Binary files a/nano/images/weapons/deagle.png and /dev/null differ diff --git a/nano/images/weapons/disabled_automatic.png b/nano/images/weapons/disabled_automatic.png deleted file mode 100644 index 94da079d80..0000000000 Binary files a/nano/images/weapons/disabled_automatic.png and /dev/null differ diff --git a/nano/images/weapons/disabled_burst.png b/nano/images/weapons/disabled_burst.png deleted file mode 100644 index 71b88bcaf9..0000000000 Binary files a/nano/images/weapons/disabled_burst.png and /dev/null differ diff --git a/nano/images/weapons/disabled_single.png b/nano/images/weapons/disabled_single.png deleted file mode 100644 index bf2cef4b15..0000000000 Binary files a/nano/images/weapons/disabled_single.png and /dev/null differ diff --git a/nano/images/weapons/dshotgun.png b/nano/images/weapons/dshotgun.png deleted file mode 100644 index cd79598281..0000000000 Binary files a/nano/images/weapons/dshotgun.png and /dev/null differ diff --git a/nano/images/weapons/fp9000.png b/nano/images/weapons/fp9000.png deleted file mode 100644 index b9f971eb07..0000000000 Binary files a/nano/images/weapons/fp9000.png and /dev/null differ diff --git a/nano/images/weapons/fp9000_pmc.png b/nano/images/weapons/fp9000_pmc.png deleted file mode 100644 index b9f971eb07..0000000000 Binary files a/nano/images/weapons/fp9000_pmc.png and /dev/null differ diff --git a/nano/images/weapons/g_deagle.png b/nano/images/weapons/g_deagle.png deleted file mode 100644 index c2a5c991ac..0000000000 Binary files a/nano/images/weapons/g_deagle.png and /dev/null differ diff --git a/nano/images/weapons/hg3712.png b/nano/images/weapons/hg3712.png deleted file mode 100644 index f7f32190c4..0000000000 Binary files a/nano/images/weapons/hg3712.png and /dev/null differ diff --git a/nano/images/weapons/highpower.png b/nano/images/weapons/highpower.png deleted file mode 100644 index a7d25c4480..0000000000 Binary files a/nano/images/weapons/highpower.png and /dev/null differ diff --git a/nano/images/weapons/holdout.png b/nano/images/weapons/holdout.png deleted file mode 100644 index 1d6f26fad2..0000000000 Binary files a/nano/images/weapons/holdout.png and /dev/null differ diff --git a/nano/images/weapons/hunting.png b/nano/images/weapons/hunting.png deleted file mode 100644 index 5d9613117f..0000000000 Binary files a/nano/images/weapons/hunting.png and /dev/null differ diff --git a/nano/images/weapons/kt42.png b/nano/images/weapons/kt42.png deleted file mode 100644 index ecf0ee41a9..0000000000 Binary files a/nano/images/weapons/kt42.png and /dev/null differ diff --git a/nano/images/weapons/l42mk1.png b/nano/images/weapons/l42mk1.png deleted file mode 100644 index b5efcc14d3..0000000000 Binary files a/nano/images/weapons/l42mk1.png and /dev/null differ diff --git a/nano/images/weapons/m16.png b/nano/images/weapons/m16.png deleted file mode 100644 index 2287f73196..0000000000 Binary files a/nano/images/weapons/m16.png and /dev/null differ diff --git a/nano/images/weapons/m240.png b/nano/images/weapons/m240.png deleted file mode 100644 index 72eb477c9e..0000000000 Binary files a/nano/images/weapons/m240.png and /dev/null differ diff --git a/nano/images/weapons/m240t.png b/nano/images/weapons/m240t.png deleted file mode 100644 index 619551d690..0000000000 Binary files a/nano/images/weapons/m240t.png and /dev/null differ diff --git a/nano/images/weapons/m37-17.png b/nano/images/weapons/m37-17.png deleted file mode 100644 index 7d53cbd761..0000000000 Binary files a/nano/images/weapons/m37-17.png and /dev/null differ diff --git a/nano/images/weapons/m37.png b/nano/images/weapons/m37.png deleted file mode 100644 index f888adaeb6..0000000000 Binary files a/nano/images/weapons/m37.png and /dev/null differ diff --git a/nano/images/weapons/m39.png b/nano/images/weapons/m39.png deleted file mode 100644 index f6fbb0a489..0000000000 Binary files a/nano/images/weapons/m39.png and /dev/null differ diff --git a/nano/images/weapons/m41a.png b/nano/images/weapons/m41a.png deleted file mode 100644 index 9476e0d1f4..0000000000 Binary files a/nano/images/weapons/m41a.png and /dev/null differ diff --git a/nano/images/weapons/m41a2.png b/nano/images/weapons/m41a2.png deleted file mode 100644 index 4179cb37f5..0000000000 Binary files a/nano/images/weapons/m41a2.png and /dev/null differ diff --git a/nano/images/weapons/m41ae2.png b/nano/images/weapons/m41ae2.png deleted file mode 100644 index 4a5232fd66..0000000000 Binary files a/nano/images/weapons/m41ae2.png and /dev/null differ diff --git a/nano/images/weapons/m41amk1.png b/nano/images/weapons/m41amk1.png deleted file mode 100644 index 3f44c62b0f..0000000000 Binary files a/nano/images/weapons/m41amk1.png and /dev/null differ diff --git a/nano/images/weapons/m41b.png b/nano/images/weapons/m41b.png deleted file mode 100644 index 1d63443f25..0000000000 Binary files a/nano/images/weapons/m41b.png and /dev/null differ diff --git a/nano/images/weapons/m42a.png b/nano/images/weapons/m42a.png deleted file mode 100644 index f0d07328c1..0000000000 Binary files a/nano/images/weapons/m42a.png and /dev/null differ diff --git a/nano/images/weapons/m42c.png b/nano/images/weapons/m42c.png deleted file mode 100644 index 47d53b86ce..0000000000 Binary files a/nano/images/weapons/m42c.png and /dev/null differ diff --git a/nano/images/weapons/m44r.png b/nano/images/weapons/m44r.png deleted file mode 100644 index d7deb2589e..0000000000 Binary files a/nano/images/weapons/m44r.png and /dev/null differ diff --git a/nano/images/weapons/m44rc.png b/nano/images/weapons/m44rc.png deleted file mode 100644 index 1c20973a0a..0000000000 Binary files a/nano/images/weapons/m44rc.png and /dev/null differ diff --git a/nano/images/weapons/m46c.png b/nano/images/weapons/m46c.png deleted file mode 100644 index d404a6d88f..0000000000 Binary files a/nano/images/weapons/m46c.png and /dev/null differ diff --git a/nano/images/weapons/m4a3.png b/nano/images/weapons/m4a3.png deleted file mode 100644 index 9169c71c51..0000000000 Binary files a/nano/images/weapons/m4a3.png and /dev/null differ diff --git a/nano/images/weapons/m4a345.png b/nano/images/weapons/m4a345.png deleted file mode 100644 index 1ba0015846..0000000000 Binary files a/nano/images/weapons/m4a345.png and /dev/null differ diff --git a/nano/images/weapons/m4a3c.png b/nano/images/weapons/m4a3c.png deleted file mode 100644 index 95731a6c71..0000000000 Binary files a/nano/images/weapons/m4a3c.png and /dev/null differ diff --git a/nano/images/weapons/m5.png b/nano/images/weapons/m5.png deleted file mode 100644 index 7d502fdaaf..0000000000 Binary files a/nano/images/weapons/m5.png and /dev/null differ diff --git a/nano/images/weapons/m56.png b/nano/images/weapons/m56.png deleted file mode 100644 index baf9b9bd9c..0000000000 Binary files a/nano/images/weapons/m56.png and /dev/null differ diff --git a/nano/images/weapons/m57a4.png b/nano/images/weapons/m57a4.png deleted file mode 100644 index 6c2cbcbdbe..0000000000 Binary files a/nano/images/weapons/m57a4.png and /dev/null differ diff --git a/nano/images/weapons/m60.png b/nano/images/weapons/m60.png deleted file mode 100644 index 08baffaa74..0000000000 Binary files a/nano/images/weapons/m60.png and /dev/null differ diff --git a/nano/images/weapons/m79.png b/nano/images/weapons/m79.png deleted file mode 100644 index 365280f242..0000000000 Binary files a/nano/images/weapons/m79.png and /dev/null differ diff --git a/nano/images/weapons/m81.png b/nano/images/weapons/m81.png deleted file mode 100644 index 7b1a6a195b..0000000000 Binary files a/nano/images/weapons/m81.png and /dev/null differ diff --git a/nano/images/weapons/m82f.png b/nano/images/weapons/m82f.png deleted file mode 100644 index f6d5e24ec8..0000000000 Binary files a/nano/images/weapons/m82f.png and /dev/null differ diff --git a/nano/images/weapons/m92.png b/nano/images/weapons/m92.png deleted file mode 100644 index ce64c3df36..0000000000 Binary files a/nano/images/weapons/m92.png and /dev/null differ diff --git a/nano/images/weapons/m93b2.png b/nano/images/weapons/m93b2.png deleted file mode 100644 index 987f56643a..0000000000 Binary files a/nano/images/weapons/m93b2.png and /dev/null differ diff --git a/nano/images/weapons/mac15.png b/nano/images/weapons/mac15.png deleted file mode 100644 index 179c8b7a61..0000000000 Binary files a/nano/images/weapons/mac15.png and /dev/null differ diff --git a/nano/images/weapons/mar30.png b/nano/images/weapons/mar30.png deleted file mode 100644 index 3a5c19f336..0000000000 Binary files a/nano/images/weapons/mar30.png and /dev/null differ diff --git a/nano/images/weapons/mar40.png b/nano/images/weapons/mar40.png deleted file mode 100644 index 043d6529ef..0000000000 Binary files a/nano/images/weapons/mar40.png and /dev/null differ diff --git a/nano/images/weapons/mateba.png b/nano/images/weapons/mateba.png deleted file mode 100644 index 49ec3f897a..0000000000 Binary files a/nano/images/weapons/mateba.png and /dev/null differ diff --git a/nano/images/weapons/mk221.png b/nano/images/weapons/mk221.png deleted file mode 100644 index a15773fb26..0000000000 Binary files a/nano/images/weapons/mk221.png and /dev/null differ diff --git a/nano/images/weapons/mou.png b/nano/images/weapons/mou.png deleted file mode 100644 index a471e16f6e..0000000000 Binary files a/nano/images/weapons/mou.png and /dev/null differ diff --git a/nano/images/weapons/mp5.png b/nano/images/weapons/mp5.png deleted file mode 100644 index e36fccdca4..0000000000 Binary files a/nano/images/weapons/mp5.png and /dev/null differ diff --git a/nano/images/weapons/mp7.png b/nano/images/weapons/mp7.png deleted file mode 100644 index 9494c8003d..0000000000 Binary files a/nano/images/weapons/mp7.png and /dev/null differ diff --git a/nano/images/weapons/no_name.png b/nano/images/weapons/no_name.png deleted file mode 100644 index 8babb2fda5..0000000000 Binary files a/nano/images/weapons/no_name.png and /dev/null differ diff --git a/nano/images/weapons/ny762.png b/nano/images/weapons/ny762.png deleted file mode 100644 index bdd5fe500e..0000000000 Binary files a/nano/images/weapons/ny762.png and /dev/null differ diff --git a/nano/images/weapons/painless.png b/nano/images/weapons/painless.png deleted file mode 100644 index f493c662eb..0000000000 Binary files a/nano/images/weapons/painless.png and /dev/null differ diff --git a/nano/images/weapons/pk9.png b/nano/images/weapons/pk9.png deleted file mode 100644 index 7c66494637..0000000000 Binary files a/nano/images/weapons/pk9.png and /dev/null differ diff --git a/nano/images/weapons/pk9r.png b/nano/images/weapons/pk9r.png deleted file mode 100644 index be9adcd507..0000000000 Binary files a/nano/images/weapons/pk9r.png and /dev/null differ diff --git a/nano/images/weapons/pk9u.png b/nano/images/weapons/pk9u.png deleted file mode 100644 index 519f574f6e..0000000000 Binary files a/nano/images/weapons/pk9u.png and /dev/null differ diff --git a/nano/images/weapons/ppsh17b.png b/nano/images/weapons/ppsh17b.png deleted file mode 100644 index 4ea9e0214f..0000000000 Binary files a/nano/images/weapons/ppsh17b.png and /dev/null differ diff --git a/nano/images/weapons/single.png b/nano/images/weapons/single.png deleted file mode 100644 index 2f784868ca..0000000000 Binary files a/nano/images/weapons/single.png and /dev/null differ diff --git a/nano/images/weapons/skorpion.png b/nano/images/weapons/skorpion.png deleted file mode 100644 index 342fc75e3e..0000000000 Binary files a/nano/images/weapons/skorpion.png and /dev/null differ diff --git a/nano/images/weapons/skorpion_u.png b/nano/images/weapons/skorpion_u.png deleted file mode 100644 index 72128e1f46..0000000000 Binary files a/nano/images/weapons/skorpion_u.png and /dev/null differ diff --git a/nano/images/weapons/smartpistol.png b/nano/images/weapons/smartpistol.png deleted file mode 100644 index e688ac9260..0000000000 Binary files a/nano/images/weapons/smartpistol.png and /dev/null differ diff --git a/nano/images/weapons/spearhead.png b/nano/images/weapons/spearhead.png deleted file mode 100644 index 7b740dbdc5..0000000000 Binary files a/nano/images/weapons/spearhead.png and /dev/null differ diff --git a/nano/images/weapons/sshotgun.png b/nano/images/weapons/sshotgun.png deleted file mode 100644 index f052433653..0000000000 Binary files a/nano/images/weapons/sshotgun.png and /dev/null differ diff --git a/nano/images/weapons/supremo.png b/nano/images/weapons/supremo.png deleted file mode 100644 index 83f6a6fb4b..0000000000 Binary files a/nano/images/weapons/supremo.png and /dev/null differ diff --git a/nano/images/weapons/svd003.png b/nano/images/weapons/svd003.png deleted file mode 100644 index 6395b8d3b6..0000000000 Binary files a/nano/images/weapons/svd003.png and /dev/null differ diff --git a/nano/images/weapons/sw357.png b/nano/images/weapons/sw357.png deleted file mode 100644 index a89ea9cb2f..0000000000 Binary files a/nano/images/weapons/sw357.png and /dev/null differ diff --git a/nano/images/weapons/sw358.png b/nano/images/weapons/sw358.png deleted file mode 100644 index c24e72bfce..0000000000 Binary files a/nano/images/weapons/sw358.png and /dev/null differ diff --git a/nano/images/weapons/syringegun.png b/nano/images/weapons/syringegun.png deleted file mode 100644 index bf18bf425d..0000000000 Binary files a/nano/images/weapons/syringegun.png and /dev/null differ diff --git a/nano/images/weapons/taser.png b/nano/images/weapons/taser.png deleted file mode 100644 index 6337a89966..0000000000 Binary files a/nano/images/weapons/taser.png and /dev/null differ diff --git a/nano/images/weapons/type71.png b/nano/images/weapons/type71.png deleted file mode 100644 index 700ff164d6..0000000000 Binary files a/nano/images/weapons/type71.png and /dev/null differ diff --git a/nano/images/weapons/type71c.png b/nano/images/weapons/type71c.png deleted file mode 100644 index 273ac0bcbe..0000000000 Binary files a/nano/images/weapons/type71c.png and /dev/null differ diff --git a/nano/images/weapons/type73.png b/nano/images/weapons/type73.png deleted file mode 100644 index 63294f7cc9..0000000000 Binary files a/nano/images/weapons/type73.png and /dev/null differ diff --git a/nano/images/weapons/vp78.png b/nano/images/weapons/vp78.png deleted file mode 100644 index 2383b4e3ad..0000000000 Binary files a/nano/images/weapons/vp78.png and /dev/null differ diff --git a/nano/images/weapons/xm42b.png b/nano/images/weapons/xm42b.png deleted file mode 100644 index 645c552314..0000000000 Binary files a/nano/images/weapons/xm42b.png and /dev/null differ diff --git a/tgui/packages/tgui-panel/chat/constants.js b/tgui/packages/tgui-panel/chat/constants.js index a9b1634783..ca5dfa59cd 100644 --- a/tgui/packages/tgui-panel/chat/constants.js +++ b/tgui/packages/tgui-panel/chat/constants.js @@ -41,6 +41,8 @@ export const MESSAGE_TYPE_ADMINLOG = 'adminlog'; export const MESSAGE_TYPE_ATTACKLOG = 'attacklog'; export const MESSAGE_TYPE_DEBUG = 'debug'; export const MESSAGE_TYPE_NICHE = 'niche'; +export const MESSAGE_TYPE_TERMINAL = 'terminal'; +export const MESSAGE_TYPE_LABELS = 'labels'; // Metadata for each message type export const MESSAGE_TYPES = [ @@ -77,7 +79,7 @@ export const MESSAGE_TYPES = [ name: 'Info', description: 'Non-urgent messages from the game and items', selector: - '.notice:not(.pm), .adminnotice, .info, .role_body, .role_header, .event_announcement, .announce_header, .announce_header_blue, .announce_body, .sinister, .cult, .xenonotice, .xenoannounce, .yautjabold, .yautjaboldbig', + '.notice:not(.pm), .adminnotice, .info, .role_body, .role_header, .event_announcement, .announce_header, .announce_header_blue, .announce_body, .sinister, .cult, .xenonotice, .xenoannounce, .yautjabold, .yautjaboldbig .narrate_head, .narrate_body, .chargen_header, .chargen_body', }, { type: MESSAGE_TYPE_WARNING, @@ -128,6 +130,20 @@ export const MESSAGE_TYPES = [ description: 'IC interaction with staff', selector: '.staff_ic', }, + { + type: MESSAGE_TYPE_TERMINAL, + name: 'Terminal Outputs', + description: 'Text from terminals and atmospheric narration.', + selector: '.narrate_console, .narrate_body, .narrate_head', + }, + { + type: MESSAGE_TYPE_LABELS, + name: 'Labels and Serial Numbers', + description: + 'Text from labels and serial numbers found on items in the world.', + selector: + '.narrate_serial_block, .narrate_serial, .narrate_manifest_block, .narrate_manifest', + }, // Admin stuff { type: MESSAGE_TYPE_ADMINCHAT, diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss index ca142dab82..dbaab50dd7 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss @@ -1453,3 +1453,67 @@ em { font-style: italic; border-bottom: 1px dashed #fff; } +//Sector Patrol +//Chargen +.chargen_header { + font-size: 140%; + color: #ffccff; + text-align: center; + padding: 0em 1em; +} + +.chargen_body { + font-size: 110%; + color: #ff99ff; + text-align: justify; + padding: 0em 1em; +} +//narration +.narrate_head { + font-size: 125%; + color: #ffccff; + text-align: center; + padding: 0em 1em; +} + +.narrate_body { + font-size: 100%; + color: #ff99ff; + text-align: justify; + padding: 0em 1em; +} +//console green narration +.narrate_console { + font-family: 'Courier New', cursive, sans-serif; + color: #1bdd4b; + text-align: left; + padding: 0em 1em; +} + +//serial numbers for Sector Patrol +.narrate_serial { + font-family: 'Lucida Grande', monospace; + color: #d4d6d6; + text-align: center; + padding: 0em 1em; +} + +.narrate_serial_block { + background: #1b1c1e; + border: 1px solid #a4bad6; + margin: 0.5em 15%; + padding: 0.5em 0.75em; +} + +.narrate_manifest { + font-family: 'Lucida Grande', monospace; + color: #d4d6d6; + text-align: left; +} + +.narrate_manifest_block { + background: #1b1c1e; + border: 1px solid #a4bad6; + margin: 0.5em 55% 0.5em 5%; + padding: 0.5em; +} diff --git a/tgui/packages/tgui-panel/styles/goon/chat-light.scss b/tgui/packages/tgui-panel/styles/goon/chat-light.scss index 9cf69e221c..1424744ae7 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-light.scss @@ -1475,3 +1475,67 @@ h2.alert { font-style: italic; border-bottom: 1px dashed #000; } + +//Sector Patrol +//Chargen +.chargen_header { + font-size: 140%; + color: #3d103d; + text-align: center; + padding: 0em 1em; +} + +.chargen_body { + font-size: 110%; + color: #020002; + text-align: justify; + padding: 0em 1em; +} +//narration +.narrate_head { + font-size: 125%; + color: #3d103d; + text-align: center; + padding: 0em 1em; +} + +.narrate_body { + font-size: 100%; + color: #020002; + text-align: justify; + padding: 0em 1em; +} +//console green narration +.narrate_console { + font-family: 'Courier New', cursive, sans-serif; + color: #084116; + text-align: left; + padding: 0em 1em; +} + +.narrate_serial { + font-family: 'Lucida Grande', monospace; + color: #3b3b3b; + text-align: center; + padding: 0em 1em; +} + +.narrate_serial_block { + background: #f2f7fa; + border: 1px solid #111a27; + margin: 0.5em 15%; + padding: 0.5em 0.75em; +} + +.narrate_manifest { + font-family: 'Lucida Grande', monospace; + color: #3b3b3b; + text-align: left; +} + +.narrate_manifest_block { + background: #f2f7fa; + border: 1px solid #111a27; + margin: 0.5em 55% 0.5em 5%; + padding: 0.5em; +} diff --git a/tgui/packages/tgui/interfaces/StripMenu.tsx b/tgui/packages/tgui/interfaces/StripMenu.tsx index 23bf1199d5..804e47ec00 100644 --- a/tgui/packages/tgui/interfaces/StripMenu.tsx +++ b/tgui/packages/tgui/interfaces/StripMenu.tsx @@ -150,6 +150,12 @@ const SLOTS: Record = { image: 'inventory-shoes.png', }, + socks: { + displayName: 'socks', + gridSpot: getGridSpotKey([3, 3]), + image: 'inventory-socks.png', + }, + j_store: { displayName: 'suit storage item', gridSpot: getGridSpotKey([4, 0]),