diff --git a/.travis.yml b/.travis.yml index 16cd43e0298..432d4093149 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,9 +3,9 @@ language: c sudo: false env: - BYOND_MAJOR="509" - BYOND_MINOR="1318" - MACRO_COUNT=987 + BYOND_MAJOR="510" + BYOND_MINOR="1346" + MACRO_COUNT=986 cache: directories: diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 31f0233b238..2207ffb0753 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -37,5 +37,5 @@ // Chemistry lists. var/list/tachycardics = list("coffee", "inaprovaline", "hyperzine", "nitroglycerin", "thirteenloko", "nicotine") // Increase heart rate. var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "space_drugs", "stoxin") // Decrease heart rate. -var/list/heartstopper = list("potassium_phorochloride", "zombie_powder") // This stops the heart. +var/list/heartstopper = list("potassium_chlorophoride", "zombie_powder") // This stops the heart. var/list/cheartstopper = list("potassium_chloride") // This stops the heart when overdose is met. -- c = conditional diff --git a/code/__defines/gamemode.dm b/code/__defines/gamemode.dm index fc2d16ea636..8115790c506 100644 --- a/code/__defines/gamemode.dm +++ b/code/__defines/gamemode.dm @@ -68,10 +68,12 @@ var/list/be_special_flags = list( #define MODE_COMMANDO "commando" #define MODE_DEATHSQUAD "deathsquad" #define MODE_ERT "ert" +#define MODE_TRADE "trader" #define MODE_MERCENARY "mercenary" #define MODE_NINJA "ninja" #define MODE_RAIDER "raider" #define MODE_WIZARD "wizard" +#define MODE_TECHNOMANCER "technomancer" #define MODE_CHANGELING "changeling" #define MODE_CULTIST "cultist" #define MODE_HIGHLANDER "highlander" @@ -83,7 +85,7 @@ var/list/be_special_flags = list( #define MODE_TRAITOR "traitor" #define MODE_AUTOTRAITOR "autotraitor" -#define DEFAULT_TELECRYSTAL_AMOUNT 12 +#define DEFAULT_TELECRYSTAL_AMOUNT 120 ///////////////// ////WIZARD ////// diff --git a/code/__defines/machinery.dm b/code/__defines/machinery.dm index 1f65364e1ae..cc77b8c3c59 100644 --- a/code/__defines/machinery.dm +++ b/code/__defines/machinery.dm @@ -50,6 +50,7 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called #define NETWORK_SECURITY "Security" #define NETWORK_TELECOM "Tcomsat" #define NETWORK_THUNDER "Thunderdome" +#define NETWORK_COMMUNICATORS "Communicators" // Those networks can only be accessed by pre-existing terminals. AIs and new terminals can't use them. var/list/restricted_camera_networks = list(NETWORK_ERT,NETWORK_MERCENARY,"Secret") diff --git a/code/__defines/math_physics.dm b/code/__defines/math_physics.dm index 987cb1ba9dc..198f87eccc2 100644 --- a/code/__defines/math_physics.dm +++ b/code/__defines/math_physics.dm @@ -15,9 +15,10 @@ #define RADIATOR_EXPOSED_SURFACE_AREA_RATIO 0.04 // (3 cm + 100 cm * sin(3deg))/(2*(3+100 cm)). Unitless ratio. #define HUMAN_EXPOSED_SURFACE_AREA 5.2 //m^2, surface area of 1.7m (H) x 0.46m (D) cylinder -#define T0C 273.15 // 0.0 degrees celcius -#define T20C 293.15 // 20.0 degrees celcius -#define TCMB 2.7 // -270.3 degrees celcius +#define T0C 273.15 // 0.0 degrees celcius +#define T20C 293.15 // 20.0 degrees celcius +#define TCMB 2.7 // -270.3 degrees celcius +#define TN60C 213.15 // -60 degrees celcius #define CLAMP01(x) max(0, min(1, x)) #define QUANTIZE(variable) (round(variable,0.0001)) diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 0a067439939..68954b0dc55 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -92,7 +92,8 @@ // Setting this much higher than 1024 could allow spammers to DOS the server easily. #define MAX_MESSAGE_LEN 1024 #define MAX_PAPER_MESSAGE_LEN 6144 -#define MAX_BOOK_MESSAGE_LEN 12288 +#define MAX_BOOK_MESSAGE_LEN 24576 +#define MAX_RECORD_LENGTH 24576 #define MAX_LNAME_LEN 64 #define MAX_NAME_LEN 52 @@ -161,3 +162,8 @@ #define CAT_NORMAL 1 #define CAT_HIDDEN 2 #define CAT_COIN 4 + +//Antag Faction Visbility +#define ANTAG_HIDDEN "Hidden" +#define ANTAG_SHARED "Shared" +#define ANTAG_KNOWN "Known" diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm index b10463b4584..c3ce40e6576 100644 --- a/code/_helpers/game.dm +++ b/code/_helpers/game.dm @@ -156,7 +156,7 @@ // It will keep doing this until it checks every content possible. This will fix any problems with mobs, that are inside objects, // being unable to hear people due to being in a box within a bag. -/proc/recursive_content_check(var/atom/O, var/list/L = list(), var/recursion_limit = 3, var/client_check = 1, var/sight_check = 1, var/include_mobs = 1, var/include_objects = 1) +/proc/recursive_content_check(var/atom/O, var/list/L = list(), var/recursion_limit = 3, var/client_check = 1, var/sight_check = 1, var/include_mobs = 1, var/include_objects = 1, var/ignore_show_messages = 0) if(!recursion_limit) return L @@ -176,7 +176,7 @@ else if(istype(I,/obj/)) var/obj/check_obj = I - if(check_obj.show_messages) + if(ignore_show_messages || check_obj.show_messages) if(!sight_check || isInSight(I, O)) L |= recursive_content_check(I, L, recursion_limit - 1, client_check, sight_check, include_mobs, include_objects) if(include_objects) diff --git a/code/_helpers/mobs.dm b/code/_helpers/mobs.dm index 9f4ece96f84..8a1df2059bd 100644 --- a/code/_helpers/mobs.dm +++ b/code/_helpers/mobs.dm @@ -119,27 +119,12 @@ proc/age2agedescription(age) if(70 to INFINITY) return "elderly" else return "unknown" -proc/RoundHealth(health) - switch(health) - if(100 to INFINITY) - return "health100" - if(70 to 100) - return "health80" - if(50 to 70) - return "health60" - if(30 to 50) - return "health40" - if(18 to 30) - return "health25" - if(5 to 18) - return "health10" - if(1 to 5) - return "health1" - if(-99 to 0) - return "health0" - else - return "health-100" - return "0" +/proc/RoundHealth(health) + var/list/icon_states = icon_states('icons/mob/hud_med.dmi') + for(var/icon_state in icon_states) + if(health >= text2num(icon_state)) + return icon_state + return icon_states[icon_states.len] // If we had no match, return the last element /* Proc for attack log creation, because really why not diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 0858ebc1a40..d8623fa3ebf 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -1037,12 +1037,6 @@ proc/get_mob_with_client_list() else if (zone == "r_foot") return "right foot" else return zone -//gets the turf the atom is located in (or itself, if it is a turf). -//returns null if the atom is not in a turf. -/proc/get_turf(atom/movable/A) - if(isturf(A)) return A - if(A && A.locs.len) return A.locs[1] - /proc/get(atom/loc, type) while(loc) if(istype(loc, type)) @@ -1257,7 +1251,7 @@ var/list/WALLITEMS = list( arglist = list2params(arglist) return "[content]" -/proc/get_random_colour(var/simple, var/lower, var/upper) +/proc/get_random_colour(var/simple, var/lower=0, var/upper=255) var/colour if(simple) colour = pick(list("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF")) diff --git a/code/_macros.dm b/code/_macros.dm index 801498d915d..06376205d12 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -1,6 +1,8 @@ #define Clamp(x, y, z) (x <= y ? y : (x >= z ? z : x)) #define CLAMP01(x) (Clamp(x, 0, 1)) +#define get_turf(A) get_step(A,0) + #define isAI(A) istype(A, /mob/living/silicon/ai) #define isalien(A) istype(A, /mob/living/carbon/alien) diff --git a/code/_onclick/_defines.dm b/code/_onclick/_defines.dm new file mode 100644 index 00000000000..3c76c35e807 --- /dev/null +++ b/code/_onclick/_defines.dm @@ -0,0 +1 @@ +#define CLICKCATCHER_PLANE -99 \ No newline at end of file diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index d131ddd6d31..52c56ccb175 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -321,11 +321,19 @@ facedir(direction) /obj/screen/click_catcher - icon = 'icons/mob/screen1_full.dmi' - icon_state = "passage0" - layer = 0 + icon = 'icons/mob/screen_gen.dmi' + icon_state = "click_catcher" + plane = CLICKCATCHER_PLANE mouse_opacity = 2 - screen_loc = "1,1" + screen_loc = "CENTER-7,CENTER-7" + +/obj/screen/click_catcher/proc/MakeGreed() + . = list() + for(var/i = 0, i<15, i++) + for(var/j = 0, j<15, j++) + var/obj/screen/click_catcher/CC = new() + CC.screen_loc = "NORTH-[i],EAST-[j]" + . += CC /obj/screen/click_catcher/Click(location, control, params) var/list/modifiers = params2list(params) @@ -333,6 +341,6 @@ var/mob/living/carbon/C = usr C.swap_hand() else - var/turf/T = screen_loc2turf(modifiers["screen-loc"], get_turf(usr)) + var/turf/T = screen_loc2turf("screen-loc", get_turf(usr)) T.Click(location, control, params) - return 1 + . = 1 diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index a66957254f6..f2df817366b 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -103,6 +103,9 @@ #define ui_alien_health "EAST-1:28,CENTER-1:13" //aliens have the health display where humans have the pressure damage indicator. #define ui_ling_chemical_display "EAST-1:28,CENTER-3:15" +#define ui_wiz_energy_display "EAST-1:28,CENTER-3:15" +//#define ui_wiz_instability_display "EAST-2:28,CENTER-3:15" +#define ui_wiz_instability_display "EAST-1:28,NORTH-2:27" //Pop-up inventory #define ui_shoes "WEST+1:8,SOUTH:5" @@ -137,5 +140,5 @@ #define ui_iarrowleft "SOUTH-1,EAST-4" #define ui_iarrowright "SOUTH-1,EAST-2" -#define ui_spell_master "EAST-1:16,NORTH-1:16" +#define ui_spell_master "EAST-2:16,NORTH-1:26" #define ui_genetic_master "EAST-1:16,NORTH-3:16" diff --git a/code/_onclick/hud/ability_screen_objects.dm b/code/_onclick/hud/ability_screen_objects.dm new file mode 100644 index 00000000000..0192713affa --- /dev/null +++ b/code/_onclick/hud/ability_screen_objects.dm @@ -0,0 +1,378 @@ +/obj/screen/movable/ability_master + name = "Abilities" + icon = 'icons/mob/screen_spells.dmi' + icon_state = "grey_spell_ready" + var/list/obj/screen/ability/ability_objects = list() + var/showing = 0 // If we're 'open' or not. + + var/open_state = "master_open" // What the button looks like when it's 'open', showing the other buttons. + var/closed_state = "master_closed" // Button when it's 'closed', hiding everything else. + + screen_loc = ui_spell_master // TODO: Rename + + var/mob/my_mob = null // The mob that possesses this hud object. + +/obj/screen/movable/ability_master/New(owner) + if(owner) + my_mob = owner + update_abilities(0, owner) + else + message_admins("ERROR: ability_master's New() was not given an owner argument. This is a bug.") + +/obj/screen/movable/ability_master/Destroy() + ..() + //Get rid of the ability objects. + remove_all_abilities() + ability_objects.Cut() + + // After that, remove ourselves from the mob seeing us, so we can qdel cleanly. + if(my_mob) + my_mob.ability_master = null + if(my_mob.client && my_mob.client.screen) + my_mob.client.screen -= src + my_mob = null + +/obj/screen/movable/ability_master/ResetVars() + ..("ability_objects", args) + remove_all_abilities() +// ability_objects = list() + +/obj/screen/movable/ability_master/MouseDrop() + if(showing) + return + + return ..() + +/obj/screen/movable/ability_master/Click() + if(!ability_objects.len) // If we're empty for some reason. +// qdel(src) + return + + toggle_open() + +/obj/screen/movable/ability_master/proc/toggle_open(var/forced_state = 0) + if(showing && (forced_state != 2)) // We are closing the ability master, hide the abilities. + for(var/obj/screen/ability/O in ability_objects) + if(my_mob && my_mob.client) + my_mob.client.screen -= O +// O.handle_icon_updates = 0 + showing = 0 + overlays.len = 0 + overlays.Add(closed_state) + else if(forced_state != 1) // We're opening it, show the icons. + open_ability_master() + update_abilities(1) + showing = 1 + overlays.len = 0 + overlays.Add(open_state) + update_icon() + +/obj/screen/movable/ability_master/proc/open_ability_master() + var/list/screen_loc_xy = splittext(screen_loc,",") + + //Create list of X offsets + var/list/screen_loc_X = splittext(screen_loc_xy[1],":") + var/x_position = decode_screen_X(screen_loc_X[1]) + var/x_pix = screen_loc_X[2] + + //Create list of Y offsets + var/list/screen_loc_Y = splittext(screen_loc_xy[2],":") + var/y_position = decode_screen_Y(screen_loc_Y[1]) + var/y_pix = screen_loc_Y[2] + + for(var/i = 1; i <= ability_objects.len; i++) + var/obj/screen/ability/A = ability_objects[i] + var/xpos = x_position + (x_position < 8 ? 1 : -1)*(i%7) + var/ypos = y_position + (y_position < 8 ? round(i/7) : -round(i/7)) + A.screen_loc = "[encode_screen_X(xpos)]:[x_pix],[encode_screen_Y(ypos)]:[y_pix]" + if(my_mob && my_mob.client) + my_mob.client.screen += A +// A.handle_icon_updates = 1 + +/obj/screen/movable/ability_master/proc/update_abilities(forced = 0, mob/user) + update_icon() + if(user && user.client) + if(!(src in user.client.screen)) + user.client.screen += src + var/i = 1 + for(var/obj/screen/ability/ability in ability_objects) + ability.update_icon(forced) + ability.maptext = "[i]" // Slot number + i++ + +/obj/screen/movable/ability_master/update_icon() + if(ability_objects.len) + invisibility = 0 + else + invisibility = 101 + +/obj/screen/movable/ability_master/proc/add_ability(var/name_given) + if(!name) return + +// if(spell.connected_button) //we have one already, for some reason +// if(spell.connected_button in spell_objects) +// return +// else +// spell_objects.Add(spell.connected_button) +// if(spell_holder.client) +// toggle_open(2) +// return + +// if(spell.spell_flags & NO_BUTTON) //no button to add if we don't get one +// return + + var/obj/screen/ability/new_button = new /obj/screen/ability + new_button.ability_master = src +// new_button.spell = spell + +// spell.connected_button = newscreen + +// if(!spell.override_base) //if it's not set, we do basic checks +// if(spell.spell_flags & CONSTRUCT_CHECK) +// newscreen.spell_base = "const" //construct spells +// else +// newscreen.spell_base = "wiz" //wizard spells +// else +// newscreen.spell_base = spell.override_base + new_button.name = name_given + new_button.ability_icon_state = name_given + new_button.update_icon(1) + ability_objects.Add(new_button) + if(my_mob.client) + toggle_open(2) //forces the icons to refresh on screen + +/obj/screen/movable/ability_master/proc/remove_ability(var/obj/screen/ability/ability) + if(!ability) + return + ability_objects.Remove(ability) + qdel(ability) + + + if(ability_objects.len) + toggle_open(showing + 1) + update_icon() +// else +// qdel(src) + +/obj/screen/movable/ability_master/proc/remove_all_abilities() + for(var/obj/screen/ability/A in ability_objects) + remove_ability(A) + +/obj/screen/movable/ability_master/proc/get_ability_by_name(name_to_search) + for(var/obj/screen/ability/A in ability_objects) + if(A.name == name_to_search) + return A + return null + +/obj/screen/movable/ability_master/proc/get_ability_by_proc_ref(proc_ref) + for(var/obj/screen/ability/verb_based/V in ability_objects) + if(V.verb_to_call == proc_ref) + return V + return null + +/obj/screen/movable/ability_master/proc/get_ability_by_instance(var/obj/instance/) + for(var/obj/screen/ability/obj_based/O in ability_objects) + if(O.object == instance) + return O + return null + +/mob/Login() + ..() + if(ability_master) + ability_master.toggle_open(1) + client.screen -= ability_master + +/mob/New() + ..() + ability_master = new /obj/screen/movable/ability_master(src) + +///////////ACTUAL ABILITIES//////////// +//This is what you click to do things// +/////////////////////////////////////// +/obj/screen/ability + icon = 'icons/mob/screen_spells.dmi' + icon_state = "grey_spell_base" + maptext_x = 3 + var/background_base_state = "grey" + var/ability_icon_state = null + +// var/spell/spell = null + var/obj/screen/movable/ability_master/ability_master + +// var/icon/last_charged_icon + +/obj/screen/ability/Destroy() + if(ability_master) + ability_master.ability_objects -= src + if(ability_master.my_mob && ability_master.my_mob.client) + ability_master.my_mob.client.screen -= src + if(ability_master && !ability_master.ability_objects.len) + ability_master.update_icon() +// qdel(ability_master) + ability_master = null + ..() + +/obj/screen/ability/update_icon() +// if(!spell) +// qdel(src) +// return + +// if((last_charge == spell.charge_counter || !handle_icon_updates) && !forced_update) +// return //nothing to see here + +// overlays -= spell.hud_state + +// if(spell.charge_type == Sp_RECHARGE || spell.charge_type == Sp_CHARGES) +// if(spell.charge_counter < spell.charge_max) +// icon_state = "[background_base_state]_spell_base" +// if(spell.charge_counter > 0) +// var/icon/partial_charge = icon(src.icon, "[spell_base]_spell_ready") +// partial_charge.Crop(1, 1, partial_charge.Width(), round(partial_charge.Height() * spell.charge_counter / spell.charge_max)) +// overlays += partial_charge +// if(last_charged_icon) +// overlays -= last_charged_icon +// last_charged_icon = partial_charge +// else if(last_charged_icon) +// overlays -= last_charged_icon +// last_charged_icon = null +// else +// icon_state = "[spell_base]_spell_ready" +// if(last_charged_icon) +// overlays -= last_charged_icon +// else +// icon_state = "[spell_base]_spell_ready" + overlays.Cut() + icon_state = "[background_base_state]_spell_base" + + overlays += ability_icon_state + +// last_charge = spell.charge_counter + +// overlays -= "silence" +// if(spell.silenced) +// overlays += "silence" + +/obj/screen/ability/Click() + if(!usr) +// qdel(src) + return + +// spell.perform(usr) + activate() + +// Makes the ability be triggered. The subclasses of this are responsible for carrying it out in whatever way it needs to. +/obj/screen/ability/proc/activate() + world << "[src] had activate() called." + return + +// This checks if the ability can be used. +/obj/screen/ability/proc/can_activate() + return 1 + +/client/verb/activate_ability(var/slot as num) + set name = ".activate_ability" +// set hidden = 1 + if(!mob) + return // Paranoid. + if(isnull(slot) || !isnum(slot)) + src << ".activate_ability requires a number as input, corrisponding to the slot you wish to use." + return // Bad input. + if(!mob.ability_master) + return // No abilities. + if(slot > mob.ability_master.ability_objects.len || slot <= 0) + return // Out of bounds. + var/obj/screen/ability/A = mob.ability_master.ability_objects[slot] + A.activate() + +//////////Verb Abilities////////// +//Buttons to trigger verbs/procs// +////////////////////////////////// + +/obj/screen/ability/verb_based + var/verb_to_call = null + var/object_used = null + var/arguments_to_use = list() + +/obj/screen/ability/verb_based/activate() + if(object_used && verb_to_call) + call(object_used,verb_to_call)(arguments_to_use) +// call(object_used,verb_to_call)(arguments_to_use) +// world << "Attempted to call([object_used],[verb_to_call])([arguments_to_use])" +// if(hascall(object_used, verb_to_call)) +// call(object_used,verb_to_call)(arguments_to_use) +// else +// message_admins("ERROR: activate() on [ability_master.my_mob]'s [src] failed the hascall([object_used],[verb_to_call]) check.") + +/obj/screen/movable/ability_master/proc/add_verb_ability(var/object_given, var/verb_given, var/name_given, var/ability_icon_given, var/arguments) + if(!object_given) + message_admins("ERROR: add_verb_ability() was not given an object in its arguments.") + if(!verb_given) + message_admins("ERROR: add_verb_ability() was not given a verb/proc in its arguments.") + if(get_ability_by_proc_ref(verb_given)) + return // Duplicate + var/obj/screen/ability/verb_based/A = new /obj/screen/ability/verb_based() + A.ability_master = src + A.object_used = object_given + A.verb_to_call = verb_given + A.ability_icon_state = ability_icon_given + A.name = name_given + if(arguments) + A.arguments_to_use = arguments + ability_objects.Add(A) + if(my_mob.client) + toggle_open(2) //forces the icons to refresh on screen + +//Changeling Abilities +/obj/screen/ability/verb_based/changeling + icon_state = "ling_spell_base" + background_base_state = "ling" + +/obj/screen/movable/ability_master/proc/add_ling_ability(var/object_given, var/verb_given, var/name_given, var/ability_icon_given, var/arguments) + if(!object_given) + message_admins("ERROR: add_ling_ability() was not given an object in its arguments.") + if(!verb_given) + message_admins("ERROR: add_ling_ability() was not given a verb/proc in its arguments.") + if(get_ability_by_proc_ref(verb_given)) + return // Duplicate + var/obj/screen/ability/verb_based/changeling/A = new /obj/screen/ability/verb_based/changeling() + A.ability_master = src + A.object_used = object_given + A.verb_to_call = verb_given + A.ability_icon_state = ability_icon_given + A.name = name_given + if(arguments) + A.arguments_to_use = arguments + ability_objects.Add(A) + if(my_mob.client) + toggle_open(2) //forces the icons to refresh on screen + + +/////////Obj Abilities//////// +//Buttons to trigger objects// +////////////////////////////// + +/obj/screen/ability/obj_based + var/obj/object = null + +/obj/screen/ability/obj_based/activate() + if(object) + object.Click() + +// Technomancer +/obj/screen/ability/obj_based/technomancer + icon_state = "wiz_spell_base" + background_base_state = "wiz" + +/obj/screen/movable/ability_master/proc/add_technomancer_ability(var/obj/object_given, var/ability_icon_given) + if(!object_given) + message_admins("ERROR: add_technomancer_ability() was not given an object in its arguments.") + if(get_ability_by_instance(object_given)) + return // Duplicate + var/obj/screen/ability/obj_based/technomancer/A = new /obj/screen/ability/obj_based/technomancer() + A.ability_master = src + A.object = object_given + A.ability_icon_state = ability_icon_given + A.name = object_given.name + ability_objects.Add(A) + if(my_mob.client) + toggle_open(2) //forces the icons to refresh on screen \ No newline at end of file diff --git a/code/_onclick/hud/alien_larva.dm b/code/_onclick/hud/alien_larva.dm index 4fa0e4110a2..1f0df801414 100644 --- a/code/_onclick/hud/alien_larva.dm +++ b/code/_onclick/hud/alien_larva.dm @@ -21,20 +21,6 @@ mymob.healths.name = "health" mymob.healths.screen_loc = ui_alien_health - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen1_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "1,1" - mymob.blind.layer = 0 - - mymob.flash = new /obj/screen() - mymob.flash.icon = 'icons/mob/screen1_alien.dmi' - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.screen_loc = ui_entire_screen - mymob.flash.layer = 17 - mymob.fire = new /obj/screen() mymob.fire.icon = 'icons/mob/screen1_alien.dmi' mymob.fire.icon_state = "fire0" @@ -42,6 +28,6 @@ mymob.fire.screen_loc = ui_fire mymob.client.screen = list() - mymob.client.screen += list( mymob.healths, mymob.blind, mymob.flash, mymob.fire) //, mymob.rest, mymob.sleep, mymob.mach ) + mymob.client.screen += list( mymob.healths, mymob.fire) //, mymob.rest, mymob.sleep, mymob.mach ) mymob.client.screen += src.adding + src.other mymob.client.screen += mymob.client.void \ No newline at end of file diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm new file mode 100644 index 00000000000..fd226eb70c9 --- /dev/null +++ b/code/_onclick/hud/fullscreen.dm @@ -0,0 +1,118 @@ +#define FULLSCREEN_LAYER 18 +#define DAMAGE_LAYER FULLSCREEN_LAYER + 0.1 +#define BLIND_LAYER DAMAGE_LAYER + 0.1 +#define CRIT_LAYER BLIND_LAYER + 0.1 + +/mob + var/list/screens = list() + +/mob/proc/set_fullscreen(condition, screen_name, screen_type, arg) + condition ? overlay_fullscreen(screen_name, screen_type, arg) : clear_fullscreen(screen_name) + +/mob/proc/overlay_fullscreen(category, type, severity) + var/obj/screen/fullscreen/screen = screens[category] + + if(screen) + if(screen.type != type) + clear_fullscreen(category, FALSE) + screen = null + else if(!severity || severity == screen.severity) + return null + + if(!screen) + screen = PoolOrNew(type) + + screen.icon_state = "[initial(screen.icon_state)][severity]" + screen.severity = severity + + screens[category] = screen + if(client && stat != DEAD) + client.screen += screen + return screen + +/mob/proc/clear_fullscreen(category, animated = 10) + var/obj/screen/fullscreen/screen = screens[category] + if(!screen) + return + + screens -= category + + if(animated) + spawn(0) + animate(screen, alpha = 0, time = animated) + sleep(animated) + if(client) + client.screen -= screen + qdel(screen) + else + if(client) + client.screen -= screen + qdel(screen) + +/mob/proc/clear_fullscreens() + for(var/category in screens) + clear_fullscreen(category) + +/mob/proc/hide_fullscreens() + if(client) + for(var/category in screens) + client.screen -= screens[category] + +/mob/proc/reload_fullscreen() + if(client && stat != DEAD) //dead mob do not see any of the fullscreen overlays that he has. + for(var/category in screens) + client.screen |= screens[category] + +/obj/screen/fullscreen + icon = 'icons/mob/screen_full.dmi' + icon_state = "default" + screen_loc = "CENTER-7,CENTER-7" + layer = FULLSCREEN_LAYER + mouse_opacity = 0 + var/severity = 0 + +/obj/screen/fullscreen/Destroy() + severity = 0 + return ..() + +/obj/screen/fullscreen/brute + icon_state = "brutedamageoverlay" + layer = DAMAGE_LAYER + +/obj/screen/fullscreen/oxy + icon_state = "oxydamageoverlay" + layer = DAMAGE_LAYER + +/obj/screen/fullscreen/crit + icon_state = "passage" + layer = CRIT_LAYER + +/obj/screen/fullscreen/blind + icon_state = "blackimageoverlay" + layer = BLIND_LAYER + +/obj/screen/fullscreen/impaired + icon_state = "impairedoverlay" + +/obj/screen/fullscreen/blurry + icon = 'icons/mob/screen1.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "blurry" + +/obj/screen/fullscreen/flash + icon = 'icons/mob/screen1.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "flash" + +/obj/screen/fullscreen/flash/noise + icon_state = "noise" + +/obj/screen/fullscreen/high + icon = 'icons/mob/screen1.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "druggy" + +#undef FULLSCREEN_LAYER +#undef BLIND_LAYER +#undef DAMAGE_LAYER +#undef CRIT_LAYER \ No newline at end of file diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 7b9cf82cc52..45c6f7e277c 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -133,6 +133,8 @@ var/list/global_huds = list( var/hotkey_ui_hidden = 0 //This is to hide the buttons that can be used via hotkeys. (hotkeybuttons list of buttons) var/obj/screen/lingchemdisplay + var/obj/screen/wiz_instability_display + var/obj/screen/wiz_energy_display var/obj/screen/blobpwrdisplay var/obj/screen/blobhealthdisplay var/obj/screen/r_hand_hud_object @@ -159,6 +161,8 @@ datum/hud/New(mob/owner) disarm_intent = null help_intent = null lingchemdisplay = null + wiz_instability_display = null + wiz_energy_display = null blobpwrdisplay = null blobhealthdisplay = null r_hand_hud_object = null @@ -269,7 +273,7 @@ datum/hud/New(mob/owner) else if(isrobot(mymob)) robot_hud(ui_style, ui_color, ui_alpha, mymob) else if(isbrain(mymob)) - brain_hud(ui_style) + mymob.instantiate_hud(src) else if(isalien(mymob)) larva_hud() else if(isslime(mymob)) @@ -382,3 +386,9 @@ datum/hud/New(mob/owner) hud_used.hidden_inventory_update() hud_used.persistant_inventory_update() update_action_buttons() + +/mob/proc/add_click_catcher() + client.screen += client.void + +/mob/new_player/add_click_catcher() + return \ No newline at end of file diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 3f872f53e60..709117de8c5 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -303,31 +303,16 @@ mymob.ling_chem_display.icon_state = "ling_chems" hud_elements |= mymob.ling_chem_display - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen1_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "1,1" - mymob.blind.mouse_opacity = 0 - mymob.blind.layer = 0 - hud_elements |= mymob.blind + mymob.wiz_instability_display = new /obj/screen/wizard/instability() + mymob.wiz_instability_display.screen_loc = ui_wiz_instability_display + mymob.wiz_instability_display.icon_state = "wiz_instability_none" + hud_elements |= mymob.wiz_instability_display - mymob.damageoverlay = new /obj/screen() - mymob.damageoverlay.icon = 'icons/mob/screen1_full.dmi' - mymob.damageoverlay.icon_state = "oxydamageoverlay0" - mymob.damageoverlay.name = "dmg" - mymob.damageoverlay.screen_loc = "1,1" - mymob.damageoverlay.mouse_opacity = 0 - mymob.damageoverlay.layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top. - hud_elements |= mymob.damageoverlay + mymob.wiz_energy_display = new/obj/screen/wizard/energy() + mymob.wiz_energy_display.screen_loc = ui_wiz_energy_display + mymob.wiz_energy_display.icon_state = "wiz_energy" + hud_elements |= mymob.wiz_energy_display - mymob.flash = new /obj/screen() - mymob.flash.icon = ui_style - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.screen_loc = ui_entire_screen - mymob.flash.layer = 17 - hud_elements |= mymob.flash mymob.pain = new /obj/screen( null ) @@ -366,7 +351,7 @@ mymob.client.screen += hud_elements mymob.client.screen += src.adding + src.hotkeybuttons mymob.client.screen += mymob.client.void - inventory_shown = 0; + inventory_shown = 0 return @@ -397,3 +382,15 @@ /obj/screen/ling/chems name = "chemical storage" icon_state = "power_display" + +/obj/screen/wizard + invisibility = 101 + +/obj/screen/wizard/instability + name = "instability" + icon_state = "instability-1" + invisibility = 0 + +/obj/screen/wizard/energy + name = "energy" + icon_state = "wiz_energy" \ No newline at end of file diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 76922e398c0..cab3e3bfca0 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -5,14 +5,6 @@ /datum/hud/proc/ghost_hud() return -/datum/hud/proc/brain_hud(ui_style = 'icons/mob/screen1_Midnight.dmi') - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen1_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "1,1" - mymob.blind.layer = 0 - /datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen1_Midnight.dmi') blobpwrdisplay = new /obj/screen() @@ -116,13 +108,6 @@ else if(istype(mymob,/mob/living/simple_animal/construct/harvester)) constructtype = "harvester" - mymob.flash = new /obj/screen() - mymob.flash.icon = 'icons/mob/screen1.dmi' - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.screen_loc = ui_entire_screen - mymob.flash.layer = 17 - if(constructtype) mymob.fire = new /obj/screen() mymob.fire.icon = 'icons/mob/screen1_construct.dmi' @@ -155,5 +140,5 @@ mymob.client.screen = list() - mymob.client.screen += list(mymob.fire, mymob.healths, mymob.pullin, mymob.zone_sel, mymob.purged, mymob.flash) + mymob.client.screen += list(mymob.fire, mymob.healths, mymob.pullin, mymob.zone_sel, mymob.purged) mymob.client.screen += mymob.client.void diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index c6783e7bf76..ff0d8cdd5b0 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -173,21 +173,6 @@ var/obj/screen/robot_inventory mymob.pullin.screen_loc = ui_borg_pull src.other += mymob.pullin - mymob.blind = new /obj/screen() - mymob.blind.icon = 'icons/mob/screen1_full.dmi' - mymob.blind.icon_state = "blackimageoverlay" - mymob.blind.name = " " - mymob.blind.screen_loc = "1,1" - mymob.blind.layer = 0 - - mymob.flash = new /obj/screen() - mymob.flash.icon = ui_style - mymob.flash.icon_state = "blank" - mymob.flash.name = "flash" - mymob.flash.screen_loc = ui_entire_screen - mymob.flash.layer = 17 - src.other += mymob.flash - mymob.zone_sel = new /obj/screen/zone_sel() mymob.zone_sel.icon = ui_style mymob.zone_sel.alpha = ui_alpha @@ -210,7 +195,7 @@ var/obj/screen/robot_inventory mymob.client.screen = list() - mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, robot_inventory, mymob.gun_setting_icon) + mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, robot_inventory, mymob.gun_setting_icon) mymob.client.screen += src.adding + src.other mymob.client.screen += mymob.client.void diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 3c65b03f736..411d25befbe 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -15,7 +15,7 @@ mob/attacked_with_item() should then do mob-type specific stuff (like determinin Item Hit Effects: -item/apply_hit_effect() can be overriden to do whatever you want. However "standard" physical damage based weapons should make use of the target mob's hit_with_weapon() proc to +item/apply_hit_effect() can be overriden to do whatever you want. However "standard" physical damage based weapons should make use of the target mob's hit_with_weapon() proc to avoid code duplication. This includes items that may sometimes act as a standard weapon in addition to having other effects (e.g. stunbatons on harm intent). */ @@ -39,7 +39,7 @@ avoid code duplication. This includes items that may sometimes act as a standard /mob/living/attackby(obj/item/I, mob/user) if(!ismob(user)) return 0 - if(can_operate(src) && do_surgery(src,user,I)) //Surgery + if(can_operate(src) && I.do_surgery(src,user)) //Surgery return 1 return I.attack(src, user, user.zone_sel.selecting) @@ -76,9 +76,10 @@ avoid code duplication. This includes items that may sometimes act as a standard //Called when a weapon is used to make a successful melee attack on a mob. Returns the blocked result /obj/item/proc/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) + user.break_cloak() if(hitsound) playsound(loc, hitsound, 50, 1, -1) - + var/power = force if(HULK in user.mutations) power *= 2 diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index b249db9a47e..ae0d5a25442 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -65,6 +65,7 @@ var/list/gamemode_cache = list() var/usewhitelist = 0 var/kick_inactive = 0 //force disconnect for inactive players after this many minutes, if non-0 var/show_mods = 0 + var/show_devs = 0 var/show_mentors = 0 var/mods_can_tempban = 0 var/mods_can_job_tempban = 0 @@ -505,6 +506,9 @@ var/list/gamemode_cache = list() if("show_mods") config.show_mods = 1 + if("show_devs") + config.show_devs = 1 + if("show_mentors") config.show_mentors = 1 diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index bd3d82247c7..9463986f8b1 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -223,6 +223,17 @@ var/global/datum/shuttle_controller/shuttle_controller shuttles["Administration"] = shuttle process_shuttles += shuttle + shuttle = new() + shuttle.location = 1 + shuttle.warmup_time = 10 //want some warmup time so people can cancel. + shuttle.area_offsite = locate(/area/shuttle/trade/centcom) + shuttle.area_station = locate(/area/shuttle/trade/station) + shuttle.docking_controller_tag = "trade_shuttle" + shuttle.dock_target_station = "trade_shuttle_dock_airlock" + shuttle.dock_target_offsite = "trade_shuttle_bay" + shuttles["Trade"] = shuttle + process_shuttles += shuttle + shuttle = new() shuttle.area_offsite = locate(/area/shuttle/alien/base) shuttle.area_station = locate(/area/shuttle/alien/mine) diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index e6f88731b6f..aa06984f692 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -120,7 +120,7 @@ var/global/list/round_voters = list() // Keeps track of the individuals voting f if(choices[current_votes[key]] == .) round_voters += key // Keep track of who voted for the winning round. if(mode != VOTE_GAMEMODE || . == "Extended" || ticker.hide_mode == 0) // Announce Extended gamemode, but not other gamemodes - text += "Vote Result: [.]" + text += "Vote Result: [mode == VOTE_GAMEMODE ? gamemode_names[.] : .]" else text += "The vote has ended." diff --git a/code/datums/EPv2.dm b/code/datums/EPv2.dm index d5b85475dbf..a4e57d346d1 100644 --- a/code/datums/EPv2.dm +++ b/code/datums/EPv2.dm @@ -102,6 +102,15 @@ var/global/list/all_exonet_connections = list() return exonet.address return null +// Proc: get_atom_from_address() +// Parameters: 1 (target_address - the desired address to find) +// Description: Searches an address for the atom it is attached for, otherwise returns null. +/datum/exonet_protocol/proc/get_atom_from_address(var/target_address) + for(var/datum/exonet_protocol/exonet in all_exonet_connections) + if(exonet.address == target_address) + return exonet.holder + return null + // Proc: send_message() // Parameters: 3 (target_address - the desired address to send the message to, message - the message to send, text - the message text if message is of type "text") // Description: Sends the message to target_address, by calling receive_message() on the desired datum. diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm new file mode 100644 index 00000000000..f1dbc751926 --- /dev/null +++ b/code/datums/autolathe/arms.dm @@ -0,0 +1,389 @@ +/datum/category_item/autolathe/arms/syringegun_ammo + name = "syringe gun cartridge" + path =/obj/item/weapon/syringe_cartridge + +//////////////// +/*Ammo casings*/ +//////////////// + +/datum/category_item/autolathe/arms/shotgun_blanks + name = "ammunition (12g, blank)" + path =/obj/item/ammo_casing/shotgun/blank + +/datum/category_item/autolathe/arms/shotgun_beanbag + name = "ammunition (12g, beanbag)" + path =/obj/item/ammo_casing/shotgun/beanbag + +/datum/category_item/autolathe/arms/shotgun_flash + name = "ammunition (12g, flash)" + path =/obj/item/ammo_casing/shotgun/flash + +/datum/category_item/autolathe/arms/shotgun + name = "ammunition (12g, slug)" + path =/obj/item/ammo_casing/shotgun + hidden = 1 + +/datum/category_item/autolathe/arms/shotgun_pellet + name = "ammunition (12g, pellet)" + path =/obj/item/ammo_casing/shotgun/pellet + hidden = 1 + +/datum/category_item/autolathe/arms/stunshell + name = "ammunition (stun cartridge, shotgun)" + path =/obj/item/ammo_casing/shotgun/stunshell + hidden = 1 + +////////////////// +/*Ammo magazines*/ +////////////////// + +/////// 5mm +/* +/datum/category_item/autolathe/arms/pistol_5mm + name = "pistol magazine (5mm)" + path =/obj/item/ammo_magazine/c5mm + category = "Arms and Ammunition" + hidden = 1 +*/ + +/////// .45 +/datum/category_item/autolathe/arms/pistol_45 + name = "pistol magazine (.45)" + path =/obj/item/ammo_magazine/c45m + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_45p + name = "pistol magazine (.45 practice)" + path =/obj/item/ammo_magazine/c45m/practice + +/datum/category_item/autolathe/arms/pistol_45r + name = "pistol magazine (.45 rubber)" + path =/obj/item/ammo_magazine/c45m/rubber + +/datum/category_item/autolathe/arms/pistol_45f + name = "pistol magazine (.45 flash)" + path =/obj/item/ammo_magazine/c45m/flash + +/datum/category_item/autolathe/arms/pistol_45uzi + name = "uzi magazine (.45)" + path =/obj/item/ammo_magazine/c45uzi + hidden = 1 + +/datum/category_item/autolathe/arms/tommymag + name = "Tommygun magazine (.45)" + path =/obj/item/ammo_magazine/tommymag + hidden = 1 + +/datum/category_item/autolathe/arms/tommydrum + name = "Tommygun drum magazine (.45)" + path =/obj/item/ammo_magazine/tommydrum + hidden = 1 + +/////// 9mm + +/obj/item/ammo_magazine/mc9mm/flash + ammo_type =/obj/item/ammo_casing/c9mmf + +/obj/item/ammo_magazine/mc9mm/rubber + name = "magazine (9mm rubber)" + ammo_type =/obj/item/ammo_casing/c9mmr + +/obj/item/ammo_magazine/mc9mm/practice + name = "magazine (9mm practice)" + ammo_type =/obj/item/ammo_casing/c9mmp + +/datum/category_item/autolathe/arms/pistol_9mm + name = "pistol magazine (9mm)" + path =/obj/item/ammo_magazine/mc9mm + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_9mmr + name = "pistol magazine (9mm rubber)" + path =/obj/item/ammo_magazine/mc9mm/rubber + +/datum/category_item/autolathe/arms/pistol_9mmp + name = "pistol magazine (9mm practice)" + path =/obj/item/ammo_magazine/mc9mm/practice + +/datum/category_item/autolathe/arms/pistol_9mmf + name = "pistol magazine (9mm flash)" + path =/obj/item/ammo_magazine/mc9mm/flash + +/datum/category_item/autolathe/arms/smg_9mm + name = "top-mounted SMG magazine (9mm)" + path =/obj/item/ammo_magazine/mc9mmt + hidden = 1 + +/datum/category_item/autolathe/arms/smg_9mmr + name = "top-mounted SMG magazine (9mm rubber)" + path =/obj/item/ammo_magazine/mc9mmt/rubber + +/datum/category_item/autolathe/arms/smg_9mmp + name = "top-mounted SMG magazine (9mm practice)" + path =/obj/item/ammo_magazine/mc9mmt/practice + +/datum/category_item/autolathe/arms/smg_9mmf + name = "top-mounted SMG magazine (9mm flash)" + path =/obj/item/ammo_magazine/mc9mmt/flash + +/////// 10mm +/datum/category_item/autolathe/arms/smg_10mm + name = "SMG magazine (10mm)" + path =/obj/item/ammo_magazine/a10mm + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_50 + name = "pistol magazine (.50AE)" + path =/obj/item/ammo_magazine/a50 + hidden = 1 + +/////// 5.56mm +/datum/category_item/autolathe/arms/rifle_556 + name = "10rnd rifle magazine (5.56mm)" + path =/obj/item/ammo_magazine/a556 + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_556p + name = "10rnd rifle magazine (5.56mm practice)" + path =/obj/item/ammo_magazine/a556/practice + +/datum/category_item/autolathe/arms/rifle_556m + name = "20rnd rifle magazine (5.56mm)" + path =/obj/item/ammo_magazine/a556m + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_556mp + name = "20rnd rifle magazine (5.56mm practice)" + path =/obj/item/ammo_magazine/a556m/practice + hidden = 1 + +/////// 7.62 +/datum/category_item/autolathe/arms/rifle_small_762 + name = "10rnd rifle magazine (7.62mm)" + path =/obj/item/ammo_magazine/s762 + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_762 + name = "20rnd rifle magazine (7.62mm)" + path =/obj/item/ammo_magazine/c762 + hidden = 1 + +/datum/category_item/autolathe/arms/machinegun_762 + name = "machinegun box magazine (7.62)" + path =/obj/item/ammo_magazine/a762 + hidden = 1 + +/datum/category_item/autolathe/arms/shotgun_magazine + name = "24rnd shotgun magazine (12g)" + path =/obj/item/ammo_magazine/g12 + hidden = 1 + +/* Commented out until autolathe stuff is decided/fixed. Will probably remove these entirely. -Spades +// These should always be/empty! The idea is to fill them up manually with ammo clips. + +/datum/category_item/autolathe/arms/pistol_5mm + name = "pistol magazine (5mm)" + path =/obj/item/ammo_magazine/c5mm/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/smg_5mm + name = "top-mounted SMG magazine (5mm)" + path =/obj/item/ammo_magazine/c5mmt/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_45 + name = "pistol magazine (.45)" + path =/obj/item/ammo_magazine/c45m/empty + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/pistol_45uzi + name = "uzi magazine (.45)" + path =/obj/item/ammo_magazine/c45uzi/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/tommymag + name = "Tommygun magazine (.45)" + path =/obj/item/ammo_magazine/tommymag/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/tommydrum + name = "Tommygun drum magazine (.45)" + path =/obj/item/ammo_magazine/tommydrum/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_9mm + name = "pistol magazine (9mm)" + path =/obj/item/ammo_magazine/mc9mm/empty + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/smg_9mm + name = "top-mounted SMG magazine (9mm)" + path =/obj/item/ammo_magazine/mc9mmt/empty + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/smg_10mm + name = "SMG magazine (10mm)" + path =/obj/item/ammo_magazine/a10mm/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_50 + name = "pistol magazine (.50AE)" + path =/obj/item/ammo_magazine/a50/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_556 + name = "10rnd rifle magazine (5.56mm)" + path =/obj/item/ammo_magazine/a556/empty + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/rifle_556m + name = "20rnd rifle magazine (5.56mm)" + path =/obj/item/ammo_magazine/a556m/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_SVD + name = "10rnd rifle magazine (7.62mm)" + path =/obj/item/ammo_magazine/SVD/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_762 + name = "20rnd rifle magazine (7.62mm)" + path =/obj/item/ammo_magazine/c762/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/machinegun_762 + name = "machinegun box magazine (7.62)" + path =/obj/item/ammo_magazine/a762/empty + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/shotgun_magazine + name = "24rnd shotgun magazine (12g)" + path =/obj/item/ammo_magazine/g12/empty + category = "Arms and Ammunition" + hidden = 1*/ + +/////////////////////////////// +/*Ammo clips and Speedloaders*/ +/////////////////////////////// + +/datum/category_item/autolathe/arms/speedloader_357 + name = "speedloader (.357)" + path =/obj/item/ammo_magazine/a357 + hidden = 1 + +/datum/category_item/autolathe/arms/speedloader_38 + name = "speedloader (.38)" + path =/obj/item/ammo_magazine/c38 + hidden = 1 + +/datum/category_item/autolathe/arms/speedloader_38r + name = "speedloader (.38 rubber)" + path =/obj/item/ammo_magazine/c38/rubber + +// Commented out until metal exploits with autolathe is fixed. +/*/datum/category_item/autolathe/arms/pistol_clip_45 + name = "ammo clip (.45)" + path =/obj/item/ammo_magazine/clip/c45 + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_clip_45r + name = "ammo clip (.45 rubber)" + path =/obj/item/ammo_magazine/clip/c45/rubber + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/pistol_clip_45f + name = "ammo clip (.45 flash)" + path =/obj/item/ammo_magazine/clip/c45/flash + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/pistol_clip_45p + name = "ammo clip (.45 practice)" + path =/obj/item/ammo_magazine/clip/c45/practice + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/pistol_clip_9mm + name = "ammo clip (9mm)" + path =/obj/item/ammo_magazine/clip/c9mm + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_clip_9mmr + name = "ammo clip (9mm rubber)" + path =/obj/item/ammo_magazine/clip/c9mm/rubber + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/pistol_clip_9mmp + name = "ammo clip (9mm practice)" + path =/obj/item/ammo_magazine/clip/c9mm/practice + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/pistol_clip_9mmf + name = "ammo clip (9mm flash)" + path =/obj/item/ammo_magazine/clip/c9mm/flash + category = "Arms and Ammunition" + +/datum/category_item/autolathe/arms/pistol_clip_5mm + name = "ammo clip (5mm)" + path =/obj/item/ammo_magazine/clip/c5mm + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_clip_10mm + name = "ammo clip (10mm)" + path =/obj/item/ammo_magazine/clip/a10mm + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/pistol_clip_50 + name = "ammo clip (.50AE)" + path =/obj/item/ammo_magazine/clip/a50 + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_clip_556 + name = "ammo clip (5.56mm)" + path =/obj/item/ammo_magazine/clip/a556 + category = "Arms and Ammunition" + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_clip_556_practice + name = "ammo clip (5.56mm practice)" + path =/obj/item/ammo_magazine/clip/a556/practice + category = "Arms and Ammunition" +*/ + +/datum/category_item/autolathe/arms/rifle_clip_762 + name = "ammo clip (7.62mm)" + path =/obj/item/ammo_magazine/clip/a762 + hidden = 1 + +/datum/category_item/autolathe/arms/rifle_clip_762_practice + name = "ammo clip (7.62mm practice)" + path =/obj/item/ammo_magazine/clip/a762/practice + +/datum/category_item/autolathe/arms/knuckledusters + name = "knuckle dusters" + path =/obj/item/weapon/material/knuckledusters + hidden = 1 + +/datum/category_item/autolathe/arms/tacknife + name = "tactical knife" + path =/obj/item/weapon/material/hatchet/tacknife + hidden = 1 + +/datum/category_item/autolathe/arms/flamethrower + name = "flamethrower" + path =/obj/item/weapon/flamethrower/full + hidden = 1 diff --git a/code/datums/autolathe/autolathe.dm b/code/datums/autolathe/autolathe.dm new file mode 100644 index 00000000000..4adeb85760c --- /dev/null +++ b/code/datums/autolathe/autolathe.dm @@ -0,0 +1,71 @@ +var/datum/category_collection/autolathe/autolathe_recipes + +/datum/category_item/autolathe/New() + ..() + var/obj/item/I = new path() + if(I.matter && !resources) + resources = list() + for(var/material in I.matter) + resources[material] = I.matter[material]*1.25 // More expensive to produce than they are to recycle. + if(is_stack && istype(I, /obj/item/stack)) + var/obj/item/stack/IS = I + max_stack = IS.max_amount + qdel(I) + +/**************************** +* Category Collection Setup * +****************************/ + +/datum/category_collection/autolathe + category_group_type = /datum/category_group/autolathe + +/************* +* Categories * +*************/ + +/datum/category_group/autolathe + +/datum/category_group/autolathe/all + name = "All" + category_item_type = /datum/category_item/autolathe + +///datum/category_group/autolathe/all/New() + +/datum/category_group/autolathe/arms + name = "Arms and Ammunition" + category_item_type = /datum/category_item/autolathe/arms + +/datum/category_group/autolathe/devices + name = "Devices and Components" + category_item_type = /datum/category_item/autolathe/devices + +/datum/category_group/autolathe/engineering + name = "Engineering" + category_item_type = /datum/category_item/autolathe/engineering + +/datum/category_group/autolathe/general + name = "General" + category_item_type = /datum/category_item/autolathe/general + +/datum/category_group/autolathe/medical + name = "Medical" + category_item_type = /datum/category_item/autolathe/medical + +/datum/category_group/autolathe/tools + name = "Tools" + category_item_type = /datum/category_item/autolathe/tools + +/******************* +* Category entries * +*******************/ + +/datum/category_item/autolathe + var/path + var/list/resources + var/hidden + var/power_use = 0 + var/is_stack + var/max_stack + +/datum/category_item/autolathe/dd_SortValue() + return name \ No newline at end of file diff --git a/code/datums/autolathe/devices.dm b/code/datums/autolathe/devices.dm new file mode 100644 index 00000000000..9c6ab5bb97e --- /dev/null +++ b/code/datums/autolathe/devices.dm @@ -0,0 +1,32 @@ +/datum/category_item/autolathe/devices/consolescreen + name = "console screen" + path =/obj/item/weapon/stock_parts/console_screen + +/datum/category_item/autolathe/devices/igniter + name = "igniter" + path =/obj/item/device/assembly/igniter + +/datum/category_item/autolathe/devices/signaler + name = "signaler" + path =/obj/item/device/assembly/signaler + +/datum/category_item/autolathe/devices/sensor_infra + name = "infrared sensor" + path =/obj/item/device/assembly/infra + +/datum/category_item/autolathe/devices/timer + name = "timer" + path =/obj/item/device/assembly/timer + +/datum/category_item/autolathe/devices/sensor_prox + name = "proximity sensor" + path =/obj/item/device/assembly/prox_sensor + +/datum/category_item/autolathe/devices/beartrap + name = "mechanical trap" + path =/obj/item/weapon/beartrap + +/datum/category_item/autolathe/devices/electropack + name = "electropack" + path =/obj/item/device/radio/electropack + hidden = 1 diff --git a/code/datums/autolathe/engineering.dm b/code/datums/autolathe/engineering.dm new file mode 100644 index 00000000000..ce6b5f07b56 --- /dev/null +++ b/code/datums/autolathe/engineering.dm @@ -0,0 +1,95 @@ +/datum/category_item/autolathe/engineering/airlockmodule + name = "airlock electronics" + path =/obj/item/weapon/airlock_electronics + +/datum/category_item/autolathe/engineering/airalarm + name = "air alarm electronics" + path =/obj/item/weapon/circuitboard/airalarm + +/datum/category_item/autolathe/engineering/firealarm + name = "fire alarm electronics" + path =/obj/item/weapon/circuitboard/firealarm + +/datum/category_item/autolathe/engineering/powermodule + name = "power control module" + path =/obj/item/weapon/module/power_control + +/datum/category_item/autolathe/engineering/statusdisplay + name = "status display electronics" + path =/obj/item/weapon/circuitboard/status_display + +/datum/category_item/autolathe/engineering/aistatusdisplay + name = "ai status display electronics" + path =/obj/item/weapon/circuitboard/ai_status_display + +/datum/category_item/autolathe/engineering/newscaster + name = "newscaster electronics" + path =/obj/item/weapon/circuitboard/newscaster + +/datum/category_item/autolathe/engineering/atm + name = "atm electronics" + path =/obj/item/weapon/circuitboard/atm + +/datum/category_item/autolathe/engineering/intercom + name = "intercom electronics" + path =/obj/item/weapon/circuitboard/intercom + +/datum/category_item/autolathe/engineering/holopad + name = "holopad electronics" + path =/obj/item/weapon/circuitboard/holopad + +/datum/category_item/autolathe/engineering/guestpass + name = "guestpass console electronics" + path =/obj/item/weapon/circuitboard/guestpass + +/datum/category_item/autolathe/engineering/entertainment + name = "entertainment camera electronics" + path =/obj/item/weapon/circuitboard/security/telescreen/entertainment + +/datum/category_item/autolathe/engineering/keycard + name = "keycard authenticator electronics" + path =/obj/item/weapon/circuitboard/keycard_auth + +/datum/category_item/autolathe/engineering/photocopier + name = "photocopier electronics" + path =/obj/item/weapon/circuitboard/photocopier + +/datum/category_item/autolathe/engineering/fax + name = "fax machine electronics" + path =/obj/item/weapon/circuitboard/fax + +/datum/category_item/autolathe/engineering/microwave + name = "microwave electronics" + path =/obj/item/weapon/circuitboard/microwave + +/datum/category_item/autolathe/engineering/washing + name = "washing machine electronics" + path =/obj/item/weapon/circuitboard/washing + +/datum/category_item/autolathe/engineering/request + name = "request console electronics" + path =/obj/item/weapon/circuitboard/request + +/datum/category_item/autolathe/engineering/motor + name = "motor" + path =/obj/item/weapon/stock_parts/motor + +/datum/category_item/autolathe/engineering/gear + name = "gear" + path =/obj/item/weapon/stock_parts/gear + +/datum/category_item/autolathe/engineering/spring + name = "spring" + path =/obj/item/weapon/stock_parts/spring + +/datum/category_item/autolathe/engineering/rcd_ammo + name = "matter cartridge" + path =/obj/item/weapon/rcd_ammo + +/datum/category_item/autolathe/engineering/rcd + name = "rapid construction device" + path =/obj/item/weapon/rcd + +/datum/category_item/autolathe/engineering/camera_assembly + name = "camera assembly" + path =/obj/item/weapon/camera_assembly diff --git a/code/datums/autolathe/general.dm b/code/datums/autolathe/general.dm new file mode 100644 index 00000000000..f354583318f --- /dev/null +++ b/code/datums/autolathe/general.dm @@ -0,0 +1,124 @@ +/datum/category_item/autolathe/general/bucket + name = "bucket" + path =/obj/item/weapon/reagent_containers/glass/bucket + +/datum/category_item/autolathe/general/cooler_bottle + name = "water-cooler bottle" + path =/obj/item/weapon/reagent_containers/glass/cooler_bottle + +/datum/category_item/autolathe/general/drinkingglass_square + name = "half-pint glass" + path =/obj/item/weapon/reagent_containers/food/drinks/glass2/square + +/datum/category_item/autolathe/general/drinkingglass_rocks + name = "rocks glass" + path =/obj/item/weapon/reagent_containers/food/drinks/glass2/rocks + +/datum/category_item/autolathe/general/drinkingglass_shake + name = "milkshake glass" + path =/obj/item/weapon/reagent_containers/food/drinks/glass2/shake + +/datum/category_item/autolathe/general/drinkingglass_cocktail + name = "cocktail glass" + path =/obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail + +/datum/category_item/autolathe/general/drinkingglass_shot + name = "shot glass" + path =/obj/item/weapon/reagent_containers/food/drinks/glass2/shot + +/datum/category_item/autolathe/general/drinkingglass_pint + name = "pint glass" + path =/obj/item/weapon/reagent_containers/food/drinks/glass2/pint + +/datum/category_item/autolathe/general/drinkingglass_mug + name = "glass mug" + path =/obj/item/weapon/reagent_containers/food/drinks/glass2/mug + +/datum/category_item/autolathe/general/drinkingglass_wine + name = "wine glass" + path =/obj/item/weapon/reagent_containers/food/drinks/glass2/wine + +/datum/category_item/autolathe/general/flashlight + name = "flashlight" + path =/obj/item/device/flashlight + +/datum/category_item/autolathe/general/floor_light + name = "floor light" + path =/obj/machinery/floor_light + +/datum/category_item/autolathe/general/extinguisher + name = "extinguisher" + path =/obj/item/weapon/extinguisher + +/datum/category_item/autolathe/general/jar + name = "jar" + path =/obj/item/glass_jar + +/datum/category_item/autolathe/general/radio_headset + name = "radio headset" + path =/obj/item/device/radio/headset + +/datum/category_item/autolathe/general/radio_bounced + name = "station bounced radio" + path =/obj/item/device/radio/off + +/datum/category_item/autolathe/general/suit_cooler + name = "suit cooling unit" + path =/obj/item/device/suit_cooling_unit + +/datum/category_item/autolathe/general/weldermask + name = "welding mask" + path =/obj/item/clothing/head/welding + +/datum/category_item/autolathe/general/metal + name = "steel sheets" + path =/obj/item/stack/material/steel + is_stack = 1 + +/datum/category_item/autolathe/general/glass + name = "glass sheets" + path =/obj/item/stack/material/glass + is_stack = 1 + +/datum/category_item/autolathe/general/rglass + name = "reinforced glass sheets" + path =/obj/item/stack/material/glass/reinforced + is_stack = 1 + +/datum/category_item/autolathe/general/rods + name = "metal rods" + path =/obj/item/stack/rods + is_stack = 1 + +/datum/category_item/autolathe/general/knife + name = "kitchen knife" + path =/obj/item/weapon/material/knife + +/datum/category_item/autolathe/general/taperecorder + name = "tape recorder" + path =/obj/item/device/taperecorder + +/datum/category_item/autolathe/general/tube + name = "light tube" + path =/obj/item/weapon/light/tube + +/datum/category_item/autolathe/general/bulb + name = "light bulb" + path =/obj/item/weapon/light/bulb + +/datum/category_item/autolathe/general/ashtray_glass + name = "glass ashtray" + path =/obj/item/weapon/material/ashtray/glass + +/datum/category_item/autolathe/general/weldinggoggles + name = "welding goggles" + path =/obj/item/clothing/glasses/welding + +/datum/category_item/autolathe/general/maglight + name = "maglight" + path =/obj/item/device/flashlight/maglight + +/datum/category_item/autolathe/general/handcuffs + name = "handcuffs" + path =/obj/item/weapon/handcuffs + hidden = 1 diff --git a/code/datums/autolathe/medical.dm b/code/datums/autolathe/medical.dm new file mode 100644 index 00000000000..40211f9a8f2 --- /dev/null +++ b/code/datums/autolathe/medical.dm @@ -0,0 +1,39 @@ +/datum/category_item/autolathe/medical/scalpel + name = "scalpel" + path =/obj/item/weapon/scalpel + +/datum/category_item/autolathe/medical/circularsaw + name = "circular saw" + path =/obj/item/weapon/circular_saw + +/datum/category_item/autolathe/medical/surgicaldrill + name = "surgical drill" + path =/obj/item/weapon/surgicaldrill + +/datum/category_item/autolathe/medical/retractor + name = "retractor" + path =/obj/item/weapon/retractor + +/datum/category_item/autolathe/medical/cautery + name = "cautery" + path =/obj/item/weapon/cautery + +/datum/category_item/autolathe/medical/hemostat + name = "hemostat" + path =/obj/item/weapon/hemostat + +/datum/category_item/autolathe/medical/beaker + name = "glass beaker" + path =/obj/item/weapon/reagent_containers/glass/beaker + +/datum/category_item/autolathe/medical/beaker_large + name = "large glass beaker" + path =/obj/item/weapon/reagent_containers/glass/beaker/large + +/datum/category_item/autolathe/medical/vial + name = "glass vial" + path =/obj/item/weapon/reagent_containers/glass/beaker/vial + +/datum/category_item/autolathe/medical/syringe + name = "syringe" + path =/obj/item/weapon/reagent_containers/syringe diff --git a/code/datums/autolathe/tools.dm b/code/datums/autolathe/tools.dm new file mode 100644 index 00000000000..50361e94d26 --- /dev/null +++ b/code/datums/autolathe/tools.dm @@ -0,0 +1,39 @@ +/datum/category_item/autolathe/tools/crowbar + name = "crowbar" + path =/obj/item/weapon/crowbar + +/datum/category_item/autolathe/tools/multitool + name = "multitool" + path =/obj/item/device/multitool + +/datum/category_item/autolathe/tools/t_scanner + name = "T-ray scanner" + path =/obj/item/device/t_scanner + +/datum/category_item/autolathe/tools/weldertool + name = "welding tool" + path =/obj/item/weapon/weldingtool + +/datum/category_item/autolathe/tools/screwdriver + name = "screwdriver" + path =/obj/item/weapon/screwdriver + +/datum/category_item/autolathe/tools/wirecutters + name = "wirecutters" + path =/obj/item/weapon/wirecutters + +/datum/category_item/autolathe/tools/wrench + name = "wrench" + path =/obj/item/weapon/wrench + +/datum/category_item/autolathe/tools/hatchet + name = "hatchet" + path =/obj/item/weapon/material/hatchet + +/datum/category_item/autolathe/tools/minihoe + name = "mini hoe" + path =/obj/item/weapon/material/minihoe + +/datum/category_item/autolathe/tools/welder_industrial + name = "industrial welding tool" + path =/obj/item/weapon/weldingtool/largetank diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index cc603aa2df5..2043febdb6b 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -228,6 +228,8 @@ L.fields["faction"] = H.personal_faction L.fields["religion"] = H.religion L.fields["image"] = getFlatIcon(H) //This is god-awful + L.fields["antagfac"] = H.antag_faction + L.fields["antagvis"] = H.antag_vis if(H.exploit_record && !jobban_isbanned(H, "Records")) L.fields["exploit_record"] = H.exploit_record else diff --git a/code/datums/hierarchy.dm b/code/datums/hierarchy.dm new file mode 100644 index 00000000000..ab009e03c32 --- /dev/null +++ b/code/datums/hierarchy.dm @@ -0,0 +1,30 @@ +/decl/hierarchy + var/name = "Hierarchy" + var/hierarchy_type + var/decl/hierarchy/parent + var/list/decl/hierarchy/children + +/decl/hierarchy/New(var/full_init = TRUE) + children = list() + if(!full_init) + return + + var/list/all_subtypes = list() + all_subtypes[type] = src + for(var/subtype in subtypesof(type)) + all_subtypes[subtype] = new subtype(FALSE) + + for(var/subtype in (all_subtypes - type)) + var/decl/hierarchy/subtype_instance = all_subtypes[subtype] + var/decl/hierarchy/subtype_parent = all_subtypes[subtype_instance.parent_type] + subtype_instance.parent = subtype_parent + dd_insertObjectList(subtype_parent.children, subtype_instance) + +/decl/hierarchy/proc/is_category() + return hierarchy_type == type || children.len + +/decl/hierarchy/proc/is_hidden_category() + return hierarchy_type == type + +/decl/hierarchy/dd_SortValue() + return name \ No newline at end of file diff --git a/code/datums/supplypacks/atmospherics.dm b/code/datums/supplypacks/atmospherics.dm index 3837bc40267..fdbb4cafc3b 100644 --- a/code/datums/supplypacks/atmospherics.dm +++ b/code/datums/supplypacks/atmospherics.dm @@ -2,48 +2,25 @@ * Here is where any supply packs related * to being atmospherics tasks live. */ + + /datum/supply_packs/atmos group = "Atmospherics" -/datum/supply_packs/atmos/internals - name = "Internals crate" - contains = list( - /obj/item/clothing/mask/gas = 3, - /obj/item/weapon/tank/air = 3 - ) - cost = 10 - containertype = /obj/structure/closet/crate/internals - containername = "Internals crate" - -/datum/supply_packs/atmos/evacuation - name = "Emergency equipment" - contains = list( - /obj/item/weapon/storage/toolbox/emergency = 2, - /obj/item/clothing/suit/storage/hazardvest = 2, - /obj/item/clothing/suit/storage/vest = 2, - /obj/item/weapon/tank/emergency_oxygen/engi = 4, - /obj/item/clothing/suit/space/emergency = 4, - /obj/item/clothing/head/helmet/space/emergency = 4, - /obj/item/clothing/mask/gas = 4 - ) - cost = 45 - containertype = /obj/structure/closet/crate/internals - containername = "Emergency crate" - /datum/supply_packs/atmos/inflatable name = "Inflatable barriers" contains = list(/obj/item/weapon/storage/briefcase/inflatable = 3) cost = 20 containertype = /obj/structure/closet/crate containername = "Inflatable Barrier Crate" - + /datum/supply_packs/atmos/canister_empty name = "Empty gas canister" cost = 7 containername = "Empty gas canister crate" containertype = /obj/structure/largecrate contains = list(/obj/machinery/portable_atmospherics/canister) - + /datum/supply_packs/atmos/canister_air name = "Air canister" cost = 10 @@ -75,7 +52,7 @@ /datum/supply_packs/atmos/canister_sleeping_agent name = "N2O gas canister" - cost = 40 + cost = 15 containername = "N2O gas canister crate" containertype = /obj/structure/closet/crate/secure/large access = access_atmospherics @@ -83,22 +60,49 @@ /datum/supply_packs/atmos/canister_carbon_dioxide name = "Carbon dioxide gas canister" - cost = 40 + cost = 15 containername = "CO2 canister crate" containertype = /obj/structure/closet/crate/secure/large access = access_atmospherics contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) - -/datum/supply_packs/atmos/voidsuits - name = "Atmospheric voidsuits" + +/datum/supply_packs/atmos/air_dispenser + contains = list(/obj/machinery/pipedispenser/orderable) + name = "Pipe Dispenser" + cost = 25 + containertype = /obj/structure/closet/crate/secure/large + containername = "Pipe Dispenser Crate" + access = access_atmospherics + +/datum/supply_packs/atmos/disposals_dispenser + contains = list(/obj/machinery/pipedispenser/disposal/orderable) + name = "Disposals Pipe Dispenser" + cost = 25 + containertype = /obj/structure/closet/crate/secure/large + containername = "Disposal Dispenser Crate" + access = access_atmospherics + +/datum/supply_packs/atmos/internals + name = "Internals crate" contains = list( - /obj/item/clothing/suit/space/void/atmos = 2, - /obj/item/clothing/head/helmet/space/void/atmos = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/weapon/tank/oxygen = 2, + /obj/item/clothing/mask/gas = 3, + /obj/item/weapon/tank/air = 3 ) - cost = 45 - containertype = "/obj/structure/closet/crate/secure" - containername = "Atmospheric voidsuit crate" - access = access_atmospherics \ No newline at end of file + cost = 10 + containertype = /obj/structure/closet/crate/internals + containername = "Internals crate" + +/datum/supply_packs/atmos/evacuation + name = "Emergency equipment" + contains = list( + /obj/item/weapon/storage/toolbox/emergency = 2, + /obj/item/clothing/suit/storage/hazardvest = 2, + /obj/item/clothing/suit/storage/vest = 2, + /obj/item/weapon/tank/emergency_oxygen/engi = 4, + /obj/item/clothing/suit/space/emergency = 4, + /obj/item/clothing/head/helmet/space/emergency = 4, + /obj/item/clothing/mask/gas = 4 + ) + cost = 35 + containertype = /obj/structure/closet/crate/internals + containername = "Emergency crate" diff --git a/code/datums/supplypacks/contraband.dm b/code/datums/supplypacks/contraband.dm index ebddcc6e4cb..c33b2b120c8 100644 --- a/code/datums/supplypacks/contraband.dm +++ b/code/datums/supplypacks/contraband.dm @@ -3,6 +3,7 @@ * and require modification of the supply controller live. */ + /datum/supply_packs/randomised/contraband num_contained = 5 contains = list( @@ -13,11 +14,11 @@ ) name = "Contraband crate" - cost = 30 + cost = 25 containertype = /obj/structure/closet/crate containername = "Unlabeled crate" contraband = 1 - group = "Operations" + group = "Supplies" /datum/supply_packs/security/specialops name = "Special Ops supplies" @@ -27,11 +28,11 @@ /obj/item/weapon/pen/reagent/paralysis, /obj/item/weapon/grenade/chem_grenade/incendiary ) - cost = 20 + cost = 25 containertype = /obj/structure/closet/crate containername = "Special Ops crate" - hidden = 1 - + contraband = 1 + /datum/supply_packs/security/bolt_rifles_mosin name = "Surplus militia rifles" contains = list( @@ -39,6 +40,6 @@ /obj/item/ammo_magazine/clip/a762 = 6 ) cost = 50 - hidden = 1 + contraband = 1 containertype = /obj/structure/closet/crate/secure/weapon containername = "Weapons crate" \ No newline at end of file diff --git a/code/datums/supplypacks/costumes.dm b/code/datums/supplypacks/costumes.dm new file mode 100644 index 00000000000..cb5a950bfef --- /dev/null +++ b/code/datums/supplypacks/costumes.dm @@ -0,0 +1,165 @@ +/* +* Here is where any supply packs +* related to weapons live. +*/ + + +/datum/supply_packs/costumes + group = "Costumes" + +/datum/supply_packs/randomised/costumes + group = "Costumes" + +/datum/supply_packs/costumes/wizard + name = "Wizard costume" + contains = list( + /obj/item/weapon/staff, + /obj/item/clothing/suit/wizrobe/fake, + /obj/item/clothing/shoes/sandal, + /obj/item/clothing/head/wizard/fake + ) + cost = 20 + containertype = /obj/structure/closet/crate + containername = "Wizard costume crate" + +/datum/supply_packs/randomised/costumes/hats + num_contained = 4 + contains = list( + /obj/item/clothing/head/collectable/chef, + /obj/item/clothing/head/collectable/paper, + /obj/item/clothing/head/collectable/tophat, + /obj/item/clothing/head/collectable/captain, + /obj/item/clothing/head/collectable/beret, + /obj/item/clothing/head/collectable/welding, + /obj/item/clothing/head/collectable/flatcap, + /obj/item/clothing/head/collectable/pirate, + /obj/item/clothing/head/collectable/kitty, + /obj/item/clothing/head/collectable/rabbitears, + /obj/item/clothing/head/collectable/wizard, + /obj/item/clothing/head/collectable/hardhat, + /obj/item/clothing/head/collectable/HoS, + /obj/item/clothing/head/collectable/thunderdome, + /obj/item/clothing/head/collectable/swat, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/police, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/xenom, + /obj/item/clothing/head/collectable/petehat + ) + name = "Collectable hat crate!" + cost = 200 + containertype = /obj/structure/closet/crate + containername = "Collectable hats crate! Brought to you by Bass.inc!" + +/datum/supply_packs/randomised/costumes/costume + num_contained = 3 + contains = list( + /obj/item/clothing/suit/pirate, + /obj/item/clothing/suit/judgerobe, + /obj/item/clothing/suit/wcoat, + /obj/item/clothing/suit/hastur, + /obj/item/clothing/suit/holidaypriest, + /obj/item/clothing/suit/nun, + /obj/item/clothing/suit/imperium_monk, + /obj/item/clothing/suit/ianshirt, + /obj/item/clothing/under/gimmick/rank/captain/suit, + /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit, + /obj/item/clothing/under/lawyer/purpsuit, + /obj/item/clothing/under/rank/mailman, + /obj/item/clothing/under/dress/dress_saloon, + /obj/item/clothing/suit/suspenders, + /obj/item/clothing/suit/storage/toggle/labcoat/mad, + /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, + /obj/item/clothing/under/schoolgirl, + /obj/item/clothing/under/owl, + /obj/item/clothing/under/waiter, + /obj/item/clothing/under/gladiator, + /obj/item/clothing/under/soviet, + /obj/item/clothing/under/scratch, + /obj/item/clothing/under/wedding/bride_white, + /obj/item/clothing/suit/chef, + /obj/item/clothing/suit/apron/overalls, + /obj/item/clothing/under/redcoat, + /obj/item/clothing/under/kilt + ) + name = "Costumes crate" + cost = 10 + containertype = /obj/structure/closet/crate + containername = "Actor Costumes" + +/datum/supply_packs/costumes/formal_wear + contains = list( + /obj/item/clothing/head/bowler, + /obj/item/clothing/head/that, + /obj/item/clothing/suit/storage/toggle/internalaffairs, + /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket, + /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket, + /obj/item/clothing/under/suit_jacket, + /obj/item/clothing/under/suit_jacket/female, + /obj/item/clothing/under/suit_jacket/really_black, + /obj/item/clothing/under/suit_jacket/red, + /obj/item/clothing/under/lawyer/bluesuit, + /obj/item/clothing/under/lawyer/purpsuit, + /obj/item/clothing/shoes/black = 2, + /obj/item/clothing/shoes/leather, + /obj/item/clothing/suit/wcoat + ) + name = "Formalwear closet" + cost = 30 + containertype = /obj/structure/closet + containername = "Formalwear for the best occasions." + +datum/supply_packs/costumes/witch + name = "Witch costume" + containername = "Witch costume" + containertype = /obj/structure/closet + cost = 20 + contains = list( + /obj/item/clothing/suit/wizrobe/marisa/fake, + /obj/item/clothing/shoes/sandal, + /obj/item/clothing/head/wizard/marisa/fake, + /obj/item/weapon/staff/broom + ) + +/datum/supply_packs/randomised/costumes/costume_hats + name = "Costume hats" + containername = "Actor hats crate" + containertype = /obj/structure/closet/crate + cost = 10 + num_contained = 3 + contains = list( + /obj/item/clothing/head/redcoat, + /obj/item/clothing/head/mailman, + /obj/item/clothing/head/plaguedoctorhat, + /obj/item/clothing/head/pirate, + /obj/item/clothing/head/hasturhood, + /obj/item/clothing/head/powdered_wig, + /obj/item/clothing/head/hairflower, + /obj/item/clothing/head/hairflower/yellow, + /obj/item/clothing/head/hairflower/blue, + /obj/item/clothing/head/hairflower/pink, + /obj/item/clothing/mask/gas/owl_mask, + /obj/item/clothing/mask/gas/monkeymask, + /obj/item/clothing/head/helmet/gladiator, + /obj/item/clothing/head/ushanka + ) + +/datum/supply_packs/randomised/costumes/dresses + name = "Womens formal dress locker" + containername = "Pretty dress locker" + containertype = /obj/structure/closet + cost = 15 + num_contained = 3 + contains = list( + /obj/item/clothing/under/wedding/bride_orange, + /obj/item/clothing/under/wedding/bride_purple, + /obj/item/clothing/under/wedding/bride_blue, + /obj/item/clothing/under/wedding/bride_red, + /obj/item/clothing/under/wedding/bride_white, + /obj/item/clothing/under/sundress, + /obj/item/clothing/under/dress/dress_green, + /obj/item/clothing/under/dress/dress_pink, + /obj/item/clothing/under/dress/dress_orange, + /obj/item/clothing/under/dress/dress_yellow, + /obj/item/clothing/under/dress/dress_saloon + ) \ No newline at end of file diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index 4f1a43cb417..e42b1d17940 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -2,6 +2,8 @@ * Here is where any supply packs * related to engineering tasks live. */ + + /datum/supply_packs/eng group = "Engineering" @@ -11,38 +13,6 @@ cost = 10 containertype = /obj/structure/closet/crate containername = "Replacement lights" - -/datum/supply_packs/eng/metal50 - name = "50 metal sheets" - contains = list(/obj/item/stack/material/steel) - amount = 50 - cost = 10 - containertype = /obj/structure/closet/crate - containername = "Metal sheets crate" - -/datum/supply_packs/eng/glass50 - name = "50 glass sheets" - contains = list(/obj/item/stack/material/glass) - amount = 50 - cost = 10 - containertype = /obj/structure/closet/crate - containername = "Glass sheets crate" - -/datum/supply_packs/eng/wood50 - name = "50 wooden planks" - contains = list(/obj/item/stack/material/wood) - amount = 50 - cost = 10 - containertype = /obj/structure/closet/crate - containername = "Wooden planks crate" - -/datum/supply_packs/eng/plastic50 - name = "50 plastic sheets" - contains = list(/obj/item/stack/material/plastic) - amount = 50 - cost = 10 - containertype = /obj/structure/closet/crate - containername = "Plastic sheets crate" /datum/supply_packs/eng/smescoil name = "Superconducting Magnetic Coil" @@ -59,7 +29,7 @@ /obj/item/weapon/cell = 2, /obj/item/weapon/cell/high = 2 ) - cost = 15 + cost = 10 containertype = /obj/structure/closet/crate containername = "Electrical maintenance crate" @@ -78,10 +48,10 @@ /datum/supply_packs/eng/fueltank name = "Fuel tank crate" contains = list(/obj/structure/reagent_dispensers/fueltank) - cost = 8 + cost = 10 containertype = /obj/structure/largecrate containername = "fuel tank crate" - + /datum/supply_packs/eng/solar name = "Solar Pack crate" contains = list( @@ -93,7 +63,7 @@ cost = 20 containertype = /obj/structure/closet/crate containername = "Solar pack crate" - + /datum/supply_packs/eng/engine name = "Emitter crate" contains = list(/obj/machinery/power/emitter = 2) @@ -101,26 +71,26 @@ containertype = /obj/structure/closet/crate/secure containername = "Emitter crate" access = access_ce - -/datum/supply_packs/engine/eng/field_gen + +/datum/supply_packs/eng/engine/field_gen name = "Field Generator crate" contains = list(/obj/machinery/field_generator = 2) containertype = /obj/structure/closet/crate/secure containername = "Field Generator crate" access = access_ce - + /datum/supply_packs/eng/engine/sing_gen name = "Singularity Generator crate" contains = list(/obj/machinery/the_singularitygen) containertype = /obj/structure/closet/crate/secure containername = "Singularity Generator crate" access = access_ce - + /datum/supply_packs/eng/engine/collector name = "Collector crate" contains = list(/obj/machinery/power/rad_collector = 3) containername = "Collector crate" - + /datum/supply_packs/eng/engine/PA name = "Particle Accelerator crate" cost = 40 @@ -136,71 +106,31 @@ containertype = /obj/structure/closet/crate/secure containername = "Particle Accelerator crate" access = access_ce - -/datum/supply_packs/eng/robotics - name = "Robotics assembly crate" - contains = list( - /obj/item/device/assembly/prox_sensor = 3, - /obj/item/weapon/storage/toolbox/electrical, - /obj/item/device/flash = 4, - /obj/item/weapon/cell/high = 2 - ) - cost = 10 - containertype = /obj/structure/closet/crate/secure/gear - containername = "Robotics assembly" - access = access_robotics - -/datum/supply_packs/eng/robolimbs_basic - name = "Basic robolimb blueprints" - contains = list( - /obj/item/weapon/disk/limb/morpheus, - /obj/item/weapon/disk/limb/xion - ) - cost = 15 - containertype = /obj/structure/closet/crate/secure/gear - containername = "Robolimb blueprints (basic)" - access = access_robotics - -/datum/supply_packs/eng/robolimbs_adv - name = "All robolimb blueprints" - contains = list( - /obj/item/weapon/disk/limb/bishop, - /obj/item/weapon/disk/limb/hesphiastos, - /obj/item/weapon/disk/limb/morpheus, - /obj/item/weapon/disk/limb/veymed, - /obj/item/weapon/disk/limb/wardtakahashi, - /obj/item/weapon/disk/limb/xion, - /obj/item/weapon/disk/limb/zenghu, - ) - cost = 40 - containertype = /obj/structure/closet/crate/secure/gear - containername = "Robolimb blueprints (adv)" - access = access_robotics - + /datum/supply_packs/eng/shield_gen contains = list(/obj/item/weapon/circuitboard/shield_gen) name = "Bubble shield generator circuitry" - cost = 50 + cost = 30 containertype = /obj/structure/closet/crate/secure containername = "bubble shield generator circuitry crate" access = access_ce - + /datum/supply_packs/eng/shield_gen_ex contains = list(/obj/item/weapon/circuitboard/shield_gen_ex) name = "Hull shield generator circuitry" - cost = 50 + cost = 30 containertype = /obj/structure/closet/crate/secure containername = "hull shield generator circuitry crate" access = access_ce - + /datum/supply_packs/eng/shield_cap contains = list(/obj/item/weapon/circuitboard/shield_cap) name = "Bubble shield capacitor circuitry" - cost = 50 + cost = 30 containertype = /obj/structure/closet/crate/secure containername = "shield capacitor circuitry crate" access = access_ce - + /datum/supply_packs/eng/smbig name = "Supermatter Core" contains = list(/obj/machinery/power/supermatter) @@ -208,39 +138,23 @@ containertype = /obj/structure/closet/crate/secure/phoron containername = "Supermatter crate (CAUTION)" access = access_ce - + /datum/supply_packs/eng/teg contains = list(/obj/machinery/power/generator) name = "Mark I Thermoelectric Generator" - cost = 75 + cost = 50 containertype = /obj/structure/closet/crate/secure/large containername = "Mk1 TEG crate" access = access_engine - + /datum/supply_packs/eng/circulator contains = list(/obj/machinery/atmospherics/binary/circulator) name = "Binary atmospheric circulator" - cost = 60 + cost = 50 containertype = /obj/structure/closet/crate/secure/large containername = "Atmospheric circulator crate" access = access_engine - -/datum/supply_packs/eng/air_dispenser - contains = list(/obj/machinery/pipedispenser/orderable) - name = "Pipe Dispenser" - cost = 35 - containertype = /obj/structure/closet/crate/secure/large - containername = "Pipe Dispenser Crate" - access = access_atmospherics - -/datum/supply_packs/eng/disposals_dispenser - contains = list(/obj/machinery/pipedispenser/disposal/orderable) - name = "Disposals Pipe Dispenser" - cost = 35 - containertype = /obj/structure/closet/crate/secure/large - containername = "Disposal Dispenser Crate" - access = access_atmospherics - + /datum/supply_packs/eng/radsuit contains = list( /obj/item/clothing/suit/radiation = 3, @@ -250,10 +164,10 @@ cost = 20 containertype = /obj/structure/closet/radiation containername = "Radiation suit locker" - + /datum/supply_packs/eng/pacman_parts name = "P.A.C.M.A.N. portable generator parts" - cost = 45 + cost = 25 containername = "P.A.C.M.A.N. Portable Generator Construction Kit" containertype = /obj/structure/closet/crate/secure access = access_tech_storage @@ -263,10 +177,10 @@ /obj/item/weapon/stock_parts/matter_bin, /obj/item/weapon/circuitboard/pacman ) - + /datum/supply_packs/eng/super_pacman_parts name = "Super P.A.C.M.A.N. portable generator parts" - cost = 55 + cost = 35 containername = "Super P.A.C.M.A.N. portable generator construction kit" containertype = /obj/structure/closet/crate/secure access = access_tech_storage @@ -276,28 +190,3 @@ /obj/item/weapon/stock_parts/matter_bin, /obj/item/weapon/circuitboard/pacman/super ) - -/datum/supply_packs/eng/painters - name = "Station Painting Supplies" - cost = 10 - containername = "station painting supplies crate" - containertype = /obj/structure/closet/crate - contains = list( - /obj/item/device/pipe_painter = 2, - /obj/item/device/floor_painter = 2, - /obj/item/device/closet_painter = 2 - ) - -/datum/supply_packs/eng/voidsuits - name = "Engineering voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/engineering = 2, - /obj/item/clothing/head/helmet/space/void/engineering = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/weapon/tank/oxygen = 2 - ) - cost = 40 - containertype = "/obj/structure/closet/crate/secure" - containername = "Engineering voidsuit crate" - access = access_engine_equip \ No newline at end of file diff --git a/code/datums/supplypacks/hospitality.dm b/code/datums/supplypacks/hospitality.dm index c35fb6025f4..0e245f19216 100644 --- a/code/datums/supplypacks/hospitality.dm +++ b/code/datums/supplypacks/hospitality.dm @@ -2,6 +2,8 @@ * Here is where any supply packs related * to being hospitable tasks live */ + + /datum/supply_packs/hospitality group = "Hospitality" @@ -20,10 +22,10 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale = 2, /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer = 4, ) - cost = 20 + cost = 10 containertype = /obj/structure/closet/crate containername = "Party equipment" - + /datum/supply_packs/hospitality/barsupplies name = "Bar supplies" contains = list( @@ -42,19 +44,7 @@ cost = 10 containertype = /obj/structure/closet/crate containername = "crate of bar supplies" - -/datum/supply_packs/hospitality/lasertag - name = "Lasertag equipment" - contains = list( - /obj/item/weapon/gun/energy/lasertag/red, - /obj/item/clothing/suit/redtag, - /obj/item/weapon/gun/energy/lasertag/blue, - /obj/item/clothing/suit/bluetag - ) - containertype = /obj/structure/closet - containername = "Lasertag Closet" - cost = 20 - + /datum/supply_packs/randomised/hospitality/ group = "Hospitality" @@ -69,4 +59,4 @@ name = "Surprise pack of five pizzas" cost = 15 containertype = /obj/structure/closet/crate/freezer - containername = "Pizza crate" \ No newline at end of file + containername = "Pizza crate" diff --git a/code/datums/supplypacks/hydroponics.dm b/code/datums/supplypacks/hydroponics.dm index 11053ee4cd8..25f06143d01 100644 --- a/code/datums/supplypacks/hydroponics.dm +++ b/code/datums/supplypacks/hydroponics.dm @@ -2,6 +2,8 @@ * Here is where any supply packs * related to hydroponics tasks live. */ + + /datum/supply_packs/hydro group = "Hydroponics" @@ -11,35 +13,35 @@ cost = 20 containertype = /obj/structure/closet/crate/freezer containername = "Monkey crate" - + /datum/supply_packs/hydro/farwa name = "Farwa crate" contains = list (/obj/item/weapon/storage/box/monkeycubes/farwacubes) - cost = 30 + cost = 20 containertype = /obj/structure/closet/crate/freezer containername = "Farwa crate" - + /datum/supply_packs/hydro/neara name = "Neaera crate" contains = list (/obj/item/weapon/storage/box/monkeycubes/neaeracubes) - cost = 30 + cost = 20 containertype = /obj/structure/closet/crate/freezer containername = "Neaera crate" - + /datum/supply_packs/hydro/stok name = "Stok crate" contains = list (/obj/item/weapon/storage/box/monkeycubes/stokcubes) - cost = 30 + cost = 20 containertype = /obj/structure/closet/crate/freezer containername = "Stok crate" - + /datum/supply_packs/hydro/lisa name = "Corgi Crate" contains = list() cost = 50 containertype = /obj/structure/largecrate/animal/corgi containername = "Corgi Crate" - + /datum/supply_packs/hydro/hydroponics name = "Hydroponics Supply Crate" contains = list( @@ -53,32 +55,32 @@ /obj/item/weapon/material/minihoe, /obj/item/weapon/storage/box/botanydisk ) - cost = 15 + cost = 20 containertype = /obj/structure/closet/crate/hydroponics containername = "Hydroponics crate" access = access_hydroponics - + /datum/supply_packs/hydro/cow name = "Cow crate" - cost = 30 + cost = 25 containertype = /obj/structure/largecrate/animal/cow containername = "Cow crate" access = access_hydroponics - + /datum/supply_packs/hydro/goat name = "Goat crate" cost = 25 containertype = /obj/structure/largecrate/animal/goat containername = "Goat crate" access = access_hydroponics - + /datum/supply_packs/hydro/chicken name = "Chicken crate" - cost = 20 + cost = 25 containertype = /obj/structure/largecrate/animal/chick containername = "Chicken crate" access = access_hydroponics - + /datum/supply_packs/hydro/seeds name = "Seeds crate" contains = list( @@ -104,7 +106,7 @@ containertype = /obj/structure/closet/crate/hydroponics containername = "Seeds crate" access = access_hydroponics - + /datum/supply_packs/hydro/weedcontrol name = "Weed control crate" contains = list( @@ -117,28 +119,14 @@ containertype = /obj/structure/closet/crate/hydroponics containername = "Weed control crate" access = access_hydroponics - -/datum/supply_packs/hydro/exoticseeds - name = "Exotic seeds crate" - contains = list( - /obj/item/seeds/replicapod = 2, - /obj/item/seeds/libertymycelium, - /obj/item/seeds/reishimycelium, - /obj/item/seeds/random = 6, - /obj/item/seeds/kudzuseed - ) - cost = 15 - containertype = /obj/structure/closet/crate/hydroponics - containername = "Exotic Seeds crate" - access = access_hydroponics - + /datum/supply_packs/hydro/watertank name = "Water tank crate" contains = list(/obj/structure/reagent_dispensers/watertank) - cost = 8 + cost = 10 containertype = /obj/structure/largecrate containername = "water tank crate" - + /datum/supply_packs/hydro/bee_keeper name = "Beekeeping crate" contains = list( @@ -151,10 +139,10 @@ containertype = /obj/structure/closet/crate/hydroponics containername = "Beekeeping crate" access = access_hydroponics - + /datum/supply_packs/hydro/tray name = "Empty hydroponics tray" - cost = 30 + cost = 20 containertype = /obj/structure/closet/crate/hydroponics containername = "Hydroponics tray crate" contains = list(/obj/machinery/portable_atmospherics/hydroponics{anchored = 0}) diff --git a/code/datums/supplypacks/materials.dm b/code/datums/supplypacks/materials.dm new file mode 100644 index 00000000000..cf73f052d5d --- /dev/null +++ b/code/datums/supplypacks/materials.dm @@ -0,0 +1,61 @@ +/* +* Here is where any supply packs +* related to materials live. +*/ + + +/datum/supply_packs/materials + group = "Materials" + +/datum/supply_packs/materials/metal50 + name = "50 metal sheets" + contains = list(/obj/item/stack/material/steel/fifty) + cost = 10 + containertype = /obj/structure/closet/crate + containername = "Metal sheets crate" + +/datum/supply_packs/materials/glass50 + name = "50 glass sheets" + contains = list(/obj/item/stack/material/glass/fifty) + cost = 10 + containertype = /obj/structure/closet/crate + containername = "Glass sheets crate" + +/datum/supply_packs/materials/wood50 + name = "50 wooden planks" + contains = list(/obj/item/stack/material/wood/fifty) + cost = 10 + containertype = /obj/structure/closet/crate + containername = "Wooden planks crate" + +/datum/supply_packs/materials/plastic50 + name = "50 plastic sheets" + contains = list(/obj/item/stack/material/plastic/fifty) + cost = 10 + containertype = /obj/structure/closet/crate + containername = "Plastic sheets crate" + +/datum/supply_packs/materials/cardboard_sheets + contains = list(/obj/item/stack/material/cardboard/fifty) + name = "50 cardboard sheets" + cost = 10 + containertype = /obj/structure/closet/crate + containername = "Cardboard sheets crate" + +/datum/supply_packs/materials/carpet + name = "Imported carpet" + containertype = /obj/structure/closet/crate + containername = "Imported carpet crate" + cost = 15 + contains = list( + /obj/item/stack/tile/carpet/fifty, + /obj/item/stack/tile/carpet/blue/fifty + ) + + +/datum/supply_packs/misc/linoleum + name = "Linoleum" + containertype = /obj/structure/closet/crate + containername = "Linoleum crate" + cost = 15 + contains = list(/obj/item/stack/tile/linoleum/fifty) \ No newline at end of file diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm index ef67cb1a95e..3972114440f 100644 --- a/code/datums/supplypacks/medical.dm +++ b/code/datums/supplypacks/medical.dm @@ -2,9 +2,11 @@ * Here is where any supply packs * related to medical tasks live. */ + + /datum/supply_packs/med group = "Medical" - + /datum/supply_packs/med/medical name = "Medical crate" contains = list( @@ -22,28 +24,28 @@ cost = 10 containertype = /obj/structure/closet/crate/medical containername = "Medical crate" - + /datum/supply_packs/med/bloodpack name = "BloodPack crate" contains = list(/obj/item/weapon/storage/box/bloodpacks = 3) cost = 10 containertype = /obj/structure/closet/crate/medical containername = "BloodPack crate" - + /datum/supply_packs/med/bodybag name = "Body bag crate" contains = list(/obj/item/weapon/storage/box/bodybags = 3) cost = 10 containertype = /obj/structure/closet/crate/medical containername = "Body bag crate" - + /datum/supply_packs/med/cryobag name = "Stasis bag crate" contains = list(/obj/item/bodybag/cryobag = 3) - cost = 50 + cost = 40 containertype = /obj/structure/closet/crate/medical containername = "Stasis bag crate" - + /datum/supply_packs/med/surgery name = "Surgery crate" contains = list( @@ -63,7 +65,7 @@ containertype = "/obj/structure/closet/crate/secure" containername = "Surgery crate" access = access_medical - + /datum/supply_packs/med/sterile name = "Sterile equipment crate" contains = list( @@ -73,24 +75,10 @@ /obj/item/weapon/storage/box/gloves, /obj/item/weapon/storage/belt/medical = 3 ) - cost = 15 + cost = 10 containertype = "/obj/structure/closet/crate" containername = "Sterile equipment crate" - -/datum/supply_packs/med/voidsuits - name = "Medical voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/medical = 2, - /obj/item/clothing/head/helmet/space/void/medical = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/weapon/tank/oxygen = 2 - ) - cost = 40 - containertype = "/obj/structure/closet/crate/secure" - containername = "Medical voidsuit crate" - access = access_medical_equip - + /datum/supply_packs/med/extragear name = "Medical surplus equipment" contains = list( @@ -99,11 +87,11 @@ /obj/item/device/radio/headset/headset_med/alt = 3, /obj/item/clothing/suit/storage/hooded/wintercoat/medical = 3 ) - cost = 15 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Medical surplus equipment" access = access_medical - + /datum/supply_packs/med/cmogear name = "Chief medical officer equipment" contains = list( @@ -123,11 +111,11 @@ /obj/item/device/flashlight/pen, /obj/item/weapon/reagent_containers/syringe ) - cost = 60 + cost = 50 containertype = "/obj/structure/closet/crate/secure" containername = "Chief medical officer equipment" access = access_cmo - + /datum/supply_packs/med/doctorgear name = "Medical Doctor equipment" contains = list( @@ -150,7 +138,7 @@ containertype = "/obj/structure/closet/crate/secure" containername = "Medical Doctor equipment" access = access_medical_equip - + /datum/supply_packs/med/chemistgear name = "Chemist equipment" contains = list( @@ -169,11 +157,11 @@ /obj/item/weapon/storage/box/pillbottles, /obj/item/weapon/reagent_containers/syringe ) - cost = 15 + cost = 20 containertype = "/obj/structure/closet/crate/secure" containername = "Chemist equipment" access = access_chemistry - + /datum/supply_packs/med/paramedicgear name = "Paramedic equipment" contains = list( @@ -201,7 +189,7 @@ containertype = "/obj/structure/closet/crate/secure" containername = "Paramedic equipment" access = access_medical_equip - + /datum/supply_packs/med/psychiatristgear name = "Psychiatrist equipment" contains = list( @@ -216,11 +204,11 @@ /obj/item/weapon/pen, /obj/item/weapon/cartridge/medical ) - cost = 15 + cost = 20 containertype = "/obj/structure/closet/crate/secure" containername = "Psychiatrist equipment" access = access_psychiatrist - + /datum/supply_packs/med/medicalscrubs name = "Medical scrubs" contains = list( @@ -237,11 +225,11 @@ /obj/item/weapon/storage/box/masks, /obj/item/weapon/storage/box/gloves ) - cost = 15 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Medical scrubs crate" access = access_medical_equip - + /datum/supply_packs/med/autopsy name = "Autopsy equipment" contains = list( @@ -258,7 +246,7 @@ containertype = "/obj/structure/closet/crate/secure" containername = "Autopsy equipment crate" access = access_morgue - + /datum/supply_packs/med/medicaluniforms name = "Medical uniforms" contains = list( @@ -281,11 +269,11 @@ /obj/item/weapon/storage/box/masks, /obj/item/weapon/storage/box/gloves ) - cost = 15 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Medical uniform crate" access = access_medical_equip - + /datum/supply_packs/med/medicalbiosuits name = "Medical biohazard gear" contains = list( @@ -303,11 +291,19 @@ containertype = "/obj/structure/closet/crate/secure" containername = "Medical biohazard equipment" access = access_medical_equip - + /datum/supply_packs/med/portablefreezers name = "Portable freezers crate" contains = list(/obj/item/weapon/storage/box/freezer = 7) cost = 25 containertype = "/obj/structure/closet/crate/secure" containername = "Portable freezers" - access = access_medical_equip \ No newline at end of file + access = access_medical_equip + +/datum/supply_packs/med/virus + name = "Virus sample crate" + contains = list(/obj/item/weapon/virusdish/random = 4) + cost = 25 + containertype = "/obj/structure/closet/crate/secure" + containername = "Virus sample crate" + access = access_cmo \ No newline at end of file diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm index a64a6e44e72..4fa22ddc503 100644 --- a/code/datums/supplypacks/misc.dm +++ b/code/datums/supplypacks/misc.dm @@ -2,122 +2,14 @@ * Here is where any supply packs * that don't belong elsewhere live. */ + + /datum/supply_packs/misc group = "Miscellaneous" /datum/supply_packs/randomised/misc group = "Miscellaneous" -/datum/supply_packs/misc/wizard - name = "Wizard costume" - contains = list( - /obj/item/weapon/staff, - /obj/item/clothing/suit/wizrobe/fake, - /obj/item/clothing/shoes/sandal, - /obj/item/clothing/head/wizard/fake - ) - cost = 20 - containertype = /obj/structure/closet/crate - containername = "Wizard costume crate" - -/datum/supply_packs/misc/foam_weapons - name = "Foam Weapon Crate" - contains = list( - /obj/item/weapon/material/sword/foam = 2, - /obj/item/weapon/material/twohanded/baseballbat/foam = 2, - /obj/item/weapon/material/twohanded/spear/foam = 2, - /obj/item/weapon/material/twohanded/fireaxe/foam = 2 - ) - cost = 80 - containertype = /obj/structure/closet/crate - containername = "foam weapon crate" - -/datum/supply_packs/randomised/misc/hats - num_contained = 4 - contains = list( - /obj/item/clothing/head/collectable/chef, - /obj/item/clothing/head/collectable/paper, - /obj/item/clothing/head/collectable/tophat, - /obj/item/clothing/head/collectable/captain, - /obj/item/clothing/head/collectable/beret, - /obj/item/clothing/head/collectable/welding, - /obj/item/clothing/head/collectable/flatcap, - /obj/item/clothing/head/collectable/pirate, - /obj/item/clothing/head/collectable/kitty, - /obj/item/clothing/head/collectable/rabbitears, - /obj/item/clothing/head/collectable/wizard, - /obj/item/clothing/head/collectable/hardhat, - /obj/item/clothing/head/collectable/HoS, - /obj/item/clothing/head/collectable/thunderdome, - /obj/item/clothing/head/collectable/swat, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/police, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/xenom, - /obj/item/clothing/head/collectable/petehat - ) - name = "Collectable hat crate!" - cost = 200 - containertype = /obj/structure/closet/crate - containername = "Collectable hats crate! Brought to you by Bass.inc!" - -/datum/supply_packs/randomised/misc/costume - num_contained = 3 - contains = list( - /obj/item/clothing/suit/pirate, - /obj/item/clothing/suit/judgerobe, - /obj/item/clothing/suit/wcoat, - /obj/item/clothing/suit/hastur, - /obj/item/clothing/suit/holidaypriest, - /obj/item/clothing/suit/nun, - /obj/item/clothing/suit/imperium_monk, - /obj/item/clothing/suit/ianshirt, - /obj/item/clothing/under/gimmick/rank/captain/suit, - /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit, - /obj/item/clothing/under/lawyer/purpsuit, - /obj/item/clothing/under/rank/mailman, - /obj/item/clothing/under/dress/dress_saloon, - /obj/item/clothing/suit/suspenders, - /obj/item/clothing/suit/storage/toggle/labcoat/mad, - /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, - /obj/item/clothing/under/schoolgirl, - /obj/item/clothing/under/owl, - /obj/item/clothing/under/waiter, - /obj/item/clothing/under/gladiator, - /obj/item/clothing/under/soviet, - /obj/item/clothing/under/scratch, - /obj/item/clothing/under/wedding/bride_white, - /obj/item/clothing/suit/chef, - /obj/item/clothing/suit/apron/overalls, - /obj/item/clothing/under/redcoat, - /obj/item/clothing/under/kilt - ) - name = "Costumes crate" - cost = 10 - containertype = /obj/structure/closet/crate - containername = "Actor Costumes" - -/datum/supply_packs/misc/formal_wear - contains = list( - /obj/item/clothing/head/bowler, - /obj/item/clothing/head/that, - /obj/item/clothing/suit/storage/toggle/internalaffairs, - /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket, - /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket, - /obj/item/clothing/under/suit_jacket, - /obj/item/clothing/under/suit_jacket/female, - /obj/item/clothing/under/suit_jacket/really_black, - /obj/item/clothing/under/suit_jacket/red, - /obj/item/clothing/under/lawyer/bluesuit, - /obj/item/clothing/under/lawyer/purpsuit, - /obj/item/clothing/shoes/black = 2, - /obj/item/clothing/shoes/leather, - /obj/item/clothing/suit/wcoat - ) - name = "Formalwear closet" - cost = 30 - containertype = /obj/structure/closet - containername = "Formalwear for the best occasions." /datum/supply_packs/randomised/misc/card_packs num_contained = 5 @@ -138,117 +30,6 @@ containertype = /obj/structure/closet/crate containername = "EFTPOS crate" -/datum/supply_packs/misc/cardboard_sheets - contains = list(/obj/item/stack/material/cardboard) - name = "50 cardboard sheets" - amount = 50 - cost = 10 - containertype = /obj/structure/closet/crate - containername = "Cardboard sheets crate" - -/datum/supply_packs/misc/carpet - name = "Imported carpet" - containertype = /obj/structure/closet/crate - containername = "Imported carpet crate" - cost = 15 - contains = list( - /obj/item/stack/tile/carpet, - /obj/item/stack/tile/carpet/blue - ) - amount = 50 - -/datum/supply_packs/misc/linoleum - name = "Linoleum" - containertype = /obj/structure/closet/crate - containername = "Linoleum crate" - cost = 15 - contains = list(/obj/item/stack/tile/linoleum) - amount = 50 - -/datum/supply_packs/misc/witch - name = "Witch costume" - containername = "Witch costume" - containertype = /obj/structure/closet - cost = 20 - contains = list( - /obj/item/clothing/suit/wizrobe/marisa/fake, - /obj/item/clothing/shoes/sandal, - /obj/item/clothing/head/wizard/marisa/fake, - /obj/item/weapon/staff/broom - ) - -/datum/supply_packs/randomised/misc/costume_hats - name = "Costume hats" - containername = "Actor hats crate" - containertype = /obj/structure/closet - cost = 10 - num_contained = 3 - contains = list( - /obj/item/clothing/head/redcoat, - /obj/item/clothing/head/mailman, - /obj/item/clothing/head/plaguedoctorhat, - /obj/item/clothing/head/pirate, - /obj/item/clothing/head/hasturhood, - /obj/item/clothing/head/powdered_wig, - /obj/item/clothing/head/hairflower, - /obj/item/clothing/head/hairflower/yellow, - /obj/item/clothing/head/hairflower/blue, - /obj/item/clothing/head/hairflower/pink, - /obj/item/clothing/mask/gas/owl_mask, - /obj/item/clothing/mask/gas/monkeymask, - /obj/item/clothing/head/helmet/gladiator, - /obj/item/clothing/head/ushanka - ) - -/datum/supply_packs/randomised/misc/dresses - name = "Womens formal dress locker" - containername = "Pretty dress locker" - containertype = /obj/structure/closet - cost = 15 - num_contained = 3 - contains = list( - /obj/item/clothing/under/wedding/bride_orange, - /obj/item/clothing/under/wedding/bride_purple, - /obj/item/clothing/under/wedding/bride_blue, - /obj/item/clothing/under/wedding/bride_red, - /obj/item/clothing/under/wedding/bride_white, - /obj/item/clothing/under/sundress, - /obj/item/clothing/under/dress/dress_green, - /obj/item/clothing/under/dress/dress_pink, - /obj/item/clothing/under/dress/dress_orange, - /obj/item/clothing/under/dress/dress_yellow, - /obj/item/clothing/under/dress/dress_saloon - ) - -/datum/supply_packs/randomised/misc/exosuit_mod - num_contained = 1 - contains = list( - /obj/item/device/kit/paint/ripley, - /obj/item/device/kit/paint/ripley/death, - /obj/item/device/kit/paint/ripley/flames_red, - /obj/item/device/kit/paint/ripley/flames_blue - ) - name = "Random APLU modkit" - cost = 200 - containertype = /obj/structure/closet/crate - containername = "heavy crate" - -/datum/supply_packs/randomised/misc/exosuit_mod/durand - contains = list( - /obj/item/device/kit/paint/durand, - /obj/item/device/kit/paint/durand/seraph, - /obj/item/device/kit/paint/durand/phazon - ) - name = "Random Durand exosuit modkit" - -/datum/supply_packs/randomised/misc/exosuit_mod/gygax - contains = list( - /obj/item/device/kit/paint/gygax, - /obj/item/device/kit/paint/gygax/darkgygax, - /obj/item/device/kit/paint/gygax/recitence - ) - name = "Random Gygax exosuit modkit" - /datum/supply_packs/misc/chaplaingear name = "Chaplain equipment" contains = list( @@ -265,4 +46,27 @@ ) cost = 10 containertype = "/obj/structure/closet/crate" - containername = "Chaplain equipment crate" \ No newline at end of file + containername = "Chaplain equipment crate" + +/datum/supply_packs/misc/hoverpod + name = "Hoverpod Shipment" + contains = list() + cost = 80 + containertype = /obj/structure/largecrate/hoverpod + containername = "Hoverpod Crate" + +/datum/supply_packs/randomised/misc/webbing + name = "Webbing crate" + num_contained = 4 + contains = list( + /obj/item/clothing/accessory/storage/black_vest, + /obj/item/clothing/accessory/storage/brown_vest, + /obj/item/clothing/accessory/storage/white_vest, + /obj/item/clothing/accessory/storage/black_drop_pouches, + /obj/item/clothing/accessory/storage/brown_drop_pouches, + /obj/item/clothing/accessory/storage/white_drop_pouches, + /obj/item/clothing/accessory/storage/webbing + ) + cost = 10 + containertype = "/obj/structure/closet/crate" + containername = "Webbing crate" diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm new file mode 100644 index 00000000000..8edee722396 --- /dev/null +++ b/code/datums/supplypacks/munitions.dm @@ -0,0 +1,151 @@ +/* +* Here is where any supply packs +* related to weapons live. +*/ + +/datum/supply_packs/munitions + group = "Munitions" + +/datum/supply_packs/randomised/munitions + group = "Munitions" + access = access_security + +/datum/supply_packs/munitions/weapons + name = "Weapons crate" + contains = list( + /obj/item/weapon/melee/baton = 2, + /obj/item/weapon/gun/energy/gun = 2, + /obj/item/weapon/gun/energy/taser = 2, + /obj/item/weapon/gun/projectile/colt/detective = 2, + /obj/item/weapon/storage/box/flashbangs = 2 + ) + cost = 40 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Weapons crate" + +/datum/supply_packs/munitions/flareguns + name = "Flare guns crate" + contains = list( + /obj/item/weapon/gun/projectile/sec/flash, + /obj/item/ammo_magazine/c45m/flash, + /obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare, + /obj/item/weapon/storage/box/flashshells + ) + cost = 25 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Flare gun crate" + +/datum/supply_packs/munitions/eweapons + name = "Experimental weapons crate" + contains = list( + /obj/item/weapon/gun/energy/xray = 2, + /obj/item/weapon/shield/energy = 2) + cost = 100 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Experimental weapons crate" + access = access_armory + +/datum/supply_packs/munitions/energyweapons + name = "Energy weapons crate" + contains = list(/obj/item/weapon/gun/energy/laser = 3) + cost = 50 + containertype = /obj/structure/closet/crate/secure + containername = "energy weapons crate" + access = access_armory + +/datum/supply_packs/munitions/shotgun + name = "Shotgun crate" + contains = list( + /obj/item/weapon/storage/box/shotgunammo, + /obj/item/weapon/storage/box/shotgunshells, + /obj/item/weapon/gun/projectile/shotgun/pump/combat = 2 + ) + cost = 50 + containertype = /obj/structure/closet/crate/secure + containername = "Shotgun crate" + access = access_armory + +/datum/supply_packs/munitions/erifle + name = "Energy marksman crate" + contains = list(/obj/item/weapon/gun/energy/sniperrifle = 2) + cost = 100 + containertype = /obj/structure/closet/crate/secure + containername = "Energy marksman crate" + access = access_armory + +/datum/supply_packs/munitions/ionweapons + name = "Electromagnetic weapons crate" + contains = list( + /obj/item/weapon/gun/energy/ionrifle = 2, + /obj/item/weapon/storage/box/emps + ) + cost = 50 + containertype = /obj/structure/closet/crate/secure + containername = "electromagnetic weapons crate" + access = access_armory + +/datum/supply_packs/randomised/munitions/automatic + name = "Automatic weapon crate" + num_contained = 2 + contains = list( + /obj/item/weapon/gun/projectile/automatic/wt550, + /obj/item/weapon/gun/projectile/automatic/z8 + ) + cost = 100 + containertype = /obj/structure/closet/crate/secure + containername = "Automatic weapon crate" + access = access_armory + +/datum/supply_packs/munitions/energy_guns + name = "energy guns crate" + contains = list(/obj/item/weapon/gun/energy/gun = 2) + cost = 50 + containertype = /obj/structure/closet/crate/secure + containername = "energy guns crate" + access = access_armory + +/datum/supply_packs/munitions/bolt_rifles_competitive + name = "Competitive shooting crate" + contains = list( + /obj/item/device/assembly/timer, + /obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice = 2, + /obj/item/ammo_magazine/clip/a762/practice = 4, + /obj/item/target = 2, + /obj/item/target/alien = 2, + /obj/item/target/syndicate = 2 + ) + cost = 40 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Weapons crate" + +/datum/supply_packs/munitions/shotgunammo + name = "Shotgun ammunition crate" + contains = list( + /obj/item/weapon/storage/box/shotgunammo = 2, + /obj/item/weapon/storage/box/shotgunshells = 2 + ) + cost = 25 + containertype = /obj/structure/closet/crate/secure + containername = "ballistic ammunition crate" + access = access_armory + +/datum/supply_packs/randomised/munitions/autoammo + name = "Automatic weapon ammunition crate" + num_contained = 6 + contains = list( + /obj/item/ammo_magazine/mc9mmt, + /obj/item/ammo_magazine/mc9mmt/rubber, + /obj/item/ammo_magazine/a556 + ) + cost = 25 + containertype = /obj/structure/closet/crate/secure + containername = "Automatic weapon ammunition crate" + access = access_armory + +/datum/supply_packs/munitions/beanbagammo + name = "Beanbag shells" + contains = list(/obj/item/weapon/storage/box/beanbags = 3) + cost = 25 + containertype = /obj/structure/closet/crate + containername = "Beanbag shells" + access = null diff --git a/code/datums/supplypacks/operations.dm b/code/datums/supplypacks/operations.dm deleted file mode 100644 index f64b21353e3..00000000000 --- a/code/datums/supplypacks/operations.dm +++ /dev/null @@ -1,75 +0,0 @@ -/* -* Here is where any supply packs -* related to operations live. -*/ -/datum/supply_packs/ops - group = "Operations" - -/datum/supply_packs/ops/mule - name = "Mulebot Crate" - contains = list() - cost = 20 - containertype = /obj/structure/largecrate/animal/mulebot - containername = "Mulebot Crate" - -/datum/supply_packs/ops/cargotrain - name = "Cargo Train Tug" - contains = list(/obj/vehicle/train/cargo/engine) - cost = 45 - containertype = /obj/structure/largecrate - containername = "Cargo Train Tug Crate" - -/datum/supply_packs/ops/cargotrailer - name = "Cargo Train Trolley" - contains = list(/obj/vehicle/train/cargo/trolley) - cost = 15 - containertype = /obj/structure/largecrate - containername = "Cargo Train Trolley Crate" - -/datum/supply_packs/ops/hoverpod - name = "Hoverpod Shipment" - contains = list() - cost = 80 - containertype = /obj/structure/largecrate/hoverpod - containername = "Hoverpod Crate" - -/datum/supply_packs/ops/artscrafts - name = "Arts and Crafts supplies" - contains = list( - /obj/item/weapon/storage/fancy/crayons, - /obj/item/device/camera, - /obj/item/device/camera_film = 2, - /obj/item/weapon/storage/photo_album, - /obj/item/weapon/packageWrap, - /obj/item/weapon/reagent_containers/glass/paint/red, - /obj/item/weapon/reagent_containers/glass/paint/green, - /obj/item/weapon/reagent_containers/glass/paint/blue, - /obj/item/weapon/reagent_containers/glass/paint/yellow, - /obj/item/weapon/reagent_containers/glass/paint/purple, - /obj/item/weapon/reagent_containers/glass/paint/black, - /obj/item/weapon/reagent_containers/glass/paint/white, - /obj/item/weapon/contraband/poster, - /obj/item/weapon/wrapping_paper = 3 - ) - cost = 10 - containertype = "/obj/structure/closet/crate" - containername = "Arts and Crafts crate" - -/datum/supply_packs/randomised/ops - group = "Operations" - -/datum/supply_packs/randomised/ops/webbing - name = "Webbing crate" - num_contained = 4 - contains = list( - /obj/item/clothing/accessory/storage/black_vest, - /obj/item/clothing/accessory/storage/brown_vest, - /obj/item/clothing/accessory/storage/white_vest, - /obj/item/clothing/accessory/storage/black_drop_pouches, - /obj/item/clothing/accessory/storage/brown_drop_pouches, - /obj/item/clothing/accessory/storage/white_drop_pouches, - /obj/item/clothing/accessory/storage/webbing - ) - cost = 15 - containertype = "/obj/structure/closet/crate" - containername = "Webbing crate" \ No newline at end of file diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm new file mode 100644 index 00000000000..7bfdaaeeb68 --- /dev/null +++ b/code/datums/supplypacks/recreation.dm @@ -0,0 +1,69 @@ +/* +* Here is where any supply packs +* related to recreation live. +*/ + + +/datum/supply_packs/recreation + group = "Recreation" + +/datum/supply_packs/randomised/recreation + group = "Recreation" + access = access_security + +/datum/supply_packs/recreation/foam_weapons + name = "Foam Weapon Crate" + contains = list( + /obj/item/weapon/material/sword/foam = 2, + /obj/item/weapon/material/twohanded/baseballbat/foam = 2, + /obj/item/weapon/material/twohanded/spear/foam = 2, + /obj/item/weapon/material/twohanded/fireaxe/foam = 2 + ) + cost = 50 + containertype = /obj/structure/closet/crate + containername = "foam weapon crate" + +/datum/supply_packs/recreation/lasertag + name = "Lasertag equipment" + contains = list( + /obj/item/weapon/gun/energy/lasertag/red, + /obj/item/clothing/suit/redtag, + /obj/item/weapon/gun/energy/lasertag/blue, + /obj/item/clothing/suit/bluetag + ) + containertype = /obj/structure/closet + containername = "Lasertag Closet" + cost = 10 + +/datum/supply_packs/recreation/artscrafts + name = "Arts and Crafts supplies" + contains = list( + /obj/item/weapon/storage/fancy/crayons, + /obj/item/device/camera, + /obj/item/device/camera_film = 2, + /obj/item/weapon/storage/photo_album, + /obj/item/weapon/packageWrap, + /obj/item/weapon/reagent_containers/glass/paint/red, + /obj/item/weapon/reagent_containers/glass/paint/green, + /obj/item/weapon/reagent_containers/glass/paint/blue, + /obj/item/weapon/reagent_containers/glass/paint/yellow, + /obj/item/weapon/reagent_containers/glass/paint/purple, + /obj/item/weapon/reagent_containers/glass/paint/black, + /obj/item/weapon/reagent_containers/glass/paint/white, + /obj/item/weapon/contraband/poster, + /obj/item/weapon/wrapping_paper = 3 + ) + cost = 10 + containertype = "/obj/structure/closet/crate" + containername = "Arts and Crafts crate" + +/datum/supply_packs/recreation/painters + name = "Station Painting Supplies" + cost = 10 + containername = "station painting supplies crate" + containertype = /obj/structure/closet/crate + contains = list( + /obj/item/device/pipe_painter = 2, + /obj/item/device/floor_painter = 2, + /obj/item/device/closet_painter = 2 + ) \ No newline at end of file diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm new file mode 100644 index 00000000000..80d315af10d --- /dev/null +++ b/code/datums/supplypacks/robotics.dm @@ -0,0 +1,104 @@ +/* +* Here is where any supply packs +* related to robotics tasks live. +*/ + + +/datum/supply_packs/robotics + group = "Robotics" + +/datum/supply_packs/randomised/robotics + group = "Robotics" + access = access_robotics + +/datum/supply_packs/robotics/robotics_assembly + name = "Robotics assembly crate" + contains = list( + /obj/item/device/assembly/prox_sensor = 3, + /obj/item/weapon/storage/toolbox/electrical, + /obj/item/device/flash = 4, + /obj/item/weapon/cell/high = 2 + ) + cost = 10 + containertype = /obj/structure/closet/crate/secure/gear + containername = "Robotics assembly" + access = access_robotics + +/datum/supply_packs/robotics/robolimbs_basic + name = "Basic robolimb blueprints" + contains = list( + /obj/item/weapon/disk/limb/morpheus, + /obj/item/weapon/disk/limb/xion + ) + cost = 15 + containertype = /obj/structure/closet/crate/secure/gear + containername = "Robolimb blueprints (basic)" + access = access_robotics + +/datum/supply_packs/robotics/robolimbs_adv + name = "All robolimb blueprints" + contains = list( + /obj/item/weapon/disk/limb/bishop, + /obj/item/weapon/disk/limb/hesphiastos, + /obj/item/weapon/disk/limb/morpheus, + /obj/item/weapon/disk/limb/veymed, + /obj/item/weapon/disk/limb/wardtakahashi, + /obj/item/weapon/disk/limb/xion, + /obj/item/weapon/disk/limb/zenghu, + ) + cost = 40 + containertype = /obj/structure/closet/crate/secure/gear + containername = "Robolimb blueprints (adv)" + access = access_robotics + +/datum/supply_packs/robotics/mecha_ripley + name = "Circuit Crate (\"Ripley\" APLU)" + contains = list( + /obj/item/weapon/book/manual/ripley_build_and_repair, + /obj/item/weapon/circuitboard/mecha/ripley/main, + /obj/item/weapon/circuitboard/mecha/ripley/peripherals + ) + cost = 25 + containertype = /obj/structure/closet/crate/secure + containername = "APLU \"Ripley\" Circuit Crate" + access = access_robotics + +/datum/supply_packs/robotics/mecha_odysseus + name = "Circuit Crate (\"Odysseus\")" + contains = list( + /obj/item/weapon/circuitboard/mecha/odysseus/peripherals, + /obj/item/weapon/circuitboard/mecha/odysseus/main + ) + cost = 25 + containertype = /obj/structure/closet/crate/secure + containername = "\"Odysseus\" Circuit Crate" + access = access_robotics + +/datum/supply_packs/randomised/robotics/exosuit_mod + num_contained = 1 + contains = list( + /obj/item/device/kit/paint/ripley, + /obj/item/device/kit/paint/ripley/death, + /obj/item/device/kit/paint/ripley/flames_red, + /obj/item/device/kit/paint/ripley/flames_blue + ) + name = "Random APLU modkit" + cost = 200 + containertype = /obj/structure/closet/crate + containername = "heavy crate" + +/datum/supply_packs/randomised/robotics/exosuit_mod/durand + contains = list( + /obj/item/device/kit/paint/durand, + /obj/item/device/kit/paint/durand/seraph, + /obj/item/device/kit/paint/durand/phazon + ) + name = "Random Durand exosuit modkit" + +/datum/supply_packs/randomised/robotics/exosuit_mod/gygax + contains = list( + /obj/item/device/kit/paint/gygax, + /obj/item/device/kit/paint/gygax/darkgygax, + /obj/item/device/kit/paint/gygax/recitence + ) + name = "Random Gygax exosuit modkit" \ No newline at end of file diff --git a/code/datums/supplypacks/science.dm b/code/datums/supplypacks/science.dm index 433caeff6f2..3beae30ddc4 100644 --- a/code/datums/supplypacks/science.dm +++ b/code/datums/supplypacks/science.dm @@ -3,55 +3,42 @@ * related to security tasks live */ /datum/supply_packs/sci - group = "Security" - -/datum/supply_packs/sci/virus - name = "Virus sample crate" - contains = list(/obj/item/weapon/virusdish/random = 4) - cost = 25 - containertype = "/obj/structure/closet/crate/secure" - containername = "Virus sample crate" - access = access_cmo + group = "Science" /datum/supply_packs/sci/coolanttank name = "Coolant tank crate" contains = list(/obj/structure/reagent_dispensers/coolanttank) - cost = 16 + cost = 15 containertype = /obj/structure/largecrate containername = "coolant tank crate" -/datum/supply_packs/sci/mecha_ripley - name = "Circuit Crate (\"Ripley\" APLU)" - contains = list( - /obj/item/weapon/book/manual/ripley_build_and_repair, - /obj/item/weapon/circuitboard/mecha/ripley/main, - /obj/item/weapon/circuitboard/mecha/ripley/peripherals - ) - cost = 30 - containertype = /obj/structure/closet/crate/secure - containername = "APLU \"Ripley\" Circuit Crate" - access = access_robotics - -/datum/supply_packs/sci/mecha_odysseus - name = "Circuit Crate (\"Odysseus\")" - contains = list( - /obj/item/weapon/circuitboard/mecha/odysseus/peripherals, - /obj/item/weapon/circuitboard/mecha/odysseus/main - ) - cost = 25 - containertype = /obj/structure/closet/crate/secure - containername = "\"Odysseus\" Circuit Crate" - access = access_robotics - /datum/supply_packs/sci/phoron - name = "Phoron assembly crate" + name = "Phoron research crate" contains = list( /obj/item/weapon/tank/phoron = 3, + /obj/item/weapon/tank/oxygen = 3, /obj/item/device/assembly/igniter = 3, /obj/item/device/assembly/prox_sensor = 3, - /obj/item/device/assembly/timer = 3 + /obj/item/device/assembly/timer = 3, + /obj/item/device/assembly/signaler = 3, + /obj/item/device/transfer_valve = 3 ) cost = 10 containertype = /obj/structure/closet/crate/secure/phoron containername = "Phoron assembly crate" - access = access_tox_storage \ No newline at end of file + access = access_tox_storage + +/datum/supply_packs/sci/exoticseeds + name = "Exotic seeds crate" + contains = list( + /obj/item/seeds/replicapod = 2, + /obj/item/seeds/libertymycelium, + /obj/item/seeds/reishimycelium, + /obj/item/seeds/random = 6, + /obj/item/seeds/kudzuseed + ) + cost = 15 + containertype = /obj/structure/closet/crate/hydroponics + containername = "Exotic Seeds crate" + access = access_hydroponics + diff --git a/code/datums/supplypacks/security.dm b/code/datums/supplypacks/security.dm index cc730151218..3099d8d9555 100644 --- a/code/datums/supplypacks/security.dm +++ b/code/datums/supplypacks/security.dm @@ -2,57 +2,16 @@ * Here is where any supply packs * related to security tasks live */ + + /datum/supply_packs/security group = "Security" access = access_security - -/datum/supply_packs/security/beanbagammo - name = "Beanbag shells" - contains = list(/obj/item/weapon/storage/box/beanbags = 3) - cost = 30 - containertype = /obj/structure/closet/crate - containername = "Beanbag shells" - access = null - -/datum/supply_packs/security/weapons - name = "Weapons crate" - contains = list( - /obj/item/weapon/melee/baton = 2, - /obj/item/weapon/gun/energy/gun = 2, - /obj/item/weapon/gun/energy/taser = 2, - /obj/item/weapon/gun/projectile/colt/detective = 2, - /obj/item/weapon/storage/box/flashbangs = 2 - ) - cost = 40 - containertype = /obj/structure/closet/crate/secure/weapon - containername = "Weapons crate" - -/datum/supply_packs/security/flareguns - name = "Flare guns crate" - contains = list( - /obj/item/weapon/gun/projectile/sec/flash, - /obj/item/ammo_magazine/c45m/flash, - /obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare, - /obj/item/weapon/storage/box/flashshells - ) - cost = 25 - containertype = /obj/structure/closet/crate/secure/weapon - containername = "Flare gun crate" - -/datum/supply_packs/security/eweapons - name = "Experimental weapons crate" - contains = list( - /obj/item/weapon/gun/energy/xray = 2, - /obj/item/weapon/shield/energy = 2) - cost = 125 - containertype = /obj/structure/closet/crate/secure/weapon - containername = "Experimental weapons crate" - access = access_armory /datum/supply_packs/randomised/security group = "Security" access = access_security - + /datum/supply_packs/randomised/security/armor num_contained = 5 contains = list( @@ -73,7 +32,7 @@ cost = 40 containertype = /obj/structure/closet/crate/secure containername = "Armor crate" - + /datum/supply_packs/security/riot_gear name = "Riot gear crate" contains = list( @@ -101,7 +60,7 @@ containertype = /obj/structure/closet/crate/secure containername = "riot armor set crate" access = access_armory - + /datum/supply_packs/security/ablative_armor name = "Ablative armor set crate" contains = list( @@ -114,7 +73,7 @@ containertype = /obj/structure/closet/crate/secure containername = "ablative armor set crate" access = access_armory - + /datum/supply_packs/security/bullet_resistant_armor name = "Bullet resistant armor set crate" contains = list( @@ -123,11 +82,11 @@ /obj/item/clothing/gloves/arm_guard/bulletproof, /obj/item/clothing/shoes/leg_guard/bulletproof ) - cost = 35 + cost = 40 containertype = /obj/structure/closet/crate/secure containername = "bullet resistant armor set crate" access = access_armory - + /datum/supply_packs/security/combat_armor name = "Combat armor set crate" contains = list( @@ -140,12 +99,12 @@ containertype = /obj/structure/closet/crate/secure containername = "combat armor set crate" access = access_armory - + /datum/supply_packs/security/tactical name = "Tactical suits" containertype = /obj/structure/closet/crate/secure containername = "Tactical Suit Locker" - cost = 60 + cost = 40 access = access_armory contains = list( /obj/item/clothing/under/tactical, @@ -165,90 +124,7 @@ /obj/item/clothing/shoes/jackboots, /obj/item/clothing/gloves/black ) - -/datum/supply_packs/security/energyweapons - name = "Energy weapons crate" - contains = list(/obj/item/weapon/gun/energy/laser = 3) - cost = 50 - containertype = /obj/structure/closet/crate/secure - containername = "energy weapons crate" - access = access_armory - -/datum/supply_packs/security/shotgun - name = "Shotgun crate" - contains = list( - /obj/item/weapon/storage/box/shotgunammo, - /obj/item/weapon/storage/box/shotgunshells, - /obj/item/weapon/gun/projectile/shotgun/pump/combat = 2 - ) - cost = 65 - containertype = /obj/structure/closet/crate/secure - containername = "Shotgun crate" - access = access_armory - -/datum/supply_packs/security/erifle - name = "Energy marksman crate" - contains = list(/obj/item/weapon/gun/energy/sniperrifle = 2) - cost = 90 - containertype = /obj/structure/closet/crate/secure - containername = "Energy marksman crate" - access = access_armory - -/datum/supply_packs/security/shotgunammo - name = "Ballistic ammunition crate" - contains = list( - /obj/item/weapon/storage/box/shotgunammo = 2, - /obj/item/weapon/storage/box/shotgunshells = 2 - ) - cost = 60 - containertype = /obj/structure/closet/crate/secure - containername = "ballistic ammunition crate" - access = access_armory - -/datum/supply_packs/security/ionweapons - name = "Electromagnetic weapons crate" - contains = list( - /obj/item/weapon/gun/energy/ionrifle = 2, - /obj/item/weapon/storage/box/emps - ) - cost = 50 - containertype = /obj/structure/closet/crate/secure - containername = "electromagnetic weapons crate" - access = access_armory - -/datum/supply_packs/randomised/security/automatic - name = "Automatic weapon crate" - num_contained = 2 - contains = list( - /obj/item/weapon/gun/projectile/automatic/wt550, - /obj/item/weapon/gun/projectile/automatic/z8 - ) - cost = 90 - containertype = /obj/structure/closet/crate/secure - containername = "Automatic weapon crate" - access = access_armory - -/datum/supply_packs/randomised/security/autoammo - name = "Automatic weapon ammunition crate" - num_contained = 6 - contains = list( - /obj/item/ammo_magazine/mc9mmt, - /obj/item/ammo_magazine/mc9mmt/rubber, - /obj/item/ammo_magazine/a556 - ) - cost = 20 - containertype = /obj/structure/closet/crate/secure - containername = "Automatic weapon ammunition crate" - access = access_armory - -/datum/supply_packs/security/energy_guns - name = "energy guns crate" - contains = list(/obj/item/weapon/gun/energy/gun = 2) - cost = 50 - containertype = /obj/structure/closet/crate/secure - containername = "energy guns crate" - access = access_armory - + /datum/supply_packs/security/securitybarriers name = "Security barrier crate" contains = list(/obj/machinery/deployable/barrier = 4) @@ -256,7 +132,7 @@ containertype = /obj/structure/closet/crate/secure/gear containername = "Security barrier crate" access = null - + /datum/supply_packs/security/securityshieldgen name = "Wall shield Generators" contains = list(/obj/machinery/shieldwallgen = 4) @@ -264,20 +140,7 @@ containertype = /obj/structure/closet/crate/secure containername = "wall shield generators crate" access = access_teleporter - -/datum/supply_packs/security/voidsuits - name = "Security voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/security = 2, - /obj/item/clothing/head/helmet/space/void/security = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/clothing/shoes/magboots = 2, - /obj/item/weapon/tank/oxygen = 2 - ) - cost = 55 - containertype = "/obj/structure/closet/crate/secure" - containername = "Security voidsuit crate" - + /datum/supply_packs/randomised/security/holster name = "Holster crate" num_contained = 4 @@ -290,7 +153,7 @@ cost = 15 containertype = "/obj/structure/closet/crate/secure" containername = "Holster crate" - + /datum/supply_packs/security/extragear name = "Security surplus equipment" contains = list( @@ -299,11 +162,11 @@ /obj/item/device/radio/headset/headset_sec/alt = 3, /obj/item/clothing/suit/storage/hooded/wintercoat/security = 3 ) - cost = 25 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Security surplus equipment" access = null - + /datum/supply_packs/security/detectivegear name = "Forensic investigation equipment" contains = list( @@ -326,11 +189,11 @@ /obj/item/device/flashlight/maglight, /obj/item/weapon/storage/briefcase/crimekit ) - cost = 40 + cost = 20 containertype = "/obj/structure/closet/crate/secure" containername = "Forensic equipment" access = access_forensics_lockers - + /datum/supply_packs/security/detectiveclothes name = "Investigation apparel" contains = list( @@ -347,11 +210,11 @@ /obj/item/clothing/accessory/badge/holo/detective = 2, /obj/item/clothing/gloves/black = 2 ) - cost = 20 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Investigation clothing" access = access_forensics_lockers - + /datum/supply_packs/security/officergear name = "Officer equipment" contains = list( @@ -377,19 +240,19 @@ /obj/item/weapon/gun/energy/taser, /obj/item/device/flashlight/maglight ) - cost = 30 + cost = 20 containertype = "/obj/structure/closet/crate/secure" containername = "Officer equipment" access = access_brig - + /datum/supply_packs/security/wardengear name = "Warden equipment" contains = list( /obj/item/clothing/suit/storage/vest/warden, /obj/item/clothing/under/rank/warden, /obj/item/clothing/under/rank/warden/corp, - /obj/item/clothing/suit/armor/vest/warden, - /obj/item/clothing/suit/armor/vest/warden/alt, + /obj/item/clothing/suit/storage/vest/wardencoat, + /obj/item/clothing/suit/storage/vest/wardencoat/alt, /obj/item/clothing/head/helmet/warden, /obj/item/weapon/cartridge/security, /obj/item/device/radio/headset/headset_sec, @@ -405,18 +268,18 @@ /obj/item/clothing/head/beret/sec/corporate/warden, /obj/item/device/flashlight/maglight ) - cost = 45 + cost = 20 containertype = "/obj/structure/closet/crate/secure" containername = "Warden equipment" access = access_armory - + /datum/supply_packs/security/headofsecgear name = "Head of security equipment" contains = list( /obj/item/clothing/head/helmet/HoS, /obj/item/clothing/suit/storage/vest/hos, /obj/item/clothing/under/rank/head_of_security/corp, - /obj/item/clothing/suit/armor/hos, + /obj/item/clothing/suit/storage/vest/hoscoat, /obj/item/clothing/head/helmet/HoS/dermal, /obj/item/weapon/cartridge/hos, /obj/item/device/radio/headset/heads/hos, @@ -431,11 +294,11 @@ /obj/item/clothing/head/beret/sec/corporate/hos, /obj/item/device/flashlight/maglight ) - cost = 65 + cost = 50 containertype = "/obj/structure/closet/crate/secure" containername = "Head of security equipment" access = access_hos - + /datum/supply_packs/security/securityclothing name = "Security uniform crate" contains = list( @@ -446,15 +309,14 @@ /obj/item/clothing/under/rank/security2 = 4, /obj/item/clothing/under/rank/warden, /obj/item/clothing/under/rank/head_of_security, - /obj/item/clothing/suit/armor/hos/jensen, /obj/item/clothing/head/soft/sec = 4, /obj/item/clothing/gloves/black = 4, /obj/item/weapon/storage/box/holobadge ) - cost = 20 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Security uniform crate" - + /datum/supply_packs/security/navybluesecurityclothing name = "Navy blue security uniform crate" contains = list( @@ -472,10 +334,10 @@ /obj/item/clothing/gloves/black = 4, /obj/item/weapon/storage/box/holobadge ) - cost = 20 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Navy blue security uniform crate" - + /datum/supply_packs/security/corporatesecurityclothing name = "Corporate security uniform crate" contains = list( @@ -492,35 +354,22 @@ /obj/item/clothing/gloves/black = 4, /obj/item/weapon/storage/box/holobadge ) - cost = 20 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Corporate security uniform crate" - + /datum/supply_packs/security/biosuit name = "Security biohazard gear" contains = list( - /obj/item/clothing/head/bio_hood/security, - /obj/item/clothing/under/rank/security, - /obj/item/clothing/suit/bio_suit/security, - /obj/item/clothing/shoes/white, - /obj/item/clothing/mask/gas, - /obj/item/weapon/tank/oxygen, - /obj/item/clothing/gloves/latex + /obj/item/clothing/head/bio_hood/security = 3, + /obj/item/clothing/under/rank/security = 3, + /obj/item/clothing/suit/bio_suit/security = 3, + /obj/item/clothing/shoes/white = 3, + /obj/item/clothing/mask/gas = 3, + /obj/item/weapon/tank/oxygen = 3, + /obj/item/clothing/gloves/latex, + /obj/item/weapon/storage/box/gloves ) - cost = 35 + cost = 50 containertype = "/obj/structure/closet/crate/secure" containername = "Security biohazard gear" - -/datum/supply_packs/security/bolt_rifles_competitive - name = "Competitive shooting crate" - contains = list( - /obj/item/device/assembly/timer, - /obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice = 2, - /obj/item/ammo_magazine/clip/a762/practice = 4, - /obj/item/target = 2, - /obj/item/target/alien = 2, - /obj/item/target/syndicate = 2 - ) - cost = 40 - containertype = /obj/structure/closet/crate/secure/weapon - containername = "Weapons crate" \ No newline at end of file diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm index a8c207e2933..a73ebc91ed6 100644 --- a/code/datums/supplypacks/supply.dm +++ b/code/datums/supplypacks/supply.dm @@ -2,9 +2,9 @@ * Here is where any supply packs * related to civilian tasks live */ -/datum/supply_packs/supply - group = "Supply" +/datum/supply_packs/supply + group = "Supplies" /datum/supply_packs/supply/food name = "Kitchen supply crate" @@ -19,14 +19,14 @@ cost = 10 containertype = /obj/structure/closet/crate/freezer containername = "Food crate" - + /datum/supply_packs/supply/toner name = "Toner cartridges" contains = list(/obj/item/device/toner = 6) cost = 10 containertype = /obj/structure/closet/crate containername = "Toner cartridges" - + /datum/supply_packs/supply/janitor name = "Janitorial supplies" contains = list( @@ -49,14 +49,21 @@ cost = 10 containertype = /obj/structure/closet/crate containername = "Janitorial supplies" - -/datum/supply_packs/supply/boxes - name = "Empty boxes" - contains = list(/obj/item/weapon/storage/box = 10) + +/datum/supply_packs/supply/shipping + name = "Shipping supplies" + contains = list( + /obj/item/stack/material/cardboard/fifty, + /obj/item/weapon/packageWrap = 4, + /obj/item/weapon/wrapping_paper = 2, + /obj/item/device/destTagger, + /obj/item/weapon/hand_labeler, + /obj/item/weapon/wirecutters, + /obj/item/weapon/tape_roll = 2) cost = 10 containertype = "/obj/structure/closet/crate" - containername = "Empty box crate" - + containername = "Shipping supplies crate" + /datum/supply_packs/supply/bureaucracy contains = list( /obj/item/weapon/clipboard = 2, @@ -76,28 +83,14 @@ cost = 15 containertype = /obj/structure/closet/crate containername = "Office supplies crate" - - + /datum/supply_packs/supply/spare_pda name = "Spare PDAs" cost = 10 containertype = /obj/structure/closet/crate containername = "Spare PDA crate" contains = list(/obj/item/device/pda = 3) - -/datum/supply_packs/supply/voidsuits - name = "Mining voidsuits" - contains = list( - /obj/item/clothing/suit/space/void/mining = 2, - /obj/item/clothing/head/helmet/space/void/mining = 2, - /obj/item/clothing/mask/breath = 2, - /obj/item/weapon/tank/oxygen = 2 - ) - cost = 35 - containertype = "/obj/structure/closet/crate/secure" - containername = "Mining voidsuit crate" - access = access_mining - + /datum/supply_packs/supply/minergear name = "Shaft miner equipment" contains = list( @@ -117,7 +110,28 @@ /obj/item/clothing/glasses/material, /obj/item/clothing/glasses/meson ) - cost = 15 + cost = 10 containertype = "/obj/structure/closet/crate/secure" containername = "Shaft miner equipment" - access = access_mining \ No newline at end of file + access = access_mining + +/datum/supply_packs/supply/mule + name = "Mulebot Crate" + contains = list() + cost = 20 + containertype = /obj/structure/largecrate/animal/mulebot + containername = "Mulebot Crate" + +/datum/supply_packs/supply/cargotrain + name = "Cargo Train Tug" + contains = list(/obj/vehicle/train/cargo/engine) + cost = 35 + containertype = /obj/structure/largecrate + containername = "Cargo Train Tug Crate" + +/datum/supply_packs/supply/cargotrailer + name = "Cargo Train Trolley" + contains = list(/obj/vehicle/train/cargo/trolley) + cost = 15 + containertype = /obj/structure/largecrate + containername = "Cargo Train Trolley Crate" \ No newline at end of file diff --git a/code/datums/supplypacks/supplypacks.dm b/code/datums/supplypacks/supplypacks.dm index a320c429054..77004ec21f0 100644 --- a/code/datums/supplypacks/supplypacks.dm +++ b/code/datums/supplypacks/supplypacks.dm @@ -5,13 +5,29 @@ //BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle. //NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points. -var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Atmospherics","Medical","Reagents","Reagent Cartridges","Science","Hydroponics", "Supply", "Miscellaneous") +//var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Atmospherics","Medical","Reagents","Reagent Cartridges","Science","Hydroponics", "Supply", "Miscellaneous") +var/list/all_supply_groups = list("Atmospherics", + "Costumes", + "Engineering", + "Hospitality", + "Hydroponics", + "Materials", + "Medical", + "Miscellaneous", + "Munitions", + "Reagents", + "Reagent Cartridges", + "Recreation", + "Robotics", + "Science", + "Security", + "Supplies", + "Voidsuits") /datum/supply_packs var/name = null var/list/contains = list() var/manifest = "" - var/amount = null var/cost = null var/containertype = null var/containername = null diff --git a/code/datums/supplypacks/voidsuits.dm b/code/datums/supplypacks/voidsuits.dm new file mode 100644 index 00000000000..6bf5c0f5b34 --- /dev/null +++ b/code/datums/supplypacks/voidsuits.dm @@ -0,0 +1,76 @@ +/* +* Here is where any supply packs +* related to voidsuits live. +*/ + + +/datum/supply_packs/voidsuits + group = "Voidsuits" + +/datum/supply_packs/voidsuits/atmos + name = "Atmospheric voidsuits" + contains = list( + /obj/item/clothing/suit/space/void/atmos = 2, + /obj/item/clothing/head/helmet/space/void/atmos = 2, + /obj/item/clothing/mask/breath = 2, + /obj/item/clothing/shoes/magboots = 2, + /obj/item/weapon/tank/oxygen = 2, + ) + cost = 40 + containertype = "/obj/structure/closet/crate/secure" + containername = "Atmospheric voidsuit crate" + access = access_atmospherics + +/datum/supply_packs/voidsuits/engineering + name = "Engineering voidsuits" + contains = list( + /obj/item/clothing/suit/space/void/engineering = 2, + /obj/item/clothing/head/helmet/space/void/engineering = 2, + /obj/item/clothing/mask/breath = 2, + /obj/item/clothing/shoes/magboots = 2, + /obj/item/weapon/tank/oxygen = 2 + ) + cost = 40 + containertype = "/obj/structure/closet/crate/secure" + containername = "Engineering voidsuit crate" + access = access_engine_equip + +/datum/supply_packs/voidsuits/medical + name = "Medical voidsuits" + contains = list( + /obj/item/clothing/suit/space/void/medical = 2, + /obj/item/clothing/head/helmet/space/void/medical = 2, + /obj/item/clothing/mask/breath = 2, + /obj/item/clothing/shoes/magboots = 2, + /obj/item/weapon/tank/oxygen = 2 + ) + cost = 40 + containertype = "/obj/structure/closet/crate/secure" + containername = "Medical voidsuit crate" + access = access_medical_equip + +/datum/supply_packs/voidsuits/security + name = "Security voidsuits" + contains = list( + /obj/item/clothing/suit/space/void/security = 2, + /obj/item/clothing/head/helmet/space/void/security = 2, + /obj/item/clothing/mask/breath = 2, + /obj/item/clothing/shoes/magboots = 2, + /obj/item/weapon/tank/oxygen = 2 + ) + cost = 40 + containertype = "/obj/structure/closet/crate/secure" + containername = "Security voidsuit crate" + +/datum/supply_packs/voidsuits/supply + name = "Mining voidsuits" + contains = list( + /obj/item/clothing/suit/space/void/mining = 2, + /obj/item/clothing/head/helmet/space/void/mining = 2, + /obj/item/clothing/mask/breath = 2, + /obj/item/weapon/tank/oxygen = 2 + ) + cost = 40 + containertype = "/obj/structure/closet/crate/secure" + containername = "Mining voidsuit crate" + access = access_mining \ No newline at end of file diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm index 8308cfc319e..756d5fc55be 100644 --- a/code/datums/uplink/ammunition.dm +++ b/code/datums/uplink/ammunition.dm @@ -2,8 +2,9 @@ * Ammunition * *************/ /datum/uplink_item/item/ammo - item_cost = 2 + item_cost = 20 category = /datum/uplink_category/ammunition + blacklisted = 1 /datum/uplink_item/item/ammo/a357 name = ".357 Speedloader" @@ -24,11 +25,12 @@ /datum/uplink_item/item/ammo/tommydrum name = "Tommygun Drum Magazine (.45)" path = /obj/item/ammo_magazine/tommydrum - item_cost = 4 // Buy 40 bullets, get 10 free! + item_cost = 40 // Buy 40 bullets, get 10 free! /datum/uplink_item/item/ammo/darts name = "Darts" path = /obj/item/ammo_magazine/chemdart + item_cost = 5 /datum/uplink_item/item/ammo/sniperammo name = "Anti-Materiel Rifle ammo box (14.5mm)" @@ -41,7 +43,7 @@ /datum/uplink_item/item/ammo/a556/ap name = "10rnd Rifle Magazine (5.56mm AP)" path = /obj/item/ammo_magazine/a556/ap - +/* /datum/uplink_item/item/ammo/a556m name = "20rnd Rifle Magazine (5.56mm)" path = /obj/item/ammo_magazine/a556m @@ -51,7 +53,7 @@ name = "20rnd Rifle Magazine (5.56mm AP)" path = /obj/item/ammo_magazine/a556m/ap item_cost = 4 - +*/ /datum/uplink_item/item/ammo/c762 name = "20rnd Rifle Magazine (7.62mm)" path = /obj/item/ammo_magazine/c762 @@ -63,7 +65,7 @@ /datum/uplink_item/item/ammo/s762 name = "10rnd Rifle Magazine (7.62mm)" path = /obj/item/ammo_magazine/s762 - item_cost = 1 // Half the capacity. + item_cost = 10 // Half the capacity. /datum/uplink_item/item/ammo/s762/ap name = "10rnd Rifle Magazine (7.62mm AP)" @@ -88,7 +90,7 @@ /datum/uplink_item/item/ammo/g12/beanbag name = "12g Auto-Shotgun Magazine (Beanbag)" path = /obj/item/ammo_magazine/g12/beanbag - item_cost = 1 // Discount due to it being LTL. + item_cost = 10 // Discount due to it being LTL. /datum/uplink_item/item/ammo/g12/pellet name = "12g Auto-Shotgun Magazine (Pellet)" @@ -97,7 +99,9 @@ /datum/uplink_item/item/ammo/g12/stun name = "12g Auto-Shotgun Magazine (Stun)" path = /obj/item/weapon/storage/box/stunshells + item_cost = 10 // Discount due to it being LTL. /datum/uplink_item/item/ammo/g12/flash name = "12g Auto-Shotgun Magazine (Flash)" - path = /obj/item/weapon/storage/box/flashshells \ No newline at end of file + path = /obj/item/weapon/storage/box/flashshells + item_cost = 10 // Discount due to it being LTL. \ No newline at end of file diff --git a/code/datums/uplink/announcements.dm b/code/datums/uplink/announcements.dm index 1b3cf75462c..58baa14e8eb 100644 --- a/code/datums/uplink/announcements.dm +++ b/code/datums/uplink/announcements.dm @@ -3,6 +3,7 @@ *****************/ /datum/uplink_item/abstract/announcements category = /datum/uplink_category/services + blacklisted = 1 /datum/uplink_item/abstract/announcements/buy(var/obj/item/device/uplink/U, var/mob/user) . = ..() @@ -10,7 +11,7 @@ log_and_message_admins("has triggered a falsified [src]", user) /datum/uplink_item/abstract/announcements/fake_centcom - item_cost = DEFAULT_TELECRYSTAL_AMOUNT / 2 + item_cost = DEFAULT_TELECRYSTAL_AMOUNT / 3 /datum/uplink_item/abstract/announcements/fake_centcom/New() ..() @@ -33,7 +34,7 @@ /datum/uplink_item/abstract/announcements/fake_crew_arrival name = "Crew Arrival Announcement/Records" desc = "Creates a fake crew arrival announcement as well as fake crew records, using your current appearance (including held items!) and worn id card. Trigger with care!" - item_cost = 4 + item_cost = 30 /datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user, var/list/args) if(!user) @@ -91,7 +92,7 @@ /datum/uplink_item/abstract/announcements/fake_ion_storm name = "Ion Storm Announcement" desc = "Interferes with the station's ion sensors. Triggers immediately upon investment." - item_cost = 1 + item_cost = 10 /datum/uplink_item/abstract/announcements/fake_ion_storm/get_goods(var/obj/item/device/uplink/U, var/loc) ion_storm_announcement() @@ -100,7 +101,7 @@ /datum/uplink_item/abstract/announcements/fake_radiation name = "Radiation Storm Announcement" desc = "Interferes with the station's radiation sensors. Triggers immediately upon investment." - item_cost = 3 + item_cost = 15 /datum/uplink_item/abstract/announcements/fake_radiation/get_goods(var/obj/item/device/uplink/U, var/loc) var/datum/event_meta/EM = new(EVENT_LEVEL_MUNDANE, "Fake Radiation Storm", add_to_queue = 0) diff --git a/code/datums/uplink/armor.dm b/code/datums/uplink/armor.dm index 30a41d8edb8..20367f39891 100644 --- a/code/datums/uplink/armor.dm +++ b/code/datums/uplink/armor.dm @@ -6,10 +6,10 @@ /datum/uplink_item/item/armor/combat name = "Combat Armor Set" - item_cost = 5 + item_cost = 60 path = /obj/item/weapon/storage/box/syndie_kit/combat_armor /datum/uplink_item/item/armor/heavy_vest name = "Heavy Armor Vest" - item_cost = 4 + item_cost = 40 path = /obj/item/clothing/suit/storage/vest/heavy/merc diff --git a/code/datums/uplink/badassery.dm b/code/datums/uplink/badassery.dm index b837625c8ab..62c570a972b 100644 --- a/code/datums/uplink/badassery.dm +++ b/code/datums/uplink/badassery.dm @@ -19,6 +19,7 @@ /datum/uplink_item/item/badassery/random_one name = "Random Item" desc = "Buys you one random item." + blacklisted = 1 /datum/uplink_item/item/badassery/random_one/buy(var/obj/item/device/uplink/U, var/mob/user) var/datum/uplink_item/item = default_uplink_selection.get_random_item(U.uses) @@ -53,17 +54,32 @@ ****************/ /datum/uplink_item/item/badassery/surplus name = "Surplus Crate" - item_cost = 40 - var/item_worth = 60 + item_cost = DEFAULT_TELECRYSTAL_AMOUNT + var/item_worth = 240 var/icon +/datum/uplink_item/item/badassery/surplus/merc2 + name = "Surplus Crate - 240 TC" + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 2 + item_worth = 540 + +/datum/uplink_item/item/badassery/surplus/merc4 + name = "Surplus Crate - 480 TC" + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 4 + item_worth = 1200 + +/datum/uplink_item/item/badassery/surplus/merc6 + name = "Surplus Crate - 720 TC" + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 6 + item_worth = 1980 + /datum/uplink_item/item/badassery/surplus/New() ..() desc = "A crate containing [item_worth] telecrystal\s worth of surplus leftovers." /datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/device/uplink/U, var/loc) var/obj/structure/largecrate/C = new(loc) - var/random_items = get_random_uplink_items(null, item_worth, C) + var/random_items = get_surplus_items(null, item_worth, C) for(var/datum/uplink_item/I in random_items) I.purchase_log(U) I.get_goods(U, C) diff --git a/code/datums/uplink/grenades.dm b/code/datums/uplink/grenades.dm index f7c6d1a0727..851a9043a68 100644 --- a/code/datums/uplink/grenades.dm +++ b/code/datums/uplink/grenades.dm @@ -5,31 +5,65 @@ category = /datum/uplink_category/grenades /datum/uplink_item/item/grenades/anti_photon - name = "5xPhoton Disruption Grenades" - item_cost = 2 + name = "7xPhoton Disruption Grenades" + item_cost = 10 path = /obj/item/weapon/storage/box/anti_photons -/datum/uplink_item/item/grenades/emp - name = "5xEMP Grenades" - item_cost = 3 - path = /obj/item/weapon/storage/box/emps - -/datum/uplink_item/item/grenades/smoke - name = "7xSmoke Grenades" +/datum/uplink_item/item/grenades/anti_photon_singular + name = "1xPhoton Disruption Grenade" item_cost = 2 - path = /obj/item/weapon/storage/box/smokes - -/datum/uplink_item/item/grenades/frags - name = "5xFrag Grenades" - item_cost = 6 - path = /obj/item/weapon/storage/box/frags - -/datum/uplink_item/item/grenades/flashbnags - name = "7xFlashbangs" - item_cost = 4 - path = /obj/item/weapon/storage/box/flashbangs + path = /obj/item/weapon/grenade/anti_photon /datum/uplink_item/item/grenades/metalfoam name = "7xMetal Foam Grenades" - item_cost = 3 - path = /obj/item/weapon/storage/box/metalfoam \ No newline at end of file + item_cost = 10 + path = /obj/item/weapon/storage/box/metalfoam + +/datum/uplink_item/item/grenades/metalfoam_singular + name = "1xMetal Foam Grenade" + item_cost = 2 + path = /obj/item/weapon/grenade/chem_grenade/metalfoam + +/datum/uplink_item/item/grenades/smoke + name = "7xSmoke Grenades" + item_cost = 10 + path = /obj/item/weapon/storage/box/smokes + +/datum/uplink_item/item/grenades/smoke_singular + name = "1xSmoke Grenade" + item_cost = 2 + path = /obj/item/weapon/grenade/smokebomb + +/datum/uplink_item/item/grenades/emp + name = "7xEMP Grenades" + item_cost = 50 + path = /obj/item/weapon/storage/box/emps + +/datum/uplink_item/item/grenades/emp_singular + name = "1xEMP Grenade" + item_cost = 10 + path = /obj/item/weapon/grenade/empgrenade + +/datum/uplink_item/item/grenades/frags + name = "7xFrag Grenades" + item_cost = 80 + path = /obj/item/weapon/storage/box/frags + +/datum/uplink_item/item/grenades/frags_half + name = "4x Frag Grenade" + item_cost = 50 + path = /obj/item/weapon/storage/box/frags_half_box + +/datum/uplink_item/item/grenades/frags_singular + name = "1x Frag Grenade" + item_cost = 15 + path = /obj/item/weapon/grenade/explosive + +/datum/uplink_item/item/grenades/flashbangs + name = "7xFlashbangs" + item_cost = 40 + path = /obj/item/weapon/storage/box/flashbangs + +/datum/uplink_item/item/grenades/flashbangs_singular + name = "1xFlashbang" + item_cost = 8 \ No newline at end of file diff --git a/code/datums/uplink/hardsuit_modules.dm b/code/datums/uplink/hardsuit_modules.dm index 66ecfb6bf9f..c58ae6c19f6 100644 --- a/code/datums/uplink/hardsuit_modules.dm +++ b/code/datums/uplink/hardsuit_modules.dm @@ -3,38 +3,54 @@ *******************/ /datum/uplink_item/item/hardsuit_modules category = /datum/uplink_category/hardsuit_modules + blacklisted = 1 /datum/uplink_item/item/hardsuit_modules/thermal name = "Thermal Scanner" - item_cost = 2 + item_cost = 15 path = /obj/item/rig_module/vision/thermal /datum/uplink_item/item/hardsuit_modules/energy_net name = "Net Projector" - item_cost = 3 + item_cost = 20 path = /obj/item/rig_module/fabricator/energy_net -/datum/uplink_item/item/ewar_voice +/datum/uplink_item/item/hardsuit_modules/plasma_cutter + name = "Plasma Cutter" + item_cost = 20 + path = /obj/item/rig_module/device/plasmacutter + +/datum/uplink_item/item/hardsuit_modules/ewar_voice name = "Electrowarfare Suite and Voice Synthesiser" - item_cost = 4 + item_cost = 30 path = /obj/item/weapon/storage/box/syndie_kit/ewar_voice /datum/uplink_item/item/hardsuit_modules/maneuvering_jets name = "Maneuvering Jets" - item_cost = 4 + item_cost = 30 path = /obj/item/rig_module/maneuvering_jets -/datum/uplink_item/item/hardsuit_modules/egun - name = "Mounted Energy Gun" - item_cost = 6 - path = /obj/item/rig_module/mounted/egun +/datum/uplink_item/item/hardsuit_modules/grenade_launcher + name = "Grenade Launcher" + item_cost = 40 + path = /obj/item/rig_module/grenade_launcher + +/datum/uplink_item/item/hardsuit_modules/chem_dispenser + name = "Chemical Injector" + item_cost = 40 + path = /obj/item/rig_module/chem_dispenser/injector /datum/uplink_item/item/hardsuit_modules/power_sink name = "Power Sink" - item_cost = 6 + item_cost = 45 path = /obj/item/rig_module/power_sink +/datum/uplink_item/item/hardsuit_modules/egun + name = "Mounted Energy Gun" + item_cost = 60 + path = /obj/item/rig_module/mounted/egun + /datum/uplink_item/item/hardsuit_modules/laser_canon name = "Mounted Laser Cannon" - item_cost = 8 - path = /obj/item/rig_module/mounted + item_cost = 80 + path = /obj/item/rig_module/mounted \ No newline at end of file diff --git a/code/datums/uplink/implants.dm b/code/datums/uplink/implants.dm index c4302464b63..7e3e2f30050 100644 --- a/code/datums/uplink/implants.dm +++ b/code/datums/uplink/implants.dm @@ -6,20 +6,20 @@ /datum/uplink_item/item/implants/imp_freedom name = "Freedom Implant" - item_cost = 3 + item_cost = 30 path = /obj/item/weapon/storage/box/syndie_kit/imp_freedom /datum/uplink_item/item/implants/imp_compress name = "Compressed Matter Implant" - item_cost = 4 + item_cost = 30 path = /obj/item/weapon/storage/box/syndie_kit/imp_compress /datum/uplink_item/item/implants/imp_explosive name = "Explosive Implant (DANGER!)" - item_cost = 6 + item_cost = 60 path = /obj/item/weapon/storage/box/syndie_kit/imp_explosive /datum/uplink_item/item/implants/imp_uplink name = "Uplink Implant" //Original name: "Uplink Implant (Contains 5 Telecrystals)" - item_cost = 5 //Original cost: 10 + item_cost = 50 //Original cost: 10 path = /obj/item/weapon/storage/box/syndie_kit/imp_uplink diff --git a/code/datums/uplink/medical.dm b/code/datums/uplink/medical.dm index d14ca10a07a..381221127df 100644 --- a/code/datums/uplink/medical.dm +++ b/code/datums/uplink/medical.dm @@ -4,33 +4,37 @@ /datum/uplink_item/item/medical category = /datum/uplink_category/medical +/datum/uplink_item/item/medical/onegativeblood + name = "O- Blood Pack" + item_cost = 5 + path = /obj/item/weapon/reagent_containers/blood/OMinus + /datum/uplink_item/item/medical/sinpockets name = "Box of Sin-Pockets" - item_cost = 1 + item_cost = 5 path = /obj/item/weapon/storage/box/sinpockets -/datum/uplink_item/item/medical/surgery - name = "Surgery kit" - item_cost = 6 - path = /obj/item/weapon/storage/firstaid/surgery - -/datum/uplink_item/item/medical/combat - name = "Combat medical kit" - item_cost = 6 - path = /obj/item/weapon/storage/firstaid/combat - -/datum/uplink_item/item/medical/freezer - name = "Portable Freezer" - item_cost = 2 - path = /obj/item/weapon/storage/box/freezer - /datum/uplink_item/item/medical/ambrosiaseeds name = "Box of 7x ambrosia seed packets" - item_cost = 1 + item_cost = 5 path = /obj/item/weapon/storage/box/ambrosia /datum/uplink_item/item/medical/ambrosiadeusseeds name = "Box of 7x ambrosia deus seed packets" - item_cost = 2 + item_cost = 10 path = /obj/item/weapon/storage/box/ambrosiadeus +/datum/uplink_item/item/medical/freezer + name = "Portable Freezer" + item_cost = 10 + path = /obj/item/weapon/storage/box/freezer + +/datum/uplink_item/item/medical/surgery + name = "Surgery kit" + item_cost = 45 + path = /obj/item/weapon/storage/firstaid/surgery + +/datum/uplink_item/item/medical/combat + name = "Combat medical kit" + item_cost = 60 + path = /obj/item/weapon/storage/firstaid/combat diff --git a/code/datums/uplink/stealth_items.dm b/code/datums/uplink/stealth_items.dm index 31364a09539..23e0593cad0 100644 --- a/code/datums/uplink/stealth_items.dm +++ b/code/datums/uplink/stealth_items.dm @@ -6,40 +6,35 @@ /datum/uplink_item/item/stealth_items/id name = "Agent ID card" - item_cost = 2 + item_cost = 10 path = /obj/item/weapon/card/id/syndicate /datum/uplink_item/item/stealth_items/syndigaloshes name = "No-Slip Shoes" - item_cost = 2 + item_cost = 10 path = /obj/item/clothing/shoes/syndigaloshes /datum/uplink_item/item/stealth_items/spy name = "Bug Kit" - item_cost = 2 + item_cost = 10 path = /obj/item/weapon/storage/box/syndie_kit/spy /datum/uplink_item/item/stealth_items/chameleon_kit name = "Chameleon Kit" - item_cost = 3 + item_cost = 15 path = /obj/item/weapon/storage/box/syndie_kit/chameleon /datum/uplink_item/item/stealth_items/chameleon_projector name = "Chameleon-Projector" - item_cost = 4 - path = /obj/item/device/chameleon - -/datum/uplink_item/item/stealth_items/chameleon_projector - name = "Chameleon-Projector" - item_cost = 4 + item_cost = 30 path = /obj/item/device/chameleon /datum/uplink_item/item/stealth_items/voice name = "Voice Changer" - item_cost = 4 + item_cost = 15 path = /obj/item/clothing/mask/gas/voice /datum/uplink_item/item/stealth_items/camera_floppy name = "Camera Network Access - Floppy" - item_cost = 6 + item_cost = 15 path = /obj/item/weapon/disk/file/cameras/syndicate diff --git a/code/datums/uplink/stealthy_weapons.dm b/code/datums/uplink/stealthy_weapons.dm index ead34c56461..5576ebcac58 100644 --- a/code/datums/uplink/stealthy_weapons.dm +++ b/code/datums/uplink/stealthy_weapons.dm @@ -6,30 +6,30 @@ /datum/uplink_item/item/stealthy_weapons/soap name = "Subversive Soap" - item_cost = 1 + item_cost = 5 path = /obj/item/weapon/soap/syndie /datum/uplink_item/item/stealthy_weapons/concealed_cane name = "Concealed Cane Sword" - item_cost = 1 + item_cost = 10 path = /obj/item/weapon/cane/concealed /datum/uplink_item/item/stealthy_weapons/detomatix name = "Detomatix PDA Cartridge" - item_cost = 3 + item_cost = 30 path = /obj/item/weapon/cartridge/syndicate /datum/uplink_item/item/stealthy_weapons/parapen name = "Paralysis Pen" - item_cost = 3 + item_cost = 40 path = /obj/item/weapon/pen/reagent/paralysis /datum/uplink_item/item/stealthy_weapons/cigarette_kit name = "Cigarette Kit" - item_cost = 3 + item_cost = 10 path = /obj/item/weapon/storage/box/syndie_kit/cigarette /datum/uplink_item/item/stealthy_weapons/random_toxin name = "Random Toxin - Beaker" - item_cost = 3 + item_cost = 10 path = /obj/item/weapon/storage/box/syndie_kit/toxin diff --git a/code/datums/uplink/telecrystals.dm b/code/datums/uplink/telecrystals.dm new file mode 100644 index 00000000000..f814b55232d --- /dev/null +++ b/code/datums/uplink/telecrystals.dm @@ -0,0 +1,39 @@ +/*************** +* Telecrystals * +***************/ +/datum/uplink_item/item/telecrystal + category = /datum/uplink_category/telecrystals + blacklisted = 1 + +/datum/uplink_item/item/telecrystal/get_goods(var/obj/item/device/uplink/U, var/loc) + return new /obj/item/stack/telecrystal(loc, cost(U.uses)) + +/datum/uplink_item/item/telecrystal/one + name = "Telecrystal - 01" + item_cost = 1 + +/datum/uplink_item/item/telecrystal/five + name = "Telecrystals - 05" + item_cost = 5 + +/datum/uplink_item/item/telecrystal/ten + name = "Telecrystals - 10" + item_cost = 10 + +/datum/uplink_item/item/telecrystal/twentyfive + name = "Telecrystals - 25" + item_cost = 25 + +/datum/uplink_item/item/telecrystal/fifty + name = "Telecrystals - 50" + item_cost = 50 + +/datum/uplink_item/item/telecrystal/onehundred + name = "Telecrystals - 100" + item_cost = 100 + +/datum/uplink_item/item/telecrystal/all + name = "Telecrystals - Empty Uplink" + +/datum/uplink_item/item/telecrystal/all/cost(var/telecrystals) + return max(1, telecrystals) \ No newline at end of file diff --git a/code/datums/uplink/tools.dm b/code/datums/uplink/tools.dm index fb1b52c0681..17203e3d5df 100644 --- a/code/datums/uplink/tools.dm +++ b/code/datums/uplink/tools.dm @@ -4,82 +4,112 @@ /datum/uplink_item/item/tools category = /datum/uplink_category/tools +/datum/uplink_item/item/tools/binoculars + name = "Binoculars" + item_cost = 5 + path = /obj/item/device/binoculars + /datum/uplink_item/item/tools/toolbox name = "Fully Loaded Toolbox" - item_cost = 1 + item_cost = 10 path = /obj/item/weapon/storage/toolbox/syndicate -/datum/uplink_item/item/tools/plastique - name = "C-4 (Destroys walls)" - item_cost = 2 - path = /obj/item/weapon/plastique - -/datum/uplink_item/item/tools/encryptionkey_radio - name = "Encrypted Radio Channel Key" - item_cost = 2 - path = /obj/item/device/encryptionkey/syndicate - -/datum/uplink_item/item/tools/encryptionkey_binary - name = "Binary Translator Key" - item_cost = 3 - path = /obj/item/device/encryptionkey/binary - -/datum/uplink_item/item/tools/emag - name = "Cryptographic Sequencer" - item_cost = 3 - path = /obj/item/weapon/card/emag - /datum/uplink_item/item/tools/clerical name = "Morphic Clerical Kit" - item_cost = 3 + item_cost = 10 path = /obj/item/weapon/storage/box/syndie_kit/clerical +/datum/uplink_item/item/tools/encryptionkey_radio + name = "Encrypted Radio Channel Key" + item_cost = 10 + path = /obj/item/device/encryptionkey/syndicate + +/datum/uplink_item/item/tools/money + name = "Operations Funding" + item_cost = 10 + path = /obj/item/weapon/storage/secure/briefcase/money + desc = "A briefcase with 10,000 untraceable thalers for funding your sneaky activities." + +/datum/uplink_item/item/tools/plastique + name = "C-4 (Destroys walls)" + item_cost = 10 + path = /obj/item/weapon/plastique + +/datum/uplink_item/item/tools/duffle + name = "Black Duffle Bag" + item_cost = 10 + path = /obj/item/weapon/storage/backpack/dufflebag/syndie + +/datum/uplink_item/item/tools/duffle/med + name = "Black Medical Duffle Bag" + path = /obj/item/weapon/storage/backpack/dufflebag/syndie/med + +/datum/uplink_item/item/tools/duffle/ammo + name = "Black Ammunition Duffle Bag" + path = /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo + /datum/uplink_item/item/tools/space_suit name = "Space Suit" - item_cost = 3 + item_cost = 15 path = /obj/item/weapon/storage/box/syndie_kit/space +/datum/uplink_item/item/tools/encryptionkey_binary + name = "Binary Translator Key" + item_cost = 15 + path = /obj/item/device/encryptionkey/binary + +/datum/uplink_item/item/tools/packagebomb + name = "Package Bomb (Small)" + item_cost = 20 + path = /obj/item/weapon/storage/box/syndie_kit/demolitions + +/datum/uplink_item/item/tools/hacking_tool + name = "Door Hacking Tool" + item_cost = 20 + path = /obj/item/device/multitool/hacktool + desc = "Appears and functions as a standard multitool until the mode is toggled by applying a screwdriver appropriately. \ + When in hacking mode this device will grant full access to any standard airlock within 20 to 40 seconds. \ + This device will also be able to immediately access the last 6 to 8 hacked airlocks." + +/datum/uplink_item/item/tools/emag + name = "Cryptographic Sequencer" + item_cost = 30 + path = /obj/item/weapon/card/emag + /datum/uplink_item/item/tools/thermal name = "Thermal Imaging Glasses" - item_cost = 3 + item_cost = 30 path = /obj/item/clothing/glasses/thermal/syndi /datum/uplink_item/item/tools/powersink name = "Powersink (DANGER!)" - item_cost = 5 + item_cost = 40 path = /obj/item/device/powersink +/datum/uplink_item/item/tools/packagebomb/large + name = "Package Bomb (Large)" + item_cost = 40 + path = /obj/item/weapon/storage/box/syndie_kit/demolitions_heavy + +/* +/datum/uplink_item/item/tools/packagebomb/huge + name = "Package Bomb (Huge) + item_cost = 60 + path = /obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy +*/ + /datum/uplink_item/item/tools/ai_module name = "Hacked AI Upload Module" - item_cost = 7 + item_cost = 60 path = /obj/item/weapon/aiModule/syndicate /datum/uplink_item/item/tools/supply_beacon name = "Hacked Supply Beacon (DANGER!)" - item_cost = 7 + item_cost = 60 path = /obj/item/supply_beacon /datum/uplink_item/item/tools/teleporter name = "Teleporter Circuit Board" - item_cost = 20 + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 1.5 path = /obj/item/weapon/circuitboard/teleporter - -/datum/uplink_item/item/tools/money - name = "Operations Funding" - item_cost = 3 - path = /obj/item/weapon/storage/secure/briefcase/money - desc = "A briefcase with 10,000 untraceable thalers for funding your sneaky activities." - -/datum/uplink_item/item/tools/crystal - name = "Tradable Crystal" - item_cost = 1 - path = /obj/item/device/telecrystal - desc = "A telecrystal that can be transferred from one user to another. Be sure not to give it to just anyone." - -/datum/uplink_item/item/tools/hacking_tool - name = "Door Hacking Tool" - item_cost = 2 - path = /obj/item/device/multitool/hacktool - desc = "Appears and functions as a standard multitool until the mode is toggled by applying a screwdriver appropriately. \ - When in hacking mode this device will grant full access to any standard airlock within 20 to 40 seconds. \ - This device will also be able to immediately access the last 6 to 8 hacked airlocks." \ No newline at end of file + blacklisted = 1 \ No newline at end of file diff --git a/code/datums/uplink/uplink_categories.dm b/code/datums/uplink/uplink_categories.dm index 6e222b764b2..7c65747f0b6 100644 --- a/code/datums/uplink/uplink_categories.dm +++ b/code/datums/uplink/uplink_categories.dm @@ -46,4 +46,7 @@ datum/uplink_category/ammunition name = "Devices and Tools" /datum/uplink_category/visible_weapons - name = "Highly Visible and Dangerous Weapons" \ No newline at end of file + name = "Highly Visible and Dangerous Weapons" + +/datum/uplink_category/telecrystals + name = "Telecrystals" \ No newline at end of file diff --git a/code/datums/uplink/uplink_items.dm b/code/datums/uplink/uplink_items.dm index 32a7d0cffb5..0cb7ce1d1d4 100644 --- a/code/datums/uplink/uplink_items.dm +++ b/code/datums/uplink/uplink_items.dm @@ -31,6 +31,7 @@ var/datum/uplink/uplink = new() var/item_cost = 0 var/datum/uplink_category/category // Item category var/list/datum/antagonist/antag_roles // Antag roles this item is displayed to. If empty, display to all. + var/blacklisted = 0 /datum/uplink_item/item var/path = null @@ -172,3 +173,15 @@ datum/uplink_item/dd_SortValue() remaining_TC -= I.cost(remaining_TC, U) return bought_items + +/proc/get_surplus_items(var/obj/item/device/uplink/U, var/remaining_TC, var/loc) + var/list/bought_items = list() + var/override = 1 + while(remaining_TC) + var/datum/uplink_item/I = all_uplink_selection.get_random_item(remaining_TC, U, bought_items, override) + if(!I) + break + bought_items += I + remaining_TC -= I.cost(remaining_TC, U) + + return bought_items diff --git a/code/datums/uplink/visible_weapons.dm b/code/datums/uplink/visible_weapons.dm index c0e8d3aacad..41a1779322b 100644 --- a/code/datums/uplink/visible_weapons.dm +++ b/code/datums/uplink/visible_weapons.dm @@ -4,39 +4,49 @@ /datum/uplink_item/item/visible_weapons category = /datum/uplink_category/visible_weapons +/datum/uplink_item/item/visible_weapons/tactknife + name = "Tactical Knife" + item_cost = 10 + path = /obj/item/weapon/material/hatchet/tacknife + +/datum/uplink_item/item/visible_weapons/combatknife + name = "Combat Knife" + item_cost = 20 + path = /obj/item/weapon/material/hatchet/tacknife/combatknife + /datum/uplink_item/item/visible_weapons/energy_sword name = "Energy Sword" - item_cost = 4 + item_cost = 40 path = /obj/item/weapon/melee/energy/sword /datum/uplink_item/item/visible_weapons/dartgun name = "Dart Gun" - item_cost = 5 + item_cost = 30 path = /obj/item/weapon/gun/projectile/dartgun /datum/uplink_item/item/visible_weapons/crossbow name = "Energy Crossbow" - item_cost = 5 + item_cost = 40 path = /obj/item/weapon/gun/energy/crossbow /datum/uplink_item/item/visible_weapons/silenced_45 name = "Silenced .45" - item_cost = 5 + item_cost = 40 path = /obj/item/weapon/gun/projectile/silenced /datum/uplink_item/item/visible_weapons/riggedlaser name = "Exosuit Rigged Laser" - item_cost = 6 + item_cost = 60 path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser /datum/uplink_item/item/visible_weapons/revolver name = "Revolver" - item_cost = 6 + item_cost = 70 path = /obj/item/weapon/gun/projectile/revolver /datum/uplink_item/item/visible_weapons/Derringer name = ".357 Derringer Pistol" - item_cost = 5 + item_cost = 40 path = /obj/item/weapon/gun/projectile/derringer /datum/uplink_item/item/visible_weapons/heavysniper @@ -46,61 +56,51 @@ /datum/uplink_item/item/visible_weapons/tommygun name = "Tommygun (.45)" // We're keeping this because it's CLASSY. -Spades - item_cost = 7 + item_cost = 60 path = /obj/item/weapon/gun/projectile/automatic/tommygun //These are for traitors (or other antags, perhaps) to have the option of purchasing some merc gear. /datum/uplink_item/item/visible_weapons/submachinegun name = "Submachine Gun (10mm)" - item_cost = 6 + item_cost = 60 path = /obj/item/weapon/gun/projectile/automatic/c20r /datum/uplink_item/item/visible_weapons/assaultrifle name = "Assault Rifle (7.62mm)" - item_cost = 7 + item_cost = 75 path = /obj/item/weapon/gun/projectile/automatic/sts35 -/datum/uplink_item/item/visible_weapons/bullpuprifle +/*/datum/uplink_item/item/visible_weapons/bullpuprifle name = "Assault Rifle (5.56mm)" item_cost = 7 path = /obj/item/weapon/gun/projectile/automatic/carbine - +*/ /datum/uplink_item/item/visible_weapons/combatshotgun name = "Combat Shotgun" - item_cost = 7 + item_cost = 75 path = /obj/item/weapon/gun/projectile/shotgun/pump/combat /datum/uplink_item/item/visible_weapons/egun name = "Energy Gun" - item_cost = 5 + item_cost = 60 path = /obj/item/weapon/gun/energy/gun /datum/uplink_item/item/visible_weapons/lasercannon name = "Laser Cannon" - item_cost = 6 + item_cost = 60 path = /obj/item/weapon/gun/energy/lasercannon /datum/uplink_item/item/visible_weapons/lasercarbine name = "Laser Carbine" - item_cost = 7 + item_cost = 75 path = /obj/item/weapon/gun/energy/laser /datum/uplink_item/item/visible_weapons/ionrifle name = "Ion Rifle" - item_cost = 5 + item_cost = 40 path = /obj/item/weapon/gun/energy/ionrifle /datum/uplink_item/item/visible_weapons/xray name = "Xray Gun" - item_cost = 7 - path = /obj/item/weapon/gun/energy/xray - -/datum/uplink_item/item/visible_weapons/tactknife - name = "Tactical Knife" - item_cost = 1 - path = /obj/item/weapon/material/hatchet/tacknife - -/datum/uplink_item/item/visible_weapons/combatknife - name = "Combat Knife" - item_cost = 3 - path = /obj/item/weapon/material/hatchet/tacknife/combatknife \ No newline at end of file + item_cost = 85 + path = /obj/item/weapon/gun/energy/xray \ No newline at end of file diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 3300da0cebf..291cef46822 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -190,9 +190,8 @@ var/global/list/PDA_Manifest = list() /obj/item/weapon/beach_ball icon = 'icons/misc/beach.dmi' - icon_state = "ball" + icon_state = "beachball" name = "beach ball" - item_state = "beachball" density = 0 anchored = 0 w_class = 4 diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 77779bafcfd..bcf0573367b 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -79,7 +79,10 @@ desc = "A cane used by a true gentlemen. Or a clown." icon = 'icons/obj/weapons.dmi' icon_state = "cane" - item_state = "stick" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) flags = CONDUCT force = 5.0 throwforce = 7.0 @@ -135,7 +138,6 @@ desc = "A cane used by the blind." icon = 'icons/obj/weapons.dmi' icon_state = "whitecane" - item_state = "whitecane" /obj/item/weapon/disk name = "disk" @@ -245,6 +247,10 @@ desc = "Apparently a staff used by the wizard." icon = 'icons/obj/wizard.dmi' icon_state = "staff" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) force = 3.0 throwforce = 5.0 throw_speed = 1 @@ -263,14 +269,13 @@ desc = "An ebony can with an ivory tip." icon = 'icons/obj/weapons.dmi' icon_state = "cane" - item_state = "stick" /obj/item/weapon/staff/stick name = "stick" desc = "A great tool to drag someone else's drinks across the bar." icon = 'icons/obj/weapons.dmi' icon_state = "stick" - item_state = "stick" + item_state = "cane" force = 3.0 throwforce = 5.0 throw_speed = 1 @@ -380,7 +385,6 @@ name = "rapid part exchange device" desc = "Special mechanical module made to store, sort, and apply standard machine parts." icon_state = "RPED" - item_state = "RPED" w_class = 5 can_hold = list(/obj/item/weapon/stock_parts) storage_slots = 50 diff --git a/code/defines/procs/hud.dm b/code/defines/procs/hud.dm index 78fdb6dc7bb..4f0aed0d356 100644 --- a/code/defines/procs/hud.dm +++ b/code/defines/procs/hud.dm @@ -2,6 +2,9 @@ Use the regular_hud_updates() proc before process_med_hud(mob) or process_sec_hud(mob) so the HUD updates properly! */ +// hud overlay image type, used for clearing client.images precisely +/image/hud_overlay + //Medical HUD outputs. Called by the Life() proc of the mob using it, usually. proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt) if(!can_process_hud(M)) @@ -63,9 +66,8 @@ proc/can_process_hud(var/mob/M) //Deletes the current HUD images so they can be refreshed with new ones. mob/proc/handle_regular_hud_updates() //Used in the life.dm of mobs that can use HUDs. if(client) - for(var/image/hud in client.images) - if(copytext(hud.icon_state,1,4) == "hud") - client.images -= hud + for(var/image/hud_overlay/hud in client.images) + client.images -= hud med_hud_users -= src sec_hud_users -= src diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index d91242ea8b5..9bf83d2d6d7 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -99,19 +99,26 @@ // Prune restricted status. Broke it up for readability. // Note that this is done before jobs are handed out. - for(var/datum/mind/player in ticker.mode.get_players_for_role(role_type, id)) + candidates = ticker.mode.get_players_for_role(role_type, id, ghosts_only) + for(var/datum/mind/player in candidates) if(ghosts_only && !istype(player.current, /mob/observer/dead)) - log_debug("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role!") + candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: Only ghosts may join as this role! They have been removed from the draft.") + else if(istype(player.current, /mob/living/voice)) + candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They are only a communicator voice. They have been removed from the draft.") else if(player.special_role) - log_debug("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])!") + candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They already have a special role ([player.special_role])! They have been removed from the draft.") else if (player in pending_antagonists) - log_debug("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role!") + candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They have already been selected for this role! They have been removed from the draft.") else if(!can_become_antag(player)) - log_debug("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role!") + candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They are blacklisted for this role! They have been removed from the draft.") else if(player_is_antag(player)) - log_debug("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist!") - else - candidates += player + candidates -= player + log_debug("[key_name(player)] is not eligible to become a [role_text]: They are already an antagonist! They have been removed from the draft.") return candidates diff --git a/code/game/antagonist/outsider/technomancer.dm b/code/game/antagonist/outsider/technomancer.dm new file mode 100644 index 00000000000..88a27cf7ede --- /dev/null +++ b/code/game/antagonist/outsider/technomancer.dm @@ -0,0 +1,83 @@ +var/datum/antagonist/technomancer/technomancers + +/datum/antagonist/technomancer + id = MODE_TECHNOMANCER + role_type = BE_WIZARD + role_text = "Technomancer" + role_text_plural = "Technomancers" + bantype = "wizard" + landmark_id = "wizard" + welcome_text = "You will need to purchase functions and perhaps some equipment from the various machines around your \ + base. Choose your technological arsenal carefully. Remember that without the core on your back, your functions are \ + powerless, and therefore you will be as well.
\ + In your pockets you will find a one-time use teleport device. Use it to leave the base and go to the colony, when you are ready." + flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_SET_APPEARANCE | ANTAG_VOTABLE + antaghud_indicator = "hudwizard" + + hard_cap = 1 + hard_cap_round = 3 + initial_spawn_req = 1 + initial_spawn_target = 1 + + id_type = /obj/item/weapon/card/id/syndicate + +/datum/antagonist/technomancer/New() + ..() + technomancers = src + +/datum/antagonist/technomancer/update_antag_mob(var/datum/mind/technomancer) + ..() + technomancer.store_memory("Remember: Do not forget to purchase the functions and equipment you need.") + technomancer.current.real_name = "[pick(wizard_first)] [pick(wizard_second)]" + technomancer.current.name = technomancer.current.real_name + +/datum/antagonist/technomancer/equip(var/mob/living/carbon/human/technomancer_mob) + + if(!..()) + return 0 + + technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/under/technomancer/master(technomancer_mob), slot_w_uniform) + create_id("Technomagus", technomancer_mob) + technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/disposable_teleporter/free(technomancer_mob), slot_r_store) + technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/technomancer_catalog(technomancer_mob), slot_l_store) + technomancer_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(technomancer_mob), slot_l_ear) + var/obj/item/weapon/technomancer_core/core = new /obj/item/weapon/technomancer_core(technomancer_mob) + technomancer_mob.equip_to_slot_or_del(core, slot_back) + technomancer_belongings.Add(core) // So it can be Tracked. + technomancer_mob.equip_to_slot_or_del(new /obj/item/device/flashlight(technomancer_mob), slot_belt) + technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(technomancer_mob), slot_shoes) + technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/head/technomancer/master(technomancer_mob), slot_head) + technomancer_mob.update_icons() + return 1 + +/datum/antagonist/technomancer/proc/equip_apprentice(var/mob/living/carbon/human/technomancer_mob) + + technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/under/technomancer/apprentice(technomancer_mob), slot_w_uniform) + create_id("Techno-apprentice", technomancer_mob) + technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/disposable_teleporter/free(technomancer_mob), slot_r_store) + + var/obj/item/weapon/technomancer_catalog/apprentice/catalog = new /obj/item/weapon/technomancer_catalog/apprentice() + catalog.bind_to_owner(technomancer_mob) + technomancer_mob.equip_to_slot_or_del(catalog, slot_l_store) + + technomancer_mob.equip_to_slot_or_del(new /obj/item/device/radio/headset(technomancer_mob), slot_l_ear) + var/obj/item/weapon/technomancer_core/core = new /obj/item/weapon/technomancer_core(technomancer_mob) + technomancer_mob.equip_to_slot_or_del(core, slot_back) + technomancer_belongings.Add(core) // So it can be Tracked. + technomancer_mob.equip_to_slot_or_del(new /obj/item/device/flashlight(technomancer_mob), slot_belt) + technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(technomancer_mob), slot_shoes) + technomancer_mob.equip_to_slot_or_del(new /obj/item/clothing/head/technomancer/apprentice(technomancer_mob), slot_head) + technomancer_mob.update_icons() + return 1 + +/datum/antagonist/technomancer/check_victory() + var/survivor + for(var/datum/mind/player in current_antagonists) + if(!player.current || player.current.stat == DEAD) + continue + survivor = 1 + break + if(!survivor) + feedback_set_details("round_end_result","loss - technomancer killed") + world << "The [(current_antagonists.len>1)?"[role_text_plural] have":"[role_text] has"] been \ + killed!" diff --git a/code/game/antagonist/outsider/trader.dm b/code/game/antagonist/outsider/trader.dm new file mode 100644 index 00000000000..aaf573cd202 --- /dev/null +++ b/code/game/antagonist/outsider/trader.dm @@ -0,0 +1,65 @@ +var/datum/antagonist/trader/traders + +/datum/antagonist/trader + id = MODE_TRADE + role_type = BE_OPERATIVE + role_text = "Trader" + role_text_plural = "Traders" + welcome_text = "As a crewmember of the Beruang, you answer to your captain and international laws of space." + antag_text = "You are an non-antagonist visitor! Within the rules, \ + try to provide interesting interaction for the crew. \ + Try to make sure other players have fun! If you are confused or at a loss, always adminhelp, \ + and before taking extreme actions, please try to also contact the administration! \ + Think through your actions and make the roleplay immersive! Please remember all \ + rules apply to you." + leader_welcome_text = "As Captain of the Beruang, you have control over your crew and cargo. It may be worth briefly discussing a consistent shared backstory with your crew." + landmark_id = "Trader" + + id_type = /obj/item/weapon/card/id/external + + flags = ANTAG_OVERRIDE_JOB | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER | ANTAG_CHOOSE_NAME + + hard_cap = 5 + hard_cap_round = 7 + initial_spawn_req = 5 + initial_spawn_target = 7 + +/datum/antagonist/trader/create_default(var/mob/source) + var/mob/living/carbon/human/M = ..() + if(istype(M)) M.age = rand(25,45) + +/datum/antagonist/trader/New() + ..() + traders = src + +/datum/antagonist/trader/greet(var/datum/mind/player) + if(!..()) + return + player.current << "The Beruang is an independent cargo hauler, unless you decide otherwise. You're on your way to [station_name()]." + player.current << "You may want to discuss a collective story with the rest of your crew. More members may be joining, so don't move out straight away!" + +/datum/antagonist/trader/equip(var/mob/living/carbon/human/player) + player.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(src), slot_w_uniform) + player.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(src), slot_shoes) + player.equip_to_slot_or_del(new /obj/item/clothing/gloves/brown(src), slot_gloves) + player.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses) + + create_radio(PUB_FREQ, player) //Assume they tune their headsets into the station's public radio as they approach + + var/obj/item/weapon/card/id/id = create_id("Trader", player, equip = 0) + id.name = "[player.real_name]'s Passport" + id.assignment = "Trader" + id.access |= access_trader + var/obj/item/weapon/storage/wallet/W = new(player) + W.handle_item_insertion(id) + player.equip_to_slot_or_del(W, slot_wear_id) + spawn_money(rand(50,150)*10,W) + + return 1 + +/datum/antagonist/trader/update_access(var/mob/living/player) + for(var/obj/item/weapon/storage/wallet/W in player.contents) + for(var/obj/item/weapon/card/id/id in W.contents) + id.name = "[player.real_name]'s Passport" + id.registered_name = player.real_name + W.name = "[initial(W.name)] ([id.name])" \ No newline at end of file diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index bba83cd42aa..8905d5fd9a1 100755 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -351,6 +351,14 @@ area/space/atmosalert() name = "\improper Administration Shuttle" icon_state = "shuttlered2" +/area/shuttle/trade/centcom + name = "\improper Trade Shuttle Centcom" + icon_state = "shuttlered" + +/area/shuttle/trade/station + name = "\improper Trade Shuttle" + icon_state = "shuttlered" + /area/shuttle/thunderdome name = "honk" @@ -838,7 +846,7 @@ area/space/atmosalert() /area/maintenance/engineering name = "Engineering Maintenance" icon_state = "maint_engineering" - + /area/maintenance/engineering/pumpstation name = "Engineering Pump Station" icon_state = "maint_pumpstation" @@ -2763,10 +2771,10 @@ var/list/the_station_areas = list ( /area/construction, /area/ai_monitored/storage/eva, /area/ai_monitored/storage/secure, - /area/ai_monitored/storage/emergency, + /area/ai_monitored/storage/emergency, /area/ai_upload, /area/ai_upload_foyer, - /area/ai + /area/ai ) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 109eeaf501a..33f0635015d 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -230,6 +230,11 @@ its easier to just keep the beam vertical. /atom/proc/melt() return +// Previously this was defined both on /obj/ and /turf/ seperately. And that's bad. +/atom/proc/update_icon() + return + + /atom/proc/hitby(atom/movable/AM as mob|obj) if (density) AM.throwing = 0 diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index a89fe95d958..a60faeb8308 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -79,6 +79,16 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E if(lesser_form && !P.allowduringlesserform) continue if(!(P in src.verbs)) src.verbs += P.verbpath + if(P.make_hud_button) + if(!src.ability_master) + src.ability_master = new /obj/screen/movable/ability_master(src) + src.ability_master.add_ling_ability( + object_given = src, + verb_given = P.verbpath, + name_given = P.name, + ability_icon_given = P.ability_icon_state, + arguments = list() + ) for(var/language in languages) mind.changeling.absorbed_languages |= language @@ -96,6 +106,9 @@ var/global/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","E for(var/datum/power/changeling/P in mind.changeling.purchased_powers) if(P.isVerb) verbs -= P.verbpath + var/obj/screen/ability/verb_based/changeling/C = ability_master.get_ability_by_proc_ref(P.verbpath) + if(C) + ability_master.remove_ability(C) //Helper proc. Does all the checks and stuff for us to avoid copypasta diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index c0330fb0806..41f66fb4ec5 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -12,6 +12,8 @@ var/list/datum/power/changeling/powerinstances = list() var/enhancedtext = "" var/isVerb = 1 // Is it an active power, or passive? var/verbpath // Path to a verb that contains the effects. + var/make_hud_button = 1 // Is this ability significant enough to dedicate screen space for a HUD button? + var/ability_icon_state = null // icon_state for icons for the ability HUD. Must be in screen_spells.dmi. /datum/power/changeling var/allowduringlesserform = 0 @@ -340,6 +342,17 @@ var/list/datum/power/changeling/powerinstances = list() if(Thepower.genomecost > 0) purchased_powers_history.Add("[Pname] ([Thepower.genomecost] points)") + if(Thepower.make_hud_button && Thepower.isVerb) + if(!M.current.ability_master) + M.current.ability_master = new /obj/screen/movable/ability_master(M.current) + M.current.ability_master.add_ling_ability( + object_given = M.current, + verb_given = Thepower.verbpath, + name_given = Thepower.name, + ability_icon_given = Thepower.ability_icon_state, + arguments = list() + ) + if(!Thepower.isVerb && Thepower.verbpath) call(M.current, Thepower.verbpath)() else if(remake_verbs) diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index e75020fc591..a9219e87464 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -1,6 +1,7 @@ /datum/power/changeling/absorb_dna name = "Absorb DNA" desc = "Permits us to syphon the DNA from a human. They become one with us, and we become stronger if they were of our kind." + ability_icon_state = "ling_absorb_dna" genomecost = 0 verbpath = /mob/proc/changeling_absorb_dna diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm index 7ab1cdda3b7..d50f4a967a4 100644 --- a/code/game/gamemodes/changeling/powers/armblade.dm +++ b/code/game/gamemodes/changeling/powers/armblade.dm @@ -3,6 +3,7 @@ desc = "We reform one of our arms into a deadly blade." helptext = "We may retract our armblade by dropping it. It can deflect projectiles." enhancedtext = "The blade will have armor peneratration." + ability_icon_state = "ling_armblade" genomecost = 2 verbpath = /mob/proc/changeling_arm_blade @@ -27,11 +28,11 @@ desc = "A grotesque blade made out of bone and flesh that cleaves through people as a hot knife through butter." icon = 'icons/obj/weapons.dmi' icon_state = "arm_blade" - item_state = "arm_blade" w_class = 5.0 force = 40 sharp = 1 edge = 1 + pry = 1 anchored = 1 throwforce = 0 //Just to be on the safe side throw_range = 0 diff --git a/code/game/gamemodes/changeling/powers/armor.dm b/code/game/gamemodes/changeling/powers/armor.dm index 87de25135ac..87a3eee4493 100644 --- a/code/game/gamemodes/changeling/powers/armor.dm +++ b/code/game/gamemodes/changeling/powers/armor.dm @@ -2,13 +2,13 @@ name = "Organic Space Suit" desc = "We grow an organic suit to protect ourselves from space exposure." helptext = "To remove the suit, use the ability again." + ability_icon_state = "lingspacesuit" genomecost = 1 verbpath = /mob/proc/changeling_spacesuit /mob/proc/changeling_spacesuit() set category = "Changeling" set name = "Organic Space Suit (20)" - if(changeling_generic_armor(/obj/item/clothing/suit/space/changeling,/obj/item/clothing/head/helmet/space/changeling)) return 1 return 0 @@ -17,6 +17,7 @@ name = "Chitinous Spacearmor" desc = "We turn our skin into tough chitin to protect us from damage and space exposure." helptext = "To remove the armor, use the ability again." + ability_icon_state = "lingarmor" genomecost = 3 verbpath = /mob/proc/changeling_spacearmor @@ -33,7 +34,6 @@ /obj/item/clothing/suit/space/changeling name = "flesh mass" icon_state = "lingspacesuit" - item_state = "lingspacehelmet" desc = "A huge, bulky mass of pressure and temperature-resistant organic tissue, evolved to facilitate space travel." flags = STOPPRESSUREDAMAGE //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, //it still ends up in your blood. (also balance but muh fluff) @@ -54,7 +54,6 @@ /obj/item/clothing/head/helmet/space/changeling name = "flesh mass" icon_state = "lingspacehelmet" - item_state = "lingspacehelmet" desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front." flags = BLOCKHAIR | STOPPRESSUREDAMAGE //Again, no THICKMATERIAL. armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) @@ -70,7 +69,6 @@ name = "chitinous mass" desc = "A tough, hard covering of black chitin." icon_state = "lingarmor" - item_state = "lingarmor" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS armor = list(melee = 75, bullet = 60, laser = 60, energy = 60, bomb = 60, bio = 0, rad = 0) //It costs 3 points, so it should be very protective. siemens_coefficient = 0.3 @@ -91,7 +89,6 @@ name = "chitinous mass" desc = "A tough, hard covering of black chitin with transparent chitin in front." icon_state = "lingarmorhelmet" - item_state = "lingarmorhelmet" armor = list(melee = 75, bullet = 60, laser = 60,energy = 60, bomb = 60, bio = 0, rad = 0) siemens_coefficient = 0.3 max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index 0e8d061a4eb..c23e6721b04 100644 --- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm +++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm @@ -4,6 +4,7 @@ name = "Augmented Eyesight" desc = "Creates heat receptors in our eyes and dramatically increases light sensing ability." helptext = "Grants us night vision and thermal vision. It may be toggled on or off. We will become more vulnerable to flash-based devices while active." + ability_icon_state = "ling_augmented_eyesight" genomecost = 2 var/active = 0 //Whether or not vision is enhanced verbpath = /mob/proc/changeling_augmented_eyesight diff --git a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm index 6dd22efab9c..bfe97bf19e1 100644 --- a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm +++ b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm @@ -5,6 +5,7 @@ helptext = "We can shock someone by grabbing them and using this ability, or using the ability with an empty hand and touching them. \ Shocking someone costs ten chemicals per use." enhancedtext = "Shocking biologicals without grabbing only requires five chemicals, and has more disabling power." + ability_icon_state = "ling_bioelectrogenesis" genomecost = 2 verbpath = /mob/living/carbon/human/proc/changeling_bioelectrogenesis diff --git a/code/game/gamemodes/changeling/powers/blind_sting.dm b/code/game/gamemodes/changeling/powers/blind_sting.dm index 6b5fcf01fb8..ceb6e00ae17 100644 --- a/code/game/gamemodes/changeling/powers/blind_sting.dm +++ b/code/game/gamemodes/changeling/powers/blind_sting.dm @@ -2,6 +2,7 @@ name = "Blind Sting" desc = "We silently sting a human, completely blinding them for a short time." enhancedtext = "Duration is extended." + ability_icon_state = " ling_sting_blind" genomecost = 2 allowduringlesserform = 1 verbpath = /mob/proc/changeling_blind_sting diff --git a/code/game/gamemodes/changeling/powers/boost_range.dm b/code/game/gamemodes/changeling/powers/boost_range.dm index 55d51bda061..65cdc00ca21 100644 --- a/code/game/gamemodes/changeling/powers/boost_range.dm +++ b/code/game/gamemodes/changeling/powers/boost_range.dm @@ -3,6 +3,7 @@ desc = "We evolve the ability to shoot our stingers at humans, with some preperation." helptext = "Allows us to prepare the next sting to have a range of two tiles." enhancedtext = "The range is extended to five tiles." + ability_icon_state = "ling_sting_boost_range" genomecost = 1 allowduringlesserform = 1 verbpath = /mob/proc/changeling_boost_range diff --git a/code/game/gamemodes/changeling/powers/cryo_sting.dm b/code/game/gamemodes/changeling/powers/cryo_sting.dm index 7fae4c16013..ee11371dacd 100644 --- a/code/game/gamemodes/changeling/powers/cryo_sting.dm +++ b/code/game/gamemodes/changeling/powers/cryo_sting.dm @@ -4,6 +4,7 @@ helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing. Has \ a three minute cooldown between uses." enhancedtext = "Increases the amount of chemicals injected." + ability_icon_state = "ling_sting_cryo" genomecost = 1 verbpath = /mob/proc/changeling_cryo_sting diff --git a/code/game/gamemodes/changeling/powers/deaf_sting.dm b/code/game/gamemodes/changeling/powers/deaf_sting.dm index 8f07460bf24..0bf5d0f326d 100644 --- a/code/game/gamemodes/changeling/powers/deaf_sting.dm +++ b/code/game/gamemodes/changeling/powers/deaf_sting.dm @@ -2,6 +2,7 @@ name = "Deaf Sting" desc = "We silently sting a human, completely deafening them for a short time." enhancedtext = "Deafness duration is extended." + ability_icon_state = "ling_sting_deafen" genomecost = 1 allowduringlesserform = 1 verbpath = /mob/proc/changeling_deaf_sting diff --git a/code/game/gamemodes/changeling/powers/death_sting.dm b/code/game/gamemodes/changeling/powers/death_sting.dm index d143bad484a..705c1269a3e 100644 --- a/code/game/gamemodes/changeling/powers/death_sting.dm +++ b/code/game/gamemodes/changeling/powers/death_sting.dm @@ -1,6 +1,7 @@ /datum/power/changeling/DeathSting name = "Death Sting" desc = "We silently sting a human, filling him with potent chemicals. His rapid death is all but assured." + ability_icon_state = "ling_sting_death" genomecost = 10 verbpath = /mob/proc/changeling_DEATHsting diff --git a/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm b/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm index 8f7998f67a6..c1152e8364c 100644 --- a/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm +++ b/code/game/gamemodes/changeling/powers/delayed_toxin_sting.dm @@ -4,6 +4,7 @@ implicate ourselves." helptext = "The toxin takes effect in about two minutes. The sting has a three minute cooldown between uses." enhancedtext = "The toxic damage is doubled." + ability_icon_state = "ling_sting_del_toxin" genomecost = 1 verbpath = /mob/proc/changeling_delayed_toxic_sting diff --git a/code/game/gamemodes/changeling/powers/digital_camo.dm b/code/game/gamemodes/changeling/powers/digital_camo.dm index 207d9ec68a3..0dbee6b09d2 100644 --- a/code/game/gamemodes/changeling/powers/digital_camo.dm +++ b/code/game/gamemodes/changeling/powers/digital_camo.dm @@ -2,6 +2,7 @@ name = "Digital Camoflauge" desc = "We evolve the ability to distort our form and proprtions, defeating common altgorthms used to detect lifeforms on cameras." helptext = "We cannot be tracked by camera while using this skill. However, humans looking at us will find us.. uncanny. We must constantly expend chemicals to maintain our form like this." + ability_icon_state = "ling_digital_camo" genomecost = 1 allowduringlesserform = 1 verbpath = /mob/proc/changeling_digitalcamo diff --git a/code/game/gamemodes/changeling/powers/electric_lockpick.dm b/code/game/gamemodes/changeling/powers/electric_lockpick.dm index 40c4b372a04..dd77debc974 100644 --- a/code/game/gamemodes/changeling/powers/electric_lockpick.dm +++ b/code/game/gamemodes/changeling/powers/electric_lockpick.dm @@ -3,6 +3,7 @@ desc = "We discreetly evolve a finger to be able to send a small electric charge. \ We can open most electrical locks, but it will be obvious when we do so." helptext = "Use the ability, then touch something that utilizes an electrical locking system, to open it. Each use costs 10 chemicals." + ability_icon_state = "ling_electric_lockpick" genomecost = 3 verbpath = /mob/proc/changeling_electric_lockpick diff --git a/code/game/gamemodes/changeling/powers/enfeebling_string.dm b/code/game/gamemodes/changeling/powers/enfeebling_string.dm index 94699995ff3..240cac473d7 100644 --- a/code/game/gamemodes/changeling/powers/enfeebling_string.dm +++ b/code/game/gamemodes/changeling/powers/enfeebling_string.dm @@ -4,6 +4,7 @@ helptext = "Lowers the maximum health of the victim for a few minutes. This sting will also warn them of this. Has a \ five minute coodown between uses." enhancedtext = "Maximum health is lowered further." + ability_icon_state = "ling_sting_enfeeble" genomecost = 1 verbpath = /mob/proc/changeling_enfeebling_string diff --git a/code/game/gamemodes/changeling/powers/epinephrine_overdose.dm b/code/game/gamemodes/changeling/powers/epinephrine_overdose.dm index 8878747d0c1..9c28fcadc42 100644 --- a/code/game/gamemodes/changeling/powers/epinephrine_overdose.dm +++ b/code/game/gamemodes/changeling/powers/epinephrine_overdose.dm @@ -3,6 +3,7 @@ desc = "We evolve additional sacs of adrenaline throughout our body." helptext = "We can instantly recover from stuns and reduce the effect of future stuns, but we will suffer toxicity in the long term. Can be used while unconscious." enhancedtext = "Constant recovery from stuns for thirty seconds." + ability_icon_state = "ling_epinepherine_overdose" genomecost = 2 verbpath = /mob/proc/changeling_epinephrine_overdose diff --git a/code/game/gamemodes/changeling/powers/extract_dna_sting.dm b/code/game/gamemodes/changeling/powers/extract_dna_sting.dm index a761a5335c1..c4f5aca088b 100644 --- a/code/game/gamemodes/changeling/powers/extract_dna_sting.dm +++ b/code/game/gamemodes/changeling/powers/extract_dna_sting.dm @@ -2,6 +2,7 @@ name = "Extract DNA" desc = "We stealthily sting a target and extract the DNA from them." helptext = "Will give you the DNA of your target, allowing you to transform into them. Does not count towards absorb objectives." + ability_icon_state = "ling_sting_extract" genomecost = 0 allowduringlesserform = 1 verbpath = /mob/proc/changeling_extract_dna_sting diff --git a/code/game/gamemodes/changeling/powers/fabricate_clothing.dm b/code/game/gamemodes/changeling/powers/fabricate_clothing.dm index 0bf73474eb3..f106d9167fb 100644 --- a/code/game/gamemodes/changeling/powers/fabricate_clothing.dm +++ b/code/game/gamemodes/changeling/powers/fabricate_clothing.dm @@ -17,6 +17,7 @@ var/global/list/changeling_fabricated_clothing = list( We cannot be relieved of this clothing by others." helptext = "The disguise we create offers no defensive ability. Each equipment slot that is empty will be filled with fabricated equipment. \ To remove our new fabricated clothing, use this ability again." + ability_icon_state = "ling_fabricate_clothing" genomecost = 2 verbpath = /mob/proc/changeling_fabricate_clothing @@ -32,6 +33,10 @@ var/global/list/changeling_fabricated_clothing = list( /obj/item/clothing/under/chameleon/changeling name = "malformed flesh" icon_state = "lingchameleon" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_uniforms.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_uniforms.dmi', + ) item_state = "lingchameleon" worn_state = "lingchameleon" desc = "The flesh all around us has grown a new layer of cells that can shift appearance and create a biological fabric that cannot be distinguished from \ @@ -78,6 +83,10 @@ var/global/list/changeling_fabricated_clothing = list( /obj/item/clothing/suit/chameleon/changeling name = "chitinous chest" icon_state = "lingchameleon" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_suits.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_suits.dmi', + ) item_state = "armor" desc = "The cells in our chest are rapidly shifting, ready to reform into material that can resemble most pieces of clothing." origin_tech = list() @@ -100,6 +109,10 @@ var/global/list/changeling_fabricated_clothing = list( /obj/item/clothing/shoes/chameleon/changeling name = "malformed feet" icon_state = "lingchameleon" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_shoes.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_shoes.dmi', + ) item_state = "black" desc = "Our feet are overlayed with another layer of flesh and bone on top. We can reform our feet to resemble various boots and shoes." origin_tech = list() @@ -122,6 +135,10 @@ var/global/list/changeling_fabricated_clothing = list( /obj/item/weapon/storage/backpack/chameleon/changeling name = "backpack" icon_state = "backpack" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi', + ) item_state = "backpack" desc = "A large pouch imbedded in our back, it can shift form to resemble many common backpacks that other biologicals are fond of using." origin_tech = list() @@ -146,6 +163,10 @@ var/global/list/changeling_fabricated_clothing = list( /obj/item/clothing/gloves/chameleon/changeling name = "malformed hands" icon_state = "lingchameleon" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi', + ) item_state = "lingchameleon" desc = "Our hands have a second layer of flesh on top. We can reform our hands to resemble a large variety of fabrics and materials that biologicals \ tend to wear on their hands. Remember that these won't protect your hands from harm." @@ -170,6 +191,10 @@ var/global/list/changeling_fabricated_clothing = list( /obj/item/clothing/mask/chameleon/changeling name = "chitin visor" icon_state = "lingchameleon" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_masks.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_masks.dmi', + ) item_state = "gas_alt" desc = "A transparent visor of brittle chitin covers our face. We can reform it to resemble various masks that biologicals use. It can also utilize internal \ tanks.." @@ -216,6 +241,10 @@ var/global/list/changeling_fabricated_clothing = list( name = "waist pouch" desc = "We can store objects in this, as well as shift it's appearance, so that it resembles various common belts." icon_state = "lingchameleon" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi', + ) item_state = "utility" origin_tech = list() canremove = 0 diff --git a/code/game/gamemodes/changeling/powers/fake_death.dm b/code/game/gamemodes/changeling/powers/fake_death.dm index ac7080301b0..dee603fc4a9 100644 --- a/code/game/gamemodes/changeling/powers/fake_death.dm +++ b/code/game/gamemodes/changeling/powers/fake_death.dm @@ -2,6 +2,7 @@ name = "Regenerative Stasis" desc = "We become weakened to a death-like state, where we will rise again from death." helptext = "Can be used before or after death. Duration varies greatly." + ability_icon_state = "ling_regenerative_stasis" genomecost = 0 allowduringlesserform = 1 verbpath = /mob/proc/changeling_fakedeath diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm index 5a157cdbb72..0502a35f28e 100644 --- a/code/game/gamemodes/changeling/powers/fleshmend.dm +++ b/code/game/gamemodes/changeling/powers/fleshmend.dm @@ -3,6 +3,7 @@ desc = "Begins a slow rengeration of our form. Does not effect stuns or chemicals." helptext = "Can be used while unconscious." enhancedtext = "Healing is twice as effective." + ability_icon_state = "ling_fleshmend" genomecost = 1 verbpath = /mob/proc/changeling_fleshmend diff --git a/code/game/gamemodes/changeling/powers/hivemind.dm b/code/game/gamemodes/changeling/powers/hivemind.dm index 8a469f9f27c..c8e5f116040 100644 --- a/code/game/gamemodes/changeling/powers/hivemind.dm +++ b/code/game/gamemodes/changeling/powers/hivemind.dm @@ -5,6 +5,7 @@ desc = "We can channel a DNA into the airwaves, allowing our fellow changelings to absorb it and transform into it as if they acquired the DNA themselves." helptext = "Allows other changelings to absorb the DNA you channel from the airwaves. Will not help them towards their absorb objectives." genomecost = 0 + make_hud_button = 0 verbpath = /mob/proc/changeling_hiveupload /datum/power/changeling/hive_download @@ -12,6 +13,7 @@ desc = "We can absorb a single DNA from the airwaves, allowing us to use more disguises with help from our fellow changelings." helptext = "Allows you to absorb a single DNA and use it. Does not count towards your absorb objective." genomecost = 0 + make_hud_button = 0 verbpath = /mob/proc/changeling_hivedownload // HIVE MIND UPLOAD/DOWNLOAD DNA diff --git a/code/game/gamemodes/changeling/powers/mimic_voice.dm b/code/game/gamemodes/changeling/powers/mimic_voice.dm index 93c0ad619fd..ae953176838 100644 --- a/code/game/gamemodes/changeling/powers/mimic_voice.dm +++ b/code/game/gamemodes/changeling/powers/mimic_voice.dm @@ -2,6 +2,7 @@ name = "Mimic Voice" desc = "We shape our vocal glands to sound like a desired voice." helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this" + ability_icon_state = "ling_mimic_voice" genomecost = 1 verbpath = /mob/proc/changeling_mimicvoice diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index ca200a50917..09c026aadbe 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -3,6 +3,7 @@ desc = "Expels impurifications from our form; curing diseases, removing toxins, chemicals, radiation, and resetting our genetic code completely." helptext = "Can be used while unconscious. This will also purge any reagents inside ourselves, both harmful and beneficial." enhancedtext = "We heal more toxins." + ability_icon_state = "ling_anatomic_panacea" genomecost = 1 verbpath = /mob/proc/changeling_panacea @@ -25,6 +26,7 @@ C.sdisabilities = 0 C.disabilities = 0 C.reagents.clear_reagents() + C.ingested.clear_reagents() var/heal_amount = 5 if(src.mind.changeling.recursive_enhancement) diff --git a/code/game/gamemodes/changeling/powers/rapid_regen.dm b/code/game/gamemodes/changeling/powers/rapid_regen.dm index 6f2d43e5daa..1688c81f317 100644 --- a/code/game/gamemodes/changeling/powers/rapid_regen.dm +++ b/code/game/gamemodes/changeling/powers/rapid_regen.dm @@ -4,6 +4,7 @@ helptext = "This will heal a significant amount of brute, fire, oxy, clone, and brain damage, and heal broken bones, internal bleeding, low blood, \ and organ damage. The process is fast, but anyone who sees us do this will likely realize we are not what we seem." enhancedtext = "Healing increased to heal up to maximum health." + ability_icon_state = "ling_rapid_regeneration" genomecost = 2 verbpath = /mob/proc/changeling_rapid_regen diff --git a/code/game/gamemodes/changeling/powers/recursive_enhancement.dm b/code/game/gamemodes/changeling/powers/recursive_enhancement.dm index b7a2469dea4..9b42ee68e0d 100644 --- a/code/game/gamemodes/changeling/powers/recursive_enhancement.dm +++ b/code/game/gamemodes/changeling/powers/recursive_enhancement.dm @@ -2,6 +2,7 @@ name = "Recursive Enhancement" desc = "We cause our next ability use to have increased or additional effects." helptext = "To check the effects for each ability, check the blue text underneath the ability in the evolution menu." + ability_icon_state = "ling_recursive_enhancement" genomecost = 3 verbpath = /mob/proc/changeling_recursive_enhancement diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 79fd2dcf744..72dfd6ec5c3 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -45,6 +45,7 @@ C.mind.changeling.purchased_powers -= C feedback_add_details("changeling_powers","CR") C.stat = CONSCIOUS + C.timeofdeath = null src.verbs -= /mob/proc/changeling_revive // re-add our changeling powers C.make_changeling() diff --git a/code/game/gamemodes/changeling/powers/self_respiration.dm b/code/game/gamemodes/changeling/powers/self_respiration.dm index 96b8f3d277c..6d6228eba88 100644 --- a/code/game/gamemodes/changeling/powers/self_respiration.dm +++ b/code/game/gamemodes/changeling/powers/self_respiration.dm @@ -2,15 +2,30 @@ name = "Self Respiration" desc = "We evolve our body to no longer require drawing oxygen from the atmosphere." helptext = "We will no longer require internals, and we cannot inhale any gas, including harmful ones." + ability_icon_state = "ling_toggle_breath" genomecost = 0 - isVerb = 0 verbpath = /mob/proc/changeling_self_respiration //No breathing required /mob/proc/changeling_self_respiration() + set category = "Changeling" + set name = "Toggle Breathing" + set desc = "We choose whether or not to breathe." + + var/datum/changeling/changeling = changeling_power(0,0,100,UNCONSCIOUS) + if(!changeling) + return 0 + if(istype(src,/mob/living/carbon)) var/mob/living/carbon/C = src - C.does_not_breathe = 1 - src << "We stop breathing, as we no longer need to." - return 1 + if(C.suiciding) + src << "You're committing suicide, this isn't going to work." + return 0 + if(C.does_not_breathe == 0) + C.does_not_breathe = 1 + src << "We stop breathing, as we no longer need to." + return 1 + else + C.does_not_breathe = 0 + src << "We resume breathing, as we now need to again." return 0 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm index 71814f1a2e8..24d024467a7 100644 --- a/code/game/gamemodes/changeling/powers/shriek.dm +++ b/code/game/gamemodes/changeling/powers/shriek.dm @@ -3,6 +3,7 @@ desc = "Our lungs and vocal chords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded biologicals and synthetics." helptext = "Lights are blown, organics are disoriented, and synthetics act as if they were flashed." enhancedtext = "Range is doubled." + ability_icon_state = "ling_resonant_shriek" genomecost = 2 verbpath = /mob/proc/changeling_resonant_shriek @@ -11,6 +12,7 @@ desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." helptext = "Creates a moderate sized EMP." enhancedtext = "Range is doubled." + ability_icon_state = "ling_dissonant_shriek" genomecost = 2 verbpath = /mob/proc/changeling_dissonant_shriek diff --git a/code/game/gamemodes/changeling/powers/silence_sting.dm b/code/game/gamemodes/changeling/powers/silence_sting.dm index ffa02942c20..c16d74ff599 100644 --- a/code/game/gamemodes/changeling/powers/silence_sting.dm +++ b/code/game/gamemodes/changeling/powers/silence_sting.dm @@ -3,6 +3,7 @@ desc = "We silently sting a human, completely silencing them for a short time." helptext = "Does not provide a warning to a victim that they have been stung, until they try to speak and cannot." enhancedtext = "Silence duration is extended." + ability_icon_state = "ling_sting_mute" genomecost = 2 allowduringlesserform = 1 verbpath = /mob/proc/changeling_silence_sting diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm index 57a55e2e217..236af69f5fd 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/game/gamemodes/changeling/powers/transform.dm @@ -1,6 +1,7 @@ /datum/power/changeling/transform name = "Transform" desc = "We take on the apperance and voice of one we have absorbed." + ability_icon_state = "ling_transform" genomecost = 0 verbpath = /mob/proc/changeling_transform diff --git a/code/game/gamemodes/changeling/powers/transform_sting.dm b/code/game/gamemodes/changeling/powers/transform_sting.dm index f88fbaca893..b96b87288a5 100644 --- a/code/game/gamemodes/changeling/powers/transform_sting.dm +++ b/code/game/gamemodes/changeling/powers/transform_sting.dm @@ -3,6 +3,7 @@ name = "Transformation Sting" desc = "We silently sting a human, injecting a retrovirus that forces them to transform into another." helptext = "Does not provide a warning to others. The victim will transform much like a changeling would." + ability_icon_state = "ling_sting_transform" genomecost = 3 verbpath = /mob/proc/changeling_transformation_sting diff --git a/code/game/gamemodes/changeling/powers/visible_camouflage.dm b/code/game/gamemodes/changeling/powers/visible_camouflage.dm index 06133ef7f84..99bb7762fa5 100644 --- a/code/game/gamemodes/changeling/powers/visible_camouflage.dm +++ b/code/game/gamemodes/changeling/powers/visible_camouflage.dm @@ -4,6 +4,7 @@ We are undetectable, so long as we move slowly.(Toggle)" helptext = "Running, and performing most acts will reveal us. Our chemical regeneration is halted while we are hidden." enhancedtext = "True invisiblity while cloaked." + ability_icon_state = "ling_camoflage" genomecost = 3 verbpath = /mob/proc/changeling_visible_camouflage diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 1a0aa9e1c53..20b49bb7f8a 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -2,12 +2,13 @@ name = "cult blade" desc = "An arcane weapon wielded by the followers of Nar-Sie." icon_state = "cultblade" - item_state = "cultblade" w_class = 4 force = 30 throwforce = 10 hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + edge = 1 + sharp = 1 /obj/item/weapon/melee/cultblade/cultify() return @@ -70,7 +71,6 @@ name = "cult robes" desc = "A set of armored robes worn by the followers of Nar-Sie." icon_state = "cultrobes" - item_state = "cultrobes" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade) armor = list(melee = 50, bullet = 30, laser = 50, energy = 20, bomb = 25, bio = 10, rad = 0) @@ -82,13 +82,12 @@ /obj/item/clothing/suit/cultrobes/alt icon_state = "cultrobesalt" - item_state = "cultrobesalt" + item_state = "cultrobes" /obj/item/clothing/suit/cultrobes/magusred name = "magus robes" desc = "A set of armored robes worn by the followers of Nar-Sie." icon_state = "magusred" - item_state = "magusred" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT @@ -105,7 +104,6 @@ /obj/item/clothing/suit/space/cult name = "cult armour" icon_state = "cult_armour" - item_state = "cult_armour" desc = "A bulky suit of armour, bristling with spikes. It looks space-worthy." w_class = 3 allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/suit_cooling_unit) diff --git a/code/game/gamemodes/cult/cultify/obj.dm b/code/game/gamemodes/cult/cultify/obj.dm index 83dfc857be9..d7c0cff5ece 100644 --- a/code/game/gamemodes/cult/cultify/obj.dm +++ b/code/game/gamemodes/cult/cultify/obj.dm @@ -50,7 +50,7 @@ src.invisibility = INVISIBILITY_MAXIMUM density = 0 -/obj/machinery/cooking/cultify() +/obj/machinery/cooker/cultify() new /obj/structure/cult/talisman(loc) qdel(src) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 3cb41cc8725..91d802c8bf5 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -465,7 +465,6 @@ var/list/sacrificed = list() break D.universal_speak = 1 D.status_flags &= ~GODMODE - D.s_tone = 35 D.b_eyes = 200 D.r_eyes = 200 D.g_eyes = 200 @@ -1052,7 +1051,7 @@ var/list/sacrificed = list() for(var/mob/living/L in viewers(src)) if(iscarbon(L)) var/mob/living/carbon/C = L - flick("e_flash", C.flash) + C.flash_eyes() if(C.stuttering < 1 && (!(HULK in C.mutations))) C.stuttering = 1 C.Weaken(1) @@ -1081,7 +1080,7 @@ var/list/sacrificed = list() admin_attack_log(usr, T, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on") else if(iscarbon(T)) var/mob/living/carbon/C = T - flick("e_flash", C.flash) + C.flash_eyes() if (!(HULK in C.mutations)) C.silent += 15 C.Weaken(25) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm index 3374f8f9be6..d42d684d560 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm @@ -43,7 +43,7 @@ var/global/universe_has_ended = 0 world << sound('sound/effects/cascade.ogg') for(var/mob/M in player_list) - flick("e_flash", M.flash) + M.flash_eyes() if(emergency_shuttle.can_recall()) priority_announcement.Announce("The emergency shuttle has returned due to bluespace distortion.") @@ -122,6 +122,6 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked continue if(M.current.stat!=2) M.current.Weaken(10) - flick("e_flash", M.current.flash) + M.current.flash_eyes() clear_antag_roles(M) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 2aa1d2b024a..60d968bba05 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -372,7 +372,7 @@ var/global/list/additional_antag_types = list() /datum/game_mode/proc/check_win() //universal trigger to be called at mob death, nuke explosion, etc. To be called from everywhere. return 0 -/datum/game_mode/proc/get_players_for_role(var/role, var/antag_id) +/datum/game_mode/proc/get_players_for_role(var/role, var/antag_id, var/ghosts_only) var/list/players = list() var/list/candidates = list() @@ -387,6 +387,8 @@ var/global/list/additional_antag_types = list() continue if(istype(player, /mob/new_player)) continue + if(istype(player, /mob/observer/dead) && !ghosts_only) + continue if(!role || (player.client.prefs.be_special & role)) log_debug("[player.key] had [antag_id] enabled, so we are drafting them.") candidates |= player.mind diff --git a/code/game/gamemodes/mixed/conflux.dm b/code/game/gamemodes/mixed/conflux.dm index 0e9513bbabf..abf9fb2e2a0 100644 --- a/code/game/gamemodes/mixed/conflux.dm +++ b/code/game/gamemodes/mixed/conflux.dm @@ -1,5 +1,5 @@ /datum/game_mode/conflux - name = "Wizard & Cult" + name = "Technomancer & Cult" round_description = "A space wizard and a cult have invaded the station!" extended_round_description = "Cultists and wizards spawn during this round." config_tag = "conflux" @@ -7,6 +7,6 @@ required_players_secret = 15 required_enemies = 5 end_on_antag_death = 1 - antag_tags = list(MODE_WIZARD, MODE_CULTIST) + antag_tags = list(MODE_TECHNOMANCER, MODE_CULTIST) require_all_templates = 1 votable = 0 \ No newline at end of file diff --git a/code/game/gamemodes/mixed/lizard.dm b/code/game/gamemodes/mixed/lizard.dm index 3323db503b5..2aa0cd46b6f 100644 --- a/code/game/gamemodes/mixed/lizard.dm +++ b/code/game/gamemodes/mixed/lizard.dm @@ -1,5 +1,5 @@ /datum/game_mode/lizard - name = "Wizard & Changelings" + name = "Technomancer & Changelings" round_description = "A space wizard and changelings have invaded the station!" extended_round_description = "Changelings and a wizard spawn during this round." config_tag = "lizard" @@ -7,5 +7,6 @@ required_players_secret = 8 required_enemies = 3 end_on_antag_death = 0 - antag_tags = list(MODE_WIZARD, MODE_CHANGELING) - require_all_templates = 1 \ No newline at end of file + antag_tags = list(MODE_TECHNOMANCER, MODE_CHANGELING) + require_all_templates = 1 + votable = 0 \ No newline at end of file diff --git a/code/game/gamemodes/mixed/mercwiz.dm b/code/game/gamemodes/mixed/mercwiz.dm index af3629bfef8..93869f38453 100644 --- a/code/game/gamemodes/mixed/mercwiz.dm +++ b/code/game/gamemodes/mixed/mercwiz.dm @@ -1,5 +1,5 @@ /datum/game_mode/mercwiz - name = "Mercenaries & Wizard" + name = "Mercenaries & Technomancer" round_description = "A mercenary team and a wizard have invaded the station!" extended_round_description = "Mercenaries and wizard spawn during this round." config_tag = "mercwiz" @@ -7,5 +7,6 @@ required_players_secret = 15 //I don't think we can have it lower and not need an ERT every round. required_enemies = 7 end_on_antag_death = 0 - antag_tags = list(MODE_MERCENARY, MODE_WIZARD) - require_all_templates = 1 \ No newline at end of file + antag_tags = list(MODE_MERCENARY, MODE_TECHNOMANCER) + require_all_templates = 1 + votable = 0 \ No newline at end of file diff --git a/code/game/gamemodes/mixed/visitors.dm b/code/game/gamemodes/mixed/visitors.dm index 853e5039d42..601d4ccc171 100644 --- a/code/game/gamemodes/mixed/visitors.dm +++ b/code/game/gamemodes/mixed/visitors.dm @@ -1,5 +1,5 @@ /datum/game_mode/visitors - name = "Wizard & Ninja" + name = "Technomancer & Ninja" round_description = "A space wizard and a ninja have invaded the station!" extended_round_description = "A ninja and wizard spawn during this round." config_tag = "visitors" @@ -7,5 +7,6 @@ required_players_secret = 8 required_enemies = 2 end_on_antag_death = 0 - antag_tags = list(MODE_WIZARD, MODE_NINJA) - require_all_templates = 1 \ No newline at end of file + antag_tags = list(MODE_TECHNOMANCER, MODE_NINJA) + require_all_templates = 1 + votable = 0 \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/assistance/assistance.dm b/code/game/gamemodes/technomancer/assistance/assistance.dm new file mode 100644 index 00000000000..786a7f0b851 --- /dev/null +++ b/code/game/gamemodes/technomancer/assistance/assistance.dm @@ -0,0 +1,123 @@ +/datum/technomancer/assistance + var/one_use_only = 0 + +/datum/technomancer/assistance/apprentice + name = "Friendly Apprentice" + desc = "A one-time use teleporter that sends a less powerful manipulator of space to you, who will do their best to protect \ + and serve you. They get their own catalog and can buy spells for themselves, however they have a smaller pool to buy with. \ + If you are unable to receive an apprentice, the teleporter can be refunded like most equipment by sliding it into the \ + catalog. Note that apprentices cannot purchase more apprentices." + cost = 300 + obj_path = /obj/item/weapon/antag_spawner/technomancer_apprentice + +/obj/item/weapon/antag_spawner + w_class = 1 + var/used = 0 + +/obj/item/weapon/antag_spawner/proc/spawn_antag(client/C, turf/T) + return + +/obj/item/weapon/antag_spawner/proc/equip_antag(mob/target) + return + +/obj/item/weapon/antag_spawner/technomancer_apprentice + name = "apprentice teleporter" + desc = "A teleportation device, which will bring a less potent manipulator of space to you." + icon = 'icons/obj/objects.dmi' + icon_state = "oldshieldoff" + var/searching = 0 + var/datum/effect/effect/system/spark_spread/sparks + +/obj/item/weapon/antag_spawner/technomancer_apprentice/New() + ..() + sparks = PoolOrNew(/datum/effect/effect/system/spark_spread) + sparks.set_up(5, 0, src) + sparks.attach(loc) + +/obj/item/weapon/antag_spawner/technomancer_apprentice/Destroy() + qdel(sparks) + ..() + +/obj/item/weapon/antag_spawner/technomancer_apprentice/attack_self(mob/user) + user << "Teleporter attempting to lock on to your apprentice." + searching = 1 + icon_state = "oldshieldon" + for(var/mob/observer/dead/O in player_list) + if(!O.MayRespawn()) + continue + if(jobban_isbanned(O, "Syndicate") || jobban_isbanned(O, "wizard")) + continue + if(O.client) + if(O.client.prefs.be_special & BE_WIZARD) + question(O.client) + spawn(1 MINUTE) + searching = 0 + if(!used) + icon_state = "oldshieldoff" + user << "The teleporter failed to find your apprentice. Perhaps you could try again later?" + + +/obj/item/weapon/antag_spawner/technomancer_apprentice/proc/question(var/client/C) + spawn(0) + if(!C) + return + var/response = alert(C, "Someone is requesting a Technomancer apprentice Would you like to play as one?", + "Apprentice request","Yes", "No") + if(response == "Yes") + response = alert(C, "Are you sure you want to play as an apprentice?", "Apprentice request", "Yes", "No") + if(!C || used || !searching) + return + if(response == "Yes") + spawn_antag(C, get_turf(src)) + +/obj/item/weapon/antag_spawner/technomancer_apprentice/spawn_antag(client/C, turf/T) + sparks.start() + var/mob/living/carbon/human/H = new/mob/living/carbon/human(T) + C.prefs.copy_to(H) + H.key = C.key + + H << "You are the Technomancer's apprentice! Your goal is to assist them in their mission at the [station_name()]." + H << "Your service has not gone unrewarded, however. Studying under them, you have learned how to use a Manipulation Core \ + of your own. You also have a Catelog, to purchase your own functions and equipment as you see fit." + H << "It would be wise to speak to your master, and learn what their plans are for today." + + spawn(1) + technomancers.add_antagonist(H.mind, 0, 1, 0, 0, 0) + equip_antag(H) + used = 1 + qdel(src) + + +/obj/item/weapon/antag_spawner/technomancer_apprentice/equip_antag(mob/technomancer_mob) + var/datum/antagonist/technomancer/antag_datum = all_antag_types[MODE_TECHNOMANCER] + antag_datum.equip_apprentice(technomancer_mob) + + +/* +// For when no one wants to play support. +/datum/technomancer/assistance/golem + name = "Friendly GOLEM unit" + desc = "Teleports a specially designed synthetic unit to you, which is very durable, has an advanced AI, and can also use \ + functions. It knows Shield, Targeted Blink, Beam, Flame Tongue, Mend Wounds, and Mend Burns. It also has a large storage \ + capacity for energy, and due to it's synthetic nature, instability is less of an issue for them." + cost = 350 + obj_path = null //TODO + one_use_only = 1 + +/datum/technomancer/assistance/ninja + name = "Neutral Cyberassassin" + desc = "Someone almost as enigmatic as you will also arrive at your destination, with their own goals and motivations. \ + This could prove to be a problem if they decide to go against you, so this is only recommended as a challenge." + cost = 100 + obj_path = null //TODO + one_use_only = 1 + +// Hardmode. +/datum/technomancer/assistance/enemy_technomancer + name = "Enemy Technomancer" + desc = "Another manipulator of space will arrive on the colony in addition to you, most likely wanting to oppose you in \ + some form, if you purchase this. This is only recommended as a challenge." + cost = 100 + obj_path = null //TODO + one_use_only = 1 +*/ \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/assistance/golem.dm b/code/game/gamemodes/technomancer/assistance/golem.dm new file mode 100644 index 00000000000..8bb6ef2ea0c --- /dev/null +++ b/code/game/gamemodes/technomancer/assistance/golem.dm @@ -0,0 +1,72 @@ +//An AI-controlled 'companion' for the Technomancer. It's tough, strong, and can also use spells. +/mob/living/simple_animal/hostile/technomancer_golem + name = "G.O.L.E.M." + desc = "A rather unusual looking synthetic." + icon = 'icons/mob/robots.dmi' + icon_state = "Security" + health = 250 + maxHealth = 250 + stop_automated_movement = 1 + wander = 0 + response_help = "pets" + response_disarm = "pushes away" + response_harm = "punches" + harm_intent_damage = 3 + + heat_damage_per_tick = 0 + cold_damage_per_tick = 0 + + min_oxy = 0 + max_oxy = 0 + min_tox = 0 + max_tox = 0 + min_co2 = 0 + max_co2 = 0 + min_n2 = 0 + max_n2 = 0 + unsuitable_atoms_damage = 0 + speed = 0 + + melee_damage_lower = 10 + melee_damage_upper = 10 + attacktext = "pummeled" + attack_sound = null + friendly = "hugs" + resistance = 0 + + var/obj/item/weapon/technomancer_core/core = null + var/obj/item/weapon/spell/active_spell = null + var/mob/living/master = null + +/mob/living/simple_animal/hostile/technomancer_golem/New() + ..() + core = new core(src) + +/mob/living/simple_animal/hostile/technomancer_golem/Destroy() + qdel(core) + ..() + +/mob/living/simple_animal/hostile/technomancer_golem/proc/bind_to_mob(mob/user) + if(!user || master) + return + master = user + name = "[master]'s [initial(name)]" + +/mob/living/simple_animal/hostile/technomancer_golem/examine(mob/user) + ..() + if(user.mind && technomancers.is_antagonist(user.mind)) + user << "Your pride and joy. It's a very special synthetic robot, capable of using functions similar to you, and you built it \ + yourself! It'll always stand by your side, ready to help you out. You have no idea what GOLEM stands for, however..." + +/mob/living/simple_animal/hostile/technomancer_golem/Life() + handle_ai() + +/mob/living/simple_animal/hostile/technomancer_golem/proc/handle_ai() + if(!master) + return + if(get_dist(src, master) > 6 || src.z != master.z) + recall_to_master() + + +/mob/living/simple_animal/hostile/technomancer_golem/proc/recall_to_master() + return \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/catalog.dm b/code/game/gamemodes/technomancer/catalog.dm new file mode 100644 index 00000000000..891ca926de4 --- /dev/null +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -0,0 +1,272 @@ +var/list/all_technomancer_spells = typesof(/datum/technomancer/spell) - /datum/technomancer/spell +var/list/all_technomancer_equipment = typesof(/datum/technomancer/equipment) - /datum/technomancer/equipment +var/list/all_technomancer_consumables = typesof(/datum/technomancer/consumable) - /datum/technomancer/consumable +var/list/all_technomancer_assistance = typesof(/datum/technomancer/assistance) - /datum/technomancer/assistance +var/list/all_technomancer_presets = typesof(/datum/technomancer/presets) - /datum/technomancer/presets + +/datum/technomancer + var/name = "technomancer thing" + var/desc = "If you can see this, something broke." + var/enhancement_desc = "No effect." + var/cost = 100 + var/hidden = 0 + var/obj_path = null + var/ability_icon_state = null + +/obj/item/weapon/technomancer_catalog + name = "catalog" + desc = "A \"book\" featuring a holographic display, metal cover, and miniaturized teleportation device, allowing the user to \ + requisition various things from.. where ever they came from." + icon = 'icons/obj/storage.dmi' + icon_state ="scientology" //placeholder + w_class = 2 + var/budget = 1000 + var/max_budget = 1000 + var/mob/living/carbon/human/owner = null + var/list/spell_instances = list() + var/list/equipment_instances = list() + var/list/consumable_instances = list() + var/list/assistance_instances = list() + var/list/preset_instances = list() + var/tab = 0 + var/show_scepter_text = 0 + +/obj/item/weapon/technomancer_catalog/apprentice + name = "apprentice's catelog" + budget = 700 + max_budget = 700 + +/obj/item/weapon/technomancer_catalog/master //for badmins, I suppose + name = "master's catelog" + budget = 2000 + max_budget = 2000 + + +// Proc: bind_to_owner() +// Parameters: 1 (new_owner - mob that the book is trying to bind to) +// Description: Links the catelog to hopefully the technomancer, so that only they can access it. +/obj/item/weapon/technomancer_catalog/proc/bind_to_owner(var/mob/living/carbon/human/new_owner) + if(!owner && technomancers.is_antagonist(new_owner.mind)) + owner = new_owner + +// Proc: New() +// Parameters: 0 +// Description: Sets up the catelog, as shown below. +/obj/item/weapon/technomancer_catalog/New() + ..() + set_up() + +// Proc: set_up() +// Parameters: 0 +// Description: Instantiates all the catelog datums for everything that can be bought. +/obj/item/weapon/technomancer_catalog/proc/set_up() + if(!spell_instances.len) + for(var/S in all_technomancer_spells) + spell_instances += new S() + if(!equipment_instances.len) + for(var/E in all_technomancer_equipment) + equipment_instances += new E() + if(!consumable_instances.len) + for(var/C in all_technomancer_consumables) + consumable_instances += new C() + if(!assistance_instances.len) + for(var/A in all_technomancer_assistance) + assistance_instances += new A() + if(!preset_instances.len) + for(var/P in all_technomancer_presets) + preset_instances += new P() + +/obj/item/weapon/technomancer_catalog/apprentice/set_up() + ..() + for(var/datum/technomancer/assistance/apprentice/A in assistance_instances) + assistance_instances.Remove(A) + +// Proc: attack_self() +// Parameters: 1 (user - the mob clicking on the catelog) +// Description: Shows an HTML window, to buy equipment and spells, if the user is the legitimate owner. Otherwise it cannot be used. +/obj/item/weapon/technomancer_catalog/attack_self(mob/user) + if(!user) + return 0 + if(owner && user != owner) + user << "\The [src] knows that you're not the original owner, and has locked you out of it!" + return 0 + else if(!owner) + bind_to_owner(user) + + switch(tab) + if(0) //Functions + var/dat = "" + user.set_machine(src) + dat += "Functions | " + dat += "Equipment | " + dat += "Consumables | " + dat += "Assistance | " + dat += "Presets
" + dat += "You currently have a budget of [budget]/[max_budget].

" + dat += "Refund Functions

" + for(var/datum/technomancer/spell in spell_instances) + if(spell.hidden) + continue + dat += "[spell.name]
" + dat += "[spell.desc]
" + if(show_scepter_text) + dat += "[spell.enhancement_desc]" + if(spell.cost <= budget) + dat += "Purchase ([spell.cost])

" + else + dat += "Cannot afford!

" + user << browse(dat, "window=radio") + onclose(user, "radio") + if(1) //Equipment + var/dat = "" + user.set_machine(src) + dat += "Functions | " + dat += "Equipment | " + dat += "Consumables | " + dat += "Assistance | " + dat += "Presets
" + dat += "You currently have a budget of [budget]/[max_budget].

" + for(var/datum/technomancer/equipment/E in equipment_instances) + dat += "[E.name]
" + dat += "[E.desc]
" + if(E.cost <= budget) + dat += "Purchase ([E.cost])

" + else + dat += "Cannot afford!

" + user << browse(dat, "window=radio") + onclose(user, "radio") + if(2) //Consumables + var/dat = "" + user.set_machine(src) + dat += "Functions | " + dat += "Equipment | " + dat += "Consumables | " + dat += "Assistance | " + dat += "Presets
" + dat += "You currently have a budget of [budget]/[max_budget].

" + for(var/datum/technomancer/consumable/C in consumable_instances) + dat += "[C.name]
" + dat += "[C.desc]
" + if(C.cost <= budget) + dat += "Purchase ([C.cost])

" + else + dat += "Cannot afford!

" + user << browse(dat, "window=radio") + onclose(user, "radio") + if(3) //Assistance + var/dat = "" + user.set_machine(src) + dat += "Functions | " + dat += "Equipment | " + dat += "Consumables | " + dat += "Assistance | " + dat += "Presets
" + dat += "You currently have a budget of [budget]/[max_budget].

" + for(var/datum/technomancer/assistance/A in assistance_instances) + dat += "[A.name]
" + dat += "[A.desc]
" + if(A.cost <= budget) + dat += "Purchase ([A.cost])

" + else + dat += "Cannot afford!

" + user << browse(dat, "window=radio") + onclose(user, "radio") + if(4) //Presets + var/dat = "" + user.set_machine(src) + dat += "Functions | " + dat += "Equipment | " + dat += "Consumables | " + dat += "Assistance | " + dat += "Presets
" + dat += "You currently have a budget of [budget]/[max_budget].

" + for(var/datum/technomancer/presets/P in preset_instances) + dat += "[P.name]
" + dat += "[P.desc]
" + if(P.cost <= budget) + dat += "Purchase ([P.cost])

" + else + dat += "Cannot afford!

" + user << browse(dat, "window=radio") + onclose(user, "radio") + +// Proc: Topic() +// Parameters: 2 (href - don't know, href_list - the choice that the person using the interface above clicked on.) +// Description: Acts upon clicks on links for the catelog, if they are the rightful owner. +/obj/item/weapon/technomancer_catalog/Topic(href, href_list) + ..() + var/mob/living/carbon/human/H = usr + + if(H.stat || H.restrained()) + return + if(!istype(H, /mob/living/carbon/human)) + return 1 //why does this return 1? + + if(H != owner) + H << "\The [src] won't allow you to do that, as you don't own \the [src]!" + return + + if(loc == H || (in_range(src, H) && istype(loc, /turf))) + H.set_machine(src) + if(href_list["tab_choice"]) + tab = text2num(href_list["tab_choice"]) + if(href_list["spell_choice"]) + var/datum/technomancer/new_spell = null + //Locate the spell. + for(var/datum/technomancer/spell/spell in spell_instances) + if(spell.name == href_list["spell_choice"]) + new_spell = spell + break + + var/obj/item/weapon/technomancer_core/core = null + if(istype(H.back, /obj/item/weapon/technomancer_core)) + core = H.back + + if(new_spell && core) + if(new_spell.cost <= budget) + if(!core.has_spell(new_spell)) + budget -= new_spell.cost + H << "You have just bought [new_spell.name]." + core.add_spell(new_spell.obj_path, new_spell.name, new_spell.ability_icon_state) + else //We already own it. + H << "You already have [new_spell.name]!" + return + else //Can't afford. + H << "You can't afford that!" + return + + // This needs less copypasta. + if(href_list["item_choice"]) + var/datum/technomancer/desired_object = null + for(var/datum/technomancer/O in equipment_instances + consumable_instances + assistance_instances) + if(O.name == href_list["item_choice"]) + desired_object = O + break + + if(desired_object) + if(desired_object.cost <= budget) + budget -= desired_object.cost + H << "You have just bought \a [desired_object.name]." + var/obj/O = new desired_object.obj_path(get_turf(H)) + technomancer_belongings.Add(O) // Used for the Track spell. + + else //Can't afford. + H << "You can't afford that!" + return + + + if(href_list["refund_functions"]) + if(H.z != 2) + H << "You can only refund at your base, it's too late now!" + return + var/obj/item/weapon/technomancer_core/core = null + if(istype(H.back, /obj/item/weapon/technomancer_core)) + core = H.back + if(core) + for(var/obj/spellbutton/spell in core.spells) + for(var/datum/technomancer/spell/spell_datum in spell_instances) + if(spell_datum.obj_path == spell.spellpath && !spell.was_bought_by_preset) + budget += spell_datum.cost + core.remove_spell(spell) + break + attack_self(H) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/clothing.dm b/code/game/gamemodes/technomancer/clothing.dm new file mode 100644 index 00000000000..ef243aa484b --- /dev/null +++ b/code/game/gamemodes/technomancer/clothing.dm @@ -0,0 +1,42 @@ +/obj/item/clothing/suit/technomancer + name = "chrome manipulation suit" + desc = "It's a very shiny and somewhat protective suit, built to help carry cores on the user's back." + icon_state = "technomancer_suit" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS|FEET|HANDS + allowed = list(/obj/item/weapon/tank) + armor = list(melee = 50, bullet = 20, laser = 30, energy = 30, bomb = 10, bio = 0, rad = 40) + siemens_coefficient = 0.75 + +/obj/item/clothing/under/technomancer + name = "initiate's jumpsuit" + desc = "It's a blue colored jumpsuit. There appears to be light-weight armor padding underneath, providing some protection." + icon_state = "initiate" + armor = list(melee = 10, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0) + siemens_coefficient = 0.9 + +/obj/item/clothing/under/technomancer/apprentice + name = "apprentice's jumpsuit" + desc = "It's a blue colored jumpsuit with some silver markings. There appears to be light-weight armor padding \ + underneath, providing some protection." + icon_state = "apprentice" + +/obj/item/clothing/under/technomancer/master + name = "master's jumpsuit" + desc = "It's a blue colored jumpsuit with some gold markings. There appears to be light-weight armor padding \ + underneath, providing some protection." + icon_state = "technomancer" + +/obj/item/clothing/head/technomancer + name = "initiate's hat" + desc = "It's a somewhat silly looking blue pointed hat." + icon_state = "initiate" + +/obj/item/clothing/head/technomancer/apprentice + name = "apprentice's hat" + desc = "It's a somewhat silly looking blue pointed hat. This one has a silver colored metalic feather strapped to it." + icon_state = "apprentice" + +/obj/item/clothing/head/technomancer/master + name = "master's hat" + desc = "It's a somewhat silly looking blue pointed hat. This one has a gold colored metalic feather strapped to it." + icon_state = "technomancer" \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/core_obj.dm b/code/game/gamemodes/technomancer/core_obj.dm new file mode 100644 index 00000000000..5ef5d375070 --- /dev/null +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -0,0 +1,290 @@ +//The base core object, worn on the wizard's back. +/obj/item/weapon/technomancer_core + name = "manipulation core" + desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats." + icon = 'icons/obj/technomancer.dmi' + icon_state = "technomancer_core" + item_state = "technomancer_core" + w_class = 5 + slot_flags = SLOT_BACK + unacidable = 1 + origin_tech = list( + TECH_MATERIAL = 8, TECH_ENGINEERING = 8, TECH_POWER = 8, TECH_BLUESPACE = 10, + TECH_COMBAT = 7, TECH_MAGNET = 9, TECH_DATA = 5 + ) + sprite_sheets = list( + "Teshari" = 'icons/mob/species/seromi/back.dmi' + ) + var/energy = 10000 + var/max_energy = 10000 + var/regen_rate = 50 // 200 seconds to full + var/energy_delta = 0 // How much we're gaining (or perhaps losing) every process(). + var/mob/living/wearer = null // Reference to the mob wearing the core. + var/instability_modifer = 0.8 // Multiplier on how much instability is added. + var/list/spells = list() // This contains the buttons used to make spells in the user's hand. + var/list/appearances = list( // Assoc list containing possible icon_states that the wiz can change the core to. + "default" = "technomancer_core", + "wizard's cloak" = "wizard_cloak" + ) + + // Some spell-specific variables go here, since spells themselves are temporary. Cores are more long term and more accessable than \ + // mind datums. It may also allow creative players to try to pull off a 'soul jar' scenario. + var/list/summoned_mobs = list() // Maintained horribly with maintain_summon_list(). + var/list/wards_in_use = list() // Wards don't count against the cap for other summons. + var/max_summons = 10 // Maximum allowed summoned entities. Some cores will have different caps. + +/obj/item/weapon/technomancer_core/New() + ..() + processing_objects |= src + +/obj/item/weapon/technomancer_core/Destroy() + dismiss_all_summons() + processing_objects.Remove(src) + ..() + +// Add the spell buttons to the HUD. +/obj/item/weapon/technomancer_core/equipped(mob/user) + wearer = user + for(var/obj/spellbutton/spell in spells) + wearer.ability_master.add_technomancer_ability(spell, spell.ability_icon_state) + ..() + +// Removes the spell buttons from the HUD. +/obj/item/weapon/technomancer_core/dropped(mob/user) + for(var/obj/screen/ability/obj_based/technomancer/A in wearer.ability_master.ability_objects) + wearer.ability_master.remove_ability(A) + wearer = null + ..() + +// 'pay_energy' is too vague of a name for a proc at the mob level. +/mob/proc/technomancer_pay_energy(amount) + return 0 + +/mob/living/carbon/human/technomancer_pay_energy(amount) + if(istype(back, /obj/item/weapon/technomancer_core)) + var/obj/item/weapon/technomancer_core/TC = back + return TC.pay_energy(amount) + return 0 + +/obj/item/weapon/technomancer_core/proc/pay_energy(amount) + if(amount <= energy) + energy = max(energy - amount, 0) + return 1 + return 0 + +/obj/item/weapon/technomancer_core/proc/give_energy(amount) + energy = min(energy + amount, max_energy) + return 1 + +/obj/item/weapon/technomancer_core/process() + var/old_energy = energy + regenerate() + pay_dues() + energy_delta = energy - old_energy + if(world.time % 5 == 0) // Maintaining fat lists is expensive, I imagine. + maintain_summon_list() + if(wearer && wearer.mind) + if(!(technomancers.is_antagonist(wearer.mind))) // In case someone tries to wear a stolen core. + wearer.adjust_instability(20) + +/obj/item/weapon/technomancer_core/proc/regenerate() + energy = min(max(energy + regen_rate, 0), max_energy) + if(wearer && ishuman(wearer)) + var/mob/living/carbon/human/H = wearer + H.wiz_energy_update_hud() + +// We pay for on-going effects here. +/obj/item/weapon/technomancer_core/proc/pay_dues() + if(summoned_mobs.len) + pay_energy( round(summoned_mobs.len * 5) ) + +// Because sometimes our summoned mobs will stop existing and leave a null entry in the list, we need to do cleanup every +// so often so .len remains reliable. +/obj/item/weapon/technomancer_core/proc/maintain_summon_list() + if(!summoned_mobs.len) // No point doing work if there's no work to do. + return + for(var/A in summoned_mobs) + // First, a null check. + if(isnull(A)) + summoned_mobs -= A + continue + // Now check for dead mobs who shouldn't be on the list. + if(istype(A, /mob/living)) + var/mob/living/L = A + if(L.stat == DEAD) + summoned_mobs -= L + qdel(L) + +// Deletes all the summons and wards from the core, so that Destroy() won't have issues. +/obj/item/weapon/technomancer_core/proc/dismiss_all_summons() + for(var/mob/living/L in summoned_mobs) + summoned_mobs -= L + qdel(L) + for(var/mob/living/simple_animal/ward/ward in wards_in_use) + wards_in_use -= ward + qdel(ward) + +// This is what is clicked on to place a spell in the user's hands. +/obj/spellbutton + name = "generic spellbutton" + var/spellpath = null + var/obj/item/weapon/technomancer_core/core = null + var/was_bought_by_preset = 0 // Relevant for refunding via the spellbook. Presets may be priced differently. + var/ability_icon_state = null + +/obj/spellbutton/New(loc, var/path, var/new_name, var/new_icon_state) + if(!path || !ispath(path)) + message_admins("ERROR: /obj/spellbutton/New() was not given a proper path!") + qdel(src) + src.name = new_name + src.spellpath = path + src.loc = loc + src.core = loc + src.ability_icon_state = new_icon_state + +/obj/spellbutton/Click() + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + H.place_spell_in_hand(spellpath) + +/obj/spellbutton/DblClick() + return Click() + +/mob/living/carbon/human/Stat() + . = ..() + + if(. && istype(back,/obj/item/weapon/technomancer_core)) + var/obj/item/weapon/technomancer_core/core = back + setup_technomancer_stat(core) + +/mob/living/carbon/human/proc/setup_technomancer_stat(var/obj/item/weapon/technomancer_core/core) + if(core && statpanel("Spell Core")) + var/charge_status = "[core.energy]/[core.max_energy] ([round( (core.energy / core.max_energy) * 100)]%) \ + ([round(core.energy_delta)]/s)" + var/instability_status = "[src.instability]" + stat("Core charge", charge_status) + stat("User instability", instability_status) + for(var/obj/spellbutton/button in core.spells) + stat(button) + +/obj/item/weapon/technomancer_core/proc/add_spell(var/path, var/new_name, var/ability_icon_state) + if(!path || !ispath(path)) + message_admins("ERROR: /obj/item/weapon/technomancer_core/add_spell() was not given a proper path! \ + The path supplied was [path].") + return + var/obj/spellbutton/spell = new(src, path, new_name, ability_icon_state) + spells.Add(spell) + if(wearer) + wearer.ability_master.add_technomancer_ability(spell, ability_icon_state) + +/obj/item/weapon/technomancer_core/proc/remove_spell(var/obj/spellbutton/spell_to_remove) + if(spell_to_remove in spells) + spells.Remove(spell_to_remove) + if(wearer) + var/obj/screen/ability/obj_based/technomancer/A = wearer.ability_master.get_ability_by_instance(spell_to_remove) + if(A) + wearer.ability_master.remove_ability(A) + qdel(spell_to_remove) + +/obj/item/weapon/technomancer_core/proc/remove_all_spells() + for(var/obj/spellbutton/spell in spells) + spells.Remove(spell) + qdel(spell) + +/obj/item/weapon/technomancer_core/proc/has_spell(var/datum/technomancer/spell_to_check) + for(var/obj/spellbutton/spell in spells) + if(spell.spellpath == spell_to_check.obj_path) + return 1 + return 0 + +/mob/living/carbon/human/proc/wiz_energy_update_hud() + if(client && hud_used) + if(istype(back, /obj/item/weapon/technomancer_core)) //I reckon there's a better way of doing this. + var/obj/item/weapon/technomancer_core/core = back + wiz_energy_display.invisibility = 0 + var/ratio = core.energy / core.max_energy + ratio = max(round(ratio, 0.05) * 100, 5) + wiz_energy_display.icon_state = "wiz_energy[ratio]" + else + wiz_energy_display.invisibility = 101 + +//Resonance Aperture + +//Variants which the wizard can buy. + +//High risk, high reward core. +/obj/item/weapon/technomancer_core/unstable + name = "unstable core" + desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats. This one is rather unstable, \ + and could prove dangerous to the user, as it feeds off unstable energies that can occur with overuse of this machine." + energy = 13000 + max_energy = 13000 + regen_rate = 35 //~371 seconds to full, 118 seconds to full at 50 instability (rate of 110) + instability_modifer = 1.2 + +/obj/item/weapon/technomancer_core/unstable/regenerate() + var/instability_bonus = 0 + if(loc && ishuman(loc)) + var/mob/living/carbon/human/H = loc + instability_bonus = H.instability * 1.5 + energy = min(energy + regen_rate + instability_bonus, max_energy) + if(loc && ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.wiz_energy_update_hud() + +//Lower capacity but safer core. +/obj/item/weapon/technomancer_core/rapid + name = "rapid core" + desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats. This one has a superior \ + recharge rate, at the price of storage capacity. It also includes integrated motion assistance, increasing agility somewhat." + energy = 7000 + max_energy = 7000 + regen_rate = 70 //100 seconds to full + slowdown = -1 + instability_modifer = 0.9 + +//Big batteries but slow regen, buying energy spells is highly recommended. +/obj/item/weapon/technomancer_core/bulky + name = "bulky core" + desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats. This variant is more \ + cumbersome and bulky, due to the additional energy capacitors installed. It also comes at a price of a subpar fractal \ + reactor." + energy = 20000 + max_energy = 20000 + regen_rate = 25 //800 seconds to full + slowdown = 1 + instability_modifer = 1.0 + +// Using this can result in abilities costing less energy. If you're lucky. +/obj/item/weapon/technomancer_core/recycling + name = "recycling core" + desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats. This type tries to recover \ + some of the energy lost from using functions due to inefficiency." + energy = 12000 + max_energy = 12000 + regen_rate = 40 //300 seconds to full + instability_modifer = 0.6 + +/obj/item/weapon/technomancer_core/recycling/pay_energy(amount) + ..() + if(.) + if(prob(30)) + give_energy(round(amount / 2)) + if(amount >= 100) // Managing to recover less than half of this isn't worth telling the user about. + wearer << "\The [src] has recovered [amount/2 >= 1000 ? "a lot of" : "some"] energy." + +// For those dedicated to summoning hoards of things. +/obj/item/weapon/technomancer_core/summoner + name = "summoner core" + desc = "A bewilderingly complex 'black box' that allows the wearer to accomplish amazing feats. This type is optimized for \ + plucking hapless creatures and machines from other locations, to do your bidding. The maximum amount of entities that you can \ + bring over at once is higher with this core, up to 40 entities, and the maintenance cost is significantly lower." + energy = 8000 + max_energy = 8000 + regen_rate = 35 //228 seconds to full + max_summons = 40 + instability_modifer = 1.0 + +/obj/item/weapon/technomancer_core/summoner/pay_dues() + if(summoned_mobs.len) + pay_energy( round(summoned_mobs.len) ) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/devices/boots_of_speed.dm b/code/game/gamemodes/technomancer/devices/boots_of_speed.dm new file mode 100644 index 00000000000..f5acf80f495 --- /dev/null +++ b/code/game/gamemodes/technomancer/devices/boots_of_speed.dm @@ -0,0 +1,19 @@ +/datum/technomancer/equipment/boots_of_speed + name = "Boots of Speed" + desc = "What appears to be an ordinary pair of boots, is actually a bit more useful than that. These will help against slipping \ + on flat surfaces, and will make you run a bit faster than if you had normal shoes or boots on." + cost = 50 + obj_path = /obj/item/clothing/shoes/speed + +/obj/item/clothing/shoes/speed + name = "boots of speed" + desc = "The latest in sure footing technology." + icon_state = "swat" + item_flags = NOSLIP + siemens_coefficient = 0.6 + slowdown = -2 // A bit faster than normal shows. + + cold_protection = FEET + min_cold_protection_temperature = SHOE_MIN_COLD_PROTECTION_TEMPERATURE + heat_protection = FEET + max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm new file mode 100644 index 00000000000..43f0f2737a7 --- /dev/null +++ b/code/game/gamemodes/technomancer/devices/disposable_teleporter.dm @@ -0,0 +1,80 @@ +/datum/technomancer/consumable/disposable_teleporter + name = "Disposable Teleporter" + desc = "An ultra-safe teleportation device that can directly teleport you to a number of locations at minimal risk, however \ + it has a limited amount of charges." + cost = 100 + obj_path = /obj/item/weapon/disposable_teleporter + +/obj/item/weapon/disposable_teleporter + name = "disposable teleporter" + desc = "A very compact personal teleportation device. It's very precise and safe, however it can only be used a few times." + icon = 'icons/obj/device.dmi' + icon_state = "hand_tele" //temporary + var/uses = 3.0 + w_class = 1 + item_state = "paper" + origin_tech = list(TECH_BLUESPACE = 4, TECH_POWER = 3) + +//This one is what the wizard starts with. The above is a better version that can be purchased. +/obj/item/weapon/disposable_teleporter/free + name = "complimentary disposable teleporter" + desc = "A very compact personal teleportation device. It's very precise and safe, however it can only be used once. This \ + one has been provided to allow you to leave your hideout." + uses = 1 + +/obj/item/weapon/disposable_teleporter/examine(mob/user) + ..() + user << "[uses] uses remaining." + +/obj/item/weapon/disposable_teleporter/attack_self(mob/user as mob) + if(!uses) + user << "\The [src] has ran out of uses, and is now useless to you!" + return + else + var/area_wanted = input(user, "Area to teleport to", "Teleportation") in teleportlocs + var/area/A = teleportlocs[area_wanted] + if(!A) + return + + if (user.stat || user.restrained()) + return + + if(!((user == loc || (in_range(src, user) && istype(src.loc, /turf))))) + return + + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(5, 0, user.loc) + sparks.attach(user) + sparks.start() + + if(user && user.buckled) + user.buckled.unbuckle_mob() + + var/list/targets = list() + + //Copypasta + valid_turfs: + for(var/turf/simulated/T in A.contents) + if(T.density || istype(T, /turf/simulated/mineral)) //Don't blink to vacuum or a wall + continue + for(var/atom/movable/stuff in T.contents) + if(stuff.density) + continue valid_turfs + targets.Add(T) + + if(!targets.len) + user << "The teleporter matrix was unable to locate a suitable teleport destination, as all the possibilities \ + were nonexistant or hazardous. Try a different area." + return + var/turf/simulated/destination = null + + destination = pick(targets) + + if(destination) + user.forceMove(destination) + user << "You are teleported to \the [A]." + uses-- + if(uses <= 0) + user << "\The [src] has ran out of uses, and disintegrates from your hands, to prevent \ + reverse engineering by outsiders." + qdel(src) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm b/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm new file mode 100644 index 00000000000..9c18e774ed6 --- /dev/null +++ b/code/game/gamemodes/technomancer/devices/gloves_of_regen.dm @@ -0,0 +1,67 @@ +/datum/technomancer/equipment/gloves_of_regen + name = "Gloves of Regeneration" + desc = "It's a pair of black gloves, with a hypodermic needle on the insides, and a small storage of a secret blend of chemicals \ + designed to be slowly fed into a living person's system, increasing their metabolism greatly, resulting in accelerated healing. \ + A side effect of this healing is that the wearer will generally get hungry a lot faster. Sliding the gloves on and off also \ + hurts a lot. As a bonus, the gloves are more resistant to the elements than most. It should be noted that synthetics will have \ + little use for these." + cost = 50 + obj_path = /obj/item/clothing/gloves/regen + +/obj/item/clothing/gloves/regen + name = "gloves of regeneration" + desc = "A pair of gloves with a small storage of green liquid on the outside. On the inside, a a hypodermic needle can be seen \ + on each glove." + icon_state = "regen" + item_state = "graygloves" + siemens_coefficient = 0 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE + var/mob/living/carbon/human/wearer = null + +/obj/item/clothing/gloves/regen/equipped(var/mob/living/carbon/human/H) + if(H && H.gloves == src) + wearer = H + if(wearer.can_feel_pain()) + H << "You feel a stabbing sensation in your hands as you slide \the [src] on!" + wearer.custom_pain("You feel a sharp pain in your hands!",1) + ..() + +/obj/item/clothing/gloves/regen/dropped(var/mob/living/carbon/human/H) + ..() + if(wearer) + if(wearer.can_feel_pain()) + wearer << "You feel the hypodermic needles as you slide \the [src] off!" + wearer.custom_pain("Your hands hurt like hell!",1) + wearer = null + +/obj/item/clothing/gloves/regen/New() + processing_objects |= src + ..() + +/obj/item/clothing/gloves/regen/Destroy() + wearer = null + processing_objects -= src + ..() + +/obj/item/clothing/gloves/regen/process() + if(!wearer || wearer.isSynthetic() || wearer.stat == DEAD || wearer.nutrition >= 10) + return // Robots and dead people don't have a metabolism. + + if(wearer.getBruteLoss()) + wearer.adjustBruteLoss(-0.1) + wearer.nutrition = max(wearer.nutrition - 10, 0) + if(wearer.getFireLoss()) + wearer.adjustFireLoss(-0.1) + wearer.nutrition = max(wearer.nutrition - 10, 0) + if(wearer.getToxLoss()) + wearer.adjustToxLoss(-0.1) + wearer.nutrition = max(wearer.nutrition - 10, 0) + if(wearer.getOxyLoss()) + wearer.adjustOxyLoss(-0.1) + wearer.nutrition = max(wearer.nutrition - 10, 0) + if(wearer.getCloneLoss()) + wearer.adjustCloneLoss(-0.1) + wearer.nutrition = max(wearer.nutrition - 20, 0) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/devices/hypos.dm b/code/game/gamemodes/technomancer/devices/hypos.dm new file mode 100644 index 00000000000..b54ce5e35c8 --- /dev/null +++ b/code/game/gamemodes/technomancer/devices/hypos.dm @@ -0,0 +1,192 @@ +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector + name = "empty hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/New() + ..() + reagents.remove_reagent("inaprovaline", 5) + update_icon() + return + +/datum/technomancer/consumable/hypo_brute + name = "Trauma Hypo" + desc = "A extended capacity hypo which can treat blunt trauma." + cost = 25 + obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute + +/datum/technomancer/consumable/hypo_burn + name = "Burn Hypo" + desc = "A extended capacity hypo which can treat severe burns." + cost = 25 + obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn + +/datum/technomancer/consumable/hypo_tox + name = "Toxin Hypo" + desc = "A extended capacity hypo which can treat various toxins." + cost = 25 + obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin + +/datum/technomancer/consumable/hypo_oxy + name = "Oxy Hypo" + desc = "A extended capacity hypo which can treat oxygen deprivation." + cost = 25 + obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy + +/datum/technomancer/consumable/hypo_purity + name = "Purity Hypo" + desc = "A extended capacity hypo which can remove various inpurities in the system such as viruses, infections, \ + radiation, and genetic problems." + cost = 25 + obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity + +/datum/technomancer/consumable/hypo_pain + name = "Pain Hypo" + desc = "A extended capacity hypo which contains potent painkillers." + cost = 25 + obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain + +/datum/technomancer/consumable/hypo_organ + name = "Organ Hypo" + desc = "A extended capacity hypo which is designed to fix internal organ problems." + cost = 50 + obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ + +/datum/technomancer/consumable/hypo_combat + name = "Combat Hypo" + desc = "A extended capacity hypo containing a dangerous cocktail of various combat stims." + cost = 75 + obj_path = /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat + + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute + name = "trauma hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to be used on victims of \ + moderate blunt trauma." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute/New() + ..() + reagents.add_reagent("bicaridine", 15) + update_icon() + return + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn + name = "burn hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to be used on burn victims, \ + featuring an optimized chemical mixture to allow for rapid healing." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn/New() + ..() + reagents.add_reagent("kelotane", 7.5) + reagents.add_reagent("dermaline", 7.5) + update_icon() + return + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin + name = "toxin hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to counteract toxins." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin/New() + ..() + reagents.add_reagent("anti_toxin", 15) + update_icon() + return + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy + name = "oxy hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one is made to counteract oxygen \ + deprivation." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy/New() + ..() + reagents.add_reagent("dexalinp", 10) + reagents.add_reagent("tricordrazine", 5) //Dex+ ODs above 10, so we add tricord to pad it out somewhat. + update_icon() + return + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity + name = "purity hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This varient excels at \ + resolving viruses, infections, radiation, and genetic maladies." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity/New() + ..() + reagents.add_reagent("spaceacillin", 9) + reagents.add_reagent("arithrazine", 5) + reagents.add_reagent("ryetalyn", 1) + update_icon() + return + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain + name = "pain hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This one contains potent painkillers." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain/New() + ..() + reagents.add_reagent("tramadol", 15) + update_icon() + return + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ + name = "organ hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. Organ damage is resolved by this varient." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ/New() + ..() + reagents.add_reagent("alkysine", 1) + reagents.add_reagent("imidazoline", 1) + reagents.add_reagent("peridaxon", 13) + update_icon() + return + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat + name = "combat hypo" + desc = "A refined version of the standard autoinjector, allowing greater capacity. This is a more dangerous and potentially \ + addictive hypo compared to others, as it contains a potent cocktail of various chemicals to optimize the recipient's combat \ + ability." + icon_state = "autoinjector" + amount_per_transfer_from_this = 15 + volume = 15 + origin_tech = list(TECH_BIO = 4) + +/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat/New() + ..() + reagents.add_reagent("bicaridine", 3) + reagents.add_reagent("kelotane", 1.5) + reagents.add_reagent("dermaline", 1.5) + reagents.add_reagent("oxycodone", 3) + reagents.add_reagent("hyperzine", 3) + reagents.add_reagent("tricordrazine", 3) + update_icon() + return diff --git a/code/game/gamemodes/technomancer/devices/implants.dm b/code/game/gamemodes/technomancer/devices/implants.dm new file mode 100644 index 00000000000..e2c1857d5d5 --- /dev/null +++ b/code/game/gamemodes/technomancer/devices/implants.dm @@ -0,0 +1,11 @@ +/datum/technomancer/consumable/freedom_implant + name = "Freedom Implant" + desc = "A hidden implant which allows one to escape bindings such as handcuffs." + cost = 50 + obj_path = /obj/item/weapon/storage/box/syndie_kit/imp_freedom + +/datum/technomancer/consumable/explosive_implant + name = "Explosive Implant" + desc = "A hidden implant which will explode if it hears a passphrase." + cost = 150 + obj_path = /obj/item/weapon/storage/box/syndie_kit/imp_explosive \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/devices/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm new file mode 100644 index 00000000000..7bcd52babe8 --- /dev/null +++ b/code/game/gamemodes/technomancer/devices/shield_armor.dm @@ -0,0 +1,84 @@ +/datum/technomancer/equipment/shield_armor + name = "Personal Shield Projector" + desc = "This state-of-the-art technology uses the bleeding edge of energy distribution and field projection \ + to provide a personal shield around you, which can diffuse laser beams and reduce the velocity of bullets and close quarters \ + weapons, reducing their potential for harm severely. All of this comes at a cost of of requiring a large amount of energy, \ + of which your Core can provide. When you are struck by something, the shield will block 75% of the damage, deducting energy \ + proportional to the amount of force that was inflicted. Armor penetration has no effect on the shield's ability to protect \ + you from harm, however the shield will fail if the energy supply cannot meet demand." + cost = 300 + obj_path = /obj/item/clothing/suit/armor/shield + +/obj/item/clothing/suit/armor/shield + name = "shield projector" + desc = "This armor has no inherent ability to absorb shock, as normal armor usually does. Instead, this emits a strong field \ + around the wearer, designed to protect from most forms of harm, from lasers to bullets to close quarters combat. It appears to \ + require a very potent supply of an energy of some kind in order to function." + icon_state = "reactiveoff" //wip + item_state = "reactiveoff" + blood_overlay_type = "armor" + slowdown = 0 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + var/active = 0 + var/damage_to_energy_multiplier = 50.0 //Determines how much energy to charge for blocking, e.g. 20 damage attack = 750 energy cost + var/datum/effect/effect/system/spark_spread/spark_system = null + var/block_percentage = 75 + +/obj/item/clothing/suit/armor/shield/New() + ..() + spark_system = PoolOrNew(/datum/effect/effect/system/spark_spread) + spark_system.set_up(5, 0, src) + +/obj/item/clothing/suit/armor/shield/Destroy() + qdel(spark_system) + ..() + +/obj/item/clothing/suit/armor/shield/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") + //Since this is a pierce of armor that is passive, we do not need to check if the user is incapacitated. + if(!active) + return 0 + + var/modified_block_percentage = block_percentage + + if(issmall(user)) // Smaller shield means better protection. + modified_block_percentage += 15 + + + var/damage_blocked = damage * (modified_block_percentage / 100) + + var/damage_to_energy_cost = (damage_to_energy_multiplier * damage_blocked) + + if(!user.technomancer_pay_energy(damage_to_energy_cost)) + user << "Your shield fades due to lack of energy!" + active = 0 + update_icon() + return 0 + + damage = damage - damage_blocked + + if(istype(damage_source, /obj/item/projectile)) + var/obj/item/projectile/P = damage_source + P.sharp = 0 + P.edge = 0 + P.damage = P.damage - damage_blocked + + user.visible_message("\The [user]'s [src] absorbs [attack_text]!") + user << "Your shield has absorbed most of \the [damage_source]." + + spark_system.start() + playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1) + return 0 // This shield does not block all damage, so returning 0 is needed to tell the game to apply the new damage. + +/obj/item/clothing/suit/armor/shield/attack_self(mob/user) + active = !active + user << "You [active ? "" : "de"]active \the [src]." + update_icon() + +/obj/item/clothing/suit/armor/shield/update_icon() + if(active) + icon_state = "shield_armor" + set_light(2, 1, l_color = "#006AFF") + else + icon_state = "shield_armor_off" + set_light(0, 0, l_color = "#000000") + return \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/devices/tesla_armor.dm b/code/game/gamemodes/technomancer/devices/tesla_armor.dm new file mode 100644 index 00000000000..1446afcba71 --- /dev/null +++ b/code/game/gamemodes/technomancer/devices/tesla_armor.dm @@ -0,0 +1,54 @@ +/datum/technomancer/equipment/tesla_armor + name = "Tesla Armor" + desc = "This piece of armor offers a retaliation-based defense. When the armor is 'ready', it will completely protect you from \ + the next attack you suffer, and strike the attacker with a strong bolt of lightning. This effect requires twenty seconds to \ + recharge. If you are attacked while this is recharging, a weaker lightning bolt is sent out, however you won't be protected from \ + the person beating you." + cost = 250 + obj_path = /obj/item/clothing/suit/armor/tesla + +/obj/item/clothing/suit/armor/tesla + name = "tesla armor" + desc = "This rather dangerous looking armor will hopefully shock your enemies, and not you in the process." + icon_state = "reactiveoff" //wip + item_state = "reactiveoff" + blood_overlay_type = "armor" + slowdown = 1 + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + var/ready = 1 //Determines if the next attack will be blocked, as well if a strong lightning bolt is sent out at the attacker. + var/ready_icon_state = "reactive" //also wip + var/cooldown_to_charge = 20 SECONDS + +/obj/item/clothing/suit/armor/tesla/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") + //First, some retaliation. + if(attacker && attacker != user) + if(get_dist(user, attacker) <= 3) //Anyone farther away than three tiles is too far to shoot lightning at. + if(ready) + shoot_lightning(attacker, 40) + else + shoot_lightning(attacker, 15) + + //Deal with protecting our wearer now. + if(ready) + ready = 0 + spawn(cooldown_to_charge) + ready = 1 + update_icon() + user << "\The [src] is ready to protect you once more." + visible_message("\The [user]'s [src.name] blocks [attack_text]!") + update_icon() + return 1 + return 0 + +/obj/item/clothing/suit/armor/tesla/update_icon() + ..() + if(ready) + icon_state = ready_icon_state + else + icon_state = initial(icon_state) + +/obj/item/clothing/suit/armor/tesla/proc/shoot_lightning(var/mob/target, var/power) + var/obj/item/projectile/beam/lightning/lightning = new(src) + lightning.power = power + lightning.launch(target) + visible_message("\The [src] strikes \the [target] with lightning!") \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/equipment.dm b/code/game/gamemodes/technomancer/equipment.dm new file mode 100644 index 00000000000..2e0fe3833a0 --- /dev/null +++ b/code/game/gamemodes/technomancer/equipment.dm @@ -0,0 +1,155 @@ +/datum/technomancer/equipment/default_core + name = "Manipulation Core" + desc = "The default core that you most likely already have. This is here in-case you change your mind after buying \ + another core, don't forget to refund the old core. This has a capacity of 10,000 units of energy, and recharges at a \ + rate of 50 units. It also reduces incoming instability from functions by 20%." + cost = 100 + obj_path = /obj/item/weapon/technomancer_core + +/datum/technomancer/equipment/rapid_core + name = "Rapid Core" + desc = "A core optimized for passive regeneration, however at the cost of capacity. Has a capacity of 7,000 units of energy, and \ + recharges at a rate of 70 units. Complex gravatics and force manipulation allows the wearer to also run slightly faster, and \ + reduces incoming instability from functions by 10%." + cost = 150 + obj_path = /obj/item/weapon/technomancer_core/rapid + +/datum/technomancer/equipment/bulky_core + name = "Bulky Core" + desc = "This core has very large capacitors, however it also has a subpar fractal reactor. The user is recommended to \ + purchase one or more energy-generating Functions as well if using this core. Has a capacity of 20,000 units of energy, \ + and recharges at a rate of 25 units. The intense weight of the core unfortunately can cause the wear to move slightly slower, \ + and the closeness of the capacitors causes a slight increase in incoming instability by 10%." + cost = 150 + obj_path = /obj/item/weapon/technomancer_core/bulky + +/datum/technomancer/equipment/unstable + name = "Unstable Core" + desc = "This core feeds off unstable energies around the user in addition to a fractal reactor. This means that it performs \ + better as the user has more instability, which could prove dangerous to the inexperienced or unprepared. Has a capacity of 13,000 \ + units of energy, and recharges at a rate of 35 units at no instability, and approximately 110 units when within the \ + 'yellow zone' of instability. Incoming instability is also amplified by 30%, due to the nature of this core." + cost = 150 + obj_path = /obj/item/weapon/technomancer_core/unstable + +/datum/technomancer/equipment/recycling + name = "Recycling Core" + desc = "This core is optimized for energy efficency, being able to sometimes recover energy that would have been lost with other \ + cores. The focus on efficency also makes instability less of an issue, as incoming instability from functions are reduced by \ + 40%. The capacitor is also slightly better, holding 12,000 units of energy, however the reactor is slower to recharge, at a rate \ + of 40 units." + cost = 150 + obj_path = /obj/item/weapon/technomancer_core/recycling + +/datum/technomancer/equipment/summoning + name = "Summoning Core" + desc = "A unique type of core, this one sacrifices other characteristics in order to optimize it for the purposes teleporting \ + entities from vast distances, and keeping them there. Wearers of this core can maintain up to 30 summons at once, and the energy \ + demand for maintaining summons is severely reduced. This comes at the price of capcitors that can only hold 8,000 units of energy, \ + a recharging rate of 35 energy, and no shielding from instability." + cost = 150 + obj_path = /obj/item/weapon/technomancer_core/summoner + +/datum/technomancer/equipment/hypo_belt + name = "Hypo Belt" + desc = "A medical belt designed to carry autoinjectors and other medical equipment. Comes with one of each hypo." + cost = 100 + obj_path = /obj/item/weapon/storage/belt/medical/technomancer + +/obj/item/weapon/storage/belt/medical/technomancer + name = "hypo belt" + desc = "A medical belt designed to carry autoinjectors and other medical equipment." + +/obj/item/weapon/storage/belt/medical/technomancer/New() + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/brute(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/burn(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/toxin(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/oxy(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/purity(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/pain(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/organ(src) + new /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/combat(src) + ..() + +/datum/technomancer/equipment/belt_of_holding + name = "Belt of Holding" + desc = "A belt with a literal pocket which opens to a localized pocket of 'Blue-Space', allowing for more storage. \ + The nature of the pocket allows for storage of larger objects than what is typical for other belts, and in larger quanities. \ + It will also help keep your pants on." + cost = 100 + obj_path = /obj/item/weapon/storage/belt/holding + +/obj/item/weapon/storage/belt/holding + name = "Belt of Holding" + desc = "Can hold more than you'd expect." + icon_state = "ems" + max_w_class = 3 // Can hold normal sized items. + storage_slots = 14 // Twice the capacity of a typical belt. + max_storage_space = 42 + +/datum/technomancer/equipment/thermals + name = "Thermoncle" + desc = "A fancy monocle with a thermal optics lens installed. Allows you to see people across walls." + cost = 150 + obj_path = /obj/item/clothing/glasses/thermal/plain/monocle + +/datum/technomancer/equipment/night_vision + name = "Night Vision Goggles" + desc = "Strategical goggles which will allow the wearer to see in the dark. Perfect for the sneaky type, just get rid of the \ + lights first." + cost = 50 + obj_path = /obj/item/clothing/glasses/night + +/datum/technomancer/equipment/omni_sight + name = "Omnisight Scanner" + desc = "A very rare scanner worn on the face, which allows the wearer to see nearly anything across walls." + cost = 400 + obj_path = /obj/item/clothing/glasses/omni + +/obj/item/clothing/glasses/omni + name = "Omnisight Scanner" + desc = "A pair of goggles which, while on the surface appear to be build very poorly, reveal to be very advanced in \ + capabilities. The lens appear to be multiple optical matrices layered together, allowing the wearer to see almost anything \ + across physical barriers." + icon_state = "uzenwa_sissra_1" + action_button_name = "Toggle Goggles" + origin_tech = list(TECH_MAGNET = 6, TECH_ENGINEERING = 6) + toggleable = 1 + vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS + prescription = 1 // So two versions of these aren't needed. + +/datum/technomancer/equipment/med_hud + name = "Medical HUD" + desc = "A commonly available HUD for medical professionals, which displays how healthy an individual is. \ + Recommended for support-based apprentices!" + cost = 30 + obj_path = /obj/item/clothing/glasses/thermal/plain/monocle + +/datum/technomancer/equipment/scepter + name = "Scepter of Empowerment" + desc = "A gem sometimes found in the depths of asteroids makes up the basis for this device. Energy is channeled into it from \ + the Core and the user, causing many functions to be enhanced in various ways, so long as it is held in the off-hand. \ + Be careful not to lose this!" + cost = 300 + obj_path = /obj/item/weapon/scepter + +/obj/item/weapon/scepter + name = "scepter of empowerment" + desc = "It's a purple gem, attached to a rod and a handle, along with small wires. It looks like it would make a good club." + icon = 'icons/obj/technomancer.dmi' + icon_state = "scepter" + force = 15 + +/obj/item/weapon/scepter/attack_self(mob/living/carbon/human/user) + var/obj/item/item_to_test = user.get_other_hand(src) + if(istype(item_to_test, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/S = item_to_test + S.on_scepter_use_cast(user) + +/obj/item/weapon/scepter/afterattack(atom/target, mob/living/carbon/human/user, proximity_flag, click_parameters) + if(proximity_flag) + return ..() + var/obj/item/item_to_test = user.get_other_hand(src) + if(istype(item_to_test, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/S = item_to_test + S.on_scepter_ranged_cast(target, user) diff --git a/code/game/gamemodes/technomancer/instability.dm b/code/game/gamemodes/technomancer/instability.dm new file mode 100644 index 00000000000..5d5432fa4e9 --- /dev/null +++ b/code/game/gamemodes/technomancer/instability.dm @@ -0,0 +1,215 @@ +/mob/living + var/instability = 0 + var/last_instability_event = null // most recent world.time that something bad happened due to instability. + +// Proc: adjust_instability() +// Parameters: 0 +// Description: Does nothing, because inheritence. +/mob/living/proc/adjust_instability() + return + +// Proc: adjust_instability() +// Parameters: 1 (amount - how much instability to give) +// Description: Adds or subtracks instability to the mob, then updates the hud. +/mob/living/carbon/human/adjust_instability(var/amount) + instability = min(max(instability + amount, 0), 200) + instability_update_hud() + +// Proc: instability_update_hud() +// Parameters: 0 +// Description: Sets the HUD icon to the correct state. +/mob/living/carbon/human/proc/instability_update_hud() + if(client && hud_used) + switch(instability) + if(0 to 10) + wiz_instability_display.icon_state = "instability-1" + if(11 to 30) + wiz_instability_display.icon_state = "instability0" + if(31 to 50) + wiz_instability_display.icon_state = "instability1" + if(51 to 100) + wiz_instability_display.icon_state = "instability2" + if(101 to 200) + wiz_instability_display.icon_state = "instability3" + +// Proc: Life() +// Parameters: 0 +// Description: Makes instability tick along with Life(). +/mob/living/carbon/human/Life() + . = ..() + handle_instability() + +// Proc: handle_instability() +// Parameters: 0 +// Description: Makes instability decay. instability_effects() handles the bad effects for having instability. It will also hold back +// from causing bad effects more than one every ten seconds, to prevent sudden death from angry RNG. +/mob/living/carbon/human/proc/handle_instability() + instability = round(Clamp(instability, 0, 200)) + instability_update_hud() + //This should cushon against really bad luck. + if(instability && last_instability_event < (world.time - 10 SECONDS) && prob(20)) + instability_effects() + switch(instability) + if(1 to 10) + adjust_instability(-2) + if(11 to 20) + adjust_instability(-4) + if(21 to 30) + adjust_instability(-6) + if(31 to 40) + adjust_instability(-8) + if(41 to 50) + adjust_instability(-10) + if(51 to 100) + adjust_instability(-20) + if(101 to 200) + adjust_instability(-40) + +/* +[16:18:08] Sparks +[16:18:10] Wormholes +[16:18:16] Random spells firing off on their own +[16:18:22] The possibilities are endless +[16:19:00] Random objects phasing into reality, only to disappear again +[16:19:05] Things briefly duplicating +[16:20:56] Glass cracking, eventually breaking +*/ +// Proc: instability_effects() +// Parameters: 0 +// Description: Does a variety of bad effects to the entity holding onto the instability, with more severe effects occuring if they have +// a lot of instability. +/mob/living/carbon/human/proc/instability_effects() + if(instability) + var/rng = 0 + last_instability_event = world.time + spawn(1) + var/image/instability_flash = image('icons/obj/spells.dmi',"instability") + overlays |= instability_flash + sleep(4) + overlays.Remove(instability_flash) + qdel(instability_flash) + radiate_instability() + switch(instability) + if(1 to 10) //Harmless + return + if(11 to 30) //Minor + rng = rand(0,1) + switch(rng) + if(0) + var/datum/effect/effect/system/spark_spread/sparks = PoolOrNew(/datum/effect/effect/system/spark_spread) + sparks.set_up(5, 0, src) + sparks.attach(loc) +// var/datum/effect/effect/system/spark_spread/spark_system = PoolOrNew(/datum/effect/effect/system/spark_spread) +// spark_system.set_up(5, 0, get_turf(src)) +// spark_system.attach(src) + sparks.start() + visible_message("Electrical sparks manifest from nowhere around \the [src]!") + qdel(sparks) + if(1) + return + + if(31 to 50) //Moderate + rng = rand(0,8) + switch(rng) + if(0) + apply_effect(instability * 0.5, IRRADIATE) + if(1) + return +// visible_message("\The [src] suddenly collapses!", +// "You suddenly feel very weak, and you fall down!") +// Weaken(instability * 0.1) + if(2) + if(can_feel_pain()) + apply_effect(instability * 0.5, AGONY) + src << "You feel a sharp pain!" + if(3) + apply_effect(instability * 0.5, EYE_BLUR) + src << "Your eyes start to get cloudy!" + if(4) + electrocute_act(instability * 0.3, "unstable energies") + if(5) + adjustFireLoss(instability * 0.2) //10 burn @ 50 instability + src << "You feel your skin burn!" + if(6) + adjustBruteLoss(instability * 0.2) //10 brute @ 50 instability + src << "You feel a sharp pain as an unseen force harms your body!" + if(7) + adjustToxLoss(instability * 0.2) //10 tox @ 50 instability + if(8) + safe_blink(src, range = 6) + src << "You're teleported against your will!" + + if(51 to 100) //Severe + rng = rand(0,8) + switch(rng) + if(0) + apply_effect(instability * 0.7, IRRADIATE) + if(1) +// visible_message("\The [src] suddenly collapses!", +// "You suddenly feel very light-headed, and faint!") +// Paralyse(instability * 0.1) + return + if(2) + if(can_feel_pain()) + apply_effect(instability * 0.7, AGONY) + src << "You feel an extremly angonizing pain from all over your body!" + if(3) + apply_effect(instability * 0.5, EYE_BLUR) + src << "Your eyes start to get cloudy!" + if(4) + electrocute_act(instability * 0.5, "extremely unstable energies") + if(5) + fire_act() + src << "You spontaneously combust!" + if(6) + adjustCloneLoss(instability * 0.05) //5 cloneloss @ 100 instability + src << "You feel your body slowly degenerate." + if(7) + adjustToxLoss(instability * 0.25) //25 tox @ 100 instability + + if(101 to 200) //Lethal + rng = rand(0,8) + switch(rng) + if(0) + apply_effect(instability, IRRADIATE) + if(1) + visible_message("\The [src] suddenly collapses!", + "You suddenly feel very light-headed, and faint!") + Paralyse(instability * 0.1) + if(2) + if(can_feel_pain()) + apply_effect(instability, AGONY) + src << "You feel an extremly angonizing pain from all over your body!" + if(3) + apply_effect(instability, EYE_BLUR) + src << "Your eyes start to get cloudy!" + if(4) + electrocute_act(instability, "extremely unstable energies") + if(5) + fire_act() + src << "You spontaneously combust!" + if(6) + adjustCloneLoss(instability * 0.10) //5 cloneloss @ 100 instability + src << "You feel your body slowly degenerate." + if(7) + adjustToxLoss(instability * 0.40) //25 tox @ 100 instability + +/mob/living/carbon/human/proc/radiate_instability() + var/distance = round(sqrt(instability / 2)) + if(instability <= 30) + distance = 0 + if(distance) + for(var/mob/living/carbon/human/H in range(src, distance) ) + if(H == src) // This instability is radiating away from them, so don't include them. + continue + var/radius = max(get_dist(H, src), 1) + // People next to the source take a third of the instability. Further distance decreases the amount absorbed. + var/outgoing_instability = (instability / 3) * ( 1 / (radius**2) ) + + // Energy armor like from the AMI RIG can protect from this. + var/armor = getarmor(null, "energy") + var/armor_factor = abs( (armor - 100) / 100) + outgoing_instability = outgoing_instability * armor_factor + H.adjust_instability(outgoing_instability) + + set_light(distance, distance, l_color = "#C26DDE") diff --git a/code/game/gamemodes/technomancer/presets.dm b/code/game/gamemodes/technomancer/presets.dm new file mode 100644 index 00000000000..6222f39a12b --- /dev/null +++ b/code/game/gamemodes/technomancer/presets.dm @@ -0,0 +1,54 @@ +/datum/technomancer/presets + name = "Preset Template" + desc = "If you see me, I'm broken." + obj_path = null + var/list/bundled = list() + +/datum/technomancer/presets/basic + name = "Basic" + desc = "This preset is created to be simple to understand and use, yet sufficent to face a wide range of hazards that may lay \ + ahead. It includes Force Missile, Beam, Passwall, Repel Missiles, Pulsar, and Discharge. Force Missile and Beam will be your \ + bread and butter, as both can be used frequently and cheaply. Passwall allows you to teleport to an adjacent room. Repel Missiles should \ + be applied before going into a fight, and Pulsar is an excellent 'area denial' function, that forces the opposing force to decide \ + if being struck with EMP is worth staying still. Discharge can be used if the opposing force is using energy weapons heavily, or \ + if you are fighting synthetics." + cost = 600 + +/datum/technomancer/presets/summoner + name = "Summoner" + desc = "This preset is dedicated to amassing a large army of entities to do your bidding. It includes the Summoner Core, to allow \ + for more efficency, as well as Summon Creature and Summon Automatron, for obvious reasons. The functions Aspect Aura and \ + Mend Wounds are also included, to allow for an area of effect heal that is ideal for keeping your (nonrobotic) army alive. \ + Finally, this includes the Scepter of Enpowerment, to make your summoned entities friendly to you and your allies, without the \ + need for the Control function. The Control function can be obtained if one wishes to micromanage their summon army, however." + cost = 600 + +/datum/technomancer/presets/illusionist + name = "Illusionist" + desc = "This preset is designed to facilitate the screwing of the opposing forces' minds, as all of the functions included \ + lend themselves to trickery. Illusion, Audible Deception, Chroma, and Darkness will allow you to make the crew question \ + reality itself. Passwall will let you slip into adjacent rooms, while the TODO lets you see everything without walls getting \ + in the way, so that you may manipulate without being seen in the same room. It may be wise to invest in at least one function \ + that can do harm, in case they wise up." + cost = 400 + +/datum/technomancer/presets/healer + name = "Healer" + desc = "This preset is recommended for apprentices who wish to support their master. It contains many healing and support \ + functions, such as Mend Wounds, Mend Burns, Purify, Oxygenate, Aspect Aura, Shared Burden, Link, Resurrect, and Great Mend Wounds. \ + Be aware that a lot of these functions create a lot of instability, so prepare for that if you can." + cost = 600 + +/datum/technomancer/presets/support + name = "Support" + desc = "This preset is recommended for apprentices who wish to support their master. It contains many functions focused on \ + augmenting you and your master's survival and capabilities, with functions such as Repel Missiles, Shared Burden, Link, Summon \ + Ward, Dispel, Corona, and Steal Food." + cost = 600 + +/datum/technomancer/presets/rainbow + name = "Rainbow Mage" + desc = "This preset includes many Aspect functions, such as Aspect Aura, Aspect Bolt, Aspect Cloud, Aspect Weapon, etc, as well as \ + cheap functions beloning to each aspect, for the purposes of combining with an aspect function. This allows you to be \ + very flexable, however functions made from aspect functions tend to be weaker due to this. Not recommended for beginners." + cost = 600 \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm new file mode 100644 index 00000000000..e00c8d123e4 --- /dev/null +++ b/code/game/gamemodes/technomancer/spell_objs.dm @@ -0,0 +1,296 @@ +//cast_method flags +#define CAST_USE 1 // Clicking the spell in your hand. +#define CAST_MELEE 2 // Clicking an atom in melee range. +#define CAST_RANGED 4 // Clicking an atom beyond melee range. +#define CAST_THROW 8 // Throwing the spell and hitting an atom. +#define CAST_COMBINE 16 // Clicking another spell with this spell. +#define CAST_INNATE 32 // Activates upon verb usage, used for mobs without hands. + +//Aspects +#define ASPECT_FIRE "fire" //Damage over time and raising body-temp. Firesuits protect from this. +#define ASPECT_FROST "frost" //Slows down the affected, also involves imbedding with icicles. Winter coats protect from this. +#define ASPECT_SHOCK "shock" //Energy-expensive, usually stuns. Insulated armor protects from this. +#define ASPECT_AIR "air" //Mostly involves manipulation of atmos, useless in a vacuum. Magboots protect from this. +#define ASPECT_FORCE "force" //Manipulates gravity to push things away or towards a location. +#define ASPECT_TELE "tele" //Teleportation of self, other objects, or other people. +#define ASPECT_DARK "dark" //Makes all those photons vanish using magic-- WITH SCIENCE. Used for sneaky stuff. +#define ASPECT_LIGHT "light" //The opposite of dark, usually blinds, makes holo-illusions, or makes laser lightshows. +#define ASPECT_BIOMED "biomed" //Mainly concerned with healing and restoration. +#define ASPECT_EMP "emp" //Unused now. +#define ASPECT_UNSTABLE "unstable" //Heavily RNG-based, causes instability to the victim. +#define ASPECT_CHROMATIC "chromatic" //Used to combine with other spells. + +/obj/item/weapon/spell + name = "glowing particles" + desc = "Your hands appear to be glowing brightly." + icon = 'icons/obj/spells.dmi' + icon_state = "generic" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_spells.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_spells.dmi', + ) + throwforce = 0 + force = 0 + var/mob/living/carbon/human/owner = null + var/obj/item/weapon/technomancer_core/core = null + var/cast_methods = null // Controls how the spell is casted. + var/aspect = null // Used for combining spells. + var/toggled = 0 // Mainly used for overlays. + var/cooldown = 0 // If set, will add a cooldown overlay and adjust click delay. Must be a multiple of 5 for overlays. + var/cast_sound = null // Sound file played when this is used. + +// Proc: on_use_cast() +// Parameters: 1 (user - the technomancer casting the spell) +// Description: Override this for clicking the spell in your hands. +/obj/item/weapon/spell/proc/on_use_cast(mob/user) + return + +// Proc: on_throw_cast() +// Parameters: 1 (hit_atom - the atom hit by the spell object) +// Description: Override this for throwing effects. +/obj/item/weapon/spell/proc/on_throw_cast(atom/hit_atom) + return + +// Proc: on_ranged_cast() +// Parameters: 2 (hit_atom - the atom clicked on by the user, user - the technomancer that clicked hit_atom) +// Description: Override this for ranged effects. +/obj/item/weapon/spell/proc/on_ranged_cast(atom/hit_atom, mob/user) + return + +// Proc: on_melee_cast() +// Parameters: 3 (hit_atom - the atom clicked on by the user, user - the technomancer that clicked hit_atom, def_zone - unknown) +// Description: Override this for effects that occur at melee range. +/obj/item/weapon/spell/proc/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) + return + +// Proc: on_combine_cast() +// Parameters: 2 (I - the item trying to merge with the spell, user - the technomancer who initiated the merge) +// Description: Override this for combining spells, like Aspect spells. +/obj/item/weapon/spell/proc/on_combine_cast(obj/item/I, mob/user) + return + +// Proc: on_innate_cast() +// Parameters: 1 (user - the entity who is casting innately (without using hands).) +// Description: Override this for casting without using hands (and as a result not using spell objects). +/obj/item/weapon/spell/proc/on_innate_cast(mob/user) + return + +// Proc: on_scepter_use_cast() +// Parameters: 1 (user - the holder of the Scepter that clicked.) +// Description: Override this for spell casts which have additional functionality when a Scepter is held in the offhand, and the +// scepter is being clicked by the technomancer in their hand. +/obj/item/weapon/spell/proc/on_scepter_use_cast(mob/user) + return + +// Proc: on_scepter_use_cast() +// Parameters: 2 (hit_atom - the atom clicked by user, user - the holder of the Scepter that clicked.) +// Description: Similar to the above proc, however this is for when someone with a Scepter clicks something far away with the scepter +// while holding a spell in the offhand that reacts to that. +/obj/item/weapon/spell/proc/on_scepter_ranged_cast(atom/hit_atom, mob/user) + return + +// Proc: pay_energy() +// Parameters: 1 (amount - how much to test and drain if there is enough) +// Description: Use this to make spells cost energy. It returns false if the technomancer cannot pay for the spell for any reason, and +// if they are able to pay, it is deducted automatically. +/obj/item/weapon/spell/proc/pay_energy(var/amount) + if(!core) + return 0 + return core.pay_energy(amount) + +// Proc: give_energy() +// Parameters: 1 (amount - how much to give to the technomancer) +// Description: Redirects the call to the core's give_energy(). +/obj/item/weapon/spell/proc/give_energy(var/amount) + if(!core) + return 0 + return core.give_energy(amount) + +// Proc: adjust_instability() +// Parameters: 1 (amount - how much instability to give) +// Description: Use this to quickly add or subtract instability from the caster of the spell. Owner is set by New(). +/obj/item/weapon/spell/proc/adjust_instability(var/amount) + if(!owner || !core) + return 0 + amount = round(amount * core.instability_modifer, 0.1) + owner.adjust_instability(amount) + +// Proc: New() +// Parameters: 0 +// Description: Sets owner to equal its loc, links to the owner's core, then applies overlays if needed. +/obj/item/weapon/spell/New() + ..() + if(ishuman(loc)) + owner = loc + if(owner) + if(istype(/obj/item/weapon/technomancer_core, owner.back)) + core = owner.back + update_icon() + +// Proc: Destroy() +// Parameters: 0 +// Description: Nulls object references so it can qdel() cleanly. +/obj/item/weapon/spell/Destroy() + owner = null + core = null + ..() + +// Proc: update_icon() +// Parameters: 0 +// Description: Applys an overlay if it is a passive spell. +/obj/item/weapon/spell/update_icon() + if(toggled) + var/image/new_overlay = image('icons/obj/spells.dmi',"toggled") + overlays |= new_overlay + else + overlays.Cut() + ..() + +// Proc: run_checks() +// Parameters: 0 +// Description: Ensures spells should not function if something is wrong. If a core is missing, it will try to find one, then fail +// if it still can't find one. It will also check if the core is being worn properly, and finally checks if the owner is a technomancer. +/obj/item/weapon/spell/proc/run_checks() + if(!owner) + return 0 + if(!core) + core = locate(/obj/item/weapon/technomancer_core) in owner + if(!core) + owner << "You need to be wearing a core on your back!" + return 0 + if(core.loc != owner || owner.back != core) //Make sure the core's being worn. + owner << "You need to be wearing a core on your back!" + return 0 + if(!technomancers.is_antagonist(owner.mind)) //Now make sure the person using this is the actual antag. + owner << "You can't seem to figure out how to make the machine work properly." + return 0 + return 1 + +// Proc: check_for_scepter() +// Parameters: 0 +// Description: Terrible code to check if a scepter is in the offhand, returns 1 if yes. +/obj/item/weapon/spell/proc/check_for_scepter() + if(!src || !owner) return 0 + if(owner.r_hand == src) + if(istype(owner.l_hand, /obj/item/weapon/scepter)) + return 1 + else + if(istype(owner.r_hand, /obj/item/weapon/scepter)) + return 1 + return 0 + +// Proc: get_other_hand() +// Parameters: 1 (I - item being compared to determine what the offhand is) +// Description: Helper for Aspect spells. +/mob/living/carbon/human/proc/get_other_hand(var/obj/item/I) + if(r_hand == I) + return l_hand + else + return r_hand + +// Proc: attack_self() +// Parameters: 1 (user - the Technomancer that invoked this proc) +// Description: Tries to call on_use_cast() if it is allowed to do so. Don't override this, override on_use_cast() instead. +/obj/item/weapon/spell/attack_self(mob/user) + if(run_checks() && (cast_methods & CAST_USE)) + on_use_cast(user) + ..() + +// Proc: attackby() +// Parameters: 2 (W - the item this spell object is hitting, user - the technomancer who clicked the other object) +// Description: Tries to combine the spells, if W is a spell, and has CHROMATIC aspect. +/obj/item/weapon/spell/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/spell = W + if(run_checks() & (cast_methods & CAST_COMBINE)) + spell.on_combine_cast(src, user) + else + ..() + +// Proc: afterattack() +// Parameters: 4 (target - the atom clicked on by user, user - the technomancer who clicked with the spell, proximity_flag - argument +// telling the proc if target is adjacent to user, click_parameters - information on where exactly the click occured on the screen.) +// Description: Tests to make sure it can cast, then casts a combined, ranged, or melee spell based on what it can do and the +// range the click occured. Melee casts have higher priority than ranged if both are possible. Sets cooldown at the end. +// Don't override this for spells, override the on_*_cast() spells shown above. +/obj/item/weapon/spell/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(!run_checks()) + return + if(!proximity_flag) + if(cast_methods & CAST_RANGED) + on_ranged_cast(target, user) + else + if(istype(target, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/spell = target + if(spell.cast_methods & CAST_COMBINE) + spell.on_combine_cast(src, user) + return + if(cast_methods & CAST_MELEE) + on_melee_cast(target, user) + else if(cast_methods & CAST_RANGED) //Try to use a ranged method if a melee one doesn't exist. + on_ranged_cast(target, user) + if(cooldown) + user.setClickCooldown(cooldown) + flick("cooldown_[cooldown]",src) + +// Proc: place_spell_in_hand() +// Parameters: 1 (path - the type path for the spell that is desired.) +// Description: Returns immediately, this is here to override for other mobs as needed. +/mob/living/proc/place_spell_in_hand(var/path) + return + +// Proc: place_spell_in_hand() +// Parameters: 1 (path - the type path for the spell that is desired.) +// Description: Gives the spell to the human mob, if it is allowed to have spells, hands are not full, etc. Otherwise it deletes itself. +/mob/living/carbon/human/place_spell_in_hand(var/path) + if(!path || !ispath(path)) + return 0 + + //var/obj/item/weapon/spell/S = PoolOrNew(path, src) + var/obj/item/weapon/spell/S = new path(src) + + //No hands needed for innate casts. + if(S.cast_methods & CAST_INNATE) + if(S.run_checks()) + S.on_innate_cast(src) + + if(l_hand && r_hand) //Make sure our hands aren't full. + if(istype(r_hand, /obj/item/weapon/spell)) //If they are full, perhaps we can still be useful. + var/obj/item/weapon/spell/r_spell = r_hand + if(r_spell.aspect == ASPECT_CHROMATIC) //Check if we can combine the new spell with one in our hands. + r_spell.on_combine_cast(S, src) + else if(istype(l_hand, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/l_spell = l_hand + if(l_spell.aspect == ASPECT_CHROMATIC) //Check the other hand too. + l_spell.on_combine_cast(S, src) + else //Welp + src << "You require a free hand to use this function." + return 0 + + if(S.run_checks()) + put_in_hands(S) + return 1 + else + qdel(S) + return 0 + +// Proc: dropped() +// Parameters: 0 +// Description: Deletes the spell object immediately. +/obj/item/weapon/spell/dropped() + spawn(1) + if(src) + qdel(src) + +// Proc: throw_impact() +// Parameters: 1 (hit_atom - the atom that got hit by the spell as it was thrown) +// Description: Calls on_throw_cast() on whatever was hit, then deletes itself incase it missed. +/obj/item/weapon/spell/throw_impact(atom/hit_atom) + ..() + if(cast_methods & CAST_THROW) + on_throw_cast(hit_atom) + + // If we miss or hit an obstacle, we still want to delete the spell. + spawn(20) + if(src) + qdel(src) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spell_objs_helpers.dm b/code/game/gamemodes/technomancer/spell_objs_helpers.dm new file mode 100644 index 00000000000..9b638e8c122 --- /dev/null +++ b/code/game/gamemodes/technomancer/spell_objs_helpers.dm @@ -0,0 +1,42 @@ +//Returns 1 if the turf is dense, or if there's dense objects on it, unless told to ignore them. +/turf/proc/check_density(var/ignore_objs = 0) + if(density) + return 1 + if(!ignore_objs) + for(var/atom/movable/stuff in contents) + if(stuff.density) + return 1 + return 0 + +// Used to distinguish friend from foe. +/obj/item/weapon/spell/proc/is_ally(var/mob/living/L) + if(L == owner) // The best ally is ourselves. + return 1 + if(L.mind && technomancers.is_antagonist(L.mind)) // This should be done better since we might want opposing technomancers later. + return 1 + if(istype(L, /mob/living/simple_animal/hostile)) // Mind controlled simple mobs count as allies too. + var/mob/living/simple_animal/SA = L + if(owner in SA.friends) + return 1 + return 0 + +/obj/item/weapon/spell/proc/allowed_to_teleport() + if(owner && owner.z in config.admin_levels) + return 0 + return 1 + +// Returns a 'target' mob from a radius around T. +/obj/item/weapon/spell/proc/targeting_assist(var/turf/T, radius = 5) + var/chosen_target = null + var/potential_targets = view(T,radius) + for(var/mob/living/L in potential_targets) + if(is_ally(L)) // Don't shoot our friends. + continue + if(L.invisibility > owner.see_invisible) // Don't target ourselves or people we can't see. + continue + if(!L in viewers(owner)) // So we don't shoot at walls if someone is hiding behind one. + continue + if(!L.stat) // Don't want to target dead people or SSDs. + chosen_target = L + break + return chosen_target \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/abjuration.dm b/code/game/gamemodes/technomancer/spells/abjuration.dm new file mode 100644 index 00000000000..6e4f7d73b32 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/abjuration.dm @@ -0,0 +1,39 @@ +/datum/technomancer/spell/abjuration + name = "Abjuration" + desc = "This ability attempts to send summoned or teleported entities or anomalies to the place from whence they came, or at least \ + far away from the caster. Failing that, it may inhibit those entities in some form." + cost = 40 + obj_path = /obj/item/weapon/spell/abjuration + +/obj/item/weapon/spell/abjuration + name = "abjuration" + desc = "Useful for unruly minions, hostile summoners, or for fighting the horrors that may await you with your hubris." + icon_state = "generic" + cast_methods = CAST_RANGED + aspect = ASPECT_TELE + +/obj/item/weapon/spell/abjuration/on_ranged_cast(atom/hit_atom, mob/user) + if(istype(hit_atom, /mob/living) && pay_energy(500)) + var/mob/living/L = hit_atom + var/mob/living/simple_animal/SA = null + + //Bit of a roundabout typecheck, in order to test for two variables from two different mob types in one line. + if(istype(L, /mob/living/simple_animal)) + SA = L + if(L.summoned || (SA && SA.supernatural) ) + if(L.client) // Player-controlled mobs are immune to being killed by this. + user << "\The [L] resists your attempt to banish it!" + L << "\The [user] tried to teleport you far away, but failed." + return 0 + else + visible_message("\The [L] vanishes!") + qdel(L) + else if(istype(L, /mob/living/simple_animal/construct)) + var/mob/living/simple_animal/construct/evil = L + evil << "\The [user]'s abjuration purges your form!" + evil.purge = 3 + adjust_instability(5) + // In case NarNar comes back someday. + if(istype(hit_atom, /obj/singularity/narsie)) + user << "One does not simply abjurate Nar'sie away." + adjust_instability(200) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/apportation.dm b/code/game/gamemodes/technomancer/spells/apportation.dm new file mode 100644 index 00000000000..ad4fcdc9efa --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/apportation.dm @@ -0,0 +1,72 @@ +/datum/technomancer/spell/apportation + name = "Apportation" + desc = "This allows you to teleport objects into your hand, or to pull people towards you. If they're close enough, the function \ + will grab them automatically." + cost = 50 + obj_path = /obj/item/weapon/spell/apportation + +/obj/item/weapon/spell/apportation + name = "apportation" + icon_state = "apportation" + desc = "Allows you to reach through Bluespace with your hand, and grab something, bringing it to you instantly." + cast_methods = CAST_RANGED + aspect = ASPECT_TELE + +/obj/item/weapon/spell/apportation/on_ranged_cast(atom/hit_atom, mob/user) + if(istype(hit_atom, /atom/movable)) + var/atom/movable/AM = hit_atom + + if(!AM.loc) //Don't teleport HUD telements to us. + return + if(AM.anchored) + user << "\The [hit_atom] is firmly secured and anchored, you can't move it!" + return + //Teleporting an item. + if(istype(hit_atom, /obj/item)) + var/obj/item/I = hit_atom + + var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/spark_spread + s1.set_up(2, 1, user) + s2.set_up(2, 1, I) + s1.start() + s2.start() + I.visible_message("\The [I] vanishes into thin air!") + I.forceMove(get_turf(user)) + user.drop_item(src) + src.loc = null + user.put_in_hands(I) + user.visible_message("\A [I] appears in \the [user]'s hand!") + qdel(src) + //Now let's try to teleport a living mob. + else if(istype(hit_atom, /mob/living)) + var/mob/living/L = hit_atom + L << "You are teleported towards \the [user]." + var/datum/effect/effect/system/spark_spread/s1 = new /datum/effect/effect/system/spark_spread + var/datum/effect/effect/system/spark_spread/s2 = new /datum/effect/effect/system/spark_spread + s1.set_up(2, 1, user) + s2.set_up(2, 1, L) + s1.start() + s2.start() + L.throw_at(get_step(get_turf(src),get_turf(L)), 4, 1, src) + user.drop_item(src) + src.loc = null + + spawn(1 SECOND) + if(!user.Adjacent(L)) + user << "\The [L] is out of your reach." + qdel(src) + return + + L.Weaken(3) + user.visible_message("\The [user] seizes [L]!") + + var/obj/item/weapon/grab/G = new(user,L) + + user.put_in_hands(G) + + G.state = GRAB_PASSIVE + G.icon_state = "grabbed1" + G.synch() + qdel(src) + diff --git a/code/game/gamemodes/technomancer/spells/aspect_aura.dm b/code/game/gamemodes/technomancer/spells/aspect_aura.dm new file mode 100644 index 00000000000..36b2a7c344e --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/aspect_aura.dm @@ -0,0 +1,135 @@ +/datum/technomancer/spell/aspect_aura + name = "Aspect Aura" + desc = "This aura function takes on the properties of other functions based on which aspect is introduced to it, applying \ + it to everyone nearby." + cost = 200 + obj_path = /mob/living/carbon/human/proc/technomancer_aspect_aura + +/mob/living/carbon/human/proc/technomancer_aspect_aura() + place_spell_in_hand(/obj/item/weapon/spell/aspect_aura) + +/obj/item/weapon/spell/aspect_aura + name = "aspect aura" + desc = "Combine this with another spell to finish the function." + icon_state = "aspect_bolt" + cast_methods = CAST_COMBINE + aspect = ASPECT_CHROMATIC + +/obj/item/weapon/spell/aspect_aura/on_combine_cast(obj/item/W, var/mob/living/carbon/human/user) + if(istype(W, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/spell = W + if(!spell.aspect || spell.aspect == ASPECT_CHROMATIC) + user << "You cannot combine \the [spell] with \the [src], as the aspects are incompatable." + return + user.drop_item(src) + src.loc = null + spawn(1) + switch(spell.aspect) + if(ASPECT_FIRE) + user.place_spell_in_hand(/obj/item/weapon/spell/aura/fire) + if(ASPECT_FROST) + user.place_spell_in_hand(/obj/item/weapon/spell/aura/frost) + if(ASPECT_BIOMED) + user.place_spell_in_hand(/obj/item/weapon/spell/aura/biomed) + qdel(src) + +/obj/item/weapon/spell/aura + name = "aura template" + desc = "If you can read me, the game broke! Yay!" + icon_state = "generic" + cast_methods = null + aspect = ASPECT_CHROMATIC + var/glow_color = "#FFFFFF" + +/obj/item/weapon/spell/aura/New() + ..() + set_light(7, 4, l_color = glow_color) + processing_objects |= src + +/obj/item/weapon/spell/aura/Destroy() + processing_objects -= src + ..() + +/obj/item/weapon/spell/aura/process() + return + +/obj/item/weapon/spell/aura/fire + name = "heat aura" + desc = "Things are starting to heat up." + icon_state = "generic" + cast_methods = null + aspect = ASPECT_FIRE + glow_color = "#FF6A00" + +/obj/item/weapon/spell/aura/fire/process() + if(!pay_energy(100)) + qdel(src) + var/list/nearby_mobs = range(4,owner) + for(var/mob/living/carbon/human/H in nearby_mobs) + if(H == owner || H.mind && technomancers.is_antagonist(H.mind)) //Don't heat up allies. + continue + + //We use hotspot_expose() to allow firesuits to protect from this aura. + var/turf/location = get_turf(H) + location.hotspot_expose(1000, 50, 1) + + owner.adjust_instability(1) + +/obj/item/weapon/spell/aura/frost + name = "chilling aura" + desc = "Your enemies will find it hard to chase you if they freeze to death." + icon_state = "generic" + cast_methods = null + aspect = ASPECT_FROST + glow_color = "#FF6A00" + +/obj/item/weapon/spell/aura/frost/process() + if(!pay_energy(100)) + qdel(src) + var/list/nearby_mobs = range(4,owner) + for(var/mob/living/carbon/human/H in nearby_mobs) + if(H == owner || H.mind && technomancers.is_antagonist(H.mind)) //Don't chill allies. + continue + + //We use hotspot_expose() to allow firesuits to protect from this aura. + var/turf/location = get_turf(H) + location.hotspot_expose(1, 50, 1) + + owner.adjust_instability(1) + + + +/obj/item/weapon/spell/aura/biomed + name = "restoration aura" + desc = "Allows everyone, or just your allies, to slowly regenerate." + icon_state = "generic" + cast_methods = null + aspect = ASPECT_BIOMED + glow_color = "#0000FF" + var/regen_tick = 0 + var/heal_allies_only = 1 + +/obj/item/weapon/spell/aura/biomed/process() + if(!pay_energy(75)) + qdel(src) + regen_tick++ + if(regen_tick % 5 == 0) + var/list/nearby_mobs = range(4,owner) + var/list/mobs_to_heal = list() + if(heal_allies_only) + for(var/mob/living/carbon/human/H in nearby_mobs) //Heal our apprentices + if(H.mind && technomancers.is_antagonist(H.mind)) + mobs_to_heal |= H + for(var/mob/living/simple_animal/hostile/SAH in nearby_mobs) //Heal our controlled mobs + if(owner in SAH.friends) + mobs_to_heal |= SAH + else + mobs_to_heal = nearby_mobs //Heal everyone! + for(var/mob/living/L in mobs_to_heal) + L.adjustBruteLoss(-5) + L.adjustFireLoss(-5) + owner.adjust_instability(2) + +/obj/item/weapon/spell/aura/biomed/on_use_cast(mob/living/user) + heal_allies_only = !heal_allies_only + user << "Your aura will now heal [heal_allies_only ? "your allies" : "everyone"] near you." \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/audible_deception.dm b/code/game/gamemodes/technomancer/spells/audible_deception.dm new file mode 100644 index 00000000000..38b55c1342e --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/audible_deception.dm @@ -0,0 +1,93 @@ +/datum/technomancer/spell/audible_deception + name = "Audible Deception" + desc = "Allows you to create a specific sound at a location of your choosing." + enhancement_desc = "An extremely loud sound that a large amount of energy and instability becomes available, which will \ + deafen and stun all who are near the targeted tile, including yourself if unprotected." + cost = 150 + obj_path = /obj/item/weapon/spell/audible_deception + ability_icon_state = "tech_audibledeception" + +/obj/item/weapon/spell/audible_deception + name = "audible deception" + icon_state = "audible_deception" + desc = "Make them all paranoid!" + cast_methods = CAST_RANGED | CAST_USE + aspect = ASPECT_AIR + cooldown = 10 + var/list/available_sounds = list( + "Blade Slice" = 'sound/weapons/bladeslice.ogg', + "Energy Blade Slice" = 'sound/weapons/blade1.ogg', + "Explosions" = "explosion", + "Distant Explosion" = 'sound/effects/explosionfar.ogg', + "Sparks" = "sparks", + "Punches" = "punch", + "Glass Shattering" = "shatter", + "Grille Damage" = 'sound/effects/grillehit.ogg', + "Energy Pulse" = 'sound/effects/EMPulse.ogg', + "Airlock" = 'sound/machines/airlock.ogg', + "Airlock Creak" = 'sound/machines/airlock_creaking.ogg', + + "Shotgun Pumping" = 'sound/weapons/shotgunpump.ogg', + "Flash" = 'sound/weapons/flash.ogg', + "Bite" = 'sound/weapons/bite.ogg', + "Gun Firing" = 'sound/weapons/gunshot.ogg', + "Desert Eagle Firing" = 'sound/weapons/deagle.ogg', + "Rifle Firing" = 'sound/weapons/rifleshot.ogg', + "Rifle Firing 2" = 'sound/weapons/svd_shot.ogg', + "Sniper Firing" = 'sound/weapons/sniper.ogg', + "Shotgun Firing" = 'sound/weapons/shotgun.ogg', + "Semi-automatic Firing" = 'sound/weapons/semiauto.ogg', + "Machinegun Firing" = 'sound/weapons/machinegun.ogg', + "Rocket Launcher Firing"= 'sound/weapons/rpg.ogg', + "Taser Firing" = 'sound/weapons/Taser.ogg', + "Laser Gun Firing" = 'sound/weapons/laser.ogg', + "E-Luger Firing" = 'sound/weapons/eLuger.ogg', + "Xray Gun Firing" = 'sound/weapons/laser3.ogg', + "Pulse Gun Firing" = 'sound/weapons/pulse.ogg', + "Gauss Gun Firing" = 'sound/weapons/gauss_shoot.ogg', + "Emitter Firing" = 'sound/weapons/emitter.ogg', + "Energy Blade On" = 'sound/weapons/saberon.ogg', + "Energy Blade Off" = 'sound/weapons/saberoff.ogg', + "Wire Restraints" = 'sound/weapons/cablecuff.ogg', + "Handcuffs" = 'sound/weapons/handcuffs.ogg', + + "Crowbar" = 'sound/items/Crowbar.ogg', + "Screwdriver" = 'sound/items/Screwdriver.ogg', + "Welding" = 'sound/items/Welder.ogg', + "Wirecutting" = 'sound/items/Wirecutter.ogg', + + "Nymph Chirping" = 'sound/misc/nymphchirp.ogg', + "Sad Trombone" = 'sound/misc/sadtrombone.ogg', + "Honk" = 'sound/items/bikehorn.ogg', + ) + var/selected_sound = null + +/obj/item/weapon/spell/audible_deception/on_use_cast(mob/user) + var/list/sound_options = available_sounds + if(check_for_scepter()) + sound_options["!!AIR HORN!!"] = 'sound/items/AirHorn.ogg' + var/new_sound = input("Select the sound you want to make.","Sounds") as null|anything in sound_options + if(new_sound) + selected_sound = sound_options[new_sound] + +/obj/item/weapon/spell/audible_deception/on_ranged_cast(atom/hit_atom, mob/living/user) + var/turf/T = get_turf(hit_atom) + if(selected_sound && pay_energy(200)) + playsound(T, selected_sound, 80, 1, -1) + owner.adjust_instability(1) + // Air Horn time. + if(selected_sound == 'sound/items/AirHorn.ogg' && pay_energy(3800)) + owner.adjust_instability(49) // Pay for your sins. + for(var/mob/living/carbon/M in ohearers(6, T)) + if(M.get_ear_protection() >= 2) + continue + M.sleeping = 0 + M.stuttering += 20 + M.ear_deaf += 30 + M.Weaken(3) + if(prob(30)) + M.Stun(10) + M.Paralyse(4) + else + M.make_jittery(50) + M << "HONK" \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/aura/aura.dm b/code/game/gamemodes/technomancer/spells/aura/aura.dm new file mode 100644 index 00000000000..8ccdc89d0ae --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/aura/aura.dm @@ -0,0 +1,19 @@ +/obj/item/weapon/spell/aura + name = "aura template" + desc = "If you can read me, the game broke! Yay!" + icon_state = "generic" + cast_methods = null + aspect = null + var/glow_color = "#FFFFFF" + +/obj/item/weapon/spell/aura/New() + ..() + set_light(7, 4, l_color = glow_color) + processing_objects |= src + +/obj/item/weapon/spell/aura/Destroy() + processing_objects -= src + ..() + +/obj/item/weapon/spell/aura/process() + return diff --git a/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm b/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm new file mode 100644 index 00000000000..a1c0940f14e --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/aura/biomed_aura.dm @@ -0,0 +1,38 @@ +/datum/technomancer/spell/biomed_aura + name = "Restoration Aura" + desc = "Heals you and your allies (or everyone, if you want) of trauma and burns slowly, as long as they remain within four meters." + cost = 150 + obj_path = /obj/item/weapon/spell/aura/biomed + ability_icon_state = "tech_biomedaura" + +/obj/item/weapon/spell/aura/biomed + name = "restoration aura" + desc = "Allows everyone, or just your allies, to slowly regenerate." + icon_state = "generic" + cast_methods = null + aspect = ASPECT_BIOMED + glow_color = "#0000FF" + var/regen_tick = 0 + var/heal_allies_only = 1 + +/obj/item/weapon/spell/aura/biomed/process() + if(!pay_energy(75)) + qdel(src) + regen_tick++ + if(regen_tick % 5 == 0) + var/list/nearby_mobs = range(4,owner) + var/list/mobs_to_heal = list() + if(heal_allies_only) + for(var/mob/living/L in nearby_mobs) + if(is_ally(L)) + mobs_to_heal |= L + else + mobs_to_heal = nearby_mobs //Heal everyone! + for(var/mob/living/L in mobs_to_heal) + L.adjustBruteLoss(-2) + L.adjustFireLoss(-2) + owner.adjust_instability(2) + +/obj/item/weapon/spell/aura/biomed/on_use_cast(mob/living/user) + heal_allies_only = !heal_allies_only + user << "Your aura will now heal [heal_allies_only ? "your allies" : "everyone"] near you." diff --git a/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm b/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm new file mode 100644 index 00000000000..83ab173762a --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/aura/fire_aura.dm @@ -0,0 +1,56 @@ +/datum/technomancer/spell/fire_aura + name = "Fire Storm" + desc = "This causes everyone within four meters of you to heat up, eventually burning to death if they remain for too long. \ + This does not affect you or your allies. It also causes a large amount of fire to erupt around you, however the main threat is \ + still the heating up." + enhancement_desc = "Increased heat generation, more fires, and higher temperature cap." + cost = 150 + obj_path = /obj/item/weapon/spell/aura/fire + ability_icon_state = "tech_fireaura" + +/obj/item/weapon/spell/aura/fire + name = "Fire Storm" + desc = "Things are starting to heat up." + icon_state = "generic" + aspect = ASPECT_FIRE + glow_color = "#FF6A00" + +/obj/item/weapon/spell/aura/fire/process() + if(!pay_energy(100)) + qdel(src) + var/list/nearby_things = range(4,owner) + + var/fire_prob = 10 + var/temp_change = 25 + var/temp_cap = 500 + var/fire_power = 2 + + if(check_for_scepter()) + temp_change = 50 + temp_cap = 700 + fire_prob = 25 + fire_power = 4 + for(var/mob/living/carbon/human/H in nearby_things) + if(is_ally(H)) + continue + + var/protection = H.get_heat_protection(1000) + if(protection < 1) + var/heat_factor = abs(protection - 1) + H.bodytemperature = min( (H.bodytemperature + temp_change) * heat_factor, temp_cap) + + turf_check: + for(var/turf/simulated/T in nearby_things) + if(prob(fire_prob)) + for(var/mob/living/carbon/human/H in T) + if(is_ally(H)) + continue turf_check + T.hotspot_expose(1000, 50, 1) + T.create_fire(fire_power) + + +// //We use hotspot_expose() to allow firesuits to protect from this aura. +// var/turf/location = get_turf(H) +// location.hotspot_expose(1000, 50, 1) + + owner.adjust_instability(1) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm b/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm new file mode 100644 index 00000000000..44bd8feea0d --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/aura/frost_aura.dm @@ -0,0 +1,42 @@ +/datum/technomancer/spell/frost_aura + name = "Chilling Aura" + desc = "Lowers the core body temperature of everyone around you (except for your friends), causing them to freeze to death if \ + they stay within four meters of you." + enhancement_desc = "The chill becomes lethal." + cost = 150 + obj_path = /obj/item/weapon/spell/aura/frost + ability_icon_state = "tech_frostaura" + +/obj/item/weapon/spell/aura/frost + name = "chilling aura" + desc = "Your enemies will find it hard to chase you if they freeze to death." + icon_state = "generic" + cast_methods = null + aspect = ASPECT_FROST + glow_color = "#00B3FF" + +/obj/item/weapon/spell/aura/frost/process() + if(!pay_energy(100)) + qdel(src) + var/list/nearby_mobs = range(4,owner) + + var/temp_change = 25 + var/temp_cap = 260 // Just above the damage threshold, for humans. Unathi are less fortunate. + + if(check_for_scepter()) + temp_change = 50 + temp_cap = 200 + for(var/mob/living/carbon/human/H in nearby_mobs) + if(is_ally(H)) + continue + + var/protection = H.get_cold_protection(1000) + if(protection < 1) + var/cold_factor = abs(protection - 1) + H.bodytemperature = max( (H.bodytemperature - temp_change) * cold_factor, temp_cap) + +// //We use hotspot_expose() to allow firesuits to protect from this aura. +// var/turf/location = get_turf(H) +// location.hotspot_expose(1, 50, 1) + + owner.adjust_instability(1) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm b/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm new file mode 100644 index 00000000000..a270ef16e35 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/aura/shock_aura.dm @@ -0,0 +1,41 @@ +/datum/technomancer/spell/shock_aura + name = "Electric Aura" + desc = "Repeatively electrocutes enemies within four meters of you, as well as nearby electronics." + cost = 150 + obj_path = /obj/item/weapon/spell/aura/shock + ability_icon_state = "tech_shockaura" + +/obj/item/weapon/spell/aura/shock + name = "electric aura" + desc = "Now you are a walking electrical storm." + icon_state = "generic" + cast_methods = null + aspect = ASPECT_SHOCK + glow_color = "#0000FF" //TODO + +/obj/item/weapon/spell/aura/shock/process() + if(!pay_energy(1000)) + qdel(src) + var/list/nearby_mobs = range(4,owner) + var/power = 7 + if(check_for_scepter()) + power = 15 + for(var/obj/machinery/light/light in range(7, owner)) + light.flicker() + for(var/mob/living/L in nearby_mobs) + if(is_ally(L)) + continue + + if(L.isSynthetic()) + L << "ERROR: Electrical fault detected!" + L.stuttering += 3 + + if(ishuman(L)) + var/mob/living/carbon/human/H = L + var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO)) + H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected) + else + L.electrocute_act(power, src, 1.0, BP_TORSO) + + + owner.adjust_instability(3) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm new file mode 100644 index 00000000000..6307d2f4ca2 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm @@ -0,0 +1,42 @@ +/datum/technomancer/spell/unstable_aura + name = "Degen Aura" + desc = "Destabalizes your enemies, breaking their elements down to their basic levels, slowly killing them from the inside. \ + For each person within fourteen meters of you, they suffer 1% of their current health every second. Your allies are unharmed." + cost = 150 + obj_path = /obj/item/weapon/spell/aura/unstable + ability_icon_state = "tech_unstableaura" + +/obj/item/weapon/spell/aura/unstable + name = "degen aura" + desc = "Breaks down your entities from the inside." + icon_state = "generic" + cast_methods = null + aspect = ASPECT_UNSTABLE + glow_color = "#0000FF" //TODO + +/obj/item/weapon/spell/aura/unstable/process() + if(!pay_energy(200)) + qdel(src) + var/list/nearby_mobs = range(14,owner) + for(var/mob/living/L in nearby_mobs) + if(is_ally(L)) + continue + + var/damage_to_inflict = max(L.health / L.maxHealth, 0) // Otherwise, those in crit would actually be healed. + + var/armor_factor = abs(L.getarmor(null, "energy") - 100) + armor_factor = armor_factor / 100 + + damage_to_inflict = damage_to_inflict * armor_factor + + if(L.isSynthetic()) + L.adjustBruteLoss(damage_to_inflict) + if(damage_to_inflict && prob(10)) + L << "Your chassis seems to slowly be decaying and breaking down." + else + L.adjustToxLoss(damage_to_inflict) + if(damage_to_inflict && prob(10)) + L << "You feel almost like you're melting from the inside!" + + + owner.adjust_instability(2) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/blink.dm b/code/game/gamemodes/technomancer/spells/blink.dm new file mode 100644 index 00000000000..43ca683fd58 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/blink.dm @@ -0,0 +1,70 @@ +/datum/technomancer/spell/blink + name = "Blink" + desc = "Force the target to teleport a short distance away. This target could be anything from something lying on the ground, to someone trying to \ + fight you, or even yourself. Using this on someone next to you makes their potential distance after teleportation greater." + enhancement_desc = "Blink distance is increased greatly." + cost = 100 + obj_path = /obj/item/weapon/spell/blink + +/obj/item/weapon/spell/blink + name = "blink" + desc = "Teleports you or someone else a short distance away." + icon_state = "blink" + cast_methods = CAST_RANGED | CAST_MELEE | CAST_USE + aspect = ASPECT_TELE + +/proc/safe_blink(atom/movable/AM, var/range = 3) + if(AM.anchored || !AM.loc) + return + var/turf/starting = get_turf(AM) + var/list/targets = list() + + valid_turfs: + for(var/turf/simulated/T in range(AM, range)) + if(T.density || istype(T, /turf/simulated/mineral)) //Don't blink to vacuum or a wall + continue + for(var/atom/movable/stuff in T.contents) + if(stuff.density) + continue valid_turfs + targets.Add(T) + + if(!targets.len) + return + var/turf/simulated/destination = null + + destination = pick(targets) + + if(destination) + if(ismob(AM)) + var/mob/living/L = AM + if(L.buckled) + L.buckled.unbuckle_mob() + AM.forceMove(destination) + AM.visible_message("\The [AM] vanishes!") + AM << "You suddenly appear somewhere else!" + new /obj/effect/effect/sparks(destination) + new /obj/effect/effect/sparks(starting) + return + +/obj/item/weapon/spell/blink/on_ranged_cast(atom/hit_atom, mob/user) + if(istype(hit_atom, /atom/movable)) + var/atom/movable/AM = hit_atom + if(check_for_scepter()) + safe_blink(user, 6) + else + safe_blink(AM, 3) + +/obj/item/weapon/spell/blink/on_use_cast(mob/user) + if(check_for_scepter()) + safe_blink(user, 10) + else + safe_blink(user, 6) + +/obj/item/weapon/spell/blink/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) + if(istype(hit_atom, /atom/movable)) + var/atom/movable/AM = hit_atom + visible_message("\The [user] reaches out towards \the [AM] with a glowing hand.") + if(check_for_scepter()) + safe_blink(user, 10) + else + safe_blink(AM, 6) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/chroma.dm b/code/game/gamemodes/technomancer/spells/chroma.dm new file mode 100644 index 00000000000..fb459620c0f --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/chroma.dm @@ -0,0 +1,44 @@ +/datum/technomancer/spell/chroma + name = "Chroma" + desc = "Creates light around you, or in a location of your choosing. You can choose what color the light is. This could be \ + useful to trick someone into believing you're casting a different spell, or perhaps just for fun." + cost = 25 + obj_path = /obj/item/weapon/spell/chroma + +/obj/item/weapon/spell/chroma + name = "chroma" + desc = "The colors are dazzling." + icon_state = "darkness" + cast_methods = CAST_RANGED | CAST_USE + aspect = ASPECT_LIGHT + var/color_to_use = "#FFFFFF" + +/obj/item/weapon/spell/chroma/New() + ..() + set_light(6, 5, l_color = color_to_use) + +/obj/effect/chroma + name = "chroma" + desc = "How are you examining what which cannot be seen?" + invisibility = 101 + var/time_to_die = 2 MINUTES //Despawn after this time, if set. + +/obj/effect/chroma/New(var/newloc, var/new_color = "#FFFFFF") + ..() + set_light(6, 5, l_color = new_color) + if(time_to_die) + spawn(time_to_die) + qdel(src) + +/obj/item/weapon/spell/chroma/on_ranged_cast(atom/hit_atom, mob/user) + var/turf/T = get_turf(hit_atom) + if(T) + new /obj/effect/chroma(T, color_to_use) + user << "You shift the light onto \the [T]." + qdel(src) + +/obj/item/weapon/spell/chroma/on_use_cast(mob/user) + var/new_color = input(user, "Choose the color you want your light to be.", "Color selection") as null|color + if(new_color) + color_to_use = new_color + set_light(6, 5, l_color = new_color) diff --git a/code/game/gamemodes/technomancer/spells/condensation.dm b/code/game/gamemodes/technomancer/spells/condensation.dm new file mode 100644 index 00000000000..9425b920a59 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/condensation.dm @@ -0,0 +1,34 @@ +/datum/technomancer/spell/condensation + name = "Condensation" + desc = "This causes rapid formation of liquid at the target, causing floors to become wet, entities to be soaked, and fires \ + to be extinguished. You can also fill contains with water if they are targeted directly." + ability_icon_state = "tech_condensation" + cost = 50 + obj_path = /obj/item/weapon/spell/condensation + +/obj/item/weapon/spell/condensation + name = "condensation" + desc = "Stronger than it appears." + icon_state = "condensation" + cast_methods = CAST_RANGED + aspect = ASPECT_AIR + cooldown = 2 SECONDS + +/obj/item/weapon/spell/condensation/on_ranged_cast(atom/hit_atom, mob/user) + if(pay_energy(200)) + if(istype(hit_atom, /turf/simulated)) + var/turf/simulated/T = hit_atom + + for(var/direction in alldirs + null) // null is for the center tile. + spawn(1) + var/turf/desired_turf = get_step(T,direction) + if(desired_turf) // This shouldn't fail but... + var/obj/effect/effect/water/W = PoolOrNew(/obj/effect/effect/water, get_turf(T)) + W.create_reagents(60) + W.reagents.add_reagent(id = "water", amount = 60, data = null, safety = 0) + W.set_color() + W.set_up(desired_turf) + flick(initial(icon_state),W) // Otherwise pooling causes the animation to stay stuck at the end. + else if(hit_atom.reagents && !ismob(hit_atom)) + hit_atom.reagents.add_reagent(id = "water", amount = 60, data = null, safety = 0) + adjust_instability(5) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm new file mode 100644 index 00000000000..566f3d7ceb5 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/control.dm @@ -0,0 +1,164 @@ +/datum/technomancer/spell/control + name = "Control" + desc = "This function allows you to exert control over simple-minded entities to an extent, such as spiders and carp. \ + Controlled entities will not be hostile towards you, and you may direct them to move to specific areas or to attack specific \ + targets. This function will have no effect on entities of higher intelligence, such as humans and similar alien species, as it's \ + not true mind control, but merely pheromone synthesis for living animals, and electronic hacking for simple robots. The green web \ + around the entity is merely a hologram used to allow the user to know if the creature is safe or not." + cost = 200 + obj_path = /obj/item/weapon/spell/control + +/mob/living/carbon/human/proc/technomancer_control() + place_spell_in_hand(/obj/item/weapon/spell/control) + +/obj/item/weapon/spell/control + name = "control" + icon_state = "control" + desc = "Now you can command your own army!" + cast_methods = CAST_RANGED|CAST_USE + aspect = ASPECT_BIOMED //Not sure if this should be something else. + var/image/control_overlay = null + var/list/controlled_mobs = list() + var/list/allowed_mobs = list( + /mob/living/bot, + /mob/living/simple_animal/cat, + /mob/living/simple_animal/chick, + /mob/living/simple_animal/chicken, + /mob/living/simple_animal/corgi, + /mob/living/simple_animal/cow, + /mob/living/simple_animal/crab, + /mob/living/simple_animal/lizard, + /mob/living/simple_animal/mouse, + /mob/living/simple_animal/parrot, + /mob/living/simple_animal/slime, + /mob/living/simple_animal/adultslime, + /mob/living/simple_animal/tindalos, + /mob/living/simple_animal/yithian, + /mob/living/simple_animal/hostile/bear, + /mob/living/simple_animal/hostile/carp, + /mob/living/simple_animal/hostile/scarybat, + /mob/living/simple_animal/hostile/viscerator, + /mob/living/simple_animal/hostile/retaliate/malf_drone, + /mob/living/simple_animal/hostile/giant_spider, + /mob/living/simple_animal/hostile/hivebot, + /mob/living/simple_animal/hostile/diyaab, //Doubt these will get used but might as well, + /mob/living/simple_animal/hostile/samak, + /mob/living/simple_animal/hostile/shantak + ) + +//This unfortunately is gonna be rather messy due to the various mobtypes involved. +/obj/item/weapon/spell/control/proc/select(var/mob/living/L) + if(!(is_type_in_list(L, allowed_mobs))) + return 0 + + if(istype(L, /mob/living/simple_animal)) + var/mob/living/simple_animal/SA = L + SA.ai_inactive = 1 + SA.friends |= src.owner + SA.stance = STANCE_IDLE + + L.overlays |= control_overlay + controlled_mobs |= L + +/obj/item/weapon/spell/control/proc/deselect(var/mob/living/L) + if(!(L in controlled_mobs)) + return 0 + + if(istype(L, /mob/living/simple_animal)) + var/mob/living/simple_animal/SA = L + SA.ai_inactive = 1 + if(istype(SA, /mob/living/simple_animal/hostile)) + var/mob/living/simple_animal/hostile/SAH = SA + SAH.friends.Remove(owner) + + L.overlays.Remove(control_overlay) + controlled_mobs.Remove(L) + +/obj/item/weapon/spell/control/proc/move_all(turf/T) + for(var/mob/living/living in controlled_mobs) + if(living.stat) + deselect(living) + continue + if(istype(living, /mob/living/simple_animal)) + var/mob/living/simple_animal/SA = living + SA.target_mob = null + SA.stance = STANCE_IDLE + walk_towards(SA,T,SA.speed) + else + walk_towards(living,T,5) + +/obj/item/weapon/spell/control/proc/attack_all(mob/target) + for(var/mob/living/L in controlled_mobs) + if(L.stat) + deselect(L) + continue + if(istype(L, /mob/living/simple_animal/hostile)) + var/mob/living/simple_animal/hostile/SAH + SAH.target_mob = target + else if(istype(L, /mob/living/bot)) + var/mob/living/bot/B = L + B.UnarmedAttack(L) + +/obj/item/weapon/spell/control/New() + control_overlay = image('icons/obj/spells.dmi',"controlled") + ..() + +/obj/item/weapon/spell/control/Destroy() + for(var/mob/living/simple_animal/hostile/SM in controlled_mobs) + deselect(SM) + controlled_mobs = list() + ..() + +/obj/item/weapon/spell/control/on_use_cast(mob/living/user) + if(controlled_mobs.len != 0) + var/choice = alert(user,"Would you like to release control of the entities you are controlling? They won't be friendly \ + to you anymore if you do this, so be careful.","Release Control?","No","Yes") + if(choice == "Yes") + for(var/mob/living/L in controlled_mobs) + deselect(L) + user << "You've released control of all entities you had in control." + + +/obj/item/weapon/spell/control/on_ranged_cast(atom/hit_atom, mob/living/user) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + if(L == user && !controlled_mobs.len) + user << "This function doesn't work on higher-intelligence entities, however since you're \ + trying to use it on yourself, perhaps you're an exception? Regardless, nothing happens." + return 0 + + if(is_type_in_list(L, allowed_mobs)) + if(!(L in controlled_mobs)) //Selecting + if(L.client) + user << "\The [L] seems to resist you!" + return 0 + if(pay_energy(1000)) + select(L) + user << "\The [L] is now under your (limited) control." + else //Deselect them + deselect(L) + user << "You free \the [L] from your grasp." + + else //Let's attack + if(!controlled_mobs.len) + user << "You have no entities under your control to command." + return 0 + if(pay_energy(50 * controlled_mobs.len)) + attack_all(L) + user << "You command your [controlled_mobs.len > 1 ? "entities" : "[controlled_mobs[1]]"] to \ + attack \the [L]." + //This is to stop someone from controlling beepsky and getting him to stun someone 5 times a second. + user.setClickCooldown(8) + owner.adjust_instability(controlled_mobs.len) + + else if(isturf(hit_atom)) + var/turf/T = hit_atom + if(!controlled_mobs.len) + user << "You have no entities under your control to command." + return 0 + if(pay_energy(50 * controlled_mobs.len)) + move_all(T) + owner.adjust_instability(controlled_mobs.len) + user << "You command your [controlled_mobs.len > 1 ? "entities" : "[controlled_mobs[1]]"] to move \ + towards \the [T]." + diff --git a/code/game/gamemodes/technomancer/spells/dispel.dm b/code/game/gamemodes/technomancer/spells/dispel.dm new file mode 100644 index 00000000000..e0de7920c10 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/dispel.dm @@ -0,0 +1,23 @@ +/datum/technomancer/spell/dispel + name = "Dispel" + desc = "Ends most on-going effects caused by another Technomancer function on the target. Useful if you are worried about \ + hitting an ally with a deterimental function, if your opponent has similar capabilities to you, or if you're tired of Instability \ + plaguing you." + cost = 25 + obj_path = /obj/item/weapon/spell/dispel + ability_icon_state = "tech_dispel" + +/obj/item/weapon/spell/dispel + name = "dispel" + desc = "Useful if you're tired of glowing because of a miscast." + icon_state = "dispel" + cast_methods = CAST_RANGED + aspect = ASPECT_BIOMED + +/obj/item/weapon/spell/dispel/on_ranged_cast(atom/hit_atom, mob/living/user) + if(isliving(hit_atom) && pay_energy(1000)) + var/mob/living/target = hit_atom + for(var/obj/item/weapon/inserted_spell/I in target) + I.on_expire(dispelled = 1) + user.adjust_instability(10) + qdel(src) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm new file mode 100644 index 00000000000..0657111f159 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm @@ -0,0 +1,201 @@ +/datum/technomancer/spell/energy_siphon + name = "Energy Siphon" + desc = "This creates a link to a target that drains electricity, converts it to energy that the Core can use, then absorbs it. \ + Every second, electricity is stolen until the link is broken by the target moving too far away, or having no more energy left. \ + Can drain from powercells, microbatteries, and other Cores. The beam created by the siphoning is harmful to touch." + enhancement_desc = "Rate of siphoning is doubled." + cost = 150 + obj_path = /obj/item/weapon/spell/energy_siphon + ability_icon_state = "tech_energysiphon" + +/obj/item/weapon/spell/energy_siphon + name = "energy siphon" + desc = "Now you are an energy vampire." + icon_state = "energy_siphon" + cast_methods = CAST_RANGED + aspect = ASPECT_SHOCK + var/atom/movable/siphoning = null // What the spell is currently draining. Does nothing if null. + var/list/things_to_siphon = list() //Things which are actually drained as a result of the above not being null. + var/flow_rate = 1000 // Limits how much electricity can be drained per second. Measured by default in god knows what. + +/obj/item/weapon/spell/energy_siphon/New() + ..() + processing_objects |= src + +/obj/item/weapon/spell/energy_siphon/Destroy() + stop_siphoning() + processing_objects -= src + ..() + +/obj/item/weapon/spell/energy_siphon/process() + if(!siphoning) + return + if(!pay_energy(100)) + owner << "You can't afford to maintain the siphon link!" + stop_siphoning() + return + if(get_dist(siphoning, get_turf(src)) > 4) + owner << "\The [siphoning] is too far to drain from!" + stop_siphoning() + return + if(!(siphoning in view(owner))) + owner << "\The [siphoning] cannot be seen!" + stop_siphoning() + return + siphon(siphoning, owner) + + + +/obj/item/weapon/spell/energy_siphon/on_ranged_cast(atom/hit_atom, mob/user) + if(istype(hit_atom, /atom/movable)) + var/atom/movable/AM = hit_atom + populate_siphon_list(AM) + if(!things_to_siphon.len) + user << "You cannot steal energy from \a [AM]." + return 0 + siphoning = AM + update_icon() + else + stop_siphoning() + +/obj/item/weapon/spell/energy_siphon/proc/populate_siphon_list(atom/movable/target) + things_to_siphon.Cut() + things_to_siphon |= target // The recursive check below does not add the object being checked to its list. + things_to_siphon |= recursive_content_check(target, things_to_siphon, recursion_limit = 3, client_check = 0, sight_check = 0, include_mobs = 1, include_objects = 1, ignore_show_messages = 1) + for(var/atom/movable/AM in things_to_siphon) + if(ishuman(AM)) // We can drain FBPs, so we can skip the test below. + var/mob/living/carbon/human/H = AM + if(H.isSynthetic()) + continue + if(AM.drain_power(1) <= 0) // This checks if whatever's in the list can be drained from. + things_to_siphon.Remove(AM) + +/obj/item/weapon/spell/energy_siphon/proc/stop_siphoning() + siphoning = null + things_to_siphon.Cut() + update_icon() + +#define SIPHON_CELL_TO_ENERGY 0.5 +#define SIPHON_FBP_TO_ENERGY 5.0 +#define SIPHON_CORE_TO_ENERGY 0.5 + +// This is called every tick, so long as a link exists between the target and the Technomancer. +/obj/item/weapon/spell/energy_siphon/proc/siphon(atom/movable/siphoning, mob/user) + var/list/things_to_drain = things_to_siphon // Temporary list copy of what we're gonna steal from. + var/charge_to_give = 0 // How much energy to give to the Technomancer at the end. + var/flow_remaining = flow_rate + + if(!siphoning) + return 0 + + update_icon() + + //playsound(source = src, soundin = 'TODO', vol = 30, vary = 0, extrarange = 0, falloff = 0, is_global = 0) + + if(check_for_scepter()) + flow_remaining = flow_remaining * 2 + + // First, we drain normal batteries. + if(things_to_drain.len) + // Don't bother with empty stuff. + for(var/atom/movable/AM in things_to_drain) + if(AM.drain_power(1) <= 0) + things_to_drain.Remove(AM) + if(!things_to_drain.len) + return + var/charge_to_steal = round(flow_remaining / things_to_drain.len) // This is to drain all the cells evenly. + for(var/atom/movable/AM in things_to_drain) + var/big_number = AM.drain_power(0,0,charge_to_steal / CELLRATE) // This drains the cell, and leaves us with a big number. + flow_remaining = flow_remaining - (big_number * CELLRATE) // Which we reduce to our needed number by multiplying. + AM.update_icon() // So guns and batteries will display correctly. + charge_to_give = charge_to_give + (flow_rate - flow_remaining) * SIPHON_CELL_TO_ENERGY + // If we have 'leftover' flow, let's try to do more. + if(round(flow_remaining)) + if(ishuman(siphoning)) + var/mob/living/carbon/human/H = siphoning + // Let's drain from FBPs. Note that it is possible for the caster to drain themselves if they are an FBP and desperate. + if(H.isSynthetic()) + var/nutrition_to_steal = flow_remaining * 0.025 // Should steal about 25 nutrition per second by default. + var/old_nutrition = H.nutrition + H.nutrition = max(H.nutrition - nutrition_to_steal, 0) + var/nutrition_delta = old_nutrition - H.nutrition + charge_to_give += nutrition_delta * SIPHON_FBP_TO_ENERGY + flow_remaining = flow_remaining - nutrition_to_steal / 0.025 + // Let's steal some energy from another Technomancer. + if(istype(H.back, /obj/item/weapon/technomancer_core) && H != user) + var/obj/item/weapon/technomancer_core/their_core = H.back + if(their_core.pay_energy(flow_remaining / 2)) // Don't give energy from nothing. + charge_to_give += flow_remaining * SIPHON_CORE_TO_ENERGY + flow_remaining = 0 + + if(charge_to_give) // Shock anyone standing in the beam. + create_lightning(user, siphoning) + + // Now we can actually fill up the core. + if(core.energy < core.max_energy) + give_energy(charge_to_give) + user << "Stolen [charge_to_give * CELLRATE] kJ and converted to [charge_to_give] Core energy." + if( (core.max_energy - core.energy) < charge_to_give ) // We have some overflow, if this is true. + if(user.isSynthetic()) // Let's do something with it, if we're a robot. + charge_to_give = charge_to_give - (core.max_energy - core.energy) + user.nutrition = min(user.nutrition + (charge_to_give / SIPHON_FBP_TO_ENERGY), 400) + user << "Redirected energy to internal microcell." + else + user << "Stolen [charge_to_give * CELLRATE] kJ." + adjust_instability(2) + + if(flow_remaining == flow_rate) // We didn't drain anything. + user << "\The [siphoning] cannot be drained any further." + stop_siphoning() + +/obj/item/weapon/spell/energy_siphon/update_icon() + ..() + if(siphoning) + icon_state = "energy_siphon_drain" + else + icon_state = "energy_siphon" + +/obj/item/weapon/spell/energy_siphon/proc/create_lightning(mob/user, atom/source) + if(user && source && user != source) + spawn(0) + var/i = 7 // process() takes two seconds to tick, this ensures the appearance of a ongoing beam. + while(i) + var/obj/item/projectile/beam/lightning/energy_siphon/lightning = new(get_turf(source)) + lightning.firer = user + lightning.launch(user) + i-- + sleep(3) + +/obj/item/projectile/beam/lightning/energy_siphon + name = "energy stream" + icon_state = "lightning" + kill_count = 6 // Backup plan in-case the effect somehow misses the Technomancer. + power = 5 // This fires really fast, so this may add up if someone keeps standing in the beam. + penetrating = 5 + +/obj/item/projectile/beam/lightning/energy_siphon/Bump(atom/A as mob|obj|turf|area, forced=0) + if(A == firer) // For this, you CAN shoot yourself. + on_impact(A) + + density = 0 + invisibility = 101 + + qdel(src) + return 1 + ..() + +/obj/item/projectile/beam/lightning/energy_siphon/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0) + if(target_mob == firer) // This shouldn't actually occur due to Bump(), but just in-case. + return 1 + if(ishuman(target_mob)) // Otherwise someone else stood in the beam and is going to pay for it. + var/mob/living/carbon/human/H = target_mob + var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO)) + H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected) + else + target_mob.electrocute_act(power, src, 1.0, BP_TORSO) + return 0 // Since this is a continous beam, it needs to keep flying until it hits the Technomancer. + + +#undef SIPHON_CELL_TO_ENERGY +#undef SIPHON_FBP_TO_ENERGY +#undef SIPHON_CORE_TO_ENERGY \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/flame_tongue.dm b/code/game/gamemodes/technomancer/spells/flame_tongue.dm new file mode 100644 index 00000000000..772ee579cc4 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/flame_tongue.dm @@ -0,0 +1,62 @@ +/datum/technomancer/spell/flame_tongue + name = "Flame Tongue" + desc = "Using a miniturized flamethrower in your gloves, you can emit a flame strong enough to melt both your enemies and walls." + cost = 100 + obj_path = /obj/item/weapon/spell/flame_tongue + ability_icon_state = "tech_flametongue" + +/obj/item/weapon/spell/flame_tongue + name = "flame tongue" + icon_state = "flame_tongue" + desc = "Burn!" + cast_methods = CAST_MELEE + aspect = ASPECT_FIRE + var/obj/item/weapon/weldingtool/spell/welder = null + +/obj/item/weapon/spell/flame_tongue/New() + ..() + set_light(3, 2, l_color = "#FF6A00") + visible_message("\The [loc]'s hand begins to emit a flame.") + welder = new /obj/item/weapon/weldingtool/spell(src) + welder.setWelding(1) + +/obj/item/weapon/spell/flame_tongue/Destroy() + qdel(welder) + welder = null + ..() + +/obj/item/weapon/weldingtool/spell + name = "flame" + +/obj/item/weapon/weldingtool/spell/process() + return + +//Needed to make the spell welder have infinite fuel. Don't worry, it uses energy instead. +/obj/item/weapon/weldingtool/spell/remove_fuel() + return 1 + +/obj/item/weapon/weldingtool/spell/eyecheck(mob/user as mob) + return + +/obj/item/weapon/spell/flame_tongue/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) + if(isliving(hit_atom) && user.a_intent != I_HELP) + var/mob/living/L = hit_atom + if(pay_energy(1000)) + visible_message("\The [user] reaches out towards \the [L] with the flaming hand, and they ignite!") + L << "You ignite!" + L.fire_act() + owner.adjust_instability(12) + else + //This is needed in order for the welder to work, and works similarly to grippers. + welder.loc = user + var/resolved = hit_atom.attackby(welder, user) + if(!resolved && welder && hit_atom) + if(pay_energy(500)) + welder.attack(hit_atom, user, def_zone) + owner.adjust_instability(4) + if(welder && user && (welder.loc == user)) + welder.loc = src + else + welder = null + qdel(src) + return diff --git a/code/game/gamemodes/technomancer/spells/gambit.dm b/code/game/gamemodes/technomancer/spells/gambit.dm new file mode 100644 index 00000000000..797536cc456 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/gambit.dm @@ -0,0 +1,31 @@ +/datum/technomancer/spell/gambit + name = "Gambit" + desc = "This function causes you to receive a random function, including those which you haven't purchased." + ability_icon_state = "tech_gambit" + cost = 50 + obj_path = /obj/item/weapon/spell/gambit + +/var/global/list/all_technomancer_gambit_spells = typesof(/obj/item/weapon/spell) - list( + /obj/item/weapon/spell, + /obj/item/weapon/spell/gambit, + /obj/item/weapon/spell/projectile, + /obj/item/weapon/spell/aura, + /obj/item/weapon/spell/insert, + /obj/item/weapon/spell/spawner, + /obj/item/weapon/spell/summon) + +/obj/item/weapon/spell/gambit + name = "gambit" + desc = "Do you feel lucky?" + icon_state = "gambit" + cast_methods = CAST_USE + aspect = ASPECT_UNSTABLE + +/obj/item/weapon/spell/gambit/on_use_cast(mob/living/carbon/human/user) + if(pay_energy(200)) + adjust_instability(3) + var/obj/item/weapon/spell/random_spell = pick(all_technomancer_gambit_spells) + if(random_spell) + user.drop_from_inventory(src, null) + user.place_spell_in_hand(random_spell) + qdel(src) diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm new file mode 100644 index 00000000000..3c725063204 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/illusion.dm @@ -0,0 +1,186 @@ +/datum/technomancer/spell/illusion + name = "Illusion" + desc = "Allows you to create and control a holographic illusion, that can take the form of most object or entities." + enhancement_desc = "Illusions will be made of hard light, allowing the interception of attacks, appearing more realistic." + cost = 100 + obj_path = /obj/item/weapon/spell/illusion + ability_icon_state = "tech_illusion" + +/obj/item/weapon/spell/illusion + name = "illusion" + icon_state = "illusion" + desc = "Now you can toy with the minds of the whole colony." + aspect = ASPECT_LIGHT + cast_methods = CAST_RANGED | CAST_USE + var/atom/movable/copied = null + var/mob/living/simple_animal/illusion/illusion = null + +/obj/item/weapon/spell/illusion/on_ranged_cast(atom/hit_atom, mob/user) + if(istype(hit_atom, /atom/movable)) + var/atom/movable/AM = hit_atom + if(pay_energy(500)) + copied = AM + update_icon() + user << "You've copied \the [AM]'s appearance." + user << 'sound/weapons/flash.ogg' + return 1 + else if(istype(hit_atom, /turf)) + var/turf/T = hit_atom + if(!illusion) + if(!copied) + copied = user + if(pay_energy(1000)) // 4 + illusion = new(T) + illusion.copy_appearance(copied) + if(ishuman(copied)) + var/mob/living/carbon/human/H = copied + // This is to try to have the illusion move at the same rate the real mob world. + illusion.step_delay = max(H.movement_delay() + 4, 3) + user << "An illusion of \the [copied] is made on \the [T]." + user << 'sound/effects/pop.ogg' + return 1 + else + if(pay_energy(300)) + spawn(1) + illusion.walk_loop(T) + +/obj/item/weapon/spell/illusion/on_use_cast(mob/user) + if(illusion) + var/choice = alert(user, "Would you like to have \the [illusion] speak, or do an emote?", "Illusion", "Speak","Emote","Cancel") + switch(choice) + if("Cancel") + return + if("Speak") + var/what_to_say = input(user, "What do you want \the [illusion] to say?","Illusion Speak") as null|text + //what_to_say = sanitize(what_to_say) //Sanitize occurs inside say() already. + if(what_to_say) + illusion.say(what_to_say) + if("Emote") + var/what_to_emote = input(user, "What do you want \the [illusion] to do?","Illusion Emote") as null|text + if(what_to_emote) + illusion.emote(what_to_emote) + +/obj/item/weapon/spell/illusion/Destroy() + if(illusion) + qdel(illusion) + ..() + +// Makes a tiny overlay of the thing the player has copied, so they can easily tell what they currently have. +/obj/item/weapon/spell/illusion/update_icon() + overlays.Cut() + if(copied) + var/image/temp_image = image(copied) + var/matrix/M = matrix() + M.Scale(0.5, 0.5) + temp_image.transform = M +// temp_image.pixel_y = 8 + src.overlays.Add(temp_image) + + +/mob/living/simple_animal/illusion + name = "illusion" // gets overwritten + desc = "If you can read me, the game broke. Please report this to a coder." + resistance = 1000 // holograms are tough + wander = 0 + response_help = "pushes a hand through" + response_disarm = "tried to disarm" + response_harm = "tried to punch" + var/atom/movable/copying = null + universal_speak = 1 + var/realistic = 0 + var/list/path = list() //Used for AStar pathfinding. + var/walking = 0 + var/step_delay = 10 + +/mob/living/simple_animal/illusion/proc/copy_appearance(var/atom/movable/thing_to_copy) + if(!thing_to_copy) + return 0 + name = thing_to_copy.name + desc = thing_to_copy.desc + gender = thing_to_copy.gender + appearance = thing_to_copy.appearance + copying = thing_to_copy + return 1 + +// We use special movement code for illusions, because BYOND's default pathfinding will use diagonal movement if it results +// in the shortest path. As players are incapable of moving in diagonals, we must do this or else illusions will not be convincing. +/mob/living/simple_animal/illusion/proc/calculate_path(var/turf/targeted_loc) + if(!path.len || !path) + spawn(0) + path = AStar(loc, targeted_loc, /turf/proc/CardinalTurfs, /turf/proc/Distance, 0, 10, id = null) + if(!path) + path = list() + return + +/mob/living/simple_animal/illusion/proc/walk_path(var/turf/targeted_loc) + if(path && path.len) + step_to(src, path[1]) + path -= path[1] + return + else + if(targeted_loc) + calculate_path(targeted_loc) + +/mob/living/simple_animal/illusion/proc/walk_loop(var/turf/targeted_loc) + if(walking) //Already busy moving somewhere else. + return 0 + walking = 1 + calculate_path(targeted_loc) + if(!targeted_loc) + walking = 0 + return 0 + if(path.len == 0) + calculate_path(targeted_loc) + while(loc != targeted_loc) + walk_path(targeted_loc) + sleep(step_delay) + walking = 0 + return 1 + +// Because we can't perfectly duplicate some examine() output, we directly examine the AM it is copying. It's messy but +// this is to prevent easy checks from the opposing force. +/mob/living/simple_animal/illusion/examine(mob/user) + if(copying) + copying.examine(user) + return + ..() + +/mob/living/simple_animal/illusion/bullet_act(var/obj/item/projectile/P) + if(!P) + return + + if(realistic) + return ..() + + return PROJECTILE_FORCE_MISS + +/mob/living/simple_animal/illusion/attack_hand(mob/living/carbon/human/M) + if(!realistic) + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M]'s hand goes through \the [src]!") + return + else + switch(M.a_intent) + + if(I_HELP) + M.visible_message("[M] hugs [src] to make \him feel better!", \ + "You hug [src] to make \him feel better!") + playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + + if(I_DISARM) + playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + visible_message("[M] attempted to disarm [src]!") + M.do_attack_animation(src) + + if(I_GRAB) + ..() + + if(I_HURT) + adjustBruteLoss(harm_intent_damage) + M.visible_message("\red [M] [response_harm] \the [src]") + M.do_attack_animation(src) + + return + +/mob/living/simple_animal/illusion/ex_act() + return diff --git a/code/game/gamemodes/technomancer/spells/insert/asphyxiation.dm b/code/game/gamemodes/technomancer/spells/insert/asphyxiation.dm new file mode 100644 index 00000000000..555ff9f5592 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/asphyxiation.dm @@ -0,0 +1,75 @@ +/datum/technomancer/spell/asphyxiation + name = "Asphyxiation" + desc = "Launches a projectile at a target. If the projectile hits, a short-lived toxin is created inside what the projectile \ + hits, which inhibits the delivery of oxygen. The effectiveness of the toxin is heavily dependant on how healthy the target is, \ + with the target taking more damage the more wounded they are. The effect lasts for twelve seconds." + cost = 140 + obj_path = /obj/item/weapon/spell/insert/asphyxiation + +/obj/item/weapon/spell/insert/asphyxiation + name = "asphyxiation" + desc = "Now you can cause suffication from afar!" + icon_state = "generic" + cast_methods = CAST_RANGED + aspect = ASPECT_BIOMED + light_color = "#FF5C5C" + inserting = /obj/item/weapon/inserted_spell/asphyxiation + +// maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss + +/obj/item/weapon/inserted_spell/asphyxiation/on_insert() + spawn(1) + if(ishuman(host)) + var/mob/living/carbon/human/H = host + if(H.isSynthetic() || H.does_not_breathe) // It's hard to choke a robot or something that doesn't breathe. + on_expire() + return + H << "You are having difficulty breathing!" + var/pulses = 3 + var/warned_victim = 0 + while(pulses) + if(!warned_victim) + warned_victim = predict_crit(pulses, H, 0) + sleep(4 SECONDS) + H.adjustOxyLoss(5) + var/health_lost = H.maxHealth - H.getOxyLoss() + H.getToxLoss() + H.getFireLoss() + H.getBruteLoss() + H.getCloneLoss() + H.adjustOxyLoss(round(abs(health_lost * 0.25))) + //world << "Inflicted [round(abs(health_lost * 0.25))] damage!" + pulses-- + if(src) //We might've been dispelled at this point and deleted, better safe than sorry. + on_expire() + +/obj/item/weapon/inserted_spell/asphyxiation/on_expire() + ..() + +// if((getOxyLoss() > (species.total_health/2)) || (health <= config.health_threshold_crit)) + +/obj/item/weapon/inserted_spell/asphyxiation/proc/predict_crit(var/pulses_remaining, var/mob/living/carbon/human/victim, var/previous_damage = 0) + if(pulses_remaining <= 0) // Infinite loop protection + return 0 + var/health_lost + var/predicted_damage + // First, we sum up all the damage we have. + health_lost = victim.getOxyLoss() + victim.getToxLoss() + victim.getFireLoss() + victim.getBruteLoss() + victim.getCloneLoss() + // Then add the damage we had done in the last check, if such a number exists, as this is a recursive proc. + health_lost += previous_damage + // We inflict 25% of the total health loss as oxy damage. + predicted_damage = round(abs(health_lost * 0.25)) + // Add our prediction to previous_damage, so we will remember it for the next iteration. + previous_damage = previous_damage + predicted_damage + // Now do this again a few more times. + if(pulses_remaining) + pulses_remaining-- + return .(pulses_remaining, victim, previous_damage) + // Now check if our damage predictions are going to cause the victim to go into crit if no healing occurs. + if(previous_damage + health_lost >= victim.maxHealth) // We're probably going to hardcrit + victim << "A feeling of immense dread starts to overcome you as everything starts \ + to fade to black..." + //world << "Predicted hardcrit." + return 1 + else if(predicted_damage >= victim.species.total_health / 2) // Or perhaps we're gonna go into 'oxy crit'. + victim << "You feel really light-headed, and everything seems to be fading..." + //world << "Predicted oxycrit." + return 1 + //If we're at this point, the spell is not going to result in critting. + return 0 \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/insert/corona.dm b/code/game/gamemodes/technomancer/spells/insert/corona.dm new file mode 100644 index 00000000000..fbeb2555178 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/corona.dm @@ -0,0 +1,35 @@ +/datum/technomancer/spell/corona + name = "Corona" + desc = "Causes the victim to glow very brightly, which while harmless in itself, makes it easier for them to be hit. The \ + bright glow also makes it very difficult to be stealthy. The effect lasts for one minute." + cost = 100 + obj_path = /obj/item/weapon/spell/insert/corona + ability_icon_state = "tech_corona" + +/obj/item/weapon/spell/insert/corona + name = "corona" + desc = "How brillient!" + icon_state = "radiance" + cast_methods = CAST_RANGED + aspect = ASPECT_LIGHT + light_color = "#D9D900" + spell_light_intensity = 5 + spell_light_range = 3 + inserting = /obj/item/weapon/inserted_spell/corona + +/obj/item/weapon/inserted_spell/corona/on_insert() + spawn(1) + if(isliving(host)) + var/mob/living/L = host + L.evasion -= 2 + L.visible_message("You start to glow very brightly!") + spawn(1 MINUTE) + if(src) + on_expire() + +/obj/item/weapon/inserted_spell/corona/on_expire() + if(isliving(host)) + var/mob/living/L = host + L.evasion += 2 + L << "Your glow has ended." + ..() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/insert/haste.dm b/code/game/gamemodes/technomancer/spells/insert/haste.dm new file mode 100644 index 00000000000..a378d98b875 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/haste.dm @@ -0,0 +1,34 @@ +/datum/technomancer/spell/haste + name = "Haste" + desc = "Allows the target to run at speeds that should not be possible for an ordinary being. For three seconds, the target \ + runs extremly fast, and cannot be slowed by any means." + cost = 100 + obj_path = /obj/item/weapon/spell/insert/haste + ability_icon_state = "tech_haste" + +/obj/item/weapon/spell/insert/haste + name = "haste" + desc = "Now you can outrun a Teshari!" + icon_state = "haste" + cast_methods = CAST_RANGED + aspect = ASPECT_FORCE + light_color = "#FF5C5C" + inserting = /obj/item/weapon/inserted_spell/haste + +/obj/item/weapon/inserted_spell/haste/on_insert() + spawn(1) + if(isliving(host)) + var/mob/living/L = host + L.force_max_speed = 1 + L << "You suddenly find it much easier to move." + L.adjust_instability(10) + spawn(3 SECONDS) + if(src) + on_expire() + +/obj/item/weapon/inserted_spell/haste/on_expire() + if(isliving(host)) + var/mob/living/L = host + L.force_max_speed = 0 + L << "You feel slow again." + ..() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/insert/insert.dm b/code/game/gamemodes/technomancer/spells/insert/insert.dm new file mode 100644 index 00000000000..d74e570d3ff --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/insert.dm @@ -0,0 +1,56 @@ +//Template for spells which put something inside someone else, good for buffs/debuffs, damage over times and heals over time. + +/obj/item/weapon/spell/insert + name = "insert template" + desc = "Tell a coder if you can read this in-game." + icon_state = "purify" + cast_methods = CAST_MELEE + var/spell_color = "#03A728" + var/spell_light_intensity = 2 + var/spell_light_range = 3 + var/obj/item/weapon/inserted_spell/inserting = null + var/allow_stacking = 0 + +/obj/item/weapon/spell/insert/New() + ..() + set_light(spell_light_range, spell_light_intensity, l_color = light_color) + +/obj/item/weapon/inserted_spell + var/mob/living/carbon/human/origin = null + var/mob/living/host = null + +/obj/item/weapon/inserted_spell/New(var/newloc, var/user, var/obj/item/weapon/spell/insert/inserter) + ..(newloc) + host = newloc + origin = user + if(light_color) + spawn(1) + set_light(inserter.spell_light_range, inserter.spell_light_intensity, inserter.spell_color) + on_insert() + +/obj/item/weapon/inserted_spell/proc/on_insert() + return + +/obj/item/weapon/inserted_spell/proc/on_expire(var/dispelled = 0) + qdel(src) + return + +/obj/item/weapon/spell/insert/proc/insert(var/mob/living/L, mob/user) + if(inserting) + if(!allow_stacking) + for(var/obj/item/weapon/inserted_spell/IS in L.contents) + if(IS.type == inserting) + user << "\The [L] is already affected by \the [src]." + return + new inserting(L,user,src) + qdel(src) + +/obj/item/weapon/spell/insert/on_melee_cast(atom/hit_atom, mob/user) + if(istype(hit_atom, /mob/living)) + var/mob/living/L = hit_atom + insert(L,user) + +/obj/item/weapon/spell/insert/on_ranged_cast(atom/hit_atom, mob/user) + if(istype(hit_atom, /mob/living)) + var/mob/living/L = hit_atom + insert(L,user) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_burns.dm b/code/game/gamemodes/technomancer/spells/insert/mend_burns.dm new file mode 100644 index 00000000000..37a9be3b189 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/mend_burns.dm @@ -0,0 +1,28 @@ +/datum/technomancer/spell/mend_burns + name = "Mend Burns" + desc = "Heals minor burns, such as from exposure to flame, electric shock, or lasers. \ + Instability is split between the target and technomancer, if seperate." + cost = 50 + obj_path = /obj/item/weapon/spell/insert/mend_burns + ability_icon_state = "tech_mendburns" + +/obj/item/weapon/spell/insert/mend_burns + name = "mend burns" + desc = "Ointment is a thing of the past." + icon_state = "mend_burns" + cast_methods = CAST_MELEE + aspect = ASPECT_BIOMED + light_color = "#FF5C5C" + inserting = /obj/item/weapon/inserted_spell/mend_burns + +/obj/item/weapon/inserted_spell/mend_burns/on_insert() + spawn(1) + if(ishuman(host)) + var/mob/living/carbon/human/H = host + for(var/i = 0, i<25,i++) + if(H) + H.adjustFireLoss(-1) + H.adjust_instability(0.5) + origin.adjust_instability(0.5) + sleep(10) + on_expire() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_metal.dm b/code/game/gamemodes/technomancer/spells/insert/mend_metal.dm new file mode 100644 index 00000000000..3d621dc5ed2 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/mend_metal.dm @@ -0,0 +1,31 @@ +/datum/technomancer/spell/mend_metal + name = "Mend Metal" + desc = "Restores integrity to external robotic components. Instability is split between the target and technomancer, if seperate." + cost = 50 + obj_path = /obj/item/weapon/spell/insert/mend_metal + ability_icon_state = "tech_mendwounds" + +/obj/item/weapon/spell/insert/mend_metal + name = "mend metal" + desc = "A roboticist is now obsolete." + icon_state = "mend_wounds" + cast_methods = CAST_MELEE + aspect = ASPECT_BIOMED + light_color = "#FF5C5C" + inserting = /obj/item/weapon/inserted_spell/mend_metal + +/obj/item/weapon/inserted_spell/mend_metal/on_insert() + spawn(1) + if(ishuman(host)) + var/mob/living/carbon/human/H = host + for(var/i = 0, i<25,i++) + if(H) + for(var/obj/item/organ/external/O in H.organs) + if(O.robotic < ORGAN_ROBOT) // Robot parts only. + continue + O.heal_damage(1, 0, internal = 1, robo_repair = 1) + + H.adjust_instability(0.5) + origin.adjust_instability(0.5) + sleep(10) + on_expire() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm b/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm new file mode 100644 index 00000000000..cdc319dd735 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/mend_organs.dm @@ -0,0 +1,31 @@ +/datum/technomancer/spell/mend_organs + name = "Mend Organs" + desc = "Heals the target's internal organs, both organic and robotic. Instability is split between the target \ + and technomancer, if seperate." + cost = 75 + obj_path = /obj/item/weapon/spell/insert/mend_organs + ability_icon_state = "tech_mendwounds" + +/obj/item/weapon/spell/insert/mend_organs + name = "mend organs" + desc = "Now nobody will ever need surgery." + icon_state = "mend_wounds" + cast_methods = CAST_MELEE + aspect = ASPECT_BIOMED + light_color = "#FF5C5C" + inserting = /obj/item/weapon/inserted_spell/mend_organs + +/obj/item/weapon/inserted_spell/mend_organs/on_insert() + spawn(1) + if(ishuman(host)) + var/mob/living/carbon/human/H = host + for(var/i = 0, i<25,i++) + if(H) + for(var/obj/item/organ/O in H.internal_organs) + if(O.damage > 0) + O.damage = max(O.damage - 0.2, 0) + + H.adjust_instability(0.5) + origin.adjust_instability(0.5) + sleep(10) + on_expire() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_wires.dm b/code/game/gamemodes/technomancer/spells/insert/mend_wires.dm new file mode 100644 index 00000000000..6f24704d4a9 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/mend_wires.dm @@ -0,0 +1,32 @@ +/datum/technomancer/spell/mend_wires + name = "Mend Wires" + desc = "Binds the internal wiring of robotic limbs and components over time. \ + Instability is split between the target and technomancer, if seperate." + cost = 50 + obj_path = /obj/item/weapon/spell/insert/mend_wires + ability_icon_state = "tech_mendwounds" + +/obj/item/weapon/spell/insert/mend_wires + name = "mend wires" + desc = "A roboticist is now obsolete." + icon_state = "mend_wounds" + cast_methods = CAST_MELEE + aspect = ASPECT_BIOMED + light_color = "#FF5C5C" + inserting = /obj/item/weapon/inserted_spell/mend_wires + +/obj/item/weapon/inserted_spell/mend_wires/on_insert() + spawn(1) + if(ishuman(host)) + var/mob/living/carbon/human/H = host + for(var/i = 0, i<25,i++) + if(H) + for(var/obj/item/organ/external/O in H.organs) + if(O.robotic < ORGAN_ROBOT) // Robot parts only. + continue + O.heal_damage(0, 1, internal = 1, robo_repair = 1) + + H.adjust_instability(0.5) + origin.adjust_instability(0.5) + sleep(10) + on_expire() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/insert/mend_wounds.dm b/code/game/gamemodes/technomancer/spells/insert/mend_wounds.dm new file mode 100644 index 00000000000..5ae40915d0b --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/mend_wounds.dm @@ -0,0 +1,28 @@ +/datum/technomancer/spell/mend_wounds + name = "Mend Wounds" + desc = "Heals minor wounds, such as cuts, bruises, and other non-lifethreatening injuries. \ + Instability is split between the target and technomancer, if seperate." + cost = 50 + obj_path = /obj/item/weapon/spell/insert/mend_wounds + ability_icon_state = "tech_mendwounds" + +/obj/item/weapon/spell/insert/mend_wounds + name = "mend wounds" + desc = "Watch your wounds close up before your eyes." + icon_state = "mend_wounds" + cast_methods = CAST_MELEE + aspect = ASPECT_BIOMED + light_color = "#FF5C5C" + inserting = /obj/item/weapon/inserted_spell/mend_wounds + +/obj/item/weapon/inserted_spell/mend_wounds/on_insert() + spawn(1) + if(ishuman(host)) + var/mob/living/carbon/human/H = host + for(var/i = 0, i<25,i++) + if(H) + H.adjustBruteLoss(-1) + H.adjust_instability(0.5) + origin.adjust_instability(0.5) + sleep(10) + on_expire() diff --git a/code/game/gamemodes/technomancer/spells/insert/purify.dm b/code/game/gamemodes/technomancer/spells/insert/purify.dm new file mode 100644 index 00000000000..0f5d404c4e7 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/purify.dm @@ -0,0 +1,34 @@ +/datum/technomancer/spell/purify + name = "Purify" + desc = "Clenses the body of harmful impurities, such as toxins, radiation, viruses, and such. \ + Instability is split between the target and technomancer, if seperate." + cost = 25 + obj_path = /obj/item/weapon/spell/insert/purify + ability_icon_state = "tech_purify" + +/obj/item/weapon/spell/insert/purify + name = "purify" + desc = "Illness and toxins will be no more." + icon_state = "purify" + cast_methods = CAST_MELEE + aspect = ASPECT_BIOMED + light_color = "#03A728" + inserting = /obj/item/weapon/inserted_spell/purify + +/obj/item/weapon/inserted_spell/purify/on_insert() + spawn(1) + if(ishuman(host)) + var/mob/living/carbon/human/H = host + H.sdisabilities = 0 + H.disabilities = 0 +// for(var/datum/disease/D in H.viruses) +// D.cure() + for(var/i = 0, i<25,i++) + if(H) + H.adjustToxLoss(-1) + H.adjustCloneLoss(-1) + H.radiation = max(host.radiation - 2, 0) + H.adjust_instability(0.5) + origin.adjust_instability(0.5) + sleep(10) + on_expire() diff --git a/code/game/gamemodes/technomancer/spells/insert/repel_missiles.dm b/code/game/gamemodes/technomancer/spells/insert/repel_missiles.dm new file mode 100644 index 00000000000..9ebeda9676c --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/insert/repel_missiles.dm @@ -0,0 +1,33 @@ +/datum/technomancer/spell/repel_missiles + name = "Repel Missiles" + desc = "Places a repulsion field around you, which attempts to deflect incoming bullets and lasers, making them 30% less likely \ + to hit you. The field lasts for two minutes and can be granted to yourself or an ally." + cost = 60 + obj_path = /obj/item/weapon/spell/insert/repel_missiles + ability_icon_state = "tech_repelmissiles" + +/obj/item/weapon/spell/insert/repel_missiles + name = "repel missiles" + desc = "Use it before they start shooting at you!" + icon_state = "generic" + cast_methods = CAST_RANGED + aspect = ASPECT_FORCE + light_color = "#FF5C5C" + inserting = /obj/item/weapon/inserted_spell/repel_missiles + +/obj/item/weapon/inserted_spell/repel_missiles/on_insert() + spawn(1) + if(isliving(host)) + var/mob/living/L = host + L.evasion += 2 + L << "You have a repulsion field around you, which will attempt to deflect projectiles." + spawn(2 MINUTES) + if(src) + on_expire() + +/obj/item/weapon/inserted_spell/repel_missiles/on_expire() + if(isliving(host)) + var/mob/living/L = host + L.evasion -= 2 + L << "Your repulsion field has expired." + ..() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/instability_tap.dm b/code/game/gamemodes/technomancer/spells/instability_tap.dm new file mode 100644 index 00000000000..07f7db42fea --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/instability_tap.dm @@ -0,0 +1,26 @@ +/datum/technomancer/spell/instability_tap + name = "Instability Tap" + desc = "Creates a large sum of energy, at the cost of a very large amount of instability afflicting you." + enhancement_desc = "50% more energy gained, 20% less instability gained." + cost = 120 + obj_path = /obj/item/weapon/spell/instability_tap + ability_icon_state = "tech_instabilitytap" + +/obj/item/weapon/spell/instability_tap + name = "instability tap" + desc = "Short term gain for long term consequences never end bad, right?" + cast_methods = CAST_USE + aspect = ASPECT_UNSTABLE + +/obj/item/weapon/spell/instability_tap/New() + ..() + set_light(3, 2, l_color = "#FA58F4") + +/obj/item/weapon/spell/instability_tap/on_use_cast(mob/user) + if(check_for_scepter()) + core.give_energy(7500) + owner.adjust_instability(40) + else + core.give_energy(5000) + owner.adjust_instability(50) + qdel(src) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/mark_recall.dm b/code/game/gamemodes/technomancer/spells/mark_recall.dm new file mode 100644 index 00000000000..0fe6be78084 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/mark_recall.dm @@ -0,0 +1,106 @@ +/datum/technomancer/spell/mark + name = "Mark" + desc = "This function places a specific 'mark' beacon under you, which is used by the Recall function as a destination. \ + Note that using Mark again will move the destination instead of creating a second destination, and only one destination \ + can exist, regardless of who casted Mark." + cost = 50 + obj_path = /obj/item/weapon/spell/mark + ability_icon_state = "tech_mark" + +//The object to teleport to when Recall is used. +/obj/effect/mark_spell + name = "mark" + desc = "This is a strange looking disturbance." + opacity = 0 + density = 0 + anchored = 1 + +//This is global, to avoid looping through a list of all objects, or god forbid, looping through world. +/var/global/obj/effect/mark_spell/mark_spell_ref = null + +/obj/item/weapon/spell/mark + name = "mark" + icon_state = "mark" + desc = "Marks a specific location to be used by Recall." + cast_methods = CAST_USE + aspect = ASPECT_TELE + +/obj/item/weapon/spell/mark/on_use_cast(mob/living/user) + if(!allowed_to_teleport()) // Otherwise you could teleport back to the admin Z-level. + user << "You can't teleport here!" + return 0 + if(pay_energy(1000)) + if(!mark_spell_ref) + mark_spell_ref = new(get_turf(user)) + user << "You mark \the [get_turf(user)] under you." + else + mark_spell_ref.forceMove(get_turf(user)) + user << "Your mark is moved from its old position to \the [get_turf(user)] under you." + owner.adjust_instability(5) + return 1 + else + user << "You can't afford the energy cost!" + return 0 + +//Recall + +/datum/technomancer/spell/recall + name = "Recall" + desc = "This function teleports you to where you placed a mark using the Mark function. Without the Mark function, this \ + function is useless. Note that teleporting takes three seconds. Being incapacitated while teleporting will cancel it." + enhancement_desc = "Recall takes two seconds instead of three." + cost = 50 + obj_path = /obj/item/weapon/spell/recall + ability_icon_state = "tech_recall" + +/obj/item/weapon/spell/recall + name = "recall" + icon_state = "recall" + desc = "This will bring you to your Mark." + cast_methods = CAST_USE + aspect = ASPECT_TELE + +/obj/item/weapon/spell/recall/on_use_cast(mob/living/user) + if(pay_energy(3000)) + if(!mark_spell_ref) + user << "There's no Mark!" + return 0 + else + visible_message("\The [user] starts glowing!") + var/light_intensity = 2 + var/time_left = 3 + if(check_for_scepter()) + time_left = 2 + while(time_left) + if(user.incapacitated()) + visible_message("\The [user]'s glow fades.") + user << "You cannot Recall while incapacitated!" + return 0 + light_intensity++ + set_light(light_intensity, light_intensity, l_color = "#006AFF") + time_left-- + sleep(1 SECOND) + + var/turf/target_turf = get_turf(mark_spell_ref) + var/turf/old_turf = get_turf(user) + + for(var/obj/item/weapon/grab/G in user.contents) // People the Technomancer is grabbing come along for the ride. + if(G.affecting) + G.affecting.forceMove(locate( target_turf.x+rand(-1,1), target_turf.y+rand(-1,1), target_turf.z)) + G.affecting << "You are teleported along with [user]!" + + user.forceMove(target_turf) + user << "You are teleported to your Mark." + + playsound(target_turf, 'sound/effects/phasein.ogg', 25, 1) + playsound(target_turf, 'sound/effects/sparks2.ogg', 50, 1) + + playsound(old_turf, 'sound/effects/sparks2.ogg', 50, 1) + + owner.adjust_instability(25) + qdel(src) + return 1 + else + user << "You can't afford the energy cost!" + return 0 + diff --git a/code/game/gamemodes/technomancer/spells/oxygenate.dm b/code/game/gamemodes/technomancer/spells/oxygenate.dm new file mode 100644 index 00000000000..9acda5227a9 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/oxygenate.dm @@ -0,0 +1,30 @@ +/datum/technomancer/spell/oxygenate + name = "Oxygenate" + desc = "This function creates oxygen at a location of your chosing. If used on a humanoid entity, it heals oxygen deprivation. \ + If casted on the envirnment, air (oxygen and nitrogen) is moved from a distant location to your target." + cost = 70 + obj_path = /obj/item/weapon/spell/oxygenate + ability_icon_state = "oxygenate" + +/obj/item/weapon/spell/oxygenate + name = "oxygenate" + desc = "Atmospherics is obsolete." + icon_state = "darkness" //wip + cast_methods = CAST_RANGED + aspect = ASPECT_AIR + cooldown = 30 + +/obj/item/weapon/spell/oxygenate/on_ranged_cast(atom/hit_atom, mob/user) + if(ishuman(hit_atom)) + var/mob/living/carbon/human/H = hit_atom + if(pay_energy(1500)) + H.adjustOxyLoss(-35) + owner.adjust_instability(10) + return + else if(isturf(hit_atom)) + var/turf/T = hit_atom + if(pay_energy(1500)) + T.assume_gas("oxygen", 200) + T.assume_gas("nitrogen", 800) + playsound(src.loc, 'sound/effects/spray.ogg', 50, 1, -3) + owner.adjust_instability(10) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/passwall.dm b/code/game/gamemodes/technomancer/spells/passwall.dm new file mode 100644 index 00000000000..faffe94972c --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/passwall.dm @@ -0,0 +1,73 @@ +/datum/technomancer/spell/passwall + name = "Passwall" + desc = "An uncommon function that allows the user to phase through matter (usually walls) in order to enter or exit a room. Be careful you don't pass into \ + somewhere dangerous." + enhancement_desc = "Cost per tile is halved." + cost = 100 + obj_path = /obj/item/weapon/spell/passwall + ability_icon_state = "tech_passwall" + +/obj/item/weapon/spell/passwall + name = "passwall" + desc = "No walls can hold you back." + cast_methods = CAST_MELEE + aspect = ASPECT_TELE + var/maximum_distance = 20 //Measured in tiles. + var/busy = 0 + +/obj/item/weapon/spell/passwall/on_melee_cast(atom/hit_atom, mob/user) + if(busy) //Prevent someone from trying to get two uses of the spell from one instance. + return 0 + if(!allowed_to_teleport()) + user << "You can't teleport here!" + return 0 + if(isturf(hit_atom)) + var/turf/T = hit_atom //Turf we touched. + var/turf/our_turf = get_turf(user) //Where we are. + if(!T.density) + user << "Perhaps you should try using passWALL on a wall." + return 0 + var/direction = get_dir(our_turf, T) + var/total_cost = 0 + var/turf/checked_turf = T //Turf we're currently checking for density in the loop below. + var/turf/found_turf = null //Our destination, if one is found. + var/i = maximum_distance + + visible_message("[user] rests a hand on \the [T].") + busy = 1 + + var/datum/effect/effect/system/spark_spread/spark_system = PoolOrNew(/datum/effect/effect/system/spark_spread) + spark_system.set_up(5, 0, our_turf) + + while(i) + checked_turf = get_step(checked_turf, direction) //Advance in the given direction + total_cost += check_for_scepter() ? 400 : 800 //Phasing through matter's expensive, you know. + i-- + if(!checked_turf.density) //If we found a destination (a non-dense turf), then we can stop. + var/dense_objs_on_turf = 0 + for(var/atom/movable/stuff in checked_turf.contents) //Make sure nothing dense is where we want to go, like an airlock or window. + if(stuff.density) + dense_objs_on_turf = 1 + + if(!dense_objs_on_turf) //If we found a non-dense turf with nothing dense on it, then that's our destination. + found_turf = checked_turf + break + sleep(10) + + if(found_turf) + if(user.loc != our_turf) + user << "You need to stand still in order to phase through the wall." + return 0 + if(pay_energy(total_cost) && !user.incapacitated() ) + visible_message("[user] appears to phase through \the [T]!") + user << "You find a destination on the other side of \the [T], and phase through it." + spark_system.start() + user.forceMove(found_turf) + qdel(src) + return 1 + else + user << "You don't have enough energy to phase through these walls!" + busy = 0 + else + user << "You weren't able to find an open space to go to." + busy = 0 diff --git a/code/game/gamemodes/technomancer/spells/phase_shift.dm b/code/game/gamemodes/technomancer/spells/phase_shift.dm new file mode 100644 index 00000000000..142134abc9f --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/phase_shift.dm @@ -0,0 +1,56 @@ +/datum/technomancer/spell/phase_shift + name = "Phase Shift" + desc = "Hides you in the safest possible place, where no harm can come to you. Unfortunately you can only stay inside for a few moments before \ + draining your powercell." + cost = 80 + obj_path = /obj/item/weapon/spell/phase_shift + +/obj/item/weapon/spell/phase_shift + name = "phase shift" + desc = "Allows you to dodge your untimely fate by shifting your location somewhere else, so long as you can sustain the energy to do so." + cast_methods = CAST_USE + aspect = ASPECT_TELE + +/obj/item/weapon/spell/phase_shift/New() + ..() + set_light(3, 2, l_color = "#FA58F4") + +/obj/effect/phase_shift + name = "rift" + desc = "There was a maniac here a moment ago..." + icon = 'icons/effects/effects.dmi' + icon_state = "rift" + +/obj/effect/phase_shift/ex_act() + return + +/obj/effect/phase_shift/New() + ..() + set_light(3, 5, l_color = "#FA58F4") + +/obj/effect/phase_shift/Destroy() + for(var/atom/movable/AM in contents) //Eject everything out. + AM.forceMove(get_turf(src)) + ..() + +/obj/effect/phase_shift/relaymove(mob/user as mob) + if(user.stat) + return + + user << "You step out of the rift." + user.forceMove(get_turf(src)) + qdel(src) + +/obj/item/weapon/spell/phase_shift/on_use_cast(mob/user) + if(isturf(user.loc)) //Check if we're not already in a rift. + if(pay_energy(2000)) + var/obj/effect/phase_shift/PS = new(get_turf(user)) + visible_message("[user] vanishes into a pink rift!") + user << "You create an unstable rift, and go through it. Be sure to not stay too long." + user.forceMove(PS) + adjust_instability(10) + qdel(src) + else + user << "You don't have enough energy to make a rift!" + else //We're already in a rift or something like a closet. + user << "Making a rift here would probably be a bad idea." diff --git a/code/game/gamemodes/technomancer/spells/projectile/beam.dm b/code/game/gamemodes/technomancer/spells/projectile/beam.dm new file mode 100644 index 00000000000..bfee4ec3f17 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/projectile/beam.dm @@ -0,0 +1,24 @@ +/datum/technomancer/spell/beam + name = "Beam" + desc = "Fires a laser at your target. Cheap, reliable, and a bit boring." + cost = 150 + ability_icon_state = "tech_beam" + obj_path = /obj/item/weapon/spell/projectile/beam + +/obj/item/weapon/spell/projectile/beam + name = "beam" + icon_state = "beam" + desc = "Boring, but practical." + cast_methods = CAST_RANGED + aspect = ASPECT_LIGHT + spell_projectile = /obj/item/projectile/beam/blue + energy_cost_per_shot = 500 + instability_per_shot = 3 + cooldown = 10 + +/obj/item/projectile/beam/blue + damage = 20 + + muzzle_type = /obj/effect/projectile/laser_blue/muzzle + tracer_type = /obj/effect/projectile/laser_blue/tracer + impact_type = /obj/effect/projectile/laser_blue/impact diff --git a/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm new file mode 100644 index 00000000000..5d4da458a08 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/projectile/chain_lightning.dm @@ -0,0 +1,77 @@ +/datum/technomancer/spell/chain_lightning + name = "Chain Lightning" + desc = "This dangerous function shoots lightning that will strike someone, then bounce to a nearby person. Be careful that \ + it does not bounce to you. The lighting prefers to bounce to people with the least resistance to electricity. It will \ + strike up to four targets, including yourself if conditions allow it to occur." + cost = 150 + obj_path = /obj/item/weapon/spell/projectile/chain_lightning + +/obj/item/weapon/spell/projectile/chain_lightning + name = "chain lightning" + icon_state = "chain_lightning" + desc = "Fun for the whole security team! Just don't kill yourself in the process.." + cast_methods = CAST_RANGED + aspect = ASPECT_SHOCK + spell_projectile = /obj/item/projectile/beam/chain_lightning + energy_cost_per_shot = 3000 + instability_per_shot = 10 + cooldown = 20 + +/obj/item/projectile/beam/chain_lightning + name = "lightning" + icon_state = "lightning" + nodamage = 1 + damage_type = HALLOSS + + muzzle_type = /obj/effect/projectile/lightning/muzzle + tracer_type = /obj/effect/projectile/lightning/tracer + impact_type = /obj/effect/projectile/lightning/impact + + var/bounces = 3 //How many times it 'chains'. Note that the first hit is not counted as it counts /bounces/. + var/list/hit_mobs = list() //Mobs which were already hit. + var/power = 20 //How hard it will hit for with electrocute_act(), decreases with each bounce. + +/obj/item/projectile/beam/chain_lightning/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0) + //First we shock the guy we just hit. + if(ishuman(target_mob)) + var/mob/living/carbon/human/H = target_mob + var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO)) + H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected) + else + target_mob.electrocute_act(power, src, 1.0, BP_TORSO) + hit_mobs |= target_mob + + //Each bounce reduces the damage of the bolt. + power = power * 0.80 + if(bounces) + //All possible targets. + var/list/potential_targets = view(target_mob, 3) + + //Filtered targets, so we don't hit the same person twice. + var/list/filtered_targets = list() + for(var/mob/living/L in potential_targets) + if(L in hit_mobs) + continue + filtered_targets |= L + + var/mob/living/new_target = null + var/siemens_comparison = 0 + + for(var/mob/living/carbon/human/H in filtered_targets) + var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO)) + var/their_siemens = H.get_siemens_coefficient_organ(affected) + if(their_siemens > siemens_comparison) //We want as conductive as possible, so higher is better. + new_target = H + siemens_comparison = their_siemens + + if(new_target) + var/turf/curloc = get_turf(target_mob) + curloc.visible_message("\The [src] bounces to \the [new_target]!") + redirect(new_target.x, new_target.y, curloc, firer) + bounces-- + + return 0 + return 1 + + + diff --git a/code/game/gamemodes/technomancer/spells/projectile/force_missile.dm b/code/game/gamemodes/technomancer/spells/projectile/force_missile.dm new file mode 100644 index 00000000000..c13d2363d89 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/projectile/force_missile.dm @@ -0,0 +1,24 @@ +/datum/technomancer/spell/force_missile + name = "Force Missile" + desc = "This fires a missile at your target. It's cheap to use, however the projectile itself moves and impacts in such a way \ + that armor designed to protect from blunt force will mitigate this function as well." + cost = 100 + obj_path = /obj/item/weapon/spell/projectile/force_missile + +/obj/item/weapon/spell/projectile/force_missile + name = "force missile" + icon_state = "force_missile" + desc = "Make it rain!" + cast_methods = CAST_RANGED + aspect = ASPECT_FORCE + spell_projectile = /obj/item/projectile/force_missile + energy_cost_per_shot = 400 + instability_per_shot = 2 + cooldown = 10 + +/obj/item/projectile/force_missile + name = "force missile" + icon_state = "force_missile" + damage = 20 + damage_type = BRUTE + check_armour = "melee" \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/projectile/lightning.dm b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm new file mode 100644 index 00000000000..3c77f89b0f0 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/projectile/lightning.dm @@ -0,0 +1,40 @@ +/datum/technomancer/spell/lightning + name = "Lightning Strike" + desc = "This uses a hidden electrolaser, which creates a laser beam to ionize the enviroment, allowing for ideal conditions \ + for a directed lightning strike to occur. The lightning is very strong, however it requires a few seconds to prepare a \ + strike." + cost = 150 + obj_path = /obj/item/weapon/spell/projectile/lightning + +/obj/item/weapon/spell/projectile/lightning + name = "lightning strike" + icon_state = "lightning_strike" + desc = "Now you can feel like Zeus." + cast_methods = CAST_RANGED + aspect = ASPECT_SHOCK + spell_projectile = /obj/item/projectile/beam/lightning + energy_cost_per_shot = 2500 + instability_per_shot = 10 + cooldown = 20 + pre_shot_delay = 20 + +/obj/item/projectile/beam/lightning + name = "lightning" + icon_state = "lightning" + nodamage = 1 + damage_type = HALLOSS + + muzzle_type = /obj/effect/projectile/lightning/muzzle + tracer_type = /obj/effect/projectile/lightning/tracer + impact_type = /obj/effect/projectile/lightning/impact + + var/power = 60 //How hard it will hit for with electrocute_act(). + +/obj/item/projectile/beam/lightning/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0) + if(ishuman(target_mob)) + var/mob/living/carbon/human/H = target_mob + var/obj/item/organ/external/affected = H.get_organ(check_zone(BP_TORSO)) + H.electrocute_act(power, src, H.get_siemens_coefficient_organ(affected), affected) + else + target_mob.electrocute_act(power, src, 1.0, BP_TORSO) + return 1 \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/projectile/overload.dm b/code/game/gamemodes/technomancer/spells/projectile/overload.dm new file mode 100644 index 00000000000..9b3964503ad --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/projectile/overload.dm @@ -0,0 +1,43 @@ +/datum/technomancer/spell/overload + name = "Overload" + desc = "Fires a bolt of highly unstable energy, that does damaged equal to 1.5% of the technomancer's current reserve of energy. \ + This energy pierces all known armor." + cost = 150 + obj_path = /obj/item/weapon/spell/projectile/overload + +/obj/item/weapon/spell/projectile/overload + name = "overload" + icon_state = "overload" + desc = "Hope your Core's full." + cast_methods = CAST_RANGED + aspect = ASPECT_UNSTABLE + spell_projectile = /obj/item/projectile/overload + energy_cost_per_shot = 0 // Handled later + instability_per_shot = 15 + cooldown = 10 + pre_shot_delay = 4 + +/obj/item/projectile/overload + name = "overloaded bolt" + icon_state = "bluespace" +// nodamage = 1 + damage_type = BURN + armor_penetration = 100 + +/obj/item/weapon/spell/projectile/overload/on_ranged_cast(atom/hit_atom, mob/living/user) + energy_cost_per_shot = round(core.max_energy * 0.15) + var/energy_before_firing = core.energy + if(set_up(hit_atom, user)) + var/obj/item/projectile/overload/P = new spell_projectile(get_turf(user)) + P.launch(hit_atom) + if(check_for_scepter()) + P.damage = round(energy_before_firing * 0.003) // 3% of their current energy pool. + else + P.damage = round(energy_before_firing * 0.002) // 2% of their current energy pool. + owner.adjust_instability(instability_per_shot) + return 1 + + +// muzzle_type = /obj/effect/projectile/lightning/muzzle +// tracer_type = /obj/effect/projectile/lightning/tracer +// impact_type = /obj/effect/projectile/lightning/impact \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/projectile/projectile.dm b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm new file mode 100644 index 00000000000..d4e8474aed2 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/projectile/projectile.dm @@ -0,0 +1,30 @@ +/obj/item/weapon/spell/projectile + name = "projectile template" + icon_state = "generic" + desc = "This is a generic template that shoots projectiles. If you can read this, the game broke!" + cast_methods = CAST_RANGED + var/obj/item/projectile/spell_projectile = null + var/energy_cost_per_shot = 0 + var/instability_per_shot = 0 + var/pre_shot_delay = 0 + +/obj/item/weapon/spell/projectile/on_ranged_cast(atom/hit_atom, mob/living/user) + var/turf/T = get_turf(hit_atom) + if(set_up(hit_atom, user)) + var/obj/item/projectile/new_projectile = new spell_projectile(get_turf(user)) + new_projectile.launch(T) + owner.adjust_instability(instability_per_shot) + return 1 + return 0 + +/obj/item/weapon/spell/projectile/proc/set_up(atom/hit_atom, mob/living/user) + if(spell_projectile) + if(pay_energy(energy_cost_per_shot)) + if(pre_shot_delay) + var/image/target_image = image(icon = 'icons/obj/spells.dmi', loc = get_turf(hit_atom), icon_state = "target") + user << target_image + user.Stun(pre_shot_delay) + sleep(pre_shot_delay) + qdel(target_image) + return 1 + return 0 \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/radiance.dm b/code/game/gamemodes/technomancer/spells/radiance.dm new file mode 100644 index 00000000000..b8eb1401f12 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/radiance.dm @@ -0,0 +1,44 @@ +/datum/technomancer/spell/radiance + name = "Radiance" + desc = "Causes you to be very radiant, glowing brightly in visible light, thermal energy, and deadly ionizing radiation." + cost = 180 + obj_path = /obj/item/weapon/spell/radiance + +/obj/item/weapon/spell/radiance + name = "radiance" + desc = "You will glow with a radiance similar to that of Supermatter." + icon_state = "radiance" + aspect = ASPECT_LIGHT + var/power = 100 + toggled = 1 + +/obj/item/weapon/spell/radiance/New() + ..() + set_light(7, 4, l_color = "#D9D900") + processing_objects |= src + +/obj/item/weapon/spell/radiance/Destroy() + processing_objects -= src + ..() + +/obj/item/weapon/spell/radiance/process() + var/turf/T = get_turf(src) + var/datum/gas_mixture/removed = null + var/datum/gas_mixture/env = null + + if(!istype(T, /turf/space)) + env = T.return_air() + removed = env.remove(0.25 * env.total_moles) //Remove gas from surrounding area + + var/thermal_power = 300 * power + + removed.add_thermal_energy(thermal_power) + removed.temperature = between(0, removed.temperature, 10000) + + env.merge(removed) + + for(var/mob/living/L in range(T, round(sqrt(power / 2)))) + var/radius = max(get_dist(L, src), 1) + var/rads = (power / 10) * ( 1 / (radius**2) ) + L.apply_effect(rads, IRRADIATE) + owner.adjust_instability(2) diff --git a/code/game/gamemodes/technomancer/spells/reflect.dm b/code/game/gamemodes/technomancer/spells/reflect.dm new file mode 100644 index 00000000000..6944bd49bce --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/reflect.dm @@ -0,0 +1,93 @@ +/datum/technomancer/spell/reflect + name = "Reflect" + desc = "Emits a protective shield fron your hand in front of you, which will reflect one attack back at the attacker." + cost = 120 + obj_path = /obj/item/weapon/spell/reflect + ability_icon_state = "tech_reflect" + +/obj/item/weapon/spell/reflect + name = "\proper reflect shield" + icon_state = "reflect" + desc = "A very protective combat shield that'll reflect the next attack at the unfortunate person who tried to shoot you." + aspect = ASPECT_FORCE + toggled = 1 + var/reflecting = 0 + var/damage_to_energy_multiplier = 60.0 //Determines how much energy to charge for blocking, e.g. 20 damage attack = 1200 energy cost + var/datum/effect/effect/system/spark_spread/spark_system = null + +/obj/item/weapon/spell/reflect/New() + ..() + set_light(3, 2, l_color = "#006AFF") + spark_system = PoolOrNew(/datum/effect/effect/system/spark_spread) + spark_system.set_up(5, 0, src) + owner << "Your shield will expire in 3 seconds!" + spawn(3 SECONDS) + if(src) + owner << "Your shield expires!" + qdel(src) + +/obj/item/weapon/spell/reflect/Destroy() + spark_system = null + ..() + +/obj/item/weapon/spell/reflect/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") + if(user.incapacitated()) + return 0 + + var/damage_to_energy_cost = (damage_to_energy_multiplier * damage) + + if(!pay_energy(damage_to_energy_cost)) + owner << "Your shield fades due to lack of energy!" + qdel(src) + return 0 + + //block as long as they are not directly behind us + var/bad_arc = reverse_direction(user.dir) //arc of directions from which we cannot block + if(check_shield_arc(user, bad_arc, damage_source, attacker)) + + if(istype(damage_source, /obj/item/projectile)) + var/obj/item/projectile/P = damage_source + + if(P.starting && !P.reflected) + visible_message("\The [user]'s [src.name] reflects [attack_text]!") + + var/turf/curloc = get_turf(user) + + // redirect the projectile + P.redirect(P.starting.x, P.starting.y, curloc, user) + P.reflected = 1 + if(check_for_scepter()) + P.damage = P.damage * 1.5 + + spark_system.start() + playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1) + // now send a log so that admins don't think they're shooting themselves on purpose. + log_and_message_admins("[user] reflected [attacker]'s attack back at them.") + + if(!reflecting) + reflecting = 1 + spawn(1 SECOND) //To ensure that most or all of a burst fire cycle is reflected. + owner << "Your shield fades due being used up!" + qdel(src) + + return PROJECTILE_CONTINUE // complete projectile permutation + + else if(istype(damage_source, /obj/item/weapon)) + var/obj/item/weapon/W = damage_source + if(attacker) + W.attack(attacker) + attacker << "Your [damage_source.name] goes through \the [src] in one location, comes out \ + on the same side, and hits you!" + + spark_system.start() + playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1) + + log_and_message_admins("[user] reflected [attacker]'s attack back at them.") + + if(!reflecting) + reflecting = 1 + spawn(1 SECOND) //To ensure that most or all of a burst fire cycle is reflected. + owner << "Your shield fades due being used up!" + qdel(src) + return 1 + return 0 diff --git a/code/game/gamemodes/technomancer/spells/resurrect.dm b/code/game/gamemodes/technomancer/spells/resurrect.dm new file mode 100644 index 00000000000..2aee98bc1e3 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/resurrect.dm @@ -0,0 +1,62 @@ +/datum/technomancer/spell/resurrect + name = "Resurrect" + desc = "This function injects various regenetive medical compounds and nanomachines, in an effort to restart the body, \ + however this must be done soon after they die, as this will have no effect on people who have died long ago. It also doesn't \ + resolve whatever caused them to die originally." + cost = 100 + obj_path = /obj/item/weapon/spell/resurrect + ability_icon_state = "tech_resurrect" + +/obj/item/weapon/spell/resurrect + name = "resurrect" + icon_state = "radiance" + desc = "Perhaps this can save a trip to cloning?" + cast_methods = CAST_MELEE + aspect = ASPECT_BIOMED + +/obj/item/weapon/spell/resurrect/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + if(L == user) + user << "Clever as you may seem, this won't work on yourself while alive." + return 0 + if(L.stat != DEAD) + user << "\The [L] isn't dead!" + return 0 + if(pay_energy(5000)) + if(L.tod > world.time + 10 MINUTES) + user << "\The [L]'s been dead for too long, even this function cannot replace cloning at \ + this point." + return 0 + user << "You stab \the [L] with a hidden integrated hypo, attempting to bring them back..." + if(istype(L, /mob/living/simple_animal)) + var/mob/living/simple_animal/SM = L + SM.health = SM.maxHealth / 3 + SM.stat = CONSCIOUS + dead_mob_list -= SM + living_mob_list += SM + SM.icon_state = SM.icon_living + owner.adjust_instability(30) + else if(ishuman(L)) + var/mob/living/carbon/human/H = L + + if(!H.client && H.mind) //Don't force the dead person to come back if they don't want to. + for(var/mob/observer/dead/ghost in player_list) + if(ghost.mind == H.mind) + ghost << "The Technomancer [user.real_name] is trying to \ + revive you. Return to your body if you want to be resurrected! \ + (Verbs -> Ghost -> Re-enter corpse)" + break + + sleep(10 SECONDS) + if(H.client) + L.stat = CONSCIOUS //Note that if whatever killed them in the first place wasn't fixed, they're likely to die again. + dead_mob_list -= H + living_mob_list += H + H.timeofdeath = null + visible_message("\The [H]'s eyes open!") + user << "It's alive!" + owner.adjust_instability(100) + else + user << "The body of \the [H] doesn't seem to respond, perhaps you could try again?" + owner.adjust_instability(10) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/shared_burden.dm b/code/game/gamemodes/technomancer/spells/shared_burden.dm new file mode 100644 index 00000000000..c7e8e35107c --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/shared_burden.dm @@ -0,0 +1,27 @@ +/datum/technomancer/spell/shared_burden + name = "Shared Burden" + desc = "One of the few functions able to adjust instability, this allows you to take someone else's instability." + cost = 50 + obj_path = /obj/item/weapon/spell/shared_burden + +/obj/item/weapon/spell/shared_burden + name = "shared burden" + icon_state = "shared_burden" + desc = "Send instability from the target to you, for whatever reason you'd want to." + cast_methods = CAST_MELEE + aspect = ASPECT_UNSTABLE + +/obj/item/weapon/spell/shared_burden/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) + if(ishuman(hit_atom)) + var/mob/living/carbon/human/H = hit_atom + if(H == user) + user << "Draining instability out of you to put it back seems a bit pointless." + return 0 + if(!H.instability) + user << "\The [H] has no instability to drain." + return 0 + if(pay_energy(500)) + var/instability_to_drain = min(H.instability, 25) + user << "You draw instability away from \the [H] and towards you." + owner.adjust_instability(instability_to_drain) + H.adjust_instability(-instability_to_drain) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/shield.dm b/code/game/gamemodes/technomancer/spells/shield.dm new file mode 100644 index 00000000000..807ea698a2b --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/shield.dm @@ -0,0 +1,56 @@ +/datum/technomancer/spell/shield + name = "Shield" + desc = "Emits a protective shield fron your hand in front of you, which will protect you from almost anything able to harm \ + you, so long as you can power it." + cost = 120 + obj_path = /obj/item/weapon/spell/shield + ability_icon_state = "tech_shield" + +/obj/item/weapon/spell/shield + name = "\proper energy shield" + icon_state = "shield" + desc = "A very protective combat shield that'll stop almost anything from hitting you, at least from the front." + aspect = ASPECT_FORCE + toggled = 1 + var/damage_to_energy_multiplier = 30.0 //Determines how much energy to charge for blocking, e.g. 20 damage attack = 600 energy cost + var/datum/effect/effect/system/spark_spread/spark_system = null + +/obj/item/weapon/spell/shield/New() + ..() + set_light(3, 2, l_color = "#006AFF") + spark_system = PoolOrNew(/datum/effect/effect/system/spark_spread) + spark_system.set_up(5, 0, src) + +/obj/item/weapon/spell/shield/Destroy() + spark_system = null + ..() + +/obj/item/weapon/spell/shield/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") + if(user.incapacitated()) + return 0 + + var/damage_to_energy_cost = damage_to_energy_multiplier * damage + + if(issmall(user)) // Smaller shields are more efficent. + damage_to_energy_cost *= 0.75 + + if(istype(owner.get_other_hand(src), src.type)) // Two shields in both hands. + damage_to_energy_cost *= 0.75 + + else if(check_for_scepter()) + damage_to_energy_cost *= 0.50 + + if(!pay_energy(damage_to_energy_cost)) + owner << "Your shield fades due to lack of energy!" + qdel(src) + return 0 + + //block as long as they are not directly behind us + var/bad_arc = reverse_direction(user.dir) //arc of directions from which we cannot block + if(check_shield_arc(user, bad_arc, damage_source, attacker)) + user.visible_message("\The [user]'s [src] blocks [attack_text]!") + spark_system.start() + playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1) + adjust_instability(2) + return 1 + return 0 diff --git a/code/game/gamemodes/technomancer/spells/spawner/darkness.dm b/code/game/gamemodes/technomancer/spells/spawner/darkness.dm new file mode 100644 index 00000000000..627be97e363 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/spawner/darkness.dm @@ -0,0 +1,28 @@ +/datum/technomancer/spell/darkness + name = "Darkness" + desc = "Disrupts photons moving in a local area, causing darkness to shroud yourself or a position of your choosing." + cost = 30 + obj_path = /obj/item/weapon/spell/spawner/darkness + +/obj/item/weapon/spell/spawner/darkness + name = "darkness" + desc = "Not even light can stand in your way now." + icon_state = "darkness" + cast_methods = CAST_RANGED + aspect = ASPECT_DARK + spawner_type = /obj/effect/temporary_effect/darkness + +/obj/item/weapon/spell/spawner/darkness/on_ranged_cast(atom/hit_atom, mob/user) + if(pay_energy(500)) + owner.adjust_instability(4) + ..() + +/obj/item/weapon/spell/spawner/darkness/New() + ..() + set_light(6, -5, l_color = "#FFFFFF") + +/obj/effect/temporary_effect/darkness + name = "darkness" + time_to_die = 2 MINUTES + new_light_range = 6 + new_light_power = -5 \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/spawner/fire_blast.dm b/code/game/gamemodes/technomancer/spells/spawner/fire_blast.dm new file mode 100644 index 00000000000..7cf519ddbda --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/spawner/fire_blast.dm @@ -0,0 +1,34 @@ +/datum/technomancer/spell/fire_blast + name = "Fire Blast" + desc = "Causes a disturbance on a targeted tile. After two and a half seconds, it will explode in a small radius around it. Be \ + sure to not be close to the disturbance yourself." + cost = 175 + obj_path = /obj/item/weapon/spell/spawner/fire_blast + +/obj/item/weapon/spell/spawner/fire_blast + name = "fire blast" + desc = "Leading your booms might be needed." + icon_state = "fire_blast" + cast_methods = CAST_RANGED + aspect = ASPECT_FIRE + spawner_type = /obj/effect/temporary_effect/fire_blast + +/obj/item/weapon/spell/spawner/fire_blast/on_ranged_cast(atom/hit_atom, mob/user) + if(pay_energy(2000)) + owner.adjust_instability(12) + ..() // Makes the booms happen. + +/obj/effect/temporary_effect/fire_blast + name = "fire blast" + desc = "Run!" + icon = 'icons/effects/effects.dmi' + icon_state = "at_shield1" + time_to_die = 2.5 SECONDS // After which we go boom. + invisibility = 0 + new_light_range = 4 + new_light_power = 5 + new_light_color = "#FF6A00" + +/obj/effect/temporary_effect/fire_blast/Destroy() + explosion(get_turf(src), -1, 1, 2, 5, adminlog = 1) + ..() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm new file mode 100644 index 00000000000..4704cda8b9d --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm @@ -0,0 +1,49 @@ +/datum/technomancer/spell/pulsar + name = "Pulsar" + desc = "Emits electronic pulses to destroy, disable, or otherwise harm devices and machines. Be sure to not hit yourself with this." + cost = 150 + obj_path = /obj/item/weapon/spell/spawner/pulsar + +/obj/item/weapon/spell/spawner/pulsar + name = "pulsar" + desc = "Be sure to not hit yourself!" + icon_state = "radiance" + cast_methods = CAST_RANGED | CAST_THROW + aspect = ASPECT_EMP + spawner_type = /obj/effect/temporary_effect/pulsar + +/obj/item/weapon/spell/spawner/pulsar/New() + ..() + set_light(3, 2, l_color = "#2ECCFA") + +/obj/item/weapon/spell/spawner/pulsar/on_ranged_cast(atom/hit_atom, mob/user) + if(pay_energy(4000)) + owner.adjust_instability(8) + ..() + +/obj/item/weapon/spell/spawner/pulsar/on_throw_cast(atom/hit_atom, mob/user) + empulse(hit_atom, 1, 1, log=1) + +/obj/effect/temporary_effect/pulsar + name = "pulsar" + desc = "Not a real pulsar, but still emits loads of EMP." + icon = 'icons/effects/effects.dmi' + icon_state = "shield2" + time_to_die = null + invisibility = 0 + new_light_range = 4 + new_light_power = 5 + new_light_color = "#2ECCFA" + var/pulses_remaining = 3 + +/obj/effect/temporary_effect/pulsar/New() + ..() + pulse_loop() + +/obj/effect/temporary_effect/pulsar/proc/pulse_loop() + while(pulses_remaining) + sleep(2 SECONDS) + empulse(src, heavy_range = 1, light_range = 2, log = 1) + pulses_remaining-- + qdel(src) + diff --git a/code/game/gamemodes/technomancer/spells/spawner/spawner.dm b/code/game/gamemodes/technomancer/spells/spawner/spawner.dm new file mode 100644 index 00000000000..e748145e429 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/spawner/spawner.dm @@ -0,0 +1,30 @@ +/obj/item/weapon/spell/spawner + name = "spawner template" + desc = "If you see me, someone messed up." + icon_state = "darkness" + cast_methods = CAST_RANGED + aspect = null + var/obj/effect/spawner_type = null + +/obj/effect/temporary_effect + name = "self deleting effect" + desc = "How are you examining what which cannot be seen?" + invisibility = 101 + var/time_to_die = 10 SECONDS // Afer which, it will delete itself. + var/new_light_range = 6 + var/new_light_power = 6 + var/new_light_color = "#FFFFFF" + +/obj/effect/temporary_effect/New() + ..() + set_light(new_light_range, new_light_power, l_color = new_light_color) + if(time_to_die) + spawn(time_to_die) + qdel(src) + +/obj/item/weapon/spell/spawner/on_ranged_cast(atom/hit_atom, mob/user) + var/turf/T = get_turf(hit_atom) + if(T) + new spawner_type(T) + user << "You shift \the [src] onto \the [T]." + qdel(src) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/summon/summon.dm b/code/game/gamemodes/technomancer/spells/summon/summon.dm new file mode 100644 index 00000000000..4565dcd816c --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/summon/summon.dm @@ -0,0 +1,41 @@ +/mob/living/ + var/summoned = 0 + +/obj/item/weapon/spell/summon + name = "summon template" + desc = "Chitter chitter." + cast_methods = CAST_RANGED | CAST_USE + aspect = ASPECT_TELE + var/mob/living/summoned_mob_type = null // The type to use when making new mobs when summoned. + var/list/summon_options = list() + var/energy_cost = 0 + var/instability_cost = 0 + +/obj/item/weapon/spell/summon/on_ranged_cast(atom/hit_atom, mob/living/user) + var/turf/T = get_turf(hit_atom) + if(summoned_mob_type && core.summoned_mobs.len < core.max_summons && pay_energy(energy_cost)) + var/obj/effect/E = new(T) + E.icon = 'icons/obj/objects.dmi' + E.icon_state = "anom" + sleep(5 SECONDS) + qdel(E) + var/mob/living/L = new summoned_mob_type(T) + core.summoned_mobs |= L + L.summoned = 1 + var/image/summon_underlay = image('icons/obj/objects.dmi',"anom") + summon_underlay.alpha = 127 + L.underlays |= summon_underlay + on_summon(L) + user << "You've successfully teleported \a [L] to you!" + visible_message("\A [L] appears from no-where!") + user.adjust_instability(instability_cost) + +/obj/item/weapon/spell/summon/on_use_cast(mob/living/user) + if(summon_options.len) + var/choice = input(user, "Choose a creature to kidnap from somewhere!", "Summon") as null|anything in summon_options + if(choice) + summoned_mob_type = summon_options[choice] + +// Called when a new mob is summoned, override for special behaviour. +/obj/item/weapon/spell/summon/proc/on_summon(var/mob/living/summoned) + return \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm new file mode 100644 index 00000000000..eac1c67b409 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm @@ -0,0 +1,45 @@ +/datum/technomancer/spell/summon_creature + name = "Summon Creature" + desc = "Teleports a specific creature from their current location in the universe to the targeted tile, \ + after a delay. The creature summoned can be chosen by using the ability in your hand. \ + Available creatures are; mice, crabs, parrots, bats, goats, cats, corgis, spiders, and space carp. \ + The creatures take a few moments to be teleported to the targeted tile. Note that the creatures summoned are \ + not inherently loyal to the technomancer, and that the creatures will be hurt slightly from being teleported to you." + enhancement_desc = "Summoned entities will never harm their summoner." + cost = 200 + obj_path = /obj/item/weapon/spell/summon/summon_creature + +/obj/item/weapon/spell/summon/summon_creature + name = "summon creature" + desc = "Chitter chitter." + summoned_mob_type = null + summon_options = list( + "Mouse" = /mob/living/simple_animal/mouse, + "Lizard" = /mob/living/simple_animal/lizard, + "Chicken" = /mob/living/simple_animal/chicken, + "Chick" = /mob/living/simple_animal/chick, + "Crab" = /mob/living/simple_animal/crab, + "Parrot" = /mob/living/simple_animal/parrot, + "Goat" = /mob/living/simple_animal/hostile/retaliate/goat, + "Cat" = /mob/living/simple_animal/cat, + "Kitten" = /mob/living/simple_animal/cat/kitten, + "Corgi" = /mob/living/simple_animal/corgi, + "Corgi Pup" = /mob/living/simple_animal/corgi/puppy, + "BAT" = /mob/living/simple_animal/hostile/scarybat, + "SPIDER" = /mob/living/simple_animal/hostile/giant_spider, + "SPIDER HUNTER" = /mob/living/simple_animal/hostile/giant_spider/hunter, + "SPIDER NURSE" = /mob/living/simple_animal/hostile/giant_spider/nurse, + "CARP" = /mob/living/simple_animal/hostile/carp, + "BEAR" = /mob/living/simple_animal/hostile/bear + ) + cooldown = 30 + instability_cost = 10 + energy_cost = 1000 + +/obj/item/weapon/spell/summon/summon_creature/on_summon(var/mob/living/summoned) + if(check_for_scepter()) +// summoned.faction = "technomancer" + if(istype(summoned, /mob/living/simple_animal/hostile)) + var/mob/living/simple_animal/SA = summoned + SA.friends.Add(owner) + summoned.health = round(summoned.maxHealth * 0.7) \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm new file mode 100644 index 00000000000..1bbab4d2998 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm @@ -0,0 +1,112 @@ +/datum/technomancer/spell/summon_ward + name = "Summon Ward" + desc = "Teleports a prefabricated 'ward' drone to the target location, which will alert you and your allies when it sees entities \ + moving around it, or when it is attacked. They can see for up to five meters. Wards expire in six minutes." + enhancement_desc = "Wards can detect invisibile entities, and are more specific in relaying information about what it sees." + cost = 100 + obj_path = /obj/item/weapon/spell/summon/summon_ward + +/obj/item/weapon/spell/summon/summon_ward + name = "summon ward" + desc = "Finally, someone you can depend on to watch your back." + cast_methods = CAST_RANGED + summoned_mob_type = /mob/living/simple_animal/ward + cooldown = 10 + instability_cost = 5 + energy_cost = 500 + +/obj/item/weapon/spell/summon/summon_ward/on_summon(var/mob/living/simple_animal/ward/ward) + ward.creator = owner + if(check_for_scepter()) + ward.true_sight = 1 + ward.see_invisible = SEE_INVISIBLE_LEVEL_TWO + +/mob/living/simple_animal/ward + name = "ward" + desc = "It's a little flying drone that seems to be watching you..." + icon = 'icons/mob/critter.dmi' + icon_state = "ward" + resistance = 5 + wander = 0 + response_help = "pets the" + response_disarm = "swats away" + response_harm = "punches" + var/true_sight = 0 // If true, detects more than what the Technomancer normally can't. + var/mob/living/carbon/human/creator = null + var/list/seen_mobs = list() + +/mob/living/simple_animal/ward/New() + ..() + spawn(6 MINUTES) + expire() + +/mob/living/simple_animal/ward/death() + if(creator) + creator << "Your ward inside [get_area(src)] was killed!" + ..() + qdel(src) + +/mob/living/simple_animal/ward/proc/expire() + if(creator && src) + creator << "Your ward inside [get_area(src)] expired." + qdel(src) + +/mob/living/simple_animal/ward/Life() + ..() + detect_mobs() + update_icon() + +/mob/living/simple_animal/ward/proc/detect_mobs() + var/list/things_in_sight = view(5,src) + var/list/newly_seen_mobs = list() + for(var/mob/living/L in things_in_sight) + if(L == creator) // I really wish is_ally() was usable here. + continue + + if(istype(L, /mob/living/simple_animal/ward)) + continue + + if(istype(L, /mob/living/simple_animal)) + var/mob/living/simple_animal/SA = L + if(creator in SA.friends) + continue + + if(!true_sight) + var/atom/movable/lighting_overlay/light = locate(/atom/movable/lighting_overlay) in get_turf(L) + var/light_amount = 1 // Unsimulated tiles are pretend-lit, so we need to be pretend too if that somehow happens. + if(light) + light_amount = (light.lum_r + light.lum_g + light.lum_b) / 3 + + if(light_amount <= 0.5) + continue // Too dark to see. + + if(L.alpha <= 127) + continue // Too transparent, as a mercy to camo lings. + + // Warn the Technomancer when it sees a new mob. + if(!(L in seen_mobs)) + seen_mobs.Add(L) + newly_seen_mobs.Add(L) + if(creator) + if(true_sight) + creator << "Your ward at [get_area(src)] detected [english_list(newly_seen_mobs)]." + else + creator << "Your ward at [get_area(src)] detected something." + + // Now get rid of old mobs that left vision. + for(var/mob/living/L in seen_mobs) + if(!(L in things_in_sight)) + seen_mobs.Remove(L) + + +/mob/living/simple_animal/ward/update_icon() + if(seen_mobs.len) + icon_state = "ward_spotted" + set_light(3, 3, l_color = "FF0000") + else + icon_state = "ward" + set_light(3, 3, l_color = "00FF00") + if(true_sight) + overlays.Cut() + var/image/I = image('icons/mob/critter.dmi',"ward_truesight") + overlays.Add(I) diff --git a/code/game/gamemodes/technomancer/spells/targeting_matrix.dm b/code/game/gamemodes/technomancer/spells/targeting_matrix.dm new file mode 100644 index 00000000000..a74aab2ff56 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/targeting_matrix.dm @@ -0,0 +1,35 @@ +/datum/technomancer/spell/targeting_matrix + name = "Targeting Matrix" + desc = "Automatically targets and fires a ranged weapon or function at a non-friendly target near a targeted tile. \ + Each target assisted attack costs some energy and instability." + cost = 150 + ability_icon_state = "tech_targetingmatrix" + obj_path = /obj/item/weapon/spell/targeting_matrix + +/obj/item/weapon/spell/targeting_matrix + name = "targeting matrix" + desc = "Aiming is too much effort for you." + icon_state = "targeting_matrix" + cast_methods = CAST_RANGED + aspect = ASPECT_FORCE //idk? + +/obj/item/weapon/spell/targeting_matrix/on_ranged_cast(atom/hit_atom, mob/user) + var/turf/T = get_turf(hit_atom) + if(T) + var/mob/living/chosen_target = targeting_assist(T,5) //The person who's about to get attacked. + + if(!chosen_target) + return 0 + + var/obj/item/I = user.get_inactive_hand() + if(I && pay_energy(200)) + var/prox = user.Adjacent(chosen_target) + if(prox) // Needed or else they can attack with melee from afar. + I.attack(chosen_target,owner) + I.afterattack(chosen_target,owner, prox) + adjust_instability(2) + + var/image/target_image = image(icon = 'icons/obj/spells.dmi', loc = get_turf(chosen_target), icon_state = "target") + user << target_image + sleep(5) + qdel(target_image) diff --git a/code/game/gamemodes/technomancer/spells/track.dm b/code/game/gamemodes/technomancer/spells/track.dm new file mode 100644 index 00000000000..90e65182004 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/track.dm @@ -0,0 +1,76 @@ +/datum/technomancer/spell/track + name = "Track" + desc = "Acts as directional guidance towards an object that belongs to you or your team. It can also point towards your allies. \ + Wonderful if you're worried someone will steal your valuables, like a certain shiny Scepter..." + enhancement_desc = "You will be able to track most other entities in addition to your belongings and allies." + cost = 30 + obj_path = /obj/item/weapon/spell/track + ability_icon_state = "tech_track" + +// This stores a ref to all important items that belong to a Technomancer, in case of theft. Used by the spell below. +// I feel dirty for adding yet another global list used by one thing, but the only alternative is to loop through world, and yeahhh. +var/list/technomancer_belongings = list() + +/obj/item/weapon/spell/track + name = "track" + icon_state = "track" + desc = "Never lose your stuff again!" + cast_methods = CAST_USE + aspect = ASPECT_TELE + var/atom/movable/tracked = null // The thing to point towards. + var/tracking = 0 // If one, points towards tracked. + +/obj/item/weapon/spell/track/Destroy() + tracked = null + tracking = 0 + +/obj/item/weapon/spell/track/on_use_cast(mob/user) + if(tracking) + tracking = 0 + user << "You stop tracking for \the [tracked]'s whereabouts." + tracked = null + return + + var/can_track_non_allies = 0 + var/list/object_choices = technomancer_belongings.Copy() + if(check_for_scepter()) + can_track_non_allies = 1 + var/list/mob_choices = list() + for(var/mob/living/L in mob_list) + if(!is_ally(L) && !can_track_non_allies) + continue + if(L == user) + continue + mob_choices += L + var/choice = input(user,"Decide what or who to track.","Tracking") as null|anything in object_choices + mob_choices + if(choice) + tracked = choice + tracking = 1 + track() + +/obj/item/weapon/spell/track/proc/track() + if(!tracking) + icon_state = "track" + return + + if(!tracked) + icon_state = "track_unknown" + + if(tracked.z != owner.z) + icon_state = "track_unknown" + + else + set_dir(get_dir(src,get_turf(tracked))) + + switch(get_dist(src,get_turf(tracked))) + if(0) + icon_state = "track_direct" + if(1 to 8) + icon_state = "track_close" + if(9 to 16) + icon_state = "track_medium" + if(16 to INFINITY) + icon_state = "track_far" + + spawn(5) + .() \ No newline at end of file diff --git a/code/game/gamemodes/technomancer/spells/warp_strike.dm b/code/game/gamemodes/technomancer/spells/warp_strike.dm new file mode 100644 index 00000000000..ffb97498998 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/warp_strike.dm @@ -0,0 +1,76 @@ +/datum/technomancer/spell/warp_strike + name = "Warp Strike" + desc = "Teleports you next to your target, and attacks them with whatever is in your off-hand, spell or object." + cost = 200 + obj_path = /obj/item/weapon/spell/warp_strike + ability_icon_state = "tech_warpstrike" + +/obj/item/weapon/spell/warp_strike + name = "warp strike" + desc = "The answer to the problem of bringing a knife to a gun fight." + icon_state = "warp_strike" + cast_methods = CAST_RANGED + aspect = ASPECT_TELE + var/datum/effect/effect/system/spark_spread/sparks + +/obj/item/weapon/spell/warp_strike/New() + ..() + sparks = PoolOrNew(/datum/effect/effect/system/spark_spread) + sparks.set_up(5, 0, src) + sparks.attach(loc) + +/obj/item/weapon/spell/warp_strike/on_ranged_cast(atom/hit_atom, mob/user) + var/turf/T = get_turf(hit_atom) + if(T) + //First, we handle who to teleport to. + user.setClickCooldown(5) + var/mob/living/chosen_target = targeting_assist(T,5) //The person who's about to get attacked. + + if(!chosen_target) + return 0 + + //Now we handle picking a place for the user to teleport to. + var/list/tele_target_candidates = view(get_turf(chosen_target), 1) + var/list/valid_tele_targets = list() + var/turf/tele_target = null + for(var/turf/checked_turf in tele_target_candidates) + if(!checked_turf.check_density()) + valid_tele_targets.Add(checked_turf) + + tele_target = pick(valid_tele_targets) + + //Pay for our teleport. + if(!pay_energy(2000) || !tele_target) + return 0 + + //Teleporting time. + user.forceMove(tele_target) + var/new_dir = get_dir(user, chosen_target) + user.dir = new_dir + sparks.start() + owner.adjust_instability(12) + + //Finally, we handle striking the victim with whatever's in the user's offhand. + var/obj/item/I = user.get_inactive_hand() + // List of items we don't want used, for balance reasons or to avoid infinite loops. + var/list/blacklisted_items = list( + /obj/item/weapon/gun, + /obj/item/weapon/spell/warp_strike, + /obj/item/weapon/spell/targeting_matrix + ) + if(I) + + if(is_path_in_list(I.type, blacklisted_items)) + user << "You can't use \the [I] while warping!" + return + + if(istype(I, /obj/item/weapon)) + var/obj/item/weapon/W = I + W.attack(chosen_target, user) + W.afterattack(chosen_target, user) + else + I.attack(chosen_target, user) + I.afterattack(chosen_target, user) + else + chosen_target.attack_hand(user) + diff --git a/code/game/gamemodes/technomancer/technomancer.dm b/code/game/gamemodes/technomancer/technomancer.dm new file mode 100644 index 00000000000..a7131fb54ce --- /dev/null +++ b/code/game/gamemodes/technomancer/technomancer.dm @@ -0,0 +1,14 @@ +/datum/game_mode/technomancer + name = "Technomancer" + round_description = "An entity possessing advanced, unknown technology is onboard, who is capable of accomplishing amazing feats." + extended_round_description = "A powerful entity capable of manipulating space around them, has arrived the station. \ + They have a wide variety of powers and functions available to them that makes your own simple moral self tremble with \ + fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if \ + their powers can be used for good or if their arrival foreshadows the destruction of the entire colony, or worse." + config_tag = "technomancer" + votable = 0 + required_players = 8 + required_players_secret = 10 + required_enemies = 1 + end_on_antag_death = 0 + antag_tags = list(MODE_TECHNOMANCER) \ No newline at end of file diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 9da98075f3c..4e28c4e5775 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -3,6 +3,7 @@ round_description = "There is a SPACE WIZARD on the station. You can't let the magician achieve their objectives!" extended_round_description = "A powerful entity capable of manipulating the elements around him, most commonly referred to as a 'wizard', has infiltrated the station. They have a wide variety of powers and spells available to them that makes your own simple moral self tremble with fear and excitement. Ultimately, their purpose is unknown. However, it is up to you and your crew to decide if their powers can be used for good or if their arrival foreshadows the destruction of the entire station." config_tag = "wizard" + votable = 0 required_players = 1 required_players_secret = 6 required_enemies = 1 diff --git a/code/game/jobs/_access_defs.dm b/code/game/jobs/_access_defs.dm index e371ff83673..b76638fe3b7 100644 --- a/code/game/jobs/_access_defs.dm +++ b/code/game/jobs/_access_defs.dm @@ -12,4 +12,5 @@ #define ACCESS_TYPE_CENTCOM 1 #define ACCESS_TYPE_STATION 2 #define ACCESS_TYPE_SYNDICATE 4 -#define ACCESS_TYPE_ALL (ACCESS_TYPE_CENTCOM|ACCESS_TYPE_STATION|ACCESS_TYPE_SYNDICATE) +#define ACCESS_TYPE_PRIVATE 8 +#define ACCESS_TYPE_ALL (ACCESS_TYPE_CENTCOM|ACCESS_TYPE_STATION|ACCESS_TYPE_SYNDICATE|ACCESS_TYPE_PRIVATE) diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index d95c555e0f7..de305db26c7 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -125,6 +125,13 @@ return priv_syndicate_access +/var/list/priv_private_access +/proc/get_all_private_access() + if(!priv_private_access) + priv_private_access = get_access_ids(ACCESS_TYPE_PRIVATE) + + return priv_syndicate_access + /var/list/priv_region_access /proc/get_region_accesses(var/code) if(code == ACCESS_REGION_ALL) diff --git a/code/game/jobs/access_datum.dm b/code/game/jobs/access_datum.dm index 718026450c0..bf027d93a2b 100644 --- a/code/game/jobs/access_datum.dm +++ b/code/game/jobs/access_datum.dm @@ -457,3 +457,8 @@ /datum/access/crate_cash id = access_crate_cash access_type = ACCESS_TYPE_NONE + +/var/const/access_trader = 160//General Beruang Trader Access +/datum/access/trader + id = access_trader + access_type = ACCESS_TYPE_PRIVATE diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 69f837d8f92..514d3cf0478 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -30,13 +30,13 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/cap(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/captain(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/captain(H), slot_w_uniform) if(H.age>49) - // Since we can have something other than the default uniform at this + // Since we can have something other than the default uniform at this // point, check if we can actually attach the medal var/obj/item/clothing/uniform = H.w_uniform var/obj/item/clothing/accessory/medal/gold/captain/medal = new() - + if(uniform && uniform.can_attach_accessory(medal)) uniform.attach_accessory(null, medal) else @@ -72,6 +72,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) supervisors = "the captain" selection_color = "#2F2F7F" idtype = /obj/item/weapon/card/id/silver + alt_titles = list("Crew Resources Officer") req_admin_notify = 1 minimal_player_age = 10 economic_modifier = 10 @@ -107,4 +108,5 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand) else H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) - return 1 + H.implant_loyalty() + return 1 \ No newline at end of file diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 6940cd57c9b..1a9351496e1 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -102,6 +102,7 @@ access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_external_airlocks) minimal_access = list(access_eva, access_engine, access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_external_airlocks) + minimal_player_age = 3 equip(var/mob/living/carbon/human/H) if(!H) return 0 diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 32fd340755f..08faeff78b0 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -116,6 +116,7 @@ minimal_access = list(access_medical, access_medical_equip, access_chemistry) alt_titles = list("Pharmacist") + minimal_player_age = 3 equip(var/mob/living/carbon/human/H) if(!H) return 0 diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index adf5e2ab451..0eb20254505 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -342,11 +342,13 @@ var/global/datum/controller/occupations/job_master else permitted = 1 - if(G.whitelisted && !is_alien_whitelisted(H, G.whitelisted)) + if(G.whitelisted && !is_alien_whitelisted(H, all_species[G.whitelisted])) + + //if(G.whitelisted && (G.whitelisted != H.species.name || !is_alien_whitelisted(H, G.whitelisted))) permitted = 0 if(!permitted) - H << "Your current job or whitelist status does not permit you to spawn with [thing]!" + H << "Your current species, job or whitelist status does not permit you to spawn with [thing]!" continue if(G.slot && !(G.slot in custom_equip_slots)) diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm index 440cf2e22e8..9a13e066a54 100644 --- a/code/game/jobs/whitelist.dm +++ b/code/game/jobs/whitelist.dm @@ -30,22 +30,54 @@ var/list/whitelist = list() else alien_whitelist = splittext(text, "\n") -//todo: admin aliens -/proc/is_alien_whitelisted(mob/M, var/species) - if(!config.usealienwhitelist) +/proc/is_alien_whitelisted(mob/M, var/datum/species/species) + //They are admin or the whitelist isn't in use + if(whitelist_overrides(M)) return 1 - if(species == "human" || species == "Human") - return 1 - if(check_rights(R_ADMIN, 0)) - return 1 - if(!alien_whitelist) + + //You did something wrong + if(!M || !species) return 0 - if(M && species) + + //The species isn't even whitelisted + if(!(species.spawn_flags & SPECIES_IS_WHITELISTED)) + return 1 + + //If we have a loaded file, search it + if(alien_whitelist) for (var/s in alien_whitelist) - if(findtext(s,"[M.ckey] - [species]")) + if(findtext(s,"[M.ckey] - [species.name]")) return 1 if(findtext(s,"[M.ckey] - All")) return 1 + +/proc/is_lang_whitelisted(mob/M, var/datum/language/language) + //They are admin or the whitelist isn't in use + if(whitelist_overrides(M)) + return 1 + + //You did something wrong + if(!M || !language) + return 0 + + //The language isn't even whitelisted + if(!(language.flags & WHITELISTED)) + return 1 + + //If we have a loaded file, search it + if(alien_whitelist) + for (var/s in alien_whitelist) + if(findtext(s,"[M.ckey] - [language.name]")) + return 1 + if(findtext(s,"[M.ckey] - All")) + return 1 + +/proc/whitelist_overrides(mob/M) + if(!config.usealienwhitelist) + return 1 + if(check_rights(R_ADMIN, 0, M)) + return 1 + return 0 #undef WHITELISTFILE diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 4a48dbb4ae0..43ca9d2fc3f 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -9,13 +9,23 @@ icon_state = "body_scanner_0" density = 1 anchored = 1 + circuit = /obj/item/weapon/circuitboard/body_scanner use_power = 1 idle_power_usage = 60 active_power_usage = 10000 //10 kW. It's a big all-body scanner. + light_color = "#00FF00" + /obj/machinery/bodyscanner/New() + ..() + spawn( 5 ) + var/obj/machinery/body_scanconsole/C = locate(/obj/machinery/body_scanconsole) in range(2,src) + if(C) + C.connected = src + +/obj/machinery/bodyscanner/map/New() ..() circuit = new circuit(src) component_parts = list() @@ -23,81 +33,14 @@ component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/stack/material/glass/reinforced(src, 2) - - spawn( 5 ) - var/obj/machinery/body_scanconsole/C = locate(/obj/machinery/body_scanconsole) in range(2,src) - if(C) - C.connected = src - return - RefreshParts() -/obj/machinery/bodyscanner/relaymove(mob/user as mob) - if (user.stat) - return - src.go_out() - return - -/obj/machinery/bodyscanner/verb/eject() - set src in oview(1) - set category = "Object" - set name = "Eject Body Scanner" - - if (usr.stat != 0) - return - src.go_out() - add_fingerprint(usr) - return - -/obj/machinery/bodyscanner/verb/move_inside() - set src in oview(1) - set category = "Object" - set name = "Enter Body Scanner" - - if (usr.stat != 0) - return - if (src.occupant) - usr << "The scanner is already occupied!" - return - if (usr.abiotic()) - usr << "The subject cannot have abiotic items on." - return - usr.pulling = null - usr.client.perspective = EYE_PERSPECTIVE - usr.client.eye = src - usr.loc = src - src.occupant = usr - update_use_power(2) - src.icon_state = "body_scanner_1" - for(var/obj/O in src) - //O = null - if(O in component_parts) - continue - if(O == circuit) - continue - qdel(O) - //Foreach goto(124) - src.add_fingerprint(usr) - return - -/obj/machinery/bodyscanner/proc/go_out() - if ((!( src.occupant ) || src.locked)) - return - for(var/obj/O in src) - if(O in component_parts) - continue - if(O == circuit) - continue - O.loc = src.loc - //Foreach goto(30) - if (src.occupant.client) - src.occupant.client.eye = src.occupant.client.mob - src.occupant.client.perspective = MOB_PERSPECTIVE - src.occupant.loc = src.loc - src.occupant = null - update_use_power(1) - src.icon_state = "body_scanner_0" - return +/obj/machinery/bodyscanner/power_change() + ..() + if(!(stat & (BROKEN|NOPOWER))) + set_light(2) + else + set_light(0) /obj/machinery/bodyscanner/attackby(var/obj/item/G, user as mob) if(default_deconstruction_screwdriver(user, G)) @@ -107,42 +50,96 @@ if(istype(G, /obj/item/weapon/grab)) var/obj/item/weapon/grab/H = G - if(!(ismob(H.affecting))) + if(panel_open) + user << "Close the maintenance panel first." return - if (src.occupant) - user << "The scanner is already occupied!" + if(!ismob(H.affecting)) return - if (H.affecting.abiotic()) - user << "Subject cannot have abiotic items on." + if(occupant) + user << "The scanner is already occupied!" return + for(var/mob/living/carbon/slime/M in range(1, H.affecting)) + if(M.Victim == H.affecting) + user << "[H.affecting.name] has a fucking slime attached to them, deal with that first." + return var/mob/M = H.affecting - if (M.client) - M.client.perspective = EYE_PERSPECTIVE - M.client.eye = src - M.loc = src - src.occupant = M - update_use_power(2) - src.icon_state = "body_scanner_1" - for(var/obj/O in src) - if(O in component_parts) - continue - if(O == circuit) - continue - O.loc = src.loc - //Foreach goto(154) - src.add_fingerprint(user) - //G = null + if(M.abiotic()) + user << "Subject cannot have abiotic items on." + return + M.forceMove(src) + occupant = M + icon_state = "body_scanner_1" + add_fingerprint(user) qdel(G) + +/obj/machinery/bodyscanner/MouseDrop_T(mob/living/carbon/O, mob/user as mob) + if(!istype(O)) + return 0 //not a mob + if(user.incapacitated()) + return 0 //user shouldn't be doing things + if(O.anchored) + return 0 //mob is anchored??? + if(get_dist(user, src) > 1 || get_dist(user, O) > 1) + return 0 //doesn't use adjacent() to allow for non-cardinal (fuck my life) + if(!ishuman(user) && !isrobot(user)) + return 0 //not a borg or human + if(panel_open) + user << "Close the maintenance panel first." + return 0 //panel open + if(occupant) + user << "\The [src] is already occupied." + return 0 //occupied + + if(O.buckled) + return 0 + if(O.abiotic()) + user << "Subject cannot have abiotic items on." + return 0 + for(var/mob/living/carbon/slime/M in range(1, O)) + if(M.Victim == O) + user << "[O] has a fucking slime attached to them, deal with that first." + return 0 + + if(O == user) + visible_message("[user] climbs into \the [src].") + else + visible_message("[user] puts [O] into the body scanner.") + + O.forceMove(src) + occupant = O + icon_state = "body_scanner_1" + add_fingerprint(user) + +/obj/machinery/bodyscanner/relaymove(mob/user as mob) + if(user.incapacitated()) + return 0 //maybe they should be able to get out with cuffs, but whatever + go_out() + +/obj/machinery/bodyscanner/verb/eject() + set src in oview(1) + set category = "Object" + set name = "Eject Body Scanner" + + if(usr.incapacitated()) + return + go_out() + add_fingerprint(usr) + +/obj/machinery/bodyscanner/proc/go_out() + if ((!( src.occupant ) || src.locked)) + return + if (src.occupant.client) + src.occupant.client.eye = src.occupant.client.mob + src.occupant.client.perspective = MOB_PERSPECTIVE + src.occupant.loc = src.loc + src.occupant = null + src.icon_state = "body_scanner_0" return /obj/machinery/bodyscanner/ex_act(severity) switch(severity) if(1.0) for(var/atom/movable/A as mob|obj in src) - if(A in component_parts) - continue - if(A == circuit) - continue A.loc = src.loc ex_act(severity) //Foreach goto(35) @@ -152,10 +149,6 @@ if(2.0) if (prob(50)) for(var/atom/movable/A as mob|obj in src) - if(A in component_parts) - continue - if(A == circuit) - continue A.loc = src.loc ex_act(severity) //Foreach goto(108) @@ -165,10 +158,6 @@ if(3.0) if (prob(25)) for(var/atom/movable/A as mob|obj in src) - if(A in component_parts) - continue - if(A == circuit) - continue A.loc = src.loc ex_act(severity) //Foreach goto(181) @@ -178,32 +167,7 @@ else return -/obj/machinery/body_scanconsole/ex_act(severity) - - switch(severity) - if(1.0) - //SN src = null - qdel(src) - return - if(2.0) - if (prob(50)) - //SN src = null - qdel(src) - return - else - return - -/obj/machinery/body_scanconsole/power_change() - ..() - if(stat & BROKEN) - icon_state = "body_scannerconsole-p" - else - if (stat & NOPOWER) - spawn(rand(0, 15)) - src.icon_state = "body_scannerconsole-p" - else - icon_state = initial(icon_state) - +//Body Scan Console /obj/machinery/body_scanconsole var/obj/machinery/bodyscanner/connected var/known_implants = list(/obj/item/weapon/implant/chem, /obj/item/weapon/implant/death_alarm, /obj/item/weapon/implant/loyalty, /obj/item/weapon/implant/tracking) @@ -216,67 +180,12 @@ density = 0 anchored = 1 circuit = /obj/item/weapon/circuitboard/scanner_console + var/printing = null + var/printing_text = null /obj/machinery/body_scanconsole/New() ..() - spawn( 5 ) - src.connected = locate(/obj/machinery/bodyscanner) in range(2,src) - return - return - -/* - -/obj/machinery/body_scanconsole/process() //not really used right now - if(stat & (NOPOWER|BROKEN)) - return - //use_power(250) // power stuff - -// var/mob/M //occupant -// if (!( src.status )) //remove this -// return -// if ((src.connected && src.connected.occupant)) //connected & occupant ok -// M = src.connected.occupant -// else -// if (istype(M, /mob)) -// //do stuff -// else -/// src.temphtml = "Process terminated due to lack of occupant in scanning chamber." -// src.status = null -// src.updateDialog() -// return - -*/ - -/obj/machinery/body_scanconsole/attack_ai(user as mob) - return src.attack_hand(user) - -/obj/machinery/body_scanconsole/attack_hand(user as mob) - if(..()) - return - if(stat & (NOPOWER|BROKEN)) - return - if(!connected || (connected.stat & (NOPOWER|BROKEN))) - user << "This console is not connected to a functioning body scanner." - return - if(!ishuman(connected.occupant)) - user << "This device can only scan compatible lifeforms." - return - - var/dat - if (src.delete && src.temphtml) //Window in buffer but its just simple message, so nothing - src.delete = src.delete - else if (!src.delete && src.temphtml) //Window in buffer - its a menu, dont add clear message - dat = text("[]

Main Menu", src.temphtml, src) - else - if (src.connected) //Is something connected? - dat = format_occupant_data(src.connected.get_occupant_data()) - dat += "
Print
" - else - dat = "Error: No Body Scanner connected." - - dat += text("
Close", user) - user << browse(dat, "window=scanconsole;size=430x600") - return + findscanner() /obj/machinery/body_scanconsole/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/weapon/screwdriver) && circuit) @@ -309,206 +218,365 @@ src.attack_hand(user) return -/obj/machinery/body_scanconsole/Topic(href, href_list) - if (..()) - return +/obj/machinery/body_scanconsole/power_change() + if(stat & BROKEN) + icon_state = "body_scannerconsole-p" + else if(powered() && !panel_open) + icon_state = initial(icon_state) + stat &= ~NOPOWER + else + spawn(rand(0, 15)) + src.icon_state = "body_scannerconsole-p" + stat |= NOPOWER - if (href_list["print"]) - if (!src.connected) - usr << "\icon[src]Error: No body scanner connected." +/obj/machinery/body_scanconsole/ex_act(severity) + switch(severity) + if(1.0) + //SN src = null + qdel(src) return - var/mob/living/carbon/human/occupant = src.connected.occupant - if (!src.connected.occupant) - usr << "\icon[src]The body scanner is empty." - return - if (!istype(occupant,/mob/living/carbon/human)) - usr << "\icon[src]The body scanner cannot scan that lifeform." - return - var/obj/item/weapon/paper/R = new(src.loc) - R.name = "Body scan report" - R.info = format_occupant_data(src.connected.get_occupant_data()) - - -/obj/machinery/bodyscanner/proc/get_occupant_data() - if (!occupant || !istype(occupant, /mob/living/carbon/human)) - return - var/mob/living/carbon/human/H = occupant - var/list/occupant_data = list( - "stationtime" = worldtime2text(), - "stat" = H.stat, - "health" = round(H.health/H.maxHealth)*100, - "virus_present" = H.virus2.len, - "bruteloss" = H.getBruteLoss(), - "fireloss" = H.getFireLoss(), - "oxyloss" = H.getOxyLoss(), - "toxloss" = H.getToxLoss(), - "rads" = H.radiation, - "cloneloss" = H.getCloneLoss(), - "brainloss" = H.getBrainLoss(), - "paralysis" = H.paralysis, - "bodytemp" = H.bodytemperature, - "borer_present" = H.has_brain_worms(), - "inaprovaline_amount" = H.reagents.get_reagent_amount("inaprovaline"), - "dexalin_amount" = H.reagents.get_reagent_amount("dexalin"), - "stoxin_amount" = H.reagents.get_reagent_amount("stoxin"), - "bicaridine_amount" = H.reagents.get_reagent_amount("bicaridine"), - "dermaline_amount" = H.reagents.get_reagent_amount("dermaline"), - "blood_amount" = round((H.vessel.get_reagent_amount("blood") / H.species.blood_volume)*100), - "disabilities" = H.sdisabilities, - "lung_ruptured" = H.is_lung_ruptured(), - "external_organs" = H.organs.Copy(), - "internal_organs" = H.internal_organs.Copy(), - "species_organs" = H.species.has_organ //Just pass a reference for this, it shouldn't ever be modified outside of the datum. - ) - return occupant_data - - -/obj/machinery/body_scanconsole/proc/format_occupant_data(var/list/occ) - var/dat = "Scan performed at [occ["stationtime"]]
" - dat += "Occupant Statistics:
" - var/aux - switch (occ["stat"]) - if(0) - aux = "Conscious" - if(1) - aux = "Unconscious" + if(2.0) + if (prob(50)) + //SN src = null + qdel(src) + return else - aux = "Dead" - dat += text("[]\tHealth %: [] ([])
", ("Viral pathogen detected in blood stream.
" - dat += text("[]\t-Brute Damage %: []
", (""), occ["bruteloss"]) - dat += text("[]\t-Respiratory Damage %: []
", (""), occ["oxyloss"]) - dat += text("[]\t-Toxin Content %: []
", (""), occ["toxloss"]) - dat += text("[]\t-Burn Severity %: []

", (""), occ["fireloss"]) + return - dat += text("[]\tRadiation Level %: []
", (""), occ["rads"]) - dat += text("[]\tGenetic Tissue Damage %: []
", (""), occ["cloneloss"]) - dat += text("[]\tApprox. Brain Damage %: []
", (""), occ["brainloss"]) - dat += text("Paralysis Summary %: [] ([] seconds left!)
", occ["paralysis"], round(occ["paralysis"] / 4)) - dat += text("Body Temperature: [occ["bodytemp"]-T0C]°C ([occ["bodytemp"]*1.8-459.67]°F)

") +/obj/machinery/body_scanconsole/proc/findscanner() + spawn( 5 ) + var/obj/machinery/bodyscanner/bodyscannernew = null + // Loop through every direction + for(dir in list(NORTH,EAST,SOUTH,WEST)) + // Try to find a scanner in that direction + bodyscannernew = locate(/obj/machinery/bodyscanner, get_step(src, dir)) + src.connected = bodyscannernew + return - if(occ["borer_present"]) - dat += "Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.
" +/obj/machinery/body_scanconsole/attack_ai(user as mob) + return attack_hand(user) - dat += text("[]\tBlood Level %: [] ([] units)

", (""), occ["blood_amount"], occ["blood_amount"]) +/obj/machinery/body_scanconsole/attack_ghost(user as mob) + return attack_hand(user) - dat += text("Inaprovaline: [] units
", occ["inaprovaline_amount"]) - dat += text("Soporific: [] units
", occ["stoxin_amount"]) - dat += text("[]\tDermaline: [] units

", (""), occ["dermaline_amount"]) - dat += text("[]\tBicaridine: [] units
", (""), occ["bicaridine_amount"]) - dat += text("[]\tDexalin: [] units
", (""), occ["dexalin_amount"]) +/obj/machinery/body_scanconsole/attack_hand(user as mob) + if(stat & (NOPOWER|BROKEN)) + return - dat += "
" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" + if (panel_open) + user << "Close the maintenance panel first." + return - for(var/obj/item/organ/external/e in occ["external_organs"]) - var/AN = "" - var/open = "" - var/infected = "" - var/imp = "" - var/bled = "" - var/robot = "" - var/splint = "" - var/internal_bleeding = "" - var/lung_ruptured = "" + if(!src.connected) + findscanner() - dat += "" + ui_interact(user) - for(var/datum/wound/W in e.wounds) if(W.internal) - internal_bleeding = "
Internal bleeding" - break - if(istype(e, /obj/item/organ/external/chest) && occ["lung_ruptured"]) - lung_ruptured = "Lung ruptured:" - if(e.status & ORGAN_SPLINTED) - splint = "Splinted:" - if(e.status & ORGAN_BLEEDING) - bled = "Bleeding:" - if(e.status & ORGAN_BROKEN) - AN = "[e.broken_description]:" - switch(e.robotic) - if(ORGAN_ROBOT) robot = "Prosthetic:" - if(ORGAN_ASSISTED) robot = "Augmented:" - if(e.open) - open = "Open:" +/obj/machinery/body_scanconsole/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] - switch (e.germ_level) - if (INFECTION_LEVEL_ONE to INFECTION_LEVEL_ONE + 200) - infected = "Mild Infection:" - if (INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300) - infected = "Mild Infection+:" - if (INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400) - infected = "Mild Infection++:" - if (INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200) - infected = "Acute Infection:" - if (INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300) - infected = "Acute Infection+:" - if (INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_TWO + 400) - infected = "Acute Infection++:" - if (INFECTION_LEVEL_THREE to INFINITY) - infected = "Septic:" - if(e.rejecting) - infected += "(being rejected)" - if (e.implants.len) - var/unknown_body = 0 - for(var/I in e.implants) - if(is_type_in_list(I,known_implants)) - imp += "[I] implanted:" + data["connected"] = connected ? 1 : 0 + + if(connected) + data["occupied"] = connected.occupant ? 1 : 0 + + var/occupantData[0] + if(connected.occupant && ishuman(connected.occupant)) + var/mob/living/carbon/human/H = connected.occupant + occupantData["name"] = H.name + occupantData["stat"] = H.stat + occupantData["health"] = H.health + + occupantData["hasVirus"] = H.virus2.len + + occupantData["bruteLoss"] = H.getBruteLoss() + occupantData["oxyLoss"] = H.getOxyLoss() + occupantData["toxLoss"] = H.getToxLoss() + occupantData["fireLoss"] = H.getFireLoss() + + occupantData["radLoss"] = H.radiation + occupantData["cloneLoss"] = H.getCloneLoss() + occupantData["brainLoss"] = H.getBrainLoss() + occupantData["paralysis"] = H.paralysis + occupantData["paralysisSeconds"] = round(H.paralysis / 4) + occupantData["bodyTempC"] = H.bodytemperature-T0C + occupantData["bodyTempF"] = (((H.bodytemperature-T0C) * 1.8) + 32) + + occupantData["hasBorer"] = H.has_brain_worms() + + var/bloodData[0] + if(H.vessel) + var/blood_volume = round(H.vessel.get_reagent_amount("blood")) + bloodData["volume"] = blood_volume + bloodData["percent"] = round(((blood_volume / 560)*100)) + + occupantData["blood"] = bloodData + + var/reagentData[0] + if(H.reagents.reagent_list.len >= 1) + for(var/datum/reagent/R in H.reagents.reagent_list) + reagentData[++reagentData.len] = list("name" = R.name, "amount" = R.volume) + else + reagentData = null + + occupantData["reagents"] = reagentData + + var/extOrganData[0] + for(var/obj/item/organ/external/E in H.organs) + var/organData[0] + organData["name"] = E.name + organData["open"] = E.open + organData["germ_level"] = E.germ_level + organData["bruteLoss"] = E.brute_dam + organData["fireLoss"] = E.burn_dam + + var/implantData[0] + for(var/obj/I in E.implants) + var/implantSubData[0] + implantSubData["name"] = I.name + if(is_type_in_list(I, known_implants)) + implantSubData["known"] = 1 + + implantData.Add(list(implantSubData)) + + organData["implants"] = implantData + organData["implants_len"] = implantData.len + + var/organStatus[0] + if(E.status & ORGAN_DESTROYED) + organStatus["destroyed"] = 1 + if(E.status & ORGAN_BROKEN) + organStatus["broken"] = E.broken_description + if(E.status & ORGAN_ROBOT) + organStatus["robotic"] = 1 + if(E.status & ORGAN_SPLINTED) + organStatus["splinted"] = 1 + if(E.status & ORGAN_BLEEDING) + organStatus["bleeding"] = 1 + + organData["status"] = organStatus + + if(istype(E, /obj/item/organ/external/chest) && H.is_lung_ruptured()) + organData["lungRuptured"] = 1 + + for(var/datum/wound/W in E.wounds) + if(W.internal) + organData["internalBleeding"] = 1 + break + + extOrganData.Add(list(organData)) + + occupantData["extOrgan"] = extOrganData + + var/intOrganData[0] + for(var/obj/item/organ/I in H.internal_organs) + var/organData[0] + organData["name"] = I.name + if(I.status & ORGAN_ASSISTED) + organData["desc"] = "Assisted" + else if(I.robotic >= ORGAN_ROBOT) + organData["desc"] = "Mechanical" else - unknown_body++ - if(unknown_body) - imp += "Unknown body present:" + organData["desc"] = null + organData["germ_level"] = I.germ_level + organData["damage"] = I.damage - if(!AN && !open && !infected & !imp) - AN = "None:" - if(!e.is_stump()) - dat += "" + intOrganData.Add(list(organData)) + + occupantData["intOrgan"] = intOrganData + + occupantData["blind"] = (H.sdisabilities & BLIND) + occupantData["nearsighted"] = (H.disabilities & NEARSIGHTED) + + data["occupant"] = occupantData + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "adv_med.tmpl", "Body Scanner", 690, 800) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) + + +/obj/machinery/body_scanconsole/Topic(href, href_list) + if(..()) + return 1 + + if (href_list["print_p"]) + generate_printing_text() + + if (!(printing) && printing_text) + printing = 1 + visible_message("\The [src] rattles and prints out a sheet of paper.") + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(loc) + P.info = "
Body Scan - [href_list["name"]]

" + P.info += "Time of scan: [worldtime2text(world.time)]

" + P.info += "[printing_text]" + P.info += "

Notes:
" + P.name = "Body Scan - [href_list["name"]]" + printing = null + printing_text = null + +/obj/machinery/body_scanconsole/proc/generate_printing_text() + var/dat = "" + + if(connected) + var/mob/living/carbon/human/occupant = connected.occupant + dat = "Occupant Statistics:
" //Blah obvious + if(istype(occupant)) //is there REALLY someone in there? + var/t1 + switch(occupant.stat) // obvious, see what their status is + if(0) + t1 = "Conscious" + if(1) + t1 = "Unconscious" + else + t1 = "*dead*" + dat += " 50 ? "blue" : "red"]>\tHealth %: [occupant.health], ([t1])
" + + if(occupant.virus2.len) + dat += "Viral pathogen detected in blood stream.
" + + var/extra_font = null + extra_font = "" + dat += "[extra_font]\t-Brute Damage %: [occupant.getBruteLoss()]
" + + extra_font = "" + dat += "[extra_font]\t-Respiratory Damage %: [occupant.getOxyLoss()]
" + + extra_font = "" + dat += "[extra_font]\t-Toxin Content %: [occupant.getToxLoss()]
" + + extra_font = "" + dat += "[extra_font]\t-Burn Severity %: [occupant.getFireLoss()]
" + + extra_font = "" + dat += "[extra_font]\tRadiation Level %: [occupant.radiation]
" + + extra_font = "" + dat += "[extra_font]\tGenetic Tissue Damage %: [occupant.getCloneLoss()]
" + + extra_font = "" + dat += "[extra_font]\tApprox. Brain Damage %: [occupant.getBrainLoss()]
" + + dat += "Paralysis Summary %: [occupant.paralysis] ([round(occupant.paralysis / 4)] seconds left!)
" + dat += "Body Temperature: [occupant.bodytemperature-T0C]°C ([occupant.bodytemperature*1.8-459.67]°F)
" + + dat += "
" + + if(occupant.has_brain_worms()) + dat += "Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended.
" + + if(occupant.vessel) + var/blood_volume = round(occupant.vessel.get_reagent_amount("blood")) + var/blood_percent = blood_volume / 560 + blood_percent *= 100 + + extra_font = " 448 ? "blue" : "red"]>" + dat += "[extra_font]\tBlood Level %: [blood_percent] ([blood_volume] units)
" + + if(occupant.reagents) + for(var/datum/reagent/R in occupant.reagents) + dat += "Reagent: [R.name], Amount: [R.volume]
" + + dat += "
OrganBurn DamageBrute DamageOther Wounds
[e.name][e.burn_dam][e.brute_dam][robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured]
" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" + + for(var/obj/item/organ/external/e in occupant.organs) + dat += "" + var/AN = "" + var/open = "" + var/infected = "" + var/robot = "" + var/imp = "" + var/bled = "" + var/splint = "" + var/internal_bleeding = "" + var/lung_ruptured = "" + for(var/datum/wound/W in e.wounds) if(W.internal) + internal_bleeding = "
Internal bleeding" + break + if(istype(e, /obj/item/organ/external/chest) && occupant.is_lung_ruptured()) + lung_ruptured = "Lung ruptured:" + if(e.status & ORGAN_SPLINTED) + splint = "Splinted:" + if(e.status & ORGAN_BLEEDING) + bled = "Bleeding:" + if(e.status & ORGAN_BROKEN) + AN = "[e.broken_description]:" + if(e.status & ORGAN_ROBOT) + robot = "Prosthetic:" + if(e.open) + open = "Open:" + switch (e.germ_level) + if (INFECTION_LEVEL_ONE to INFECTION_LEVEL_ONE + 200) + infected = "Mild Infection:" + if (INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300) + infected = "Mild Infection+:" + if (INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400) + infected = "Mild Infection++:" + if (INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200) + infected = "Acute Infection:" + if (INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300) + infected = "Acute Infection+:" + if (INFECTION_LEVEL_TWO + 300 to INFECTION_LEVEL_TWO + 400) + infected = "Acute Infection++:" + if (INFECTION_LEVEL_THREE to INFINITY) + infected = "Septic:" + + var/unknown_body = 0 + for(var/I in e.implants) + if(is_type_in_list(I,known_implants)) + imp += "[I] implanted:" + else + unknown_body++ + + if(unknown_body) + imp += "Unknown body present:" + if(!AN && !open && !infected & !imp) + AN = "None:" + if(!(e.status & ORGAN_DESTROYED)) + dat += "" + else + dat += "" + dat += "" + for(var/obj/item/organ/i in occupant.internal_organs) + var/mech = "" + if(i.status & ORGAN_ASSISTED) + mech = "Assisted:" + if(i.robotic >= ORGAN_ROBOT) + mech = "Mechanical:" + var/infection = "None" + switch (i.germ_level) + if (1 to INFECTION_LEVEL_ONE + 200) + infection = "Mild Infection:" + if (INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300) + infection = "Mild Infection+:" + if (INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400) + infection = "Mild Infection++:" + if (INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200) + infection = "Acute Infection:" + if (INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300) + infection = "Acute Infection+:" + if (INFECTION_LEVEL_TWO + 300 to INFINITY) + infection = "Acute Infection++:" + + dat += "" + dat += "" + dat += "" + dat += "
OrganBurn DamageBrute DamageOther Wounds
[e.name][e.burn_dam][e.brute_dam][robot][bled][AN][splint][open][infected][imp][internal_bleeding][lung_ruptured][e.name]--Not Found
[i.name]N/A[i.damage][infection]:[mech]
" + if(occupant.sdisabilities & BLIND) + dat += "Cataracts detected.
" + if(occupant.disabilities & NEARSIGHTED) + dat += "Retinal misalignment detected.
" else - dat += "[e.name]--Not [e.is_stump() ? "Found" : "Attached Completely"]" - dat += "" + dat += "\The [src] is empty." + else + dat = " Error: No Body Scanner connected." - for(var/obj/item/organ/i in occ["internal_organs"]) - - var/mech = "" - if(i.status & ORGAN_ASSISTED) - mech = "Assisted:" - if(i.robotic >= ORGAN_ROBOT) - mech = "Mechanical:" - - var/infection = "None" - switch (i.germ_level) - if (1 to INFECTION_LEVEL_ONE + 200) - infection = "Mild Infection:" - if (INFECTION_LEVEL_ONE + 200 to INFECTION_LEVEL_ONE + 300) - infection = "Mild Infection+:" - if (INFECTION_LEVEL_ONE + 300 to INFECTION_LEVEL_ONE + 400) - infection = "Mild Infection++:" - if (INFECTION_LEVEL_TWO to INFECTION_LEVEL_TWO + 200) - infection = "Acute Infection:" - if (INFECTION_LEVEL_TWO + 200 to INFECTION_LEVEL_TWO + 300) - infection = "Acute Infection+:" - if (INFECTION_LEVEL_TWO + 300 to INFINITY) - infection = "Acute Infection++:" - if(i.rejecting) - infection += "(being rejected)" - - dat += "" - dat += "[i.name]N/A[i.damage][infection]:[mech]" - dat += "" - dat += "" - - var/list/species_organs = occ["species_organs"] - for(var/organ_name in species_organs) - if(!locate(species_organs[organ_name]) in occ["internal_organs"]) - dat += text("No [organ_name] detected.
") - - if(occ["sdisabilities"] & BLIND) - dat += text("Cataracts detected.
") - if(occ["sdisabilities"] & NEARSIGHTED) - dat += text("Retinal misalignment detected.
") - return dat + printing_text = dat \ No newline at end of file diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm index c7b5f3c73ab..19d1ee12532 100644 --- a/code/game/machinery/atmo_control.dm +++ b/code/game/machinery/atmo_control.dm @@ -94,13 +94,8 @@ obj/machinery/computer/general_air_control/Destroy() /obj/machinery/computer/general_air_control/attack_hand(mob/user) if(..(user)) return - user << browse(return_text(),"window=computer") - user.set_machine(src) - onclose(user, "computer") -/obj/machinery/computer/general_air_control/process() - ..() - src.updateUsrDialog() + ui_interact(user) /obj/machinery/computer/general_air_control/receive_signal(datum/signal/signal) if(!signal || signal.encryption) return @@ -110,43 +105,27 @@ obj/machinery/computer/general_air_control/Destroy() sensor_information[id_tag] = signal.data -/obj/machinery/computer/general_air_control/proc/return_text() - var/sensor_data +/obj/machinery/computer/general_air_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + + var/list/data = list() + var/sensors_ui[0] if(sensors.len) for(var/id_tag in sensors) var/long_name = sensors[id_tag] - var/list/data = sensor_information[id_tag] - var/sensor_part = "[long_name]:
" - - if(data) - if(data["pressure"]) - sensor_part += " Pressure: [data["pressure"]] kPa
" - if(data["temperature"]) - sensor_part += " Temperature: [data["temperature"]] K
" - if(data["oxygen"]||data["phoron"]||data["nitrogen"]||data["carbon_dioxide"]) - sensor_part += " Gas Composition :" - if(data["oxygen"]) - sensor_part += "[data["oxygen"]]% O2; " - if(data["nitrogen"]) - sensor_part += "[data["nitrogen"]]% N; " - if(data["carbon_dioxide"]) - sensor_part += "[data["carbon_dioxide"]]% CO2; " - if(data["phoron"]) - sensor_part += "[data["phoron"]]% TX; " - sensor_part += "
" - - else - sensor_part = "[long_name] can not be found!
" - - sensor_data += sensor_part - + var/list/sensor_data = sensor_information[id_tag] + sensors_ui[++sensors_ui.len] = list("long_name" = long_name, "sensor_data" = sensor_data) else - sensor_data = "No sensors connected." + sensors_ui = null - var/output = {"[name]
-Sensor Data:

[sensor_data]"} + data["sensors"] = sensors_ui - return output + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "atmo_control.tmpl", src.name, 525, 600) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(5) /obj/machinery/computer/general_air_control/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) @@ -156,7 +135,6 @@ obj/machinery/computer/general_air_control/Destroy() /obj/machinery/computer/general_air_control/initialize() set_frequency(frequency) - /obj/machinery/computer/general_air_control/large_tank_control icon = 'icons/obj/computer.dmi' @@ -171,39 +149,41 @@ obj/machinery/computer/general_air_control/Destroy() var/pressure_setting = ONE_ATMOSPHERE * 45 circuit = /obj/item/weapon/circuitboard/air_management/tank_control +/obj/machinery/computer/general_air_control/large_tank_control/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) -/obj/machinery/computer/general_air_control/large_tank_control/return_text() - var/output = ..() - //if(signal.data) - // input_info = signal.data // Attempting to fix intake control -- TLE - - output += "Tank Control System

" - if(input_info) - var/power = (input_info["power"]) - var/volume_rate = round(input_info["volume_rate"], 0.1) - output += "Input: [power?("Injecting"):("On Hold")] Refresh
Flow Rate Limit: [volume_rate] L/s
" - output += "Command: Toggle Power Set Flow Rate
" - + var/list/data = list() + var/sensors_ui[0] + if(sensors.len) + for(var/id_tag in sensors) + var/long_name = sensors[id_tag] + var/list/sensor_data = sensor_information[id_tag] + sensors_ui[++sensors_ui.len] = list("long_name" = long_name, "sensor_data" = sensor_data) else - output += "ERROR: Can not find input port Search
" + sensors_ui = null - output += "Flow Rate Limit: - - - - [round(input_flow_setting, 0.1)] L/s + + + +
" + data["sensors"] = sensors_ui + data["tanks"] = 1 - output += "
" + if(input_info) + data["input_info"] = list("power" = input_info["power"], "volume_rate" = round(input_info["volume_rate"], 0.1)) + else + data["input_info"] = null if(output_info) - var/power = (output_info["power"]) - var/output_pressure = output_info["internal"] - output += {"Output: [power?("Open"):("On Hold")] Refresh
-Max Output Pressure: [output_pressure] kPa
"} - output += "Command: Toggle Power Set Pressure
" - + data["output_info"] = list("power" = output_info["power"], "output_pressure" = output_info["internal"]) else - output += "ERROR: Can not find output port Search
" + data["output_info"] = null - output += "Max Output Pressure Set: - - - - [pressure_setting] kPa + + + +
" + data["input_flow_setting"] = round(input_flow_setting, 0.1) + data["pressure_setting"] = pressure_setting - return output + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "atmo_control.tmpl", src.name, 660, 500) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(5) /obj/machinery/computer/general_air_control/large_tank_control/receive_signal(datum/signal/signal) if(!signal || signal.encryption) return @@ -224,15 +204,11 @@ Max Output Pressure: [output_pressure] kPa
"} if(href_list["adj_pressure"]) var/change = text2num(href_list["adj_pressure"]) pressure_setting = between(0, pressure_setting + change, 50*ONE_ATMOSPHERE) - spawn(1) - src.updateUsrDialog() return 1 if(href_list["adj_input_flow_rate"]) var/change = text2num(href_list["adj_input_flow_rate"]) input_flow_setting = between(0, input_flow_setting + change, ATMOS_DEFAULT_VOLUME_PUMP + 500) //default flow rate limit for air injectors - spawn(1) - src.updateUsrDialog() return 1 if(!radio_connection) @@ -273,9 +249,6 @@ Max Output Pressure: [output_pressure] kPa
"} signal.data["sigtype"]="command" radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - spawn(5) - src.updateUsrDialog() - /obj/machinery/computer/general_air_control/supermatter_core icon = 'icons/obj/computer.dmi' @@ -290,39 +263,40 @@ Max Output Pressure: [output_pressure] kPa
"} var/pressure_setting = 100 circuit = /obj/item/weapon/circuitboard/air_management/supermatter_core +/obj/machinery/computer/general_air_control/supermatter_core/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) -/obj/machinery/computer/general_air_control/supermatter_core/return_text() - var/output = ..() - //if(signal.data) - // input_info = signal.data // Attempting to fix intake control -- TLE + var/list/data = list() + var/sensors_ui[0] + if(sensors.len) + for(var/id_tag in sensors) + var/long_name = sensors[id_tag] + var/list/sensor_data = sensor_information[id_tag] + sensors_ui[++sensors_ui.len] = list("long_name" = long_name, "sensor_data" = sensor_data) + else + sensors_ui = null + + data["sensors"] = sensors_ui + data["core"] = 1 - output += "Core Cooling Control System

" if(input_info) - var/power = (input_info["power"]) - var/volume_rate = round(input_info["volume_rate"], 0.1) - output += "Coolant Input: [power?("Injecting"):("On Hold")] Refresh
Flow Rate Limit: [volume_rate] L/s
" - output += "Command: Toggle Power Set Flow Rate
" - + data["input_info"] = list("power" = input_info["power"], "volume_rate" = round(input_info["volume_rate"], 0.1)) else - output += "ERROR: Can not find input port Search
" - - output += "Flow Rate Limit: - - - - [round(input_flow_setting, 0.1)] L/s + + + +
" - - output += "
" - + data["input_info"] = null if(output_info) - var/power = (output_info["power"]) - var/pressure_limit = output_info["external"] - output += {"Core Outpump: [power?("Open"):("On Hold")] Refresh
-Min Core Pressure: [pressure_limit] kPa
"} - output += "Command: Toggle Power Set Pressure
" - + data["output_info"] = list("power" = output_info["power"], "pressure_limit" = output_info["external"]) else - output += "ERROR: Can not find output port Search
" + data["output_info"] = null - output += "Min Core Pressure Set: - - - - [pressure_setting] kPa + + + +
" + data["input_flow_setting"] = round(input_flow_setting, 0.1) + data["pressure_setting"] = pressure_setting - return output + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "atmo_control.tmpl", src.name, 650, 500) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(5) /obj/machinery/computer/general_air_control/supermatter_core/receive_signal(datum/signal/signal) if(!signal || signal.encryption) return @@ -343,15 +317,11 @@ Min Core Pressure: [pressure_limit] kPa
"} if(href_list["adj_pressure"]) var/change = text2num(href_list["adj_pressure"]) pressure_setting = between(0, pressure_setting + change, 10*ONE_ATMOSPHERE) - spawn(1) - src.updateUsrDialog() return 1 if(href_list["adj_input_flow_rate"]) var/change = text2num(href_list["adj_input_flow_rate"]) input_flow_setting = between(0, input_flow_setting + change, ATMOS_DEFAULT_VOLUME_PUMP + 500) //default flow rate limit for air injectors - spawn(1) - src.updateUsrDialog() return 1 if(!radio_connection) @@ -392,9 +362,6 @@ Min Core Pressure: [pressure_limit] kPa
"} signal.data["sigtype"]="command" radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA) - spawn(5) - src.updateUsrDialog() - /obj/machinery/computer/general_air_control/fuel_injection icon = 'icons/obj/computer.dmi' icon_screen = "alert:0" @@ -437,27 +404,34 @@ Min Core Pressure: [pressure_limit] kPa
"} ..() -/obj/machinery/computer/general_air_control/fuel_injection/return_text() - var/output = ..() - - output += "Fuel Injection System
" - if(device_info) - var/power = device_info["power"] - var/volume_rate = device_info["volume_rate"] - output += {"Status: [power?("Injecting"):("On Hold")] Refresh
-Rate: [volume_rate] L/sec
"} - - if(automation) - output += "Automated Fuel Injection: Engaged
" - output += "Injector Controls Locked Out
" - else - output += "Automated Fuel Injection: Disengaged
" - output += "Injector: Toggle Power Inject (1 Cycle)
" +/obj/machinery/computer/general_air_control/fuel_injection/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + var/list/data = list() + var/sensors_ui[0] + if(sensors.len) + for(var/id_tag in sensors) + var/long_name = sensors[id_tag] + var/list/sensor_data = sensor_information[id_tag] + sensors_ui[++sensors_ui.len] = list("long_name" = long_name, "sensor_data" = sensor_data) else - output += "ERROR: Can not find device Search
" + sensors_ui = null - return output + data["sensors"] = sensors_ui + data["fuel"] = 1 + data["automation"] = automation + + if(device_info) + data["device_info"] = list("power" = device_info["power"], "volume_rate" = device_info["volume_rate"]) + else + data["device_info"] = null + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "atmo_control.tmpl", src.name, 650, 500) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(5) /obj/machinery/computer/general_air_control/fuel_injection/receive_signal(datum/signal/signal) if(!signal || signal.encryption) return diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 59011486034..236079f8e31 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -8,10 +8,10 @@ idle_power_usage = 10 active_power_usage = 2000 circuit = /obj/item/weapon/circuitboard/autolathe - var/list/machine_recipes + var/datum/category_collection/autolathe/machine_recipes var/list/stored_material = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0) var/list/storage_capacity = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0) - var/show_category = "All" + var/datum/category_group/autolathe/current_category var/hacked = 0 var/disabled = 0 @@ -42,7 +42,10 @@ /obj/machinery/autolathe/proc/update_recipe_list() if(!machine_recipes) + if(!autolathe_recipes) + autolathe_recipes = new() machine_recipes = autolathe_recipes + current_category = machine_recipes.categories[1] /obj/machinery/autolathe/interact(mob/user as mob) @@ -67,12 +70,10 @@ material_bottom += "[stored_material[material]]/[storage_capacity[material]]" dat += "[material_top][material_bottom]
" - dat += "

Printable Designs

Showing: [show_category].

" + dat += "

Printable Designs

Showing: [current_category].

" - var/index = 0 - for(var/datum/autolathe/recipe/R in machine_recipes) - index++ - if(R.hidden && !hacked || (show_category != "All" && show_category != R.category)) + for(var/datum/category_item/autolathe/R in current_category.items) + if(R.hidden && !hacked) continue var/can_make = 1 var/material_string = "" @@ -101,10 +102,10 @@ max_sheets = min(max_sheets, R.max_stack) // Limit to the max allowed by stack type. multiplier_string += "
" for(var/i = 5;i*" : ""][can_make ? "" : ""][R.name][can_make ? "" : ""][R.hidden ? "*" : ""][multiplier_string]" + dat += "" dat += "
[material_string]
[R.hidden ? "*" : ""][can_make ? "" : ""][R.name][can_make ? "" : ""][R.hidden ? "*" : ""][multiplier_string][material_string]

" //Hacking. @@ -235,18 +236,13 @@ if(href_list["change_category"]) - var/choice = input("Which category do you wish to display?") as null|anything in autolathe_categories+"All" + var/choice = input("Which category do you wish to display?") as null|anything in machine_recipes.categories if(!choice) return - show_category = choice + current_category = choice if(href_list["make"] && machine_recipes) - - var/index = text2num(href_list["make"]) var/multiplier = text2num(href_list["multiplier"]) - var/datum/autolathe/recipe/making - - if(index > 0 && index <= machine_recipes.len) - making = machine_recipes[index] + var/datum/category_item/autolathe/making = locate(href_list["make"]) in current_category.items //Exploit detection, not sure if necessary after rewrite. if(!making || multiplier < 0 || multiplier > 100) diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm deleted file mode 100644 index fe495a67bea..00000000000 --- a/code/game/machinery/autolathe_datums.dm +++ /dev/null @@ -1,869 +0,0 @@ -/var/global/list/autolathe_recipes -/var/global/list/autolathe_categories - -/proc/populate_lathe_recipes() - - //Create global autolathe recipe list if it hasn't been made already. - autolathe_recipes = list() - autolathe_categories = list() - for(var/R in typesof(/datum/autolathe/recipe)-/datum/autolathe/recipe) - var/datum/autolathe/recipe/recipe = new R - autolathe_recipes += recipe - autolathe_categories |= recipe.category - - var/obj/item/I = new recipe.path - if(I.matter && !recipe.resources) //This can be overidden in the datums. - recipe.resources = list() - for(var/material in I.matter) - recipe.resources[material] = I.matter[material]*1.25 // More expensive to produce than they are to recycle. - if(recipe.is_stack && istype(I, /obj/item/stack)) - var/obj/item/stack/IS = I - recipe.max_stack = IS.max_amount - qdel(I) - -/datum/autolathe/recipe - var/name = "object" - var/path - var/list/resources - var/hidden - var/category - var/power_use = 0 - var/is_stack - var/max_stack - -/datum/autolathe/recipe/bucket - name = "bucket" - path = /obj/item/weapon/reagent_containers/glass/bucket - category = "General" - -/datum/autolathe/recipe/drinkingglass - name = "drinking glass" - path = /obj/item/weapon/reagent_containers/food/drinks/glass2/square - category = "General" - New() - ..() - var/obj/O = path - name = initial(O.name) // generic recipes yay - -/datum/autolathe/recipe/drinkingglass/rocks - path = /obj/item/weapon/reagent_containers/food/drinks/glass2/rocks - -/datum/autolathe/recipe/drinkingglass/shake - path = /obj/item/weapon/reagent_containers/food/drinks/glass2/shake - -/datum/autolathe/recipe/drinkingglass/cocktail - path = /obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail - -/datum/autolathe/recipe/drinkingglass/shot - path = /obj/item/weapon/reagent_containers/food/drinks/glass2/shot - -/datum/autolathe/recipe/drinkingglass/pint - path = /obj/item/weapon/reagent_containers/food/drinks/glass2/pint - -/datum/autolathe/recipe/drinkingglass/mug - path = /obj/item/weapon/reagent_containers/food/drinks/glass2/mug - -/datum/autolathe/recipe/drinkingglass/wine - path = /obj/item/weapon/reagent_containers/food/drinks/glass2/wine - -/datum/autolathe/recipe/flashlight - name = "flashlight" - path = /obj/item/device/flashlight - category = "General" - -/datum/autolathe/recipe/floor_light - name = "floor light" - path = /obj/machinery/floor_light - category = "General" - -/datum/autolathe/recipe/extinguisher - name = "extinguisher" - path = /obj/item/weapon/extinguisher - category = "General" - -/datum/autolathe/recipe/jar - name = "jar" - path = /obj/item/glass_jar - category = "General" - -/datum/autolathe/recipe/crowbar - name = "crowbar" - path = /obj/item/weapon/crowbar - category = "Tools" - -/datum/autolathe/recipe/multitool - name = "multitool" - path = /obj/item/device/multitool - category = "Tools" - -/datum/autolathe/recipe/t_scanner - name = "T-ray scanner" - path = /obj/item/device/t_scanner - category = "Tools" - -/datum/autolathe/recipe/weldertool - name = "welding tool" - path = /obj/item/weapon/weldingtool - category = "Tools" - -/datum/autolathe/recipe/screwdriver - name = "screwdriver" - path = /obj/item/weapon/screwdriver - category = "Tools" - -/datum/autolathe/recipe/wirecutters - name = "wirecutters" - path = /obj/item/weapon/wirecutters - category = "Tools" - -/datum/autolathe/recipe/wrench - name = "wrench" - path = /obj/item/weapon/wrench - category = "Tools" - -/datum/autolathe/recipe/hatchet - name = "hatchet" - path = /obj/item/weapon/material/hatchet - category = "Tools" - -/datum/autolathe/recipe/minihoe - name = "mini hoe" - path = /obj/item/weapon/material/minihoe - category = "Tools" - -/datum/autolathe/recipe/radio_headset - name = "radio headset" - path = /obj/item/device/radio/headset - category = "General" - -/datum/autolathe/recipe/radio_bounced - name = "station bounced radio" - path = /obj/item/device/radio/off - category = "General" - -/datum/autolathe/recipe/suit_cooler - name = "suit cooling unit" - path = /obj/item/device/suit_cooling_unit - category = "General" - -/datum/autolathe/recipe/weldermask - name = "welding mask" - path = /obj/item/clothing/head/welding - category = "General" - -/datum/autolathe/recipe/metal - name = "steel sheets" - path = /obj/item/stack/material/steel - category = "General" - is_stack = 1 - -/datum/autolathe/recipe/glass - name = "glass sheets" - path = /obj/item/stack/material/glass - category = "General" - is_stack = 1 - -/datum/autolathe/recipe/rglass - name = "reinforced glass sheets" - path = /obj/item/stack/material/glass/reinforced - category = "General" - is_stack = 1 - -/datum/autolathe/recipe/rods - name = "metal rods" - path = /obj/item/stack/rods - category = "General" - is_stack = 1 - -/datum/autolathe/recipe/knife - name = "kitchen knife" - path = /obj/item/weapon/material/knife - category = "General" - -/datum/autolathe/recipe/taperecorder - name = "tape recorder" - path = /obj/item/device/taperecorder - category = "General" - -/datum/autolathe/recipe/airlockmodule - name = "airlock electronics" - path = /obj/item/weapon/airlock_electronics - category = "Engineering" - -/datum/autolathe/recipe/airalarm - name = "air alarm electronics" - path = /obj/item/weapon/circuitboard/airalarm - category = "Engineering" - -/datum/autolathe/recipe/firealarm - name = "fire alarm electronics" - path = /obj/item/weapon/circuitboard/firealarm - category = "Engineering" - -/datum/autolathe/recipe/powermodule - name = "power control module" - path = /obj/item/weapon/module/power_control - category = "Engineering" - -/datum/autolathe/recipe/statusdisplay - name = "status display electronics" - path = /obj/item/weapon/circuitboard/status_display - category = "Engineering" - -/datum/autolathe/recipe/aistatusdisplay - name = "ai status display electronics" - path = /obj/item/weapon/circuitboard/ai_status_display - category = "Engineering" - -/datum/autolathe/recipe/newscaster - name = "newscaster electronics" - path = /obj/item/weapon/circuitboard/newscaster - category = "Engineering" - -/datum/autolathe/recipe/atm - name = "atm electronics" - path = /obj/item/weapon/circuitboard/atm - category = "Engineering" - -/datum/autolathe/recipe/intercom - name = "intercom electronics" - path = /obj/item/weapon/circuitboard/intercom - category = "Engineering" - -/datum/autolathe/recipe/holopad - name = "holopad electronics" - path = /obj/item/weapon/circuitboard/holopad - category = "Engineering" - -/datum/autolathe/recipe/guestpass - name = "guestpass console electronics" - path = /obj/item/weapon/circuitboard/guestpass - category = "Engineering" - -/datum/autolathe/recipe/entertainment - name = "entertainment camera electronics" - path = /obj/item/weapon/circuitboard/security/telescreen/entertainment - category = "Engineering" - -/datum/autolathe/recipe/keycard - name = "keycard authenticator electronics" - path = /obj/item/weapon/circuitboard/keycard_auth - category = "Engineering" - -/datum/autolathe/recipe/photocopier - name = "photocopier electronics" - path = /obj/item/weapon/circuitboard/photocopier - category = "Engineering" - -/datum/autolathe/recipe/fax - name = "fax machine electronics" - path = /obj/item/weapon/circuitboard/fax - category = "Engineering" - -/datum/autolathe/recipe/microwave - name = "microwave electronics" - path = /obj/item/weapon/circuitboard/microwave - category = "Engineering" - -/datum/autolathe/recipe/washing - name = "washing machine electronics" - path = /obj/item/weapon/circuitboard/washing - category = "Engineering" - -/datum/autolathe/recipe/request - name = "request console electronics" - path = /obj/item/weapon/circuitboard/request - category = "Engineering" - -/datum/autolathe/recipe/motor - name = "motor" - path = /obj/item/weapon/stock_parts/motor - category = "Engineering" - -/datum/autolathe/recipe/gear - name = "gear" - path = /obj/item/weapon/stock_parts/gear - category = "Engineering" - -/datum/autolathe/recipe/spring - name = "spring" - path = /obj/item/weapon/stock_parts/spring - category = "Engineering" - -/datum/autolathe/recipe/rcd_ammo - name = "matter cartridge" - path = /obj/item/weapon/rcd_ammo - category = "Engineering" - -/datum/autolathe/recipe/scalpel - name = "scalpel" - path = /obj/item/weapon/scalpel - category = "Medical" - -/datum/autolathe/recipe/circularsaw - name = "circular saw" - path = /obj/item/weapon/circular_saw - category = "Medical" - -/datum/autolathe/recipe/surgicaldrill - name = "surgical drill" - path = /obj/item/weapon/surgicaldrill - category = "Medical" - -/datum/autolathe/recipe/retractor - name = "retractor" - path = /obj/item/weapon/retractor - category = "Medical" - -/datum/autolathe/recipe/cautery - name = "cautery" - path = /obj/item/weapon/cautery - category = "Medical" - -/datum/autolathe/recipe/hemostat - name = "hemostat" - path = /obj/item/weapon/hemostat - category = "Medical" - -/datum/autolathe/recipe/beaker - name = "glass beaker" - path = /obj/item/weapon/reagent_containers/glass/beaker - category = "Medical" - -/datum/autolathe/recipe/beaker_large - name = "large glass beaker" - path = /obj/item/weapon/reagent_containers/glass/beaker/large - category = "Medical" - -/datum/autolathe/recipe/vial - name = "glass vial" - path = /obj/item/weapon/reagent_containers/glass/beaker/vial - category = "Medical" - -/datum/autolathe/recipe/syringe - name = "syringe" - path = /obj/item/weapon/reagent_containers/syringe - category = "Medical" - -/datum/autolathe/recipe/syringegun_ammo - name = "syringe gun cartridge" - path = /obj/item/weapon/syringe_cartridge - category = "Arms and Ammunition" - -//////////////// -/*Ammo casings*/ -//////////////// - -/datum/autolathe/recipe/shotgun_blanks - name = "ammunition (12g, blank)" - path = /obj/item/ammo_casing/shotgun/blank - category = "Arms and Ammunition" - -/datum/autolathe/recipe/shotgun_beanbag - name = "ammunition (12g, beanbag)" - path = /obj/item/ammo_casing/shotgun/beanbag - category = "Arms and Ammunition" - -/datum/autolathe/recipe/shotgun_flash - name = "ammunition (12g, flash)" - path = /obj/item/ammo_casing/shotgun/flash - category = "Arms and Ammunition" - -/datum/autolathe/recipe/shotgun - name = "ammunition (12g, slug)" - path = /obj/item/ammo_casing/shotgun - hidden = 1 - category = "Arms and Ammunition" - -/datum/autolathe/recipe/shotgun_pellet - name = "ammunition (12g, pellet)" - path = /obj/item/ammo_casing/shotgun/pellet - hidden = 1 - category = "Arms and Ammunition" - -/datum/autolathe/recipe/stunshell - name = "ammunition (stun cartridge, shotgun)" - path = /obj/item/ammo_casing/shotgun/stunshell - hidden = 1 - category = "Arms and Ammunition" - -////////////////// -/*Ammo magazines*/ -////////////////// - -/////// 5mm -/* -/datum/autolathe/recipe/pistol_5mm - name = "pistol magazine (5mm)" - path = /obj/item/ammo_magazine/c5mm - category = "Arms and Ammunition" - hidden = 1 -*/ - -/////// .45 -/datum/autolathe/recipe/pistol_45 - name = "pistol magazine (.45)" - path = /obj/item/ammo_magazine/c45m - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_45p - name = "pistol magazine (.45 practice)" - path = /obj/item/ammo_magazine/c45m/practice - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_45r - name = "pistol magazine (.45 rubber)" - path = /obj/item/ammo_magazine/c45m/rubber - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_45f - name = "pistol magazine (.45 flash)" - path = /obj/item/ammo_magazine/c45m/flash - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_45uzi - name = "uzi magazine (.45)" - path = /obj/item/ammo_magazine/c45uzi - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/tommymag - name = "Tommygun magazine (.45)" - path = /obj/item/ammo_magazine/tommymag - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/tommydrum - name = "Tommygun drum magazine (.45)" - path = /obj/item/ammo_magazine/tommydrum - category = "Arms and Ammunition" - hidden = 1 - -/////// 9mm - -/obj/item/ammo_magazine/mc9mm/flash - ammo_type = /obj/item/ammo_casing/c9mmf - -/obj/item/ammo_magazine/mc9mm/rubber - name = "magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/c9mmr - -/obj/item/ammo_magazine/mc9mm/practice - name = "magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/c9mmp - -/datum/autolathe/recipe/pistol_9mm - name = "pistol magazine (9mm)" - path = /obj/item/ammo_magazine/mc9mm - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_9mmr - name = "pistol magazine (9mm rubber)" - path = /obj/item/ammo_magazine/mc9mm/rubber - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_9mmp - name = "pistol magazine (9mm practice)" - path = /obj/item/ammo_magazine/mc9mm/practice - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_9mmf - name = "pistol magazine (9mm flash)" - path = /obj/item/ammo_magazine/mc9mm/flash - category = "Arms and Ammunition" - -/datum/autolathe/recipe/smg_9mm - name = "top-mounted SMG magazine (9mm)" - path = /obj/item/ammo_magazine/mc9mmt - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/smg_9mmr - name = "top-mounted SMG magazine (9mm rubber)" - path = /obj/item/ammo_magazine/mc9mmt/rubber - category = "Arms and Ammunition" - -/datum/autolathe/recipe/smg_9mmp - name = "top-mounted SMG magazine (9mm practice)" - path = /obj/item/ammo_magazine/mc9mmt/practice - category = "Arms and Ammunition" - -/datum/autolathe/recipe/smg_9mmf - name = "top-mounted SMG magazine (9mm flash)" - path = /obj/item/ammo_magazine/mc9mmt/flash - category = "Arms and Ammunition" - -/////// 10mm -/datum/autolathe/recipe/smg_10mm - name = "SMG magazine (10mm)" - path = /obj/item/ammo_magazine/a10mm - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_50 - name = "pistol magazine (.50AE)" - path = /obj/item/ammo_magazine/a50 - category = "Arms and Ammunition" - hidden = 1 - -/////// 5.56mm -/datum/autolathe/recipe/rifle_556 - name = "10rnd rifle magazine (5.56mm)" - path = /obj/item/ammo_magazine/a556 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_556p - name = "10rnd rifle magazine (5.56mm practice)" - path = /obj/item/ammo_magazine/a556/practice - category = "Arms and Ammunition" - -/datum/autolathe/recipe/rifle_556m - name = "20rnd rifle magazine (5.56mm)" - path = /obj/item/ammo_magazine/a556m - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_556mp - name = "20rnd rifle magazine (5.56mm practice)" - path = /obj/item/ammo_magazine/a556m/practice - category = "Arms and Ammunition" - hidden = 1 - -/////// 7.62 -/datum/autolathe/recipe/rifle_small_762 - name = "10rnd rifle magazine (7.62mm)" - path = /obj/item/ammo_magazine/s762 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_762 - name = "20rnd rifle magazine (7.62mm)" - path = /obj/item/ammo_magazine/c762 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/machinegun_762 - name = "machinegun box magazine (7.62)" - path = /obj/item/ammo_magazine/a762 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/shotgun_magazine - name = "24rnd shotgun magazine (12g)" - path = /obj/item/ammo_magazine/g12 - category = "Arms and Ammunition" - hidden = 1 - -/* Commented out until autolathe stuff is decided/fixed. Will probably remove these entirely. -Spades -// These should always be /empty! The idea is to fill them up manually with ammo clips. - -/datum/autolathe/recipe/pistol_5mm - name = "pistol magazine (5mm)" - path = /obj/item/ammo_magazine/c5mm/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/smg_5mm - name = "top-mounted SMG magazine (5mm)" - path = /obj/item/ammo_magazine/c5mmt/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_45 - name = "pistol magazine (.45)" - path = /obj/item/ammo_magazine/c45m/empty - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_45uzi - name = "uzi magazine (.45)" - path = /obj/item/ammo_magazine/c45uzi/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/tommymag - name = "Tommygun magazine (.45)" - path = /obj/item/ammo_magazine/tommymag/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/tommydrum - name = "Tommygun drum magazine (.45)" - path = /obj/item/ammo_magazine/tommydrum/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_9mm - name = "pistol magazine (9mm)" - path = /obj/item/ammo_magazine/mc9mm/empty - category = "Arms and Ammunition" - -/datum/autolathe/recipe/smg_9mm - name = "top-mounted SMG magazine (9mm)" - path = /obj/item/ammo_magazine/mc9mmt/empty - category = "Arms and Ammunition" - -/datum/autolathe/recipe/smg_10mm - name = "SMG magazine (10mm)" - path = /obj/item/ammo_magazine/a10mm/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_50 - name = "pistol magazine (.50AE)" - path = /obj/item/ammo_magazine/a50/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_556 - name = "10rnd rifle magazine (5.56mm)" - path = /obj/item/ammo_magazine/a556/empty - category = "Arms and Ammunition" - -/datum/autolathe/recipe/rifle_556m - name = "20rnd rifle magazine (5.56mm)" - path = /obj/item/ammo_magazine/a556m/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_SVD - name = "10rnd rifle magazine (7.62mm)" - path = /obj/item/ammo_magazine/SVD/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_762 - name = "20rnd rifle magazine (7.62mm)" - path = /obj/item/ammo_magazine/c762/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/machinegun_762 - name = "machinegun box magazine (7.62)" - path = /obj/item/ammo_magazine/a762/empty - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/shotgun_magazine - name = "24rnd shotgun magazine (12g)" - path = /obj/item/ammo_magazine/g12/empty - category = "Arms and Ammunition" - hidden = 1*/ - -/////////////////////////////// -/*Ammo clips and Speedloaders*/ -/////////////////////////////// - -/datum/autolathe/recipe/speedloader_357 - name = "speedloader (.357)" - path = /obj/item/ammo_magazine/a357 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/speedloader_38 - name = "speedloader (.38)" - path = /obj/item/ammo_magazine/c38 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/speedloader_38r - name = "speedloader (.38 rubber)" - path = /obj/item/ammo_magazine/c38/rubber - category = "Arms and Ammunition" - -// Commented out until metal exploits with autolathe is fixed. -/*/datum/autolathe/recipe/pistol_clip_45 - name = "ammo clip (.45)" - path = /obj/item/ammo_magazine/clip/c45 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_clip_45r - name = "ammo clip (.45 rubber)" - path = /obj/item/ammo_magazine/clip/c45/rubber - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_clip_45f - name = "ammo clip (.45 flash)" - path = /obj/item/ammo_magazine/clip/c45/flash - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_clip_45p - name = "ammo clip (.45 practice)" - path = /obj/item/ammo_magazine/clip/c45/practice - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_clip_9mm - name = "ammo clip (9mm)" - path = /obj/item/ammo_magazine/clip/c9mm - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_clip_9mmr - name = "ammo clip (9mm rubber)" - path = /obj/item/ammo_magazine/clip/c9mm/rubber - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_clip_9mmp - name = "ammo clip (9mm practice)" - path = /obj/item/ammo_magazine/clip/c9mm/practice - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_clip_9mmf - name = "ammo clip (9mm flash)" - path = /obj/item/ammo_magazine/clip/c9mm/flash - category = "Arms and Ammunition" - -/datum/autolathe/recipe/pistol_clip_5mm - name = "ammo clip (5mm)" - path = /obj/item/ammo_magazine/clip/c5mm - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_clip_10mm - name = "ammo clip (10mm)" - path = /obj/item/ammo_magazine/clip/a10mm - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/pistol_clip_50 - name = "ammo clip (.50AE)" - path = /obj/item/ammo_magazine/clip/a50 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_clip_556 - name = "ammo clip (5.56mm)" - path = /obj/item/ammo_magazine/clip/a556 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_clip_556_practice - name = "ammo clip (5.56mm practice)" - path = /obj/item/ammo_magazine/clip/a556/practice - category = "Arms and Ammunition" -*/ - -/datum/autolathe/recipe/rifle_clip_762 - name = "ammo clip (7.62mm)" - path = /obj/item/ammo_magazine/clip/a762 - category = "Arms and Ammunition" - hidden = 1 - -/datum/autolathe/recipe/rifle_clip_762_practice - name = "ammo clip (7.62mm practice)" - path = /obj/item/ammo_magazine/clip/a762/practice - category = "Arms and Ammunition" - -////////////// - -/datum/autolathe/recipe/consolescreen - name = "console screen" - path = /obj/item/weapon/stock_parts/console_screen - category = "Devices and Components" - -/datum/autolathe/recipe/igniter - name = "igniter" - path = /obj/item/device/assembly/igniter - category = "Devices and Components" - -/datum/autolathe/recipe/signaler - name = "signaler" - path = /obj/item/device/assembly/signaler - category = "Devices and Components" - -/datum/autolathe/recipe/sensor_infra - name = "infrared sensor" - path = /obj/item/device/assembly/infra - category = "Devices and Components" - -/datum/autolathe/recipe/timer - name = "timer" - path = /obj/item/device/assembly/timer - category = "Devices and Components" - -/datum/autolathe/recipe/sensor_prox - name = "proximity sensor" - path = /obj/item/device/assembly/prox_sensor - category = "Devices and Components" - -/datum/autolathe/recipe/tube - name = "light tube" - path = /obj/item/weapon/light/tube - category = "General" - -/datum/autolathe/recipe/bulb - name = "light bulb" - path = /obj/item/weapon/light/bulb - category = "General" - -/datum/autolathe/recipe/ashtray_glass - name = "glass ashtray" - path = /obj/item/weapon/material/ashtray/glass - category = "General" - -/datum/autolathe/recipe/camera_assembly - name = "camera assembly" - path = /obj/item/weapon/camera_assembly - category = "Engineering" - -/datum/autolathe/recipe/weldinggoggles - name = "welding goggles" - path = /obj/item/clothing/glasses/welding - category = "General" - -/datum/autolathe/recipe/maglight - name = "maglight" - path = /obj/item/device/flashlight/maglight - hidden = 1 - category = "General" - -/datum/autolathe/recipe/flamethrower - name = "flamethrower" - path = /obj/item/weapon/flamethrower/full - hidden = 1 - category = "Arms and Ammunition" - -/datum/autolathe/recipe/rcd - name = "rapid construction device" - path = /obj/item/weapon/rcd - hidden = 1 - category = "Engineering" - -/datum/autolathe/recipe/electropack - name = "electropack" - path = /obj/item/device/radio/electropack - hidden = 1 - category = "Devices and Components" - -/datum/autolathe/recipe/beartrap - name = "mechanical trap" - path = /obj/item/weapon/beartrap - hidden = 1 - category = "Devices and Components" - -/datum/autolathe/recipe/welder_industrial - name = "industrial welding tool" - path = /obj/item/weapon/weldingtool/largetank - hidden = 1 - category = "Tools" - -/datum/autolathe/recipe/handcuffs - name = "handcuffs" - path = /obj/item/weapon/handcuffs - hidden = 1 - category = "General" - -/datum/autolathe/recipe/knuckledusters - name = "knuckle dusters" - path = /obj/item/weapon/material/knuckledusters - hidden = 1 - category = "Arms and Ammunition" - -/datum/autolathe/recipe/tacknife - name = "tactical knife" - path = /obj/item/weapon/material/hatchet/tacknife - hidden = 1 - category = "Arms and Ammunition" \ No newline at end of file diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index c6b6fabe1b9..986d20e3b91 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -109,9 +109,9 @@ dat += "10 milk ([round(20/build_eff)])
" dat += "Slab of meat ([round(50/build_eff)])
" dat += "Nutrient
" - dat += "E-Z-Nutrient ([round(10/build_eff)]) | x5
" - dat += "Left 4 Zed ([round(20/build_eff)]) | x5
" - dat += "Robust Harvest ([round(25/build_eff)]) | x5
" + dat += "E-Z-Nutrient ([round(60/build_eff)]) | x5
" + dat += "Left 4 Zed ([round(120/build_eff)]) | x5
" + dat += "Robust Harvest ([round(150/build_eff)]) | x5
" dat += "Leather
" dat += "Wallet ([round(100/build_eff)])
" dat += "Botanical gloves ([round(250/build_eff)])
" diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 291b9852949..7c466514194 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -35,10 +35,13 @@ var/affected_by_emp_until = 0 + var/client_huds = list() + /obj/machinery/camera/New() wires = new(src) assembly = new(src) assembly.state = 4 + client_huds |= global_hud.whitense /* // Use this to look for cameras that have the same c_tag. for(var/obj/machinery/camera/C in cameranet.cameras) diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 8427a084185..5cc9801d0fe 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -22,62 +22,51 @@ add_fingerprint(user) if(stat & (BROKEN|NOPOWER)) return - interact(user) + ui_interact(user) /obj/machinery/computer/operating/attack_hand(mob/user) add_fingerprint(user) if(stat & (BROKEN|NOPOWER)) return - interact(user) - - -/obj/machinery/computer/operating/interact(mob/user) - if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) ) - if (!istype(user, /mob/living/silicon)) - user.unset_machine() - user << browse(null, "window=op") - return + ui_interact(user) +/** + * Display the NanoUI window for the operating computer. + * + * See NanoUI documentation for details. + */ +/obj/machinery/computer/operating/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) user.set_machine(src) - var/dat = "Operating Computer\n" - dat += "Close

" //| Update" - if(src.table && (src.table.check_victim())) - src.victim = src.table.victim - dat += {" -Patient Information:
-
-Name: [src.victim.real_name]
-Age: [src.victim.age]
-Blood Type: [src.victim.b_type]
-
-Health: [src.victim.health]
-Brute Damage: [src.victim.getBruteLoss()]
-Toxins Damage: [src.victim.getToxLoss()]
-Fire Damage: [src.victim.getFireLoss()]
-Suffocation Damage: [src.victim.getOxyLoss()]
-Patient Status: [src.victim.stat ? "Non-Responsive" : "Stable"]
-Heartbeat rate: [victim.get_pulse(GETPULSE_TOOL)]
-"} - else - src.victim = null - dat += {" -Patient Information:
-
-No Patient Detected -"} - user << browse(dat, "window=op") - onclose(user, "op") + var/list/data = list() + var/list/victim_ui = list() + + if(table && (table.check_victim())) + victim = table.victim + + victim_ui = list("real_name" = victim.real_name, "age" = victim.age, "b_type" = victim.b_type, "health" = victim.health, + "brute" = victim.getBruteLoss(), "tox" = src.victim.getToxLoss(), "burn" = victim.getFireLoss(), "oxy" = victim.getOxyLoss(), + "stat" = (victim.stat ? "Non-Responsive" : "Stable"), "pulse" = victim.get_pulse(GETPULSE_TOOL)) + else + victim = null + victim_ui = null + + data["table"] = table + data["victim"] = victim_ui + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "operating.tmpl", src.name, 380, 400) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(5) /obj/machinery/computer/operating/Topic(href, href_list) if(..()) return 1 if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) usr.set_machine(src) - return - -/obj/machinery/computer/operating/process() - if(..()) - src.updateDialog() + src.add_fingerprint(usr) + nanomanager.update_uis(src) \ No newline at end of file diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 189fe5b40a8..d338edacc1d 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -53,7 +53,7 @@ prize.loc = src.loc /obj/machinery/computer/arcade/attack_ai(mob/user as mob) - return src.attack_hand(user) + return attack_hand(user) /obj/machinery/computer/arcade/emp_act(severity) @@ -84,6 +84,7 @@ circuit = /obj/item/weapon/circuitboard/arcade/battle var/enemy_name = "Space Villian" var/temp = "Winners don't use space drugs" //Temporary message, for attack messages, etc + var/enemy_action = "" var/player_hp = 30 //Player health/attack points var/player_mp = 10 var/enemy_hp = 45 //Enemy health/attack points @@ -103,81 +104,80 @@ name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn", "Bloopers") - src.enemy_name = replacetext((name_part1 + name_part2), "the ", "") - src.name = (name_action + name_part1 + name_part2) + enemy_name = replacetext((name_part1 + name_part2), "the ", "") + name = (name_action + name_part1 + name_part2) /obj/machinery/computer/arcade/battle/attack_hand(mob/user as mob) if(..()) return user.set_machine(src) - var/dat = "Close" - dat += "

[src.enemy_name]

" + ui_interact(user) - dat += "

[src.temp]

" - dat += "
Health: [src.player_hp] | Magic: [src.player_mp] | Enemy Health: [src.enemy_hp]
" +/** + * Display the NanoUI window for the arcade machine. + * + * See NanoUI documentation for details. + */ +/obj/machinery/computer/arcade/battle/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) - dat += "
" - if (src.gameover) - dat += "New Game" - else - dat += "Attack | " - dat += "Heal | " - dat += "Recharge Power" + var/list/data = list() + data["temp"] = temp + data["enemyAction"] = enemy_action + data["enemyName"] = enemy_name + data["playerHP"] = player_hp + data["playerMP"] = player_mp + data["enemyHP"] = enemy_hp + data["gameOver"] = gameover - dat += "
" - - user << browse(dat, "window=arcade") - onclose(user, "arcade") - return + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "arcade_battle.tmpl", src.name, 400, 300) + ui.set_initial_data(data) + ui.open() + //ui.set_auto_update(2) /obj/machinery/computer/arcade/battle/Topic(href, href_list) if(..()) return 1 - if (!src.blocked && !src.gameover) + if (!blocked && !gameover) if (href_list["attack"]) - src.blocked = 1 + blocked = 1 var/attackamt = rand(2,6) - src.temp = "You attack for [attackamt] damage!" - src.updateUsrDialog() + temp = "You attack for [attackamt] damage!" if(turtle > 0) turtle-- sleep(10) - src.enemy_hp -= attackamt - src.arcade_action() + enemy_hp -= attackamt + arcade_action() else if (href_list["heal"]) - src.blocked = 1 + blocked = 1 var/pointamt = rand(1,3) var/healamt = rand(6,8) - src.temp = "You use [pointamt] magic to heal for [healamt] damage!" - src.updateUsrDialog() + temp = "You use [pointamt] magic to heal for [healamt] damage!" turtle++ sleep(10) - src.player_mp -= pointamt - src.player_hp += healamt - src.blocked = 1 - src.updateUsrDialog() - src.arcade_action() + player_mp -= pointamt + player_hp += healamt + blocked = 1 + arcade_action() else if (href_list["charge"]) - src.blocked = 1 + blocked = 1 var/chargeamt = rand(4,7) - src.temp = "You regain [chargeamt] points" - src.player_mp += chargeamt + temp = "You regain [chargeamt] points" + player_mp += chargeamt if(turtle > 0) turtle-- - src.updateUsrDialog() sleep(10) - src.arcade_action() + arcade_action() - if (href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=arcade") else if (href_list["newgame"]) //Reset everything temp = "New Round" @@ -193,14 +193,14 @@ emagged = 0 src.add_fingerprint(usr) - src.updateUsrDialog() + nanomanager.update_uis(src) return /obj/machinery/computer/arcade/battle/proc/arcade_action() - if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0)) + if ((enemy_mp <= 0) || (enemy_hp <= 0)) if(!gameover) - src.gameover = 1 - src.temp = "[src.enemy_name] has fallen! Rejoice!" + gameover = 1 + temp = "[enemy_name] has fallen! Rejoice!" if(emagged) feedback_inc("arcade_win_emagged") @@ -212,53 +212,52 @@ emagged = 0 else if(!contents.len) feedback_inc("arcade_win_normal") - src.prizevend() + prizevend() else feedback_inc("arcade_win_normal") - src.prizevend() + prizevend() else if (emagged && (turtle >= 4)) var/boomamt = rand(5,10) - src.temp = "[src.enemy_name] throws a bomb, exploding you for [boomamt] damage!" - src.player_hp -= boomamt + enemy_action = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!" + player_hp -= boomamt - else if ((src.enemy_mp <= 5) && (prob(70))) + else if ((enemy_mp <= 5) && (prob(70))) var/stealamt = rand(2,3) - src.temp = "[src.enemy_name] steals [stealamt] of your power!" - src.player_mp -= stealamt - src.updateUsrDialog() + enemy_action = "[enemy_name] steals [stealamt] of your power!" + player_mp -= stealamt - if (src.player_mp <= 0) - src.gameover = 1 + if (player_mp <= 0) + gameover = 1 sleep(10) - src.temp = "You have been drained! GAME OVER" + temp = "You have been drained! GAME OVER" if(emagged) feedback_inc("arcade_loss_mana_emagged") usr.gib() else feedback_inc("arcade_loss_mana_normal") - else if ((src.enemy_hp <= 10) && (src.enemy_mp > 4)) - src.temp = "[src.enemy_name] heals for 4 health!" - src.enemy_hp += 4 - src.enemy_mp -= 4 + else if ((enemy_hp <= 10) && (enemy_mp > 4)) + enemy_action = "[enemy_name] heals for 4 health!" + enemy_hp += 4 + enemy_mp -= 4 else var/attackamt = rand(3,6) - src.temp = "[src.enemy_name] attacks for [attackamt] damage!" - src.player_hp -= attackamt + enemy_action = "[enemy_name] attacks for [attackamt] damage!" + player_hp -= attackamt - if ((src.player_mp <= 0) || (src.player_hp <= 0)) - src.gameover = 1 - src.temp = "You have been crushed! GAME OVER" + if ((player_mp <= 0) || (player_hp <= 0)) + gameover = 1 + temp = "You have been crushed! GAME OVER" if(emagged) feedback_inc("arcade_loss_hp_emagged") usr.gib() else feedback_inc("arcade_loss_hp_normal") - src.blocked = 0 + blocked = 0 return @@ -276,7 +275,6 @@ enemy_name = "Cuban Pete" name = "Outbomb Cuban Pete" - src.updateUsrDialog() return 1 diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index bdab3bbbb14..da165448dab 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -16,6 +16,7 @@ var/obj/item/weapon/disk/data/diskette = null //Mostly so the geneticist can steal everything. var/loading = 0 // Nice loading text + /obj/machinery/computer/cloning/initialize() ..() updatemodules() @@ -25,7 +26,7 @@ ..() /obj/machinery/computer/cloning/proc/updatemodules() - src.scanner = findscanner() + scanner = findscanner() releasecloner() findcloner() @@ -63,12 +64,12 @@ /obj/machinery/computer/cloning/attackby(obj/item/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES - if (!src.diskette) + if (!diskette) user.drop_item() W.loc = src - src.diskette = W + diskette = W user << "You insert [W]." - src.updateUsrDialog() + updateUsrDialog() return else if(istype(W, /obj/item/device/multitool)) var/obj/item/device/multitool/M = W @@ -78,6 +79,15 @@ P.connected = src P.name = "[initial(P.name)] #[pods.len]" user << "You connect [P] to [src]." + + else if (menu == 4 && (istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))) + if(check_access(W)) + records.Remove(active_record) + qdel(active_record) + temp = "Record deleted." + menu = 2 + else + temp = "Access Denied." else ..() return @@ -94,109 +104,55 @@ updatemodules() - var/dat = "

Cloning System Control

" - dat += "Refresh" + ui_interact(user) - dat += "
[temp]
" +/obj/machinery/computer/cloning/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) - switch(src.menu) - if(1) - // Modules - dat += "

Modules

" - //dat += "Reload Modules" - if (isnull(src.scanner)) - dat += " DNA scanner not found.
" - else - dat += " DNA scanner found.
" - if (pods.len) - dat += " [pods.len] cloning vat\s found.
" - else - dat += " No cloning vats found.
" + var/data[0] - // Scanner - dat += "

Scanner Functions

" + var/records_list_ui[0] + for(var/datum/dna2/record/R in records) + records_list_ui[++records_list_ui.len] = list("ckey" = R.ckey, "name" = R.dna.real_name) - if(loading) - dat += "Scanning...
" - else - dat += "[scantemp]
" + var/pods_list_ui[0] + for(var/obj/machinery/clonepod/pod in pods) + pods_list_ui[++pods_list_ui.len] = list("pod" = pod, "biomass" = pod.biomass) - if (isnull(src.scanner)) - dat += "No scanner connected!
" - else - if (src.scanner.occupant) - if(scantemp == "Scanner unoccupied") scantemp = "" // Stupid check to remove the text + if(pods) + data["pods"] = pods_list_ui + else + data["pods"] = null - dat += "Scan - [src.scanner.occupant]
" - else - scantemp = "Scanner unoccupied" + if(records) + data["records"] = records_list_ui + else + data["records"] = null - dat += "Lock status: [src.scanner.locked ? "Locked" : "Unlocked"]
" + if(active_record) + data["activeRecord"] = list("ckey" = active_record.ckey, "real_name" = active_record.dna.real_name, \ + "ui" = active_record.dna.uni_identity, "se" = active_record.dna.struc_enzymes) + else + data["activeRecord"] = null - if (pods.len) - for (var/obj/machinery/clonepod/pod in pods) - dat += "[pod] biomass: [pod.biomass]
" + data["menu"] = menu + data["connected"] = scanner + data["podsLen"] = pods.len + data["loading"] = loading + if(!scanner.occupant) + scantemp = "" + data["scantemp"] = scantemp + data["occupant"] = scanner.occupant + data["locked"] = scanner.locked + data["diskette"] = diskette + data["temp"] = temp - // Database - dat += "

Database Functions

" - dat += "View Records
" - if (src.diskette) - dat += "Eject Disk" - - - if(2) - dat += "

Current records

" - dat += "Back

" - for(var/datum/dna2/record/R in src.records) - dat += "
  • [R.dna.real_name]
  • " - - if(3) - dat += "

    Selected Record

    " - dat += "Back
    " - - if (!src.active_record) - dat += "ERROR: Record not found." - else - dat += {"
    Delete Record
    - Name: [src.active_record.dna.real_name]
    "} - var/obj/item/weapon/implant/health/H = null - if(src.active_record.implant) - H=locate(src.active_record.implant) - - if ((H) && (istype(H))) - dat += "Health: [H.sensehealth()] | OXY-BURN-TOX-BRUTE
    " - else - dat += "Unable to locate implant.
    " - - if (!isnull(src.diskette)) - dat += "Load from disk." - - dat += " | Save: UI + UE" - dat += " | Save: UI" - dat += " | Save: SE" - dat += "
    " - else - dat += "
    " //Keeping a line empty for appearances I guess. - - dat += {"UI: [src.active_record.dna.uni_identity]
    - SE: [src.active_record.dna.struc_enzymes]

    "} - - if(pods.len) - dat += {"Clone
    "} - - if(4) - if (!src.active_record) - src.menu = 2 - dat = "[src.temp]
    " - dat += "

    Confirm Record Deletion

    " - - dat += "Scan card to confirm.
    " - dat += "No" - - - user << browse(dat, "window=cloning") - onclose(user, "cloning") - return + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "cloning.tmpl", src.name, 400, 450) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(5) /obj/machinery/computer/cloning/Topic(href, href_list) if(..()) @@ -205,101 +161,87 @@ if(loading) return - if ((href_list["scan"]) && (!isnull(src.scanner))) + if ((href_list["scan"]) && (!isnull(scanner))) scantemp = "" loading = 1 - src.updateUsrDialog() spawn(20) - src.scan_mob(src.scanner.occupant) + scan_mob(scanner.occupant) loading = 0 - src.updateUsrDialog() - //No locking an open scanner. - else if ((href_list["lock"]) && (!isnull(src.scanner))) - if ((!src.scanner.locked) && (src.scanner.occupant)) - src.scanner.locked = 1 + else if ((href_list["lock"]) && (!isnull(scanner))) + if ((!scanner.locked) && (scanner.occupant)) + scanner.locked = 1 else - src.scanner.locked = 0 + scanner.locked = 0 + + else if ((href_list["eject"]) && (!isnull(scanner))) + if ((!scanner.locked) && (scanner.occupant)) + scanner.eject_occupant() else if (href_list["view_rec"]) - src.active_record = locate(href_list["view_rec"]) - if(istype(src.active_record,/datum/dna2/record)) - if ((isnull(src.active_record.ckey))) - qdel(src.active_record) - src.temp = "ERROR: Record Corrupt" + active_record = find_record(href_list["view_rec"]) + if(istype(active_record,/datum/dna2/record)) + if ((isnull(active_record.ckey))) + qdel(active_record) + temp = "ERROR: Record Corrupt" else - src.menu = 3 + menu = 3 else - src.active_record = null - src.temp = "Record missing." + active_record = null + temp = "Record missing." else if (href_list["del_rec"]) - if ((!src.active_record) || (src.menu < 3)) + if ((!active_record) || (menu < 3)) return - if (src.menu == 3) //If we are viewing a record, confirm deletion - src.temp = "Delete record?" - src.menu = 4 - - else if (src.menu == 4) - var/obj/item/weapon/card/id/C = usr.get_active_hand() - if (istype(C)||istype(C, /obj/item/device/pda)) - if(src.check_access(C)) - src.records.Remove(src.active_record) - qdel(src.active_record) - src.temp = "Record deleted." - src.menu = 2 - else - src.temp = "Access Denied." + if (menu == 3) //If we are viewing a record, confirm deletion + temp = "Delete record?" + menu = 4 else if (href_list["disk"]) //Load or eject. switch(href_list["disk"]) if("load") - if ((isnull(src.diskette)) || isnull(src.diskette.buf)) - src.temp = "Load error." - src.updateUsrDialog() + if ((isnull(diskette)) || isnull(diskette.buf)) + temp = "Load error." return - if (isnull(src.active_record)) - src.temp = "Record error." - src.menu = 1 - src.updateUsrDialog() + if (isnull(active_record)) + temp = "Record error." + menu = 1 return - src.active_record = src.diskette.buf + active_record = diskette.buf - src.temp = "Load successful." + temp = "Load successful." if("eject") - if (!isnull(src.diskette)) - src.diskette.loc = src.loc - src.diskette = null + if (!isnull(diskette)) + diskette.loc = loc + diskette = null else if (href_list["save_disk"]) //Save to disk! - if ((isnull(src.diskette)) || (src.diskette.read_only) || (isnull(src.active_record))) - src.temp = "Save error." - src.updateUsrDialog() - return + if ((isnull(diskette)) || (diskette.read_only) || (isnull(active_record))) + temp = "Save error." // DNA2 makes things a little simpler. - src.diskette.buf=src.active_record - src.diskette.buf.types=0 + diskette.buf = active_record + diskette.buf.types = 0 switch(href_list["save_disk"]) //Save as Ui/Ui+Ue/Se if("ui") - src.diskette.buf.types=DNA2_BUF_UI + diskette.buf.types = DNA2_BUF_UI if("ue") - src.diskette.buf.types=DNA2_BUF_UI|DNA2_BUF_UE + diskette.buf.types = DNA2_BUF_UI | DNA2_BUF_UE if("se") - src.diskette.buf.types=DNA2_BUF_SE - src.diskette.name = "data disk - '[src.active_record.dna.real_name]'" - src.temp = "Save \[[href_list["save_disk"]]\] successful." + diskette.buf.types = DNA2_BUF_SE + diskette.name = "data disk - '[active_record.dna.real_name]'" + temp = "Save \[[href_list["save_disk"]]\] successful." else if (href_list["refresh"]) - src.updateUsrDialog() + updateUsrDialog() else if (href_list["clone"]) - var/datum/dna2/record/C = locate(href_list["clone"]) + var/datum/dna2/record/C = find_record(href_list["clone"]) //Look for that player! They better be dead! if(istype(C)) //Can't clone without someone to clone. Or a pod. Or if the pod is busy. Or full of gibs. @@ -340,11 +282,12 @@ temp = "Error: Data corruption." else if (href_list["menu"]) - src.menu = text2num(href_list["menu"]) + menu = href_list["menu"] + temp = "" + scantemp = "" - src.add_fingerprint(usr) - src.updateUsrDialog() - return + nanomanager.update_uis(src) + add_fingerprint(usr) /obj/machinery/computer/cloning/proc/scan_mob(mob/living/carbon/human/subject as mob) if ((isnull(subject)) || (!(ishuman(subject))) || (!subject.dna)) @@ -381,13 +324,13 @@ subject.dna.check_integrity() var/datum/dna2/record/R = new /datum/dna2/record() - R.dna=subject.dna + R.dna = subject.dna R.ckey = subject.ckey - R.id= copytext(md5(subject.real_name), 2, 6) - R.name=R.dna.real_name - R.types=DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE - R.languages=subject.languages - R.flavor=subject.flavor_texts.Copy() + R.id = copytext(md5(subject.real_name), 2, 6) + R.name = R.dna.real_name + R.types = DNA2_BUF_UI|DNA2_BUF_UE|DNA2_BUF_SE + R.languages = subject.languages + R.flavor = subject.flavor_texts.Copy() //Add an implant if needed var/obj/item/weapon/implant/health/imp = locate(/obj/item/weapon/implant/health, subject) @@ -402,13 +345,13 @@ if (!isnull(subject.mind)) //Save that mind so traitors can continue traitoring after cloning. R.mind = "\ref[subject.mind]" - src.records += R + records += R scantemp = "Subject successfully scanned." //Find a specific record by key. /obj/machinery/computer/cloning/proc/find_record(var/find_key) var/selected_record = null - for(var/datum/dna2/record/R in src.records) + for(var/datum/dna2/record/R in records) if (R.ckey == find_key) selected_record = R break diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index a4553403bc1..b3f97657464 100644 --- a/code/game/machinery/computer/guestpass.dm +++ b/code/game/machinery/computer/guestpass.dm @@ -88,7 +88,7 @@ if(!giver && user.unEquip(I)) I.forceMove(src) giver = I - updateUsrDialog() + nanomanager.update_uis(src) else if(giver) user << "There is already ID card inside." return @@ -102,40 +102,51 @@ return user.set_machine(src) - var/dat - if (mode == 1) //Logs - dat += "

    Activity log


    " - for (var/entry in internal_log) - dat += "[entry]

    " - dat += "Print
    " - dat += "Back
    " - else - dat += "

    Guest pass terminal #[uid]


    " - dat += "View activity log

    " - dat += "Issuing ID: [giver]
    " - dat += "Issued to: [giv_name]
    " - dat += "Reason: [reason]
    " - dat += "Duration (minutes): [duration] m
    " - dat += "Access to areas:
    " - if (giver && giver.access) - for (var/A in giver.access) - var/area = get_access_desc(A) - if (A in accesses) - area = "[area]" - dat += "[area]
    " - dat += "
    Issue pass
    " + ui_interact(user) - user << browse(dat, "window=guestpass;size=400x520") - onclose(user, "guestpass") +/** + * Display the NanoUI window for the guest pass console. + * + * See NanoUI documentation for details. + */ +/obj/machinery/computer/guestpass/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + var/list/data = list() + + var/area_list[0] + + if (giver && giver.access) + data["access"] = giver.access + for (var/A in giver.access) + if(A in accesses) + area_list[++area_list.len] = list("area" = A, "area_name" = get_access_desc(A), "on" = 1) + else + area_list[++area_list.len] = list("area" = A, "area_name" = get_access_desc(A), "on" = null) + + data["giver"] = giver + data["giveName"] = giv_name + data["reason"] = reason + data["duration"] = duration + data["area"] = area_list + data["mode"] = mode + data["log"] = internal_log + data["uid"] = uid + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "guest_pass.tmpl", src.name, 400, 520) + ui.set_initial_data(data) + ui.open() + //ui.set_auto_update(5) /obj/machinery/computer/guestpass/Topic(href, href_list) if(..()) return 1 usr.set_machine(src) if (href_list["mode"]) - mode = text2num(href_list["mode"]) + mode = href_list["mode"] if (href_list["choice"]) switch(href_list["choice"]) @@ -182,7 +193,6 @@ if (istype(I, /obj/item/weapon/card/id) && usr.unEquip(I)) I.loc = src giver = I - updateUsrDialog() if ("print") var/dat = "

    Activity log of guest pass terminal #[uid]


    " @@ -214,5 +224,6 @@ pass.name = "guest pass #[number]" else usr << "Cannot issue pass without issuing ID." - updateUsrDialog() - return + + src.add_fingerprint(usr) + nanomanager.update_uis(src) \ No newline at end of file diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 82834df8962..ca56ce168df 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -8,8 +8,6 @@ req_access = list(access_robotics) circuit = /obj/item/weapon/circuitboard/robotics - var/safety = 1 - /obj/machinery/computer/robotics/attack_ai(var/mob/user as mob) ui_interact(user) @@ -19,8 +17,6 @@ /obj/machinery/computer/robotics/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) var/data[0] data["robots"] = get_cyborgs(user) - data["safety"] = safety - // Also applies for cyborgs. Hides the manual self-destruct button. data["is_ai"] = issilicon(user) @@ -39,39 +35,8 @@ user << "Access Denied" return - // Destroys the cyborg - if(href_list["detonate"]) - var/mob/living/silicon/robot/target = get_cyborg_by_name(href_list["detonate"]) - if(!target || !istype(target)) - return - if(isAI(user) && (target.connected_ai != user)) - user << "Access Denied. This robot is not linked to you." - return - // Cyborgs may blow up themselves via the console - if(isrobot(user) && user != target) - user << "Access Denied." - return - var/choice = input("Really detonate [target.name]?") in list ("Yes", "No") - if(choice != "Yes") - return - if(!target || !istype(target)) - return - - // Antagonistic cyborgs? Left here for downstream - if(target.mind && (target.mind.special_role || target.emagged)) - target << "Extreme danger. Termination codes detected. Scrambling security codes and automatic AI unlink triggered." - target.ResetSecurityCodes() - else - message_admins("[key_name_admin(usr)] detonated [target.name]!") - log_game("[key_name(usr)] detonated [target.name]!") - target << "Self-destruct command received." - spawn(10) - target.self_destruct() - - - // Locks or unlocks the cyborg - else if (href_list["lockdown"]) + if (href_list["lockdown"]) var/mob/living/silicon/robot/target = get_cyborg_by_name(href_list["lockdown"]) if(!target || !istype(target)) return @@ -137,37 +102,6 @@ target.emagged = 1 target << "Failsafe protocols overriden. New tools available." - // Arms the emergency self-destruct system - else if(href_list["arm"]) - if(istype(user, /mob/living/silicon)) - user << "Access Denied" - return - - safety = !safety - user << "You [safety ? "disarm" : "arm"] the emergency self destruct" - - // Destroys all accessible cyborgs if safety is disabled - else if(href_list["nuke"]) - if(istype(user, /mob/living/silicon)) - user << "Access Denied" - return - if(safety) - user << "Self-destruct aborted - safety active" - return - - message_admins("[key_name_admin(usr)] detonated all cyborgs!") - log_game("[key_name(usr)] detonated all cyborgs!") - - for(var/mob/living/silicon/robot/R in mob_list) - if(istype(R, /mob/living/silicon/robot/drone)) - continue - // Ignore antagonistic cyborgs - if(R.scrambledcodes) - continue - R << "Self-destruct command received." - spawn(10) - R.self_destruct() - // Proc: get_cyborgs() // Parameters: 1 (operator - mob which is operating the console.) diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm index 224e2016280..bb78fa00d5a 100644 --- a/code/game/machinery/computer/supply.dm +++ b/code/game/machinery/computer/supply.dm @@ -8,7 +8,6 @@ circuit = /obj/item/weapon/circuitboard/supplycomp var/temp = null var/reqtime = 0 //Cooldown for requisitions - Quarxink - var/hacked = 0 var/can_order_contraband = 0 var/last_viewed_group = "categories" @@ -209,9 +208,10 @@ return /obj/machinery/computer/supplycomp/emag_act(var/remaining_charges, var/mob/user) - if(!hacked) + if(!can_order_contraband) user << "Special supplies unlocked." - hacked = 1 + can_order_contraband = 1 + req_access = list() return 1 /obj/machinery/computer/supplycomp/Topic(href, href_list) @@ -265,18 +265,9 @@ temp += "Request from: [last_viewed_group]

    " for(var/supply_name in supply_controller.supply_packs ) var/datum/supply_packs/N = supply_controller.supply_packs[supply_name] - if((N.hidden && !hacked) || (N.contraband && !can_order_contraband) || N.group != last_viewed_group) continue //Have to send the type instead of a reference to + if((N.contraband && !can_order_contraband) || N.group != last_viewed_group) continue //Have to send the type instead of a reference to temp += "[supply_name] Cost: [N.cost]
    " //the obj because it would get caught by the garbage - /*temp = "Supply points: [supply_controller.points]


    Request what?

    " - - for(var/supply_name in supply_controller.supply_packs ) - var/datum/supply_packs/N = supply_controller.supply_packs[supply_name] - if(N.hidden && !hacked) continue - if(N.contraband && !can_order_contraband) continue - temp += "[supply_name] Cost: [N.cost]
    " //the obj because it would get caught by the garbage - temp += "
    OK"*/ - else if (href_list["doorder"]) if(world.time < reqtime) for(var/mob/V in hearers(src)) diff --git a/code/game/machinery/computer3/laptop.dm b/code/game/machinery/computer3/laptop.dm index 48e0c48ff00..e093f4d5f6c 100644 --- a/code/game/machinery/computer3/laptop.dm +++ b/code/game/machinery/computer3/laptop.dm @@ -22,7 +22,6 @@ desc = "A clamshell portable computer. It is closed." icon = 'icons/obj/computer3.dmi' icon_state = "laptop-closed" - item_state = "laptop-inhand" pixel_x = 2 pixel_y = -3 w_class = 3 diff --git a/code/game/machinery/computer3/lapvend.dm b/code/game/machinery/computer3/lapvend.dm index efd0747b35f..6acb530acc4 100644 --- a/code/game/machinery/computer3/lapvend.dm +++ b/code/game/machinery/computer3/lapvend.dm @@ -6,12 +6,10 @@ layer = 2.9 anchored = 1 density = 1 - var/datum/browser/popup = null var/obj/machinery/computer3/laptop/vended/newlap = null var/obj/item/device/laptop/relap = null var/vendmode = 0 - var/cardreader = 0 var/floppy = 0 var/radionet = 0 @@ -34,9 +32,11 @@ if(vendmode == 1 && I) scan_id(I, W) vendmode = 0 - if(vendmode == 3 && I) + nanomanager.update_uis(src) + if(vendmode == 2 && I) if(reimburse_id(I, W)) vendmode = 0 + nanomanager.update_uis(src) if(vendmode == 0) if(istype(W, /obj/item/device/laptop)) var/obj/item/device/laptop/L = W @@ -44,84 +44,49 @@ calc_reimburse(L) usr.drop_item() L.loc = src - vendmode = 3 + vendmode = 2 usr << "You slot your [L.name] into \The [src.name]" + nanomanager.update_uis(src) else ..() /obj/machinery/lapvend/attack_hand(mob/user as mob) + if(stat & (BROKEN|NOPOWER)) + return + + ui_interact(user) + +/** + * Display the NanoUI window for the vending machine. + * + * See NanoUI documentation for details. + */ +/obj/machinery/lapvend/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) user.set_machine(src) - var/vendorname = (src.name) //import the machine's name - var/dat = "
    [vendorname]


    " //display the name, and added a horizontal rule - if(vendmode == 0) - dat += "
    Please choose your laptop customization options

    " - dat += "
    Your comptuer will automatically be loaded with any programs you can use after the transaction is complete.
    " - dat += "
    Some programs will require additional components to be installed!


    " - dat += "
    HDD (Required) : Added

    " - dat += "
    Card Reader : Single (50) | Dual (125)

    " - dat += "
    Floppy Drive: Add (50)

    " - dat += "
    Radio Network card Add (50)

    " - dat += "
    Camera Card Add (100)

    " - dat += "
    Network card Area (75) Adjacent (50)Powernet (25)

    " - dat += "
    Power source upgrade
    Extended (175) Unreal (250)" - if(vendmode == 0 || vendmode == 1) - dat += "

    Cart

    " - dat += "Total: [total()]
    " - if(cardreader == 1) - dat += "Card Reader: (single) (50)
    " - else if (cardreader == 2) - dat += "Card Reader: (double) (125)
    " - else - dat += "Card Reader: None
    " - if(floppy == 0) - dat += "Floppy Drive: None
    " - else - dat += "Floppy Drive: Added (50)
    " - if(radionet == 1) - dat += "Radio Card: Added (50)
    " - else - dat += "Radio Card: None
    " - if(camera == 1) - dat += "Camera Card: Added (100)
    " - else - dat += "Camera Card: None
    " - if(network == 1) - dat += "Network card: Area (75)
    " - else if(network == 2) - dat += "Network card: Adjacent (50)
    " - else if(network == 3) - dat += "Network card: Powernet (25)
    " - else - dat += "Network card: None" - if (power == 0) - dat += "Power source: Regular" - else if (power == 1) - dat += "Power source: Extended (175)
    " - else - dat += "Power source: Unreal (250)
    " - - if(vendmode == 0) - dat += "
    Vend Laptop" - - if(vendmode == 1) - dat += "Please swipe your card and enter your PIN to complete the transaction" - - if(vendmode == 3) - dat += "Please swipe your card and enter your PIN to be finish returning your computer
    " - dat += "Cancel" - - - - - popup = new(user, "lapvend", name, 450, 500) - popup.set_content(dat) - popup.open() - return + var/list/data = list() + data["mode"] = vendmode + data["cardreader"] = cardreader + data["floppy"] = floppy + data["radionet"] = radionet + data["camera"] = camera + data["network"] = network + data["power"] = power + data["total"] = total() + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "laptop_vendor.tmpl", src.name, 480, 425) + ui.set_initial_data(data) + ui.open() + //ui.set_auto_update(5) /obj/machinery/lapvend/Topic(href, href_list) + if(stat & (BROKEN|NOPOWER)) + return + if(usr.stat || usr.restrained()) + return if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) usr.set_machine(src) switch(href_list["choice"]) @@ -146,7 +111,7 @@ if ("super_add") power = 2 - if ("single_rem" || "dual_rem") + if ("cardreader_rem") cardreader = 0 if ("floppy_rem") floppy = 0 @@ -154,9 +119,9 @@ radionet = 0 if ("camnet_rem") camera = 0 - if ("area_rem" || "prox_rem" || "cable_rem") + if ("network_rem") network = 0 - if ("high_rem" || "super_rem") + if ("power_rem") power = 0 if("vend") @@ -168,9 +133,8 @@ relap = null vendmode = 0 - src.updateUsrDialog() - return - + src.add_fingerprint(usr) + nanomanager.update_uis(src) /obj/machinery/lapvend/proc/vend() if(cardreader > 0) @@ -253,7 +217,6 @@ choose_progs(C) vend() - popup.close() newlap.close_laptop() newlap = null cardreader = 0 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 6873cbf0055..744e4122406 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -412,6 +412,8 @@ About the new airlock wires panel: if(electrified_until && isAllPowerLoss()) electrify(0) + update_icon() + /obj/machinery/door/airlock/proc/loseBackupPower() backup_power_lost_until = backupPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) @@ -419,6 +421,8 @@ About the new airlock wires panel: if(electrified_until && isAllPowerLoss()) electrify(0) + update_icon() + /obj/machinery/door/airlock/proc/regainMainPower() if(!mainPowerCablesCut()) main_power_lost_until = 0 @@ -426,11 +430,15 @@ About the new airlock wires panel: if(!backup_power_lost_until) backup_power_lost_until = -1 + update_icon() + /obj/machinery/door/airlock/proc/regainBackupPower() if(!backupPowerCablesCut()) // Restore backup power only if main power is offline, otherwise permanently disable backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0 + update_icon() + /obj/machinery/door/airlock/proc/electrify(var/duration, var/feedback = 0) var/message = "" if(src.isWireCut(AIRLOCK_WIRE_ELECTRIFY) && arePowerSystemsOn()) @@ -737,6 +745,9 @@ About the new airlock wires panel: return src.add_fingerprint(user) + if(istype(C, /mob/living)) + ..() + return if(!repairing && (istype(C, /obj/item/weapon/weldingtool) && !( src.operating > 0 ) && src.density)) var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(0,user)) @@ -778,7 +789,7 @@ About the new airlock wires panel: if (istype(da, /obj/structure/door_assembly/multi_tile)) da.set_dir(src.dir) - da.anchored = 1 + da.anchored = 1 if(mineral) da.glass = mineral //else if(glass) @@ -810,22 +821,26 @@ About the new airlock wires panel: spawn(0) close(1) // Check if we're using a crowbar or armblade, and if the airlock's unpowered for whatever reason (off, broken, etc). - else if( (istype(C, /obj/item/weapon/material/twohanded/fireaxe) || istype(C, /obj/item/weapon/melee/arm_blade) ) && !arePowerSystemsOn()) - if(locked) - user << "The airlock's bolts prevent it from being forced." - else if( !welded && !operating ) - if(istype(C, /obj/item/weapon/material/twohanded/fireaxe)) // If this is a fireaxe, make sure it's held in two hands. - var/obj/item/weapon/material/twohanded/fireaxe/F = C - if(!F.wielded) - user << "You need to be wielding \the [F] to do that." - return - // At this point, it's an armblade or a fireaxe that passed the wielded test, let's try to open it. - if(density) - spawn(0) - open(1) - else - spawn(0) - close(1) + else if(istype(C, /obj/item/weapon)) + var/obj/item/weapon/W = C + if((W.pry == 1) && !arePowerSystemsOn()) + if(locked) + user << "The airlock's bolts prevent it from being forced." + else if( !welded && !operating ) + if(istype(C, /obj/item/weapon/material/twohanded/fireaxe)) // If this is a fireaxe, make sure it's held in two hands. + var/obj/item/weapon/material/twohanded/fireaxe/F = C + if(!F.wielded) + user << "You need to be wielding \the [F] to do that." + return + // At this point, it's an armblade or a fireaxe that passed the wielded test, let's try to open it. + if(density) + spawn(0) + open(1) + else + spawn(0) + close(1) + else + ..() else ..() return diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 9647befd6ec..72b878a49a3 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -90,7 +90,7 @@ // This only works on broken doors or doors without power. Also allows repair with Plasteel. /obj/machinery/door/blast/attackby(obj/item/weapon/C as obj, mob/user as mob) src.add_fingerprint(user) - if(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/material/twohanded/fireaxe) || istype(C, /obj/item/weapon/melee/arm_blade)) + if(C.pry == 1) if(istype(C,/obj/item/weapon/material/twohanded/fireaxe)) var/obj/item/weapon/material/twohanded/fireaxe/F = C if(!F.wielded) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index ac2c156fa40..2fea971119f 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -65,6 +65,7 @@ bound_height = width * world.icon_size health = maxhealth + update_icon() update_nearby_tiles(need_rebuild=1) return diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index b2b619e342b..44a9dedae00 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -235,7 +235,7 @@ user << "\The [src] is welded shut!" return - if(istype(C, /obj/item/weapon/crowbar) || istype(C,/obj/item/weapon/material/twohanded/fireaxe) || istype(C, /obj/item/weapon/melee/arm_blade)) + if(C.pry == 1) if(operating) return diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 2272cff0cc2..ed01c851494 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -24,10 +24,16 @@ src.base_state = src.icon_state return +/obj/machinery/door/window/update_icon() + if(density) + icon_state = base_state + else + icon_state = "[base_state]open" + /obj/machinery/door/window/proc/shatter(var/display_message = 1) new /obj/item/weapon/material/shard(src.loc) - var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src.loc) - CC.amount = 2 + new /obj/item/weapon/material/shard(src.loc) + new /obj/item/stack/cable_coil(src.loc, 1) var/obj/item/weapon/airlock_electronics/ae if(!electronics) ae = new/obj/item/weapon/airlock_electronics( src.loc ) @@ -103,43 +109,39 @@ return 1 /obj/machinery/door/window/open() - if (src.operating == 1) //doors can still open when emag-disabled + if (operating == 1) //doors can still open when emag-disabled return 0 if (!ticker) return 0 - if(!src.operating) //in case of emag - src.operating = 1 - flick(text("[]opening", src.base_state), src) + if (!operating) //in case of emag + operating = 1 + flick(text("[src.base_state]opening"), src) playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) - src.icon_state = text("[]open", src.base_state) sleep(10) explosion_resistance = 0 - src.density = 0 -// src.sd_SetOpacity(0) //TODO: why is this here? Opaque windoors? ~Carn + density = 0 + update_icon() update_nearby_tiles() if(operating == 1) //emag again - src.operating = 0 + operating = 0 return 1 /obj/machinery/door/window/close() - if (src.operating) + if (operating) return 0 src.operating = 1 flick(text("[]closing", src.base_state), src) playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) - src.icon_state = src.base_state - src.density = 1 + density = 1 + update_icon() explosion_resistance = initial(explosion_resistance) -// if(src.visible) -// SetOpacity(1) //TODO: why is this here? Opaque windoors? ~Carn update_nearby_tiles() sleep(10) - - src.operating = 0 + operating = 0 return 1 /obj/machinery/door/window/take_damage(var/damage) @@ -197,12 +199,14 @@ var/obj/structure/windoor_assembly/wa = new/obj/structure/windoor_assembly(src.loc) if (istype(src, /obj/machinery/door/window/brigdoor)) wa.secure = "secure_" - wa.name = "Secure Wired Windoor Assembly" + wa.name = "secure wired windoor assembly" else - wa.name = "Wired Windoor Assembly" + wa.name = "wired windoor assembly" if (src.base_state == "right" || src.base_state == "rightsecure") wa.facing = "r" wa.set_dir(src.dir) + wa.anchored = 1 + wa.created_name = name wa.state = "02" wa.update_icon() @@ -223,7 +227,7 @@ ae.icon_state = "door_electronics_smoked" operating = 0 - shatter(src) + qdel(src) return //If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway) @@ -262,6 +266,10 @@ maxhealth = 300 health = 300.0 //Stronger doors for prison (regular window door health is 150) +/obj/machinery/door/window/brigdoor/shatter() + new /obj/item/stack/rods(src.loc, 2) + ..() + /obj/machinery/door/window/northleft dir = NORTH diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index c7c1d59a083..7532cb14070 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -77,11 +77,12 @@ if(!E) return if(E.is_bruised() && prob(E.damage + 50)) - flick("e_flash", O:flash) + H.flash_eyes() E.damage += rand(1, 5) else - if(!O.blinded) - flick("flash", O:flash) + if(!O.blinded && isliving(O)) + var/mob/living/L = O + L.flash_eyes() O.Weaken(flash_time) /obj/machinery/flasher/emp_act(severity) diff --git a/code/game/machinery/kitchen/cooking_machines/_cooker.dm b/code/game/machinery/kitchen/cooking_machines/_cooker.dm new file mode 100644 index 00000000000..a6af0f13f28 --- /dev/null +++ b/code/game/machinery/kitchen/cooking_machines/_cooker.dm @@ -0,0 +1,242 @@ +// This folder contains code that was originally ported from Apollo Station and then refactored/optimized/changed. + +// Tracks precooked food to stop deep fried baked grilled grilled grilled diona nymph cereal. +/obj/item/weapon/reagent_containers/food/snacks/var/list/cooked + +// Root type for cooking machines. See following files for specific implementations. +/obj/machinery/cooker + name = "cooker" + desc = "You shouldn't be seeing this!" + icon = 'icons/obj/cooking_machines.dmi' + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + + var/on_icon // Icon state used when cooking. + var/off_icon // Icon state used when not cooking. + var/cooking // Whether or not the machine is currently operating. + var/cook_type // A string value used to track what kind of food this machine makes. + var/cook_time = 200 // How many ticks the cooking will take. + var/can_cook_mobs // Whether or not this machine accepts grabbed mobs. + var/food_color // Colour of resulting food item. + var/cooked_sound // Sound played when cooking completes. + var/can_burn_food // Can the object burn food that is left inside? + var/burn_chance = 10 // How likely is the food to burn? + var/obj/item/cooking_obj // Holder for the currently cooking object. + + // If the machine has multiple output modes, define them here. + var/selected_option + var/list/output_options = list() + +/obj/machinery/cooker/Destroy() + if(cooking_obj) + qdel(cooking_obj) + cooking_obj = null + return ..() + +/obj/machinery/cooker/examine() + ..() + if(cooking_obj && Adjacent(usr)) + usr << "You can see \a [cooking_obj] inside." + +/obj/machinery/cooker/attackby(var/obj/item/I, var/mob/user) + + if(!cook_type || (stat & (NOPOWER|BROKEN))) + user << "\The [src] is not working." + return + + if(cooking) + user << "\The [src] is running!" + return + + // We are trying to cook a grabbed mob. + var/obj/item/weapon/grab/G = I + if(istype(G)) + + if(!can_cook_mobs) + user << "That's not going to fit." + return + + if(!isliving(G.affecting)) + user << "You can't cook that." + return + + cook_mob(G.affecting, user) + return + + // We're trying to cook something else. Check if it's valid. + var/obj/item/weapon/reagent_containers/food/snacks/check = I + if(istype(check) && islist(check.cooked) && (cook_type in check.cooked)) + user << "\The [check] has already been [cook_type]." + return 0 + else if(istype(check, /obj/item/weapon/reagent_containers/glass)) + user << "That would probably break [src]." + return 0 + else if(istype(check, /obj/item/weapon/disk/nuclear)) + user << "Central Command would kill you if you [cook_type] that." + return 0 + else if(!istype(check) && !istype(check, /obj/item/weapon/holder) && !istype(check, /obj/item/organ)) + user << "That's not edible." + return 0 + + if(istype(I, /obj/item/organ)) + var/obj/item/organ/O = I + if(O.robotic) + user << "That would probably break [src]." + return + + // Gotta hurt. + if(istype(cooking_obj, /obj/item/weapon/holder)) + for(var/mob/living/M in cooking_obj.contents) + M.apply_damage(rand(30,40), BURN, "chest") + + // Not sure why a food item that passed the previous checks would fail to drop, but safety first. + if(!user.unEquip(I)) + return + + // We can actually start cooking now. + user.visible_message("\The [user] puts \the [I] into \the [src].") + cooking_obj = I + cooking_obj.forceMove(src) + cooking = 1 + icon_state = on_icon + + // Doop de doo. Jeopardy theme goes here. + sleep(cook_time) + + // Sanity checks. + if(!cooking_obj || cooking_obj.loc != src) + cooking_obj = null + icon_state = off_icon + cooking = 0 + return + + // RIP slow-moving held mobs. + if(istype(cooking_obj, /obj/item/weapon/holder)) + for(var/mob/living/M in cooking_obj.contents) + M.death() + + // Cook the food. + var/cook_path + if(selected_option && output_options.len) + cook_path = output_options[selected_option] + if(!cook_path) + cook_path = /obj/item/weapon/reagent_containers/food/snacks/variable + var/obj/item/weapon/reagent_containers/food/snacks/result = new cook_path(src) //Holy typepaths, Batman. + + // Set icon and appearance. + change_product_appearance(result) + + // Update strings. + change_product_strings(result) + + // Copy reagents over. trans_to_obj must be used, as trans_to fails for snacks due to is_open_container() failing. + if(cooking_obj.reagents && cooking_obj.reagents.total_volume) + cooking_obj.reagents.trans_to_obj(result, cooking_obj.reagents.total_volume) + + // Set cooked data. + var/obj/item/weapon/reagent_containers/food/snacks/food_item = cooking_obj + if(istype(food_item) && islist(food_item.cooked)) + result.cooked = food_item.cooked.Copy() + else + result.cooked = list() + result.cooked |= cook_type + + // Reset relevant variables. + qdel(cooking_obj) + src.visible_message("\The [src] pings!") + if(cooked_sound) + playsound(get_turf(src), cooked_sound, 50, 1) + + if(!can_burn_food) + icon_state = off_icon + cooking = 0 + result.forceMove(get_turf(src)) + cooking_obj = null + else + var/failed + var/overcook_period = max(Floor(cook_time/5),1) + cooking_obj = result + var/count = overcook_period + while(1) + sleep(overcook_period) + count += overcook_period + if(!cooking || !result || result.loc != src) + failed = 1 + else if(prob(burn_chance) || count == cook_time) //Fail before it has a chance to cook again. + // You dun goofed. + qdel(cooking_obj) + cooking_obj = new /obj/item/weapon/reagent_containers/food/snacks/badrecipe(src) + // Produce nasty smoke. + visible_message("\The [src] vomits a gout of rancid smoke!") + var/datum/effect/effect/system/smoke_spread/bad/smoke = PoolOrNew(/datum/effect/effect/system/smoke_spread/bad) + smoke.attach(src) + smoke.set_up(10, 0, usr.loc) + smoke.start() + failed = 1 + + if(failed) + cooking = 0 + icon_state = off_icon + break + +/obj/machinery/cooker/attack_hand(var/mob/user) + + if(cooking_obj) + user << "You grab \the [cooking_obj] from \the [src]." + user.put_in_hands(cooking_obj) + cooking = 0 + cooking_obj = null + icon_state = off_icon + return + + if(output_options.len) + + if(cooking) + user << "\The [src] is in use!" + return + + var/choice = input("What specific food do you wish to make with \the [src]?") as null|anything in output_options+"Default" + if(!choice) + return + if(choice == "Default") + selected_option = null + user << "You decide not to make anything specific with \the [src]." + else + selected_option = choice + user << "You prepare \the [src] to make \a [selected_option]." + + ..() + +/obj/machinery/cooker/proc/cook_mob(var/mob/living/victim, var/mob/user) + return + +/obj/machinery/cooker/proc/change_product_strings(var/obj/item/weapon/reagent_containers/food/snacks/product) + if(product.type == /obj/item/weapon/reagent_containers/food/snacks/variable) // Base type, generic. + product.name = "[cook_type] [cooking_obj.name]" + product.desc = "[cooking_obj.desc] It has been [cook_type]." + else + product.name = "[cooking_obj.name] [product.name]" + +/obj/machinery/cooker/proc/change_product_appearance(var/obj/item/weapon/reagent_containers/food/snacks/product) + if(product.type == /obj/item/weapon/reagent_containers/food/snacks/variable) // Base type, generic. + product.appearance = cooking_obj + product.color = food_color + product.filling_color = food_color + + // Make 'em into a corpse. + if(istype(cooking_obj, /obj/item/weapon/holder)) + var/matrix/M = matrix() + M.Turn(90) + M.Translate(1,-6) + product.transform = M + else + var/image/I = image(product.icon, "[product.icon_state]_filling") + if(istype(cooking_obj, /obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/S = cooking_obj + I.color = S.filling_color + if(!I.color) + I.color = food_color + product.overlays += I + diff --git a/code/game/machinery/kitchen/cooking_machines/_cooker_output.dm b/code/game/machinery/kitchen/cooking_machines/_cooker_output.dm new file mode 100644 index 00000000000..cb4dcd15edc --- /dev/null +++ b/code/game/machinery/kitchen/cooking_machines/_cooker_output.dm @@ -0,0 +1,72 @@ +// Wrapper obj for cooked food. Appearance is set in the cooking code, not on spawn. +/obj/item/weapon/reagent_containers/food/snacks/variable + name = "cooked food" + icon = 'icons/obj/food_custom.dmi' + desc = "If you can see this description then something is wrong. Please report the bug on the tracker." + nutriment_amt = 5 + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/variable/pizza + name = "personal pizza" + desc = "A personalized pan pizza meant for only one person." + icon_state = "personal_pizza" + +/obj/item/weapon/reagent_containers/food/snacks/variable/bread + name = "bread" + desc = "Tasty bread." + icon_state = "breadcustom" + +/obj/item/weapon/reagent_containers/food/snacks/variable/pie + name = "pie" + desc = "Tasty pie." + icon_state = "piecustom" + +/obj/item/weapon/reagent_containers/food/snacks/variable/cake + name = "cake" + desc = "A popular band." + icon_state = "cakecustom" + +/obj/item/weapon/reagent_containers/food/snacks/variable/pocket + name = "hot pocket" + desc = "You wanna put a bangin- oh, nevermind." + icon_state = "donk" + +/obj/item/weapon/reagent_containers/food/snacks/variable/kebab + name = "kebab" + desc = "Remove this!" + icon_state = "kabob" + +/obj/item/weapon/reagent_containers/food/snacks/variable/waffles + name = "waffles" + desc = "Made with love." + icon_state = "waffles" + +/obj/item/weapon/reagent_containers/food/snacks/variable/cookie + name = "cookie" + desc = "Sugar snap!" + icon_state = "cookie" + +/obj/item/weapon/reagent_containers/food/snacks/variable/donut + name = "filled donut" + desc = "Donut eat this!" // kill me + icon_state = "donut" + +/obj/item/weapon/reagent_containers/food/snacks/variable/jawbreaker + name = "flavored jawbreaker" + desc = "It's like cracking a molar on a rainbow." + icon_state = "jawbreaker" + +/obj/item/weapon/reagent_containers/food/snacks/variable/candybar + name = "flavored chocolate bar" + desc = "Made in a factory downtown." + icon_state = "bar" + +/obj/item/weapon/reagent_containers/food/snacks/variable/sucker + name = "flavored sucker" + desc = "Suck, suck, suck." + icon_state = "sucker" + +/obj/item/weapon/reagent_containers/food/snacks/variable/jelly + name = "jelly" + desc = "All your friends will be jelly." + icon_state = "jellycustom" diff --git a/code/game/machinery/kitchen/cooking_machines/candy.dm b/code/game/machinery/kitchen/cooking_machines/candy.dm new file mode 100644 index 00000000000..21fd5069119 --- /dev/null +++ b/code/game/machinery/kitchen/cooking_machines/candy.dm @@ -0,0 +1,18 @@ +/obj/machinery/cooker/candy + name = "candy machine" + desc = "Get yer candied cheese wheels here!" + icon_state = "mixer_off" + off_icon = "mixer_off" + on_icon = "mixer_on" + cook_type = "candied" + + output_options = list( + "Jawbreaker" = /obj/item/weapon/reagent_containers/food/snacks/variable/jawbreaker, + "Candy Bar" = /obj/item/weapon/reagent_containers/food/snacks/variable/candybar, + "Sucker" = /obj/item/weapon/reagent_containers/food/snacks/variable/sucker, + "Jelly" = /obj/item/weapon/reagent_containers/food/snacks/variable/jelly + ) + +/obj/machinery/cooker/candy/change_product_appearance(var/obj/item/weapon/reagent_containers/food/snacks/cooked/product) + food_color = get_random_colour(1) + . = ..() diff --git a/code/game/machinery/kitchen/cooking_machines/cereal.dm b/code/game/machinery/kitchen/cooking_machines/cereal.dm new file mode 100644 index 00000000000..3a7b19c9b1c --- /dev/null +++ b/code/game/machinery/kitchen/cooking_machines/cereal.dm @@ -0,0 +1,25 @@ +/obj/machinery/cooker/cereal + name = "cereal maker" + desc = "Now with Dann O's available!" + icon = 'icons/obj/cooking_machines.dmi' + icon_state = "cereal_off" + cook_type = "cerealized" + on_icon = "cereal_on" + off_icon = "cereal_off" + +/obj/machinery/cooker/cereal/change_product_strings(var/obj/item/weapon/reagent_containers/food/snacks/product) + . = ..() + product.name = "box of [cooking_obj.name] cereal" + +/obj/machinery/cooker/cereal/change_product_appearance(var/obj/item/weapon/reagent_containers/food/snacks/product) + product.icon = 'icons/obj/food.dmi' + product.icon_state = "cereal_box" + product.filling_color = cooking_obj.color + + var/image/food_image = image(cooking_obj.icon, cooking_obj.icon_state) + food_image.color = cooking_obj.color + food_image.overlays += cooking_obj.overlays + food_image.transform *= 0.7 + + product.overlays += food_image + diff --git a/code/game/machinery/kitchen/cooking_machines/fryer.dm b/code/game/machinery/kitchen/cooking_machines/fryer.dm new file mode 100644 index 00000000000..1fc0e75ef1c --- /dev/null +++ b/code/game/machinery/kitchen/cooking_machines/fryer.dm @@ -0,0 +1,67 @@ +/obj/machinery/cooker/fryer + name = "deep fryer" + desc = "Deep fried everything." + icon_state = "fryer_off" + can_cook_mobs = 1 + cook_type = "deep fried" + on_icon = "fryer_on" + off_icon = "fryer_off" + food_color = "#FFAD33" + cooked_sound = 'sound/machines/ding.ogg' + +/obj/machinery/cooker/fryer/cook_mob(var/mob/living/victim, var/mob/user) + + if(!istype(victim)) + return + + user.visible_message("\The [user] starts pushing \the [victim] into \the [src]!") + icon_state = on_icon + cooking = 1 + + if(!do_mob(user, victim, 20)) + cooking = 0 + icon_state = off_icon + return + + if(!victim || !victim.Adjacent(user)) + user << "Your victim slipped free!" + cooking = 0 + icon_state = off_icon + return + + var/obj/item/organ/external/E + var/nopain + if(ishuman(victim) && user.zone_sel.selecting != "groin" && user.zone_sel.selecting != "chest") + var/mob/living/carbon/human/H = victim + if(H.species.flags & NO_PAIN) + nopain = 2 + E = H.get_organ(user.zone_sel.selecting) + if(E.status & ORGAN_ROBOT) + nopain = 1 + + user.visible_message("\The [user] shoves \the [victim][E ? "'s [E.name]" : ""] into \the [src]!") + + if(E) + E.take_damage(0, rand(20,30)) + if(E.children && E.children.len) + for(var/obj/item/organ/external/child in E.children) + if(nopain && nopain < 2 && !(child.status & ORGAN_ROBOT)) + nopain = 0 + child.take_damage(0, rand(20,30)) + else + victim.apply_damage(rand(30,40), BURN, user.zone_sel.selecting) + + if(!nopain) + victim << "Agony consumes you as searing hot oil scorches your [E ? E.name : "flesh"] horribly!" + victim.emote("scream") + else + victim << "Searing hot oil scorches your [E ? E.name : "flesh"]!" + + if(victim.client) + user.attack_log += text("\[[time_stamp()]\] Has [cook_type] \the [victim] ([victim.ckey]) in \a [src]") + victim.attack_log += text("\[[time_stamp()]\] Has been [cook_type] in \a [src] by [user.name] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) [cook_type] \the [victim] ([victim.ckey]) in \a [src]. (JMP)") + + icon_state = off_icon + cooking = 0 + return diff --git a/code/game/machinery/kitchen/cooking_machines/grill.dm b/code/game/machinery/kitchen/cooking_machines/grill.dm new file mode 100644 index 00000000000..312189c5881 --- /dev/null +++ b/code/game/machinery/kitchen/cooking_machines/grill.dm @@ -0,0 +1,10 @@ +/obj/machinery/cooker/grill + name = "grill" + desc = "Backyard grilling, IN SPACE." + icon_state = "grill_off" + cook_type = "grilled" + cook_time = 100 + food_color = "#A34719" + on_icon = "grill_on" + off_icon = "grill_off" + can_burn_food = 1 \ No newline at end of file diff --git a/code/game/machinery/kitchen/cooking_machines/oven.dm b/code/game/machinery/kitchen/cooking_machines/oven.dm new file mode 100644 index 00000000000..ec941af2239 --- /dev/null +++ b/code/game/machinery/kitchen/cooking_machines/oven.dm @@ -0,0 +1,23 @@ +/obj/machinery/cooker/oven + name = "oven" + desc = "Cookies are ready, dear." + icon = 'icons/obj/cooking_machines.dmi' + icon_state = "oven_off" + on_icon = "oven_on" + off_icon = "oven_off" + cook_type = "baked" + cook_time = 300 + food_color = "#A34719" + can_burn_food = 1 + + output_options = list( + "Personal Pizza" = /obj/item/weapon/reagent_containers/food/snacks/variable/pizza, + "Bread" = /obj/item/weapon/reagent_containers/food/snacks/variable/bread, + "Pie" = /obj/item/weapon/reagent_containers/food/snacks/variable/pie, + "Small Cake" = /obj/item/weapon/reagent_containers/food/snacks/variable/cake, + "Hot Pocket" = /obj/item/weapon/reagent_containers/food/snacks/variable/pocket, + "Kebab" = /obj/item/weapon/reagent_containers/food/snacks/variable/kebab, + "Waffles" = /obj/item/weapon/reagent_containers/food/snacks/variable/waffles, + "Cookie" = /obj/item/weapon/reagent_containers/food/snacks/variable/cookie, + "Donut" = /obj/item/weapon/reagent_containers/food/snacks/variable/donut, + ) \ No newline at end of file diff --git a/code/game/machinery/kitchen/icecream.dm b/code/game/machinery/kitchen/icecream.dm new file mode 100644 index 00000000000..448b252fd49 --- /dev/null +++ b/code/game/machinery/kitchen/icecream.dm @@ -0,0 +1,196 @@ +#define ICECREAM_VANILLA 1 +#define ICECREAM_CHOCOLATE 2 +#define ICECREAM_STRAWBERRY 3 +#define ICECREAM_BLUE 4 +#define CONE_WAFFLE 5 +#define CONE_CHOC 6 + +// Ported wholesale from Apollo Station. + +/obj/machinery/icecream_vat + name = "icecream vat" + desc = "Ding-aling ding dong. Get your NanoTrasen-approved ice cream!" + icon = 'icons/obj/kitchen.dmi' + icon_state = "icecream_vat" + density = 1 + anchored = 0 + use_power = 0 + flags = OPENCONTAINER | NOREACT + + var/list/product_types = list() + var/dispense_flavour = ICECREAM_VANILLA + var/flavour_name = "vanilla" + +/obj/machinery/icecream_vat/proc/get_ingredient_list(var/type) + switch(type) + if(ICECREAM_CHOCOLATE) + return list("milk", "ice", "coco") + if(ICECREAM_STRAWBERRY) + return list("milk", "ice", "berryjuice") + if(ICECREAM_BLUE) + return list("milk", "ice", "singulo") + if(CONE_WAFFLE) + return list("flour", "sugar") + if(CONE_CHOC) + return list("flour", "sugar", "coco") + else + return list("milk", "ice") + +/obj/machinery/icecream_vat/proc/get_flavour_name(var/flavour_type) + switch(flavour_type) + if(ICECREAM_CHOCOLATE) + return "chocolate" + if(ICECREAM_STRAWBERRY) + return "strawberry" + if(ICECREAM_BLUE) + return "blue" + if(CONE_WAFFLE) + return "waffle" + if(CONE_CHOC) + return "chocolate" + else + return "vanilla" + +/obj/machinery/icecream_vat/initialize() + ..() + create_reagents(100) + while(product_types.len < 6) + product_types.Add(5) + reagents.add_reagent("milk", 5) + reagents.add_reagent("flour", 5) + reagents.add_reagent("sugar", 5) + reagents.add_reagent("ice", 5) + +/obj/machinery/icecream_vat/attack_hand(mob/user as mob) + user.set_machine(src) + interact(user) + +/obj/machinery/icecream_vat/interact(mob/user as mob) + var/dat + dat += "ICECREAM
    " + dat += "Dispensing: [flavour_name] icecream

    " + dat += "Vanilla icecream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
    " + dat += "Strawberry icecream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
    " + dat += "Chocolate icecream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
    " + dat += "Blue icecream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
    " + dat += "
    CONES
    " + dat += "Waffle cones: Dispense Make x5 [product_types[CONE_WAFFLE]] cones left. (Ingredients: flour, sugar)
    " + dat += "Chocolate cones: Dispense Make x5 [product_types[CONE_CHOC]] cones left. (Ingredients: flour, sugar, coco powder)
    " + dat += "
    " + dat += "VAT CONTENT
    " + for(var/datum/reagent/R in reagents.reagent_list) + dat += "[R.name]: [R.volume]" + dat += "Purge
    " + dat += "Refresh Close" + + var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) + popup.set_content(dat) + popup.open() + +/obj/machinery/icecream_vat/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/icecream)) + var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O + if(!I.ice_creamed) + if(product_types[dispense_flavour] > 0) + src.visible_message("\icon[src] [user] scoops delicious [flavour_name] icecream into [I].") + product_types[dispense_flavour] -= 1 + I.add_ice_cream(flavour_name) + // if(beaker) + // beaker.reagents.trans_to(I, 10) + if(I.reagents.total_volume < 10) + I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume) + else + user << "There is not enough icecream left!" + else + user << "[O] already has icecream in it." + return 1 + else if(O.is_open_container()) + return + else + ..() + +/obj/machinery/icecream_vat/proc/make(var/mob/user, var/make_type, var/amount) + for(var/R in get_ingredient_list(make_type)) + if(reagents.has_reagent(R, amount)) + continue + amount = 0 + break + if(amount) + for(var/R in get_ingredient_list(make_type)) + reagents.remove_reagent(R, amount) + product_types[make_type] += amount + var/flavour = get_flavour_name(make_type) + if(make_type > 4) + src.visible_message("[user] cooks up some [flavour] cones.") + else + src.visible_message("[user] whips up some [flavour] icecream.") + else + user << "You don't have the ingredients to make this." + +/obj/machinery/icecream_vat/Topic(href, href_list) + + if(..()) + return + + if(href_list["select"]) + dispense_flavour = text2num(href_list["select"]) + flavour_name = get_flavour_name(dispense_flavour) + src.visible_message("[usr] sets [src] to dispense [flavour_name] flavoured icecream.") + + if(href_list["cone"]) + var/dispense_cone = text2num(href_list["cone"]) + var/cone_name = get_flavour_name(dispense_cone) + if(product_types[dispense_cone] >= 1) + product_types[dispense_cone] -= 1 + var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(src.loc) + I.cone_type = cone_name + I.icon_state = "icecream_cone_[cone_name]" + I.desc = "Delicious [cone_name] cone, but no ice cream." + src.visible_message("[usr] dispenses a crunchy [cone_name] cone from [src].") + else + usr << "There are no [cone_name] cones left!" + + if(href_list["make"]) + var/amount = (text2num(href_list["amount"])) + var/C = text2num(href_list["make"]) + make(usr, C, amount) + + if(href_list["disposeI"]) + reagents.del_reagent(href_list["disposeI"]) + + updateDialog() + + if(href_list["refresh"]) + updateDialog() + + if(href_list["close"]) + usr.unset_machine() + usr << browse(null,"window=icecreamvat") + return + +/obj/item/weapon/reagent_containers/food/snacks/icecream + name = "ice cream cone" + desc = "Delicious waffle cone, but no ice cream." + icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time + layer = 3.1 + bitesize = 3 + + var/ice_creamed = 0 + var/cone_type + +/obj/item/weapon/reagent_containers/food/snacks/icecream/New() + create_reagents(20) + reagents.add_reagent("nutriment", 5) + +/obj/item/weapon/reagent_containers/food/snacks/icecream/proc/add_ice_cream(var/flavour_name) + name = "[flavour_name] icecream" + src.overlays += "icecream_[flavour_name]" + desc = "Delicious [cone_type] cone with a dollop of [flavour_name] ice cream." + ice_creamed = 1 + +#undef ICECREAM_VANILLA +#undef FLAVOUR_CHOCOLATE +#undef FLAVOUR_STRAWBERRY +#undef FLAVOUR_BLUE +#undef CONE_WAFFLE +#undef CONE_CHOC \ No newline at end of file diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 3a08a681d26..9c5fc613327 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -476,7 +476,7 @@ Buildable meters if(PIPE_SUPPLY_STRAIGHT, PIPE_SUPPLY_BENT) var/obj/machinery/atmospherics/pipe/simple/hidden/supply/P = new( src.loc ) - P.color = color + P.pipe_color = color P.set_dir(src.dir) P.initialize_directions = pipe_dir var/turf/T = P.loc @@ -495,7 +495,7 @@ Buildable meters if(PIPE_SCRUBBERS_STRAIGHT, PIPE_SCRUBBERS_BENT) var/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers/P = new( src.loc ) - P.color = color + P.pipe_color = color P.set_dir(src.dir) P.initialize_directions = pipe_dir var/turf/T = P.loc @@ -514,7 +514,7 @@ Buildable meters if(PIPE_UNIVERSAL) var/obj/machinery/atmospherics/pipe/simple/hidden/universal/P = new( src.loc ) - P.color = color + P.pipe_color = color P.set_dir(src.dir) P.initialize_directions = pipe_dir var/turf/T = P.loc @@ -588,7 +588,7 @@ Buildable meters if(PIPE_SUPPLY_MANIFOLD) //manifold var/obj/machinery/atmospherics/pipe/manifold/hidden/supply/M = new( src.loc ) - M.color = color + M.pipe_color = color M.set_dir(dir) M.initialize_directions = pipe_dir //M.New() @@ -611,7 +611,7 @@ Buildable meters if(PIPE_SCRUBBERS_MANIFOLD) //manifold var/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers/M = new( src.loc ) - M.color = color + M.pipe_color = color M.set_dir(dir) M.initialize_directions = pipe_dir //M.New() @@ -660,7 +660,7 @@ Buildable meters if(PIPE_SUPPLY_MANIFOLD4W) //4-way manifold var/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply/M = new( src.loc ) - M.color = color + M.pipe_color = color M.set_dir(dir) M.initialize_directions = pipe_dir M.connect_types = src.connect_types @@ -687,7 +687,7 @@ Buildable meters if(PIPE_SCRUBBERS_MANIFOLD4W) //4-way manifold var/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers/M = new( src.loc ) - M.color = color + M.pipe_color = color M.set_dir(dir) M.initialize_directions = pipe_dir M.connect_types = src.connect_types diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 6e20801680c..7aa7d495e8c 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -32,7 +32,8 @@ var/projectile = null //holder for bullettype var/eprojectile = null //holder for the shot when emagged var/reqpower = 500 //holder for power needed - var/iconholder = null //holder for the icon_state. 1 for orange sprite, null for blue. + var/iconholder = null //holder for the icon_state. 1 for sprite based on icon_color, null for blue. + var/icon_color = "orange" // When iconholder is set to 1, the icon_state changes based on what is in this variable. var/egun = null //holder to handle certain guns switching bullettypes var/last_fired = 0 //1: if the turret is cooling down from a shot, 0: turret is ready to fire @@ -59,6 +60,7 @@ var/wrenching = 0 var/last_target //last target fired at, prevents turrets from erratically firing at all valid targets in range + var/timeout = 10 // When a turret pops up, then finds nothing to shoot at, this number decrements until 0, when it pops down. /obj/machinery/porta_turret/crescent enabled = 0 @@ -75,6 +77,13 @@ lethal = 1 installation = /obj/item/weapon/gun/energy/laser +/obj/machinery/porta_turret/ai_defense + name = "defense turret" + desc = "This varient appears to be much more durable." + installation = /obj/item/weapon/gun/energy/xray // For the armor pen. + health = 250 // Since lasers do 40 each. + maxhealth = 250 + /obj/machinery/porta_turret/New() ..() req_access.Cut() @@ -148,6 +157,14 @@ eshot_sound = 'sound/weapons/Laser.ogg' egun = 1 + if(/obj/item/weapon/gun/energy/xray) + eprojectile = /obj/item/projectile/beam/xray + projectile = /obj/item/projectile/beam/stun // Otherwise we fire xrays on both modes. + eshot_sound = 'sound/weapons/eluger.ogg' + shot_sound = 'sound/weapons/Taser.ogg' + iconholder = 1 + icon_color = "green" + var/list/turret_icons /obj/machinery/porta_turret/update_icon() @@ -164,7 +181,7 @@ var/list/turret_icons if(powered() && enabled) if(iconholder) //lasers have a orange icon - icon_state = "orange_target_prism" + icon_state = "[icon_color]_target_prism" else //almost everything has a blue icon icon_state = "target_prism" @@ -410,6 +427,11 @@ var/list/turret_icons ..() +/obj/machinery/porta_turret/ai_defense/emp_act(severity) + if(prob(33)) // One in three chance to resist an EMP. This is significant if an AoE EMP is involved against multiple turrets. + return + ..() + /obj/machinery/porta_turret/ex_act(severity) switch (severity) if (1) @@ -449,8 +471,10 @@ var/list/turret_icons if(!tryToShootAt(targets)) if(!tryToShootAt(secondarytargets)) // if no valid targets, go for secondary targets - spawn() - popDown() // no valid targets, close the cover + timeout-- + if(timeout <= 0) + spawn() + popDown() // no valid targets, close the cover if(auto_repair && (health < maxhealth)) use_power(20000) @@ -552,6 +576,7 @@ var/list/turret_icons set_raised_raising(1, 0) update_icon() + timeout = 10 /obj/machinery/porta_turret/proc/popDown() //pops the turret down last_target = null @@ -572,6 +597,7 @@ var/list/turret_icons set_raised_raising(0, 0) update_icon() + timeout = 10 /obj/machinery/porta_turret/proc/set_raised_raising(var/raised, var/raising) src.raised = raised @@ -634,6 +660,9 @@ var/list/turret_icons //Shooting Code: A.launch(target, def_zone) + // Reset the time needed to go back down, since we just tried to shoot at someone. + timeout = 10 + /datum/turret_checks var/enabled var/lethal diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index b0f1460249a..d28cb2444c7 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -741,7 +741,8 @@ /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask = 8, /obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 8, /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 8, - /obj/item/weapon/reagent_containers/pill/diet = 8) + /obj/item/weapon/reagent_containers/pill/diet = 8, + /obj/item/weapon/towel/random = 8) prices = list(/obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton = 3, /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate = 3, @@ -749,7 +750,8 @@ /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask = 5, /obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar = 5, /obj/item/weapon/reagent_containers/food/snacks/liquidfood = 5, - /obj/item/weapon/reagent_containers/pill/diet = 25) + /obj/item/weapon/reagent_containers/pill/diet = 25, + /obj/item/weapon/towel/random = 40) contraband = list(/obj/item/weapon/reagent_containers/syringe/steroid = 4) @@ -868,9 +870,9 @@ products = list(/obj/item/seeds/bananaseed = 3,/obj/item/seeds/berryseed = 3,/obj/item/seeds/carrotseed = 3,/obj/item/seeds/chantermycelium = 3,/obj/item/seeds/chiliseed = 3, /obj/item/seeds/cornseed = 3, /obj/item/seeds/eggplantseed = 3, /obj/item/seeds/potatoseed = 3, /obj/item/seeds/replicapod = 3,/obj/item/seeds/soyaseed = 3, /obj/item/seeds/sunflowerseed = 3,/obj/item/seeds/tomatoseed = 3,/obj/item/seeds/towermycelium = 3,/obj/item/seeds/wheatseed = 3,/obj/item/seeds/appleseed = 3, - /obj/item/seeds/poppyseed = 3,/obj/item/seeds/sugarcaneseed = 3,/obj/item/seeds/ambrosiavulgarisseed = 3,/obj/item/seeds/peanutseed = 3,/obj/item/seeds/whitebeetseed = 3,/obj/item/seeds/watermelonseed = 3,/obj/item/seeds/limeseed = 3, + /obj/item/seeds/poppyseed = 3,/obj/item/seeds/sugarcaneseed = 3,/obj/item/seeds/ambrosiavulgarisseed = 3,/obj/item/seeds/peanutseed = 3,/obj/item/seeds/whitebeetseed = 3,/obj/item/seeds/watermelonseed = 3,/obj/item/seeds/lavenderseed = 3,/obj/item/seeds/limeseed = 3, /obj/item/seeds/lemonseed = 3,/obj/item/seeds/orangeseed = 3,/obj/item/seeds/grassseed = 3,/obj/item/seeds/cocoapodseed = 3,/obj/item/seeds/plumpmycelium = 2, - /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/plastiseed = 3,/obj/item/seeds/riceseed = 3,/obj/item/seeds/lavenderseed = 3) + /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/plastiseed = 3,/obj/item/seeds/riceseed = 3) contraband = list(/obj/item/seeds/amanitamycelium = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/libertymycelium = 2,/obj/item/seeds/mtearseed = 2, /obj/item/seeds/nettleseed = 2,/obj/item/seeds/reishimycelium = 2,/obj/item/seeds/reishimycelium = 2,/obj/item/seeds/shandseed = 2,) premium = list(/obj/item/toy/waterflower = 1) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index ad8976e121b..93d161f2ea6 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -20,6 +20,10 @@ var/gibs_ready = 0 var/obj/crayon var/list/washing = list() + var/list/disallowed_types = list( + /obj/item/clothing/suit/space, + /obj/item/clothing/head/helmet/space + ) /obj/machinery/washing_machine/New() circuit = new circuit(src) @@ -107,53 +111,12 @@ state = 3 else ..() - else if(istype(W,/obj/item/stack/material/hairlesshide) || \ - istype(W,/obj/item/clothing/under) || \ - istype(W,/obj/item/clothing/mask) || \ - istype(W,/obj/item/clothing/head) || \ - istype(W,/obj/item/clothing/gloves) || \ - istype(W,/obj/item/clothing/shoes) || \ - istype(W,/obj/item/clothing/suit) || \ - istype(W,/obj/item/weapon/bedsheet)) - //YES, it's hardcoded... saves a var/can_be_washed for every single clothing item. - if ( istype(W,/obj/item/clothing/suit/space ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/suit/syndicatefake ) ) - user << "This item does not fit." - return -// if ( istype(W,/obj/item/clothing/suit/powered ) ) -// user << "This item does not fit." -// return - if ( istype(W,/obj/item/clothing/suit/cyborg_suit ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/suit/bomb_suit ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/suit/armor ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/suit/armor ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/mask/gas ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/mask/smokable/cigarette ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/head/syndicatefake ) ) - user << "This item does not fit." - return -// if ( istype(W,/obj/item/clothing/head/powered ) ) -// user << "This item does not fit." -// return - if ( istype(W,/obj/item/clothing/head/helmet ) ) - user << "This item does not fit." - return + else if(is_type_in_list(W, disallowed_types)) + user << "You can't fit \the [W] inside." + return + else if(istype(W, /obj/item/clothing)) if(washing.len < 5) if ( state in list(1, 3) ) user.drop_item() diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 98a49af28a3..fdf4a16b005 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -6,7 +6,7 @@ origin_tech = list(TECH_DATA = 2, TECH_BIO = 3) energy_drain = 20 range = MELEE - equip_cooldown = 20 + equip_cooldown = 50 var/mob/living/carbon/occupant = null var/datum/global_iterator/pr_mech_sleeper var/inject_amount = 10 diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index 65ed711f2fd..967c03252f3 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -91,15 +91,15 @@ break holder = patient.hud_list[HEALTH_HUD] - if(patient.stat == 2) + if(patient.stat == DEAD) holder.icon_state = "hudhealth-100" C.images += holder else - holder.icon_state = "hud[RoundHealth((patient.health-config.health_threshold_crit)/(patient.maxHealth-config.health_threshold_crit)*100)]" + holder.icon_state = RoundHealth((patient.health-config.health_threshold_crit)/(patient.maxHealth-config.health_threshold_crit)*100) C.images += holder holder = patient.hud_list[STATUS_HUD] - if(patient.stat == 2) + if(patient.stat == DEAD) holder.icon_state = "huddead" else if(foundVirus) holder.icon_state = "hudill" diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 4fc07a2a8ac..b7bb820f546 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -73,27 +73,9 @@ icon_state = "snowairlock" layer = 3.2 //Just above airlocks -/obj/effect/overlay/snow/floor/north - icon_state = "snowfloor_n" +/obj/effect/overlay/snow/floor/pointy + icon_state = "snowfloorpointy" -/obj/effect/overlay/snow/floor/south - icon_state = "snowfloor_s" - -/obj/effect/overlay/snow/floor/east - icon_state = "snowfloor_e" - -/obj/effect/overlay/snow/floor/west - icon_state = "snowfloor_w" - -/obj/effect/overlay/snow/wall/north - icon_state = "snowwall_n" +/obj/effect/overlay/snow/wall + icon_state = "snowwall" layer = 5 //Same as lights so humans can stand under it - -/obj/effect/overlay/snow/wall/south - icon_state = "snowwall_s" - -/obj/effect/overlay/snow/wall/east - icon_state = "snowwall_e" - -/obj/effect/overlay/snow/wall/west - icon_state = "snowwall_w" \ No newline at end of file diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 88b513e06e7..b154cd0468c 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -155,12 +155,24 @@ var/mob/living/carbon/human/H = AM H.in_stasis = 1 src.used = 1 + + if(istype(AM, /obj/item/organ)) + var/obj/item/organ/O = AM + O.preserved = 1 + for(var/obj/item/organ/organ in O) + organ.preserved = 1 ..() /obj/structure/closet/body_bag/cryobag/Exited(atom/movable/AM) if(ishuman(AM)) var/mob/living/carbon/human/H = AM H.in_stasis = 0 + + if(istype(AM, /obj/item/organ)) + var/obj/item/organ/O = AM + O.preserved = 0 + for(var/obj/item/organ/organ in O) + organ.preserved = 0 ..() /obj/structure/closet/body_bag/cryobag/return_air() //Used to make stasis bags protect from vacuum. diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index e7831391361..b101bab0ee0 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -18,6 +18,8 @@ var/global/list/obj/item/device/communicator/all_communicators = list() matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10) var/video_range = 4 + var/obj/machinery/camera/communicator/video_source // Their camera + var/obj/machinery/camera/communicator/camera // Our camera var/list/voice_mobs = list() var/list/voice_requests = list() @@ -63,6 +65,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list() all_communicators = sortAtom(all_communicators) node = get_exonet_node() processing_objects |= src + camera = new(src) + camera.name = "[src] #[rand(100,999)]" + camera.c_tag = camera.name //This is a pretty terrible way of doing this. spawn(5 SECONDS) //Wait for our mob to finish spawning. if(ismob(loc)) @@ -74,6 +79,14 @@ var/global/list/obj/item/device/communicator/all_communicators = list() register_device(S.loc) initialize_exonet(S.loc) +// Proc: examine() +// Parameters: user - the user doing the examining +// Description: Allows the user to click a link when examining to look at video if one is going. +/obj/item/device/communicator/examine(mob/user) + . = ..(user, 1) + if(. && video_source) + user << "It looks like it's on a video call: \[view\]" + // Proc: initialize_exonet() // Parameters: 1 (user - the person the communicator belongs to) // Description: Sets up the exonet datum, gives the device an address, and then gets a node reference. Afterwards, populates the device @@ -209,6 +222,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() /mob/observer/dead var/datum/exonet_protocol/exonet = null + var/list/exonet_messages = list() // Proc: New() // Parameters: None @@ -257,27 +271,27 @@ var/global/list/obj/item/device/communicator/all_communicators = list() //Now for ghosts who we pretend have communicators. for(var/mob/observer/dead/O in known_devices) if(O.client && O.client.prefs.communicator_visibility == 1 && O.exonet) - communicators[++communicators.len] = list("name" = sanitize("[O.client.prefs.real_name]'s communicator"), "address" = O.exonet.address) + communicators[++communicators.len] = list("name" = sanitize("[O.client.prefs.real_name]'s communicator"), "address" = O.exonet.address, "ref" = "\ref[O]") //Lists all the other communicators that we invited. for(var/obj/item/device/communicator/comm in voice_invites) if(comm.exonet) - invites[++invites.len] = list("name" = sanitize(comm.name), "address" = comm.exonet.address) + invites[++invites.len] = list("name" = sanitize(comm.name), "address" = comm.exonet.address, "ref" = "\ref[comm]") //Ghosts we invited. for(var/mob/observer/dead/O in voice_invites) if(O.exonet && O.client) - invites[++invites.len] = list("name" = sanitize("[O.client.prefs.real_name]'s communicator"), "address" = O.exonet.address) + invites[++invites.len] = list("name" = sanitize("[O.client.prefs.real_name]'s communicator"), "address" = O.exonet.address, "ref" = "\ref[O]") //Communicators that want to talk to us. for(var/obj/item/device/communicator/comm in voice_requests) if(comm.exonet) - requests[++requests.len] = list("name" = sanitize(comm.name), "address" = comm.exonet.address) + requests[++requests.len] = list("name" = sanitize(comm.name), "address" = comm.exonet.address, "ref" = "\ref[comm]") //Ghosts that want to talk to us. for(var/mob/observer/dead/O in voice_requests) if(O.exonet && O.client) - requests[++requests.len] = list("name" = sanitize("[O.client.prefs.real_name]'s communicator"), "address" = O.exonet.address) + requests[++requests.len] = list("name" = sanitize("[O.client.prefs.real_name]'s communicator"), "address" = O.exonet.address, "ref" = "\ref[O]") //Now for all the voice mobs inside the communicator. for(var/mob/living/voice/voice in contents) @@ -285,12 +299,16 @@ var/global/list/obj/item/device/communicator/all_communicators = list() //Finally, all the communicators linked to this one. for(var/obj/item/device/communicator/comm in communicating) - connected_communicators[++connected_communicators.len] = list("name" = sanitize(comm.name), "true_name" = sanitize(comm.name)) + connected_communicators[++connected_communicators.len] = list("name" = sanitize(comm.name), "true_name" = sanitize(comm.name), "ref" = "\ref[comm]") //Devices that have been messaged or recieved messages from. for(var/obj/item/device/communicator/comm in im_contacts) if(comm.exonet) - im_contacts_ui[++im_contacts_ui.len] = list("name" = sanitize(comm.name), "address" = comm.exonet.address) + im_contacts_ui[++im_contacts_ui.len] = list("name" = sanitize(comm.name), "address" = comm.exonet.address, "ref" = "\ref[comm]") + + for(var/mob/observer/dead/ghost in im_contacts) + if(ghost.exonet) + im_contacts_ui[++im_contacts_ui.len] = list("name" = sanitize(ghost.name), "address" = ghost.exonet.address, "ref" = "\ref[ghost]") //Actual messages. for(var/I in im_list) @@ -313,6 +331,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() data["requestsReceived"] = requests data["voice_mobs"] = voices data["communicating"] = connected_communicators + data["video_comm"] = video_source ? "\ref[video_source.loc]" : null data["imContacts"] = im_contacts_ui data["imList"] = im_list_ui data["time"] = worldtime2text() @@ -325,7 +344,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 450, 700) + ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700) // when the ui is first opened this is the data it will use ui.set_initial_data(data) // open the new ui window @@ -344,9 +363,20 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(new_name) owner = new_name name = "[owner]'s [initial(name)]" + if(camera) + camera.name = name + camera.c_tag = name if(href_list["toggle_visibility"]) - network_visibility = !network_visibility + switch(network_visibility) + if(1) //Visible, becoming invisbile + network_visibility = 0 + if(camera) + camera.remove_network(NETWORK_COMMUNICATORS) + if(0) //Invisible, becoming visible + network_visibility = 1 + if(camera) + camera.add_network(NETWORK_COMMUNICATORS) if(href_list["toggle_ringer"]) ringer = !ringer @@ -371,6 +401,12 @@ var/global/list/obj/item/device/communicator/all_communicators = list() var/their_address = href_list["dial"] exonet.send_message(their_address, "voice") + if(href_list["decline"]) + var/ref_to_remove = href_list["decline"] + var/atom/decline = locate(ref_to_remove) + if(decline) + del_request(decline) + if(href_list["message"]) if(!get_connection_to_tcomms()) usr << "Error: Cannot connect to Exonet node." @@ -380,15 +416,30 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(text) exonet.send_message(their_address, "text", text) im_list += list(list("address" = exonet.address, "to_address" = their_address, "im" = text)) + log_pda("[usr] (COMM: [src]) sent \"[text]\" to [exonet.get_atom_from_address(their_address)]") if(href_list["disconnect"]) var/name_to_disconnect = href_list["disconnect"] for(var/mob/living/voice/V in contents) if(name_to_disconnect == V.name) - close_connection(usr, V, "[usr] hung up.") + close_connection(usr, V, "[usr] hung up") for(var/obj/item/device/communicator/comm in communicating) if(name_to_disconnect == comm.name) - close_connection(usr, comm, "[usr] hung up.") + close_connection(usr, comm, "[usr] hung up") + + if(href_list["startvideo"]) + var/ref_to_video = href_list["startvideo"] + var/obj/item/device/communicator/comm = locate(ref_to_video) + if(comm) + connect_video(usr, comm) + + if(href_list["endvideo"]) + if(video_source) + end_video() + + if(href_list["watchvideo"]) + if(video_source) + watch_video(usr,video_source.loc) if(href_list["copy"]) target_address = href_list["copy"] @@ -398,9 +449,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(href_list["hang_up"]) for(var/mob/living/voice/V in contents) - close_connection(usr, V, "[usr] hung up.") + close_connection(usr, V, "[usr] hung up") for(var/obj/item/device/communicator/comm in communicating) - close_connection(usr, comm, "[usr] hung up.") + close_connection(usr, comm, "[usr] hung up") if(href_list["switch_tab"]) selected_tab = href_list["switch_tab"] @@ -448,7 +499,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() // Proc: receive_exonet_message() // Parameters: 3 (origin atom - the source of the message's holder, origin_address - where the message came from, message - the message received) // Description: Handles voice requests and invite messages originating from both real communicators and ghosts. Also includes a ping response. -/mob/observer/dead/receive_exonet_message(origin_atom, origin_address, message) +/mob/observer/dead/receive_exonet_message(origin_atom, origin_address, message, text) if(message == "voice") if(istype(origin_atom, /obj/item/device/communicator)) var/obj/item/device/communicator/comm = origin_atom @@ -463,7 +514,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list() var/random = rand(450,700) random = random / 10 exonet.send_message(origin_address, "64 bytes received from [exonet.address] ecmp_seq=1 ttl=51 time=[random] ms") - if(message == "text") //Ghosts don't get texting yet. Mostly for spam prevention by ghosts but also due to ui requirements not sorted out yet. + if(message == "text") + src << "\icon[origin_atom] Received text message from [origin_atom]: \"[text]\"" + exonet_messages.Add("From [origin_atom]:
    [text]") return // Proc: register_device() @@ -475,7 +528,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list() owner = user.name name = "[owner]'s [initial(name)]" - + if(camera) + camera.name = name + camera.c_tag = name // Proc: add_communicating() // Parameters: 1 (comm - the communicator to add to communicating) @@ -485,7 +540,8 @@ var/global/list/obj/item/device/communicator/all_communicators = list() communicating |= comm listening_objects |= src - + update_icon() + // Proc: del_communicating() // Parameters: 1 (comm - the communicator to remove from communicating) // Description: Used when this communicator is being asked to stop relaying say/me messages to another @@ -493,6 +549,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(!comm || !istype(comm)) return communicating.Remove(comm) + update_icon() // Proc: open_connection() // Parameters: 2 (user - the person who initiated the connecting being opened, candidate - the communicator or observer that will connect to the device) @@ -601,15 +658,19 @@ var/global/list/obj/item/device/communicator/all_communicators = list() visible_message("\icon[src] [reason].") voice_mobs.Remove(voice) qdel(voice) + update_icon() for(var/obj/item/device/communicator/comm in communicating) //Now we handle real communicators. if(target && comm != target) continue - comm.visible_message("\icon[src] [reason].") - visible_message("\icon[src] [reason].") src.del_communicating(comm) comm.del_communicating(src) - update_icon() + comm.visible_message("\icon[src] [reason].") + visible_message("\icon[src] [reason].") + if(comm.camera && video_source == comm.camera) //We hung up on the person on video + end_video() + if(camera && comm.video_source == camera) //We hung up on them while they were watching us + comm.end_video() if(voice_mobs.len == 0 && communicating.len == 0) listening_objects.Remove(src) @@ -649,6 +710,29 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(L) L << "\icon[src] Communications request from [who]." +// Proc: del_request() +// Parameters: 1 (candidate - the ghost or communicator to be declined) +// Description: Declines a request and cleans up both ends +/obj/item/device/communicator/proc/del_request(var/atom/candidate) + if(!(candidate in voice_requests)) + return + + if(isobserver(candidate)) + candidate << "Your communicator call request was declined." + else if(istype(candidate, /obj/item/device/communicator)) + var/obj/item/device/communicator/comm = candidate + comm.voice_invites -= src + + voice_requests -= candidate + + //Search for holder of our device. + var/mob/living/us = null + if(loc && isliving(loc)) + us = loc + + if(us) + us << "\icon[src] Declined request." + // Proc: request_im() // Parameters: 3 (candidate - the communicator wanting to message the device, origin_address - the address of the sender, text - the message) // Description: Response to a communicator trying to message the device. @@ -656,7 +740,9 @@ var/global/list/obj/item/device/communicator/all_communicators = list() /obj/item/device/communicator/proc/request_im(var/atom/candidate, var/origin_address, var/text) var/who = null if(isobserver(candidate)) - return + var/mob/observer/dead/ghost = candidate + who = ghost + im_list += list(list("address" = origin_address, "to_address" = exonet.address, "im" = text)) else if(istype(candidate, /obj/item/device/communicator)) var/obj/item/device/communicator/comm = candidate who = comm.owner @@ -700,6 +786,8 @@ var/global/list/obj/item/device/communicator/all_communicators = list() all_communicators -= src processing_objects -= src listening_objects.Remove(src) + qdel(camera) + camera = null if(exonet) exonet.remove_address() exonet = null @@ -709,7 +797,11 @@ var/global/list/obj/item/device/communicator/all_communicators = list() // Parameters: None // Description: Self explanatory /obj/item/device/communicator/update_icon() - if(voice_mobs.len > 0) + if(video_source) + icon_state = "communicator-video" + return + + if(voice_mobs.len || communicating.len) icon_state = "communicator-active" return @@ -729,7 +821,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(!T) return var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) //Range of 3 since it's a tiny video display var/list/mobs_to_relay = in_range["mobs"] - + for(var/mob/mob in mobs_to_relay) //We can't use visible_message(), or else we will get an infinite loop if two communicators hear each other. var/dst = get_dist(get_turf(mob),get_turf(comm)) if(dst <= video_range) @@ -745,7 +837,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() // Description: Relays the speech to all linked communicators. /obj/item/device/communicator/hear_talk(mob/living/M, text, verb, datum/language/speaking) for(var/obj/item/device/communicator/comm in communicating) - + var/turf/T = get_turf(comm) if(!T) return var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) @@ -833,7 +925,136 @@ var/global/list/obj/item/device/communicator/all_communicators = list() src << "A communications request has been sent to [chosen_communicator]. Now you need to wait until someone answers." -/obj/item/device/communicator/integrated //For synths who have no hands. +// Verb: text_communicator() +// Parameters: None +// Description: Allows a ghost to send a text message to a communicator. +/mob/observer/dead/verb/text_communicator() + set category = "Ghost" + set name = "Text Communicator" + set desc = "If there is a communicator available, send a text message to it." + + if(ticker.current_state < GAME_STATE_PLAYING) + src << "The game hasn't started yet!" + return + + if (!src.stat) + return + + if (usr != src) + return //something is terribly wrong + + for(var/mob/living/L in mob_list) //Simple check so you don't have dead people calling. + if(src.client.prefs.real_name == L.real_name) + src << "Your identity is already present in the game world. Please load in a different character first." + return + + var/obj/machinery/exonet_node/E = get_exonet_node() + if(!E || !E.on || !E.allow_external_communicators) + src << "The Exonet node at telecommunications is down at the moment, or is actively blocking you, so your call can't go through." + return + + var/list/choices = list() + for(var/obj/item/device/communicator/comm in all_communicators) + if(!comm.network_visibility || !comm.exonet || !comm.exonet.address) + continue + choices.Add(comm) + + if(!choices.len) + src << "There are no available communicators, sorry." + return + + var/choice = input(src,"Send a text message to whom?") as null|anything in choices + if(choice) + var/obj/item/device/communicator/chosen_communicator = choice + var/mob/observer/dead/O = src + var/text_message = sanitize(input(src, "What do you want the message to say?")) as message + if(text_message && O.exonet) + O.exonet.send_message(chosen_communicator.exonet.address, "text", text_message) + + src << "You have sent '[text_message]' to [chosen_communicator].." + exonet_messages.Add("To [chosen_communicator]:
    [text_message]") + log_pda("[usr] (COMM: [src]) sent \"[text_message]\" to [chosen_communicator]") + + +// Verb: show_text_messages() +// Parameters: None +// Description: Lets ghosts review messages they've sent or received. +/mob/observer/dead/verb/show_text_messages() + set category = "Ghost" + set name = "Show Text Messages" + set desc = "Allows you to see exonet text messages you've sent and received." + + var/HTML = "Exonet Message Log" + for(var/line in exonet_messages) + HTML += line + "
    " + HTML +="" + usr << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0") + +// Proc: connect_video() +// Parameters: user - the mob doing the viewing of video, comm - the communicator at the far end +// Description: Sets up a videocall and puts the first view into it using watch_video, and updates the icon +/obj/item/device/communicator/proc/connect_video(mob/user,obj/item/device/communicator/comm) + if((!user) || (!comm) || user.stat) return //KO or dead, or already in a video + + if(video_source) //Already in a video + user << "You are already connected to a video call!" + + if(user.blinded) //User is blinded + user << "You cannot see well enough to do that!" + + if(!(src in comm.communicating) || !comm.camera) //You called someone with a broken communicator or one that's fake or yourself or something + user << "\icon[src]ERROR: Video failed. Either bandwidth is too low, or the other communicator is malfunctioning." + + user << "\icon[src] Attempting to start video over existing call." + sleep(30) + user << "\icon[src] Please wait..." + + video_source = comm.camera + comm.visible_message("\icon[src] New video connection from [comm].") + watch_video(user) + update_icon() + +// Proc: watch_video() +// Parameters: user - the mob doing the viewing of video +// Description: Moves a mob's eye to the far end for the duration of viewing the far end +/obj/item/device/communicator/proc/watch_video(mob/user) + if(!Adjacent(user) || !video_source) return + user.set_machine(video_source) + user.reset_view(video_source) + user << "Now viewing video session. To leave camera view: OOC -> Cancel Camera View" + spawn(0) + while(user.machine == video_source && Adjacent(user)) + var/turf/T = get_turf(video_source) + if(!T || !is_on_same_plane_or_station(T.z, user.z) || !video_source.can_use()) + user << "The screen bursts into static, then goes black." + video_cleanup(user) + return + sleep(10) + + video_cleanup(user) + +// Proc: video_cleanup() +// Parameters: user - the mob who doesn't want to see video anymore +// Description: Cleans up mob's client when they stop watching a video +/obj/item/device/communicator/proc/video_cleanup(mob/user) + if(!user) return + + user.reset_view(null) + user.unset_machine() + +// Proc: end_video() +// Parameters: reason - the text reason to print for why it ended +// Description: Ends the video call by clearing video_source +/obj/item/device/communicator/proc/end_video(var/reason) + video_source = null + + . = "\icon[src] [reason ? reason : "Video session ended"]." + + visible_message(.) + update_icon() + +//For synths who have no hands. +/obj/item/device/communicator/integrated name = "integrated communicator" desc = "A circuit used for long-range communications, able to be integrated into a system." @@ -864,3 +1085,12 @@ var/global/list/obj/item/device/communicator/all_communicators = list() return src.attack_self(usr) + +// A camera preset for spawning in the communicator +/obj/machinery/camera/communicator + network = list(NETWORK_COMMUNICATORS) + +/obj/machinery/camera/communicator/New() + ..() + client_huds |= global_hud.whitense + client_huds |= global_hud.darkMask \ No newline at end of file diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index ae18aed86c5..e2430bb5d9f 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -74,13 +74,17 @@ if(M.stat!=DEAD) var/safety = M:eyecheck() if(safety <= 0) - var/flash_strength = 10 + var/flash_strength = 5 if(ishuman(M)) var/mob/living/carbon/human/H = M flash_strength *= H.species.flash_mod - if(flash_strength > 0) - M.Weaken(flash_strength) - flick("e_flash", M.flash) + + if(flash_strength > 0) + H.confused = max(H.confused, flash_strength) + H.eye_blind = max(H.eye_blind, flash_strength) + H.eye_blurry = max(H.eye_blurry, flash_strength + 5) + H.flash_eyes() + else flashfail = 1 @@ -158,7 +162,7 @@ var/safety = M:eyecheck() if(!safety) if(!M.blinded) - flick("flash", M.flash) + M.flash_eyes() return @@ -177,7 +181,7 @@ var/safety = M.eyecheck() if(safety <= 0) M.Weaken(10) - flick("e_flash", M.flash) + M.flash_eyes() for(var/mob/O in viewers(M, null)) O.show_message("[M] is blinded by the flash!") ..() diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index c3fcf893acf..dc042b2a6b6 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -3,7 +3,6 @@ desc = "A hand-held emergency light." icon = 'icons/obj/lighting.dmi' icon_state = "flashlight" - item_state = "flashlight" w_class = 2 flags = CONDUCT slot_flags = SLOT_BELT @@ -79,9 +78,9 @@ user << "\The [M]'s pupils narrow slightly, but are still very dilated." else user << "\The [M]'s pupils narrow." - + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) //can be used offensively - flick("flash", M.flash) + M.flash_eyes() else return ..() @@ -89,7 +88,7 @@ name = "penlight" desc = "A pen-sized light, used by medical staff." icon_state = "penlight" - item_state = "" + item_state = "pen" flags = CONDUCT slot_flags = SLOT_EARS brightness_on = 2 @@ -99,7 +98,6 @@ name = "maglight" desc = "A very, very heavy duty flashlight." icon_state = "maglight" - item_state = "maglight" force = 10 flags = CONDUCT brightness_on = 4 @@ -113,7 +111,7 @@ name = "low-power flashlight" desc = "A miniature lamp, that might be used by small robots." icon_state = "penlight" - item_state = "" + item_state = null flags = CONDUCT brightness_on = 2 w_class = 1 @@ -124,7 +122,6 @@ name = "desk lamp" desc = "A desk lamp with an adjustable mount." icon_state = "lamp" - item_state = "lamp" brightness_on = 5 w_class = 4 flags = CONDUCT @@ -136,7 +133,6 @@ /obj/item/device/flashlight/lamp/green desc = "A classic green-shaded desk lamp." icon_state = "lampgreen" - item_state = "lampgreen" brightness_on = 5 light_color = "#FFC58F" diff --git a/code/game/objects/items/devices/floor_painter.dm b/code/game/objects/items/devices/floor_painter.dm index 92515407d0b..6cf3545524f 100644 --- a/code/game/objects/items/devices/floor_painter.dm +++ b/code/game/objects/items/devices/floor_painter.dm @@ -2,7 +2,6 @@ name = "floor painter" icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler1" - item_state = "flight" var/decal = "remove all decals" var/paint_dir = "precise" diff --git a/code/game/objects/items/devices/locker_painter.dm b/code/game/objects/items/devices/locker_painter.dm index 567e2963482..d7fb37050f2 100644 --- a/code/game/objects/items/devices/locker_painter.dm +++ b/code/game/objects/items/devices/locker_painter.dm @@ -2,7 +2,6 @@ name = "closet painter" icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler1" - item_state = "flight" var/colour = "plain" var/colour_secure = "plain" diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm index ccba1fc168b..7dc64a88986 100644 --- a/code/game/objects/items/devices/pipe_painter.dm +++ b/code/game/objects/items/devices/pipe_painter.dm @@ -2,7 +2,6 @@ name = "pipe painter" icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler1" - item_state = "flight" var/list/modes var/mode diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 5b769ed8034..f945fd89e60 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -2,6 +2,10 @@ name = "electropack" desc = "Dance my monkeys! DANCE!!!" icon_state = "electropack0" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi', + ) item_state = "electropack" frequency = 1449 flags = CONDUCT diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 9b5dffdd37b..fe288b470b3 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -4,7 +4,6 @@ desc = "An encryption key for a radio headset. Contains cypherkeys." icon = 'icons/obj/radio.dmi' icon_state = "cypherkey" - item_state = "" w_class = 1 slot_flags = SLOT_EARS var/translate_binary = 0 diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index ad9b9e8f8cc..ce7eba21d8a 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -3,7 +3,6 @@ desc = "An updated, modular intercom that fits over the head. Takes encryption keys" var/radio_desc = "" icon_state = "headset" - item_state = "headset" matter = list(DEFAULT_WALL_MATERIAL = 75) subspace_transmission = 1 canhear_range = 0 // can't hear headsets from very far away @@ -71,7 +70,7 @@ /obj/item/device/radio/headset/syndicate/alt icon_state = "syndie_headset" - item_state = "syndie_headset" + item_state = "headset" origin_tech = list(TECH_ILLEGAL = 3) syndie = 1 ks1type = /obj/item/device/encryptionkey/syndicate @@ -91,7 +90,7 @@ name = "security bowman headset" desc = "This is used by your elite security force." icon_state = "sec_headset_alt" - item_state = "sec_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/headset_sec /obj/item/device/radio/headset/headset_eng @@ -105,7 +104,7 @@ name = "engineering bowman headset" desc = "When the engineers wish to chat like girls." icon_state = "eng_headset_alt" - item_state = "eng_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/headset_eng /obj/item/device/radio/headset/headset_rob @@ -126,7 +125,7 @@ name = "medical bowman headset" desc = "A headset for the trained staff of the medbay." icon_state = "med_headset_alt" - item_state = "med_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/headset_med /obj/item/device/radio/headset/headset_sci @@ -154,7 +153,7 @@ name = "command bowman headset" desc = "A headset with a commanding channel." icon_state = "com_headset_alt" - item_state = "com_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/headset_com @@ -169,7 +168,7 @@ name = "captain's bowman headset" desc = "The headset of the boss." icon_state = "com_headset_alt" - item_state = "com_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/heads/captain /obj/item/device/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway. @@ -198,7 +197,7 @@ name = "research director's bowman headset" desc = "Headset of the researching God." icon_state = "com_headset_alt" - item_state = "com_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/heads/rd /obj/item/device/radio/headset/heads/hos @@ -212,7 +211,7 @@ name = "head of security's bowman headset" desc = "The headset of the man who protects your worthless lifes." icon_state = "com_headset_alt" - item_state = "com_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/heads/hos /obj/item/device/radio/headset/heads/ce @@ -226,7 +225,7 @@ name = "chief engineer's bowman headset" desc = "The headset of the guy who is in charge of morons" icon_state = "com_headset_alt" - item_state = "com_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/heads/ce /obj/item/device/radio/headset/heads/cmo @@ -240,7 +239,7 @@ name = "chief medical officer's bowman headset" desc = "The headset of the highly trained medical chief." icon_state = "com_headset_alt" - item_state = "com_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/heads/cmo /obj/item/device/radio/headset/heads/hop @@ -254,7 +253,7 @@ name = "head of personnel's bowman headset" desc = "The headset of the guy who will one day be captain." icon_state = "com_headset_alt" - item_state = "com_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/heads/hop /* /obj/item/device/radio/headset/headset_mine @@ -275,7 +274,7 @@ name = "supply bowman headset" desc = "A bowman headset used by the QM and his slaves." icon_state = "cargo_headset_alt" - item_state = "cargo_headset_alt" + item_state = "headset" ks2type = /obj/item/device/encryptionkey/headset_cargo /obj/item/device/radio/headset/headset_service @@ -297,7 +296,7 @@ name = "emergency response team bowman headset" desc = "The headset of the boss's boss." icon_state = "com_headset_alt" - item_state = "com_headset_alt" + item_state = "headset" // freerange = 1 ks2type = /obj/item/device/encryptionkey/ert diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index e1332dda1e2..93353ca1edb 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -25,7 +25,7 @@ var/global/list/default_medbay_channels = list( name = "station bounced radio" suffix = "\[3\]" icon_state = "walkietalkie" - item_state = "walkietalkie" + item_state = "radio" var/on = 1 // 0 for off var/last_transmission diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index a4b159b7348..7b70216330d 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -13,7 +13,7 @@ REAGENT SCANNER name = "health analyzer" desc = "A hand-held body scanner able to distinguish vital signs of the subject." icon_state = "health" - item_state = "analyzer" + item_state = "healthanalyzer" flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 @@ -24,8 +24,16 @@ REAGENT SCANNER origin_tech = list(TECH_MAGNET = 1, TECH_BIO = 1) var/mode = 1; +/obj/item/device/healthanalyzer/do_surgery(mob/living/M, mob/living/user) + if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool + return ..() + scan_mob(M, user) //default surgery behaviour is just to scan as usual + return 1 -/obj/item/device/healthanalyzer/attack(mob/living/M as mob, mob/living/user as mob) +/obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/user) + scan_mob(M, user) + +/obj/item/device/healthanalyzer/proc/scan_mob(mob/living/M, mob/living/user) if ((CLUMSY in user.mutations) && prob(50)) user << text("You try to analyze the floor's vitals!") for(var/mob/O in viewers(M, null)) @@ -168,8 +176,7 @@ REAGENT SCANNER else user.show_message("Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]") user.show_message("Subject's pulse: [H.get_pulse(GETPULSE_TOOL)] bpm.") - src.add_fingerprint(user) - return + /obj/item/device/healthanalyzer/verb/toggle_mode() set name = "Switch Verbosity" diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index 550ea043801..4447ca7af29 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -4,7 +4,7 @@ w_class = 4 icon = 'icons/obj/device.dmi' icon_state = "suitcooler0" - slot_flags = SLOT_BACK //you can carry it on your back if you want, but it won't do anything unless attached to suit storage + slot_flags = SLOT_BACK //copied from tank.dm flags = CONDUCT @@ -20,7 +20,7 @@ var/on = 0 //is it turned on? var/cover_open = 0 //is the cover open? var/obj/item/weapon/cell/cell - var/max_cooling = 12 // in degrees per second - probably don't need to mess with heat capacity here + var/max_cooling = 15 // in degrees per second - probably don't need to mess with heat capacity here var/charge_consumption = 3 // charge per second at max_cooling var/thermostat = T20C @@ -87,7 +87,7 @@ var/mob/living/carbon/human/H = M - if (!H.wear_suit || H.s_store != src) + if (!H.wear_suit || (H.s_store != src && H.back != src)) return 0 return 1 diff --git a/code/game/objects/items/devices/telecrystal.dm b/code/game/objects/items/devices/telecrystal.dm deleted file mode 100644 index aa7b6335903..00000000000 --- a/code/game/objects/items/devices/telecrystal.dm +++ /dev/null @@ -1,21 +0,0 @@ -/* -Telecrystal item -Does nothing if not suitable antag type, checks for accept_tcrystals = 1 in a mob's mind. -For new antags, make sure to add "player.mind.accept_tcrystals = 1" if you want tradable tcrystals. -*/ -/obj/item/device/telecrystal - name = "red crystal" - desc = "A strange, red, glowing crystal." - icon = 'icons/obj/stock_parts.dmi' - icon_state = "telecrystal" - item_state = "telecrystal" - force = 5 - origin_tech = list(TECH_MATERIAL = 2, TECH_BLUESPACE = 1, TECH_ILLEGAL = 1) - -/obj/item/device/telecrystal/attack_self(mob/user as mob) - if(user.mind.accept_tcrystals) //Checks to see if antag type allows for tcrystals - user.mind.tcrystals += 1 - user.drop_from_inventory(src) - qdel(src) - return - \ No newline at end of file diff --git a/code/game/objects/items/devices/uplink.dm b/code/game/objects/items/devices/uplink.dm index 571b0462df8..faa17586c2d 100644 --- a/code/game/objects/items/devices/uplink.dm +++ b/code/game/objects/items/devices/uplink.dm @@ -6,11 +6,12 @@ var/list/nanoui_items // List of items for NanoUI use var/nanoui_menu = 0 // The current menu we are in var/list/nanoui_data = new // Additional data for NanoUI use + var/faction = "" //Antag faction holder. var/list/purchase_log = new var/datum/mind/uplink_owner = null var/used_TC = 0 - var/offer_time = 15 MINUTES //The time increment per discount offered + var/offer_time = 10 MINUTES //The time increment per discount offered var/next_offer_time //The time a discount will next be offered var/datum/uplink_item/discount_item //The item to be discounted var/discount_amount //The amount as a percent the item will be discounted by @@ -96,6 +97,9 @@ var/title = "Remote Uplink" var/data[0] uses = user.mind.tcrystals + if(ishuman(user)) + var/mob/living/carbon/human/H = user + faction = H.antag_faction data["welcome"] = welcome data["crystals"] = uses @@ -188,7 +192,10 @@ nanoui_data["exploit"]["faction"] = html_encode(L.fields["faction"]) nanoui_data["exploit"]["religion"] = html_encode(L.fields["religion"]) nanoui_data["exploit"]["fingerprint"] = html_encode(L.fields["fingerprint"]) - + if(L.fields["antagvis"] == ANTAG_KNOWN || (faction == L.fields["antagfac"] && (L.fields["antagvis"] == ANTAG_SHARED))) + nanoui_data["exploit"]["antagfaction"] = html_encode(L.fields["antagfac"]) + else + nanoui_data["exploit"]["antagfaction"] = html_encode("None") nanoui_data["exploit_exists"] = 1 break diff --git a/code/game/objects/items/devices/uplink_random_lists.dm b/code/game/objects/items/devices/uplink_random_lists.dm index 00860eb30c3..f3533c5a012 100644 --- a/code/game/objects/items/devices/uplink_random_lists.dm +++ b/code/game/objects/items/devices/uplink_random_lists.dm @@ -1,4 +1,5 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_random_selection/default() +var/datum/uplink_random_selection/all_uplink_selection = new/datum/uplink_random_selection/all() /datum/uplink_random_item var/uplink_item // The uplink item @@ -14,16 +15,22 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra /datum/uplink_random_selection var/list/datum/uplink_random_item/items + var/list/datum/uplink_random_item/all_items /datum/uplink_random_selection/New() ..() items = list() + all_items = list() -/datum/uplink_random_selection/proc/get_random_item(var/telecrystals, obj/item/device/uplink/U, var/list/bought_items) +/datum/uplink_random_selection/proc/get_random_item(var/telecrystals, obj/item/device/uplink/U, var/list/bought_items, var/items_override = 0) var/const/attempts = 50 for(var/i = 0; i < attempts; i++) - var/datum/uplink_random_item/RI = pick(items) + var/datum/uplink_random_item/RI + if(items_override) + RI = pick(all_items) + else + RI = pick(items) if(!prob(RI.keep_probability)) continue var/datum/uplink_item/I = uplink.items_assoc[RI.uplink_item] @@ -35,6 +42,14 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra continue return I +/datum/uplink_random_selection/all/New() + ..() + for(var/datum/uplink_item/item in uplink.items) + if(item.blacklisted) + continue + else + all_items += new/datum/uplink_random_item(item.type) + /datum/uplink_random_selection/default/New() ..() @@ -86,7 +101,7 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/thermal, reselect_propbability = 15) items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/energy_net, reselect_propbability = 15) - items += new/datum/uplink_random_item(/datum/uplink_item/item/ewar_voice, reselect_propbability = 15) + items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/ewar_voice, reselect_propbability = 15) items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/maneuvering_jets, reselect_propbability = 15) items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/egun, reselect_propbability = 15) items += new/datum/uplink_random_item(/datum/uplink_item/item/hardsuit_modules/power_sink, reselect_propbability = 15) diff --git a/code/game/objects/items/devices/violin.dm b/code/game/objects/items/devices/violin.dm index 6d195bd2bd7..683c74bd020 100644 --- a/code/game/objects/items/devices/violin.dm +++ b/code/game/objects/items/devices/violin.dm @@ -5,7 +5,6 @@ desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" icon = 'icons/obj/musician.dmi' icon_state = "violin" - item_state = "violin" force = 10 var/datum/song/song var/playing = 0 diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index a37352c7d36..009248dec11 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -2,6 +2,10 @@ name = "latex glove" desc = "A latex glove, usually used as a balloon." icon_state = "latexballon" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi', + ) item_state = "lgloves" force = 0 throwforce = 0 diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index a13df854cbd..330bde967f5 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -104,7 +104,7 @@ /obj/item/borg/upgrade/tasercooler/action(var/mob/living/silicon/robot/R) if(..()) return 0 - if(!R.module || !(src in R.module.supported_upgrades)) + if(!R.module || !(type in R.module.supported_upgrades)) R << "Upgrade mounting error! No suitable hardpoint detected!" usr << "There's no mounting point for the module!" return 0 @@ -137,7 +137,7 @@ /obj/item/borg/upgrade/jetpack/action(var/mob/living/silicon/robot/R) if(..()) return 0 - if(!R.module || !(src in R.module.supported_upgrades)) + if(!R.module || !(type in R.module.supported_upgrades)) R << "Upgrade mounting error! No suitable hardpoint detected!" usr << "There's no mounting point for the module!" return 0 diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 2ddbd4e330e..1298206b3e3 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -73,50 +73,47 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) - if(affecting.open == 0) - if(affecting.is_bandaged()) - user << "The wounds on [M]'s [affecting.name] have already been bandaged." - return 1 - else - user.visible_message("\The [user] starts treating [M]'s [affecting.name].", \ - "You start treating [M]'s [affecting.name]." ) - var/used = 0 - for (var/datum/wound/W in affecting.wounds) - if (W.internal) - continue - if(W.bandaged) - continue - if(used == amount) - break - if(!do_mob(user, M, W.damage/5)) - user << "You must stand still to bandage wounds." - break + if(affecting.open) + user << "The [affecting.name] is cut open, you'll need more than a bandage!" + return - if (W.current_stage <= W.max_bleeding_stage) - user.visible_message("\The [user] bandages \a [W.desc] on [M]'s [affecting.name].", \ - "You bandage \a [W.desc] on [M]'s [affecting.name]." ) - //H.add_side_effect("Itch") - else if (W.damage_type == BRUISE) - user.visible_message("\The [user] places a bruise patch over \a [W.desc] on [M]'s [affecting.name].", \ - "You place a bruise patch over \a [W.desc] on [M]'s [affecting.name]." ) - else - user.visible_message("\The [user] places a bandaid over \a [W.desc] on [M]'s [affecting.name].", \ - "You place a bandaid over \a [W.desc] on [M]'s [affecting.name]." ) - W.bandage() - used++ - affecting.update_damages() - if(used == amount) - if(affecting.is_bandaged()) - user << "\The [src] is used up." - else - user << "\The [src] is used up, but there are more wounds to treat on \the [affecting.name]." - use(used) + if(affecting.is_bandaged()) + user << "The wounds on [M]'s [affecting.name] have already been bandaged." + return 1 else - if (can_operate(H)) //Checks if mob is lying down on table for surgery - if (do_surgery(H,user,src)) - return - else - user << "The [affecting.name] is cut open, you'll need more than a bandage!" + user.visible_message("\The [user] starts treating [M]'s [affecting.name].", \ + "You start treating [M]'s [affecting.name]." ) + var/used = 0 + for (var/datum/wound/W in affecting.wounds) + if (W.internal) + continue + if(W.bandaged) + continue + if(used == amount) + break + if(!do_mob(user, M, W.damage/5)) + user << "You must stand still to bandage wounds." + break + + if (W.current_stage <= W.max_bleeding_stage) + user.visible_message("\The [user] bandages \a [W.desc] on [M]'s [affecting.name].", \ + "You bandage \a [W.desc] on [M]'s [affecting.name]." ) + //H.add_side_effect("Itch") + else if (W.damage_type == BRUISE) + user.visible_message("\The [user] places a bruise patch over \a [W.desc] on [M]'s [affecting.name].", \ + "You place a bruise patch over \a [W.desc] on [M]'s [affecting.name]." ) + else + user.visible_message("\The [user] places a bandaid over \a [W.desc] on [M]'s [affecting.name].", \ + "You place a bandaid over \a [W.desc] on [M]'s [affecting.name]." ) + W.bandage() + used++ + affecting.update_damages() + if(used == amount) + if(affecting.is_bandaged()) + user << "\The [src] is used up." + else + user << "\The [src] is used up, but there are more wounds to treat on \the [affecting.name]." + use(used) /obj/item/stack/medical/ointment name = "ointment" @@ -135,26 +132,23 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) - if(affecting.open == 0) - if(affecting.is_salved()) - user << "The wounds on [M]'s [affecting.name] have already been salved." - return 1 - else - user.visible_message("\The [user] starts salving wounds on [M]'s [affecting.name].", \ - "You start salving the wounds on [M]'s [affecting.name]." ) - if(!do_mob(user, M, 10)) - user << "You must stand still to salve wounds." - return 1 - user.visible_message("[user] salved wounds on [M]'s [affecting.name].", \ - "You salved wounds on [M]'s [affecting.name]." ) - use(1) - affecting.salve() + if(affecting.open) + user << "The [affecting.name] is cut open, you'll need more than a bandage!" + return + + if(affecting.is_salved()) + user << "The wounds on [M]'s [affecting.name] have already been salved." + return 1 else - if (can_operate(H)) //Checks if mob is lying down on table for surgery - if (do_surgery(H,user,src)) - return - else - user << "The [affecting.name] is cut open, you'll need more than a bandage!" + user.visible_message("\The [user] starts salving wounds on [M]'s [affecting.name].", \ + "You start salving the wounds on [M]'s [affecting.name]." ) + if(!do_mob(user, M, 10)) + user << "You must stand still to salve wounds." + return 1 + user.visible_message("[user] salved wounds on [M]'s [affecting.name].", \ + "You salved wounds on [M]'s [affecting.name]." ) + use(1) + affecting.salve() /obj/item/stack/medical/advanced/bruise_pack name = "advanced trauma kit" @@ -172,50 +166,47 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) - if(affecting.open == 0) - if(affecting.is_bandaged() && affecting.is_disinfected()) - user << "The wounds on [M]'s [affecting.name] have already been treated." - return 1 - else - user.visible_message("\The [user] starts treating [M]'s [affecting.name].", \ - "You start treating [M]'s [affecting.name]." ) - var/used = 0 - for (var/datum/wound/W in affecting.wounds) - if (W.internal) - continue - if (W.bandaged && W.disinfected) - continue - if(used == amount) - break - if(!do_mob(user, M, W.damage/5)) - user << "You must stand still to bandage wounds." - break - if (W.current_stage <= W.max_bleeding_stage) - user.visible_message("\The [user] cleans \a [W.desc] on [M]'s [affecting.name] and seals the edges with bioglue.", \ - "You clean and seal \a [W.desc] on [M]'s [affecting.name]." ) - else if (W.damage_type == BRUISE) - user.visible_message("\The [user] places a medical patch over \a [W.desc] on [M]'s [affecting.name].", \ - "You place a medical patch over \a [W.desc] on [M]'s [affecting.name]." ) - else - user.visible_message("\The [user] smears some bioglue over \a [W.desc] on [M]'s [affecting.name].", \ - "You smear some bioglue over \a [W.desc] on [M]'s [affecting.name]." ) - W.bandage() - W.disinfect() - W.heal_damage(heal_brute) - used++ - affecting.update_damages() - if(used == amount) - if(affecting.is_bandaged()) - user << "\The [src] is used up." - else - user << "\The [src] is used up, but there are more wounds to treat on \the [affecting.name]." - use(used) + if(affecting.open) + user << "The [affecting.name] is cut open, you'll need more than a bandage!" + return + + if(affecting.is_bandaged() && affecting.is_disinfected()) + user << "The wounds on [M]'s [affecting.name] have already been treated." + return 1 else - if (can_operate(H)) //Checks if mob is lying down on table for surgery - if (do_surgery(H,user,src)) - return - else - user << "The [affecting.name] is cut open, you'll need more than a bandage!" + user.visible_message("\The [user] starts treating [M]'s [affecting.name].", \ + "You start treating [M]'s [affecting.name]." ) + var/used = 0 + for (var/datum/wound/W in affecting.wounds) + if (W.internal) + continue + if (W.bandaged && W.disinfected) + continue + if(used == amount) + break + if(!do_mob(user, M, W.damage/5)) + user << "You must stand still to bandage wounds." + break + if (W.current_stage <= W.max_bleeding_stage) + user.visible_message("\The [user] cleans \a [W.desc] on [M]'s [affecting.name] and seals the edges with bioglue.", \ + "You clean and seal \a [W.desc] on [M]'s [affecting.name]." ) + else if (W.damage_type == BRUISE) + user.visible_message("\The [user] places a medical patch over \a [W.desc] on [M]'s [affecting.name].", \ + "You place a medical patch over \a [W.desc] on [M]'s [affecting.name]." ) + else + user.visible_message("\The [user] smears some bioglue over \a [W.desc] on [M]'s [affecting.name].", \ + "You smear some bioglue over \a [W.desc] on [M]'s [affecting.name]." ) + W.bandage() + W.disinfect() + W.heal_damage(heal_brute) + used++ + affecting.update_damages() + if(used == amount) + if(affecting.is_bandaged()) + user << "\The [src] is used up." + else + user << "\The [src] is used up, but there are more wounds to treat on \the [affecting.name]." + use(used) /obj/item/stack/medical/advanced/ointment name = "advanced burn kit" @@ -234,27 +225,23 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting) - if(affecting.open == 0) - if(affecting.is_salved()) - user << "The wounds on [M]'s [affecting.name] have already been salved." - return 1 - else - user.visible_message("\The [user] starts salving wounds on [M]'s [affecting.name].", \ - "You start salving the wounds on [M]'s [affecting.name]." ) - if(!do_mob(user, M, 10)) - user << "You must stand still to salve wounds." - return 1 - user.visible_message( "[user] covers wounds on [M]'s [affecting.name] with regenerative membrane.", \ - "You cover wounds on [M]'s [affecting.name] with regenerative membrane." ) - affecting.heal_damage(0,heal_burn) - use(1) - affecting.salve() + if(affecting.open) + user << "The [affecting.name] is cut open, you'll need more than a bandage!" + + if(affecting.is_salved()) + user << "The wounds on [M]'s [affecting.name] have already been salved." + return 1 else - if (can_operate(H)) //Checks if mob is lying down on table for surgery - if (do_surgery(H,user,src)) - return - else - user << "The [affecting.name] is cut open, you'll need more than a bandage!" + user.visible_message("\The [user] starts salving wounds on [M]'s [affecting.name].", \ + "You start salving the wounds on [M]'s [affecting.name]." ) + if(!do_mob(user, M, 10)) + user << "You must stand still to salve wounds." + return 1 + user.visible_message( "[user] covers wounds on [M]'s [affecting.name] with regenerative membrane.", \ + "You cover wounds on [M]'s [affecting.name] with regenerative membrane." ) + affecting.heal_damage(0,heal_burn) + use(1) + affecting.salve() /obj/item/stack/medical/splint name = "medical splints" diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 1ff55adf852..da2b23e0e32 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -18,7 +18,7 @@ R.adjustFireLoss(-15) R.updatehealth() use(1) - user.visible_message("\The [user] applied some [src] at [R]'s damaged areas.",\ + user.visible_message("\The [user] applied some [src] on [R]'s damaged areas.",\ "You apply some [src] at [R]'s damaged areas.") else user << "All [R]'s systems are nominal." @@ -27,12 +27,14 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/external/S = H.get_organ(user.zone_sel.selecting) - if (S && (S.robotic >= ORGAN_ROBOT)) - if(S.robo_repair(15, "omni", 0, src, user)) - use(1) - user.visible_message("\The [user] applies some nanite paste on [user != M ? "\the [M]'s" : "their"] [S.name].",\ - "You apply some nanite paste on [user == M ? "your" : "[M]'s"] [S.name].") - else - if (can_operate(H)) - if (do_surgery(H,user,src)) - return + if(S.open >= 2) + if (S && (S.robotic >= ORGAN_ROBOT)) + if(!S.get_damage()) + user << "Nothing to fix here." + else if(can_use(1)) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + S.heal_damage(15, 15, robo_repair = 1) + H.updatehealth() + use(1) + user.visible_message("\The [user] applies some nanite paste on [user != M ? "[M]'s [S.name]" : "[S]"] with [src].",\ + "You apply some nanite paste on [user == M ? "your" : "[M]'s"] [S.name].") diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index a0496b367db..87ada4fa4e5 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -13,6 +13,9 @@ max_amount = 60 attack_verb = list("hit", "bludgeoned", "whacked") +/obj/item/stack/rods/fifty //Calling this path still fifty because sixty is confusing + amount = 60 + /obj/item/stack/rods/cyborg name = "metal rod synthesizer" desc = "A device that makes metal rods." diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 5d1e7eb144b..96b35e13e71 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -4,36 +4,54 @@ singular_name = "human skin piece" icon_state = "sheet-hide" +/obj/item/stack/material/animalhide/human + amount = 50 + /obj/item/stack/material/animalhide/corgi name = "corgi hide" desc = "The by-product of corgi farming." singular_name = "corgi hide piece" icon_state = "sheet-corgi" +/obj/item/stack/material/animalhide/corgi + amount = 50 + /obj/item/stack/material/animalhide/cat name = "cat hide" desc = "The by-product of cat farming." singular_name = "cat hide piece" icon_state = "sheet-cat" +/obj/item/stack/material/animalhide/cat + amount = 50 + /obj/item/stack/material/animalhide/monkey name = "monkey hide" desc = "The by-product of monkey farming." singular_name = "monkey hide piece" icon_state = "sheet-monkey" +/obj/item/stack/material/animalhide/monkey + amount = 50 + /obj/item/stack/material/animalhide/lizard name = "lizard skin" desc = "Sssssss..." singular_name = "lizard skin piece" icon_state = "sheet-lizard" +/obj/item/stack/material/animalhide/lizard + amount = 50 + /obj/item/stack/material/animalhide/xeno name = "alien hide" desc = "The skin of a terrible creature." singular_name = "alien hide piece" icon_state = "sheet-xeno" +/obj/item/stack/material/animalhide/xeno + amount = 50 + //don't see anywhere else to put these, maybe together they could be used to make the xenos suit? /obj/item/stack/material/xenochitin name = "alien chitin" @@ -42,6 +60,9 @@ icon = 'icons/mob/alien.dmi' icon_state = "chitin" +/obj/item/stack/material/xenochitin + amount = 50 + /obj/item/xenos_claw name = "alien claw" desc = "The claw of a terrible creature." @@ -60,6 +81,9 @@ singular_name = "hairless hide piece" icon_state = "sheet-hairlesshide" +/obj/item/stack/material/hairlesshide + amount = 50 + /obj/item/stack/material/wetleather name = "wet leather" desc = "This leather has been cleaned but still needs to be dried." @@ -68,6 +92,9 @@ var/wetness = 30 //Reduced when exposed to high temperautres var/drying_threshold_temperature = 500 //Kelvin to start drying +/obj/item/stack/material/wetleather + amount = 50 + //Step one - dehairing. /obj/item/stack/material/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob) if( istype(W, /obj/item/weapon/material/knife) || \ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 83ce6d3f49f..ee1cc1b0786 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -298,14 +298,16 @@ /obj/item/stack/attack_hand(mob/user as mob) if (user.get_inactive_hand() == src) - var/obj/item/stack/F = src.split(1) - if (F) - user.put_in_hands(F) - src.add_fingerprint(user) - F.add_fingerprint(user) - spawn(0) - if (src && usr.machine==src) - src.interact(usr) + var/N = input("How many stacks of [src] would you like to split off?", "Split stacks", 1) as num|null + if(N) + var/obj/item/stack/F = src.split(N) + if (F) + user.put_in_hands(F) + src.add_fingerprint(user) + F.add_fingerprint(user) + spawn(0) + if (src && usr.machine==src) + src.interact(usr) else ..() return @@ -313,10 +315,7 @@ /obj/item/stack/attackby(obj/item/W as obj, mob/user as mob) if (istype(W, /obj/item/stack)) var/obj/item/stack/S = W - if (user.get_inactive_hand()==src) - src.transfer_to(S, 1) - else - src.transfer_to(S) + src.transfer_to(S) spawn(0) //give the stacks a chance to delete themselves if necessary if (S && usr.machine==S) diff --git a/code/game/objects/items/stacks/telecrystal.dm b/code/game/objects/items/stacks/telecrystal.dm new file mode 100644 index 00000000000..f56b9580fc0 --- /dev/null +++ b/code/game/objects/items/stacks/telecrystal.dm @@ -0,0 +1,26 @@ +/obj/item/stack/telecrystal + name = "telecrystal" + desc = "It seems to be pulsing with suspiciously enticing energies." + description_antag = "Telecrystals can be activated by utilizing them on devices with an actively running uplink. They will not activate on unactivated uplinks." + singular_name = "telecrystal" + icon = 'icons/obj/stock_parts.dmi' + icon_state = "telecrystal" + w_class = 1 + max_amount = 240 + origin_tech = list(TECH_MATERIAL = 6, TECH_BLUESPACE = 4) + force = 1 //Needs a token force to ensure you can attack because for some reason you can't attack with 0 force things + +/obj/item/stack/telecrystal/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) + if(amount >= 5) + target.visible_message("\The [target] has been transported with \the [src] by \the [user].") + safe_blink(target, 14) + use(5) + else + user << "There are not enough telecrystals to do that." + +/obj/item/stack/telecrystal/attack_self(mob/user as mob) + if(user.mind.accept_tcrystals) //Checks to see if antag type allows for tcrystals + user << "You use \the [src], adding [src.amount] to your balance." + user.mind.tcrystals += amount + use(amount) + return \ No newline at end of file diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 669c32955f6..20cfb07864b 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -35,6 +35,8 @@ flags = 0 origin_tech = list(TECH_BIO = 1) +/obj/item/stack/tile/grass/fifty + amount = 50 /* * Wood */ @@ -49,6 +51,9 @@ throw_range = 20 flags = 0 +/obj/item/stack/tile/wood/fifty + amount = 50 + /obj/item/stack/tile/wood/cyborg name = "wood floor tile synthesizer" desc = "A device that makes wood floor tiles." @@ -71,12 +76,18 @@ throw_range = 20 flags = 0 +/obj/item/stack/tile/carpet/fifty + amount = 50 + /obj/item/stack/tile/carpet/blue name = "blue carpet" singular_name = "blue carpet" desc = "A piece of blue carpet. It is the same size as a normal floor tile!" icon_state = "tile-bluecarpet" +/obj/item/stack/tile/carpet/blue/fifty + amount = 50 + /obj/item/stack/tile/floor name = "floor tile" singular_name = "floor tile" @@ -89,42 +100,63 @@ throw_range = 20 flags = CONDUCT +/obj/item/stack/tile/floor/fifty + amount = 50 + /obj/item/stack/tile/floor_red name = "red floor tile" singular_name = "red floor tile" color = COLOR_RED_GRAY icon_state = "tile_white" +/obj/item/stack/tile/floor_red/fifty + amount = 50 + /obj/item/stack/tile/floor_steel name = "steel floor tile" singular_name = "steel floor tile" icon_state = "tile_steel" matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4) +/obj/item/stack/tile/floor_steel/fifty + amount = 50 + /obj/item/stack/tile/floor_white name = "white floor tile" singular_name = "white floor tile" icon_state = "tile_white" matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4) +/obj/item/stack/tile/floor_white/fifty + amount = 50 + /obj/item/stack/tile/floor_yellow name = "yellow floor tile" singular_name = "yellow floor tile" color = COLOR_BROWN icon_state = "tile_white" +/obj/item/stack/tile/floor_yellow/fifty + amount = 50 + /obj/item/stack/tile/floor_dark name = "dark floor tile" singular_name = "dark floor tile" icon_state = "fr_tile" matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4) +/obj/item/stack/tile/floor_dark/fifty + amount = 50 + /obj/item/stack/tile/floor_freezer name = "freezer floor tile" singular_name = "freezer floor tile" icon_state = "tile_freezer" matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4) +/obj/item/stack/tile/foor_freezer/fifty + amount = 50 + /obj/item/stack/tile/floor/cyborg name = "floor tile synthesizer" desc = "A device that makes floor tiles." @@ -144,4 +176,7 @@ throwforce = 1.0 throw_speed = 5 throw_range = 20 - flags = 0 \ No newline at end of file + flags = 0 + +/obj/item/stack/tile/linoleum/fifty + amount = 50 \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 63a88dadbb8..7710cec5f6d 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -34,7 +34,6 @@ desc = "A translucent balloon. There's nothing in it." icon = 'icons/obj/toy.dmi' icon_state = "waterballoon-e" - item_state = "balloon-empty" /obj/item/toy/balloon/New() var/datum/reagents/R = new/datum/reagents(10) @@ -85,10 +84,8 @@ /obj/item/toy/balloon/update_icon() if(src.reagents.total_volume >= 1) icon_state = "waterballoon" - item_state = "balloon" else icon_state = "waterballoon-e" - item_state = "balloon-empty" /obj/item/toy/syndicateballoon name = "criminal balloon" @@ -99,7 +96,6 @@ force = 0 icon = 'icons/obj/weapons.dmi' icon_state = "syndballoon" - item_state = "syndballoon" w_class = 4.0 /obj/item/toy/nanotrasenballoon @@ -111,7 +107,6 @@ force = 0 icon = 'icons/obj/weapons.dmi' icon_state = "ntballoon" - item_state = "ntballoon" w_class = 4.0 /* @@ -142,7 +137,6 @@ desc = "A weapon favored by many overactive children. Ages 8 and up." icon = 'icons/obj/gun.dmi' icon_state = "crossbow" - item_state = "crossbow" item_icons = list( icon_l_hand = 'icons/mob/items/lefthand_guns.dmi', icon_r_hand = 'icons/mob/items/righthand_guns.dmi', @@ -251,7 +245,6 @@ anchored = 1 density = 0 - /* * Toy swords */ @@ -260,7 +253,10 @@ desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up." icon = 'icons/obj/weapons.dmi' icon_state = "sword0" - item_state = "sword0" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) var/active = 0.0 w_class = 2.0 attack_verb = list("attacked", "struck", "hit") @@ -271,13 +267,11 @@ user << "You extend the plastic blade with a quick flick of your wrist." playsound(user, 'sound/weapons/saberon.ogg', 50, 1) src.icon_state = "swordblue" - src.item_state = "swordblue" src.w_class = 4 else user << "You push the plastic blade back down into the handle." playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) src.icon_state = "sword0" - src.item_state = "sword0" src.w_class = 2 if(istype(user,/mob/living/carbon/human)) @@ -293,7 +287,10 @@ desc = "Woefully underpowered in D20." icon = 'icons/obj/weapons.dmi' icon_state = "katana" - item_state = "katana" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) flags = CONDUCT slot_flags = SLOT_BELT | SLOT_BACK force = 5 @@ -863,7 +860,10 @@ desc = "An arcane weapon (made of foam) wielded by the followers of the hit Saturday morning cartoon \"King Nursee and the Acolytes of Heroism\"." icon = 'icons/obj/weapons.dmi' icon_state = "cultblade" - item_state = "cultblade" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) w_class = 4 attack_verb = list("attacked", "slashed", "stabbed", "poked") @@ -883,7 +883,6 @@ name = "inflatable duck" desc = "No bother to sink or swim when you can just float!" icon_state = "inflatable" - item_state = "inflatable" icon = 'icons/obj/clothing/belts.dmi' slot_flags = SLOT_BELT diff --git a/code/game/objects/items/weapons/autopsy.dm b/code/game/objects/items/weapons/autopsy.dm index d196bc4ea7a..61c6668c33a 100644 --- a/code/game/objects/items/weapons/autopsy.dm +++ b/code/game/objects/items/weapons/autopsy.dm @@ -162,19 +162,16 @@ if(istype(usr,/mob/living/carbon)) usr.put_in_hands(src) -/obj/item/weapon/autopsy_scanner/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) +/obj/item/weapon/autopsy_scanner/do_surgery(mob/living/carbon/human/M, mob/living/user) if(!istype(M)) - return - - if(!can_operate(M)) - return + return 0 if(target_name != M.name) target_name = M.name src.wdata = list() src.chemtraces = list() src.timeofdeath = null - user << "A new patient has been registered.. Purging data for previous patient." + user << "A new patient has been registered. Purging data for previous patient." src.timeofdeath = M.timeofdeath @@ -183,10 +180,9 @@ usr << "You can't scan this body part." return if(!S.open) - usr << "You have to cut the limb open first!" + usr << "You have to cut [S] open first!" return - for(var/mob/O in viewers(M)) - O.show_message("\The [user] scans the wounds on [M.name]'s [S.name] with \the [src]", 1) + M.visible_message("\The [user] scans the wounds on [M]'s [S.name] with [src]") src.add_data(S) diff --git a/code/game/objects/items/weapons/candle.dm b/code/game/objects/items/weapons/candle.dm index 421bb55a6a5..740b5e5a129 100644 --- a/code/game/objects/items/weapons/candle.dm +++ b/code/game/objects/items/weapons/candle.dm @@ -3,7 +3,6 @@ desc = "a small pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments." icon = 'icons/obj/candle.dmi' icon_state = "candle1" - item_state = "candle1" w_class = 1 light_color = "#E09D37" var/wax = 2000 diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index a85fab3807a..743175a21b7 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -15,7 +15,8 @@ name = "card" desc = "Does card things." icon = 'icons/obj/card.dmi' - w_class = 1.0 + w_class = 1 + slot_flags = SLOT_EARS var/associated_account_number = 0 var/list/files = list( ) @@ -68,7 +69,6 @@ icon_state = "emag" item_state = "card-id" origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2) - var/default_uses = 10 var/uses = 10 /obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user) @@ -88,9 +88,15 @@ qdel(src) return 1 + /obj/item/weapon/card/emag/attackby(obj/item/O as obj, mob/user as mob) - if(istype(O, /obj/item/device/telecrystal)) - src.uses += default_uses/2 //Adds half the default amount of uses which is more than you get per TC when buying, as to balance the utility of having multiple emags vs one heavily usable one + if(istype(O, /obj/item/stack/telecrystal)) + var/obj/item/stack/telecrystal/T = O + if(T.amount < 1) + usr << "You are not adding enough telecrystals to fuel \the [src]." + return + uses += T.amount/2 //Gives 5 uses per 10 TC + uses = ceil(uses) //Ensures no decimal uses nonsense, rounds up to be nice usr << "You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses]." qdel(O) @@ -349,4 +355,11 @@ desc = "A card which represents common sense and responsibility." icon_state = "civGold" primary_color = rgb(0,94,142) - secondary_color = rgb(255,223,127) \ No newline at end of file + secondary_color = rgb(255,223,127) + +/obj/item/weapon/card/id/external + name = "identification card" + desc = "An identification card of some sort. It does not look like it is issued by NT." + icon_state = "permit" + primary_color = rgb(142,94,0) + secondary_color = rgb(191,159,95) \ No newline at end of file diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 4772063b4c7..b2c9e82e279 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -481,7 +481,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/weapon/flame/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) if(!istype(M, /mob)) return - M.IgniteMob() + + if(lit == 1) + M.IgniteMob() if(istype(M.wear_mask, /obj/item/clothing/mask/smokable/cigarette) && user.zone_sel.selecting == O_MOUTH && lit) var/obj/item/clothing/mask/smokable/cigarette/cig = M.wear_mask diff --git a/code/game/objects/items/weapons/circuitboards/computer/supply.dm b/code/game/objects/items/weapons/circuitboards/computer/supply.dm index 882e2714f64..5924e19ac02 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/supply.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/supply.dm @@ -1,5 +1,5 @@ #ifndef T_BOARD -#error T_BOARD macro is not defined but we need it! +#error T_BOARD macro is not defined but we need it! #endif /obj/item/weapon/circuitboard/supplycomp @@ -28,7 +28,6 @@ catastasis = "STANDARD" switch( alert("Current receiver spectrum is set to: [catastasis]","Multitool-Circuitboard interface","Switch to [opposite_catastasis]","Cancel") ) - //switch( alert("Current receiver spectrum is set to: " {(src.contraband_enabled) ? ("BROAD") : ("STANDARD")} , "Multitool-Circuitboard interface" , "Switch to " {(src.contraband_enabled) ? ("STANDARD") : ("BROAD")}, "Cancel") ) if("Switch to STANDARD","Switch to BROAD") src.contraband_enabled = !src.contraband_enabled diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index d92ad00babb..c23af3192be 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -75,7 +75,6 @@ slot_flags = SLOT_EARS icon = 'icons/obj/items.dmi' icon_state = "purplecomb" - item_state = "purplecomb" /obj/item/weapon/haircomb/attack_self(mob/living/user) user.visible_message(text("[] uses [] to comb their hair with incredible style and sophistication. What a [].", user, src, user.gender == FEMALE ? "lady" : "guy")) diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm index 074543296f5..86310d2b78a 100644 --- a/code/game/objects/items/weapons/dice.dm +++ b/code/game/objects/items/weapons/dice.dm @@ -10,12 +10,42 @@ /obj/item/weapon/dice/New() icon_state = "[name][rand(1,sides)]" +/obj/item/weapon/dice/d4 + name = "d4" + desc = "A dice with four sides." + icon_state = "d44" + sides = 4 + +/obj/item/weapon/dice/d8 + name = "d8" + desc = "A dice with eight sides." + icon_state = "d88" + sides = 8 + +/obj/item/weapon/dice/d10 + name = "d10" + desc = "A dice with ten sides." + icon_state = "d1010" + sides = 10 + +/obj/item/weapon/dice/d12 + name = "d12" + desc = "A dice with twelve sides." + icon_state = "d1212" + sides = 12 + /obj/item/weapon/dice/d20 name = "d20" desc = "A dice with twenty sides." icon_state = "d2020" sides = 20 +/obj/item/weapon/dice/d100 + name = "d100" + desc = "A dice with ten sides. This one is for the tens digit." + icon_state = "d10010" + sides = 10 + /obj/item/weapon/dice/attack_self(mob/user as mob) var/result = rand(1, sides) var/comment = "" diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index 8cd4c373e90..37018e85768 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -3,6 +3,10 @@ desc = "You are a firestarter!" icon = 'icons/obj/flamethrower.dmi' icon_state = "flamethrowerbase" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi', + ) item_state = "flamethrower_0" flags = CONDUCT force = 3.0 diff --git a/code/game/objects/items/weapons/grenades/anti_photon_grenade.dm b/code/game/objects/items/weapons/grenades/anti_photon_grenade.dm index 4a051099254..2e16eb4106e 100644 --- a/code/game/objects/items/weapons/grenades/anti_photon_grenade.dm +++ b/code/game/objects/items/weapons/grenades/anti_photon_grenade.dm @@ -3,7 +3,6 @@ name = "photon disruption grenade" icon = 'icons/obj/grenade.dmi' icon_state = "emp" - item_state = "emp" det_time = 20 origin_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 4) diff --git a/code/game/objects/items/weapons/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm index 91b2d8f7e1b..43b954c76ab 100644 --- a/code/game/objects/items/weapons/grenades/emgrenade.dm +++ b/code/game/objects/items/weapons/grenades/emgrenade.dm @@ -14,7 +14,6 @@ name = "low yield emp grenade" desc = "A weaker variant of the EMP grenade" icon_state = "lyemp" - item_state = "lyempgrenade" origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3) prime() diff --git a/code/game/objects/items/weapons/grenades/explosive.dm b/code/game/objects/items/weapons/grenades/explosive.dm index ee1342d1cc5..62d13c3a2bf 100644 --- a/code/game/objects/items/weapons/grenades/explosive.dm +++ b/code/game/objects/items/weapons/grenades/explosive.dm @@ -4,7 +4,6 @@ //icon = 'icons/obj/grenade.dmi' //det_time = 50 //icon_state = "frggrenade" - //item_state = "frggrenade" //origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 3) //obj/item/weapon/grenade/explosive/prime() @@ -18,7 +17,8 @@ //Explosive grenade projectile, borrowed from fragmentation grenade code. /obj/item/projectile/bullet/pellet/fragment damage = 10 - range_step = 2 + armor_penetration = 30 + range_step = 2 //projectiles lose a fragment each time they travel this distance. Can be a non-integer. base_spread = 0 //causes it to be treated as a shrapnel explosion instead of cone spread_step = 20 @@ -31,11 +31,10 @@ name = "fragmentation grenade" desc = "A fragmentation grenade, optimized for harming personnel without causing massive structural damage." icon_state = "frggrenade" - item_state = "frggrenade" + item_state = "grenade" - var/num_fragments = 50 //total number of fragments produced by the grenade - var/fragment_damage = 10 - var/damage_step = 2 //projectiles lose a fragment each time they travel this distance. Can be a non-integer. + var/fragment_type = /obj/item/projectile/bullet/pellet/fragment + var/num_fragments = 63 //total number of fragments produced by the grenade var/explosion_size = 2 //size of the center explosion //The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern @@ -57,9 +56,7 @@ for(var/turf/T in target_turfs) var/obj/item/projectile/bullet/pellet/fragment/P = new (O) - P.damage = fragment_damage P.pellets = fragments_per_projectile - P.range_step = damage_step P.shot_from = src.name P.launch(T) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 17616942c11..a38c66333c7 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -40,7 +40,7 @@ //Flashing everyone if(eye_safety < 1) - flick("e_flash", M.flash) + M.flash_eyes() M.Stun(2) M.Weaken(10) diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 5ca0bd3845c..8e112d96555 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -18,7 +18,7 @@ playsound(T, 'sound/effects/phasein.ogg', 100, 1) for(var/mob/living/carbon/human/M in viewers(T, null)) if(M:eyecheck() <= 0) - flick("e_flash", M.flash) + M.flash_eyes() // Spawn some hostile syndicate critters for(var/i=1, i<=deliveryamt, i++) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index c44c3e1688e..60e02feab65 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -60,7 +60,7 @@ user << "\The [H] needs at least two wrists before you can cuff them together!" return 0 - if(istype(H.gloves,/obj/item/clothing/gloves/rig) && !elastic) // Can't cuff someone who's in a deployed hardsuit. + if(istype(H.gloves,/obj/item/clothing/gloves/gauntlets/rig) && !elastic) // Can't cuff someone who's in a deployed hardsuit. user << "\The [src] won't fit around \the [H.gloves]!" return 0 @@ -76,7 +76,7 @@ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) user.do_attack_animation(H) - + user.visible_message("\The [user] has put [cuff_type] on \the [H]!") // Apply cuffs. @@ -169,4 +169,4 @@ var/last_chew = 0 item_state = null icon = 'icons/obj/bureaucracy.dmi' breakouttime = 200 - cuff_type = "duct tape" + cuff_type = "duct tape" diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 69f14d7c2b8..4bddb29a066 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -15,43 +15,44 @@ var/malfunction = 0 show_messages = 1 - proc/trigger(emote, source as mob) - return +/obj/item/weapon/implant/proc/trigger(emote, source as mob) + return - proc/activate() - return +/obj/item/weapon/implant/proc/activate() + return // What does the implant do upon injection? // return 0 if the implant fails (ex. Revhead and loyalty implant.) // return 1 if the implant succeeds (ex. Nonrevhead and loyalty implant.) - proc/implanted(var/mob/source) - return 1 +/obj/item/weapon/implant/proc/implanted(var/mob/source) + listening_objects |= src + return 1 - proc/get_data() - return "No information available" +/obj/item/weapon/implant/proc/get_data() + return "No information available" - proc/hear(message, source as mob) - return +/obj/item/weapon/implant/proc/hear(message, source as mob) + return - proc/islegal() - return 0 +/obj/item/weapon/implant/proc/islegal() + return 0 - proc/meltdown() //breaks it down, making implant unrecongizible - imp_in << "You feel something melting inside [part ? "your [part.name]" : "you"]!" - if (part) - part.take_damage(burn = 15, used_weapon = "Electronics meltdown") - else - var/mob/living/M = imp_in - M.apply_damage(15,BURN) - name = "melted implant" - desc = "Charred circuit in melted plastic case. Wonder what that used to be..." - icon_state = "implant_melted" - malfunction = MALFUNCTION_PERMANENT +/obj/item/weapon/implant/proc/meltdown() //breaks it down, making implant unrecongizible + imp_in << "You feel something melting inside [part ? "your [part.name]" : "you"]!" + if (part) + part.take_damage(burn = 15, used_weapon = "Electronics meltdown") + else + var/mob/living/M = imp_in + M.apply_damage(15,BURN) + name = "melted implant" + desc = "Charred circuit in melted plastic case. Wonder what that used to be..." + icon_state = "implant_melted" + malfunction = MALFUNCTION_PERMANENT - Destroy() - if(part) - part.implants.Remove(src) - ..() +/obj/item/weapon/implant/Destroy() + if(part) + part.implants.Remove(src) + ..() /obj/item/weapon/implant/tracking name = "tracking implant" @@ -59,8 +60,8 @@ var/id = 1.0 - get_data() - var/dat = {"Implant Specifications:
    +/obj/item/weapon/implant/tracking/get_data() + var/dat = {"Implant Specifications:
    Name: Tracking Beacon
    Life: 10 minutes after death of host
    Important Notes: None
    @@ -74,23 +75,23 @@ disintegrate into bio-safe elements.
    Integrity: Gradient creates slight risk of being overcharged and frying the circuitry. As a result neurotoxins can cause massive damage.
    Implant Specifics:
    "} - return dat + return dat - emp_act(severity) - if (malfunction) //no, dawg, you can't malfunction while you are malfunctioning - return - malfunction = MALFUNCTION_TEMPORARY +/obj/item/weapon/implant/tracking/emp_act(severity) + if (malfunction) //no, dawg, you can't malfunction while you are malfunctioning + return + malfunction = MALFUNCTION_TEMPORARY - var/delay = 20 - switch(severity) - if(1) - if(prob(60)) - meltdown() - if(2) - delay = rand(5*60*10,15*60*10) //from 5 to 15 minutes of free time + var/delay = 20 + switch(severity) + if(1) + if(prob(60)) + meltdown() + if(2) + delay = rand(5*60*10,15*60*10) //from 5 to 15 minutes of free time - spawn(delay) - malfunction-- + spawn(delay) + malfunction-- /obj/item/weapon/implant/dexplosive @@ -98,8 +99,8 @@ Implant Specifics:
    "} desc = "And boom goes the weasel." icon_state = "implant_evil" - get_data() - var/dat = {" +/obj/item/weapon/implant/dexplosive/get_data() + var/dat = {" Implant Specifications:
    Name: Robust Corp RX-78 Employee Management Implant
    Life: Activates upon death.
    @@ -109,23 +110,23 @@ Implant Specifics:
    "} Function: Contains a compact, electrically detonated explosive that detonates upon receiving a specially encoded signal or upon host death.
    Special Features: Explodes
    Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} - return dat + return dat - trigger(emote, source as mob) - if(emote == "deathgasp") - src.activate("death") - return +/obj/item/weapon/implant/dexplosive/trigger(emote, source as mob) + if(emote == "deathgasp") + src.activate("death") + return - activate(var/cause) - if((!cause) || (!src.imp_in)) return 0 - explosion(src, -1, 0, 2, 3, 0)//This might be a bit much, dono will have to see. - if(src.imp_in) - src.imp_in.gib() +/obj/item/weapon/implant/dexplosive/activate(var/cause) + if((!cause) || (!src.imp_in)) return 0 + explosion(src, -1, 0, 2, 3, 0)//This might be a bit much, dono will have to see. + if(src.imp_in) + src.imp_in.gib() - islegal() - return 0 +/obj/item/weapon/implant/dexplosive/islegal() + return 0 //BS12 Explosive /obj/item/weapon/implant/explosive @@ -135,8 +136,8 @@ Implant Specifics:
    "} var/phrase = "supercalifragilisticexpialidocious" icon_state = "implant_evil" - get_data() - var/dat = {" +/obj/item/weapon/implant/explosive/get_data() + var/dat = {" Implant Specifications:
    Name: Robust Corp RX-78 Intimidation Class Implant
    Life: Activates upon codephrase.
    @@ -146,120 +147,121 @@ Implant Specifics:
    "} Function: Contains a compact, electrically detonated explosive that detonates upon receiving a specially encoded signal or upon host death.
    Special Features: Explodes
    Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} - return dat + return dat - hear_talk(mob/M as mob, msg) - hear(msg) +/obj/item/weapon/implant/explosive/hear_talk(mob/M as mob, msg) + hear(msg) + return + +/obj/item/weapon/implant/explosive/hear(var/msg) + var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "") + msg = replace_characters(msg, replacechars) + if(findtext(msg,phrase)) + activate() + qdel(src) + +/obj/item/weapon/implant/explosive/activate() + if (malfunction == MALFUNCTION_PERMANENT) return - hear(var/msg) - var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "") - msg = replace_characters(msg, replacechars) - if(findtext(msg,phrase)) - activate() - qdel(src) + var/need_gib = null + if(istype(imp_in, /mob/)) + var/mob/T = imp_in + message_admins("Explosive implant triggered in [T] ([T.key]). (JMP) ") + log_game("Explosive implant triggered in [T] ([T.key]).") + need_gib = 1 - activate() - if (malfunction == MALFUNCTION_PERMANENT) - return - - var/need_gib = null - if(istype(imp_in, /mob/)) - var/mob/T = imp_in - message_admins("Explosive implant triggered in [T] ([T.key]). (JMP) ") - log_game("Explosive implant triggered in [T] ([T.key]).") - need_gib = 1 - - if(ishuman(imp_in)) - if (elevel == "Localized Limb") - if(part) //For some reason, small_boom() didn't work. So have this bit of working copypaste. - imp_in.visible_message("Something beeps inside [imp_in][part ? "'s [part.name]" : ""]!") - playsound(loc, 'sound/items/countdown.ogg', 75, 1, -3) - sleep(25) - if (istype(part,/obj/item/organ/external/chest) || \ - istype(part,/obj/item/organ/external/groin) || \ - istype(part,/obj/item/organ/external/head)) - part.createwound(BRUISE, 60) //mangle them instead - explosion(get_turf(imp_in), -1, -1, 2, 3) - qdel(src) - else - explosion(get_turf(imp_in), -1, -1, 2, 3) - part.droplimb(0,DROPLIMB_BLUNT) - qdel(src) - if (elevel == "Destroy Body") - explosion(get_turf(T), -1, 0, 1, 6) - T.gib() - if (elevel == "Full Explosion") - explosion(get_turf(T), 0, 1, 3, 6) - T.gib() - - else - explosion(get_turf(imp_in), 0, 1, 3, 6) - - if(need_gib) - imp_in.gib() - - var/turf/t = get_turf(imp_in) - - if(t) - t.hotspot_expose(3500,125) - - implanted(mob/source as mob) - elevel = alert("What sort of explosion would you prefer?", "Implant Intent", "Localized Limb", "Destroy Body", "Full Explosion") - phrase = input("Choose activation phrase:") as text - var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "") - phrase = replace_characters(phrase, replacechars) - usr.mind.store_memory("Explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', say [src.phrase] to attempt to activate.", 0, 0) - usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', say [src.phrase] to attempt to activate." - return 1 - - emp_act(severity) - if (malfunction) - return - malfunction = MALFUNCTION_TEMPORARY - switch (severity) - if (2.0) //Weak EMP will make implant tear limbs off. - if (prob(50)) - small_boom() - if (1.0) //strong EMP will melt implant either making it go off, or disarming it - if (prob(70)) - if (prob(50)) - small_boom() - else - if (prob(50)) - activate() //50% chance of bye bye - else - meltdown() //50% chance of implant disarming - spawn (20) - malfunction-- - - islegal() - return 0 - - proc/small_boom() - if (ishuman(imp_in) && part) - imp_in.visible_message("Something beeps inside [imp_in][part ? "'s [part.name]" : ""]!") - playsound(loc, 'sound/items/countdown.ogg', 75, 1, -3) - spawn(25) - if (ishuman(imp_in) && part) - //No tearing off these parts since it's pretty much killing - //and you can't replace groins + if(ishuman(imp_in)) + if (elevel == "Localized Limb") + if(part) //For some reason, small_boom() didn't work. So have this bit of working copypaste. + imp_in.visible_message("Something beeps inside [imp_in][part ? "'s [part.name]" : ""]!") + playsound(loc, 'sound/items/countdown.ogg', 75, 1, -3) + sleep(25) if (istype(part,/obj/item/organ/external/chest) || \ istype(part,/obj/item/organ/external/groin) || \ istype(part,/obj/item/organ/external/head)) part.createwound(BRUISE, 60) //mangle them instead + explosion(get_turf(imp_in), -1, -1, 2, 3) + qdel(src) else + explosion(get_turf(imp_in), -1, -1, 2, 3) part.droplimb(0,DROPLIMB_BLUNT) - explosion(get_turf(imp_in), -1, -1, 2, 3) - qdel(src) + qdel(src) + if (elevel == "Destroy Body") + explosion(get_turf(T), -1, 0, 1, 6) + T.gib() + if (elevel == "Full Explosion") + explosion(get_turf(T), 0, 1, 3, 6) + T.gib() + + else + explosion(get_turf(imp_in), 0, 1, 3, 6) + + if(need_gib) + imp_in.gib() + + var/turf/t = get_turf(imp_in) + + if(t) + t.hotspot_expose(3500,125) + +/obj/item/weapon/implant/explosive/implanted(mob/source as mob) + elevel = alert("What sort of explosion would you prefer?", "Implant Intent", "Localized Limb", "Destroy Body", "Full Explosion") + phrase = input("Choose activation phrase:") as text + var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "") + phrase = replace_characters(phrase, replacechars) + usr.mind.store_memory("Explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', say [src.phrase] to attempt to activate.", 0, 0) + usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', say [src.phrase] to attempt to activate." + listening_objects |= src + return 1 + +/obj/item/weapon/implant/explosive/emp_act(severity) + if (malfunction) + return + malfunction = MALFUNCTION_TEMPORARY + switch (severity) + if (2.0) //Weak EMP will make implant tear limbs off. + if (prob(50)) + small_boom() + if (1.0) //strong EMP will melt implant either making it go off, or disarming it + if (prob(70)) + if (prob(50)) + small_boom() + else + if (prob(50)) + activate() //50% chance of bye bye + else + meltdown() //50% chance of implant disarming + spawn (20) + malfunction-- + +/obj/item/weapon/implant/explosive/islegal() + return 0 + +/obj/item/weapon/implant/explosive/proc/small_boom() + if (ishuman(imp_in) && part) + imp_in.visible_message("Something beeps inside [imp_in][part ? "'s [part.name]" : ""]!") + playsound(loc, 'sound/items/countdown.ogg', 75, 1, -3) + spawn(25) + if (ishuman(imp_in) && part) + //No tearing off these parts since it's pretty much killing + //and you can't replace groins + if (istype(part,/obj/item/organ/external/chest) || \ + istype(part,/obj/item/organ/external/groin) || \ + istype(part,/obj/item/organ/external/head)) + part.createwound(BRUISE, 60) //mangle them instead + else + part.droplimb(0,DROPLIMB_BLUNT) + explosion(get_turf(imp_in), -1, -1, 2, 3) + qdel(src) /obj/item/weapon/implant/chem name = "chemical implant" desc = "Injects things." allow_reagents = 1 - get_data() - var/dat = {" +/obj/item/weapon/implant/chem/get_data() + var/dat = {" Implant Specifications:
    Name: Robust Corp MJ-420 Prisoner Management Implant
    Life: Deactivates upon death but remains within the body.
    @@ -274,55 +276,55 @@ the implant releases the chemicals directly into the blood stream.
    Can only be loaded while still in its original case.
    Integrity: Implant will last so long as the subject is alive. However, if the subject suffers from malnutrition,
    the implant may become unstable and either pre-maturely inject the subject or simply break."} - return dat + return dat - New() - ..() - var/datum/reagents/R = new/datum/reagents(50) - reagents = R - R.my_atom = src +/obj/item/weapon/implant/chem/New() + ..() + var/datum/reagents/R = new/datum/reagents(50) + reagents = R + R.my_atom = src - trigger(emote, source as mob) - if(emote == "deathgasp") - src.activate(src.reagents.total_volume) +/obj/item/weapon/implant/chem/trigger(emote, source as mob) + if(emote == "deathgasp") + src.activate(src.reagents.total_volume) + return + + +/obj/item/weapon/implant/chem/activate(var/cause) + if((!cause) || (!src.imp_in)) return 0 + var/mob/living/carbon/R = src.imp_in + src.reagents.trans_to_mob(R, cause, CHEM_BLOOD) + R << "You hear a faint *beep*." + if(!src.reagents.total_volume) + R << "You hear a faint click from your chest." + spawn(0) + qdel(src) + return + +/obj/item/weapon/implant/chem/emp_act(severity) + if (malfunction) return + malfunction = MALFUNCTION_TEMPORARY + switch(severity) + if(1) + if(prob(60)) + activate(20) + if(2) + if(prob(30)) + activate(5) - activate(var/cause) - if((!cause) || (!src.imp_in)) return 0 - var/mob/living/carbon/R = src.imp_in - src.reagents.trans_to_mob(R, cause, CHEM_BLOOD) - R << "You hear a faint *beep*." - if(!src.reagents.total_volume) - R << "You hear a faint click from your chest." - spawn(0) - qdel(src) - return - - emp_act(severity) - if (malfunction) - return - malfunction = MALFUNCTION_TEMPORARY - - switch(severity) - if(1) - if(prob(60)) - activate(20) - if(2) - if(prob(30)) - activate(5) - - spawn(20) - malfunction-- + spawn(20) + malfunction-- /obj/item/weapon/implant/loyalty name = "loyalty implant" desc = "Makes you loyal or such." - get_data() - var/dat = {" +/obj/item/weapon/implant/loyalty/get_data() + var/dat = {" Implant Specifications:
    Name: [company_name] Employee Management Implant
    Life: Ten years.
    @@ -332,20 +334,20 @@ the implant may become unstable and either pre-maturely inject the subject or si Function: Contains a small pod of nanobots that manipulate the host's mental functions.
    Special Features: Will prevent and cure most forms of brainwashing.
    Integrity: Implant will last so long as the nanobots are inside the bloodstream."} - return dat + return dat - implanted(mob/M) - if(!istype(M, /mob/living/carbon/human)) return 0 - var/mob/living/carbon/human/H = M - var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role) - if(antag_data && (antag_data.flags & ANTAG_IMPLANT_IMMUNE)) - H.visible_message("[H] seems to resist the implant!", "You feel the corporate tendrils of [company_name] try to invade your mind!") - return 0 - else - clear_antag_roles(H.mind, 1) - H << "You feel a surge of loyalty towards [company_name]." - return 1 +/obj/item/weapon/implant/loyalty/implanted(mob/M) + if(!istype(M, /mob/living/carbon/human)) return 0 + var/mob/living/carbon/human/H = M + var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role) + if(antag_data && (antag_data.flags & ANTAG_IMPLANT_IMMUNE)) + H.visible_message("[H] seems to resist the implant!", "You feel the corporate tendrils of [company_name] try to invade your mind!") + return 0 + else + clear_antag_roles(H.mind, 1) + H << "You feel a surge of loyalty towards [company_name]." + return 1 /obj/item/weapon/implant/adrenalin @@ -353,8 +355,8 @@ the implant may become unstable and either pre-maturely inject the subject or si desc = "Removes all stuns and knockdowns." var/uses - get_data() - var/dat = {" +/obj/item/weapon/implant/adrenalin/get_data() + var/dat = {" Implant Specifications:
    Name: Cybersun Industries Adrenalin Implant
    Life: Five days.
    @@ -364,25 +366,26 @@ the implant may become unstable and either pre-maturely inject the subject or si Function: Contains nanobots to stimulate body to mass-produce Adrenalin.
    Special Features: Will prevent and cure most forms of brainwashing.
    Integrity: Implant can only be used three times before the nanobots are depleted."} - return dat + return dat - trigger(emote, mob/source as mob) - if (src.uses < 1) return 0 - if (emote == "pale") - src.uses-- - source << "You feel a sudden surge of energy!" - source.SetStunned(0) - source.SetWeakened(0) - source.SetParalysis(0) +/obj/item/weapon/implant/adrenalin/trigger(emote, mob/source as mob) + if (src.uses < 1) return 0 + if (emote == "pale") + src.uses-- + source << "You feel a sudden surge of energy!" + source.SetStunned(0) + source.SetWeakened(0) + source.SetParalysis(0) - return + return - implanted(mob/source) - source.mind.store_memory("A implant can be activated by using the pale emote, say *pale to attempt to activate.", 0, 0) - source << "The implanted freedom implant can be activated by using the pale emote, say *pale to attempt to activate." - return 1 +/obj/item/weapon/implant/adrenalin/implanted(mob/source) + source.mind.store_memory("A implant can be activated by using the pale emote, say *pale to attempt to activate.", 0, 0) + source << "The implanted freedom implant can be activated by using the pale emote, say *pale to attempt to activate." + listening_objects |= src + return 1 /obj/item/weapon/implant/death_alarm @@ -390,8 +393,8 @@ the implant may become unstable and either pre-maturely inject the subject or si desc = "An alarm which monitors host vital signs and transmits a radio message upon death." var/mobname = "Will Robinson" - get_data() - var/dat = {" +/obj/item/weapon/implant/death_alarm/get_data() + var/dat = {" Implant Specifications:
    Name: [company_name] \"Profit Margin\" Class Employee Lifesign Sensor
    Life: Activates upon death.
    @@ -401,65 +404,65 @@ the implant may become unstable and either pre-maturely inject the subject or si Function: Contains a compact radio signaler that triggers when the host's lifesigns cease.
    Special Features: Alerts crew to crewmember death.
    Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} - return dat + return dat - process() - if (!implanted) return - var/mob/M = imp_in +/obj/item/weapon/implant/death_alarm/process() + if (!implanted) return + var/mob/M = imp_in - if(isnull(M)) // If the mob got gibbed - activate() - else if(M.stat == 2) - activate("death") + if(isnull(M)) // If the mob got gibbed + activate() + else if(M.stat == 2) + activate("death") - activate(var/cause) - var/mob/M = imp_in - var/area/t = get_area(M) - switch (cause) - if("death") - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) - if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) ) - //give the syndies a bit of stealth - a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Security") - a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical") - else - a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Security") - a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical") - qdel(a) - processing_objects.Remove(src) - if ("emp") - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) - var/name = prob(50) ? t.name : pick(teleportlocs) - a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Security") - a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical") - qdel(a) +/obj/item/weapon/implant/death_alarm/activate(var/cause) + var/mob/M = imp_in + var/area/t = get_area(M) + switch (cause) + if("death") + var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) + if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) ) + //give the syndies a bit of stealth + a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Security") + a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical") else - var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) - a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Security") - a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical") - qdel(a) - processing_objects.Remove(src) - - emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this - if (malfunction) //so I'm just going to add a meltdown chance here - return - malfunction = MALFUNCTION_TEMPORARY - - activate("emp") //let's shout that this dude is dead - if(severity == 1) - if(prob(40)) //small chance of obvious meltdown - meltdown() - else if (prob(60)) //but more likely it will just quietly die - malfunction = MALFUNCTION_PERMANENT + a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Security") + a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical") + qdel(a) + processing_objects.Remove(src) + if ("emp") + var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) + var/name = prob(50) ? t.name : pick(teleportlocs) + a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Security") + a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical") + qdel(a) + else + var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) + a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Security") + a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical") + qdel(a) processing_objects.Remove(src) - spawn(20) - malfunction-- +/obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this + if (malfunction) //so I'm just going to add a meltdown chance here + return + malfunction = MALFUNCTION_TEMPORARY - implanted(mob/source as mob) - mobname = source.real_name - processing_objects.Add(src) - return 1 + activate("emp") //let's shout that this dude is dead + if(severity == 1) + if(prob(40)) //small chance of obvious meltdown + meltdown() + else if (prob(60)) //but more likely it will just quietly die + malfunction = MALFUNCTION_PERMANENT + processing_objects.Remove(src) + + spawn(20) + malfunction-- + +/obj/item/weapon/implant/death_alarm/implanted(mob/source as mob) + mobname = source.real_name + processing_objects.Add(src) + return 1 /obj/item/weapon/implant/compressed name = "compressed matter implant" @@ -468,8 +471,8 @@ the implant may become unstable and either pre-maturely inject the subject or si var/activation_emote = "sigh" var/obj/item/scanned = null - get_data() - var/dat = {" +/obj/item/weapon/implant/compressed/get_data() + var/dat = {" Implant Specifications:
    Name: [company_name] \"Profit Margin\" Class Employee Lifesign Sensor
    Life: Activates upon death.
    @@ -479,30 +482,31 @@ the implant may become unstable and either pre-maturely inject the subject or si Function: Contains a compact radio signaler that triggers when the host's lifesigns cease.
    Special Features: Alerts crew to crewmember death.
    Integrity: Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."} - return dat + return dat - trigger(emote, mob/source as mob) - if (src.scanned == null) - return 0 - - if (emote == src.activation_emote) - source << "The air glows as \the [src.scanned.name] uncompresses." - activate() - - activate() - var/turf/t = get_turf(src) - if (imp_in) - imp_in.put_in_hands(scanned) - else - scanned.loc = t - qdel(src) - - implanted(mob/source as mob) - src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") - if (source.mind) - source.mind.store_memory("Compressed matter implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) - source << "The implanted compressed matter implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." - return 1 - - islegal() +/obj/item/weapon/implant/compressed/trigger(emote, mob/source as mob) + if (src.scanned == null) return 0 + + if (emote == src.activation_emote) + source << "The air glows as \the [src.scanned.name] uncompresses." + activate() + +/obj/item/weapon/implant/compressed/activate() + var/turf/t = get_turf(src) + if (imp_in) + imp_in.put_in_hands(scanned) + else + scanned.loc = t + qdel(src) + +/obj/item/weapon/implant/compressed/implanted(mob/source as mob) + src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") + if (source.mind) + source.mind.store_memory("Compressed matter implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) + source << "The implanted compressed matter implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." + listening_objects |= src + return 1 + +/obj/item/weapon/implant/compressed/islegal() + return 0 diff --git a/code/game/objects/items/weapons/implants/implantfreedom.dm b/code/game/objects/items/weapons/implants/implantfreedom.dm index 5131961060c..3913ebf1b26 100644 --- a/code/game/objects/items/weapons/implants/implantfreedom.dm +++ b/code/game/objects/items/weapons/implants/implantfreedom.dm @@ -8,53 +8,54 @@ var/uses = 1.0 - New() - src.activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") - src.uses = rand(1, 5) - ..() - return +/obj/item/weapon/implant/freedom/New() + src.activation_emote = pick("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") + src.uses = rand(1, 5) + ..() + return - trigger(emote, mob/living/carbon/source as mob) - if (src.uses < 1) return 0 - if (emote == src.activation_emote) - src.uses-- - source << "You feel a faint click." - if (source.handcuffed) - var/obj/item/weapon/W = source.handcuffed - source.handcuffed = null - if(source.buckled && source.buckled.buckle_require_restraints) - source.buckled.unbuckle_mob() - source.update_inv_handcuffed() - if (source.client) - source.client.screen -= W +/obj/item/weapon/implant/freedom/trigger(emote, mob/living/carbon/source as mob) + if (src.uses < 1) return 0 + if (emote == src.activation_emote) + src.uses-- + source << "You feel a faint click." + if (source.handcuffed) + var/obj/item/weapon/W = source.handcuffed + source.handcuffed = null + if(source.buckled && source.buckled.buckle_require_restraints) + source.buckled.unbuckle_mob() + source.update_inv_handcuffed() + if (source.client) + source.client.screen -= W + if (W) + W.loc = source.loc + dropped(source) if (W) - W.loc = source.loc - dropped(source) - if (W) - W.layer = initial(W.layer) - if (source.legcuffed) - var/obj/item/weapon/W = source.legcuffed - source.legcuffed = null - source.update_inv_legcuffed() - if (source.client) - source.client.screen -= W + W.layer = initial(W.layer) + if (source.legcuffed) + var/obj/item/weapon/W = source.legcuffed + source.legcuffed = null + source.update_inv_legcuffed() + if (source.client) + source.client.screen -= W + if (W) + W.loc = source.loc + dropped(source) if (W) - W.loc = source.loc - dropped(source) - if (W) - W.layer = initial(W.layer) - return + W.layer = initial(W.layer) + return - implanted(mob/living/carbon/source) - source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) - source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." - return 1 +/obj/item/weapon/implant/freedom/implanted(mob/living/carbon/source) + source.mind.store_memory("Freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) + source << "The implanted freedom implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." + listening_objects |= src + return 1 - get_data() - var/dat = {" +/obj/item/weapon/implant/freedom/get_data() + var/dat = {" Implant Specifications:
    Name: Freedom Beacon
    Life: optimum 5 uses
    @@ -68,4 +69,4 @@ mechanisms
    Integrity: The battery is extremely weak and commonly after injection its life can drive down to only 1 use.
    No Implant Specifics"} - return dat + return dat diff --git a/code/game/objects/items/weapons/implants/implantuplink.dm b/code/game/objects/items/weapons/implants/implantuplink.dm index f38daa4085e..785fc64f75e 100644 --- a/code/game/objects/items/weapons/implants/implantuplink.dm +++ b/code/game/objects/items/weapons/implants/implantuplink.dm @@ -15,6 +15,7 @@ activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink") source.mind.store_memory("Uplink implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate.", 0, 0) source << "The implanted uplink implant can be activated by using the [src.activation_emote] emote, say *[src.activation_emote] to attempt to activate." + listening_objects |= src return 1 diff --git a/code/game/objects/items/weapons/material/bats.dm b/code/game/objects/items/weapons/material/bats.dm index d622cc2f280..484ce5c9038 100644 --- a/code/game/objects/items/weapons/material/bats.dm +++ b/code/game/objects/items/weapons/material/bats.dm @@ -3,7 +3,6 @@ desc = "HOME RUN!" icon_state = "metalbat0" base_icon = "metalbat" - item_state = "metalbat" throwforce = 7 attack_verb = list("smashed", "beaten", "slammed", "smacked", "struck", "battered", "bonked") hitsound = 'sound/weapons/genhit3.ogg' diff --git a/code/game/objects/items/weapons/material/foam.dm b/code/game/objects/items/weapons/material/foam.dm index 0421161cd61..a16d81920f8 100644 --- a/code/game/objects/items/weapons/material/foam.dm +++ b/code/game/objects/items/weapons/material/foam.dm @@ -38,3 +38,6 @@ /obj/item/weapon/material/twohanded/fireaxe/foam/New(var/newloc) ..(newloc,"foam") + +/obj/item/weapon/material/twohanded/fireaxe/foam/afterattack() + return \ No newline at end of file diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm index 6672d488ded..7b70013a0d5 100644 --- a/code/game/objects/items/weapons/material/kitchen.dm +++ b/code/game/objects/items/weapons/material/kitchen.dm @@ -1,6 +1,6 @@ /obj/item/weapon/material/kitchen icon = 'icons/obj/kitchen.dmi' - + /* * Utensils */ diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index 0ddf3fa8943..f49d16c0348 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -72,7 +72,6 @@ name = "meat hook" desc = "A sharp, metal hook what sticks into things." icon_state = "hook_knife" - item_state = "hook_knife" /obj/item/weapon/material/knife/ritual name = "ritual knife" diff --git a/code/game/objects/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm index fc9ac7eb32d..73f8b573206 100644 --- a/code/game/objects/items/weapons/material/material_weapons.dm +++ b/code/game/objects/items/weapons/material/material_weapons.dm @@ -10,6 +10,10 @@ w_class = 3 sharp = 0 edge = 0 + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) var/applies_material_colour = 1 var/unbreakable diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index 91d97274f66..0d88c2b3aa7 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -38,6 +38,22 @@ icon = 'icons/obj/weapons.dmi' icon_state = "unathiknife" attack_verb = list("ripped", "torn", "cut") + var hits = 0 + +/obj/item/weapon/material/hatchet/unathiknife/attack(mob/M as mob, mob/user as mob) + if(hits > 0) + return + var/obj/item/I = user.get_inactive_hand() + if(istype(I, /obj/item/weapon/material/hatchet/unathiknife)) + hits ++ + var/obj/item/weapon/W = I + W.attack(M, user) + W.afterattack(M, user) + ..() + +/obj/item/weapon/material/hatchet/unathiknife/afterattack(mob/M as mob, mob/user as mob) + hits = initial(hits) + ..() /obj/item/weapon/material/hatchet/tacknife name = "tactical knife" @@ -64,7 +80,6 @@ desc = "It's used for removing weeds or scratching your back." icon = 'icons/obj/weapons.dmi' icon_state = "hoe" - item_state = "hoe" force_divisor = 0.25 // 5 with weight 20 (steel) thrown_force_divisor = 0.25 // as above w_class = 2 diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm index a8b0ea19a3b..e73bcc8f9c9 100644 --- a/code/game/objects/items/weapons/material/swords.dm +++ b/code/game/objects/items/weapons/material/swords.dm @@ -2,7 +2,6 @@ name = "claymore" desc = "What are you standing around staring at this for? Get to killing!" icon_state = "claymore" - item_state = "claymore" slot_flags = SLOT_BELT force_divisor = 0.7 // 42 when wielded with hardnes 60 (steel) thrown_force_divisor = 0.5 // 10 when thrown with weight 20 (steel) @@ -27,7 +26,6 @@ name = "katana" desc = "Woefully underpowered in D20. This one looks pretty sharp." icon_state = "katana" - item_state = "katana" slot_flags = SLOT_BELT | SLOT_BACK /obj/item/weapon/material/sword/katana/suicide_act(mob/user) diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 2e36eead756..5299ce2a99f 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -93,6 +93,22 @@ attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") applies_material_colour = 0 +/obj/item/weapon/material/twohanded/fireaxe/update_held_icon() + var/mob/living/M = loc + if(istype(M) && !issmall(M) && M.item_is_in_hands(src) && !M.hands_are_full()) + wielded = 1 + pry = 1 + force = force_wielded + name = "[base_name] (wielded)" + update_icon() + else + wielded = 0 + pry = 0 + force = force_unwielded + name = "[base_name]" + update_icon() + ..() + /obj/item/weapon/material/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) if(!proximity) return ..() diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index deed1aa2196..ae8250dd02c 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -2,7 +2,6 @@ name = "chain of command" desc = "A tool used by great men to placate the frothing masses." icon_state = "chain" - item_state = "chain" flags = CONDUCT slot_flags = SLOT_BELT force = 10 diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 7f7c75e8177..2903c7f9715 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -32,6 +32,10 @@ /obj/item/weapon/shield name = "shield" var/base_block_chance = 50 + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) /obj/item/weapon/shield/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") if(user.incapacitated()) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 9eebc7b3f02..cdbf4771017 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -1,4 +1,3 @@ - /* * Backpack */ @@ -6,17 +5,7 @@ /obj/item/weapon/storage/backpack name = "backpack" desc = "You wear this on your back and put items into it." - item_icons = list( - slot_l_hand_str = 'icons/mob/items/lefthand_backpacks.dmi', - slot_r_hand_str = 'icons/mob/items/righthand_backpacks.dmi', - ) icon_state = "backpack" - item_state = null - //most backpacks use the default backpack state for inhand overlays - item_state_slots = list( - slot_l_hand_str = "backpack", - slot_r_hand_str = "backpack", - ) sprite_sheets = list( "Teshari" = 'icons/mob/species/seromi/back.dmi' ) @@ -76,7 +65,7 @@ name = "\improper Santa's gift bag" desc = "Space Santa uses this to deliver toys to all the nice children in space in Christmas! Wow, it's pretty big!" icon_state = "giftbag0" - item_state = "giftbag" + item_state_slots = list(slot_r_hand_str = "giftbag", slot_l_hand_str = "giftbag") w_class = 4.0 max_w_class = 3 max_storage_space = 400 // can store a ton of shit! @@ -91,31 +80,26 @@ name = "Giggles von Honkerton" desc = "It's a backpack made by Honk! Co." icon_state = "clownpack" - item_state_slots = null /obj/item/weapon/storage/backpack/medic name = "medical backpack" desc = "It's a backpack especially designed for use in a sterile environment." icon_state = "medicalpack" - item_state_slots = null /obj/item/weapon/storage/backpack/security name = "security backpack" desc = "It's a very robust backpack." icon_state = "securitypack" - item_state_slots = null /obj/item/weapon/storage/backpack/captain name = "captain's backpack" desc = "It's a special backpack made exclusively for officers." icon_state = "captainpack" - item_state_slots = null /obj/item/weapon/storage/backpack/industrial name = "industrial backpack" desc = "It's a tough backpack for the daily grind of station life." icon_state = "engiepack" - item_state_slots = null /obj/item/weapon/storage/backpack/toxins name = "laboratory backpack" @@ -150,10 +134,6 @@ name = "dufflebag" desc = "A large dufflebag for holding extra things." icon_state = "duffle" - item_state_slots = list( - slot_l_hand_str = "duffle", - slot_r_hand_str = "duffle", - ) slowdown = 1 max_storage_space = 36 @@ -161,74 +141,42 @@ name = "black dufflebag" desc = "A large dufflebag for holding extra tactical supplies." icon_state = "duffle_syndie" - item_state_slots = list( - slot_l_hand_str = "duffle_syndiemed", - slot_r_hand_str = "duffle_syndiemed", - ) slowdown = 0 /obj/item/weapon/storage/backpack/dufflebag/syndie/med name = "medical dufflebag" desc = "A large dufflebag for holding extra tactical medical supplies." icon_state = "duffle_syndiemed" - item_state_slots = list( - slot_l_hand_str = "duffle_syndiemed", - slot_r_hand_str = "duffle_syndiemed", - ) /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo name = "ammunition dufflebag" desc = "A large dufflebag for holding extra weapons ammunition and supplies." icon_state = "duffle_syndieammo" - item_state_slots = list( - slot_l_hand_str = "duffle_syndieammo", - slot_r_hand_str = "duffle_syndieammo", - ) /obj/item/weapon/storage/backpack/dufflebag/captain name = "captain's dufflebag" desc = "A large dufflebag for holding extra captainly goods." icon_state = "duffle_captain" - item_state_slots = list( - slot_l_hand_str = "duffle_captain", - slot_r_hand_str = "duffle_captain", - ) /obj/item/weapon/storage/backpack/dufflebag/med name = "medical dufflebag" desc = "A large dufflebag for holding extra medical supplies." icon_state = "duffle_med" - item_state_slots = list( - slot_l_hand_str = "duffle_med", - slot_r_hand_str = "duffle_med", - ) /obj/item/weapon/storage/backpack/dufflebag/emt name = "EMT dufflebag" desc = "A large dufflebag for holding extra medical supplies. This one has reflective stripes!" icon_state = "duffle_emt" - item_state_slots = list( - slot_l_hand_str = "duffle_emt", - slot_r_hand_str = "duffle_emt", - ) /obj/item/weapon/storage/backpack/dufflebag/sec name = "security dufflebag" desc = "A large dufflebag for holding extra security supplies and ammunition." icon_state = "duffle_sec" - item_state_slots = list( - slot_l_hand_str = "duffle_sec", - slot_r_hand_str = "duffle_sec", - ) /obj/item/weapon/storage/backpack/dufflebag/eng name = "industrial dufflebag" desc = "A large dufflebag for holding extra tools and supplies." icon_state = "duffle_eng" - item_state_slots = list( - slot_l_hand_str = "duffle_eng", - slot_r_hand_str = "duffle_eng", - ) /* * Satchel Types @@ -238,6 +186,7 @@ name = "leather satchel" desc = "It's a very fancy satchel made with fine leather." icon_state = "satchel" + item_state_slots = list(slot_r_hand_str = "briefcase", slot_l_hand_str = "briefcase") /obj/item/weapon/storage/backpack/satchel/withwallet New() @@ -253,48 +202,43 @@ name = "industrial satchel" desc = "A tough satchel with extra pockets." icon_state = "satchel-eng" - item_state_slots = list( - slot_l_hand_str = "engiepack", - slot_r_hand_str = "engiepack", - ) + item_state_slots = list(slot_r_hand_str = "engiepack", slot_l_hand_str = "engiepack") /obj/item/weapon/storage/backpack/satchel/med name = "medical satchel" desc = "A sterile satchel used in medical departments." icon_state = "satchel-med" - item_state_slots = list( - slot_l_hand_str = "medicalpack", - slot_r_hand_str = "medicalpack", - ) + item_state_slots = list(slot_r_hand_str = "medicalpack", slot_l_hand_str = "medicalpack") /obj/item/weapon/storage/backpack/satchel/vir name = "virologist satchel" desc = "A sterile satchel with virologist colours." icon_state = "satchel-vir" + item_state_slots = list(slot_r_hand_str = "viropack", slot_l_hand_str = "viropack") /obj/item/weapon/storage/backpack/satchel/chem name = "chemist satchel" desc = "A sterile satchel with chemist colours." icon_state = "satchel-chem" + item_state_slots = list(slot_r_hand_str = "chempack", slot_l_hand_str = "chempack") /obj/item/weapon/storage/backpack/satchel/gen name = "geneticist satchel" desc = "A sterile satchel with geneticist colours." icon_state = "satchel-gen" + item_state_slots = list(slot_r_hand_str = "genpack", slot_l_hand_str = "genpack") /obj/item/weapon/storage/backpack/satchel/tox name = "scientist satchel" desc = "Useful for holding research materials." icon_state = "satchel-tox" + item_state_slots = list(slot_r_hand_str = "toxpack", slot_l_hand_str = "toxpack") /obj/item/weapon/storage/backpack/satchel/sec name = "security satchel" desc = "A robust satchel for security related needs." icon_state = "satchel-sec" - item_state_slots = list( - slot_l_hand_str = "securitypack", - slot_r_hand_str = "securitypack", - ) + item_state_slots = list(slot_r_hand_str = "securitypack", slot_l_hand_str = "securitypack") /obj/item/weapon/storage/backpack/satchel/hyd name = "hydroponics satchel" @@ -305,20 +249,14 @@ name = "captain's satchel" desc = "An exclusive satchel for officers." icon_state = "satchel-cap" - item_state_slots = list( - slot_l_hand_str = "satchel-cap", - slot_r_hand_str = "satchel-cap", - ) + item_state_slots = list(slot_r_hand_str = "captainpack", slot_l_hand_str = "captainpack") //ERT backpacks. /obj/item/weapon/storage/backpack/ert name = "emergency response team backpack" desc = "A spacious backpack with lots of pockets, used by members of the Emergency Response Team." icon_state = "ert_commander" - item_state_slots = list( - slot_l_hand_str = "securitypack", - slot_r_hand_str = "securitypack", - ) + item_state_slots = list(slot_r_hand_str = "securitypack", slot_l_hand_str = "securitypack") //Commander /obj/item/weapon/storage/backpack/ert/commander diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 476bf1a67eb..12eca53626d 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -30,7 +30,7 @@ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!" icon = 'icons/obj/janitor.dmi' icon_state = "trashbag0" - item_state = "trashbag" + item_state_slots = list(slot_r_hand_str = "trashbag", slot_l_hand_str = "trashbag") w_class = 4 max_w_class = 2 @@ -56,7 +56,6 @@ desc = "It's a very flimsy, very noisy alternative to a bag." icon = 'icons/obj/trash.dmi' icon_state = "plasticbag" - item_state = "plasticbag" w_class = 4 max_w_class = 2 @@ -169,7 +168,6 @@ update_icon() return 1 - // Sets up numbered display to show the stack size of each stored mineral // NOTE: numbered display is turned off currently because it's broken orient2hud(mob/user as mob) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index c0469cd9f8c..08c7c56f4f2 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -2,8 +2,7 @@ name = "belt" desc = "Can hold various things." icon = 'icons/obj/clothing/belts.dmi' - icon_state = "utilitybelt" - item_state = "utility" + icon_state = "utility" storage_slots = 7 max_storage_space = 28 //This should ensure belts always have enough room to store whatever. max_w_class = 3 @@ -28,12 +27,10 @@ var/mob/M = src.loc M.update_inv_belt() - /obj/item/weapon/storage/belt/utility name = "tool-belt" //Carn: utility belt is nicer, but it bamboozles the text parsing. desc = "Can hold various tools." - icon_state = "utilitybelt" - item_state = "utility" + icon_state = "utility" can_hold = list( ///obj/item/weapon/combitool, /obj/item/weapon/crowbar, @@ -50,17 +47,17 @@ /obj/item/clothing/gloves, /obj/item/device/pda, /obj/item/device/megaphone, - /obj/item/taperoll/engineering, + /obj/item/taperoll, /obj/item/device/radio/headset, /obj/item/device/robotanalyzer, /obj/item/weapon/material/minihoe, /obj/item/weapon/material/hatchet, /obj/item/device/analyzer/plant_analyzer, /obj/item/weapon/extinguisher/mini, - /obj/item/device/flashlight/maglight + /obj/item/device/flashlight/maglight, + /obj/item/weapon/tape_roll, ) - /obj/item/weapon/storage/belt/utility/full/New() ..() new /obj/item/weapon/screwdriver(src) @@ -70,7 +67,6 @@ new /obj/item/weapon/wirecutters(src) new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange")) - /obj/item/weapon/storage/belt/utility/atmostech/New() ..() new /obj/item/weapon/screwdriver(src) @@ -80,13 +76,10 @@ new /obj/item/weapon/wirecutters(src) new /obj/item/device/t_scanner(src) - - /obj/item/weapon/storage/belt/medical name = "medical belt" desc = "Can hold various medical equipment." - icon_state = "medicalbelt" - item_state = "medical" + icon_state = "medical" can_hold = list( /obj/item/device/healthanalyzer, /obj/item/weapon/dnainjector, @@ -101,6 +94,7 @@ /obj/item/stack/medical, /obj/item/device/radio/headset, /obj/item/device/pda, + /obj/item/taperoll, /obj/item/device/megaphone, /obj/item/device/flashlight/pen, /obj/item/clothing/mask/surgical, @@ -116,14 +110,12 @@ /obj/item/weapon/storage/belt/medical/emt name = "EMT utility belt" desc = "A sturdy black webbing belt with attached pouches." - icon_state = "emsbelt" - item_state = "emsbelt" + icon_state = "ems" /obj/item/weapon/storage/belt/security name = "security belt" desc = "Can hold security gear like handcuffs and flashes." - icon_state = "securitybelt" - item_state = "security" + icon_state = "security" max_w_class = 3 can_hold = list( /obj/item/weapon/grenade, @@ -146,15 +138,14 @@ /obj/item/weapon/melee, /obj/item/clothing/accessory/badge, /obj/item/weapon/gun/projectile/sec, - /obj/item/taperoll/police, + /obj/item/taperoll, /obj/item/weapon/gun/projectile/colt/detective ) /obj/item/weapon/storage/belt/detective name = "forensic utility belt" desc = "A belt for holding forensics equipment." - icon_state = "securitybelt" - item_state = "security" + icon_state = "security" storage_slots = 7 max_w_class = 3 can_hold = list( @@ -181,7 +172,7 @@ /obj/item/device/megaphone, /obj/item/device/radio/headset, /obj/item/clothing/gloves, - /obj/item/taperoll/police, + /obj/item/taperoll, /obj/item/weapon/reagent_containers/spray/pepper, /obj/item/weapon/handcuffs, /obj/item/device/flash, @@ -194,8 +185,7 @@ /obj/item/weapon/storage/belt/soulstone name = "soul stone belt" desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away" - icon_state = "soulstonebelt" - item_state = "soulstonebelt" + icon_state = "soulstone" storage_slots = 6 can_hold = list( /obj/item/device/soulstone @@ -214,8 +204,7 @@ /obj/item/weapon/storage/belt/champion name = "championship belt" desc = "Proves to the world that you are the strongest!" - icon_state = "championbelt" - item_state = "champion" + icon_state = "champion" storage_slots = 1 can_hold = list( "/obj/item/clothing/mask/luchador" @@ -224,8 +213,7 @@ /obj/item/weapon/storage/belt/security/tactical name = "combat belt" desc = "Can hold security gear like handcuffs and flashes, with more pouches for more storage." - icon_state = "swatbelt" - item_state = "swatbelt" + icon_state = "swat" storage_slots = 9 max_w_class = 3 max_storage_space = 28 @@ -234,13 +222,11 @@ name = "combat belt" desc = "Can hold security gear like handcuffs and flashes, with more pouches for more storage." icon_state = "bandolier" - item_state = "bandolier" /obj/item/weapon/storage/belt/janitor name = "janitorial belt" desc = "A belt used to hold most janitorial supplies." - icon_state = "janibelt" - item_state = "janibelt" + icon_state = "janitor" storage_slots = 7 max_w_class = 3 can_hold = list( @@ -256,6 +242,36 @@ /obj/item/weapon/light/tube, /obj/item/weapon/flame/lighter, /obj/item/device/megaphone, + /obj/item/taperoll, /obj/item/weapon/reagent_containers/spray, /obj/item/weapon/soap + ) + +/obj/item/weapon/storage/belt/archaeology + name = "excavation gear-belt" + desc = "Can hold various excavation gear." + icon_state = "gear" + can_hold = list( + /obj/item/weapon/storage/box/samplebags, + /obj/item/device/core_sampler, + /obj/item/device/beacon_locator, + /obj/item/device/radio/beacon, + /obj/item/device/gps, + /obj/item/device/measuring_tape, + /obj/item/device/flashlight, + /obj/item/weapon/pickaxe, + /obj/item/device/depth_scanner, + /obj/item/device/camera, + /obj/item/weapon/paper, + /obj/item/weapon/photo, + /obj/item/weapon/folder, + /obj/item/weapon/pen, + /obj/item/weapon/folder, + /obj/item/weapon/clipboard, + /obj/item/weapon/anodevice, + /obj/item/clothing/glasses, + /obj/item/weapon/wrench, + /obj/item/weapon/storage/box/excavation, + /obj/item/weapon/anobattery, + /obj/item/device/ano_scanner ) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index a1b6e17b5a8..8f904972dea 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -23,7 +23,7 @@ name = "box" desc = "It's just an ordinary box." icon_state = "box" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") var/foldable = /obj/item/stack/material/cardboard // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard max_w_class = 2 @@ -35,20 +35,20 @@ if ( contents.len ) return - if ( !ispath(src.foldable) ) + if ( !ispath(foldable) ) return var/found = 0 // Close any open UI windows first for(var/mob/M in range(1)) if (M.s_active == src) - src.close(M) + close(M) if ( M == user ) found = 1 if ( !found ) // User is too far away return // Now make the cardboard user << "You fold [src] flat." - new src.foldable(get_turf(src)) + new foldable(get_turf(src)) qdel(src) /obj/item/weapon/storage/box/survival/New() @@ -125,7 +125,7 @@ name = "box of blank shells" desc = "It has a picture of a gun and several warning symbols on the front." icon_state = "blankshot_box" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") /obj/item/weapon/storage/box/blanks/New() ..() @@ -136,7 +136,7 @@ name = "box of beanbag shells" desc = "It has a picture of a gun and several warning symbols on the front.
    WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "beanshot_box" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") /obj/item/weapon/storage/box/beanbags/New() ..() @@ -147,7 +147,7 @@ name = "box of shotgun slugs" desc = "It has a picture of a gun and several warning symbols on the front.
    WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "lethalshellshot_box" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") /obj/item/weapon/storage/box/shotgunammo/New() ..() @@ -158,7 +158,7 @@ name = "box of shotgun shells" desc = "It has a picture of a gun and several warning symbols on the front.
    WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "lethalslug_box" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") /obj/item/weapon/storage/box/shotgunshells/New() ..() @@ -169,7 +169,7 @@ name = "box of illumination shells" desc = "It has a picture of a gun and several warning symbols on the front.
    WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "illumshot_box" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") /obj/item/weapon/storage/box/flashshells/New() ..() @@ -180,7 +180,7 @@ name = "box of stun shells" desc = "It has a picture of a gun and several warning symbols on the front.
    WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "stunshot_box" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") /obj/item/weapon/storage/box/stunshells/New() ..() @@ -191,7 +191,7 @@ name = "box of practice shells" desc = "It has a picture of a gun and several warning symbols on the front.
    WARNING: Live ammunition. Misuse may result in serious injury or death." icon_state = "blankshot_box" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") /obj/item/weapon/storage/box/practiceshells/New() ..() @@ -224,7 +224,7 @@ /obj/item/weapon/storage/box/emps/New() ..() - for(var/i = 1 to 5) + for(var/i = 1 to 7) new /obj/item/weapon/grenade/empgrenade(src) /obj/item/weapon/storage/box/empslite @@ -234,7 +234,7 @@ /obj/item/weapon/storage/box/empslite/New() ..() - for(var/i = 1 to 5) + for(var/i = 1 to 7) new /obj/item/weapon/grenade/empgrenade/low_yield(src) /obj/item/weapon/storage/box/smokes @@ -249,22 +249,32 @@ /obj/item/weapon/storage/box/anti_photons name = "box of anti-photon grenades" - desc = "A box containing 5 experimental photon disruption grenades." + desc = "A box containing 7 experimental photon disruption grenades." icon_state = "flashbang" /obj/item/weapon/storage/box/anti_photons/New() ..() - for(var/i = 1 to 5) + for(var/i = 1 to 7) new /obj/item/weapon/grenade/anti_photon(src) /obj/item/weapon/storage/box/frags name = "box of fragmentation grenades (WARNING)" - desc = "A box containing 5 military grade fragmentation grenades.
    WARNING: These devices are extremely dangerous and can cause limb loss or death in repeated use." + desc = "A box containing 7 military grade fragmentation grenades.
    WARNING: These devices are extremely dangerous and can cause limb loss or death in repeated use." icon_state = "frag" /obj/item/weapon/storage/box/frags/New() ..() - for(var/i = 1 to 5) + for(var/i = 1 to 7) + new /obj/item/weapon/grenade/explosive(src) + +/obj/item/weapon/storage/box/frags_half_box + name = "box of fragmentation grenades (WARNING)" + desc = "A box containing 4 military grade fragmentation grenades.
    WARNING: These devices are extremely dangerous and can cause limb loss or death in repeated use." + icon_state = "frag" + +/obj/item/weapon/storage/box/frags_half_box/New() + ..() + for(var/i = 1 to 4) new /obj/item/weapon/grenade/explosive(src) /obj/item/weapon/storage/box/metalfoam @@ -316,7 +326,7 @@ name = "death alarm kit" desc = "Box of stuff used to implant death alarms." icon_state = "implant" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") /obj/item/weapon/storage/box/cdeathalarm_kit/New() ..() @@ -371,7 +381,7 @@ /obj/item/weapon/storage/box/monkeycubes/New() ..() - if(src.type == /obj/item/weapon/storage/box/monkeycubes) + if(type == /obj/item/weapon/storage/box/monkeycubes) for(var/i = 1 to 4) new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src) @@ -468,7 +478,6 @@ desc = "A small box of 'Space-Proof' premium matches." icon = 'icons/obj/cigarettes.dmi' icon_state = "matchbox" - item_state = "zippo" w_class = 1 slot_flags = SLOT_BELT can_hold = list(/obj/item/weapon/flame/match) @@ -502,7 +511,7 @@ icon = 'icons/obj/storage.dmi' icon_state = "light" desc = "This box is shaped on the inside so that only light tubes and bulbs fit." - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") storage_slots=21 can_hold = list(/obj/item/weapon/light/tube, /obj/item/weapon/light/bulb) max_storage_space = 42 //holds 21 items of w_class 2 @@ -538,13 +547,29 @@ desc = "This nifty shock-resistant device will keep your 'groceries' nice and non-spoiled." icon = 'icons/obj/storage.dmi' icon_state = "portafreezer" - item_state = "medicalpack" + item_state_slots = list(slot_r_hand_str = "medicalpack", slot_l_hand_str = "medicalpack") foldable = null max_w_class = 3 can_hold = list(/obj/item/organ, /obj/item/weapon/reagent_containers/food, /obj/item/weapon/reagent_containers/glass) max_storage_space = 21 use_to_pickup = 1 // for picking up broken bulbs, not that most people will try +/obj/item/weapon/storage/box/freezer/Entered(var/atom/movable/AM) + if(istype(AM, /obj/item/organ)) + var/obj/item/organ/O = AM + O.preserved = 1 + for(var/obj/item/organ/organ in O) + organ.preserved = 1 + ..() + +/obj/item/weapon/storage/box/freezer/Exited(var/atom/movable/AM) + if(istype(AM, /obj/item/organ)) + var/obj/item/organ/O = AM + O.preserved = 0 + for(var/obj/item/organ/organ in O) + organ.preserved = 0 + ..() + /obj/item/weapon/storage/box/ambrosia name = "ambrosia seeds box" desc = "Contains the seeds you need to get a little high." diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index ff3d60aec8a..d80ce0bb9cd 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -2,7 +2,6 @@ name = "briefcase" desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional." icon_state = "briefcase" - item_state = "briefcase" flags = CONDUCT force = 8.0 throw_speed = 1 diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 758ac8dc39c..6fac98f0e86 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -19,8 +19,8 @@ var/icon_type = "donut" /obj/item/weapon/storage/fancy/update_icon(var/itemremoved = 0) - var/total_contents = src.contents.len - itemremoved - src.icon_state = "[src.icon_type]box[total_contents]" + var/total_contents = contents.len - itemremoved + icon_state = "[icon_type]box[total_contents]" return /obj/item/weapon/storage/fancy/examine(mob/user) @@ -28,11 +28,11 @@ return if(contents.len <= 0) - user << "There are no [src.icon_type]s left in the box." + user << "There are no [icon_type]s left in the box." else if(contents.len == 1) - user << "There is one [src.icon_type] left in the box." + user << "There is one [icon_type] left in the box." else - user << "There are [src.contents.len] [src.icon_type]s in the box." + user << "There are [contents.len] [icon_type]s in the box." return @@ -71,7 +71,6 @@ throwforce = 2 slot_flags = SLOT_BELT - /obj/item/weapon/storage/fancy/candle_box/New() ..() for(var/i=1 to 5) @@ -128,7 +127,7 @@ desc = "A ubiquitous brand of cigarettes, found in every major spacefaring corporation in the universe. As mild and flavorless as it gets." icon = 'icons/obj/cigarettes.dmi' icon_state = "cigpacket" - item_state = "cigpacket" + item_state_slots = list(slot_r_hand_str = "cigpacket", slot_l_hand_str = "cigpacket") w_class = 1 throwforce = 2 slot_flags = SLOT_BELT @@ -187,13 +186,11 @@ name = "\improper DromedaryCo packet" desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\"" icon_state = "Dpacket" - item_state = "Dpacket" /obj/item/weapon/storage/fancy/cigarettes/killthroat name = "\improper AcmeCo packet" desc = "A packet of six AcmeCo cigarettes. For those who somehow want to obtain the record for the most amount of cancerous tumors." icon_state = "Bpacket" - item_state = "Bpacket" //Doesn't have an inhand state, but neither does dromedary, so, ya know.. New() ..() @@ -205,37 +202,31 @@ name = "\improper pack of Lucky Stars" desc = "A mellow blend made from synthetic, pod-grown tobacco. The commercial jingle is guaranteed to get stuck in your head." icon_state = "LSpacket" - item_state = "Dpacket" //I actually don't mind cig packs not showing up in the hand. whotf doesn't just keep them in their pockets/coats // /obj/item/weapon/storage/fancy/cigarettes/jerichos name = "\improper pack of Jerichos" desc = "Typically seen dangling from the lips of Martian soldiers and border world hustlers. Tastes like hickory smoke, feels like warm liquid death down your lungs." icon_state = "Jpacket" - item_state = "Dpacket" /obj/item/weapon/storage/fancy/cigarettes/menthols name = "\improper pack of Temperamento Menthols" desc = "With a sharp and natural organic menthol flavor, these Temperamentos are a favorite of NDV crews. Hardly anyone knows they make 'em in non-menthol!" icon_state = "TMpacket" - item_state = "Dpacket" /obj/item/weapon/storage/fancy/cigarettes/carcinomas name = "\improper pack of Carcinoma Angels" desc = "This unknown brand was slated for the chopping block, until they were publicly endorsed by an old Earthling gonzo journalist. The rest is history. They sell a variety for cats, too." icon_state = "CApacket" - item_state = "Dpacket" /obj/item/weapon/storage/fancy/cigarettes/professionals name = "\improper pack of Professional 120s" desc = "Let's face it - if you're smoking these, you're either trying to look upper-class or you're 80 years old. That's the only excuse. They taste disgusting, too." icon_state = "P100packet" - item_state = "Dpacket" /obj/item/weapon/storage/fancy/cigar name = "cigar case" desc = "A case for holding your cigars when you are not smoking them." icon_state = "cigarcase" - item_state = "cigarcase" icon = 'icons/obj/cigarettes.dmi' w_class = 1 throwforce = 2 @@ -273,7 +264,6 @@ storage_slots = 6 can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial) - /obj/item/weapon/storage/fancy/vials/New() ..() for(var/i=1 to 6) @@ -285,7 +275,7 @@ desc = "A locked box for keeping things away from children." icon = 'icons/obj/vialbox.dmi' icon_state = "vialbox0" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") max_w_class = 2 can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial) max_storage_space = 12 //The sum of the w_classes of all the items in this storage item. @@ -297,9 +287,9 @@ update_icon() /obj/item/weapon/storage/lockbox/vials/update_icon(var/itemremoved = 0) - var/total_contents = src.contents.len - itemremoved - src.icon_state = "vialbox[total_contents]" - src.overlays.Cut() + var/total_contents = contents.len - itemremoved + icon_state = "vialbox[total_contents]" + overlays.Cut() if (!broken) overlays += image(icon, src, "led[locked]") if(locked) diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 4bd5592704f..adbb4c2ca84 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -21,7 +21,7 @@ name = "fire first-aid kit" desc = "It's an emergency medical kit for when the toxins lab -spontaneously- burns down." icon_state = "ointment" - item_state = "firstaid-ointment" + item_state_slots = list(slot_r_hand_str = "firstaid-ointment", slot_l_hand_str = "firstaid-ointment") New() ..() @@ -58,7 +58,7 @@ name = "toxin first aid" desc = "Used to treat when you have a high amoutn of toxins in your body." icon_state = "antitoxin" - item_state = "firstaid-toxin" + item_state_slots = list(slot_r_hand_str = "firstaid-toxin", slot_l_hand_str = "firstaid-toxin") New() ..() @@ -79,7 +79,7 @@ name = "oxygen deprivation first aid" desc = "A box full of oxygen goodies." icon_state = "o2" - item_state = "firstaid-o2" + item_state_slots = list(slot_r_hand_str = "firstaid-o2", slot_l_hand_str = "firstaid-o2") New() ..() @@ -97,7 +97,7 @@ name = "advanced first-aid kit" desc = "Contains advanced medical treatments." icon_state = "advfirstaid" - item_state = "firstaid-advanced" + item_state_slots = list(slot_r_hand_str = "firstaid-advanced", slot_l_hand_str = "firstaid-advanced") /obj/item/weapon/storage/firstaid/adv/New() ..() @@ -115,7 +115,7 @@ name = "combat medical kit" desc = "Contains advanced medical treatments." icon_state = "bezerk" - item_state = "firstaid-advanced" + item_state_slots = list(slot_r_hand_str = "firstaid-advanced", slot_l_hand_str = "firstaid-advanced") /obj/item/weapon/storage/firstaid/combat/New() ..() @@ -158,7 +158,7 @@ desc = "It's an airtight container for storing medication." icon_state = "pill_canister" icon = 'icons/obj/chemical.dmi' - item_state = "contsolid" + item_state_slots = list(slot_r_hand_str = "contsolid", slot_l_hand_str = "contsolid") w_class = 2.0 can_hold = list(/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/dice,/obj/item/weapon/paper) allow_quick_gather = 1 diff --git a/code/game/objects/items/weapons/storage/laundry_basket.dm b/code/game/objects/items/weapons/storage/laundry_basket.dm index ffb4867ca68..b8c0cd3a0f5 100644 --- a/code/game/objects/items/weapons/storage/laundry_basket.dm +++ b/code/game/objects/items/weapons/storage/laundry_basket.dm @@ -7,7 +7,7 @@ name = "laundry basket" icon = 'icons/obj/janitor.dmi' icon_state = "laundry-empty" - item_state = "laundry" + item_state_slots = list(slot_r_hand_str = "laundry", slot_l_hand_str = "laundry") desc = "The peak of thousands of years of laundry evolution." w_class = 5 diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 7288d2d038e..4a589ed76e1 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -4,7 +4,7 @@ name = "lockbox" desc = "A locked box." icon_state = "lockbox+l" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit") w_class = 4 max_w_class = 3 max_storage_space = 14 //The sum of the w_classes of all the items in this storage item. diff --git a/code/game/objects/items/weapons/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm index cf1af1ea791..4bd34c52c7a 100644 --- a/code/game/objects/items/weapons/storage/misc.dm +++ b/code/game/objects/items/weapons/storage/misc.dm @@ -1,11 +1,29 @@ -/obj/item/weapon/storage/pill_bottle/dice - name = "pack of dice" - desc = "It's a small container with dice inside." +/obj/item/weapon/storage/pill_bottle/dice //7d6 + name = "bag of dice" + desc = "It's a small bag with dice inside." + icon = 'icons/obj/dice.dmi' + icon_state = "dicebag" - New() - ..() +/obj/item/weapon/storage/pill_bottle/dice/New() + ..() + for(var/i = 1 to 7) new /obj/item/weapon/dice( src ) - new /obj/item/weapon/dice/d20( src ) + +/obj/item/weapon/storage/pill_bottle/dice_nerd //DnD dice + name = "bag of gaming dice" + desc = "It's a small bag with gaming dice inside." + icon = 'icons/obj/dice.dmi' + icon_state = "magicdicebag" + +/obj/item/weapon/storage/pill_bottle/dice_nerd/New() + ..() + new /obj/item/weapon/dice/d4( src ) + new /obj/item/weapon/dice( src ) + new /obj/item/weapon/dice/d8( src ) + new /obj/item/weapon/dice/d10( src ) + new /obj/item/weapon/dice/d12( src ) + new /obj/item/weapon/dice/d20( src ) + new /obj/item/weapon/dice/d100( src ) /* * Donut Box diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 3950ea89093..4727ef61bbd 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -144,7 +144,7 @@ name = "secure briefcase" icon = 'icons/obj/storage.dmi' icon_state = "secure" - item_state = "sec-case" + item_state_slots = list(slot_r_hand_str = "case", slot_l_hand_str = "case") desc = "A large briefcase with a digital locking system." force = 8.0 throw_speed = 1 diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 2df9701436a..06327b27ac4 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -8,6 +8,10 @@ /obj/item/weapon/storage name = "storage" icon = 'icons/obj/storage.dmi' + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi', + ) w_class = 3 show_messages = 1 @@ -348,7 +352,7 @@ if(usr) usr.remove_from_mob(W) usr.update_icons() //update our overlays - W.loc = src + W.forceMove(src) W.on_enter_storage(src) if(usr) if (usr.client && usr.s_active != src) @@ -391,9 +395,9 @@ W.layer = 20 else W.layer = initial(W.layer) - W.loc = new_location + W.forceMove(new_location) else - W.loc = get_turf(src) + W.forceMove(get_turf(src)) if(usr) src.orient2hud(usr) @@ -437,7 +441,7 @@ user << "The tray won't fit in [src]." return else - W.loc = user.loc + W.forceMove(get_turf(user)) if ((user.client && user.s_active != src)) user.client.screen -= W W.dropped(user) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index be8895009fd..7d0161a2fd5 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -3,7 +3,7 @@ desc = "Danger. Very robust." icon = 'icons/obj/storage.dmi' icon_state = "red" - item_state = "toolbox_red" + item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red") flags = CONDUCT force = 10 throwforce = 10 @@ -18,7 +18,7 @@ /obj/item/weapon/storage/toolbox/emergency name = "emergency toolbox" icon_state = "red" - item_state = "toolbox_red" + item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red") /obj/item/weapon/storage/toolbox/emergency/New() ..() @@ -33,7 +33,7 @@ /obj/item/weapon/storage/toolbox/mechanical name = "mechanical toolbox" icon_state = "blue" - item_state = "toolbox_blue" + item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue") /obj/item/weapon/storage/toolbox/mechanical/New() ..() @@ -47,7 +47,7 @@ /obj/item/weapon/storage/toolbox/electrical name = "electrical toolbox" icon_state = "yellow" - item_state = "toolbox_yellow" + item_state_slots = list(slot_r_hand_str = "toolbox_yellow", slot_l_hand_str = "toolbox_yellow") /obj/item/weapon/storage/toolbox/electrical/New() ..() @@ -65,7 +65,7 @@ /obj/item/weapon/storage/toolbox/syndicate name = "black and red toolbox" icon_state = "syndicate" - item_state = "toolbox_syndi" + item_state_slots = list(slot_r_hand_str = "toolbox_syndi", slot_l_hand_str = "toolbox_syndi") origin_tech = list(TECH_COMBAT = 1, TECH_ILLEGAL = 1) force = 14 @@ -83,7 +83,7 @@ max_storage_space = 8 //slightly smaller than a toolbox name = "rainbow lunchbox" icon_state = "lunchbox_rainbow" - item_state = "toolbox_pink" + item_state_slots = list(slot_r_hand_str = "toolbox_pink", slot_l_hand_str = "toolbox_pink") desc = "A little lunchbox. This one is the colors of the rainbow!" w_class = 3 max_w_class = 2 @@ -111,7 +111,7 @@ /obj/item/weapon/storage/toolbox/lunchbox/heart name = "heart lunchbox" icon_state = "lunchbox_lovelyhearts" - item_state = "toolbox_pink" + item_state_slots = list(slot_r_hand_str = "toolbox_pink", slot_l_hand_str = "toolbox_pink") desc = "A little lunchbox. This one has cute little hearts on it!" /obj/item/weapon/storage/toolbox/lunchbox/heart/filled @@ -120,7 +120,7 @@ /obj/item/weapon/storage/toolbox/lunchbox/cat name = "cat lunchbox" icon_state = "lunchbox_sciencecatshow" - item_state = "toolbox_green" + item_state_slots = list(slot_r_hand_str = "toolbox_green", slot_l_hand_str = "toolbox_green") desc = "A little lunchbox. This one has a cute little science cat from a popular show on it!" /obj/item/weapon/storage/toolbox/lunchbox/cat/filled @@ -129,7 +129,7 @@ /obj/item/weapon/storage/toolbox/lunchbox/nt name = "Nanotrasen brand lunchbox" icon_state = "lunchbox_nanotrasen" - item_state = "toolbox_blue" + item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue") desc = "A little lunchbox. This one is branded with the Nanotrasen logo!" /obj/item/weapon/storage/toolbox/lunchbox/nt/filled @@ -138,7 +138,7 @@ /obj/item/weapon/storage/toolbox/lunchbox/mars name = "\improper Mojave university lunchbox" icon_state = "lunchbox_marsuniversity" - item_state = "toolbox_red" + item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red") desc = "A little lunchbox. This one is branded with the Mojave university logo!" /obj/item/weapon/storage/toolbox/lunchbox/mars/filled @@ -147,7 +147,7 @@ /obj/item/weapon/storage/toolbox/lunchbox/cti name = "\improper CTI lunchbox" icon_state = "lunchbox_cti" - item_state = "toolbox_blue" + item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue") desc = "A little lunchbox. This one is branded with the CTI logo!" /obj/item/weapon/storage/toolbox/lunchbox/cti/filled @@ -156,7 +156,7 @@ /obj/item/weapon/storage/toolbox/lunchbox/nymph name = "\improper Diona nymph lunchbox" icon_state = "lunchbox_dionanymph" - item_state = "toolbox_yellow" + item_state_slots = list(slot_r_hand_str = "toolbox_yellow", slot_l_hand_str = "toolbox_yellow") desc = "A little lunchbox. This one is an adorable Diona nymph on the side!" /obj/item/weapon/storage/toolbox/lunchbox/nymph/filled @@ -165,7 +165,7 @@ /obj/item/weapon/storage/toolbox/lunchbox/syndicate name = "black and red lunchbox" icon_state = "lunchbox_syndie" - item_state = "toolbox_syndi" + item_state_slots = list(slot_r_hand_str = "toolbox_syndi", slot_l_hand_str = "toolbox_syndi") desc = "A little lunchbox. This one is a sleek black and red, made of a durable steel!" /obj/item/weapon/storage/toolbox/lunchbox/syndicate/filled diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 4e427c8f6e6..76b50ab6084 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -265,4 +265,19 @@ new /obj/item/clothing/suit/armor/combat(src) new /obj/item/clothing/gloves/arm_guard/combat(src) new /obj/item/clothing/shoes/leg_guard/combat(src) - return \ No newline at end of file + return + +/obj/item/weapon/storage/box/syndie_kit/demolitions/New() + ..() + new /obj/item/weapon/syndie/c4explosive(src) + new /obj/item/weapon/screwdriver(src) + +/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy/New() + ..() + new /obj/item/weapon/syndie/c4explosive/heavy(src) + new /obj/item/weapon/screwdriver(src) + +/obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy/New() + ..() + new /obj/item/weapon/syndie/c4explosive/heavy/super_heavy(src) + new /obj/item/weapon/screwdriver(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index b7e55cddb81..d92fcf1336f 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -35,13 +35,14 @@ return /obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt) - if(bcell) - if(bcell.checked_use(chrgdeductamt)) - return 1 - else - status = 0 - update_icon() - return 0 + if(status == 1) //Only deducts charge when it's on + if(bcell) + if(bcell.checked_use(chrgdeductamt)) + return 1 + else + status = 0 + update_icon() + return 0 return null /obj/item/weapon/melee/baton/update_icon() @@ -109,6 +110,7 @@ user.Weaken(30) deductcharge(hitcost) return + deductcharge(hitcost) return ..() /obj/item/weapon/melee/baton/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) @@ -122,7 +124,7 @@ var/mob/living/carbon/human/H = target affecting = H.get_organ(hit_zone) - if(user.a_intent == I_HURT) + if(user.a_intent == I_HURT || user.a_intent == I_DISARM) . = ..() //whacking someone causes a much poorer electrical contact than deliberately prodding them. agony *= 0.5 @@ -144,8 +146,6 @@ target.stun_effect_act(stun, agony, hit_zone, src) msg_admin_attack("[key_name(user)] stunned [key_name(target)] with the [src].") - deductcharge(hitcost) - if(ishuman(target)) var/mob/living/carbon/human/H = target H.forcesay(hit_appends) diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index b289e792572..2341df50cef 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -2,9 +2,10 @@ * Contains: * Sword * Classic Baton + * Telescopic Baton */ -/* +/* * Classic Baton */ /obj/item/weapon/melee/classic_baton @@ -34,7 +35,6 @@ desc = "A compact yet rebalanced personal defense weapon. Can be concealed when folded." icon = 'icons/obj/weapons.dmi' icon_state = "telebaton0" - item_state = "telebaton0" slot_flags = SLOT_BELT w_class = 2 force = 3 @@ -48,7 +48,6 @@ "You extend the baton.",\ "You hear an ominous click.") icon_state = "telebaton1" - item_state = "telebaton1" w_class = 3 force = 15//quite robust attack_verb = list("smacked", "struck", "slapped") @@ -57,7 +56,6 @@ "You collapse the baton.",\ "You hear a click.") icon_state = "telebaton0" - item_state = "telebaton0" w_class = 2 force = 3//not so robust now attack_verb = list("hit", "punched") diff --git a/code/game/objects/items/weapons/syndie.dm b/code/game/objects/items/weapons/syndie.dm index a5d5db02ad8..fb9aa3eb416 100644 --- a/code/game/objects/items/weapons/syndie.dm +++ b/code/game/objects/items/weapons/syndie.dm @@ -8,7 +8,7 @@ /obj/item/weapon/syndie/c4explosive icon_state = "c-4small_0" - item_state = "c-4small" + item_state = "radio" name = "normal-sized package" desc = "A small wrapped package." w_class = 3 @@ -18,67 +18,75 @@ /obj/item/weapon/syndie/c4explosive/heavy icon_state = "c-4large_0" - item_state = "c-4large" + item_state = "radio" desc = "A mysterious package, it's quite heavy." power = 2 size = "large" +/obj/item/weapon/syndie/c4explosive/heavy/super_heavy + name = "large-sized package" + desc = "A mysterious package, it's quite exceptionally heavy." + power = 3 + /obj/item/weapon/syndie/c4explosive/New() var/K = rand(1,2000) K = md5(num2text(K)+name) K = copytext(K,1,7) - src.desc += "\n You see [K] engraved on \the [src]." - var/obj/item/weapon/syndie/c4detonator/detonator = new(src.loc) - detonator.desc += "\n You see [K] engraved on the lighter." + desc += "\n You see [K] engraved on \the [src]." + var/obj/item/weapon/flame/lighter/zippo/c4detonator/detonator = new(src.loc) + detonator.desc += " You see [K] engraved on the lighter." detonator.bomb = src /obj/item/weapon/syndie/c4explosive/proc/detonate() icon_state = "c-4[size]_1" - spawn(50) - explosion(get_turf(src), power, power*2, power*3, power*4, power*4) - for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors. - var/turf/simulated/wall/T = get_step(src,dirn) - if(locate(/obj/machinery/door/airlock) in T) - var/obj/machinery/door/airlock/D = locate() in T - if(D.density) - D.open() - if(istype(T,/turf/simulated/wall)) - T.dismantle_wall(1) - qdel(src) + explosion(get_turf(src), power, power*2, power*3, power*4, power*5) + for(var/dirn in cardinal) //This is to guarantee that C4 at least breaks down all immediately adjacent walls and doors. + var/turf/simulated/wall/T = get_step(src,dirn) + if(locate(/obj/machinery/door/airlock) in T) + var/obj/machinery/door/airlock/D = locate() in T + if(D.density) + D.open() + if(istype(T,/turf/simulated/wall)) + T.dismantle_wall(1) + qdel(src) /*Detonator, disguised as a lighter*/ /*Click it when closed to open, when open to bring up a prompt asking you if you want to close it or press the button.*/ -/obj/item/weapon/syndie/c4detonator - icon_state = "c-4detonator_0" - item_state = "c-4detonator" - name = "\improper Zippo lighter" /*Sneaky, thanks Dreyfus.*/ - desc = "The zippo." - w_class = 1 - +/obj/item/weapon/flame/lighter/zippo/c4detonator + var/detonator_mode = 0 var/obj/item/weapon/syndie/c4explosive/bomb - var/pr_open = 0 /*Is the "What do you want to do?" prompt open?*/ -/obj/item/weapon/syndie/c4detonator/attack_self(mob/user as mob) - switch(src.icon_state) - if("c-4detonator_0") - src.icon_state = "c-4detonator_1" - user << "You flick open the lighter." +/obj/item/weapon/flame/lighter/zippo/c4detonator/attack_self(mob/user as mob) + if(!detonator_mode) + ..() - if("c-4detonator_1") - if(!pr_open) - pr_open = 1 - switch(alert(user, "What would you like to do?", "Lighter", "Press the button.", "Close the lighter.")) - if("Press the button.") - user << "You press the button." - flick("c-4detonator_click", src) - if(src.bomb) - src.bomb.detonate() - log_admin("[key_name(user)] has triggered [src.bomb] with [src].") - message_admins("[key_name_admin(user)] has triggered [src.bomb] with [src].") + else if(!lit) + base_state = icon_state + lit = 1 + icon_state = "[base_state]1" + //item_state = "[base_state]on" + user.visible_message("Without even breaking stride, \the [user] flips open \the [src] in one smooth movement.") - if("Close the lighter.") - src.icon_state = "c-4detonator_0" - user << "You close the lighter." - pr_open = 0 + else if(lit && detonator_mode) + switch(alert(user, "What would you like to do?", "Lighter", "Press the button.", "Close the lighter.")) + if("Press the button.") + user << "You press the button." + icon_state = "[base_state]click" + if(src.bomb) + src.bomb.detonate() + log_admin("[key_name(user)] has triggered [src.bomb] with [src].") + message_admins("[key_name_admin(user)] has triggered [src.bomb] with [src].") + + if("Close the lighter.") + lit = 0 + icon_state = "[base_state]" + //item_state = "[base_state]" + user.visible_message("You hear a quiet click, as \the [user] shuts off \the [src] without even looking at what they're doing.") + + +/obj/item/weapon/flame/lighter/zippo/c4detonator/attackby(obj/item/weapon/W, mob/user as mob) + if(istype(W, /obj/item/weapon/screwdriver)) + detonator_mode = !detonator_mode + user << "You unscrew the top panel of \the [src] revealing a button." \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 003e4b2ac97..12a048ee076 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -6,7 +6,11 @@ icon_state = "jetpack" gauge_icon = null w_class = 4.0 - item_state = "jetpack" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_storage.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_storage.dmi', + ) + item_state_slots = list(slot_r_hand_str = "jetpack", slot_l_hand_str = "jetpack") distribute_pressure = ONE_ATMOSPHERE*O2STANDARD var/datum/effect/effect/system/ion_trail_follow/ion_trail var/on = 0.0 @@ -16,8 +20,8 @@ /obj/item/weapon/tank/jetpack/New() ..() - src.ion_trail = new /datum/effect/effect/system/ion_trail_follow() - src.ion_trail.set_up(src) + ion_trail = new /datum/effect/effect/system/ion_trail_follow() + ion_trail.set_up(src) /obj/item/weapon/tank/jetpack/Destroy() qdel(ion_trail) @@ -32,7 +36,7 @@ /obj/item/weapon/tank/jetpack/verb/toggle_rockets() set name = "Toggle Jetpack Stabilization" set category = "Object" - src.stabilization_on = !( src.stabilization_on ) + stabilization_on = !( stabilization_on ) usr << "You toggle the stabilization [stabilization_on? "on":"off"]." /obj/item/weapon/tank/jetpack/verb/toggle() @@ -55,13 +59,13 @@ usr << "You toggle the thrusters [on? "on":"off"]." /obj/item/weapon/tank/jetpack/proc/allow_thrust(num, mob/living/user as mob) - if(!(src.on)) + if(!on) return 0 - if((num < 0.005 || src.air_contents.total_moles < num)) - src.ion_trail.stop() + if((num < 0.005 || air_contents.total_moles < num)) + ion_trail.stop() return 0 - var/datum/gas_mixture/G = src.air_contents.remove(num) + var/datum/gas_mixture/G = air_contents.remove(num) var/allgases = G.gas["carbon_dioxide"] + G.gas["nitrogen"] + G.gas["oxygen"] + G.gas["phoron"] if(allgases >= 0.005) @@ -73,12 +77,11 @@ /obj/item/weapon/tank/jetpack/ui_action_click() toggle() - /obj/item/weapon/tank/jetpack/void name = "void jetpack (oxygen)" desc = "It works well in a void." icon_state = "jetpack-void" - item_state = "jetpack-void" + item_state_slots = list(slot_r_hand_str = "jetpack-void", slot_l_hand_str = "jetpack-void") /obj/item/weapon/tank/jetpack/void/New() ..() @@ -89,7 +92,7 @@ name = "jetpack (oxygen)" desc = "A tank of compressed oxygen for use as propulsion in zero-gravity areas. Use with caution." icon_state = "jetpack" - item_state = "jetpack" + item_state_slots = list(slot_r_hand_str = "jetpack", slot_l_hand_str = "jetpack") /obj/item/weapon/tank/jetpack/oxygen/New() ..() @@ -101,7 +104,7 @@ desc = "A tank of compressed carbon dioxide for use as propulsion in zero-gravity areas. Painted black to indicate that it should not be used as a source for internals." distribute_pressure = 0 icon_state = "jetpack-black" - item_state = "jetpack-black" + item_state_slots = list(slot_r_hand_str = "jetpack-black", slot_l_hand_str = "jetpack-black") /obj/item/weapon/tank/jetpack/carbondioxide/New() ..() diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index c10e83511f8..85d13527036 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -16,19 +16,16 @@ icon_state = "oxygen" distribute_pressure = ONE_ATMOSPHERE*O2STANDARD - New() ..() air_contents.adjust_gas("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return - examine(mob/user) if(..(user, 0) && air_contents.gas["oxygen"] < 10) user << text("The meter on \the [src] indicates you are almost out of oxygen!") //playsound(usr, 'sound/effects/alert.ogg', 50, 1) - /obj/item/weapon/tank/oxygen/yellow desc = "A tank of oxygen, this one is yellow." icon_state = "oxygen_f" @@ -37,7 +34,6 @@ desc = "A tank of oxygen, this one is red." icon_state = "oxygen_fr" - /* * Anesthetic */ @@ -45,7 +41,6 @@ name = "anesthetic tank" desc = "A tank with an N2O/O2 gas mix." icon_state = "anesthetic" - item_state = "an_tank" /obj/item/weapon/tank/anesthetic/New() ..() @@ -64,7 +59,6 @@ desc = "Mixed anyone?" icon_state = "oxygen" - examine(mob/user) if(..(user, 0) && air_contents.gas["oxygen"] < 1 && loc==user) user << "The meter on the [src.name] indicates you are almost out of air!" @@ -76,8 +70,7 @@ src.air_contents.adjust_multi("oxygen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD, "nitrogen", (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) return - - + /* * Phoron */ @@ -89,7 +82,6 @@ flags = CONDUCT slot_flags = null //they have no straps! - /obj/item/weapon/tank/phoron/New() ..() @@ -124,14 +116,12 @@ distribute_pressure = ONE_ATMOSPHERE*O2STANDARD volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) - New() ..() src.air_contents.adjust_gas("oxygen", (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) return - examine(mob/user) if(..(user, 0) && air_contents.gas["oxygen"] < 0.2 && loc==user) user << text("The meter on the [src.name] indicates you are almost out of air!") @@ -157,7 +147,6 @@ icon_state = "oxygen_fr" distribute_pressure = ONE_ATMOSPHERE*O2STANDARD - /obj/item/weapon/tank/nitrogen/New() ..() @@ -167,4 +156,4 @@ /obj/item/weapon/tank/nitrogen/examine(mob/user) if(..(user, 0) && air_contents.gas["nitrogen"] < 10) user << text("The meter on \the [src] indicates you are almost out of nitrogen!") - //playsound(user, 'sound/effects/alert.ogg', 50, 1) + //playsound(user, 'sound/effects/alert.ogg', 50, 1) \ No newline at end of file diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm index 0eea22ea52d..80b0dc5964c 100644 --- a/code/game/objects/items/weapons/tape.dm +++ b/code/game/objects/items/weapons/tape.dm @@ -32,6 +32,7 @@ user.visible_message("\The [user] has taped up \the [H]'s eyes!") H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/blindfold/tape(H), slot_glasses) + H.update_inv_glasses() else if(user.zone_sel.selecting == O_MOUTH || user.zone_sel.selecting == BP_HEAD) if(!H.organs_by_name[BP_HEAD]) @@ -58,6 +59,7 @@ user.visible_message("\The [user] has taped up \the [H]'s mouth!") H.equip_to_slot_or_del(new /obj/item/clothing/mask/muzzle/tape(H), slot_wear_mask) + H.update_inv_wear_mask() else if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand") var/obj/item/weapon/handcuffs/cable/tape/T = new(user) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index bcc85d7e635..98c78768112 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -413,6 +413,7 @@ slot_flags = SLOT_BELT force = 6 throwforce = 7 + pry = 1 item_state = "crowbar" w_class = 2 origin_tech = list(TECH_ENGINEERING = 1) diff --git a/code/game/objects/items/weapons/towels.dm b/code/game/objects/items/weapons/towels.dm index 94c266142e5..d51cc8d1d06 100644 --- a/code/game/objects/items/weapons/towels.dm +++ b/code/game/objects/items/weapons/towels.dm @@ -12,3 +12,7 @@ /obj/item/weapon/towel/attack_self(mob/living/user as mob) user.visible_message(text("[] uses [] to towel themselves off.", user, src)) playsound(user, 'sound/weapons/towelwipe.ogg', 25, 1) + +/obj/item/weapon/towel/random/New() + ..() + color = "#"+get_random_colour() \ No newline at end of file diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 0f5cebc44da..0075b6cdfd3 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -1,4 +1,3 @@ - /obj/item/weapon/nullrod name = "null rod" desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of paranormal phenomenae." diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index bc10bc43596..a3f77757f20 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -7,6 +7,7 @@ var/throwforce = 1 var/sharp = 0 // whether this object cuts var/edge = 0 // whether this object is more likely to dismember + var/pry = 0 //Used in attackby() to open doors var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! var/damtype = "brute" var/armor_penetration = 0 @@ -119,9 +120,6 @@ /obj/proc/interact(mob/user) return -/obj/proc/update_icon() - return - /mob/proc/unset_machine() src.machine = null diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index fc6615fcf03..c891c7af251 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -42,12 +42,14 @@ icon = 'icons/obj/items.dmi' icon_state = "welder" item_to_spawn() - return pick(/obj/item/weapon/screwdriver,\ - /obj/item/weapon/wirecutters,\ - /obj/item/weapon/weldingtool,\ - /obj/item/weapon/crowbar,\ - /obj/item/weapon/wrench,\ - /obj/item/device/flashlight) + return pick(/obj/item/weapon/screwdriver, + /obj/item/weapon/wirecutters, + /obj/item/weapon/weldingtool, + /obj/item/weapon/weldingtool/largetank, + /obj/item/weapon/crowbar, + /obj/item/weapon/wrench, + /obj/item/device/flashlight, + /obj/item/device/multitool) /obj/random/technology_scanner @@ -56,8 +58,8 @@ icon = 'icons/obj/device.dmi' icon_state = "atmos" item_to_spawn() - return pick(prob(5);/obj/item/device/t_scanner,\ - prob(2);/obj/item/device/radio,\ + return pick(prob(5);/obj/item/device/t_scanner, + prob(2);/obj/item/device/radio, prob(5);/obj/item/device/analyzer) @@ -67,10 +69,9 @@ icon = 'icons/obj/power.dmi' icon_state = "cell" item_to_spawn() - return pick(prob(10);/obj/item/weapon/cell/crap,\ - prob(40);/obj/item/weapon/cell,\ - prob(40);/obj/item/weapon/cell/high,\ - prob(9);/obj/item/weapon/cell/super,\ + return pick(prob(50);/obj/item/weapon/cell, + prob(40);/obj/item/weapon/cell/high, + prob(9);/obj/item/weapon/cell/super, prob(1);/obj/item/weapon/cell/hyper) @@ -80,9 +81,10 @@ icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "signaller" item_to_spawn() - return pick(/obj/item/device/assembly/igniter,\ - /obj/item/device/assembly/prox_sensor,\ - /obj/item/device/assembly/signaler,\ + return pick(/obj/item/device/assembly/igniter, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/signaler, + /obj/item/device/assembly/timer, /obj/item/device/multitool) @@ -92,9 +94,10 @@ icon = 'icons/obj/storage.dmi' icon_state = "red" item_to_spawn() - return pick(prob(3);/obj/item/weapon/storage/toolbox/mechanical,\ - prob(2);/obj/item/weapon/storage/toolbox/electrical,\ - prob(1);/obj/item/weapon/storage/toolbox/emergency) + return pick(prob(6);/obj/item/weapon/storage/toolbox/mechanical, + prob(6);/obj/item/weapon/storage/toolbox/electrical, + prob(2);/obj/item/weapon/storage/toolbox/emergency, + prob(1);/obj/item/weapon/storage/toolbox/syndicate) /obj/random/tech_supply @@ -102,41 +105,53 @@ desc = "This is a random piece of technology supplies." icon = 'icons/obj/power.dmi' icon_state = "cell" - spawn_nothing_percentage = 50 + spawn_nothing_percentage = 25 item_to_spawn() - return pick(prob(3);/obj/random/powercell,\ - prob(2);/obj/random/technology_scanner,\ - prob(1);/obj/item/weapon/packageWrap,\ - prob(2);/obj/random/bomb_supply,\ - prob(1);/obj/item/weapon/extinguisher,\ - prob(1);/obj/item/clothing/gloves/fyellow,\ - prob(3);/obj/item/stack/cable_coil/random,\ - prob(2);/obj/random/toolbox,\ - prob(2);/obj/item/weapon/storage/belt/utility,\ - prob(5);/obj/random/tool,\ - prob(2);/obj/item/weapon/tape_roll) + return pick(prob(3);/obj/random/powercell, + prob(2);/obj/random/technology_scanner, + prob(1);/obj/item/weapon/packageWrap, + prob(2);/obj/random/bomb_supply, + prob(1);/obj/item/weapon/extinguisher, + prob(1);/obj/item/clothing/gloves/fyellow, + prob(3);/obj/item/stack/cable_coil/random, + prob(2);/obj/random/toolbox, + prob(2);/obj/item/weapon/storage/belt/utility, + prob(1);/obj/item/weapon/storage/belt/utility/full, + prob(5);/obj/random/tool, + prob(2);/obj/item/weapon/tape_roll, + prob(2);/obj/item/taperoll/engineering, + prob(1);/obj/item/taperoll/atmos, + prob(1);/obj/item/device/flashlight/maglight) /obj/random/medical name = "Random Medicine" desc = "This is a random medical item." icon = 'icons/obj/items.dmi' icon_state = "brutepack" - spawn_nothing_percentage = 25 + spawn_nothing_percentage = 12.5 item_to_spawn() - return pick(prob(4);/obj/item/stack/medical/bruise_pack,\ - prob(4);/obj/item/stack/medical/ointment,\ - prob(2);/obj/item/stack/medical/advanced/bruise_pack,\ - prob(2);/obj/item/stack/medical/advanced/ointment,\ - prob(1);/obj/item/stack/medical/splint,\ - prob(2);/obj/item/bodybag,\ - prob(1);/obj/item/bodybag/cryobag,\ - prob(2);/obj/item/weapon/storage/pill_bottle/kelotane,\ - prob(2);/obj/item/weapon/storage/pill_bottle/antitox,\ - prob(2);/obj/item/weapon/storage/pill_bottle/tramadol,\ - prob(2);/obj/item/weapon/reagent_containers/syringe/antitoxin,\ - prob(1);/obj/item/weapon/reagent_containers/syringe/antiviral,\ - prob(2);/obj/item/weapon/reagent_containers/syringe/inaprovaline,\ - prob(1);/obj/item/stack/nanopaste) + return pick(prob(8);/obj/item/stack/medical/bruise_pack, + prob(8);/obj/item/stack/medical/ointment, + prob(4);/obj/item/stack/medical/advanced/bruise_pack, + prob(4);/obj/item/stack/medical/advanced/ointment, + prob(2);/obj/item/stack/medical/splint, + prob(4);/obj/item/bodybag, + prob(2);/obj/item/bodybag/cryobag, + prob(4);/obj/item/weapon/storage/pill_bottle/kelotane, + prob(4);/obj/item/weapon/storage/pill_bottle/dylovene, + prob(4);/obj/item/weapon/storage/pill_bottle/tramadol, + prob(1);/obj/item/weapon/storage/pill_bottle/spaceacillin, + prob(1);/obj/item/weapon/storage/pill_bottle/tramadol, + prob(0.2);/obj/item/weapon/storage/pill_bottle/dermaline, + prob(0.2);/obj/item/weapon/storage/pill_bottle/dexalin_plus, + prob(0.2);/obj/item/weapon/storage/pill_bottle/bicaridine, + prob(4);/obj/item/weapon/reagent_containers/syringe/antitoxin, + prob(2);/obj/item/weapon/reagent_containers/syringe/antiviral, + prob(4);/obj/item/weapon/reagent_containers/syringe/inaprovaline, + prob(4);/obj/item/weapon/reagent_containers/hypospray/autoinjector, + prob(0.1);/obj/item/weapon/reagent_containers/hypospray, + prob(1);/obj/item/device/healthanalyzer, + prob(2);/obj/item/stack/nanopaste) /obj/random/firstaid @@ -145,10 +160,10 @@ icon = 'icons/obj/storage.dmi' icon_state = "firstaid" item_to_spawn() - return pick(prob(3);/obj/item/weapon/storage/firstaid/regular,\ - prob(2);/obj/item/weapon/storage/firstaid/toxin,\ - prob(2);/obj/item/weapon/storage/firstaid/o2,\ - prob(1);/obj/item/weapon/storage/firstaid/adv,\ + return pick(prob(3);/obj/item/weapon/storage/firstaid/regular, + prob(2);/obj/item/weapon/storage/firstaid/toxin, + prob(2);/obj/item/weapon/storage/firstaid/o2, + prob(1);/obj/item/weapon/storage/firstaid/adv, prob(2);/obj/item/weapon/storage/firstaid/fire) @@ -159,17 +174,22 @@ icon_state = "purplecomb" spawn_nothing_percentage = 50 item_to_spawn() - return pick(prob(3);/obj/item/weapon/storage/pill_bottle/tramadol,\ - prob(4);/obj/item/weapon/haircomb,\ - prob(2);/obj/item/weapon/storage/pill_bottle/happy,\ - prob(2);/obj/item/weapon/storage/pill_bottle/zoom,\ - prob(5);/obj/item/weapon/contraband/poster,\ - prob(2);/obj/item/weapon/material/butterfly,\ - prob(3);/obj/item/weapon/material/butterflyblade,\ - prob(3);/obj/item/weapon/material/butterflyhandle,\ - prob(3);/obj/item/weapon/material/wirerod,\ - prob(1);/obj/item/weapon/material/butterfly/switchblade,\ - prob(1);/obj/item/weapon/reagent_containers/syringe/drugs) + return pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol, + prob(8);/obj/item/weapon/haircomb, + prob(4);/obj/item/weapon/storage/pill_bottle/happy, + prob(4);/obj/item/weapon/storage/pill_bottle/zoom, + prob(10);/obj/item/weapon/contraband/poster, + prob(4);/obj/item/weapon/material/butterfly, + prob(6);/obj/item/weapon/material/butterflyblade, + prob(6);/obj/item/weapon/material/butterflyhandle, + prob(6);/obj/item/weapon/material/wirerod, + prob(2);/obj/item/weapon/material/butterfly/switchblade, + prob(2);/obj/item/weapon/material/knuckledusters, + prob(1);/obj/item/weapon/material/hatchet/tacknife, + prob(0.5);/obj/item/weapon/beartrap, + prob(1);/obj/item/weapon/handcuffs, + prob(1);/obj/item/weapon/legcuffs, + prob(2);/obj/item/weapon/reagent_containers/syringe/drugs) /obj/random/energy @@ -178,9 +198,8 @@ icon = 'icons/obj/gun.dmi' icon_state = "energykill100" item_to_spawn() - return pick(prob(2);/obj/item/weapon/gun/energy/laser,\ - prob(2);/obj/item/weapon/gun/energy/gun,\ - prob(1);/obj/item/weapon/gun/energy/stunrevolver) + return pick(prob(2);/obj/item/weapon/gun/energy/laser, + prob(2);/obj/item/weapon/gun/energy/gun) /obj/random/projectile name = "Random Projectile Weapon" @@ -188,8 +207,8 @@ icon = 'icons/obj/gun.dmi' icon_state = "revolver" item_to_spawn() - return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump,\ - prob(2);/obj/item/weapon/gun/projectile/automatic/wt550,\ + return pick(prob(3);/obj/item/weapon/gun/projectile/shotgun/pump, + prob(2);/obj/item/weapon/gun/projectile/automatic/wt550, prob(1);/obj/item/weapon/gun/projectile/shotgun/pump/combat) /obj/random/handgun @@ -198,7 +217,7 @@ icon = 'icons/obj/gun.dmi' icon_state = "secgundark" item_to_spawn() - return pick(prob(3);/obj/item/weapon/gun/projectile/sec,\ + return pick(prob(3);/obj/item/weapon/gun/projectile/sec, prob(1);/obj/item/weapon/gun/projectile/sec/wood) @@ -208,14 +227,14 @@ icon = 'icons/obj/ammo.dmi' icon_state = "45-10" item_to_spawn() - return pick(prob(6);/obj/item/weapon/storage/box/beanbags,\ - prob(2);/obj/item/weapon/storage/box/shotgunammo,\ - prob(4);/obj/item/weapon/storage/box/shotgunshells,\ - prob(1);/obj/item/weapon/storage/box/stunshells,\ - prob(2);/obj/item/ammo_magazine/c45m,\ - prob(4);/obj/item/ammo_magazine/c45m/rubber,\ - prob(4);/obj/item/ammo_magazine/c45m/flash,\ - prob(2);/obj/item/ammo_magazine/mc9mmt,\ + return pick(prob(6);/obj/item/weapon/storage/box/beanbags, + prob(2);/obj/item/weapon/storage/box/shotgunammo, + prob(4);/obj/item/weapon/storage/box/shotgunshells, + prob(1);/obj/item/weapon/storage/box/stunshells, + prob(2);/obj/item/ammo_magazine/c45m, + prob(4);/obj/item/ammo_magazine/c45m/rubber, + prob(4);/obj/item/ammo_magazine/c45m/flash, + prob(2);/obj/item/ammo_magazine/mc9mmt, prob(6);/obj/item/ammo_magazine/mc9mmt/rubber) @@ -225,43 +244,43 @@ icon = 'icons/obj/toy.dmi' icon_state = "assistant" item_to_spawn() - return pick(/obj/item/toy/figure/cmo,\ - /obj/item/toy/figure/assistant,\ - /obj/item/toy/figure/atmos,\ - /obj/item/toy/figure/bartender,\ - /obj/item/toy/figure/borg,\ - /obj/item/toy/figure/gardener,\ - /obj/item/toy/figure/captain,\ - /obj/item/toy/figure/cargotech,\ - /obj/item/toy/figure/ce,\ - /obj/item/toy/figure/chaplain,\ - /obj/item/toy/figure/chef,\ - /obj/item/toy/figure/chemist,\ - /obj/item/toy/figure/clown,\ - /obj/item/toy/figure/corgi,\ - /obj/item/toy/figure/detective,\ - /obj/item/toy/figure/dsquad,\ - /obj/item/toy/figure/engineer,\ - /obj/item/toy/figure/geneticist,\ - /obj/item/toy/figure/hop,\ - /obj/item/toy/figure/hos,\ - /obj/item/toy/figure/qm,\ - /obj/item/toy/figure/janitor,\ - /obj/item/toy/figure/agent,\ - /obj/item/toy/figure/librarian,\ - /obj/item/toy/figure/md,\ - /obj/item/toy/figure/mime,\ - /obj/item/toy/figure/miner,\ - /obj/item/toy/figure/ninja,\ - /obj/item/toy/figure/wizard,\ - /obj/item/toy/figure/rd,\ - /obj/item/toy/figure/roboticist,\ - /obj/item/toy/figure/scientist,\ - /obj/item/toy/figure/syndie,\ - /obj/item/toy/figure/secofficer,\ - /obj/item/toy/figure/warden,\ - /obj/item/toy/figure/psychologist,\ - /obj/item/toy/figure/paramedic,\ + return pick(/obj/item/toy/figure/cmo, + /obj/item/toy/figure/assistant, + /obj/item/toy/figure/atmos, + /obj/item/toy/figure/bartender, + /obj/item/toy/figure/borg, + /obj/item/toy/figure/gardener, + /obj/item/toy/figure/captain, + /obj/item/toy/figure/cargotech, + /obj/item/toy/figure/ce, + /obj/item/toy/figure/chaplain, + /obj/item/toy/figure/chef, + /obj/item/toy/figure/chemist, + /obj/item/toy/figure/clown, + /obj/item/toy/figure/corgi, + /obj/item/toy/figure/detective, + /obj/item/toy/figure/dsquad, + /obj/item/toy/figure/engineer, + /obj/item/toy/figure/geneticist, + /obj/item/toy/figure/hop, + /obj/item/toy/figure/hos, + /obj/item/toy/figure/qm, + /obj/item/toy/figure/janitor, + /obj/item/toy/figure/agent, + /obj/item/toy/figure/librarian, + /obj/item/toy/figure/md, + /obj/item/toy/figure/mime, + /obj/item/toy/figure/miner, + /obj/item/toy/figure/ninja, + /obj/item/toy/figure/wizard, + /obj/item/toy/figure/rd, + /obj/item/toy/figure/roboticist, + /obj/item/toy/figure/scientist, + /obj/item/toy/figure/syndie, + /obj/item/toy/figure/secofficer, + /obj/item/toy/figure/warden, + /obj/item/toy/figure/psychologist, + /obj/item/toy/figure/paramedic, /obj/item/toy/figure/ert) @@ -271,12 +290,12 @@ icon = 'icons/obj/toy.dmi' icon_state = "nymphplushie" item_to_spawn() - return pick(/obj/structure/plushie/ian,\ - /obj/structure/plushie/drone,\ - /obj/structure/plushie/carp,\ - /obj/structure/plushie/beepsky,\ - /obj/item/toy/plushie/nymph,\ - /obj/item/toy/plushie/mouse,\ - /obj/item/toy/plushie/kitten,\ + return pick(/obj/structure/plushie/ian, + /obj/structure/plushie/drone, + /obj/structure/plushie/carp, + /obj/structure/plushie/beepsky, + /obj/item/toy/plushie/nymph, + /obj/item/toy/plushie/mouse, + /obj/item/toy/plushie/kitten, /obj/item/toy/plushie/lizard) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 375c6727eab..964afb0527f 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -9,7 +9,6 @@ LINEN BINS desc = "A surprisingly soft linen bedsheet." icon = 'icons/obj/items.dmi' icon_state = "sheet" - item_state = "bedsheet" slot_flags = SLOT_BACK layer = 4.0 throwforce = 1 @@ -39,75 +38,59 @@ LINEN BINS /obj/item/weapon/bedsheet/blue icon_state = "sheetblue" - item_state = "sheetblue" /obj/item/weapon/bedsheet/green icon_state = "sheetgreen" - item_state = "sheetgreen" /obj/item/weapon/bedsheet/orange icon_state = "sheetorange" - item_state = "sheetorange" /obj/item/weapon/bedsheet/purple icon_state = "sheetpurple" - item_state = "sheetpurple" /obj/item/weapon/bedsheet/rainbow icon_state = "sheetrainbow" - item_state = "sheetrainbow" /obj/item/weapon/bedsheet/red icon_state = "sheetred" - item_state = "sheetred" /obj/item/weapon/bedsheet/yellow icon_state = "sheetyellow" - item_state = "sheetyellow" /obj/item/weapon/bedsheet/mime icon_state = "sheetmime" - item_state = "sheetmime" /obj/item/weapon/bedsheet/clown icon_state = "sheetclown" - item_state = "sheetclown" + item_state = "sheetrainbow" /obj/item/weapon/bedsheet/captain icon_state = "sheetcaptain" - item_state = "sheetcaptain" /obj/item/weapon/bedsheet/rd icon_state = "sheetrd" - item_state = "sheetrd" /obj/item/weapon/bedsheet/medical icon_state = "sheetmedical" - item_state = "sheetmedical" /obj/item/weapon/bedsheet/hos icon_state = "sheethos" - item_state = "sheethos" /obj/item/weapon/bedsheet/hop icon_state = "sheethop" - item_state = "sheethop" /obj/item/weapon/bedsheet/ce icon_state = "sheetce" - item_state = "sheetce" /obj/item/weapon/bedsheet/brown icon_state = "sheetbrown" - item_state = "sheetbrown" /obj/item/weapon/bedsheet/ian icon_state = "sheetian" - item_state = "bedsheet" /obj/item/weapon/bedsheet/double icon_state = "doublesheet" - item_state = "bedsheet" + item_state = "sheet" /obj/item/weapon/bedsheet/bluedouble icon_state = "doublesheetblue" @@ -125,54 +108,53 @@ LINEN BINS icon_state = "doublesheetpurple" item_state = "sheetpurple" -/obj/item/weapon/bedsheet/doublerainbow //all the way across the sky. +/obj/item/weapon/bedsheet/rainbowdouble //all the way across the sky. icon_state = "doublesheetrainbow" item_state = "sheetrainbow" -/obj/item/weapon/bedsheet/doublered +/obj/item/weapon/bedsheet/reddouble icon_state = "doublesheetred" item_state = "sheetred" -/obj/item/weapon/bedsheet/doubleyellow +/obj/item/weapon/bedsheet/yellowdouble icon_state = "doublesheetyellow" item_state = "sheetyellow" -/obj/item/weapon/bedsheet/doublemime +/obj/item/weapon/bedsheet/mimedouble icon_state = "doublesheetmime" item_state = "sheetmime" -/obj/item/weapon/bedsheet/doubleclown +/obj/item/weapon/bedsheet/clowndouble icon_state = "doublesheetclown" - item_state = "sheetclown" + item_state = "sheetrainbow" -/obj/item/weapon/bedsheet/doublecaptain +/obj/item/weapon/bedsheet/captaindouble icon_state = "doublesheetcaptain" item_state = "sheetcaptain" -/obj/item/weapon/bedsheet/doublerd +/obj/item/weapon/bedsheet/rddouble icon_state = "doublesheetrd" item_state = "sheetrd" -/obj/item/weapon/bedsheet/doublehos +/obj/item/weapon/bedsheet/hosdouble icon_state = "doublesheethos" item_state = "sheethos" -/obj/item/weapon/bedsheet/doublehop +/obj/item/weapon/bedsheet/hopdouble icon_state = "doublesheethop" item_state = "sheethop" -/obj/item/weapon/bedsheet/doublece +/obj/item/weapon/bedsheet/cedouble icon_state = "doublesheetce" item_state = "sheetce" -/obj/item/weapon/bedsheet/doublebrown +/obj/item/weapon/bedsheet/browndouble icon_state = "doublesheetbrown" item_state = "sheetbrown" -/obj/item/weapon/bedsheet/doubleian +/obj/item/weapon/bedsheet/iandouble icon_state = "doublesheetian" - item_state = "bedsheet" - + item_state = "sheetian" /obj/structure/bedsheetbin name = "linen bin" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 35a9b554389..787e0adb3bd 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -20,7 +20,7 @@ new /obj/item/clothing/accessory/storage/brown_vest(src) new /obj/item/blueprints(src) new /obj/item/clothing/under/rank/chief_engineer(src) - new /obj/item/clothing/under/rank/engineer/chief_engineer/skirt(src) + new /obj/item/clothing/under/rank/chief_engineer/skirt(src) new /obj/item/clothing/head/hardhat/white(src) new /obj/item/clothing/head/welding(src) new /obj/item/clothing/gloves/yellow(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 95d4fd3d064..fdd1ed5c807 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -192,7 +192,7 @@ new /obj/item/clothing/under/rank/medical/navyblue(src) new /obj/item/clothing/head/surgery/navyblue(src) new /obj/item/clothing/under/rank/chief_medical_officer(src) - new /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt(src) + new /obj/item/clothing/under/rank/chief_medical_officer/skirt(src) new /obj/item/clothing/suit/storage/toggle/labcoat/cmo(src) new /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt(src) new /obj/item/weapon/cartridge/cmo(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 6aa1ee66f64..62964125d92 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -102,8 +102,8 @@ new /obj/item/clothing/suit/storage/vest/hos(src) new /obj/item/clothing/under/rank/head_of_security/jensen(src) new /obj/item/clothing/under/rank/head_of_security/corp(src) - new /obj/item/clothing/suit/armor/hos/jensen(src) - new /obj/item/clothing/suit/armor/hos(src) + new /obj/item/clothing/suit/storage/vest/hoscoat/jensen(src) + new /obj/item/clothing/suit/storage/vest/hoscoat(src) new /obj/item/clothing/head/helmet/HoS/dermal(src) new /obj/item/weapon/cartridge/hos(src) new /obj/item/device/radio/headset/heads/hos(src) @@ -114,6 +114,8 @@ new /obj/item/weapon/shield/riot/tele(src) new /obj/item/weapon/storage/box/holobadge/hos(src) new /obj/item/clothing/accessory/badge/holo/hos(src) + new /obj/item/weapon/reagent_containers/spray/pepper(src) + new /obj/item/weapon/crowbar/red(src) new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/storage/belt/security(src) new /obj/item/device/flash(src) @@ -150,8 +152,8 @@ new /obj/item/clothing/suit/storage/vest/warden(src) new /obj/item/clothing/under/rank/warden(src) new /obj/item/clothing/under/rank/warden/corp(src) - new /obj/item/clothing/suit/armor/vest/warden(src) - new /obj/item/clothing/suit/armor/vest/warden/alt(src) + new /obj/item/clothing/suit/storage/vest/wardencoat(src) + new /obj/item/clothing/suit/storage/vest/wardencoat/alt(src) new /obj/item/clothing/head/helmet/warden(src) new /obj/item/weapon/cartridge/security(src) new /obj/item/device/radio/headset/headset_sec(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 2e342e55cf3..489cedc1607 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -246,9 +246,9 @@ new /obj/item/clothing/under/rank/atmospheric_technician(src) new /obj/item/clothing/under/rank/atmospheric_technician(src) new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt(src) - new /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt(src) - new /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt(src) + new /obj/item/clothing/under/rank/atmospheric_technician/skirt(src) + new /obj/item/clothing/under/rank/atmospheric_technician/skirt(src) + new /obj/item/clothing/under/rank/atmospheric_technician/skirt(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) @@ -396,8 +396,8 @@ ..() new /obj/item/clothing/under/rank/chemist(src) new /obj/item/clothing/under/rank/chemist(src) - new /obj/item/clothing/under/rank/medical/chemist/skirt(src) - new /obj/item/clothing/under/rank/medical/chemist/skirt(src) + new /obj/item/clothing/under/rank/chemist/skirt(src) + new /obj/item/clothing/under/rank/chemist/skirt(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(src) @@ -418,8 +418,8 @@ ..() new /obj/item/clothing/under/rank/geneticist(src) new /obj/item/clothing/under/rank/geneticist(src) - new /obj/item/clothing/under/rank/medical/geneticist/skirt(src) - new /obj/item/clothing/under/rank/medical/geneticist/skirt(src) + new /obj/item/clothing/under/rank/geneticist/skirt(src) + new /obj/item/clothing/under/rank/geneticist/skirt(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/suit/storage/toggle/labcoat/genetics(src) @@ -440,8 +440,8 @@ ..() new /obj/item/clothing/under/rank/virologist(src) new /obj/item/clothing/under/rank/virologist(src) - new /obj/item/clothing/under/rank/medical/virologist/skirt(src) - new /obj/item/clothing/under/rank/medical/virologist/skirt(src) + new /obj/item/clothing/under/rank/virologist/skirt(src) + new /obj/item/clothing/under/rank/virologist/skirt(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index d3e795edc3c..d6034bbb8af 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -331,18 +331,34 @@ var/target_temp = T0C - 40 var/cooling_power = 40 - return_air() - var/datum/gas_mixture/gas = (..()) - if(!gas) return null - var/datum/gas_mixture/newgas = new/datum/gas_mixture() - newgas.copy_from(gas) - if(newgas.temperature <= target_temp) return +/obj/structure/closet/crate/freezer/return_air() + var/datum/gas_mixture/gas = (..()) + if(!gas) return null + var/datum/gas_mixture/newgas = new/datum/gas_mixture() + newgas.copy_from(gas) + if(newgas.temperature <= target_temp) return - if((newgas.temperature - cooling_power) > target_temp) - newgas.temperature -= cooling_power - else - newgas.temperature = target_temp - return newgas + if((newgas.temperature - cooling_power) > target_temp) + newgas.temperature -= cooling_power + else + newgas.temperature = target_temp + return newgas + +/obj/structure/closet/crate/freezer/Entered(var/atom/movable/AM) + if(istype(AM, /obj/item/organ)) + var/obj/item/organ/O = AM + O.preserved = 1 + for(var/obj/item/organ/organ in O) + organ.preserved = 1 + ..() + +/obj/structure/closet/crate/freezer/Exited(var/atom/movable/AM) + if(istype(AM, /obj/item/organ)) + var/obj/item/organ/O = AM + O.preserved = 0 + for(var/obj/item/organ/organ in O) + organ.preserved = 0 + ..() /obj/structure/closet/crate/freezer/rations //Fpr use in the escape shuttle name = "emergency rations" diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 89e841bc580..cb7dac06841 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -7,7 +7,7 @@ w_class = 5 var/state = 0 var/base_icon_state = "" - var/base_name = "Airlock" + var/base_name = "airlock" var/obj/item/weapon/airlock_electronics/electronics = null var/airlock_type = "" //the type path of the airlock once completed var/glass_type = "/glass" @@ -19,91 +19,91 @@ /obj/structure/door_assembly/door_assembly_com base_icon_state = "com" - base_name = "Command Airlock" + base_name = "Command airlock" glass_type = "/glass_command" airlock_type = "/command" /obj/structure/door_assembly/door_assembly_sec base_icon_state = "sec" - base_name = "Security Airlock" + base_name = "Security airlock" glass_type = "/glass_security" airlock_type = "/security" /obj/structure/door_assembly/door_assembly_eng base_icon_state = "eng" - base_name = "Engineering Airlock" + base_name = "Engineering airlock" glass_type = "/glass_engineering" airlock_type = "/engineering" /obj/structure/door_assembly/door_assembly_eat base_icon_state = "eat" - base_name = "Engineering Atmos Airlock" + base_name = "Engineering atmos airlock" glass_type = "/glass_engineeringatmos" airlock_type = "/engineering" /obj/structure/door_assembly/door_assembly_min base_icon_state = "min" - base_name = "Mining Airlock" + base_name = "Mining airlock" glass_type = "/glass_mining" airlock_type = "/mining" /obj/structure/door_assembly/door_assembly_atmo base_icon_state = "atmo" - base_name = "Atmospherics Airlock" + base_name = "Atmospherics airlock" glass_type = "/glass_atmos" airlock_type = "/atmos" /obj/structure/door_assembly/door_assembly_research base_icon_state = "res" - base_name = "Research Airlock" + base_name = "Research airlock" glass_type = "/glass_research" airlock_type = "/research" /obj/structure/door_assembly/door_assembly_science base_icon_state = "sci" - base_name = "Science Airlock" + base_name = "Science airlock" glass_type = "/glass_science" airlock_type = "/science" /obj/structure/door_assembly/door_assembly_med base_icon_state = "med" - base_name = "Medical Airlock" + base_name = "Medical airlock" glass_type = "/glass_medical" airlock_type = "/medical" /obj/structure/door_assembly/door_assembly_mai base_icon_state = "mai" - base_name = "Maintenance Airlock" + base_name = "Maintenance airlock" airlock_type = "/maintenance" glass = -1 /obj/structure/door_assembly/door_assembly_ext base_icon_state = "ext" - base_name = "External Airlock" + base_name = "External airlock" airlock_type = "/external" glass = -1 /obj/structure/door_assembly/door_assembly_fre base_icon_state = "fre" - base_name = "Freezer Airlock" + base_name = "Freezer airlock" airlock_type = "/freezer" glass = -1 /obj/structure/door_assembly/door_assembly_hatch base_icon_state = "hatch" - base_name = "Airtight Hatch" + base_name = "airtight hatch" airlock_type = "/hatch" glass = -1 /obj/structure/door_assembly/door_assembly_mhatch base_icon_state = "mhatch" - base_name = "Maintenance Hatch" + base_name = "maintenance hatch" airlock_type = "/maintenance_hatch" glass = -1 /obj/structure/door_assembly/door_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly base_icon_state = "highsec" - base_name = "High Security Airlock" + base_name = "high security airlock" airlock_type = "/highsecurity" glass = -1 @@ -221,7 +221,6 @@ W.loc = src user << "You installed the airlock electronics!" src.state = 2 - src.name = "Near finished Airlock Assembly" src.electronics = W else if(istype(W, /obj/item/weapon/crowbar) && state == 2 ) @@ -238,7 +237,6 @@ if(!src) return user << "You removed the airlock electronics!" src.state = 1 - src.name = "Wired Airlock Assembly" electronics.loc = src.loc electronics = null @@ -294,9 +292,9 @@ switch (state) if(0) if (anchored) - name = "Secured " + name = "secured " if(1) - name = "Wired " + name = "wired " if(2) - name = "Near Finished " - name += "[glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly" + name = "near finished " + name += "[glass == 1 ? "window " : ""][istext(glass) ? "[glass] airlock" : base_name] assembly ([created_name])" diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 71a87b18b4e..d868ebfa517 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -78,6 +78,11 @@ icon = 'icons/obj/plants.dmi' icon_state = "plant-26" +/obj/structure/flora/pottedplant/xmas/New() + ..() + icon_state = "plant-xmas" + + //newbushes /obj/structure/flora/ausbushes diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 9c103a8ed28..52afecd66d3 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -65,7 +65,7 @@ else if(!anchored) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) user << "Now securing the girder..." - if(get_turf(user, 40)) + if(do_after(user, 40,src)) user << "You secured the girder!" reset_girder() @@ -126,7 +126,8 @@ return ..() /obj/structure/girder/proc/construct_wall(obj/item/stack/material/S, mob/user) - if(S.get_amount() < 2) + var/amount_to_use = reinf_material ? 1 : 2 + if(S.get_amount() < amount_to_use) user << "There isn't enough material here to construct a wall." return 0 @@ -143,7 +144,6 @@ user << "You begin adding the plating..." - var/amount_to_use = reinf_material ? 1 : 2 if(!do_after(user,40) || !S.use(amount_to_use)) return 1 //once we've gotten this far don't call parent attackby() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 4ac596267dc..959f8f807a3 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -328,9 +328,6 @@ desc = "Rubber ducky you're so fine, you make bathtime lots of fuuun. Rubber ducky I'm awfully fooooond of yooooouuuu~" //thanks doohl icon = 'icons/obj/watercloset.dmi' icon_state = "rubberducky" - item_state = "rubberducky" - - /obj/structure/sink name = "sink" @@ -388,7 +385,6 @@ for(var/mob/V in viewers(src, null)) V.show_message("[user] washes their hands using \the [src].") - /obj/structure/sink/attackby(obj/item/O as obj, mob/user as mob) if(busy) user << "Someone's already washing here." @@ -444,7 +440,6 @@ "[user] washes \a [I] using \the [src].", \ "You wash \a [I] using \the [src].") - /obj/structure/sink/kitchen name = "kitchen sink" icon_state = "sink_alt" diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index fb48f6249dd..37643866793 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -19,12 +19,18 @@ obj/structure/windoor_assembly w_class = 3 var/obj/item/weapon/airlock_electronics/electronics = null + var/created_name = null //Vars to help with the icon's name var/facing = "l" //Does the windoor open to the left or right? var/secure = "" //Whether or not this creates a secure windoor var/state = "01" //How far the door assembly has progressed in terms of sprites +obj/structure/windoor_assembly/secure + name = "secure windoor assembly" + secure = "secure_" + icon_state = "l_secure_windoor_assembly01" + obj/structure/windoor_assembly/New(Loc, start_dir=NORTH, constructed=0) ..() if(constructed) @@ -65,24 +71,31 @@ obj/structure/windoor_assembly/Destroy() /obj/structure/windoor_assembly/attackby(obj/item/W as obj, mob/user as mob) - //I really should have spread this out across more states but thin little windoors are hard to sprite. + if(istype(W, /obj/item/weapon/pen)) + var/t = sanitizeSafe(input(user, "Enter the name for the windoor.", src.name, src.created_name), MAX_NAME_LEN) + if(!t) return + if(!in_range(src, usr) && src.loc != usr) return + created_name = t + return + switch(state) if("01") if(istype(W, /obj/item/weapon/weldingtool) && !anchored ) var/obj/item/weapon/weldingtool/WT = W if (WT.remove_fuel(0,user)) - user.visible_message("[user] dissassembles the windoor assembly.", "You start to dissassemble the windoor assembly.") + user.visible_message("[user] disassembles the windoor assembly.", "You start to disassemble the windoor assembly.") playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) if(do_after(user, 40)) if(!src || !WT.isOn()) return - user << "You dissasembled the windoor assembly!" - new /obj/item/stack/material/glass/reinforced(get_turf(src), 5) + user << "You disassembled the windoor assembly!" if(secure) - PoolOrNew(/obj/item/stack/rods, list(get_turf(src), 4)) + new /obj/item/stack/material/glass/reinforced(get_turf(src), 2) + else + new /obj/item/stack/material/glass(get_turf(src), 2) qdel(src) else - user << "You need more welding fuel to dissassemble the windoor assembly." + user << "You need more welding fuel to disassemble the windoor assembly." return //Wrenching an unsecure assembly anchors it in place. Step 4 complete @@ -95,9 +108,9 @@ obj/structure/windoor_assembly/Destroy() user << "You've secured the windoor assembly!" src.anchored = 1 if(src.secure) - src.name = "Secure Anchored Windoor Assembly" + src.name = "secure anchored windoor assembly" else - src.name = "Anchored Windoor Assembly" + src.name = "anchored windoor assembly" //Unwrenching an unsecure assembly un-anchors it. Step 4 undone else if(istype(W, /obj/item/weapon/wrench) && anchored) @@ -109,26 +122,9 @@ obj/structure/windoor_assembly/Destroy() user << "You've unsecured the windoor assembly!" src.anchored = 0 if(src.secure) - src.name = "Secure Windoor Assembly" + src.name = "secure windoor assembly" else - src.name = "Windoor Assembly" - - //Adding plasteel makes the assembly a secure windoor assembly. Step 2 (optional) complete. - else if(istype(W, /obj/item/stack/rods) && !secure) - var/obj/item/stack/rods/R = W - if(R.get_amount() < 4) - user << "You need more rods to do this." - return - user << "You start to reinforce the windoor with rods." - - if(do_after(user,40) && !secure) - if (R.use(4)) - user << "You reinforce the windoor." - src.secure = "secure_" - if(src.anchored) - src.name = "Secure Anchored Windoor Assembly" - else - src.name = "Secure Windoor Assembly" + src.name = "windoor assembly" //Adding cable to the assembly. Step 5 complete. else if(istype(W, /obj/item/stack/cable_coil) && anchored) @@ -140,9 +136,9 @@ obj/structure/windoor_assembly/Destroy() user << "You wire the windoor!" src.state = "02" if(src.secure) - src.name = "Secure Wired Windoor Assembly" + src.name = "secure wired windoor assembly" else - src.name = "Wired Windoor Assembly" + src.name = "wired windoor assembly" else ..() @@ -160,9 +156,9 @@ obj/structure/windoor_assembly/Destroy() new/obj/item/stack/cable_coil(get_turf(user), 1) src.state = "01" if(src.secure) - src.name = "Secure Anchored Windoor Assembly" + src.name = "secure anchored windoor assembly" else - src.name = "Anchored Windoor Assembly" + src.name = "anchored windoor assembly" //Adding airlock electronics for access. Step 6 complete. else if(istype(W, /obj/item/weapon/airlock_electronics) && W:icon_state != "door_electronics_smoked") @@ -175,7 +171,7 @@ obj/structure/windoor_assembly/Destroy() user.drop_item() W.loc = src user << "You've installed the airlock electronics!" - src.name = "Near finished Windoor Assembly" + src.name = "near finished windoor assembly" src.electronics = W else W.loc = src.loc @@ -189,9 +185,9 @@ obj/structure/windoor_assembly/Destroy() if(!src || !src.electronics) return user << "You've removed the airlock electronics!" if(src.secure) - src.name = "Secure Wired Windoor Assembly" + src.name = "secure wired windoor assembly" else - src.name = "Wired Windoor Assembly" + src.name = "wired windoor assembly" var/obj/item/weapon/airlock_electronics/ae = electronics electronics = null ae.loc = src.loc @@ -222,6 +218,9 @@ obj/structure/windoor_assembly/Destroy() windoor.base_state = "rightsecure" windoor.set_dir(src.dir) windoor.density = 0 + windoor.name = created_name + spawn(0) + windoor.close() if(src.electronics.one_access) windoor.req_access = null @@ -240,6 +239,9 @@ obj/structure/windoor_assembly/Destroy() windoor.base_state = "right" windoor.set_dir(src.dir) windoor.density = 0 + windoor.name = created_name + spawn(0) + windoor.close() if(src.electronics.one_access) windoor.req_access = null @@ -257,8 +259,11 @@ obj/structure/windoor_assembly/Destroy() ..() //Update to reflect changes(if applicable) - update_icon() + update_state() +/obj/structure/windoor_assembly/proc/update_state() + update_icon() + name += " ([created_name])" //Rotates the windoor assembly clockwise /obj/structure/windoor_assembly/verb/revrotate() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 8e6c2cd0d57..c419de639d6 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -161,6 +161,7 @@ if(reinf) tforce *= 0.25 if(health - tforce <= 7 && !reinf) anchored = 0 + update_verbs() update_nearby_icons() step(src, get_dir(AM, src)) take_damage(tforce) diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm index b62efa1c049..92d1cc36613 100644 --- a/code/game/objects/weapons.dm +++ b/code/game/objects/weapons.dm @@ -6,4 +6,10 @@ /obj/item/weapon/Bump(mob/M as mob) spawn(0) ..() - return \ No newline at end of file + return + +/obj/item/weapon/melee + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) \ No newline at end of file diff --git a/code/game/response_team.dm b/code/game/response_team.dm index fd7fbe1b9b2..60a17a1ff25 100644 --- a/code/game/response_team.dm +++ b/code/game/response_team.dm @@ -5,6 +5,7 @@ var/global/send_emergency_team = 0 // Used for automagic response teams // 'admin_emergency_team' for admin-spawned response teams var/ert_base_chance = 10 // Default base chance. Will be incremented by increment ERT chance. var/can_call_ert +var/silent_ert /client/proc/response_team() set name = "Dispatch Emergency Response Team" @@ -25,6 +26,8 @@ var/can_call_ert return if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes") return + if(alert("Do you want this Response Team to be announced?",,"Yes","No") != "Yes") + silent_ert = 1 if(get_security_level() != "red") // Allow admins to reconsider if the alert level isn't Red switch(alert("The station is not in red alert. Do you still want to dispatch a response team?",,"Yes","No")) if("No") @@ -117,8 +120,8 @@ proc/trigger_armed_response_team(var/force = 0) command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. Unfortunately, we were unable to send one at this time.", "[boss_name]") can_call_ert = 0 // Only one call per round, ladies. return - - command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "[boss_name]") + if(silent_ert == 0) + command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "[boss_name]") can_call_ert = 0 // Only one call per round, gentleman. send_emergency_team = 1 diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 9496413be73..12179163122 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -291,7 +291,6 @@ var/list/mechtoys = list( var/number_of_items = max(1, contains[typepath]) for(var/j = 1 to number_of_items) var/atom/B2 = new typepath(A) - if(SP.amount && B2:amount) B2:amount = SP.amount if(slip) slip.info += "
  • [B2.name]
  • " //add the item to the manifest //manifest finalisation diff --git a/code/game/trader_visit.dm b/code/game/trader_visit.dm new file mode 100644 index 00000000000..b589e0b8cc3 --- /dev/null +++ b/code/game/trader_visit.dm @@ -0,0 +1,69 @@ +//Based on the ERT setup + +var/global/send_beruang = 0 +var/can_call_traders = 1 + +/client/proc/trader_ship() + set name = "Dispatch Beruang Trader Ship" + set category = "Special Verbs" + set desc = "Invite players to join the Beruang." + + if(!holder) + usr << "Only administrators may use this command." + return + if(!ticker) + usr << "The game hasn't started yet!" + return + if(ticker.current_state == 1) + usr << "The round hasn't started yet!" + return + if(send_beruang) + usr << "The Beruang has already been sent this round!" + return + if(alert("Do you want to dispatch the Beruang trade ship?",,"Yes","No") != "Yes") + return + if(get_security_level() == "red") // Allow admins to reconsider if the alert level is Red + switch(alert("The station is in red alert. Do you still want to send traders?",,"Yes","No")) + if("No") + return + if(send_beruang) + usr << "Looks like somebody beat you to it!" + return + + message_admins("[key_name_admin(usr)] is dispatching the Beruang.", 1) + log_admin("[key_name(usr)] used Dispatch Beruang Trader Ship.") + trigger_trader_visit() + +client/verb/JoinTraders() + + set name = "Join Trader Visit" + set category = "IC" + + if(!MayRespawn(1)) + usr << "You cannot join the traders." + return + + if(istype(usr,/mob/observer/dead) || istype(usr,/mob/new_player)) + if(!send_beruang) + usr << "The Beruang is not currently heading to the station." + return + if(traders.current_antagonists.len >= traders.hard_cap) + usr << "The number of trader slots is already full!" + return + traders.create_default(usr) + else + usr << "You need to be an observer or new player to use this." + +proc/trigger_trader_visit() + if(!can_call_traders) + return + if(send_beruang) + return + + command_announcement.Announce("Incoming cargo hauler: Beruang (Reg: VRS 22EB1F11C2).", "[station_name()] Traffic Control") + + can_call_traders = 0 // Only one call per round. + send_beruang = 1 + + sleep(600 * 5) + send_beruang = 0 // Can no longer join the traders. diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index 927facec8d0..779f76fc933 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -57,6 +57,12 @@ var/list/flooring_types build_type = null /decl/flooring/snow + name = "snow" + desc = "A layer of many tiny bits of frozen water. It's hard to tell how deep it is." + icon = 'icons/turf/snow_new.dmi' + icon_base = "snow" + +/decl/flooring/snow/snow2 name = "snow" desc = "A layer of many tiny bits of frozen water. It's hard to tell how deep it is." icon = 'icons/turf/snow.dmi' diff --git a/code/game/turfs/flooring/flooring_premade.dm b/code/game/turfs/flooring/flooring_premade.dm index 86ec1b2891c..55795bc5b36 100644 --- a/code/game/turfs/flooring/flooring_premade.dm +++ b/code/game/turfs/flooring/flooring_premade.dm @@ -45,27 +45,6 @@ icon_state = "reinforced" initial_flooring = /decl/flooring/reinforced -/turf/simulated/floor/snow - name = "snow" - icon = 'icons/turf/snow.dmi' - icon_state = "snow" - initial_flooring = /decl/flooring/snow - -/turf/simulated/floor/snow/gravsnow - name = "snow" - icon_state = "gravsnow" - initial_flooring = /decl/flooring/snow/gravsnow - -/turf/simulated/floor/snow/plating - name = "snowy playing" - icon_state = "snowyplating" - initial_flooring = /decl/flooring/snow/plating - -/turf/simulated/floor/snow/plating/drift - name = "snowy plating" - icon_state = "snowyplayingdrift" - initial_flooring = /decl/flooring/snow/plating/drift - /turf/simulated/floor/reinforced/airless oxygen = 0 nitrogen = 0 @@ -225,4 +204,57 @@ /turf/simulated/floor/beach/water/ocean */ /turf/simulated/floor/airless/ceiling -/turf/simulated/floor/plating \ No newline at end of file +/turf/simulated/floor/plating + + +//**** Here lives snow **** +/turf/simulated/floor/snow + name = "snow" + icon = 'icons/turf/snow_new.dmi' + icon_state = "snow" + var/list/crossed_dirs = list() + +/turf/simulated/floor/snow/snow2 + name = "snow" + icon = 'icons/turf/snow.dmi' + icon_state = "snow" + initial_flooring = /decl/flooring/snow + +/turf/simulated/floor/snow/gravsnow + name = "snow" + icon_state = "gravsnow" + initial_flooring = /decl/flooring/snow/gravsnow + +/turf/simulated/floor/snow/plating + name = "snowy playing" + icon_state = "snowyplating" + initial_flooring = /decl/flooring/snow/plating + +/turf/simulated/floor/snow/plating/drift + name = "snowy plating" + icon_state = "snowyplayingdrift" + initial_flooring = /decl/flooring/snow/plating/drift + +#define FOOTSTEP_SPRITE_AMT 2 + +/turf/snow/Entered(atom/A) + if(ismob(A)) + var/mdir = "[A.dir]" + if(crossed_dirs[mdir]) + crossed_dirs[mdir] = min(crossed_dirs[mdir] + 1, FOOTSTEP_SPRITE_AMT) + else + crossed_dirs[mdir] = 1 + + update_icon() + + . = ..() + +/turf/snow/update_icon() + overlays.Cut() + for(var/d in crossed_dirs) + var/amt = crossed_dirs[d] + + for(var/i in 1 to amt) + overlays += icon(icon, "footprint[i]", text2num(d)) + +//**** Here ends snow **** \ No newline at end of file diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 62b8f3699d1..67a429b2d0c 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -33,6 +33,21 @@ overlays -= wet_overlay wet_overlay = null +/turf/simulated/proc/freeze_floor() + if(!wet) // Water is required for it to freeze. + return + wet = 3 // icy + if(wet_overlay) + overlays -= wet_overlay + wet_overlay = null + wet_overlay = image('icons/turf/overlays.dmi',src,"snowfloor") + overlays += wet_overlay + spawn(5 MINUTES) + wet = 0 + if(wet_overlay) + overlays -= wet_overlay + wet_overlay = null + /turf/simulated/clean_blood() for(var/obj/effect/decal/cleanable/blood/B in contents) B.clean_blood() @@ -132,6 +147,7 @@ if(3) // Ice floor_type = "icy" slip_stun = 4 + slip_dist = 2 if(M.slip("the [floor_type] floor",slip_stun)) for(var/i = 0;i= 0.5) // Time to reflect lasers. + var/new_damage = damage * material.reflectivity + var/outgoing_damage = damage - new_damage + damage = new_damage + Proj.damage = outgoing_damage + + visible_message("\The [src] reflects \the [Proj]!") + + // Find a turf near or on the original location to bounce to + var/new_x = Proj.starting.x + pick(0, 0, 0, -1, 1, -2, 2) + var/new_y = Proj.starting.y + pick(0, 0, 0, -1, 1, -2, 2) + //var/turf/curloc = get_turf(src) + var/turf/curloc = get_step(src, get_dir(src, Proj.starting)) + + Proj.penetrating += 1 // Needed for the beam to get out of the wall. + + // redirect the projectile + Proj.redirect(new_x, new_y, curloc, null) + take_damage(damage) return diff --git a/code/game/turfs/snow/snow.dm b/code/game/turfs/snow/snow.dm new file mode 100644 index 00000000000..b09275ca410 --- /dev/null +++ b/code/game/turfs/snow/snow.dm @@ -0,0 +1,51 @@ +/turf/snow + name = "snow" + + dynamic_lighting = 0 + icon = 'icons/turf/snow_new.dmi' + icon_state = "snow" + + oxygen = MOLES_O2STANDARD * 1.15 + nitrogen = MOLES_N2STANDARD * 1.15 + + temperature = TN60C + var/list/crossed_dirs = list() + +#define FOOTSTEP_SPRITE_AMT 2 + +/turf/snow/Entered(atom/A) + if(ismob(A)) + var/mdir = "[A.dir]" + if(crossed_dirs[mdir]) + crossed_dirs[mdir] = min(crossed_dirs[mdir] + 1, FOOTSTEP_SPRITE_AMT) + else + crossed_dirs[mdir] = 1 + + update_icon() + + . = ..() + +/turf/snow/update_icon() + overlays.Cut() + for(var/d in crossed_dirs) + var/amt = crossed_dirs[d] + + for(var/i in 1 to amt) + overlays += icon(icon, "footprint[i]", text2num(d)) + +/turf/snow/snow2 + name = "snow" + icon = 'icons/turf/snow.dmi' + icon_state = "snow" + +/turf/snow/gravsnow + name = "snow" + icon_state = "gravsnow" + +/turf/snow/plating + name = "snowy playing" + icon_state = "snowyplating" + +/turf/snow/drift + name = "snowy plating" + icon_state = "snowyplayingdrift" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 33921405659..8bfb4ebf59a 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -38,9 +38,6 @@ else luminosity = 1 -/turf/proc/update_icon() - return - /turf/Destroy() turfs -= src ..() diff --git a/code/game/turfs/unsimulated/planetary.dm b/code/game/turfs/unsimulated/planetary.dm new file mode 100644 index 00000000000..17cd62ffbbd --- /dev/null +++ b/code/game/turfs/unsimulated/planetary.dm @@ -0,0 +1,47 @@ +// This is a wall you surround the area of your "planet" with, that makes the atmosphere inside stay within bounds, even if canisters +// are opened or other strange things occur. +/turf/unsimulated/wall/planetary + name = "railroading" + desc = "Choo choo!" + icon = 'icons/turf/walls.dmi' + icon_state = "riveted" + opacity = 1 + density = 1 + alpha = 0 + blocks_air = 0 + + // Set these to get your desired planetary atmosphere. + oxygen = 0 + nitrogen = 0 + carbon_dioxide = 0 + phoron = 0 + temperature = T20C + +// Normal station/earth air. +/turf/unsimulated/wall/planetary/normal + oxygen = MOLES_O2STANDARD + nitrogen = MOLES_N2STANDARD + +/turf/unsimulated/wall/planetary/firnir + temperature = 570 + carbon_dioxide = 0.04863 + +/turf/unsimulated/wall/planetary/tyr + temperature = 405 + carbon_dioxide = 0.15848 + +// Wiki says it's 92.6 kPa, composition 18.1% O2 80.8% N2 1.1% trace. We're gonna pretend trace is actually nitrogen. +/turf/unsimulated/wall/planetary/sif + oxygen = 114.50978 * 0.181 + nitrogen = 114.50978 * 0.819 + temperature = 243.15 // Roughly -30C / -22F + +// Fairly close to Mars in terms of temperature and pressure. +/turf/unsimulated/wall/planetary/magni + carbon_dioxide = 0.90998361 + temperature = 202 + +/turf/unsimulated/wall/planetary/desert + oxygen = MOLES_O2STANDARD + nitrogen = MOLES_N2STANDARD + temperature = 310.92 // About 37.7C / 100F \ No newline at end of file diff --git a/code/game/verbs/advanced_who.dm b/code/game/verbs/advanced_who.dm new file mode 100644 index 00000000000..41b45760f9f --- /dev/null +++ b/code/game/verbs/advanced_who.dm @@ -0,0 +1,82 @@ + +/client/verb/who_advanced() + set name = "Advanced Who" + set category = "OOC" + + var/msg = "Current Players:\n" + + var/list/Lines = list() + + if(holder && (R_ADMIN & holder.rights || R_MOD & holder.rights)) + for(var/client/C in clients) + var/entry = "\t[C.key]" + if(C.holder && C.holder.fakekey) + entry += " (as [C.holder.fakekey])" + entry += " - Playing as [C.mob.real_name]" + switch(C.mob.stat) + if(UNCONSCIOUS) + entry += " - Unconscious" + if(DEAD) + if(isobserver(C.mob)) + var/mob/observer/dead/O = C.mob + if(O.started_as_observer) + entry += " - Observing" + else + entry += " - DEAD" + else + entry += " - DEAD" + + var/age + if(isnum(C.player_age)) + age = C.player_age + else + age = 0 + + if(age <= 1) + age = "[age]" + else if(age < 10) + age = "[age]" + + entry += " - [age]" + + if(is_special_character(C.mob)) + entry += " - Antagonist" + + if(C.is_afk()) + var/seconds = C.last_activity_seconds() + entry += " (AFK - " + entry += "[round(seconds / 60)] minutes, " + entry += "[seconds % 60] seconds)" + + entry += " (?)" + + Lines += entry + else + for(var/client/C in clients) + if(C.holder && C.holder.fakekey) + var/entry = "\t[C.key]" + var/mob/observer/dead/O = C.mob + entry += C.holder.fakekey + if(isobserver(O)) + entry += " - Observing" + else if(istype(O,/mob/new_player)) + entry += " - In Lobby" + else + entry += " - Playing" + Lines += entry + else + var/entry = "\t[C.key]" + var/mob/observer/dead/O = C.mob + if(isobserver(O)) //Woo, players can see + entry += " - Observing" + else if(istype(O,/mob/new_player)) + entry += " - In Lobby" + else + entry += " - Playing" + Lines += entry + + for(var/line in sortList(Lines)) + msg += "[line]\n" + + msg += "Total Players: [length(Lines)]" + src << msg diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index bed720d584a..874b6f3998b 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -27,6 +27,7 @@ src << "You can't commit suicide whilst restrained! ((You can type Ghost instead however.))" return suiciding = 1 + does_not_breathe = 0 //Prevents ling-suicide zombies, or something var/obj/item/held_item = get_active_hand() if(held_item) var/damagetype = held_item.suicide_act(src) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index c8dfc8deddc..8b50dfb095e 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -69,9 +69,11 @@ var/msg = "" var/modmsg = "" + var/devmsg = "" var/mentmsg = "" var/num_mods_online = 0 var/num_admins_online = 0 + var/num_devs_online = 0 var/num_mentors_online = 0 if(holder) for(var/client/C in admins) @@ -118,6 +120,23 @@ modmsg += "\n" num_mods_online++ + else if(R_SERVER & C.holder.rights) + devmsg += "\t[C] is a [C.holder.rank]" + if(isobserver(C.mob)) + devmsg += " - Observing" + else if(istype(C.mob,/mob/new_player)) + devmsg += " - Lobby" + else + devmsg += " - Playing" + + if(C.is_afk()) + var/seconds = C.last_activity_seconds() + devmsg += "(AFK - " + devmsg += "[round(seconds / 60)] minutes, " + devmsg += "[seconds % 60] seconds)" + devmsg += "\n" + num_devs_online++ + else if(R_MENTOR & C.holder.rights) mentmsg += "\t[C] is a [C.holder.rank]" if(isobserver(C.mob)) @@ -144,6 +163,9 @@ else if (R_MOD & C.holder.rights) modmsg += "\t[C] is a [C.holder.rank]\n" num_mods_online++ + else if (R_SERVER & C.holder.rights) + devmsg += "\t[C] is a [C.holder.rank]\n" + num_devs_online++ else if (R_MENTOR & C.holder.rights) mentmsg += "\t[C] is a [C.holder.rank]\n" num_mentors_online++ @@ -155,6 +177,9 @@ if(config.show_mods) msg += "\n Current Moderators ([num_mods_online]):\n" + modmsg + if(config.show_devs) + msg += "\n Current Developers ([num_devs_online]):\n" + devmsg + if(config.show_mentors) msg += "\n Current Mentors ([num_mentors_online]):\n" + mentmsg diff --git a/code/hub.dm b/code/hub.dm index 6c38b00143f..9bd4fae1d8a 100644 --- a/code/hub.dm +++ b/code/hub.dm @@ -1,8 +1,10 @@ /world hub = "Exadv1.spacestation13" - hub_password = "SORRYNOPASSWORD" + //hub_password = "SORRYNOPASSWORD" + hub_password = "kMZy3U5jJHSiBQjr" name = "Space Station 13" + /* This is for any host that would like their server to appear on the main SS13 hub. To use it, simply replace the password above, with the password found below, and it should work. If not, let us know on the main tgstation IRC channel of irc.rizon.net #tgstation13 we can help you there. @@ -10,4 +12,4 @@ If not, let us know on the main tgstation IRC channel of irc.rizon.net #tgstatio hub = "Exadv1.spacestation13" hub_password = "kMZy3U5jJHSiBQjr" name = "Space Station 13" -*/ \ No newline at end of file +*/ diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index e045c19f1ef..dc1cbf1c8cd 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1342,10 +1342,12 @@ proc/admin_notice(var/message, var/rights) if (H.paralysis == 0) H.paralysis = 8000 msg = "has paralyzed [key_name(H)]." + log_and_message_admins(msg) else - H.paralysis = 0 - msg = "has unparalyzed [key_name(H)]." - log_and_message_admins(msg) + if(alert(src, "[key_name(H)] is paralyzed, would you like to unparalyze them?",,"Yes","No") == "Yes") + H.paralysis = 0 + msg = "has unparalyzed [key_name(H)]." + log_and_message_admins(msg) /datum/admins/proc/set_tcrystals(mob/living/carbon/human/H as mob) set category = "Debug" set name = "Set Telecrystals" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index f049424b02e..1cb76cef8d3 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -80,6 +80,7 @@ var/list/admin_verbs_admin = list( /client/proc/man_up, /client/proc/global_man_up, /client/proc/response_team, // Response Teams admin verb, + /client/proc/trader_ship, // Trader ship admin verb, /client/proc/toggle_antagHUD_use, /client/proc/toggle_antagHUD_restrictions, /client/proc/allow_character_respawn, // Allows a ghost to respawn , diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index cf98ede72f1..261c95515a7 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -892,9 +892,9 @@ if (ticker && ticker.mode) return alert(usr, "The game has already started.", null, null, null, null) master_mode = href_list["c_mode2"] - log_admin("[key_name(usr)] set the mode as [master_mode].") - message_admins("\blue [key_name_admin(usr)] set the mode as [master_mode].", 1) - world << "\blue The mode is now: [master_mode]" + log_admin("[key_name(usr)] set the mode as [config.mode_names[master_mode]].") + message_admins("\blue [key_name_admin(usr)] set the mode as [config.mode_names[master_mode]].", 1) + world << "\blue The mode is now: [config.mode_names[master_mode]]" Game() // updates the main game menu world.save_mode(master_mode) .(href, list("c_mode"=1)) diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index 0ecc220ae2c..5a211d960b8 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -71,38 +71,61 @@ screen_loc = "NORTH,WEST+1" Click() switch(master.cl.buildmode) - if(1) - usr << "\blue ***********************************************************" - usr << "\blue Left Mouse Button = Construct / Upgrade" - usr << "\blue Right Mouse Button = Deconstruct / Delete / Downgrade" - usr << "\blue Left Mouse Button + ctrl = R-Window" - usr << "\blue Left Mouse Button + alt = Airlock" + if(1) // Basic Build + usr << "***********************************************************" + usr << "Left Mouse Button = Construct / Upgrade" + usr << "Right Mouse Button = Deconstruct / Delete / Downgrade" + usr << "Left Mouse Button + ctrl = R-Window" + usr << "Left Mouse Button + alt = Airlock" usr << "" - usr << "\blue Use the button in the upper left corner to" - usr << "\blue change the direction of built objects." - usr << "\blue ***********************************************************" - if(2) - usr << "\blue ***********************************************************" - usr << "\blue Right Mouse Button on buildmode button = Set object type" - usr << "\blue Middle Mouse Button on buildmode button= On/Off object type saying" - usr << "\blue Middle Mouse Button on turf/obj = Capture object type" - usr << "\blue Left Mouse Button on turf/obj = Place objects" - usr << "\blue Right Mouse Button = Delete objects" + usr << "Use the button in the upper left corner to" + usr << "change the direction of built objects." + usr << "***********************************************************" + if(2) // Adv. Build + usr << "***********************************************************" + usr << "Right Mouse Button on buildmode button = Set object type" + usr << "Middle Mouse Button on buildmode button= On/Off object type saying" + usr << "Middle Mouse Button on turf/obj = Capture object type" + usr << "Left Mouse Button on turf/obj = Place objects" + usr << "Right Mouse Button = Delete objects" + usr << "Mouse Button + ctrl = Copy object type" usr << "" - usr << "\blue Use the button in the upper left corner to" - usr << "\blue change the direction of built objects." - usr << "\blue ***********************************************************" - if(3) - usr << "\blue ***********************************************************" - usr << "\blue Right Mouse Button on buildmode button = Select var(type) & value" - usr << "\blue Left Mouse Button on turf/obj/mob = Set var(type) & value" - usr << "\blue Right Mouse Button on turf/obj/mob = Reset var's value" - usr << "\blue ***********************************************************" - if(4) - usr << "\blue ***********************************************************" - usr << "\blue Left Mouse Button on turf/obj/mob = Select" - usr << "\blue Right Mouse Button on turf/obj/mob = Throw" - usr << "\blue ***********************************************************" + usr << "Use the button in the upper left corner to" + usr << "change the direction of built objects." + usr << "***********************************************************" + if(3) // Edit + usr << "***********************************************************" + usr << "Right Mouse Button on buildmode button = Select var(type) & value" + usr << "Left Mouse Button on turf/obj/mob = Set var(type) & value" + usr << "Right Mouse Button on turf/obj/mob = Reset var's value" + usr << "***********************************************************" + if(4) // Throw + usr << "***********************************************************" + usr << "Left Mouse Button on turf/obj/mob = Select" + usr << "Right Mouse Button on turf/obj/mob = Throw" + usr << "***********************************************************" + if(5) // Room Build + usr << "***********************************************************" + usr << "Left Mouse Button on turf = Select as point A" + usr << "Right Mouse Button on turf = Select as point B" + usr << "Right Mouse Button on buildmode button = Change floor/wall type" + usr << "***********************************************************" + if(6) // Make Ladders + usr << "***********************************************************" + usr << "Left Mouse Button on turf = Set as upper ladder loc" + usr << "Right Mouse Button on turf = Set as lower ladder loc" + usr << "***********************************************************" + if(7) // Move Into Contents + usr << "***********************************************************" + usr << "Left Mouse Button on turf/obj/mob = Select" + usr << "Right Mouse Button on turf/obj/mob = Move into selection" + usr << "***********************************************************" + if(8) // Make Lights + usr << "***********************************************************" + usr << "Left Mouse Button on turf/obj/mob = Make it glow" + usr << "Right Mouse Button on turf/obj/mob = Reset glowing" + usr << "Right Mouse Button on buildmode button = Change glow properties" + usr << "***********************************************************" return 1 /obj/effect/bmode/buildquit @@ -144,62 +167,100 @@ var/objholder = /obj/structure/closet var/objsay = 1 - Click(location, control, params) - var/list/pa = params2list(params) + var/wall_holder = /turf/simulated/wall + var/floor_holder = /turf/simulated/floor/plating + var/turf/coordA = null + var/turf/coordB = null - if(pa.Find("middle")) - switch(master.cl.buildmode) - if(2) - objsay=!objsay + var/new_light_color = "#FFFFFF" + var/new_light_range = 3 + var/new_light_intensity = 3 + +/obj/effect/bmode/buildmode/Click(location, control, params) + var/list/pa = params2list(params) + + if(pa.Find("middle")) + switch(master.cl.buildmode) + if(2) + objsay=!objsay - if(pa.Find("left")) - switch(master.cl.buildmode) - if(1) - master.cl.buildmode = 2 - src.icon_state = "buildmode2" - if(2) - master.cl.buildmode = 3 - src.icon_state = "buildmode3" - if(3) - master.cl.buildmode = 4 - src.icon_state = "buildmode4" - if(4) - master.cl.buildmode = 1 - src.icon_state = "buildmode1" + if(pa.Find("left")) + switch(master.cl.buildmode) + if(1) + master.cl.buildmode = 2 + src.icon_state = "buildmode2" + if(2) + master.cl.buildmode = 3 + src.icon_state = "buildmode3" + if(3) + master.cl.buildmode = 4 + src.icon_state = "buildmode4" + if(4) + master.cl.buildmode = 5 + src.icon_state = "buildmode5" + if(5) + master.cl.buildmode = 6 + src.icon_state = "buildmode6" + if(6) + master.cl.buildmode = 7 + src.icon_state = "buildmode7" + if(7) + master.cl.buildmode = 8 + src.icon_state = "buildmode8" + if(8) + master.cl.buildmode = 1 + src.icon_state = "buildmode1" - else if(pa.Find("right")) - switch(master.cl.buildmode) - if(1) + else if(pa.Find("right")) + switch(master.cl.buildmode) + if(1) // Basic Build + return 1 + if(2) // Adv. Build + objholder = get_path_from_partial_text(/obj/structure/closet) + + if(3) // Edit + var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine") + + master.buildmode.varholder = input(usr,"Enter variable name:" ,"Name", "name") + if(master.buildmode.varholder in locked && !check_rights(R_DEBUG,0)) return 1 - if(2) - objholder = text2path(input(usr,"Enter typepath:" ,"Typepath","/obj/structure/closet")) - if(!ispath(objholder)) - objholder = /obj/structure/closet - alert("That path is not allowed.") - else - if(ispath(objholder,/mob) && !check_rights(R_DEBUG,0)) - objholder = /obj/structure/closet - if(3) - var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine") - - master.buildmode.varholder = input(usr,"Enter variable name:" ,"Name", "name") - if(master.buildmode.varholder in locked && !check_rights(R_DEBUG,0)) - return 1 - var/thetype = input(usr,"Select variable type:" ,"Type") in list("text","number","mob-reference","obj-reference","turf-reference") - if(!thetype) return 1 - switch(thetype) - if("text") - master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value", "value") as text - if("number") - master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value", 123) as num - if("mob-reference") - master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as mob in mob_list - if("obj-reference") - master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as obj in world - if("turf-reference") - master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as turf in world - return 1 + var/thetype = input(usr,"Select variable type:" ,"Type") in list("text","number","mob-reference","obj-reference","turf-reference") + if(!thetype) return 1 + switch(thetype) + if("text") + master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value", "value") as text + if("number") + master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value", 123) as num + if("mob-reference") + master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as mob in mob_list + if("obj-reference") + master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as obj in world + if("turf-reference") + master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as turf in world + if(5) // Room build + var/choice = alert("Would you like to change the floor or wall holders?","Room Builder", "Floor", "Wall") + switch(choice) + if("Floor") + floor_holder = get_path_from_partial_text(/turf/simulated/floor/plating) + if("Wall") + wall_holder = get_path_from_partial_text(/turf/simulated/wall) + if(8) // Lights + var/choice = alert("Change the new light range, power, or color?", "Light Maker", "Range", "Power", "Color") + switch(choice) + if("Range") + var/input = input("New light range.","Light Maker",3) as null|num + if(input) + new_light_range = input + if("Power") + var/input = input("New light power.","Light Maker",3) as null|num + if(input) + new_light_intensity = input + if("Color") + var/input = input("New light color.","Light Maker",3) as null|color + if(input) + new_light_color = input + return 1 /proc/build_click(var/mob/user, buildmode, params, var/obj/object) var/obj/effect/bmode/buildholder/holder = null @@ -211,7 +272,7 @@ var/list/pa = params2list(params) switch(buildmode) - if(1) + if(1) // Basic Build if(istype(object,/turf) && pa.Find("left") && !pa.Find("alt") && !pa.Find("ctrl") ) if(istype(object,/turf/space)) var/turf/T = object @@ -260,8 +321,8 @@ if(NORTHWEST) var/obj/structure/window/reinforced/WIN = new/obj/structure/window/reinforced(get_turf(object)) WIN.set_dir(NORTHWEST) - if(2) - if(pa.Find("left")) + if(2) // Adv. Build + if(pa.Find("left") && !pa.Find("ctrl")) if(ispath(holder.buildmode.objholder,/turf)) var/turf/T = get_turf(object) T.ChangeTurf(holder.buildmode.objholder) @@ -269,27 +330,31 @@ var/obj/A = new holder.buildmode.objholder (get_turf(object)) A.set_dir(holder.builddir.dir) else if(pa.Find("right")) - if(isobj(object)) qdel(object) + if(isobj(object)) + qdel(object) + else if(pa.Find("ctrl")) + holder.buildmode.objholder = object.type + user << "[object]([object.type]) copied to buildmode." if(pa.Find("middle")) holder.buildmode.objholder = text2path("[object.type]") if(holder.buildmode.objsay) usr << "[object.type]" - if(3) + if(3) // Edit if(pa.Find("left")) //I cant believe this shit actually compiles. if(object.vars.Find(holder.buildmode.varholder)) log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]") object.vars[holder.buildmode.varholder] = holder.buildmode.valueholder else - usr << "\red [initial(object.name)] does not have a var called '[holder.buildmode.varholder]'" + user << "[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'" if(pa.Find("right")) if(object.vars.Find(holder.buildmode.varholder)) log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]") object.vars[holder.buildmode.varholder] = initial(object.vars[holder.buildmode.varholder]) else - usr << "\red [initial(object.name)] does not have a var called '[holder.buildmode.varholder]'" + user << "[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'" - if(4) + if(4) // Throw if(pa.Find("left")) if(istype(object, /atom/movable)) holder.throw_atom = object @@ -297,3 +362,127 @@ if(holder.throw_atom) holder.throw_atom.throw_at(object, 10, 1) log_admin("[key_name(usr)] threw [holder.throw_atom] at [object]") + if(5) // Room build + if(pa.Find("left")) + holder.buildmode.coordA = get_turf(object) + user << "Defined [object] ([object.type]) as point A." + + if(pa.Find("right")) + holder.buildmode.coordB = get_turf(object) + user << "Defined [object] ([object.type]) as point B." + + if(holder.buildmode.coordA && holder.buildmode.coordB) + user << "A and B set, creating rectangle." + holder.buildmode.make_rectangle( + holder.buildmode.coordA, + holder.buildmode.coordB, + holder.buildmode.wall_holder, + holder.buildmode.floor_holder + ) + holder.buildmode.coordA = null + holder.buildmode.coordB = null + if(6) // Ladders + if(pa.Find("left")) + holder.buildmode.coordA = get_turf(object) + user << "Defined [object] ([object.type]) as upper ladder location." + + if(pa.Find("right")) + holder.buildmode.coordB = get_turf(object) + user << "Defined [object] ([object.type]) as lower ladder location." + + if(holder.buildmode.coordA && holder.buildmode.coordB) + user << "Ladder locations set, building ladders." + var/obj/structure/ladder/A = new /obj/structure/ladder(holder.buildmode.coordA) + var/obj/structure/ladder/B = new /obj/structure/ladder(holder.buildmode.coordB) + A.target = B + B.target = A + B.icon_state = "ladderup" + holder.buildmode.coordA = null + holder.buildmode.coordB = null + if(7) // Move into contents + if(pa.Find("left")) + if(istype(object, /atom)) + holder.throw_atom = object + if(pa.Find("right")) + if(holder.throw_atom && istype(object, /atom/movable)) + object.forceMove(holder.throw_atom) + log_admin("[key_name(usr)] moved [object] into [holder.throw_atom].") + if(8) // Lights + if(pa.Find("left")) + if(object) + object.set_light(holder.buildmode.new_light_range, holder.buildmode.new_light_intensity, holder.buildmode.new_light_color) + if(pa.Find("right")) + if(object) + object.set_light(0, 0, "#FFFFFF") + +/obj/effect/bmode/buildmode/proc/get_path_from_partial_text(default_path) + var/desired_path = input("Enter full or partial typepath.","Typepath","[default_path]") + + var/list/types = typesof(/atom) + var/list/matches = list() + + for(var/path in types) + if(findtext("[path]", desired_path)) + matches += path + + if(matches.len==0) + alert("No results found. Sorry.") + return + + var/result = null + + if(matches.len==1) + result = matches[1] + else + result = input("Select an atom type", "Spawn Atom", matches[1]) as null|anything in matches + if(!objholder) + result = default_path + return result + +/obj/effect/bmode/buildmode/proc/make_rectangle(var/turf/A, var/turf/B, var/turf/wall_type, var/turf/floor_type) + if(!A || !B) // No coords + return + if(A.z != B.z) // Not same z-level + return + + var/height = A.y - B.y + var/width = A.x - B.x + var/z_level = A.z + + var/turf/lower_left_corner = null + // First, try to find the lowest part + var/desired_y = 0 + if(A.y <= B.y) + desired_y = A.y + else + desired_y = B.y + + //Now for the left-most part. + var/desired_x = 0 + if(A.x <= B.x) + desired_x = A.x + else + desired_x = B.x + + lower_left_corner = locate(desired_x, desired_y, z_level) + + // Now we can begin building the actual room. This defines the boundries for the room. + var/low_bound_x = lower_left_corner.x + var/low_bound_y = lower_left_corner.y + + var/high_bound_x = lower_left_corner.x + abs(width) + var/high_bound_y = lower_left_corner.y + abs(height) + + for(var/i = low_bound_x, i <= high_bound_x, i++) + for(var/j = low_bound_y, j <= high_bound_y, j++) + var/turf/T = locate(i, j, z_level) + if(i == low_bound_x || i == high_bound_x || j == low_bound_y || j == high_bound_y) + if(isturf(wall_type)) + T.ChangeTurf(wall_type) + else + new wall_type(T) + else + if(isturf(floor_type)) + T.ChangeTurf(floor_type) + else + new floor_type(T) \ No newline at end of file diff --git a/code/modules/admin/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm index 265c16a8689..35931f8e545 100644 --- a/code/modules/admin/verbs/custom_event.dm +++ b/code/modules/admin/verbs/custom_event.dm @@ -7,7 +7,7 @@ src << "Only administrators may use this command." return - var/input = sanitize(input(usr, "Enter the description of the custom event. Be descriptive. To cancel the event, make this blank or hit cancel.", "Custom Event", custom_event_msg) as message|null, MAX_BOOK_MESSAGE_LEN, extra = 0) + var/input = sanitize(input(usr, "Enter the description of the custom event. Be descriptive. To cancel the event, make this blank or hit cancel.", "Custom Event", custom_event_msg) as message|null, MAX_PAPER_MESSAGE_LEN, extra = 0) if(!input || input == "") custom_event_msg = null log_admin("[usr.key] has cleared the custom event text.") diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 23f5a75e2c3..844f74b5f65 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -21,6 +21,7 @@ if(R_ADMIN & C.holder.rights) if(C.is_preference_enabled(/datum/client_preference/admin/show_chat_prayers)) C << msg + C << 'sound/effects/ding.ogg' usr << "Your prayers have been received by the gods." feedback_add_details("admin_verb","PR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -31,9 +32,11 @@ for(var/client/C in admins) if(R_ADMIN & C.holder.rights) C << msg + C << 'sound/machines/signal.ogg' /proc/Syndicate_announce(var/msg, var/mob/Sender) msg = "\blue ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender, src)]) (CA) (BSA) (RPLY): [msg]" for(var/client/C in admins) if(R_ADMIN & C.holder.rights) C << msg + C << 'sound/machines/signal.ogg' \ No newline at end of file diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 170f9302f9a..d4b05091471 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -349,111 +349,146 @@ Traitors and the like can also be revived with the previous role mostly intact. /N */ /client/proc/respawn_character() set category = "Special Verbs" - set name = "Respawn Character" - set desc = "Respawn a person that has been gibbed/dusted/killed. They must be a ghost for this to work and preferably should not have a body to go back into." + set name = "Spawn Character" + set desc = "(Re)Spawn a client's loaded character." if(!holder) src << "Only administrators may use this command." return - var/input = ckey(input(src, "Please specify which key will be respawned.", "Key", "")) - if(!input) + + //I frontload all the questions so we don't have a half-done process while you're reading. + var/client/picked_client = input(src, "Please specify which client's character to spawn.", "Client", "") as null|anything in clients + if(!picked_client) return - var/mob/observer/dead/G_found - for(var/mob/observer/dead/G in player_list) - if(G.ckey == input) - G_found = G - break - - if(!G_found)//If a ghost was not found. - usr << "There is no active key like that in the game or the person is not currently a ghost." + var/location = alert(src,"Please specify where to spawn them.", "Location", "Right Here", "Arrivals", "Cancel") + if(!location) return - var/mob/living/carbon/human/new_character = new(pick(latejoin))//The mob being spawned. - - var/datum/data/record/record_found //Referenced to later to either randomize or not randomize the character. - if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something - /*Try and locate a record for the person being respawned through data_core. - This isn't an exact science but it does the trick more often than not.*/ - var/id = md5("[G_found.real_name][G_found.mind.assigned_role]") - for(var/datum/data/record/t in data_core.locked) - if(t.fields["id"]==id) - record_found = t//We shall now reference the record. - break - - if(record_found)//If they have a record we can determine a few things. - new_character.real_name = record_found.fields["name"] - new_character.gender = record_found.fields["sex"] - new_character.age = record_found.fields["age"] - new_character.b_type = record_found.fields["b_type"] + var/announce = alert(src,"Announce as if they had just arrived?", "Announce", "Yes", "No", "Cancel") + if(announce == "Cancel") + return + else if(announce == "Yes") //Too bad buttons can't just have 1/0 values and different display strings + announce = 1 else - new_character.gender = pick(MALE,FEMALE) - var/datum/preferences/A = new() - A.randomize_appearance_and_body_for(new_character) - new_character.real_name = G_found.real_name + announce = 0 - if(!new_character.real_name) - if(new_character.gender == MALE) - new_character.real_name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + var/inhabit = alert(src,"Put the person into the spawned mob?", "Inhabit", "Yes", "No", "Cancel") + if(inhabit == "Cancel") + return + else if(inhabit == "Yes") + inhabit = 1 + else + inhabit = 0 + + //Name matching is ugly but mind doesn't persist to look at. + var/charjob + var/records + var/datum/data/record/record_found + record_found = find_general_record("name",picked_client.prefs.real_name) + + //Found their record, they were spawned previously + if(record_found) + var/samejob = alert(src,"Found [picked_client.prefs.real_name] in data core. They were [record_found.fields["real_rank"]] this round. Assign same job? They will not be re-added to the manifest/records, either way.","Previously spawned","Yes","Assistant","No") + if(samejob == "Yes") + charjob = record_found.fields["real_rank"] + else if(samejob == "Assistant") + charjob = "Assistant" + else + records = alert(src,"No data core entry detected. Would you like add them to the manifest, and sec/med/HR records?","Records","Yes","No","Cancel") + if(records == "Cancel") + return + if(records == "Yes") + records = 1 else - new_character.real_name = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) - new_character.name = new_character.real_name + records = 0 - if(G_found.mind && !G_found.mind.active) - G_found.mind.transfer_to(new_character) //be careful when doing stuff like this! I've already checked the mind isn't in use - new_character.mind.special_verbs = list() - else - new_character.mind_initialize() - if(!new_character.mind.assigned_role) new_character.mind.assigned_role = "Assistant"//If they somehow got a null assigned role. + //Well you're not reloading their job or they never had one. + if(!charjob) + var/pickjob = input(src,"Pick a job to assign them (or none).","Job Select","-No Job-") as null|anything in joblist + "-No Job-" + if(!pickjob) + return + if(pickjob != "-No Job-") + charjob = pickjob - //DNA - if(record_found)//Pull up their name from database records if they did have a mind. - new_character.dna = new()//Let's first give them a new DNA. - new_character.dna.unique_enzymes = record_found.fields["b_dna"]//Enzymes are based on real name but we'll use the record for conformity. + //If you've picked a job by now, you can equip them. + var/equipment + if(charjob) + equipment = alert(src,"Spawn them with equipment?", "Equipment", "Yes", "No", "Cancel") + if(equipment == "Cancel") + return + else if(equipment == "Yes") + equipment = 1 + else + equipment = 0 - // I HATE BYOND. HATE. HATE. - N3X - var/list/newSE= record_found.fields["enzymes"] - var/list/newUI = record_found.fields["identity"] - new_character.dna.SE = newSE.Copy() //This is the default of enzymes so I think it's safe to go with. - new_character.dna.UpdateSE() - new_character.UpdateAppearance(newUI.Copy())//Now we configure their appearance based on their unique identity, same as with a DNA machine or somesuch. - else//If they have no records, we just do a random DNA for them, based on their random appearance/savefile. - new_character.dna.ready_dna(new_character) - - new_character.key = G_found.key - - /* - The code below functions with the assumption that the mob is already a traitor if they have a special role. - So all it does is re-equip the mob with powers and/or items. Or not, if they have no special role. - If they don't have a mind, they obviously don't have a special role. - */ - - //Two variables to properly announce later on. + //For logging later var/admin = key_name_admin(src) - var/player_key = G_found.key + var/player_key = picked_client.key - //Now for special roles and equipment. + var/mob/living/carbon/human/new_character + var/spawnloc + + //Where did you want to spawn them? + switch(location) + if("Right Here") //Spawn them on your turf + if(!src.mob) + src << "You can't use 'Right Here' when you are not 'Right Anywhere'!" + return + + spawnloc = get_turf(src.mob) + + if("Arrivals") //Spawn them at a latejoin spawnpoint + spawnloc = pick(latejoin) + + else //I have no idea how you're here + src << "Invalid spawn location choice." + return + + //Did we actually get a loc to spawn them? + if(!spawnloc) + src << "Couldn't get valid spawn location." + return + + new_character = new(spawnloc) + + //We were able to spawn them, right? + if(!new_character) + src << "Something went wrong and spawning failed." + return + + //Write the appearance and whatnot out to the character + picked_client.prefs.copy_to(new_character) + if(inhabit) + new_character.key = player_key + + //Were they any particular special role? If so, copy. var/datum/antagonist/antag_data = get_antag_data(new_character.mind.special_role) if(antag_data) antag_data.add_antagonist(new_character.mind) antag_data.place_mob(new_character) - else - job_master.EquipRank(new_character, new_character.mind.assigned_role, 1) - //Announces the character on all the systems, based on the record. - if(!issilicon(new_character))//If they are not a cyborg/AI. - if(!record_found && !player_is_antag(new_character.mind, only_offstation_roles = 1)) //If there are no records for them. If they have a record, this info is already in there. MODE people are not announced anyway. - //Power to the user! - if(alert(new_character,"Warning: No data core entry detected. Would you like to announce the arrival of this character by adding them to various databases, such as medical records?",,"No","Yes")=="Yes") - data_core.manifest_inject(new_character) + //If desired, apply equipment. + if(equipment && charjob) + job_master.EquipRank(new_character, charjob, 1) - if(alert(new_character,"Would you like an active AI to announce this character?",,"No","Yes")=="Yes") - call(/proc/AnnounceArrival)(new_character, new_character.mind.assigned_role) + //If desired, add records. + if(records) + data_core.manifest_inject(new_character) - message_admins("\blue [admin] has respawned [player_key] as [new_character.real_name].", 1) + //A redraw for good measure + new_character.update_icons() - new_character << "You have been fully respawned. Enjoy the game." + //If we're announcing their arrival + if(announce) + AnnounceArrival(new_character, new_character.mind.assigned_role) + + log_admin("[admin] has spawned [player_key]'s character [new_character.real_name].") + message_admins("[admin] has spawned [player_key]'s character [new_character.real_name].", 1) + + new_character << "You have been fully spawned. Enjoy the game." feedback_add_details("admin_verb","RSPCH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + return new_character /client/proc/cmd_admin_add_freeform_ai_law() diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 336231e530b..4463209157b 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -131,6 +131,7 @@ prefs.last_id = computer_id //these are gonna be used for banning . = ..() //calls mob.Login() + prefs.sanitize_preferences() if(custom_event_msg && custom_event_msg != "") src << "

    Custom Event

    " @@ -158,6 +159,7 @@ if(!void) void = new() + void.MakeGreed() screen += void if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates. @@ -286,6 +288,7 @@ 'html/panels.css', 'html/images/loading.gif', 'html/images/ntlogo.png', + 'html/images/sglogo.png', 'html/images/talisman.png', 'icons/pda_icons/pda_atmos.png', 'icons/pda_icons/pda_back.png', diff --git a/code/modules/client/preference_setup/_defines.dm b/code/modules/client/preference_setup/_defines.dm new file mode 100644 index 00000000000..0c4dbb60042 --- /dev/null +++ b/code/modules/client/preference_setup/_defines.dm @@ -0,0 +1,3 @@ +#define EQUIP_PREVIEW_LOADOUT 1 +#define EQUIP_PREVIEW_JOB 2 +#define EQUIP_PREVIEW_ALL (EQUIP_PREVIEW_LOADOUT|EQUIP_PREVIEW_JOB) diff --git a/code/modules/client/preference_setup/antagonism/01_basic.dm b/code/modules/client/preference_setup/antagonism/01_basic.dm index eefc531da15..e0a60b63135 100644 --- a/code/modules/client/preference_setup/antagonism/01_basic.dm +++ b/code/modules/client/preference_setup/antagonism/01_basic.dm @@ -7,15 +7,29 @@ var/global/list/uplink_locations = list("PDA", "Headset", "None") /datum/category_item/player_setup_item/antagonism/basic/load_character(var/savefile/S) S["uplinklocation"] >> pref.uplinklocation S["exploit_record"] >> pref.exploit_record + S["antag_faction"] >> pref.antag_faction + S["antag_vis"] >> pref.antag_vis /datum/category_item/player_setup_item/antagonism/basic/save_character(var/savefile/S) S["uplinklocation"] << pref.uplinklocation S["exploit_record"] << pref.exploit_record + S["antag_faction"] << pref.antag_faction + S["antag_vis"] << pref.antag_vis /datum/category_item/player_setup_item/antagonism/basic/sanitize_character() pref.uplinklocation = sanitize_inlist(pref.uplinklocation, uplink_locations, initial(pref.uplinklocation)) + if(!pref.antag_faction) pref.antag_faction = "None" + if(!pref.antag_vis) pref.antag_vis = "Hidden" + +// Moved from /datum/preferences/proc/copy_to() +/datum/category_item/player_setup_item/antagonism/basic/copy_to_mob(var/mob/living/carbon/human/character) + character.exploit_record = pref.exploit_record + character.antag_faction = pref.antag_faction + character.antag_vis = pref.antag_vis /datum/category_item/player_setup_item/antagonism/basic/content(var/mob/user) + . += "Faction: [pref.antag_faction]
    " + . += "Visibility: [pref.antag_vis]
    " . +="Uplink Type : [pref.uplinklocation]" . +="
    " . +="Exploitable information:
    " @@ -30,9 +44,29 @@ var/global/list/uplink_locations = list("PDA", "Headset", "None") return TOPIC_REFRESH if(href_list["exploitable_record"]) - var/exploitmsg = sanitize(input(user,"Set exploitable information about you here.","Exploitable Information", html_decode(pref.exploit_record)) as message|null, MAX_PAPER_MESSAGE_LEN, extra = 0) + var/exploitmsg = sanitize(input(user,"Set exploitable information about you here.","Exploitable Information", html_decode(pref.exploit_record)) as message|null, MAX_RECORD_LENGTH, extra = 0) if(!isnull(exploitmsg) && !jobban_isbanned(user, "Records") && CanUseTopic(user)) pref.exploit_record = exploitmsg return TOPIC_REFRESH + + if(href_list["antagfaction"]) + var/choice = input(user, "Please choose an antagonistic faction to work for.", "Character Preference", pref.antag_faction) as null|anything in antag_faction_choices + list("None","Other") + if(!choice || !CanUseTopic(user)) + return TOPIC_NOACTION + if(choice == "Other") + var/raw_choice = sanitize(input(user, "Please enter a faction.", "Character Preference") as text|null, MAX_NAME_LEN) + if(raw_choice) + pref.antag_faction = raw_choice + else + pref.antag_faction = choice + return TOPIC_REFRESH + + if(href_list["antagvis"]) + var/choice = input(user, "Please choose an antagonistic visibility level.", "Character Preference", pref.antag_vis) as null|anything in antag_visiblity_choices + if(!choice || !CanUseTopic(user)) + return TOPIC_NOACTION + else + pref.antag_vis = choice + return TOPIC_REFRESH return ..() diff --git a/code/modules/client/preference_setup/general/01_basic.dm b/code/modules/client/preference_setup/general/01_basic.dm index 27aa76cc306..050ec316382 100644 --- a/code/modules/client/preference_setup/general/01_basic.dm +++ b/code/modules/client/preference_setup/general/01_basic.dm @@ -29,9 +29,7 @@ datum/preferences/proc/set_biological_gender(var/gender) S["OOC_Notes"] << pref.metadata /datum/category_item/player_setup_item/general/basic/sanitize_character() - if(!pref.species) pref.species = "Human" - var/datum/species/S = all_species[pref.species ? pref.species : "Human"] - pref.age = sanitize_integer(pref.age, S.min_age, S.max_age, initial(pref.age)) + pref.age = sanitize_integer(pref.age, get_min_age(), get_max_age(), initial(pref.age)) pref.biological_gender = sanitize_inlist(pref.biological_gender, get_genders(), pick(get_genders())) pref.identifying_gender = (pref.identifying_gender in all_genders_define_list) ? pref.identifying_gender : pref.biological_gender pref.real_name = sanitize_name(pref.real_name, pref.species) @@ -40,6 +38,25 @@ datum/preferences/proc/set_biological_gender(var/gender) pref.spawnpoint = sanitize_inlist(pref.spawnpoint, spawntypes, initial(pref.spawnpoint)) pref.be_random_name = sanitize_integer(pref.be_random_name, 0, 1, initial(pref.be_random_name)) +// Moved from /datum/preferences/proc/copy_to() +/datum/category_item/player_setup_item/general/basic/copy_to_mob(var/mob/living/carbon/human/character) + if(config.humans_need_surnames) + var/firstspace = findtext(pref.real_name, " ") + var/name_length = length(pref.real_name) + if(!firstspace) //we need a surname + pref.real_name += " [pick(last_names)]" + else if(firstspace == name_length) + pref.real_name += "[pick(last_names)]" + + character.real_name = pref.real_name + character.name = character.real_name + if(character.dna) + character.dna.real_name = character.real_name + + character.gender = pref.biological_gender + character.identifying_gender = pref.identifying_gender + character.age = pref.age + /datum/category_item/player_setup_item/general/basic/content() . = list() . += "Name: " @@ -56,7 +73,6 @@ datum/preferences/proc/set_biological_gender(var/gender) . = jointext(.,null) /datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user) - var/datum/species/S = all_species[pref.species] if(href_list["rename"]) var/raw_name = input(user, "Choose your character's name:", "Character Name") as text|null if (!isnull(raw_name) && CanUseTopic(user)) @@ -89,10 +105,11 @@ datum/preferences/proc/set_biological_gender(var/gender) return TOPIC_REFRESH else if(href_list["age"]) - if(!pref.species) pref.species = "Human" - var/new_age = input(user, "Choose your character's age:\n([S.min_age]-[S.max_age])", "Character Preference", pref.age) as num|null + var/min_age = get_min_age() + var/max_age = get_max_age() + var/new_age = input(user, "Choose your character's age:\n([min_age]-[max_age])", "Character Preference", pref.age) as num|null if(new_age && CanUseTopic(user)) - pref.age = max(min(round(text2num(new_age)), S.max_age), S.min_age) + pref.age = max(min(round(text2num(new_age)), max_age), min_age) return TOPIC_REFRESH else if(href_list["spawnpoint"]) diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 7e9a803766d..5d4a73c64a4 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -49,7 +49,7 @@ var/list/available_languages = S.secondary_langs.Copy() for(var/L in all_languages) var/datum/language/lang = all_languages[L] - if(!(lang.flags & RESTRICTED) && (!config.usealienwhitelist || is_alien_whitelisted(user, L) || !(lang.flags & WHITELISTED))) + if(!(lang.flags & RESTRICTED) && (is_lang_whitelisted(user, lang))) available_languages |= L // make sure we don't let them waste slots on the default languages diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index a092b859b31..3c11e5ce318 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -1,7 +1,7 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-") /datum/preferences - var/dress_mob = TRUE + var/equip_preview_mob = EQUIP_PREVIEW_ALL /datum/category_item/player_setup_item/general/body name = "Body" @@ -76,6 +76,55 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(!pref.organ_data) pref.organ_data = list() if(!pref.rlimb_data) pref.rlimb_data = list() +// Moved from /datum/preferences/proc/copy_to() +/datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character) + // Copy basic values + character.r_eyes = pref.r_eyes + character.g_eyes = pref.g_eyes + character.b_eyes = pref.b_eyes + character.h_style = pref.h_style + character.r_hair = pref.r_hair + character.g_hair = pref.g_hair + character.b_hair = pref.b_hair + character.f_style = pref.f_style + character.r_facial = pref.r_facial + character.g_facial = pref.g_facial + character.b_facial = pref.b_facial + character.r_skin = pref.r_skin + character.g_skin = pref.g_skin + character.b_skin = pref.b_skin + character.s_tone = pref.s_tone + character.h_style = pref.h_style + character.f_style = pref.f_style + character.b_type = pref.b_type + + // Destroy/cyborgize organs and limbs. + for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO)) + var/status = pref.organ_data[name] + var/obj/item/organ/external/O = character.organs_by_name[name] + if(O) + if(status == "amputated") + O.remove_rejuv() + else if(status == "cyborg") + if(pref.rlimb_data[name]) + O.robotize(pref.rlimb_data[name]) + else + O.robotize() + + for(var/name in list(O_HEART,O_EYES,O_BRAIN)) + var/status = pref.organ_data[name] + if(!status) + continue + var/obj/item/organ/I = character.internal_organs_by_name[name] + if(I) + if(status == "assisted") + I.mechassist() + else if(status == "mechanical") + I.robotize() + else if(status == "digital") + I.digitize() + return + /datum/category_item/player_setup_item/general/body/content(var/mob/user) . = list() if(!pref.preview_icon) @@ -150,6 +199,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(ind > 1) . += ", " . += "\tSynthetic [organ_name]" + else if(status == "digital") + ++ind + if(ind > 1) + . += ", " + . += "\tDigital [organ_name]" else if(status == "assisted") ++ind if(ind > 1) @@ -172,8 +226,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O . += "Preview
    " . += "
    " - . += "
    [pref.dress_mob ? "Hide equipment" : "Show equipment"]" - + . += "
    [pref.equip_preview_mob & EQUIP_PREVIEW_LOADOUT ? "Hide loadout" : "Show loadout"]" + . += "
    [pref.equip_preview_mob & EQUIP_PREVIEW_JOB ? "Hide job gear" : "Show job gear"]" . += "" . += "Hair
    " @@ -277,8 +331,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O reset_limbs() // Safety for species with incompatible manufacturers; easier than trying to do it case by case. - var/datum/species/S = all_species[pref.species] - pref.age = max(min(pref.age, S.max_age), S.min_age) + var/min_age = get_min_age() + var/max_age = get_max_age() + pref.age = max(min(pref.age, max_age), min_age) return TOPIC_REFRESH_UPDATE_PREVIEW @@ -502,6 +557,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O var/list/organ_choices = list("Normal","Assisted","Mechanical") if(pref.organ_data[BP_TORSO] == "cyborg") organ_choices -= "Normal" + if(organ_name == "Brain") + organ_choices += "Digital" var/new_state = input(user, "What state do you wish the organ to be in?") as null|anything in organ_choices if(!new_state) return @@ -513,6 +570,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.organ_data[organ] = "assisted" if("Mechanical") pref.organ_data[organ] = "mechanical" + if("Digital") + pref.organ_data[organ] = "digital" return TOPIC_REFRESH else if(href_list["disabilities"]) @@ -520,8 +579,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.disabilities ^= disability_flag return TOPIC_REFRESH_UPDATE_PREVIEW - else if(href_list["toggle_clothing"]) - pref.dress_mob = !pref.dress_mob + else if(href_list["toggle_preview_value"]) + pref.equip_preview_mob ^= text2num(href_list["toggle_preview_value"]) return TOPIC_REFRESH_UPDATE_PREVIEW return ..() @@ -582,11 +641,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O dat += "

    " var/restricted = 0 - if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it! - if(!(current_species.spawn_flags & SPECIES_CAN_JOIN)) - restricted = 2 - else if((current_species.spawn_flags & SPECIES_IS_WHITELISTED) && !is_alien_whitelisted(preference_mob(),current_species)) - restricted = 1 + + if(!(current_species.spawn_flags & SPECIES_CAN_JOIN)) + restricted = 2 + else if(!is_alien_whitelisted(preference_mob(),current_species)) + restricted = 1 if(restricted) if(restricted == 1) diff --git a/code/modules/client/preference_setup/general/04_equipment.dm b/code/modules/client/preference_setup/general/04_equipment.dm index c455cef524a..537f2632e73 100644 --- a/code/modules/client/preference_setup/general/04_equipment.dm +++ b/code/modules/client/preference_setup/general/04_equipment.dm @@ -18,6 +18,30 @@ S["backbag"] << pref.backbag S["pdachoice"] << pref.pdachoice +// Moved from /datum/preferences/proc/copy_to() +/datum/category_item/player_setup_item/general/equipment/copy_to_mob(var/mob/living/carbon/human/character) + character.all_underwear.Cut() + character.all_underwear_metadata.Cut() + + for(var/underwear_category_name in pref.all_underwear) + var/datum/category_group/underwear/underwear_category = global_underwear.categories_by_name[underwear_category_name] + if(underwear_category) + var/underwear_item_name = pref.all_underwear[underwear_category_name] + character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name] + if(pref.all_underwear_metadata[underwear_category_name]) + character.all_underwear_metadata[underwear_category_name] = pref.all_underwear_metadata[underwear_category_name] + else + pref.all_underwear -= underwear_category_name + + // TODO - Looks like this is duplicating the work of sanitize_character() if so, remove + if(pref.backbag > 4 || pref.backbag < 1) + pref.backbag = 1 //Same as above + character.backbag = pref.backbag + + if(pref.pdachoice > 3 || pref.pdachoice < 1) + pref.pdachoice = 1 + character.pdachoice = pref.pdachoice + /datum/category_item/player_setup_item/general/equipment/sanitize_character() if(!islist(pref.gear)) pref.gear = list() diff --git a/code/modules/client/preference_setup/general/05_background.dm b/code/modules/client/preference_setup/general/05_background.dm index 5708d3c757e..c36ce858340 100644 --- a/code/modules/client/preference_setup/general/05_background.dm +++ b/code/modules/client/preference_setup/general/05_background.dm @@ -30,6 +30,16 @@ pref.nanotrasen_relation = sanitize_inlist(pref.nanotrasen_relation, COMPANY_ALIGNMENTS, initial(pref.nanotrasen_relation)) +// Moved from /datum/preferences/proc/copy_to() +/datum/category_item/player_setup_item/general/background/copy_to_mob(var/mob/living/carbon/human/character) + character.med_record = pref.med_record + character.sec_record = pref.sec_record + character.gen_record = pref.gen_record + character.home_system = pref.home_system + character.citizenship = pref.citizenship + character.personal_faction = pref.faction + character.religion = pref.religion + /datum/category_item/player_setup_item/general/background/content(var/mob/user) . += "Background Information
    " . += "[company_name] Relation: [pref.nanotrasen_relation]
    " @@ -105,19 +115,19 @@ return TOPIC_REFRESH else if(href_list["set_medical_records"]) - var/new_medical = sanitize(input(user,"Enter medical information here.","Character Preference", html_decode(pref.med_record)) as message|null, MAX_PAPER_MESSAGE_LEN, extra = 0) + var/new_medical = sanitize(input(user,"Enter medical information here.","Character Preference", html_decode(pref.med_record)) as message|null, MAX_RECORD_LENGTH, extra = 0) if(!isnull(new_medical) && !jobban_isbanned(user, "Records") && CanUseTopic(user)) pref.med_record = new_medical return TOPIC_REFRESH else if(href_list["set_general_records"]) - var/new_general = sanitize(input(user,"Enter employment information here.","Character Preference", html_decode(pref.gen_record)) as message|null, MAX_PAPER_MESSAGE_LEN, extra = 0) + var/new_general = sanitize(input(user,"Enter employment information here.","Character Preference", html_decode(pref.gen_record)) as message|null, MAX_RECORD_LENGTH, extra = 0) if(!isnull(new_general) && !jobban_isbanned(user, "Records") && CanUseTopic(user)) pref.gen_record = new_general return TOPIC_REFRESH else if(href_list["set_security_records"]) - var/sec_medical = sanitize(input(user,"Enter security information here.","Character Preference", html_decode(pref.sec_record)) as message|null, MAX_PAPER_MESSAGE_LEN, extra = 0) + var/sec_medical = sanitize(input(user,"Enter security information here.","Character Preference", html_decode(pref.sec_record)) as message|null, MAX_RECORD_LENGTH, extra = 0) if(!isnull(sec_medical) && !jobban_isbanned(user, "Records") && CanUseTopic(user)) pref.sec_record = sec_medical return TOPIC_REFRESH diff --git a/code/modules/client/preference_setup/general/06_flavor.dm b/code/modules/client/preference_setup/general/06_flavor.dm index b312bb95e9b..94525ee06ff 100644 --- a/code/modules/client/preference_setup/general/06_flavor.dm +++ b/code/modules/client/preference_setup/general/06_flavor.dm @@ -36,6 +36,18 @@ /datum/category_item/player_setup_item/general/flavor/sanitize_character() return +// Moved from /datum/preferences/proc/copy_to() +/datum/category_item/player_setup_item/general/flavor/copy_to_mob(var/mob/living/carbon/human/character) + character.flavor_texts["general"] = pref.flavor_texts["general"] + character.flavor_texts["head"] = pref.flavor_texts["head"] + character.flavor_texts["face"] = pref.flavor_texts["face"] + character.flavor_texts["eyes"] = pref.flavor_texts["eyes"] + character.flavor_texts["torso"] = pref.flavor_texts["torso"] + character.flavor_texts["arms"] = pref.flavor_texts["arms"] + character.flavor_texts["hands"] = pref.flavor_texts["hands"] + character.flavor_texts["legs"] = pref.flavor_texts["legs"] + character.flavor_texts["feet"] = pref.flavor_texts["feet"] + /datum/category_item/player_setup_item/general/flavor/content(var/mob/user) . += "Flavor:
    " . += "Set Flavor Text
    " diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index dd494b03bcc..8f2d5af5984 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -52,34 +52,38 @@ var/list/gear_datums = list() S["gear"] << pref.gear /datum/category_item/player_setup_item/loadout/proc/valid_gear_choices(var/max_cost) - var/list/valid_gear_choices = list() + . = list() + var/mob/preference_mob = preference_mob() for(var/gear_name in gear_datums) var/datum/gear/G = gear_datums[gear_name] - if(G.whitelisted && !is_alien_whitelisted(preference_mob(), G.whitelisted)) + + if(G.whitelisted && !is_alien_whitelisted(preference_mob, all_species[G.whitelisted])) continue if(max_cost && G.cost > max_cost) continue - valid_gear_choices += gear_name - return valid_gear_choices + . += gear_name /datum/category_item/player_setup_item/loadout/sanitize_character() + var/mob/preference_mob = preference_mob() if(!islist(pref.gear)) pref.gear = list() for(var/gear_name in pref.gear) if(!(gear_name in gear_datums)) pref.gear -= gear_name - var/total_cost = 0 for(var/gear_name in pref.gear) if(!gear_datums[gear_name]) + preference_mob << "You cannot have more than one of the \the [gear_name]" pref.gear -= gear_name else if(!(gear_name in valid_gear_choices())) + preference_mob << "You cannot take \the [gear_name] as you are not whitelisted for the species." pref.gear -= gear_name else var/datum/gear/G = gear_datums[gear_name] if(total_cost + G.cost > MAX_GEAR_COST) pref.gear -= gear_name + preference_mob << "You cannot afford to take \the [gear_name]" else total_cost += G.cost diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index 4a79d5c26b4..ba3cb42d894 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm @@ -45,6 +45,10 @@ display_name = "holster, hip" path = /obj/item/clothing/accessory/holster/hip +/datum/gear/accessory/holster/leg + display_name = "holster, leg" + path = /obj/item/clothing/accessory/holster/leg + /datum/gear/accessory/holster/waist display_name = "holster, waist" path = /obj/item/clothing/accessory/holster/waist diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index b659f8db139..a97d5776fcc 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -3,8 +3,12 @@ path = /obj/item/weapon/cane /datum/gear/dice - display_name = "d20" - path = /obj/item/weapon/dice/d20 + display_name = "dice pack" + path = /obj/item/weapon/storage/pill_bottle/dice + +/datum/gear/dice/nerd + display_name = "dice pack (gaming)" + path = /obj/item/weapon/storage/pill_bottle/dice_nerd /datum/gear/cards display_name = "deck of cards" diff --git a/code/modules/client/preference_setup/loadout/loadout_gloves.dm b/code/modules/client/preference_setup/loadout/loadout_gloves.dm index 244977334fc..91d20d8371c 100644 --- a/code/modules/client/preference_setup/loadout/loadout_gloves.dm +++ b/code/modules/client/preference_setup/loadout/loadout_gloves.dm @@ -48,4 +48,12 @@ /datum/gear/gloves/white display_name = "gloves, white" - path = /obj/item/clothing/gloves/white \ No newline at end of file + path = /obj/item/clothing/gloves/white + +/datum/gear/gloves/evening + display_name = "evening gloves" + path = /obj/item/clothing/gloves/evening + +/datum/gear/gloves/evening/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index a2635ef79c5..4ad804dccde 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -31,6 +31,21 @@ path = /obj/item/clothing/head/beret/sec/navy/hos allowed_roles = list("Head of Security") +/datum/gear/head/beret/csec + display_name = "beret, corporate (officer)" + path = /obj/item/clothing/head/beret/sec/corporate/officer + allowed_roles = list("Security Officer","Head of Security","Warden") + +/datum/gear/head/beret/csec_warden + display_name = "beret, corporate (warden)" + path = /obj/item/clothing/head/beret/sec/corporate/warden + allowed_roles = list("Head of Security","Warden") + +/datum/gear/head/beret/csec_hos + display_name = "beret, corporate (hos)" + path = /obj/item/clothing/head/beret/sec/corporate/hos + allowed_roles = list("Head of Security") + /datum/gear/head/beret/eng display_name = "beret, engie-orange" path = /obj/item/clothing/head/beret/engineering diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index 40bd1d767b8..6e6acf08bd3 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -54,6 +54,10 @@ display_name = "military jacket, alt" path = /obj/item/clothing/suit/storage/miljacket/alt +/datum/gear/suit/mil/green + display_name = "military jacket, green" + path = /obj/item/clothing/suit/storage/miljacket/green + /datum/gear/suit/hazard_vest display_name = "hazard vest" path = /obj/item/clothing/suit/storage/hazardvest @@ -176,6 +180,31 @@ path = /obj/item/clothing/suit/wcoat cost = 1 +/datum/gear/suit/wcoat/red + display_name = "red waistcoat" + path = /obj/item/clothing/suit/wcoat/red + +/datum/gear/suit/wcoat/grey + display_name = "grey waistcoat" + path = /obj/item/clothing/suit/wcoat/grey + +/datum/gear/suit/wcoat/brown + display_name = "brown waistcoat" + path = /obj/item/clothing/suit/wcoat/brown + +/datum/gear/suit/swvest + display_name = "black sweatervest" + path = /obj/item/clothing/suit/wcoat/swvest + cost = 1 + +/datum/gear/suit/swvest/blue + display_name = "blue sweatervest" + path = /obj/item/clothing/suit/wcoat/swvest/blue + +/datum/gear/suit/swvest/red + display_name = "red sweatervest" + path = /obj/item/clothing/suit/wcoat/swvest/red + /datum/gear/suit/forensics display_name = "forensics long, red" path = /obj/item/clothing/suit/storage/forensics/red/long @@ -208,7 +237,7 @@ /datum/gear/suit/wintercoat/security display_name = "winter coat, security" path = /obj/item/clothing/suit/storage/hooded/wintercoat/security - allowed_roles = list("Security Officer, Head of Security, Warden, Detective") + allowed_roles = list("Security Officer", "Head of Security", "Warden", "Detective") /datum/gear/suit/wintercoat/medical display_name = "winter coat, medical" @@ -267,4 +296,20 @@ for(var/track_style in typesof(/obj/item/clothing/suit/storage/toggle/track)) var/obj/item/clothing/suit/storage/toggle/track/track = track_style tracks[initial(track.name)] = track - gear_tweaks += new/datum/gear_tweak/path(sortAssoc(tracks)) \ No newline at end of file + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(tracks)) + +/datum/gear/suit/flannel + display_name = "grey flannel" + path = /obj/item/clothing/suit/storage/flannel + +/datum/gear/suit/flannel/red + display_name = "red flannel" + path = /obj/item/clothing/suit/storage/flannel/red + +/datum/gear/suit/flannel/aqua + display_name = "aqua flannel" + path = /obj/item/clothing/suit/storage/flannel/aqua + +/datum/gear/suit/flannel/brown + display_name = "brown flannel" + path = /obj/item/clothing/suit/storage/flannel/brown \ No newline at end of file diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index a6665d0bb51..fe8017b6aab 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -90,12 +90,12 @@ /datum/gear/uniform/job_skirt/ce display_name = "skirt, ce" - path = /obj/item/clothing/under/rank/engineer/chief_engineer/skirt + path = /obj/item/clothing/under/rank/chief_engineer/skirt allowed_roles = list("Chief Engineer") /datum/gear/uniform/job_skirt/atmos display_name = "skirt, atmos" - path = /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt + path = /obj/item/clothing/under/rank/atmospheric_technician/skirt allowed_roles = list("Chief Engineer","Atmospheric Technician") /datum/gear/uniform/job_skirt/eng @@ -110,17 +110,17 @@ /datum/gear/uniform/job_skirt/cmo display_name = "skirt, cmo" - path = /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt + path = /obj/item/clothing/under/rank/chief_medical_officer/skirt allowed_roles = list("Chief Medical Officer") /datum/gear/uniform/job_skirt/chem display_name = "skirt, chemist" - path = /obj/item/clothing/under/rank/medical/chemist/skirt + path = /obj/item/clothing/under/rank/chemist/skirt allowed_roles = list("Chief Medical Officer","Chemist") /datum/gear/uniform/job_skirt/viro display_name = "skirt, virologist" - path = /obj/item/clothing/under/rank/medical/virologist/skirt + path = /obj/item/clothing/under/rank/virologist/skirt allowed_roles = list("Chief Medical Officer","Medical Doctor") /datum/gear/uniform/job_skirt/med @@ -145,7 +145,7 @@ /datum/gear/uniform/job_skirt/warden display_name = "skirt, warden" - path = /obj/item/clothing/under/rank/security/warden/skirt + path = /obj/item/clothing/under/rank/warden/skirt allowed_roles = list("Head of Security", "Warden") /datum/gear/uniform/job_skirt/security @@ -155,7 +155,7 @@ /datum/gear/uniform/job_skirt/head_of_security display_name = "skirt, hos" - path = /obj/item/clothing/under/rank/security/head_of_security/skirt + path = /obj/item/clothing/under/rank/head_of_security/skirt allowed_roles = list("Head of Security") /datum/gear/uniform/jeans_qm @@ -325,7 +325,7 @@ allowed_roles = list("Security Officer","Head of Security","Warden") /datum/gear/uniform/navywarsuit - display_name = "uniform, navy blue (Wardem)" + display_name = "uniform, navy blue (Warden)" path = /obj/item/clothing/under/rank/warden/navyblue allowed_roles = list("Head of Security","Warden") diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno.dm b/code/modules/client/preference_setup/loadout/loadout_xeno.dm index 9f814743aea..80e6bb8ebf8 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno.dm @@ -2,14 +2,12 @@ /datum/gear/suit/zhan_furs display_name = "Zhan-Khazan furs (Tajara)" path = /obj/item/clothing/suit/tajaran/furs - whitelisted = "Tajara" sort_category = "Xenowear" /datum/gear/suit/unathi_mantle display_name = "hide mantle (Unathi)" path = /obj/item/clothing/suit/unathi/mantle cost = 1 - whitelisted = "Unathi" sort_category = "Xenowear" /datum/gear/ears/skrell/chains //Chains @@ -25,7 +23,7 @@ var/obj/item/clothing/ears/skrell/chain/chain = chain_style chaintypes[initial(chain.name)] = chain gear_tweaks += new/datum/gear_tweak/path(sortAssoc(chaintypes)) - + /datum/gear/ears/skrell/bands display_name = "headtail band selection (Skrell)" path = /obj/item/clothing/ears/skrell/band @@ -39,7 +37,7 @@ var/obj/item/clothing/ears/skrell/band/band = band_style bandtypes[initial(band.name)] = band gear_tweaks += new/datum/gear_tweak/path(sortAssoc(bandtypes)) - + /datum/gear/ears/skrell/cloth/male display_name = "male headtail cloth selection (Skrell)" path = /obj/item/clothing/ears/skrell/cloth_male @@ -73,17 +71,17 @@ path = /obj/item/clothing/ears/skrell/colored/band sort_category = "Xenowear" whitelisted = "Skrell" - + /datum/gear/ears/skrell/colored/band/New() ..() gear_tweaks = list(gear_tweak_free_color_choice) - + /datum/gear/ears/skrell/colored/chain display_name = "Colored chain (Skrell)" path = /obj/item/clothing/ears/skrell/colored/chain sort_category = "Xenowear" whitelisted = "Skrell" - + /datum/gear/ears/skrell/colored/chain/New() ..() gear_tweaks = list(gear_tweak_free_color_choice) diff --git a/code/modules/client/preference_setup/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index b3704bfb0c5..cfc3ff781a4 100644 --- a/code/modules/client/preference_setup/occupation/occupation.dm +++ b/code/modules/client/preference_setup/occupation/occupation.dm @@ -160,10 +160,10 @@ var/choice = input("Choose an title for [job.title].", "Choose Title", pref.GetPlayerAltTitle(job)) as anything in choices|null if(choice && CanUseTopic(user)) SetPlayerAltTitle(job, choice) - return (pref.dress_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) + return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) else if(href_list["set_job"]) - if(SetJob(user, href_list["set_job"])) return (pref.dress_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) + if(SetJob(user, href_list["set_job"])) return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH) return ..() diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index 7028894fda4..f72ff0645c0 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -4,6 +4,10 @@ #define TOPIC_UPDATE_PREVIEW 4 #define TOPIC_REFRESH_UPDATE_PREVIEW (TOPIC_REFRESH|TOPIC_UPDATE_PREVIEW) +#define PREF_FBP_CYBORG "cyborg" +#define PREF_FBP_POSI "posi" +#define PREF_FBP_SOFTWARE "software" + /datum/category_group/player_setup_category/general_preferences name = "General" sort_order = 1 @@ -72,6 +76,10 @@ for(var/datum/category_group/player_setup_category/PS in categories) PS.save_preferences(S) +/datum/category_collection/player_setup_collection/proc/copy_to_mob(var/mob/living/carbon/human/C) + for(var/datum/category_group/player_setup_category/PS in categories) + PS.copy_to_mob(C) + /datum/category_collection/player_setup_collection/proc/header() var/dat = "" for(var/datum/category_group/player_setup_category/PS in categories) @@ -121,8 +129,6 @@ // Need due to, for example, the 01_basic module relying on species having been loaded to sanitize correctly but that isn't loaded until module 03_body. for(var/datum/category_item/player_setup_item/PI in items) PI.load_character(S) - for(var/datum/category_item/player_setup_item/PI in items) - PI.sanitize_character() /datum/category_group/player_setup_category/proc/save_character(var/savefile/S) // Sanitize all data, then save it @@ -134,8 +140,6 @@ /datum/category_group/player_setup_category/proc/load_preferences(var/savefile/S) for(var/datum/category_item/player_setup_item/PI in items) PI.load_preferences(S) - for(var/datum/category_item/player_setup_item/PI in items) - PI.sanitize_preferences() /datum/category_group/player_setup_category/proc/save_preferences(var/savefile/S) for(var/datum/category_item/player_setup_item/PI in items) @@ -143,6 +147,10 @@ for(var/datum/category_item/player_setup_item/PI in items) PI.save_preferences(S) +/datum/category_group/player_setup_category/proc/copy_to_mob(var/mob/living/carbon/human/C) + for(var/datum/category_item/player_setup_item/PI in items) + PI.copy_to_mob(C) + /datum/category_group/player_setup_category/proc/content(var/mob/user) . = "") t = replacetext(t, "\[cell\]", "
    " var/current = 0 @@ -201,6 +209,12 @@ /datum/category_item/player_setup_item/proc/save_preferences(var/savefile/S) return +/* +* Called when the item is asked to apply its per character settings to a new mob. +*/ +/datum/category_item/player_setup_item/proc/copy_to_mob(var/mob/living/carbon/human/C) + return + /datum/category_item/player_setup_item/proc/content() return @@ -238,3 +252,50 @@ if(pref.client) return pref.client.mob + +// Checks in a really hacky way if a character's preferences say they are an FBP or not. +/datum/category_item/player_setup_item/proc/is_FBP() + if(pref.organ_data && pref.organ_data[BP_TORSO] != "cyborg") + return 0 + return 1 + +// Returns what kind of FBP the player's prefs are. Returns 0 if they're not an FBP. +/datum/category_item/player_setup_item/proc/get_FBP_type() + if(!is_FBP()) + return 0 // Not a robot. + switch(pref.organ_data["brain"]) + if("assisted") + return PREF_FBP_CYBORG + if("mechanical") + return PREF_FBP_POSI + if("digital") + return PREF_FBP_SOFTWARE + return 0 //Something went wrong! + +/datum/category_item/player_setup_item/proc/get_min_age() + var/datum/species/S = all_species[pref.species ? pref.species : "Human"] + if(!is_FBP()) + return S.min_age // If they're not a robot, we can just use the species var. + var/FBP_type = get_FBP_type() + switch(FBP_type) + if(PREF_FBP_CYBORG) + return S.min_age + if(PREF_FBP_POSI) + return 1 + if(PREF_FBP_SOFTWARE) + return 1 + return S.min_age // welp + +/datum/category_item/player_setup_item/proc/get_max_age() + var/datum/species/S = all_species[pref.species ? pref.species : "Human"] + if(!is_FBP()) + return S.max_age // If they're not a robot, we can just use the species var. + var/FBP_type = get_FBP_type() + switch(FBP_type) + if(PREF_FBP_CYBORG) + return S.max_age + 20 + if(PREF_FBP_POSI) + return 220 + if(PREF_FBP_SOFTWARE) + return 150 + return S.max_age // welp \ No newline at end of file diff --git a/code/modules/client/preference_setup/skills/skills.dm b/code/modules/client/preference_setup/skills/skills.dm index 7255e25bc46..ab5a6c17e10 100644 --- a/code/modules/client/preference_setup/skills/skills.dm +++ b/code/modules/client/preference_setup/skills/skills.dm @@ -18,6 +18,11 @@ if(!pref.skills.len) pref.ZeroSkills() if(pref.used_skillpoints < 0) pref.used_skillpoints = 0 +// Moved from /datum/preferences/proc/copy_to() +/datum/category_item/player_setup_item/skills/copy_to_mob(var/mob/living/carbon/human/character) + character.skills = pref.skills + character.used_skillpoints = pref.used_skillpoints + /datum/category_item/player_setup_item/skills/content() . = list() . += "Select your Skills
    " diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 665ea5836c1..db12940bd9a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -54,8 +54,10 @@ datum/preferences //Some faction information. var/home_system = "Unset" //System of birth. var/citizenship = "None" //Current home system. - var/faction = "None" //Antag faction/general associated faction. + var/faction = "None" //General associated faction. var/religion = "None" //Religious association. + var/antag_faction = "None" //Antag associated faction. + var/antag_vis = "Hidden" //How visible antag association is to others. //Mob preview var/icon/preview_icon = null @@ -235,12 +237,14 @@ datum/preferences else if(href_list["reload"]) load_preferences() load_character() + sanitize_preferences() else if(href_list["load"]) if(!IsGuestKey(usr.key)) open_load_dialog(usr) return 1 else if(href_list["changeslot"]) load_character(text2num(href_list["changeslot"])) + sanitize_preferences() close_load_dialog(usr) else return 0 @@ -251,118 +255,15 @@ datum/preferences /datum/preferences/proc/copy_to(mob/living/carbon/human/character, icon_updates = 1) // Sanitizing rather than saving as someone might still be editing when copy_to occurs. player_setup.sanitize_setup() + + // This needs to happen before anything else becuase it sets some variables. character.set_species(species) + // Special Case: This references variables owned by two different datums, so do it here. if(be_random_name) real_name = random_name(identifying_gender,species) - if(config.humans_need_surnames) - var/firstspace = findtext(real_name, " ") - var/name_length = length(real_name) - if(!firstspace) //we need a surname - real_name += " [pick(last_names)]" - else if(firstspace == name_length) - real_name += "[pick(last_names)]" - - character.real_name = real_name - character.name = character.real_name - if(character.dna) - character.dna.real_name = character.real_name - - character.flavor_texts["general"] = flavor_texts["general"] - character.flavor_texts["head"] = flavor_texts["head"] - character.flavor_texts["face"] = flavor_texts["face"] - character.flavor_texts["eyes"] = flavor_texts["eyes"] - character.flavor_texts["torso"] = flavor_texts["torso"] - character.flavor_texts["arms"] = flavor_texts["arms"] - character.flavor_texts["hands"] = flavor_texts["hands"] - character.flavor_texts["legs"] = flavor_texts["legs"] - character.flavor_texts["feet"] = flavor_texts["feet"] - - character.med_record = med_record - character.sec_record = sec_record - character.gen_record = gen_record - character.exploit_record = exploit_record - - character.gender = biological_gender - character.identifying_gender = identifying_gender - character.age = age - character.b_type = b_type - - character.r_eyes = r_eyes - character.g_eyes = g_eyes - character.b_eyes = b_eyes - - character.h_style = h_style - character.r_hair = r_hair - character.g_hair = g_hair - character.b_hair = b_hair - - character.f_style = f_style - character.r_facial = r_facial - character.g_facial = g_facial - character.b_facial = b_facial - - character.r_skin = r_skin - character.g_skin = g_skin - character.b_skin = b_skin - - character.s_tone = s_tone - - character.h_style = h_style - character.f_style = f_style - - character.home_system = home_system - character.citizenship = citizenship - character.personal_faction = faction - character.religion = religion - - character.skills = skills - character.used_skillpoints = used_skillpoints - - // Destroy/cyborgize organs and limbs. - for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO)) - var/status = organ_data[name] - var/obj/item/organ/external/O = character.organs_by_name[name] - if(O) - if(status == "amputated") - O.remove_rejuv() - else if(status == "cyborg") - if(rlimb_data[name]) - O.robotize(rlimb_data[name]) - else - O.robotize() - - for(var/name in list(O_HEART,O_EYES,O_BRAIN)) - var/status = organ_data[name] - if(!status) - continue - var/obj/item/organ/I = character.internal_organs_by_name[name] - if(I) - if(status == "assisted") - I.mechassist() - else if(status == "mechanical") - I.robotize() - - character.all_underwear.Cut() - character.all_underwear_metadata.Cut() - - for(var/underwear_category_name in all_underwear) - var/datum/category_group/underwear/underwear_category = global_underwear.categories_by_name[underwear_category_name] - if(underwear_category) - var/underwear_item_name = all_underwear[underwear_category_name] - character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name] - if(all_underwear_metadata[underwear_category_name]) - character.all_underwear_metadata[underwear_category_name] = all_underwear_metadata[underwear_category_name] - else - all_underwear -= underwear_category_name - - if(backbag > 4 || backbag < 1) - backbag = 1 //Same as above - character.backbag = backbag - - if(pdachoice > 3 || pdachoice < 1) - pdachoice = 1 - character.pdachoice = pdachoice + // Ask the preferences datums to apply their own settings to the new mob + player_setup.copy_to_mob(character) if(icon_updates) character.force_update_limbs() diff --git a/code/modules/client/preferences_factions.dm b/code/modules/client/preferences_factions.dm index 61d6810224d..030c8d08a39 100644 --- a/code/modules/client/preferences_factions.dm +++ b/code/modules/client/preferences_factions.dm @@ -1,6 +1,7 @@ var/global/list/seen_citizenships = list() var/global/list/seen_systems = list() var/global/list/seen_factions = list() +var/global/list/seen_antag_factions = list() var/global/list/seen_religions = list() //Commenting this out for now until I work the lists it into the event generator/journalist/chaplain. @@ -25,6 +26,7 @@ var/global/list/home_system_choices = list( starsys_name, "Nyx", "Tau Ceti", + "Qerr'Vallis", "Epsilon Ursae Minoris", "S'randarr" ) @@ -42,6 +44,14 @@ var/global/list/faction_choices = list( "Zeng-Hu Pharmaceuticals", "Hesphaistos Industries" ) + +var/global/list/antag_faction_choices = list() //Should be populated after brainstorming. Leaving as blank in case brainstorming does not occur. + +var/global/list/antag_visiblity_choices = list( + "Hidden", + "Shared", + "Known" + ) var/global/list/religion_choices = list( "Unitarianism", diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 3dfc09201ca..40071651c6b 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -38,7 +38,6 @@ //starts off as black name = "black jumpsuit" icon_state = "black" - item_state = "bl_suit" worn_state = "black" desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." origin_tech = list(TECH_ILLEGAL = 3) @@ -47,7 +46,7 @@ /obj/item/clothing/under/chameleon/New() ..() if(!clothing_choices) - var/blocked = list(src.type, /obj/item/clothing/under/cloud, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits. + var/blocked = list(src.type, /obj/item/clothing/under/gimmick)//Prevent infinite loops and bad jumpsuits. clothing_choices = generate_chameleon_choices(/obj/item/clothing/under, blocked) /obj/item/clothing/under/chameleon/emp_act(severity) @@ -112,7 +111,6 @@ /obj/item/clothing/suit/chameleon name = "armor" icon_state = "armor" - item_state = "armor" desc = "It appears to be a vest of standard armor, except this is embedded with a hidden holographic cloaker, allowing it to change it's appearance, but offering no protection.. It seems to have a small dial inside." origin_tech = list(TECH_ILLEGAL = 3) var/global/list/clothing_choices @@ -147,7 +145,6 @@ /obj/item/clothing/shoes/chameleon name = "black shoes" icon_state = "black" - item_state = "black" desc = "They're comfy black shoes, with clever cloaking technology built in. It seems to have a small dial on the back of each shoe." origin_tech = list(TECH_ILLEGAL = 3) var/global/list/clothing_choices @@ -162,7 +159,6 @@ name = "black shoes" desc = "A pair of black shoes." icon_state = "black" - item_state = "black" update_icon() update_clothing_icon() @@ -183,7 +179,6 @@ /obj/item/weapon/storage/backpack/chameleon name = "backpack" icon_state = "backpack" - item_state = "backpack" desc = "A backpack outfitted with cloaking tech. It seems to have a small dial inside, kept away from the storage." origin_tech = list(TECH_ILLEGAL = 3) var/global/list/clothing_choices @@ -198,7 +193,6 @@ name = "backpack" desc = "You wear this on your back and put items into it." icon_state = "backpack" - item_state = "backpack" update_icon() if (ismob(src.loc)) var/mob/M = src.loc @@ -226,7 +220,6 @@ /obj/item/clothing/gloves/chameleon name = "black gloves" icon_state = "black" - item_state = "bgloves" desc = "It looks like a pair of gloves, but it seems to have a small dial inside." origin_tech = list(TECH_ILLEGAL = 3) var/global/list/clothing_choices @@ -261,7 +254,6 @@ /obj/item/clothing/mask/chameleon name = "gas mask" icon_state = "gas_alt" - item_state = "gas_alt" desc = "It looks like a plain gask mask, but on closer inspection, it seems to have a small dial inside." origin_tech = list(TECH_ILLEGAL = 3) var/global/list/clothing_choices @@ -296,7 +288,7 @@ /obj/item/clothing/glasses/chameleon name = "Optical Meson Scanner" icon_state = "meson" - item_state = "glasses" + item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson") desc = "It looks like a plain set of mesons, but on closer inspection, it seems to have a small dial inside." origin_tech = list(TECH_ILLEGAL = 3) var/list/global/clothing_choices @@ -333,7 +325,6 @@ desc = "Can hold various things. It also has a small dial inside one of the pouches." icon = 'icons/obj/clothing/belts.dmi' icon_state = "utilitybelt" - item_state = "utility" origin_tech = list(TECH_ILLEGAL = 3) var/list/clothing_choices = list() @@ -346,7 +337,6 @@ name = "belt" desc = "Can hold various things." icon_state = "utilitybelt" - item_state = "utility" update_icon() if(ismob(src.loc)) var/mob/M = src.loc diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 6b2e8e6e4fb..b78d78f3ffc 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -169,50 +169,20 @@ icon_state = O.icon_state set_dir(O.dir) -/obj/item/clothing/ears/earmuffs - name = "earmuffs" - desc = "Protects your hearing from loud noises, and quiet ones as well." - icon_state = "earmuffs" - item_state = "earmuffs" - slot_flags = SLOT_EARS | SLOT_TWOEARS - ear_protection = 2 - -/obj/item/clothing/ears/earmuffs/headphones - name = "headphones" - desc = "Unce unce unce unce." - var/headphones_on = 0 - icon_state = "headphones_off" - item_state = "headphones" - slot_flags = SLOT_EARS | SLOT_TWOEARS - -/obj/item/clothing/ears/earmuffs/headphones/verb/togglemusic() - set name = "Toggle Headphone Music" - set category = "Object" - set src in usr - if(!istype(usr, /mob/living)) return - if(usr.stat) return - - if(headphones_on) - icon_state = "headphones_off" - headphones_on = 0 - usr << "You turn the music off." - else - icon_state = "headphones_on" - headphones_on = 1 - usr << "You turn the music on." - - update_clothing_icon() - //Gloves /obj/item/clothing/gloves name = "gloves" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi', + ) gender = PLURAL //Carn: for grammarically correct text-parsing w_class = 2.0 icon = 'icons/obj/clothing/gloves.dmi' siemens_coefficient = 0.75 var/wired = 0 var/obj/item/weapon/cell/cell = 0 - var/clipped = 0 + var/overgloves = 0 body_parts_covered = HANDS slot_flags = SLOT_GLOVES attack_verb = list("challenged") @@ -369,6 +339,10 @@ /obj/item/clothing/mask name = "mask" icon = 'icons/obj/clothing/masks.dmi' + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_masks.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_masks.dmi', + ) body_parts_covered = HEAD slot_flags = SLOT_MASK body_parts_covered = FACE|EYES @@ -393,6 +367,10 @@ /obj/item/clothing/shoes name = "shoes" icon = 'icons/obj/clothing/shoes.dmi' + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_shoes.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_shoes.dmi', + ) desc = "Comfortable-looking shoes." gender = PLURAL //Carn: for grammarically correct text-parsing siemens_coefficient = 0.9 @@ -471,6 +449,10 @@ //Suit /obj/item/clothing/suit icon = 'icons/obj/clothing/suits.dmi' + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_suits.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_suits.dmi', + ) name = "suit" var/fire_resist = T0C+100 body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS diff --git a/code/modules/clothing/ears/skrell.dm b/code/modules/clothing/ears/ears.dm similarity index 58% rename from code/modules/clothing/ears/skrell.dm rename to code/modules/clothing/ears/ears.dm index e8bc3e8534d..151b581f5c1 100644 --- a/code/modules/clothing/ears/skrell.dm +++ b/code/modules/clothing/ears/ears.dm @@ -1,7 +1,45 @@ +/* + Earmuffs +*/ +/obj/item/clothing/ears/earmuffs + name = "earmuffs" + desc = "Protects your hearing from loud noises, and quiet ones as well." + icon_state = "earmuffs" + item_state_slots = list(slot_r_hand_str = "earmuffs", slot_l_hand_str = "earmuffs") + slot_flags = SLOT_EARS | SLOT_TWOEARS + ear_protection = 2 + +/obj/item/clothing/ears/earmuffs/headphones + name = "headphones" + desc = "Unce unce unce unce." + var/headphones_on = 0 + icon_state = "headphones_off" + item_state_slots = list(slot_r_hand_str = "headphones", slot_l_hand_str = "headphones") + slot_flags = SLOT_EARS | SLOT_TWOEARS + +/obj/item/clothing/ears/earmuffs/headphones/verb/togglemusic() + set name = "Toggle Headphone Music" + set category = "Object" + set src in usr + if(!istype(usr, /mob/living)) return + if(usr.stat) return + + var/base_icon = copytext(icon_state,1,(length(icon_state) - 3 + headphones_on)) + + if(headphones_on) + icon_state = "[base_icon]_off" + headphones_on = 0 + usr << "You turn the music off." + else + icon_state = "[base_icon]_on" + headphones_on = 1 + usr << "You turn the music on." + + update_clothing_icon() + /* Skrell tentacle wear */ - /obj/item/clothing/ears/skrell name = "skrell tentacle wear" desc = "Some stuff worn by skrell to adorn their head tentacles." @@ -14,132 +52,132 @@ name = "Gold headtail chains" desc = "A delicate golden chain worn by female skrell to decorate their head tails." icon_state = "skrell_chain" - item_state = "skrell_chain" - + item_state_slots = list(slot_r_hand_str = "egg5", slot_l_hand_str = "egg5") + /obj/item/clothing/ears/skrell/chain/silver name = "Silver headtail chains" desc = "A delicate silver chain worn by female skrell to decorate their head tails." icon_state = "skrell_chain_sil" - item_state = "skrell_chain_sil" - + item_state_slots = list(slot_r_hand_str = "egg", slot_l_hand_str = "egg") + /obj/item/clothing/ears/skrell/chain/bluejewels name = "Blue jeweled golden headtail chains" desc = "A delicate golden chain adorned with blue jewels worn by female skrell to decorate their head tails." icon_state = "skrell_chain_bjewel" - item_state = "skrell_chain_bjewel" - + item_state_slots = list(slot_r_hand_str = "egg2", slot_l_hand_str = "egg2") + /obj/item/clothing/ears/skrell/chain/redjewels name = "Red jeweled golden headtail chains" desc = "A delicate golden chain adorned with red jewels worn by female skrell to decorate their head tails." icon_state = "skrell_chain_rjewel" - item_state = "skrell_chain_rjewel" - + item_state_slots = list(slot_r_hand_str = "egg4", slot_l_hand_str = "egg4") + /obj/item/clothing/ears/skrell/chain/ebony name = "Ebony headtail chains" desc = "A delicate ebony chain worn by female skrell to decorate their head tails." icon_state = "skrell_chain_ebony" - item_state = "skrell_chain_ebony" - + item_state_slots = list(slot_r_hand_str = "egg6", slot_l_hand_str = "egg6") + /obj/item/clothing/ears/skrell/band name = "Gold headtail bands" desc = "Golden metallic bands worn by male skrell to adorn their head tails." icon_state = "skrell_band" - item_state = "skrell_band" - + item_state_slots = list(slot_r_hand_str = "egg5", slot_l_hand_str = "egg5") + /obj/item/clothing/ears/skrell/band/silver name = "Silver headtail bands" desc = "Silver metallic bands worn by male skrell to adorn their head tails." icon_state = "skrell_band_sil" - item_state = "skrell_band_sil" - + item_state_slots = list(slot_r_hand_str = "egg", slot_l_hand_str = "egg") + /obj/item/clothing/ears/skrell/band/bluejewels name = "Blue jeweled golden headtail bands" desc = "Golden metallic bands adorned with blue jewels worn by male skrell to adorn their head tails." icon_state = "skrell_band_bjewel" - item_state = "skrell_band_bjewel" - + item_state_slots = list(slot_r_hand_str = "egg2", slot_l_hand_str = "egg2") + /obj/item/clothing/ears/skrell/band/redjewels name = "Red jeweled golden headtail bands" desc = "Golden metallic bands adorned with red jewels worn by male skrell to adorn their head tails." icon_state = "skrell_band_rjewel" - item_state = "skrell_band_rjewel" - + item_state_slots = list(slot_r_hand_str = "egg4", slot_l_hand_str = "egg4") + /obj/item/clothing/ears/skrell/band/ebony name = "Ebony headtail bands" desc = "Ebony bands worn by male skrell to adorn their head tails." icon_state = "skrell_band_ebony" - item_state = "skrell_band_ebony" + item_state_slots = list(slot_r_hand_str = "egg6", slot_l_hand_str = "egg6") /obj/item/clothing/ears/skrell/colored/band name = "Colored headtail bands" desc = "Metallic bands worn by male skrell to adorn their head tails." icon_state = "skrell_band_sil" - item_state = "skrell_band_sil" - + item_state_slots = list(slot_r_hand_str = "egg", slot_l_hand_str = "egg") + /obj/item/clothing/ears/skrell/colored/chain name = "Colored headtail chains" desc = "A delicate chain worn by female skrell to decorate their head tails." icon_state = "skrell_chain_sil" - item_state = "skrell_chain_sil" - + item_state_slots = list(slot_r_hand_str = "egg", slot_l_hand_str = "egg") + /obj/item/clothing/ears/skrell/cloth_female name = "red headtail cloth" desc = "A cloth shawl worn by female skrell draped around their head tails." icon_state = "skrell_cloth_female" - item_state = "skrell_cloth_female" + item_state_slots = list(slot_r_hand_str = "egg4", slot_l_hand_str = "egg4") /obj/item/clothing/ears/skrell/cloth_female/black name = "black headtail cloth" icon_state = "skrell_cloth_black_female" - item_state = "skrell_cloth_black_female" + item_state_slots = list(slot_r_hand_str = "egg6", slot_l_hand_str = "egg6") /obj/item/clothing/ears/skrell/cloth_female/blue name = "blue headtail cloth" icon_state = "skrell_cloth_blue_female" - item_state = "skrell_cloth_blue_female" + item_state_slots = list(slot_r_hand_str = "egg2", slot_l_hand_str = "egg2") /obj/item/clothing/ears/skrell/cloth_female/green name = "green headtail cloth" icon_state = "skrell_cloth_green_female" - item_state = "skrell_cloth_green_female" + item_state_slots = list(slot_r_hand_str = "egg3", slot_l_hand_str = "egg3") /obj/item/clothing/ears/skrell/cloth_female/pink name = "pink headtail cloth" icon_state = "skrell_cloth_pink_female" - item_state = "skrell_cloth_pink_female" + item_state_slots = list(slot_r_hand_str = "egg1", slot_l_hand_str = "egg1") /obj/item/clothing/ears/skrell/cloth_female/lightblue name = "light blue headtail cloth" icon_state = "skrell_cloth_lblue_female" - item_state = "skrell_cloth_lblue_female" + item_state_slots = list(slot_r_hand_str = "egg2", slot_l_hand_str = "egg2") /obj/item/clothing/ears/skrell/cloth_male name = "red headtail cloth" desc = "A cloth band worn by male skrell around their head tails." icon_state = "skrell_cloth_male" - item_state = "skrell_cloth_male" + item_state_slots = list(slot_r_hand_str = "egg4", slot_l_hand_str = "egg4") /obj/item/clothing/ears/skrell/cloth_male/black name = "black headtail cloth" icon_state = "skrell_cloth_black_male" - item_state = "skrell_cloth_black_male" + item_state_slots = list(slot_r_hand_str = "egg6", slot_l_hand_str = "egg6") /obj/item/clothing/ears/skrell/cloth_male/blue name = "blue headtail cloth" icon_state = "skrell_cloth_blue_male" - item_state = "skrell_cloth_blue_male" + item_state_slots = list(slot_r_hand_str = "egg2", slot_l_hand_str = "egg2") /obj/item/clothing/ears/skrell/cloth_male/green name = "green headtail cloth" icon_state = "skrell_cloth_green_male" - item_state = "skrell_cloth_green_male" + item_state_slots = list(slot_r_hand_str = "egg3", slot_l_hand_str = "egg3") /obj/item/clothing/ears/skrell/cloth_male/pink name = "pink headtail cloth" icon_state = "skrell_cloth_pink_male" - item_state = "skrell_cloth_pink_male" - + item_state_slots = list(slot_r_hand_str = "egg1", slot_l_hand_str = "egg1") + /obj/item/clothing/ears/skrell/cloth_male/lightblue name = "light blue headtail cloth" icon_state = "skrell_cloth_lblue_male" - item_state = "skrell_cloth_lblue_male" \ No newline at end of file + item_state_slots = list(slot_r_hand_str = "egg2", slot_l_hand_str = "egg2") \ No newline at end of file diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 8692fc9bc7e..27fb0e0fa4a 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -46,8 +46,6 @@ BLIND // can't see anything active = 1 icon_state = initial(icon_state) user.update_inv_glasses() - if(activation_sound) - usr << activation_sound usr << "You activate the optical matrix on the [src]." user.update_action_buttons() @@ -55,7 +53,7 @@ BLIND // can't see anything name = "Optical Meson Scanner" desc = "Used for seeing walls, floors, and stuff through anything." icon_state = "meson" - item_state = "glasses" + item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson") action_button_name = "Toggle Goggles" origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) toggleable = 1 @@ -74,7 +72,7 @@ BLIND // can't see anything name = "Science Goggles" desc = "The goggles do nothing!" icon_state = "purple" - item_state = "glasses" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") toggleable = 1 action_button_name = "Toggle Goggles" @@ -86,7 +84,7 @@ BLIND // can't see anything name = "Night Vision Goggles" desc = "You can totally see in the dark now!" icon_state = "night" - item_state = "glasses" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") origin_tech = list(TECH_MAGNET = 2) darkness_view = 7 toggleable = 1 @@ -102,7 +100,7 @@ BLIND // can't see anything name = "eyepatch" desc = "Yarr." icon_state = "eyepatch" - item_state = "eyepatch" + item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold") body_parts_covered = 0 var/eye = null @@ -124,14 +122,14 @@ BLIND // can't see anything name = "monocle" desc = "Such a dapper eyepiece!" icon_state = "monocle" - item_state = "headset" // lol + item_state_slots = list(slot_r_hand_str = "headset", slot_l_hand_str = "headset") body_parts_covered = 0 /obj/item/clothing/glasses/material name = "Optical Material Scanner" desc = "Very confusing glasses." icon_state = "material" - item_state = "glasses" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3) toggleable = 1 action_button_name = "Toggle Goggles" @@ -141,7 +139,7 @@ BLIND // can't see anything name = "Prescription Glasses" desc = "Made by Nerd. Co." icon_state = "glasses" - item_state = "glasses" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") prescription = 1 body_parts_covered = 0 @@ -154,34 +152,33 @@ BLIND // can't see anything name = "Prescription Glasses" desc = "Made by Uncool. Co." icon_state = "hipster_glasses" - item_state = "hipster_glasses" /obj/item/clothing/glasses/threedglasses desc = "A long time ago, people used these glasses to makes images from screens threedimensional." name = "3D glasses" icon_state = "3d" - item_state = "3d" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") body_parts_covered = 0 /obj/item/clothing/glasses/gglasses name = "Green Glasses" desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme." icon_state = "gglasses" - item_state = "gglasses" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") body_parts_covered = 0 /obj/item/clothing/glasses/sunglasses desc = "Strangely ancient technology used to help provide rudimentary eye cover. Enhanced shielding blocks many flashes." name = "sunglasses" icon_state = "sun" - item_state = "sunglasses" + item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") darkness_view = -1 /obj/item/clothing/glasses/welding name = "welding goggles" desc = "Protects the eyes from welders, approved by the mad scientist association." icon_state = "welding-g" - item_state = "welding-g" + item_state_slots = list(slot_r_hand_str = "g", slot_l_hand_str = "g") action_button_name = "Flip Welding Goggles" matter = list(DEFAULT_WALL_MATERIAL = 1500, "glass" = 1000) var/up = 0 @@ -215,13 +212,12 @@ BLIND // can't see anything name = "superior welding goggles" desc = "Welding goggles made from more expensive materials, strangely smells like potatoes." icon_state = "rwelding-g" - item_state = "rwelding-g" /obj/item/clothing/glasses/sunglasses/blindfold name = "blindfold" desc = "Covers the eyes, preventing sight." icon_state = "blindfold" - item_state = "blindfold" + item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold") //vision_flags = BLIND // This flag is only supposed to be used if it causes permanent blindness, not temporary because of glasses /obj/item/clothing/glasses/sunglasses/blindfold/tape @@ -229,7 +225,7 @@ BLIND // can't see anything desc = "It's a robust DIY blindfold!" icon = 'icons/obj/bureaucracy.dmi' icon_state = "tape_cross" - item_state = null + item_state_slots = list(slot_r_hand_str = null, slot_l_hand_str = null) w_class = 1 /obj/item/clothing/glasses/sunglasses/prescription @@ -239,13 +235,12 @@ BLIND // can't see anything /obj/item/clothing/glasses/sunglasses/big desc = "Strangely ancient technology used to help provide rudimentary eye cover. Larger than average enhanced shielding blocks many flashes." icon_state = "bigsunglasses" - item_state = "bigsunglasses" - + /obj/item/clothing/glasses/fakesunglasses //Sunglasses without flash immunity desc = "A pair of designer sunglasses. Doesn't seem like it'll block flashes." name = "stylish sunglasses" icon_state = "sun" - item_state = "sunglasses" + item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") /obj/item/clothing/glasses/sunglasses/sechud name = "HUDSunglasses" @@ -267,7 +262,7 @@ BLIND // can't see anything name = "Optical Thermal Scanner" desc = "Thermals in the shape of glasses." icon_state = "thermal" - item_state = "glasses" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") origin_tech = list(TECH_MAGNET = 3) toggleable = 1 action_button_name = "Toggle Goggles" @@ -295,6 +290,7 @@ BLIND // can't see anything name = "Optical Meson Scanner" desc = "Used for seeing walls, floors, and stuff through anything." icon_state = "meson" + item_state_slots = list(slot_r_hand_str = "meson", slot_l_hand_str = "meson") origin_tech = list(TECH_MAGNET = 3, TECH_ILLEGAL = 4) /obj/item/clothing/glasses/thermal/plain @@ -306,6 +302,7 @@ BLIND // can't see anything name = "Thermoncle" desc = "A monocle thermal." icon_state = "thermoncle" + item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") toggleable = 1 action_button_name = "Toggle Monocle" flags = null //doesn't protect eyes because it's a monocle, duh @@ -316,7 +313,7 @@ BLIND // can't see anything name = "Optical Thermal Eyepatch" desc = "An eyepatch with built-in thermal optics" icon_state = "eyepatch" - item_state = "eyepatch" + item_state_slots = list(slot_r_hand_str = "blindfold", slot_l_hand_str = "blindfold") body_parts_covered = 0 toggleable = 1 action_button_name = "Toggle Eyepatch" @@ -325,4 +322,4 @@ BLIND // can't see anything name = "Optical Thermal Implants" desc = "A set of implantable lenses designed to augment your vision" icon_state = "thermalimplants" - item_state = "syringe_kit" + item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") \ No newline at end of file diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 30e5bc37732..edd2db21685 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -8,12 +8,11 @@ proc process_hud(var/mob/M) return - - /obj/item/clothing/glasses/hud/health name = "Health Scanner HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their health status." icon_state = "healthhud" + item_state_slots = list(slot_r_hand_str = "headset", slot_l_hand_str = "headset") body_parts_covered = 0 /obj/item/clothing/glasses/hud/health/prescription @@ -21,7 +20,7 @@ desc = "A medical HUD integrated with a set of prescription glasses" prescription = 1 icon_state = "healthhudpresc" - item_state = "healthhudpresc" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") /obj/item/clothing/glasses/hud/health/process_hud(var/mob/M) process_med_hud(M, 1) @@ -30,6 +29,7 @@ name = "Security HUD" desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records." icon_state = "securityhud" + item_state_slots = list(slot_r_hand_str = "headset", slot_l_hand_str = "headset") body_parts_covered = 0 var/global/list/jobs[0] @@ -38,13 +38,13 @@ desc = "A security HUD integrated with a set of prescription glasses" prescription = 1 icon_state = "sechudpresc" - item_state = "sechudpresc" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") /obj/item/clothing/glasses/hud/security/jensenshades name = "Augmented shades" desc = "Polarized bioneural eyewear, designed to augment your vision." icon_state = "jensenshades" - item_state = "jensenshades" + item_state_slots = list(slot_r_hand_str = "sunglasses", slot_l_hand_str = "sunglasses") vision_flags = SEE_MOBS see_invisible = SEE_INVISIBLE_NOLIGHTING diff --git a/code/modules/clothing/gloves/arm_guards.dm b/code/modules/clothing/gloves/arm_guards.dm index ada10f274af..fa9036e2cd2 100644 --- a/code/modules/clothing/gloves/arm_guards.dm +++ b/code/modules/clothing/gloves/arm_guards.dm @@ -3,6 +3,7 @@ desc = "These arm guards will protect your hands and arms." body_parts_covered = HANDS|ARMS slowdown = 1 + overgloves = 1 w_class = 3 /obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0) @@ -17,6 +18,7 @@ name = "ablative arm guards" desc = "These arm guards will protect your hands and arms from energy weapons." icon_state = "arm_guards_laser" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") siemens_coefficient = 0.4 //This is worse than the other ablative pieces, to avoid this from becoming the poor warden's insulated gloves. armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) @@ -24,6 +26,7 @@ name = "bullet resistant arm guards" desc = "These arm guards will protect your hands and arms from ballistic weapons." icon_state = "arm_guards_bullet" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") siemens_coefficient = 0.7 armor = list(melee = 10, bullet = 80, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0) @@ -31,6 +34,7 @@ name = "riot arm guards" desc = "These arm guards will protect your hands and arms from close combat weapons." icon_state = "arm_guards_riot" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") siemens_coefficient = 0.5 armor = list(melee = 80, bullet = 10, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0) @@ -38,5 +42,6 @@ name = "combat arm guards" desc = "These arm guards will protect your hands and arms from a variety of weapons." icon_state = "arm_guards_combat" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") siemens_coefficient = 0.6 armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0) \ No newline at end of file diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm index 2ad12aa2bf1..b901862e422 100644 --- a/code/modules/clothing/gloves/boxing.dm +++ b/code/modules/clothing/gloves/boxing.dm @@ -2,7 +2,7 @@ name = "boxing gloves" desc = "Because you really needed another excuse to punch your crewmates." icon_state = "boxing" - item_state = "boxing" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") /obj/item/clothing/gloves/boxing/attackby(obj/item/weapon/W, mob/user) if(istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/weapon/scalpel)) @@ -12,18 +12,18 @@ /obj/item/clothing/gloves/boxing/green icon_state = "boxinggreen" - item_state = "boxinggreen" + item_state_slots = list(slot_r_hand_str = "green", slot_l_hand_str = "green") /obj/item/clothing/gloves/boxing/blue icon_state = "boxingblue" - item_state = "boxingblue" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") /obj/item/clothing/gloves/boxing/yellow icon_state = "boxingyellow" - item_state = "boxingyellow" + item_state_slots = list(slot_r_hand_str = "yellow", slot_l_hand_str = "yellow") /obj/item/clothing/gloves/white name = "white gloves" desc = "These look pretty fancy." icon_state = "latex" - item_state = "lgloves" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 870fcc487f6..55b562cc93a 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -2,7 +2,6 @@ desc = "These gloves will protect the wearer from electric shock." name = "insulated gloves" icon_state = "yellow" - item_state = "ygloves" siemens_coefficient = 0 permeability_coefficient = 0.05 @@ -10,19 +9,17 @@ desc = "These gloves are cheap copies of the coveted gloves, no way this can end badly." name = "budget insulated gloves" icon_state = "yellow" - item_state = "ygloves" siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() permeability_coefficient = 0.05 New() //average of 0.5, somewhat better than regular gloves' 0.75 - siemens_coefficient = pick(0,0.1,0.3,0.5,0.5,0.75,1.35) + siemens_coefficient = pick(0,0.1,0.3,0.5,0.5,0.75,1.35) /obj/item/clothing/gloves/black desc = "These work gloves are thick and fire-resistant." name = "black gloves" icon_state = "black" - item_state = "bgloves" siemens_coefficient = 0.50 permeability_coefficient = 0.05 @@ -35,52 +32,53 @@ name = "orange gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "orange" - item_state = "orangegloves" /obj/item/clothing/gloves/red name = "red gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "red" - item_state = "redgloves" /obj/item/clothing/gloves/rainbow name = "rainbow gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "rainbow" - item_state = "rainbowgloves" /obj/item/clothing/gloves/blue name = "blue gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "blue" - item_state = "bluegloves" /obj/item/clothing/gloves/purple name = "purple gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "purple" - item_state = "purplegloves" /obj/item/clothing/gloves/green name = "green gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "green" - item_state = "greengloves" /obj/item/clothing/gloves/grey name = "grey gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "gray" - item_state = "graygloves" /obj/item/clothing/gloves/light_brown name = "light brown gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "lightbrown" - item_state = "lightbrowngloves" /obj/item/clothing/gloves/brown name = "brown gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "brown" - item_state = "browngloves" + +/obj/item/clothing/gloves/evening + desc = "A pair of gloves that reach past the elbow. Fancy!" + name = "evening gloves" + icon_state = "evening_gloves" + + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE + heat_protection = HANDS + max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE diff --git a/code/modules/clothing/gloves/gauntlets.dm b/code/modules/clothing/gloves/gauntlets.dm new file mode 100644 index 00000000000..94956ec714f --- /dev/null +++ b/code/modules/clothing/gloves/gauntlets.dm @@ -0,0 +1,44 @@ +/* + * WORKS FOR RIGS, NOT AS A STANDALONE RIGHT NOW + * + * TODO: FIX QUICK_EQUIP SO IT DOESN'T EQUIP THESE TO YOUR BACK WHEN YOU HAVE NO GLOVES + * CHECK SLOWDOWN ON EQUIP/UNEQUIP + * ADD SPRITES FOR ANY ACTUAL GAUNTLET ITEMS, THE BASE GLOVE ITEM HAS NO SPRITE, FOR GOOD REASON + */ + +/obj/item/clothing/gloves/gauntlets //Used to cover gloves, otherwise act as gloves. + name = "gauntlets" + desc = "These gloves go over regular gloves." + overgloves = 1 + var/obj/item/clothing/gloves/gloves = null //Undergloves + var/mob/living/carbon/human/wearer = null //For glove procs + +/obj/item/clothing/gloves/gauntlets/mob_can_equip(mob/user) + var/mob/living/carbon/human/H = user + if(H.gloves) + gloves = H.gloves + if(gloves.overgloves) + user << "You are unable to wear \the [src] as \the [H.gloves] are in the way." + gloves = null + return 0 + H.drop_from_inventory(gloves) + gloves.forceMove(src) + + if(!..()) + if(gloves) + if(H.equip_to_slot_if_possible(gloves, slot_gloves)) + gloves = null + return 0 + if(gloves) + user << "You slip \the [src] on over \the [gloves]." + wearer = H + return 1 + +/obj/item/clothing/gloves/gauntlets/dropped() + var/mob/living/carbon/human/H = wearer + if(gloves) + if(!H.equip_to_slot_if_possible(gloves, slot_gloves)) + gloves.forceMove(get_turf(src)) + src.gloves = null + wearer = null + ..() \ No newline at end of file diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 0a91d596f76..9d53f8cdb0b 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -2,7 +2,7 @@ desc = "Regal blue gloves, with a nice gold trim. Swanky." name = "captain's gloves" icon_state = "captain" - item_state = "egloves" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") /obj/item/clothing/gloves/cyborg desc = "beep boop borp" @@ -15,10 +15,9 @@ desc = "These tactical gloves are somewhat fire and impact-resistant." name = "\improper SWAT Gloves" icon_state = "black" - item_state = "swat_gl" + item_state = "swat" siemens_coefficient = 0.50 permeability_coefficient = 0.05 - cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE heat_protection = HANDS @@ -28,7 +27,7 @@ desc = "These tactical gloves are somewhat fire and impact resistant." name = "combat gloves" icon_state = "black" - item_state = "swat_gl" + item_state = "swat" siemens_coefficient = 0 permeability_coefficient = 0.05 cold_protection = HANDS @@ -40,14 +39,15 @@ name = "latex gloves" desc = "Sterile latex gloves." icon_state = "latex" - item_state = "lgloves" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") siemens_coefficient = 1.0 //thin latex gloves, much more conductive than fabric gloves (basically a capacitor for AC) permeability_coefficient = 0.01 germ_level = 0 + /obj/item/clothing/gloves/botanic_leather desc = "These leather work gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin." name = "botanist's leather gloves" icon_state = "leather" - item_state = "ggloves" + item_state_slots = list(slot_r_hand_str = "lightbrown", slot_l_hand_str = "lightbrown") permeability_coefficient = 0.05 siemens_coefficient = 0.50 //thick work gloves diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 680250c7c78..2253fe6d478 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -16,47 +16,37 @@ /obj/item/clothing/head/collectable/slime name = "collectable slime cap!" desc = "It just latches right in place!" - icon_state = "slime" + icon_state = "headslime" body_parts_covered = 0 /obj/item/clothing/head/collectable/xenom name = "collectable xenomorph helmet!" desc = "Hiss hiss hiss!" icon_state = "xenom" - item_state_slots = list( - slot_l_hand_str = "xenos_helm", - slot_r_hand_str = "xenos_helm", - ) + item_state_slots = list(slot_r_hand_str = "xenos_helm", slot_l_hand_str = "xenos_helm") body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/head/collectable/chef name = "collectable chef's hat" desc = "A rare Chef's Hat meant for hat collectors!" icon_state = "chefhat" - item_state = "chefhat" /obj/item/clothing/head/collectable/paper name = "collectable paper hat" desc = "What looks like an ordinary paper hat, is actually a rare and valuable collector's edition paper hat. Keep away from water, fire and Librarians." icon_state = "paper" - item_state = "paper" body_parts_covered = 0 /obj/item/clothing/head/collectable/tophat name = "collectable top hat" desc = "A top hat worn by only the most prestigious hat collectors." icon_state = "tophat" - item_state = "tophat" body_parts_covered = 0 /obj/item/clothing/head/collectable/captain name = "collectable captain's hat" desc = "A Collectable Hat that'll make you look just like a real comdom!" icon_state = "captain" - item_state_slots = list( - slot_l_hand_str = "caphat", - slot_r_hand_str = "caphat", - ) body_parts_covered = 0 /obj/item/clothing/head/collectable/police @@ -75,22 +65,19 @@ name = "collectable welding helmet" desc = "A Collectable Welding Helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this Helmet is done so at the owner's own risk!" icon_state = "welding" - item_state = "welding" body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/head/collectable/slime name = "collectable slime hat" desc = "Just like a real Brain Slug!" icon_state = "headslime" + item_state_slots = list(slot_r_hand_str = "greenbandana", slot_l_hand_str = "greenbandana") /obj/item/clothing/head/collectable/flatcap name = "collectable flat cap" desc = "A Collectible farmer's Flat Cap!" icon_state = "flat_cap" - item_state_slots = list( - slot_l_hand_str = "detective", - slot_r_hand_str = "detective", - ) + item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") /obj/item/clothing/head/collectable/pirate name = "collectable pirate hat" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 1fa8af24e48..4548b41a244 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -2,10 +2,6 @@ name = "helmet" desc = "Standard Security gear. Protects the head from impacts." icon_state = "helmet" - item_state_slots = list( - slot_l_hand_str = "helmet", - slot_r_hand_str = "helmet", - ) flags = THICKMATERIAL armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0) flags_inv = HIDEEARS|HIDEEYES @@ -21,6 +17,7 @@ name = "riot helmet" desc = "It's a helmet specifically designed to protect against close range attacks." icon_state = "riot" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEEARS siemens_coefficient = 0.7 @@ -39,6 +36,7 @@ name = "ablative helmet" desc = "It's a helmet specifically designed to protect against energy projectiles." icon_state = "helmet_reflec" + item_state_slots = list(slot_r_hand_str = "helmet", slot_l_hand_str = "helmet") armor = list(melee = 10, bullet = 10, laser = 80 ,energy = 50, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEEARS siemens_coefficient = 0.1 @@ -47,6 +45,7 @@ name = "bullet-resistant helmet" desc = "It's a helmet specifically designed to protect against ballistic projectiles." icon_state = "helmet_bulletproof" + item_state_slots = list(slot_r_hand_str = "helmet", slot_l_hand_str = "helmet") armor = list(melee = 10, bullet = 80, laser = 10 ,energy = 10, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEEARS siemens_coefficient = 0.7 @@ -55,6 +54,7 @@ name = "combat helmet" desc = "It's a general purpose combat helmet, designed to protect against typical dangers to your head." icon_state = "helmet_combat" + item_state_slots = list(slot_r_hand_str = "helmet", slot_l_hand_str = "helmet") armor = list(melee = 50, bullet = 50, laser = 50 ,energy = 30, bomb = 30, bio = 0, rad = 0) flags_inv = HIDEEARS siemens_coefficient = 0.6 @@ -82,6 +82,7 @@ name = "gladiator helmet" desc = "Ave, Imperator, morituri te salutant." icon_state = "gladiator" + item_state_slots = list(slot_r_hand_str = "vhelmet", slot_l_hand_str = "vhelmet") flags = BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES siemens_coefficient = 1 @@ -90,6 +91,7 @@ name = "tactical helmet" desc = "An armored helmet capable of being fitted with a multitude of attachments." icon_state = "swathelm" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") sprite_sheets = list( "Tajara" = 'icons/mob/species/tajaran/helmet.dmi', "Unathi" = 'icons/mob/species/unathi/helmet.dmi', @@ -103,6 +105,7 @@ name = "Augment Array" desc = "A helmet with optical and cranial augments coupled to it." icon_state = "v62" + item_state_slots = list(slot_r_hand_str = "head_m", slot_l_hand_str = "head_m") armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) flags_inv = HIDEEARS|HIDEEYES cold_protection = HEAD @@ -114,10 +117,7 @@ name = "emergency response team helmet" desc = "An in-atmosphere helmet worn by members of the NanoTrasen Emergency Response Team. Protects the head from impacts." icon_state = "erthelmet_cmd" - item_state_slots = list( - slot_l_hand_str = "syndicate-helm-green", - slot_r_hand_str = "syndicate-helm-green", - ) + item_state_slots = list(slot_r_hand_str = "syndicate-helm-green", slot_l_hand_str = "syndicate-helm-green") armor = list(melee = 62, bullet = 50, laser = 50,energy = 35, bomb = 10, bio = 2, rad = 0) //Commander diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 4075a6d4b31..e829f6c86f6 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -4,17 +4,12 @@ name = "chef's hat" desc = "It's a hat used by chefs to keep hair out of your food. Judging by the food in the mess, they don't work." icon_state = "chefhat" - item_state = "chefhat" //Captain /obj/item/clothing/head/caphat name = "captain's hat" icon_state = "captain" desc = "It's good being the king." - item_state_slots = list( - slot_l_hand_str = "caphat", - slot_r_hand_str = "caphat", - ) body_parts_covered = 0 /obj/item/clothing/head/caphat/cap @@ -38,6 +33,7 @@ name = "chaplain's hood" desc = "It's hood that covers the head. It keeps you warm during the space winters." icon_state = "chaplain_hood" + item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black") flags_inv = BLOCKHAIR body_parts_covered = HEAD @@ -46,6 +42,7 @@ name = "nun hood" desc = "Maximum piety in this star system." icon_state = "nun_hood" + item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black") flags_inv = BLOCKHAIR body_parts_covered = HEAD @@ -61,70 +58,136 @@ name = "security beret" desc = "A beret with the security insignia emblazoned on it. For officers that are more inclined towards style than safety." icon_state = "beret_officer" + item_state_slots = list(slot_r_hand_str = "beret", slot_l_hand_str = "beret") + /obj/item/clothing/head/beret/sec/navy/officer name = "officer beret" desc = "A navy blue beret with an officer's rank emblem. For officers that are more inclined towards style than safety." icon_state = "beret_navy_officer" + item_state_slots = list(slot_r_hand_str = "beret_navy", slot_l_hand_str = "beret_navy") + /obj/item/clothing/head/beret/sec/navy/hos name = "officer beret" desc = "A navy blue beret with a head of security's rank emblem. For officers that are more inclined towards style than safety." icon_state = "beret_navy_hos" + item_state_slots = list(slot_r_hand_str = "beret_navy", slot_l_hand_str = "beret_navy") + /obj/item/clothing/head/beret/sec/navy/warden name = "warden beret" desc = "A navy blue beret with a warden's rank emblem. For officers that are more inclined towards style than safety." icon_state = "beret_navy_warden" + item_state_slots = list(slot_r_hand_str = "beret_navy", slot_l_hand_str = "beret_navy") + /obj/item/clothing/head/beret/sec/corporate/officer name = "officer beret" desc = "A corporate black beret with an officer's rank emblem. For officers that are more inclined towards style than safety." icon_state = "beret_corporate_officer" + item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black") + /obj/item/clothing/head/beret/sec/corporate/hos name = "officer beret" desc = "A corporate black beret with a head of security's rank emblem. For officers that are more inclined towards style than safety." icon_state = "beret_corporate_hos" + item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black") + /obj/item/clothing/head/beret/sec/corporate/warden name = "warden beret" desc = "A corporate black beret with a warden's rank emblem. For officers that are more inclined towards style than safety." icon_state = "beret_corporate_warden" + item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black") + +/obj/item/clothing/head/helmet/warden //should these be helmets? + name = "warden's hat" + desc = "It's a special helmet issued to the Warden of a securiy force." + icon_state = "policehelm" + body_parts_covered = 0 + +/obj/item/clothing/head/helmet/HoS + name = "Head of Security Hat" + desc = "The hat of the Head of Security. For showing the officers who's in charge." + icon_state = "hoscap" + body_parts_covered = 0 + siemens_coefficient = 0.8 + +/obj/item/clothing/head/helmet/HoS/dermal + name = "Dermal Armour Patch" + desc = "You're not quite sure how you manage to take it on and off, but it implants nicely in your head." + icon_state = "dermal" + item_state_slots = list(slot_r_hand_str = "", slot_l_hand_str = "") + siemens_coefficient = 0.6 + +/obj/item/clothing/head/det + name = "fedora" + desc = "A brown fedora - either the cornerstone of a detective's style or a poor attempt at looking cool, depending on the person wearing it." + icon_state = "detective" + allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen) + armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0) + siemens_coefficient = 0.9 + body_parts_covered = 0 + +/obj/item/clothing/head/det/grey + icon_state = "detective2" + item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") + desc = "A grey fedora - either the cornerstone of a detective's style or a poor attempt at looking cool, depending on the person wearing it." + + /obj/item/clothing/head/beret/engineering name = "engineering beret" desc = "A beret with the engineering insignia emblazoned on it. For engineers that are more inclined towards style than safety." icon_state = "beret_engineering" + /obj/item/clothing/head/beret/purple name = "purple beret" desc = "A stylish, if purple, beret." icon_state = "beret_purple" + /obj/item/clothing/head/beret/centcom/officer name = "officers beret" desc = "A dark blue beret adorned with a silver patch. Worn by NanoTrasen Officials." icon_state = "beret_centcom_officer" + item_state_slots = list(slot_r_hand_str = "beret_white", slot_l_hand_str = "beret_white") + /obj/item/clothing/head/beret/centcom/captain name = "captains beret" desc = "A white beret adorned with a blue patch. Worn by NanoTrasen command staff." icon_state = "beret_centcom_captain" + item_state_slots = list(slot_r_hand_str = "beret_white", slot_l_hand_str = "beret_white") + +/obj/item/clothing/head/beret/sec/gov + name = "officer beret" + desc = "A black beret with a gold emblem." + icon_state = "beret_corporate_hos" + item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black") //Medical /obj/item/clothing/head/surgery name = "surgical cap" desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs." icon_state = "surgcap_blue" + item_state_slots = list(slot_r_hand_str = "beret_blue", slot_l_hand_str = "beret_blue") flags_inv = BLOCKHEADHAIR /obj/item/clothing/head/surgery/purple desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is deep purple." icon_state = "surgcap_purple" + item_state_slots = list(slot_r_hand_str = "beret_purple", slot_l_hand_str = "beret_purple") /obj/item/clothing/head/surgery/blue desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is baby blue." icon_state = "surgcap_blue" + item_state_slots = list(slot_r_hand_str = "beret_blue", slot_l_hand_str = "beret_blue") /obj/item/clothing/head/surgery/green desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is dark green." icon_state = "surgcap_green" + item_state_slots = list(slot_r_hand_str = "beret_green", slot_l_hand_str = "beret_green") /obj/item/clothing/head/surgery/black desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is black." icon_state = "surgcap_black" + item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black") /obj/item/clothing/head/surgery/navyblue desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is navy blue." - icon_state = "surgcap_navyblue" \ No newline at end of file + icon_state = "surgcap_navyblue" + item_state_slots = list(slot_r_hand_str = "beret_navy", slot_l_hand_str = "beret_navy") \ No newline at end of file diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index e9143b4bca2..3a2ad098ad5 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -1,16 +1,15 @@ - - /obj/item/clothing/head/centhat name = "\improper CentComm. hat" icon_state = "centcom" - item_state_slots = list( - slot_l_hand_str = "centhat", - slot_r_hand_str = "centhat", - ) desc = "It's good to be emperor." siemens_coefficient = 0.9 body_parts_covered = 0 +/obj/item/clothing/head/centhat/customs + name = "Customs Hat" + desc = "A formal hat for SolGov Customs Officers." + icon_state = "customshat" + /obj/item/clothing/head/hairflower name = "hair flower pin" icon_state = "hairflower" @@ -37,25 +36,25 @@ name = "powdered wig" desc = "A powdered wig." icon_state = "pwig" - item_state = "pwig" /obj/item/clothing/head/that name = "top-hat" desc = "It's an amish looking hat." icon_state = "tophat" - item_state = "tophat" siemens_coefficient = 0.9 body_parts_covered = 0 /obj/item/clothing/head/redcoat name = "redcoat's hat" icon_state = "redcoat" + item_state_slots = list(slot_r_hand_str = "pirate", slot_l_hand_str = "pirate") desc = "'I guess it's a redhead.'" body_parts_covered = 0 /obj/item/clothing/head/mailman name = "station cap" icon_state = "mailman" + item_state_slots = list(slot_r_hand_str = "hopcap", slot_l_hand_str = "hopcap") desc = "Choo-choo!" body_parts_covered = 0 @@ -63,6 +62,7 @@ name = "plague doctor's hat" desc = "These were once used by Plague doctors. They're pretty much useless." icon_state = "plaguedoctor" + item_state_slots = list(slot_r_hand_str = "tophat", slot_l_hand_str = "tophat") permeability_coefficient = 0.01 siemens_coefficient = 0.9 body_parts_covered = 0 @@ -71,6 +71,7 @@ name = "hastur's hood" desc = "It's unspeakably stylish" icon_state = "hasturhood" + item_state_slots = list(slot_r_hand_str = "enginering_beret", slot_l_hand_str = "enginering_beret") flags_inv = BLOCKHAIR body_parts_covered = HEAD|FACE|EYES @@ -83,10 +84,7 @@ /obj/item/clothing/head/syndicatefake name = "red space-helmet replica" - item_state_slots = list( - slot_l_hand_str = "syndicate-helm-black-red", - slot_r_hand_str = "syndicate-helm-black-red", - ) + item_state_slots = list(slot_r_hand_str = "syndicate-helm-black-red", slot_l_hand_str = "syndicate-helm-black-red") icon_state = "syndicate" desc = "A plastic replica of a bloodthirsty mercenary's space helmet, you'll look just like a real murderous criminal operative in this! This is a toy, it is not made for use in space!" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR @@ -97,7 +95,6 @@ name = "cueball helmet" desc = "A large, featureless white orb mean to be worn on your head. How do you even see out of this thing?" icon_state = "cueball" - item_state = "cueball" flags_inv = BLOCKHAIR body_parts_covered = HEAD|FACE|EYES @@ -105,7 +102,6 @@ name = "green bandana" desc = "It's a green bandana with some fine nanotech lining." icon_state = "greenbandana" - item_state = "greenbandana" flags_inv = 0 body_parts_covered = 0 @@ -113,14 +109,13 @@ name = "cardborg helmet" desc = "A helmet made out of a box." icon_state = "cardborg_h" - item_state = "cardborg_h" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/head/justice name = "justice hat" desc = "fight for what's righteous!" - icon_state = "justicered" + icon_state = "justicered" //Does this even exist? flags_inv = BLOCKHAIR body_parts_covered = HEAD|EYES @@ -146,11 +141,8 @@ name = "flat cap" desc = "A working man's cap." icon_state = "flat_cap" - item_state_slots = list( - slot_l_hand_str = "det_hat", - slot_r_hand_str = "det_hat", - ) - siemens_coefficient = 0.9 + item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") + siemens_coefficient = 0.9 //...what? /obj/item/clothing/head/pirate name = "pirate hat" @@ -162,17 +154,20 @@ name = "pirate hat" desc = "Yarr." icon_state = "hgpiratecap" + item_state_slots = list(slot_r_hand_str = "hoscap", slot_l_hand_str = "hoscap") body_parts_covered = 0 /obj/item/clothing/head/bandana name = "pirate bandana" desc = "Yarr." icon_state = "bandana" + item_state_slots = list(slot_r_hand_str = "redbandana", slot_l_hand_str = "redbandana") /obj/item/clothing/head/bowler name = "bowler-hat" desc = "Gentleman, elite aboard!" icon_state = "bowler" + item_state_slots = list(slot_r_hand_str = "tophat", slot_l_hand_str = "tophat") body_parts_covered = 0 //stylish bs12 hats @@ -180,27 +175,32 @@ /obj/item/clothing/head/bowlerhat name = "bowler hat" icon_state = "bowler_hat" + item_state_slots = list(slot_r_hand_str = "tophat", slot_l_hand_str = "tophat") desc = "For the gentleman of distinction." body_parts_covered = 0 /obj/item/clothing/head/beaverhat name = "beaver hat" icon_state = "beaver_hat" + item_state_slots = list(slot_r_hand_str = "tophat", slot_l_hand_str = "tophat") desc = "Soft felt makes this hat both comfortable and elegant." /obj/item/clothing/head/boaterhat name = "boater hat" icon_state = "boater_hat" + item_state_slots = list(slot_r_hand_str = "tophat", slot_l_hand_str = "tophat") desc = "The ultimate in summer fashion." /obj/item/clothing/head/fedora name = "fedora" icon_state = "fedora" + item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") desc = "A sharp, stylish hat." /obj/item/clothing/head/feathertrilby name = "feather trilby" icon_state = "feather_trilby" + item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") desc = "A sharp, stylish hat with a feather." /obj/item/clothing/head/fez @@ -208,13 +208,10 @@ icon_state = "fez" desc = "You should wear a fez. Fezzes are cool." -//end bs12 hats - /obj/item/clothing/head/cowboy_hat name = "cowboy hat" desc = "For those that have spurs that go jingle jangle jingle." icon_state = "cowboyhat" - item_state = "cowboy_hat" body_parts_covered = 0 /obj/item/clothing/head/witchwig @@ -228,10 +225,6 @@ name = "chicken suit head" desc = "Bkaw!" icon_state = "chickenhead" - item_state_slots = list( - slot_l_hand_str = "chickensuit", - slot_r_hand_str = "chickensuit", - ) flags_inv = BLOCKHAIR siemens_coefficient = 0.7 body_parts_covered = HEAD|FACE|EYES @@ -240,16 +233,14 @@ name = "bear pelt hat" desc = "Fuzzy." icon_state = "bearpelt" + item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black") flags_inv = BLOCKHAIR siemens_coefficient = 0.7 /obj/item/clothing/head/xenos name = "xenos helmet" icon_state = "xenos" - item_state_slots = list( - slot_l_hand_str = "xenos_helm", - slot_r_hand_str = "xenos_helm", - ) + item_state_slots = list(slot_r_hand_str = "xenos_helm", slot_l_hand_str = "xenos_helm") desc = "A helmet made out of chitinous alien hide." flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR siemens_coefficient = 2.0 @@ -259,10 +250,7 @@ name = "natural philosopher's wig" desc = "A stylish monstrosity unearthed from Earth's Renaissance period. With this most distinguish'd wig, you'll be ready for your next soiree!" icon_state = "philosopher_wig" - item_state_slots = list( - slot_l_hand_str = "pwig", - slot_r_hand_str = "pwig", - ) + item_state_slots = list(slot_r_hand_str = "pwig", slot_l_hand_str = "pwig") flags_inv = BLOCKHAIR siemens_coefficient = 2.0 //why is it so conductive?! body_parts_covered = 0 @@ -277,6 +265,7 @@ name = "hijab" desc = "A veil that is wrapped to cover the head and chest" icon_state = "hijab" + item_state_slots = list(slot_r_hand_str = "beret_white", slot_l_hand_str = "beret_white") body_parts_covered = 0 flags_inv = BLOCKHAIR @@ -290,5 +279,6 @@ name = "turban" desc = "A cloth used to wind around the head" icon_state = "turban" + item_state_slots = list(slot_r_hand_str = "beret_white", slot_l_hand_str = "beret_white") body_parts_covered = 0 flags_inv = BLOCKHAIR diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index a15a6aeb555..1ea5376d6af 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -15,10 +15,7 @@ name = "welding helmet" desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye." icon_state = "welding" - item_state_slots = list( - slot_l_hand_str = "welding", - slot_r_hand_str = "welding", - ) + item_state_slots = list(slot_r_hand_str = "welding", slot_l_hand_str = "welding") matter = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000) var/up = 0 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) @@ -54,9 +51,11 @@ icon_state = "[base_state]up" usr << "You push the [src] up out of your face." update_clothing_icon() //so our mob-overlays + if (ismob(src.loc)) //should allow masks to update when it is opened/closed + var/mob/M = src.loc + M.update_inv_wear_mask() usr.update_action_buttons() - /* * Cakehat */ @@ -64,7 +63,6 @@ name = "cake-hat" desc = "It's tasty looking!" icon_state = "cake0" - item_state = "cake0" var/onfire = 0 body_parts_covered = HEAD @@ -83,18 +81,16 @@ location.hotspot_expose(700, 1) /obj/item/clothing/head/cakehat/attack_self(mob/user as mob) - src.onfire = !( src.onfire ) - if (src.onfire) - src.force = 3 - src.damtype = "fire" - src.icon_state = "cake1" - src.item_state = "cake1" + onfire = !(onfire) + if (onfire) + force = 3 + damtype = "fire" + icon_state = "cake1" processing_objects.Add(src) else - src.force = null - src.damtype = "brute" - src.icon_state = "cake0" - src.item_state = "cake0" + force = null + damtype = "brute" + icon_state = "cake0" return @@ -151,6 +147,7 @@ name = "chicken mask" desc = "You can hear the distant sounds of rhythmic electronica." icon_state = "richard" + item_state_slots = list(slot_r_hand_str = "chickenhead", slot_l_hand_str = "chickenhead") body_parts_covered = HEAD|FACE flags_inv = BLOCKHAIR @@ -158,10 +155,12 @@ name = "santa hat" desc = "It's a festive christmas hat, in red!" icon_state = "santahatnorm" + item_state_slots = list(slot_r_hand_str = "santahat", slot_l_hand_str = "santahat") body_parts_covered = 0 /obj/item/clothing/head/santa/green name = "green santa hat" desc = "It's a festive christmas hat, in green!" icon_state = "santahatgreen" + item_state_slots = list(slot_r_hand_str = "santahatgreen", slot_l_hand_str = "santahatgreen") body_parts_covered = 0 \ No newline at end of file diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index fe8ed1451ba..0a5a494ecba 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -2,26 +2,23 @@ name = "cargo cap" desc = "It's a peaked cap in a tasteless yellow color." icon_state = "cargosoft" - item_state_slots = list( - slot_l_hand_str = "helmet", //probably a placeholder - slot_r_hand_str = "helmet", - ) + item_state_slots = list(slot_r_hand_str = "cargosoft", slot_l_hand_str = "cargosoft") var/flipped = 0 siemens_coefficient = 0.9 body_parts_covered = 0 /obj/item/clothing/head/soft/dropped() - src.icon_state = initial(icon_state) - src.flipped=0 + icon_state = initial(icon_state) + flipped=0 ..() /obj/item/clothing/head/soft/attack_self(mob/user) - src.flipped = !src.flipped - if(src.flipped) + flipped = !flipped + if(flipped) icon_state = "[icon_state]_flipped" user << "You flip the hat backwards." else - src.icon_state = initial(icon_state) + icon_state = initial(icon_state) user << "You flip the hat back in normal position." update_clothing_icon() //so our mob-overlays update @@ -29,58 +26,70 @@ name = "red cap" desc = "It's a baseball hat in a tasteless red color." icon_state = "redsoft" + item_state_slots = list(slot_r_hand_str = "redsoft", slot_l_hand_str = "redsoft") /obj/item/clothing/head/soft/blue name = "blue cap" desc = "It's a peaked cap in a tasteless blue color." icon_state = "bluesoft" + item_state_slots = list(slot_r_hand_str = "bluesoft", slot_l_hand_str = "bluesoft") /obj/item/clothing/head/soft/green name = "green cap" desc = "It's a peaked cap in a tasteless green color." icon_state = "greensoft" + item_state_slots = list(slot_r_hand_str = "greensoft", slot_l_hand_str = "greensoft") /obj/item/clothing/head/soft/yellow name = "yellow cap" desc = "It's a peaked cap in a tasteless yellow color." icon_state = "yellowsoft" + item_state_slots = list(slot_r_hand_str = "yellowsoft", slot_l_hand_str = "yellowsoft") /obj/item/clothing/head/soft/grey name = "grey cap" desc = "It's a peaked cap in a tasteful grey color." icon_state = "greysoft" + item_state_slots = list(slot_r_hand_str = "greysoft", slot_l_hand_str = "greysoft") /obj/item/clothing/head/soft/orange name = "orange cap" desc = "It's a peaked cap in a tasteless orange color." icon_state = "orangesoft" + item_state_slots = list(slot_r_hand_str = "orangesoft", slot_l_hand_str = "orangesoft") /obj/item/clothing/head/soft/mime name = "white cap" desc = "It's a peaked cap in a tasteless white color." icon_state = "mimesoft" + item_state_slots = list(slot_r_hand_str = "mimesoft", slot_l_hand_str = "mimesoft") /obj/item/clothing/head/soft/purple name = "purple cap" desc = "It's a peaked cap in a tasteless purple color." icon_state = "purplesoft" + item_state_slots = list(slot_r_hand_str = "purplesoft", slot_l_hand_str = "purplesoft") /obj/item/clothing/head/soft/rainbow name = "rainbow cap" desc = "It's a peaked cap in a bright rainbow of colors." icon_state = "rainbowsoft" + item_state_slots = list(slot_r_hand_str = "rainbowsoft", slot_l_hand_str = "rainbowsoft") /obj/item/clothing/head/soft/sec name = "security cap" desc = "It's a field cap in tasteful red color." icon_state = "secsoft" + item_state_slots = list(slot_r_hand_str = "secsoft", slot_l_hand_str = "secsoft") /obj/item/clothing/head/soft/sec/corp name = "corporate security cap" desc = "It's field cap in corporate colors." icon_state = "corpsoft" + item_state_slots = list(slot_r_hand_str = "corpsoft", slot_l_hand_str = "corpsoft") /obj/item/clothing/head/soft/black name = "black cap" desc = "It's a peaked cap in a tasteful black color." - icon_state = "blacksoft" + icon_state = "blacksoft" + item_state_slots = list(slot_r_hand_str = "blacksoft", slot_l_hand_str = "blacksoft") \ No newline at end of file diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 1ef6db4337d..3dabeb99d6f 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -2,7 +2,7 @@ name = "balaclava" desc = "LOADSAMONEY" icon_state = "balaclava" - item_state = "balaclava" + item_state_slots = list(slot_r_hand_str = "bandblack", slot_l_hand_str = "bandblack") flags_inv = HIDEFACE|BLOCKHAIR body_parts_covered = FACE|HEAD w_class = 2 @@ -15,7 +15,7 @@ name = "green balaclava" desc = "Designed to both hide identities and keep your face comfy and warm." icon_state = "swatclava" - item_state = "balaclava" + item_state_slots = list(slot_r_hand_str = "bandgreen", slot_l_hand_str = "bandgreen") flags_inv = HIDEFACE|BLOCKHAIR w_class = 2 sprite_sheets = list( @@ -27,7 +27,6 @@ name = "Luchador Mask" desc = "Worn by robust fighters, flying high to defeat their foes!" icon_state = "luchag" - item_state = "luchag" flags_inv = HIDEFACE|BLOCKHAIR body_parts_covered = HEAD|FACE w_class = 2 @@ -37,10 +36,8 @@ name = "Tecnicos Mask" desc = "Worn by robust fighters who uphold justice and fight honorably." icon_state = "luchador" - item_state = "luchador" /obj/item/clothing/mask/luchador/rudos name = "Rudos Mask" desc = "Worn by robust fighters who are willing to do anything to win." - icon_state = "luchar" - item_state = "luchar" \ No newline at end of file + icon_state = "luchar" \ No newline at end of file diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 38e86e5dc9a..7568d53b741 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -2,7 +2,7 @@ desc = "A close-fitting mask that can be connected to an air supply." name = "breath mask" icon_state = "breath" - item_state = "breath" + item_state_slots = list(slot_r_hand_str = "breath", slot_l_hand_str = "breath") item_flags = AIRTIGHT|FLEXIBLEMATERIAL body_parts_covered = FACE w_class = 2 @@ -41,5 +41,5 @@ desc = "A close-fitting sterile mask that can be connected to an air supply." name = "medical mask" icon_state = "medical" - item_state = "medical" + item_state_slots = list(slot_r_hand_str = "medical", slot_l_hand_str = "medical") permeability_coefficient = 0.01 diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 7ea68f0a8df..ad7c9928d24 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -6,7 +6,7 @@ flags_inv = HIDEEARS|HIDEEYES|HIDEFACE body_parts_covered = FACE|EYES w_class = 3.0 - item_state = "gas_alt" + item_state_slots = list(slot_r_hand_str = "gas_alt", slot_l_hand_str = "gas_alt") gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 siemens_coefficient = 0.9 @@ -32,7 +32,7 @@ name = "plague doctor mask" desc = "A modernised version of the classic design, this mask will not only filter out phoron but it can also be connected to an air supply." icon_state = "plaguedoctor" - item_state = "gas_mask" + item_state_slots = list(slot_r_hand_str = "gas", slot_l_hand_str = "gas") armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 90, rad = 0) body_parts_covered = HEAD|FACE|EYES @@ -53,37 +53,36 @@ name = "clown wig and mask" desc = "A true prankster's facial attire. A clown is incomplete without their wig and mask." icon_state = "clown" - item_state = "clown_hat" + item_state_slots = list(slot_r_hand_str = "clown_hat", slot_l_hand_str = "clown_hat") /obj/item/clothing/mask/gas/sexyclown name = "sexy-clown wig and mask" desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." icon_state = "sexyclown" - item_state = "sexyclown" + item_state_slots = list(slot_r_hand_str = "clown_hat", slot_l_hand_str = "clown_hat") /obj/item/clothing/mask/gas/mime name = "mime mask" desc = "The traditional mime's mask. It has an eerie facial posture." icon_state = "mime" - item_state = "mime" + item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") /obj/item/clothing/mask/gas/monkeymask name = "monkey mask" desc = "A mask used when acting as a monkey." icon_state = "monkeymask" - item_state = "monkeymask" body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/mask/gas/sexymime name = "sexy mime mask" desc = "A traditional female mime's mask." icon_state = "sexymime" - item_state = "sexymime" + item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") /obj/item/clothing/mask/gas/death_commando name = "Death Commando Mask" icon_state = "death_commando_mask" - item_state = "death_commando_mask" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") siemens_coefficient = 0.2 /obj/item/clothing/mask/gas/cyborg diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index ad83edfbc42..fe0cfdebaa4 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -2,7 +2,6 @@ name = "muzzle" desc = "To stop that awful noise." icon_state = "muzzle" - item_state = "muzzle" body_parts_covered = FACE w_class = 2 gas_transfer_coefficient = 0.90 @@ -13,7 +12,7 @@ desc = "It's a robust DIY muzzle!" icon = 'icons/obj/bureaucracy.dmi' icon_state = "tape_cross" - item_state = null + item_state_slots = list(slot_r_hand_str = null, slot_l_hand_str = null) w_class = 1 /obj/item/clothing/mask/muzzle/New() @@ -31,13 +30,38 @@ name = "sterile mask" desc = "A sterile mask designed to help prevent the spread of diseases." icon_state = "sterile" - item_state = "sterile" + item_state_slots = list(slot_r_hand_str = "sterile", slot_l_hand_str = "sterile") w_class = 2 body_parts_covered = FACE item_flags = FLEXIBLEMATERIAL gas_transfer_coefficient = 0.90 permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0) + var/hanging = 0 + +/obj/item/clothing/mask/surgical/proc/adjust_mask(mob_user) + if(usr.canmove && !usr.stat) + src.hanging = !src.hanging + if (src.hanging) + gas_transfer_coefficient = 1 + body_parts_covered = body_parts_covered & ~FACE + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) + icon_state = "steriledown" + usr << "You pull the mask below your chin." + else + gas_transfer_coefficient = initial(gas_transfer_coefficient) + body_parts_covered = initial(body_parts_covered) + icon_state = initial(icon_state) + armor = initial(armor) + usr << "You pull the mask up to cover your face." + update_clothing_icon() + +/obj/item/clothing/mask/surgical/verb/toggle() + set category = "Object" + set name = "Adjust mask" + set src in usr + + adjust_mask(usr) /obj/item/clothing/mask/fakemoustache name = "fake moustache" @@ -59,7 +83,6 @@ name = "blue neck scarf" desc = "A blue neck scarf." icon_state = "blueneckscarf" - item_state = "blueneckscarf" body_parts_covered = FACE item_flags = FLEXIBLEMATERIAL w_class = 2 @@ -69,7 +92,6 @@ name = "red scarf" desc = "A red and white checkered neck scarf." icon_state = "redwhite_scarf" - item_state = "redwhite_scarf" body_parts_covered = FACE item_flags = FLEXIBLEMATERIAL w_class = 2 @@ -79,7 +101,6 @@ name = "green scarf" desc = "A green neck scarf." icon_state = "green_scarf" - item_state = "green_scarf" body_parts_covered = FACE item_flags = FLEXIBLEMATERIAL w_class = 2 @@ -89,7 +110,6 @@ name = "ninja scarf" desc = "A stealthy, dark scarf." icon_state = "ninja_scarf" - item_state = "ninja_scarf" body_parts_covered = FACE item_flags = FLEXIBLEMATERIAL w_class = 2 @@ -100,7 +120,6 @@ name = "pig mask" desc = "A rubber pig mask." icon_state = "pig" - item_state = "pig" flags_inv = HIDEFACE|BLOCKHAIR w_class = 2 siemens_coefficient = 0.9 @@ -110,7 +129,6 @@ name = "horse head mask" desc = "A mask made of soft vinyl and latex, representing the head of a horse." icon_state = "horsehead" - item_state = "horsehead" flags_inv = HIDEFACE|BLOCKHAIR body_parts_covered = HEAD|FACE|EYES w_class = 2 @@ -126,7 +144,7 @@ name = "camera MIU" desc = "Allows for direct mental connection to accessible camera networks." icon_state = "s-ninja" - item_state = "s-ninja" + item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") flags_inv = HIDEFACE body_parts_covered = 0 var/mob/observer/eye/aiEye/eye @@ -160,29 +178,57 @@ flags_inv = HIDEFACE slot_flags = SLOT_MASK icon_state = "bandblack" - item_state = null + item_state_slots = list(slot_r_hand_str = "bandblack", slot_l_hand_str = "bandblack") + var/tied = 0 + +/obj/item/clothing/mask/bandana/proc/adjust_bandana(mob/user) + if(usr.canmove && !usr.stat) + src.tied = !src.tied + if (src.tied) + flags_inv = flags_inv & ~HIDEFACE + slot_flags = SLOT_HEAD + icon_state = "[icon_state]_up" + usr << "You tie the bandana so that it can be worn on the head." + else + flags_inv = initial(flags_inv) + slot_flags = initial(slot_flags) + icon_state = initial(icon_state) + usr << "You tie the bandana so that it can be worn on the face." + +/obj/item/clothing/mask/bandana/verb/toggle() + set category = "Object" + set name = "Tie bandana" + set src in usr + + adjust_bandana(usr) + update_icon() /obj/item/clothing/mask/bandana/red name = "red bandana" desc = "A fine red bandana with nanotech lining." icon_state = "bandred" + item_state_slots = list(slot_r_hand_str = "bandred", slot_l_hand_str = "bandred") /obj/item/clothing/mask/bandana/blue name = "blue bandana" desc = "A fine blue bandana with nanotech lining." icon_state = "bandblue" + item_state_slots = list(slot_r_hand_str = "bandblue", slot_l_hand_str = "bandblue") /obj/item/clothing/mask/bandana/green name = "green bandana" desc = "A fine green bandana with nanotech lining." icon_state = "bandgreen" + item_state_slots = list(slot_r_hand_str = "bandgreen", slot_l_hand_str = "bandgreen") /obj/item/clothing/mask/bandana/gold name = "gold bandana" desc = "A fine gold bandana with nanotech lining." icon_state = "bandgold" + item_state_slots = list(slot_r_hand_str = "bandgold", slot_l_hand_str = "bandgold") /obj/item/clothing/mask/bandana/skull name = "skull bandana" desc = "A fine black bandana with nanotech lining and a skull emblem." icon_state = "bandskull" + item_state_slots = list(slot_r_hand_str = "bandskull", slot_l_hand_str = "bandskull") \ No newline at end of file diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index 669047d80ab..f79b7ca4f03 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -8,7 +8,6 @@ heat_protection = FEET max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE - /obj/item/clothing/shoes/brown name = "brown shoes" desc = "A pair of brown shoes." @@ -30,10 +29,6 @@ name = "purple shoes" icon_state = "purple" -/obj/item/clothing/shoes/brown - name = "brown shoes" - icon_state = "brown" - /obj/item/clothing/shoes/red name = "red shoes" desc = "Stylish red shoes." @@ -58,36 +53,43 @@ name = "black flats" desc = "Sleek black flats." icon_state = "flatsblack" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") /obj/item/clothing/shoes/flats/white name = "white flats" desc = "Shiny white flats." icon_state = "flatswhite" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") /obj/item/clothing/shoes/flats/red name = "red flats" desc = "Ruby red flats." icon_state = "flatsred" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") /obj/item/clothing/shoes/flats/purple name = "purple flats" desc = "Royal purple flats." icon_state = "flatspurple" + item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple") /obj/item/clothing/shoes/flats/blue name = "blue flats" desc = "Sleek blue flats." icon_state = "flatsblue" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") /obj/item/clothing/shoes/flats/brown name = "brown flats" desc = "Sleek brown flats." icon_state = "flatsbrown" + item_state_slots = list(slot_r_hand_str = "brown", slot_l_hand_str = "brown") /obj/item/clothing/shoes/flats/orange name = "orange flats" desc = "Radiant orange flats." icon_state = "flatsorange" + item_state_slots = list(slot_r_hand_str = "orange", slot_l_hand_str = "orange") /obj/item/clothing/shoes/orange name = "orange shoes" @@ -95,23 +97,23 @@ var/obj/item/weapon/handcuffs/chained = null /obj/item/clothing/shoes/orange/proc/attach_cuffs(var/obj/item/weapon/handcuffs/cuffs, mob/user as mob) - if (src.chained) return + if (chained) return user.drop_item() cuffs.loc = src - src.chained = cuffs - src.slowdown = 15 - src.icon_state = "orange1" + chained = cuffs + slowdown = 15 + icon_state = "orange1" /obj/item/clothing/shoes/orange/proc/remove_cuffs(mob/user as mob) - if (!src.chained) return + if (!chained) return - user.put_in_hands(src.chained) - src.chained.add_fingerprint(user) + user.put_in_hands(chained) + chained.add_fingerprint(user) - src.slowdown = initial(slowdown) - src.icon_state = "orange" - src.chained = null + slowdown = initial(slowdown) + icon_state = "orange" + chained = null /obj/item/clothing/shoes/orange/attack_self(mob/user as mob) ..() @@ -120,6 +122,4 @@ /obj/item/clothing/shoes/orange/attackby(H as obj, mob/user as mob) ..() if (istype(H, /obj/item/weapon/handcuffs)) - attach_cuffs(H, user) - - + attach_cuffs(H, user) \ No newline at end of file diff --git a/code/modules/clothing/shoes/jobs.dm b/code/modules/clothing/shoes/jobs.dm index 768595c2ae8..63d4dc192af 100644 --- a/code/modules/clothing/shoes/jobs.dm +++ b/code/modules/clothing/shoes/jobs.dm @@ -11,7 +11,6 @@ name = "jackboots" desc = "Standard-issue Security combat boots for combat scenarios or combat situations. All combat, all the time." icon_state = "jackboots" - item_state = "jackboots" force = 3 armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0) siemens_coefficient = 0.7 @@ -20,15 +19,14 @@ /obj/item/clothing/shoes/jackboots/toeless name = "toe-less jackboots" desc = "Modified pair of jackboots, particularly friendly to those species whose toes hold claws." - item_state = "digiboots" icon_state = "digiboots" + item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots") species_restricted = null /obj/item/clothing/shoes/workboots name = "workboots" desc = "A pair of steel-toed work boots designed for use in industrial settings. Safety first." icon_state = "workboots" - item_state = "workboots" armor = list(melee = 40, bullet = 0, laser = 0, energy = 15, bomb = 20, bio = 0, rad = 20) siemens_coefficient = 0.7 can_hold_knife = 1 \ No newline at end of file diff --git a/code/modules/clothing/shoes/leg_guards.dm b/code/modules/clothing/shoes/leg_guards.dm index 5dd8b0d5fcd..b063e2b50ac 100644 --- a/code/modules/clothing/shoes/leg_guards.dm +++ b/code/modules/clothing/shoes/leg_guards.dm @@ -18,6 +18,7 @@ name = "ablative leg guards" desc = "These will protect your legs and feet from energy weapons." icon_state = "leg_guards_laser" + item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots") siemens_coefficient = 0.1 armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) @@ -25,6 +26,7 @@ name = "bullet resistant leg guards" desc = "These will protect your legs and feet from ballistic weapons." icon_state = "leg_guards_bullet" + item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots") siemens_coefficient = 0.7 armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) @@ -32,6 +34,7 @@ name = "riot leg guards" desc = "These will protect your legs and feet from close combat weapons." icon_state = "leg_guards_riot" + item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots") siemens_coefficient = 0.5 armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) @@ -39,5 +42,6 @@ name = "combat leg guards" desc = "These will protect your legs and feet from a variety of weapons." icon_state = "leg_guards_combat" + item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots") siemens_coefficient = 0.6 armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0) diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index b94cb78da5c..0f862f4c53f 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -2,6 +2,7 @@ desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. They're large enough to be worn over other footwear." name = "magboots" icon_state = "magboots0" + item_state_slots = list(slot_r_hand_str = "magboots", slot_l_hand_str = "magboots") species_restricted = null force = 3 overshoes = 1 diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 26459605a54..f6423106a5f 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -2,7 +2,6 @@ desc = "A pair of brown shoes. They seem to have extra grip." name = "brown shoes" icon_state = "brown" - item_state = "brown" permeability_coefficient = 0.05 item_flags = NOSLIP origin_tech = list(TECH_ILLEGAL = 3) @@ -12,12 +11,13 @@ /obj/item/clothing/shoes/mime name = "mime shoes" - icon_state = "mime" + icon_state = "white" /obj/item/clothing/shoes/swat name = "\improper SWAT shoes" desc = "When you want to turn up the heat." icon_state = "swat" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") force = 3 armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) item_flags = NOSLIP @@ -58,7 +58,7 @@ name = "combat boots" desc = "Standard issue combat boots for combat scenarios or combat situations. All combat, all the time. It can hold a Strategical knife." icon_state = "jackboots" - item_state = "jackboots" + item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots") armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) siemens_coefficient = 0.6 var/obj/item/weapon/material/hatchet/tacknife @@ -125,7 +125,6 @@ desc = "The prankster's standard-issue clowning shoes. Damn they're huge!" name = "clown shoes" icon_state = "clown" - item_state = "clown_shoes" slowdown = SHOES_SLOWDOWN+1 force = 0 var/footstep = 1 //used for squeeks whilst walking @@ -145,7 +144,7 @@ name = "boots" desc = "A pair of boots worn by the followers of Nar-Sie." icon_state = "cult" - item_state = "cult" + item_state_slots = list(slot_r_hand_str = "cult", slot_l_hand_str = "cult") force = 2 siemens_coefficient = 0.7 @@ -167,7 +166,6 @@ name = "bunny slippers" desc = "Fluffy!" icon_state = "slippers" - item_state = "slippers" force = 0 species_restricted = null w_class = 2 @@ -176,7 +174,7 @@ name = "worn bunny slippers" desc = "Fluffy..." icon_state = "slippers_worn" - item_state = "slippers_worn" + item_state_slots = list(slot_r_hand_str = "slippers", slot_l_hand_str = "slippers") force = 0 w_class = 2 @@ -189,6 +187,7 @@ desc = "Help you swim good." name = "swimming fins" icon_state = "flippers" + item_state_slots = list(slot_r_hand_str = "galoshes", slot_l_hand_str = "galoshes") item_flags = NOSLIP slowdown = SHOES_SLOWDOWN+1 species_restricted = null @@ -197,7 +196,6 @@ name = "winter boots" desc = "Boots lined with 'synthetic' animal fur." icon_state = "winterboots" - item_state = "winterboots" cold_protection = FEET|LEGS min_cold_protection_temperature = SHOE_MIN_COLD_PROTECTION_TEMPERATURE heat_protection = FEET|LEGS diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index d5c49babfff..9d940c9e30d 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -23,8 +23,6 @@ /obj/item/clothing/suit/space/skrell/white icon_state = "skrell_suit_white" - item_state = "skrell_suit_white" /obj/item/clothing/suit/space/skrell/black - icon_state = "skrell_suit_black" - item_state = "skrell_suit_black" + icon_state = "skrell_suit_black" \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/captain.dm b/code/modules/clothing/spacesuits/captain.dm deleted file mode 100644 index e99dc6d8ce6..00000000000 --- a/code/modules/clothing/spacesuits/captain.dm +++ /dev/null @@ -1,29 +0,0 @@ -//Captain's Spacesuit -/obj/item/clothing/head/helmet/space/capspace - name = "space helmet" - icon_state = "capspace" - item_state = "capspace" - desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads." - item_flags = STOPPRESSUREDAMAGE - flags_inv = HIDEFACE|BLOCKHAIR - permeability_coefficient = 0.01 - armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50) - -//Captain's space suit This is not the proper path but I don't currently know enough about how this all works to mess with it. -/obj/item/clothing/suit/armor/captain - name = "Captain's armor" - desc = "A bulky, heavy-duty piece of exclusive corporate armor. YOU are in charge!" - icon_state = "caparmor" - item_state = "capspacesuit" - w_class = 5 - gas_transfer_coefficient = 0.01 - permeability_coefficient = 0.02 - item_flags = STOPPRESSUREDAMAGE - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS - allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) - slowdown = 1.5 - armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL - cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE - siemens_coefficient = 0.7 diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index ce8f89dc561..c8d73b0f3e1 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -2,9 +2,9 @@ /obj/item/clothing/head/helmet/space/capspace name = "space helmet" icon_state = "capspace" - item_state = "capspace" desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads." - flags_inv = HIDEFACE + item_flags = STOPPRESSUREDAMAGE + flags_inv = HIDEFACE|BLOCKHAIR permeability_coefficient = 0.01 armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50) @@ -13,8 +13,7 @@ name = "Captain's armor" desc = "A bulky, heavy-duty piece of exclusive corporate armor. YOU are in charge!" icon_state = "caparmor" - item_state = "capspacesuit" - w_class = 4 + w_class = 5 gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 item_flags = STOPPRESSUREDAMAGE @@ -32,10 +31,7 @@ name = "deathsquad helmet" desc = "That's not red paint. That's real blood." icon_state = "deathsquad" - item_state_slots = list( - slot_l_hand_str = "syndicate-helm-black-red", - slot_r_hand_str = "syndicate-helm-black-red", - ) + item_state_slots = list(slot_r_hand_str = "syndicate-helm-black-red", slot_l_hand_str = "syndicate-helm-black-red") armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 100, rad = 60) item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL flags_inv = BLOCKHAIR @@ -46,6 +42,7 @@ name = "officer's beret" desc = "An armored beret commonly used by special operations officers." icon_state = "beret_badge" + item_state_slots = list(slot_r_hand_str = "beret", slot_l_hand_str = "beret") armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) item_flags = STOPPRESSUREDAMAGE flags_inv = BLOCKHAIR @@ -56,7 +53,6 @@ name = "Santa's hat" desc = "Ho ho ho. Merrry X-mas!" icon_state = "santahat" - item_state = "santahat" item_flags = STOPPRESSUREDAMAGE flags_inv = BLOCKHAIR body_parts_covered = HEAD @@ -65,7 +61,6 @@ name = "Santa's suit" desc = "Festive!" icon_state = "santa" - item_state = "santa" slowdown = 0 item_flags = STOPPRESSUREDAMAGE allowed = list(/obj/item) //for stuffing exta special presents @@ -75,7 +70,6 @@ name = "pirate hat" desc = "Yarr." icon_state = "pirate" - item_state = "pirate" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) item_flags = STOPPRESSUREDAMAGE flags_inv = BLOCKHAIR @@ -86,7 +80,6 @@ name = "pirate coat" desc = "Yarr." icon_state = "pirate" - item_state = "pirate" w_class = 3 allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 0 @@ -97,14 +90,11 @@ //Orange emergency space suit /obj/item/clothing/head/helmet/space/emergency name = "Emergency Space Helmet" - icon_state = "emergencyhelm" - item_state = "emergencyhelm" + icon_state = "syndicate-helm-orange" desc = "A simple helmet with a built in light, smells like mothballs." - /obj/item/clothing/suit/space/emergency name = "Emergency Softsuit" icon_state = "syndicate-orange" - item_state = "syndicate-orange" desc = "A thin, ungainly softsuit colored in blaze orange for rescuers to easily locate, looks pretty fragile." slowdown = 4 diff --git a/code/modules/clothing/spacesuits/rig/modules/computer.dm b/code/modules/clothing/spacesuits/rig/modules/computer.dm index c8a2296680a..ccfc3079932 100644 --- a/code/modules/clothing/spacesuits/rig/modules/computer.dm +++ b/code/modules/clothing/spacesuits/rig/modules/computer.dm @@ -434,6 +434,8 @@ holder.spark_system.start() playsound(H.loc, 'sound/effects/sparks2.ogg', 50, 1) + H.break_cloak() + if(!holder.cell) H << "Your power sink flashes an error; there is no cell in your rig." drain_complete(H) diff --git a/code/modules/clothing/spacesuits/rig/modules/ninja.dm b/code/modules/clothing/spacesuits/rig/modules/ninja.dm index 5f6ce6249cc..cb269daa2e1 100644 --- a/code/modules/clothing/spacesuits/rig/modules/ninja.dm +++ b/code/modules/clothing/spacesuits/rig/modules/ninja.dm @@ -42,7 +42,7 @@ anim(get_turf(H), H, 'icons/effects/effects.dmi', "electricity",null,20,null) - H.visible_message("[H.name] vanishes into thin air!",1) + H.visible_message("[H.name] vanishes into thin air!") /obj/item/rig_module/stealth_field/deactivate() diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 4d900827081..ae064dd2a89 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -36,7 +36,7 @@ var/chest_type = /obj/item/clothing/suit/space/rig var/helm_type = /obj/item/clothing/head/helmet/space/rig var/boot_type = /obj/item/clothing/shoes/magboots/rig - var/glove_type = /obj/item/clothing/gloves/rig + var/glove_type = /obj/item/clothing/gloves/gauntlets/rig var/cell_type = /obj/item/weapon/cell/high var/air_type = /obj/item/weapon/tank/oxygen @@ -45,7 +45,7 @@ var/obj/item/clothing/shoes/boots = null // Deployable boots, if any. var/obj/item/clothing/suit/space/rig/chest // Deployable chestpiece, if any. var/obj/item/clothing/head/helmet/space/rig/helmet = null // Deployable helmet, if any. - var/obj/item/clothing/gloves/rig/gloves = null // Deployable gauntlets, if any. + var/obj/item/clothing/gloves/gauntlets/rig/gloves = null // Deployable gauntlets, if any. var/obj/item/weapon/cell/cell // Power supply, if any. var/obj/item/rig_module/selected_module = null // Primary system (used with middle-click) var/obj/item/rig_module/vision/visor // Kinda shitty to have a var for a module, but saves time. diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm index 62c0f217614..dd7c4732155 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm @@ -17,7 +17,7 @@ ) species_restricted = null -/obj/item/clothing/gloves/rig +/obj/item/clothing/gloves/gauntlets/rig name = "gauntlets" item_flags = THICKMATERIAL body_parts_covered = HANDS @@ -82,7 +82,7 @@ /obj/item/clothing/head/helmet/space/rig/proc/prevent_track() return 0 -/obj/item/clothing/gloves/rig/Touch(var/atom/A, var/proximity) +/obj/item/clothing/gloves/gauntlets/rig/Touch(var/atom/A, var/proximity) if(!A || !proximity) return 0 @@ -128,7 +128,7 @@ species_restricted = null gender = PLURAL -/obj/item/clothing/gloves/lightrig +/obj/item/clothing/gloves/gauntlets/lightrig name = "gloves" flags = THICKMATERIAL body_parts_covered = HANDS diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 3c4975f7d31..f81110013e3 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -15,13 +15,13 @@ chest_type = /obj/item/clothing/suit/space/rig/light helm_type = /obj/item/clothing/head/helmet/space/rig/light boot_type = /obj/item/clothing/shoes/magboots/rig/light - glove_type = /obj/item/clothing/gloves/rig/light + glove_type = /obj/item/clothing/gloves/gauntlets/rig/light /obj/item/clothing/suit/space/rig/light name = "suit" breach_threshold = 18 //comparable to voidsuits -/obj/item/clothing/gloves/rig/light +/obj/item/clothing/gloves/gauntlets/rig/light name = "gloves" /obj/item/clothing/shoes/magboots/rig/light @@ -43,7 +43,7 @@ helm_type = /obj/item/clothing/head/lightrig/hacker chest_type = /obj/item/clothing/suit/lightrig/hacker - glove_type = /obj/item/clothing/gloves/lightrig/hacker + glove_type = /obj/item/clothing/gloves/gauntlets/lightrig/hacker boot_type = /obj/item/clothing/shoes/lightrig/hacker initial_modules = list( @@ -68,20 +68,20 @@ siemens_coefficient = 0.4 flags = NOSLIP //All the other rigs have magboots anyways, hopefully gives the hacker suit something more going for it. -/obj/item/clothing/gloves/lightrig/hacker +/obj/item/clothing/gloves/gauntlets/lightrig/hacker siemens_coefficient = 0 /obj/item/weapon/rig/light/ninja name = "ominous suit control module" suit_type = "ominous" - desc = "A unique, vaccum-proof suit of nano-enhanced armor designed specifically for Spider Clan assassins." + desc = "A unique suit of nano-enhanced armor designed for covert operations." icon_state = "ninja_rig" armor = list(melee = 50, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 30) emp_protection = 40 //change this to 30 if too high. slowdown = 0 chest_type = /obj/item/clothing/suit/space/rig/light/ninja - glove_type = /obj/item/clothing/gloves/rig/light/ninja + glove_type = /obj/item/clothing/gloves/gauntlets/rig/light/ninja cell_type = /obj/item/weapon/cell/hyper req_access = list(access_syndicate) @@ -103,7 +103,7 @@ ..() -/obj/item/clothing/gloves/rig/light/ninja +/obj/item/clothing/gloves/gauntlets/rig/light/ninja name = "insulated gloves" siemens_coefficient = 0 diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index 350d2aea4a1..270d21cfebd 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -102,6 +102,8 @@ /obj/item/weapon/rig/eva/equipped + req_access = list(access_engine) + initial_modules = list( /obj/item/rig_module/device/plasmacutter, /obj/item/rig_module/maneuvering_jets, @@ -200,6 +202,8 @@ /obj/item/weapon/rig/medical/equipped + req_access = list(access_medical) + initial_modules = list( /obj/item/rig_module/chem_dispenser/injector, /obj/item/rig_module/maneuvering_jets, diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index b5669b6746e..f06e839ae3a 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -7,10 +7,6 @@ icon_state = "space" desc = "A special helmet designed for work in a hazardous, low-pressure environment." item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL | AIRTIGHT - item_state_slots = list( - slot_l_hand_str = "s_helmet", - slot_r_hand_str = "s_helmet", - ) permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR @@ -50,7 +46,6 @@ name = "Space suit" desc = "A suit that protects against low pressure environments. \""+station_short+"\" is written in large block letters on the back." icon_state = "space" - item_state = "s_suit" w_class = 5 // So you can't fit this in your bag and be prepared at all times. gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 9922483f2cf..20ee7ddc04d 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -2,7 +2,6 @@ /obj/item/clothing/head/helmet/space/syndicate name = "red space helmet" icon_state = "syndicate" - item_state = "syndicate" desc = "A crimson helmet sporting clean lines and durable plating. Engineered to look menacing." armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0.6 @@ -10,7 +9,6 @@ /obj/item/clothing/suit/space/syndicate name = "red space suit" icon_state = "syndicate" - item_state = "space_suit_syndicate" desc = "A crimson spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious." w_class = 3 allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) @@ -18,154 +16,122 @@ armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0.6 - //Green syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/green name = "green space helmet" desc = "A green helmet sporting clean lines and durable plating. Engineered to look menacing." icon_state = "syndicate-helm-green" - item_state = "syndicate-helm-green" /obj/item/clothing/suit/space/syndicate/green name = "green space suit" desc = "A green spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-green" - item_state = "syndicate-green" - //Dark green syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/green/dark name = "dark green space helmet" desc = "A dark green helmet sporting clean lines and durable plating. Engineered to look menacing." icon_state = "syndicate-helm-green-dark" - item_state = "syndicate-helm-green-dark" /obj/item/clothing/suit/space/syndicate/green/dark name = "dark green space suit" desc = "A dark green spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-green-dark" - item_state = "syndicate-green-dark" - - + //Orange syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/orange name = "orange space helmet" desc = "An orange helmet sporting clean lines and durable plating. Engineered to look menacing." icon_state = "syndicate-helm-orange" - item_state = "syndicate-helm-orange" /obj/item/clothing/suit/space/syndicate/orange name = "orange space suit" desc = "An orange spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-orange" - item_state = "syndicate-orange" - //Blue syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/blue name = "blue space helmet" desc = "A blue helmet sporting clean lines and durable plating. Engineered to look menacing." icon_state = "syndicate-helm-blue" - item_state = "syndicate-helm-blue" /obj/item/clothing/suit/space/syndicate/blue name = "blue space suit" desc = "A blue spacesuit sporting clean lines and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-blue" - item_state = "syndicate-blue" - //Black syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black name = "black space helmet" desc = "A black helmet sporting durable plating. Engineered to look menacing." icon_state = "syndicate-helm-black" - item_state = "syndicate-helm-black" /obj/item/clothing/suit/space/syndicate/black name = "black space suit" desc = "A black spacesuit sporting durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-black" - item_state = "syndicate-black" - //Black-green syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black/green name = "black and green space helmet" desc = "A black helmet sporting a single green stripe and durable plating. Engineered to look menacing." icon_state = "syndicate-helm-black-green" - item_state = "syndicate-helm-black-green" /obj/item/clothing/suit/space/syndicate/black/green name = "black and green space suit" desc = "A black spacesuit sporting green stripes and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-black-green" - item_state = "syndicate-black-green" - //Black-blue syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black/blue name = "black and blue space helmet" desc = "A black helmet sporting a single blue stripe and durable plating. Engineered to look menacing." icon_state = "syndicate-helm-black-blue" - item_state = "syndicate-helm-black-blue" /obj/item/clothing/suit/space/syndicate/black/blue name = "black and blue space suit" desc = "A black spacesuit sporting blue stripes and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-black-blue" - item_state = "syndicate-black-blue" - //Black medical syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black/med name = "black medical space helmet" desc = "A black helmet sporting a medical cross and durable plating. Hopefully the wearer abides by space geneva." icon_state = "syndicate-helm-black-med" - item_state_slots = list(slot_head_str = "syndicate-helm-black-med") /obj/item/clothing/suit/space/syndicate/black/med name = "black medical space suit" desc = "A black spacesuit sporting a medical cross and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-black-med" - item_state = "syndicate-black" - //Black-orange syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black/orange name = "black and orange space helmet" icon_state = "syndicate-helm-black-orange" - item_state_slots = list(slot_head_str = "syndicate-helm-black-orange") /obj/item/clothing/suit/space/syndicate/black/orange name = "black and orange space suit" desc = "A black spacesuit sporting orange stripes and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-black-orange" - item_state = "syndicate-black" - //Black-red syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black/red name = "black and red space helmet" desc = "A black helmet sporting a single red stripe and durable plating. Engineered to look menacing." icon_state = "syndicate-helm-black-red" - item_state = "syndicate-helm-black-red" - + /obj/item/clothing/suit/space/syndicate/black/red name = "black and red space suit" desc = "A black spacesuit sporting red stripes and durable plating. Robust, reliable, and slightly suspicious." icon_state = "syndicate-black-red" - item_state = "syndicate-black-red" //Black with yellow/red engineering syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/black/engie name = "black engineering space helmet" desc = "A black helmet sporting red and yellow stripes and durable plating. Engineered to look well... engineering-ish." icon_state = "syndicate-helm-black-engie" - item_state_slots = list(slot_head_str = "syndicate-helm-black-engie") /obj/item/clothing/suit/space/syndicate/black/engie name = "black engineering space suit" desc = "A black spacesuit sporting red and yellow stripes and durable plating. Robust, reliable, and slightly suspicious." - icon_state = "syndicate-black-engie" - item_state = "syndicate-black" + icon_state = "syndicate-black-engie" \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/void/merc.dm b/code/modules/clothing/spacesuits/void/merc.dm index 0fe4a7457a6..9e1e3513cc1 100644 --- a/code/modules/clothing/spacesuits/void/merc.dm +++ b/code/modules/clothing/spacesuits/void/merc.dm @@ -3,7 +3,7 @@ name = "blood-red voidsuit helmet" desc = "An advanced helmet designed for work in special operations. Property of Gorlex Marauders." icon_state = "rig0-syndie" - item_state = "rig0-syndie" + item_state_slots = list(slot_r_hand_str = "syndie_helm", slot_l_hand_str = "syndie_helm") armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.6 species_restricted = list("Human") @@ -14,7 +14,7 @@ icon_state = "rig-syndie" name = "blood-red voidsuit" desc = "An advanced suit that protects against injuries during special operations. Property of Gorlex Marauders." - item_state = "syndie_voidsuit" + item_state_slots = list(slot_r_hand_str = "syndie_voidsuit", slot_l_hand_str = "syndie_voidsuit") slowdown = 1 w_class = 3 armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60) diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index f8e6f03611a..dde178e33db 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -1,101 +1,86 @@ // Station voidsuits -//Engineering rig +//Engineering /obj/item/clothing/head/helmet/space/void/engineering name = "engineering voidsuit helmet" desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding." icon_state = "rig0-engineering" - item_state_slots = list( - slot_l_hand_str = "eng_helm", - slot_r_hand_str = "eng_helm", - ) + item_state_slots = list(slot_r_hand_str = "eng_helm", slot_l_hand_str = "eng_helm") armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 80) /obj/item/clothing/suit/space/void/engineering name = "engineering voidsuit" desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding." icon_state = "rig-engineering" - item_state = "eng_voidsuit" + item_state_slots = list(slot_r_hand_str = "eng_voidsuit", slot_l_hand_str = "eng_voidsuit") slowdown = 1 armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 80) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) -//Mining rig +//Mining /obj/item/clothing/head/helmet/space/void/mining name = "mining voidsuit helmet" desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating." icon_state = "rig0-mining" - item_state_slots = list( - slot_l_hand_str = "mining_helm", - slot_r_hand_str = "mining_helm", - ) + item_state_slots = list(slot_r_hand_str = "mining_helm", slot_l_hand_str = "mining_helm") armor = list(melee = 50, bullet = 5, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 20) light_overlay = "helmet_light_dual" /obj/item/clothing/suit/space/void/mining - icon_state = "rig-mining" name = "mining voidsuit" desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating." - item_state = "mining_voidsuit" + icon_state = "rig-mining" + item_state_slots = list(slot_r_hand_str = "mining_voidsuit", slot_l_hand_str = "mining_voidsuit") armor = list(melee = 50, bullet = 5, laser = 20,energy = 5, bomb = 55, bio = 100, rad = 20) -//Medical Rig +//Medical /obj/item/clothing/head/helmet/space/void/medical name = "medical voidsuit helmet" desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding." icon_state = "rig0-medical" - item_state_slots = list( - slot_l_hand_str = "medical_helm", - slot_r_hand_str = "medical_helm", - ) + item_state_slots = list(slot_r_hand_str = "medical_helm", slot_l_hand_str = "medical_helm") armor = list(melee = 30, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 50) /obj/item/clothing/suit/space/void/medical - icon_state = "rig-medical" name = "medical voidsuit" desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding." - item_state = "medical_voidsuit" + icon_state = "rig-medical" + item_state_slots = list(slot_r_hand_str = "medical_voidsuit", slot_l_hand_str = "medical_voidsuit") allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical) armor = list(melee = 30, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 50) - //Security +//Security /obj/item/clothing/head/helmet/space/void/security name = "security voidsuit helmet" desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor." icon_state = "rig0-sec" - item_state_slots = list( - slot_l_hand_str = "sec_helm", - slot_r_hand_str = "sec_helm", - ) + item_state_slots = list(slot_r_hand_str = "sec_helm", slot_l_hand_str = "sec_helm") armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10) siemens_coefficient = 0.7 light_overlay = "helmet_light_dual" /obj/item/clothing/suit/space/void/security - icon_state = "rig-sec" name = "security voidsuit" desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor." - item_state = "sec_voidsuit" + icon_state = "rig-sec" + item_state_slots = list(slot_r_hand_str = "sec_voidsuit", slot_l_hand_str = "sec_voidsuit") armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10) allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/melee/baton) siemens_coefficient = 0.7 -//Atmospherics Rig (BS12) +//Atmospherics /obj/item/clothing/head/helmet/space/void/atmos desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding." name = "atmospherics voidsuit helmet" icon_state = "rig0-atmos" - item_state_slots = list( - slot_l_hand_str = "atmos_helm", - slot_r_hand_str = "atmos_helm", - ) + item_state_slots = list(slot_r_hand_str = "atmos_helm", slot_l_hand_str = "atmos_helm") armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 50) max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE light_overlay = "helmet_light_dual" /obj/item/clothing/suit/space/void/atmos + name = "atmos voidsuit" desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding." icon_state = "rig-atmos" - name = "atmos voidsuit" - item_state = "atmos_voidsuit" + item_state_slots = list(slot_r_hand_str = "atmos_voidsuit", slot_l_hand_str = "atmos_voidsuit") armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 50) max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm index c0d9e58a2c7..d1b4a06d232 100644 --- a/code/modules/clothing/spacesuits/void/void.dm +++ b/code/modules/clothing/spacesuits/void/void.dm @@ -3,7 +3,7 @@ name = "void helmet" desc = "A high-tech dark red space suit helmet. Used for AI satellite maintenance." icon_state = "void" - + item_state_slots = list(slot_r_hand_str = "syndicate", slot_l_hand_str = "syndicate") heat_protection = HEAD armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20) max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE @@ -30,7 +30,7 @@ /obj/item/clothing/suit/space/void name = "voidsuit" icon_state = "void" - item_state = "void" + item_state_slots = list(slot_r_hand_str = "space_suit_syndicate", slot_l_hand_str = "space_suit_syndicate") desc = "A high-tech dark red space suit. Used for AI satellite maintenance." slowdown = 1 armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20) diff --git a/code/modules/clothing/spacesuits/void/wizard.dm b/code/modules/clothing/spacesuits/void/wizard.dm index 846d0466eb6..4c2318355f6 100644 --- a/code/modules/clothing/spacesuits/void/wizard.dm +++ b/code/modules/clothing/spacesuits/void/wizard.dm @@ -3,10 +3,7 @@ name = "gem-encrusted voidsuit helmet" desc = "A bizarre gem-encrusted helmet that radiates magical energies." icon_state = "rig0-wiz" - item_state_slots = list( - slot_l_hand_str = "wiz_helm", - slot_r_hand_str = "wiz_helm", - ) + item_state_slots = list(slot_r_hand_str = "wiz_helm", slot_l_hand_str = "wiz_helm") unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles! armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.7 @@ -18,7 +15,7 @@ icon_state = "rig-wiz" name = "gem-encrusted voidsuit" desc = "A bizarre gem-encrusted suit that radiates magical energies." - item_state = "wiz_voidsuit" + item_state_slots = list(slot_r_hand_str = "wiz_voidsuit", slot_l_hand_str = "wiz_voidsuit") slowdown = 1 w_class = 3 unacidable = 1 diff --git a/code/modules/clothing/suits/alien.dm b/code/modules/clothing/suits/alien.dm index 54141e99948..896b5eed29e 100644 --- a/code/modules/clothing/suits/alien.dm +++ b/code/modules/clothing/suits/alien.dm @@ -1,30 +1,26 @@ //Unathi clothing. - /obj/item/clothing/suit/unathi/robe name = "roughspun robes" desc = "A traditional Unathi garment." icon_state = "robe-unathi" - item_state = "robe-unathi" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS /obj/item/clothing/suit/unathi/mantle name = "hide mantle" desc = "A rather grisly selection of cured hides and skin, sewn together to form a ragged mantle." icon_state = "mantle-unathi" - item_state = "mantle-unathi" body_parts_covered = UPPER_TORSO //Taj clothing. - /obj/item/clothing/suit/tajaran/furs name = "heavy furs" desc = "A traditional Zhan-Khazan garment." icon_state = "zhan_furs" - item_state = "zhan_furs" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS /obj/item/clothing/head/tajaran/scarf name = "headscarf" desc = "A scarf of coarse fabric. Seems to have ear-holes." icon_state = "zhan_scarf" + item_state_slots = list(slot_r_hand_str = "beret_white", slot_l_hand_str = "beret_white") body_parts_covered = HEAD|FACE \ No newline at end of file diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index b856f8a8bbf..3476ea183a0 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -1,4 +1,3 @@ - /obj/item/clothing/suit/armor allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight) body_parts_covered = UPPER_TORSO|LOWER_TORSO @@ -25,7 +24,6 @@ name = "armor" desc = "An armored vest that protects against some damage." icon_state = "armor" - item_state = "armor" blood_overlay_type = "armor" armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0) @@ -33,34 +31,19 @@ name = "security armor" desc = "An armored vest that protects against some damage. This one has a NanoTrasen corporate badge." icon_state = "armoralt" - item_state = "armoralt" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") /obj/item/clothing/suit/armor/vest/security name = "security armor" desc = "An armored vest that protects against some damage. This one has a corporate badge." icon_state = "armorsec" - item_state = "armor" - -/obj/item/clothing/suit/armor/vest/warden - name = "Warden's jacket" - desc = "An armoured jacket with silver rank pips and livery." - icon_state = "warden_jacket" - item_state = "armor" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - -/obj/item/clothing/suit/armor/vest/warden/alt - name = "Warden's jacket" - desc = "An armoured jacket with silver rank pips and livery." - icon_state = "warden_alt" - item_state = "warden_alt" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") /obj/item/clothing/suit/armor/riot name = "riot vest" desc = "A vest with heavy padding to protect against melee attacks." icon_state = "riot" - item_state = "swat_suit" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") slowdown = 1 armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEJUMPSUIT @@ -68,27 +51,26 @@ /obj/item/clothing/suit/armor/riot/alt icon_state = "riot_new" - item_state = "riot_new" + item_state_slots = list(slot_r_hand_str = "riot_new", slot_l_hand_str = "riot_new") /obj/item/clothing/suit/armor/bulletproof name = "bullet resistant vest" desc = "A vest that excels in protecting the wearer against high-velocity solid projectiles." icon_state = "bulletproof" - item_state = "armor" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") blood_overlay_type = "armor" armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.7 /obj/item/clothing/suit/armor/bulletproof/alt icon_state = "bulletproof_new" - item_state = "bulletproof_new" + item_state_slots = list(slot_r_hand_str = "bulletproof_new", slot_l_hand_str = "bulletproof_new") blood_overlay_type = "armor" /obj/item/clothing/suit/armor/laserproof name = "ablative armor vest" desc = "A vest that excels in protecting the wearer against energy projectiles." icon_state = "armor_reflec" - item_state = "armor_reflec" blood_overlay_type = "armor" armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.1 @@ -110,6 +92,7 @@ // redirect the projectile P.redirect(new_x, new_y, curloc, user) + P.reflected = 1 return PROJECTILE_CONTINUE // complete projectile permutation @@ -117,7 +100,6 @@ name = "combat vest" desc = "A vest that protects the wearer from several common types of weaponry." icon_state = "combat" - item_state = "combat" blood_overlay_type = "armor" armor = list(melee = 50, bullet = 50, laser = 50, energy = 30, bomb = 30, bio = 0, rad = 0) siemens_coefficient = 0.6 @@ -126,7 +108,7 @@ name = "tactical armor" desc = "A suit of armor most often used by Special Weapons and Tactics squads. Includes padded vest with pockets along with shoulder and kneeguards." icon_state = "swatarmor" - item_state = "armor" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS slowdown = 1 armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0) @@ -136,7 +118,7 @@ name = "swat suit" desc = "A heavily armored suit that protects against moderate damage. Used in special operations." icon_state = "deathsquad" - item_state = "swat_suit" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 item_flags = STOPPRESSUREDAMAGE | THICKMATERIAL @@ -155,7 +137,7 @@ name = "officer jacket" desc = "An armored jacket used in special operations." icon_state = "detective" - item_state = "det_suit" + item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") blood_overlay_type = "coat" flags_inv = 0 body_parts_covered = UPPER_TORSO|ARMS @@ -165,7 +147,7 @@ name = "armor" desc = "An armored vest with a detective's badge on it." icon_state = "detective-armor" - item_state = "armor" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO|LOWER_TORSO armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0) @@ -178,7 +160,7 @@ desc = "Someone separated our Research Director from their own head!" var/active = 0.0 icon_state = "reactiveoff" - item_state = "reactiveoff" + item_state_slots = list(slot_r_hand_str = "armor_reflec_old", slot_l_hand_str = "armor_reflec_old") blood_overlay_type = "armor" slowdown = 1 armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) @@ -207,22 +189,19 @@ return 0 /obj/item/clothing/suit/armor/reactive/attack_self(mob/user as mob) - src.active = !( src.active ) - if (src.active) + active = !( active ) + if (active) user << "\blue The reactive armor is now active." - src.icon_state = "reactive" - src.item_state = "reactive" + icon_state = "reactive" else user << "\blue The reactive armor is now inactive." - src.icon_state = "reactiveoff" - src.item_state = "reactiveoff" - src.add_fingerprint(user) + icon_state = "reactiveoff" + add_fingerprint(user) return /obj/item/clothing/suit/armor/reactive/emp_act(severity) active = 0 - src.icon_state = "reactiveoff" - src.item_state = "reactiveoff" + icon_state = "reactiveoff" ..() //Non-hardsuit ERT armor. @@ -230,7 +209,7 @@ name = "emergency response team armor" desc = "A set of armor worn by members of the Emergency Response Team." icon_state = "ertarmor_cmd" - item_state = "armor" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 20, bio = 0, rad = 0) @@ -262,7 +241,7 @@ name = "armor vest" desc = "A simple kevlar plate carrier." icon_state = "kvest" - item_state = "kvest" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0) allowed = list(/obj/item/weapon/gun,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/flashlight/maglight) @@ -279,7 +258,7 @@ name = "officer armor vest" desc = "A simple kevlar plate carrier. This one has a security holobadge clipped to the chest." icon_state = "officervest_nobadge" - item_state = "officervest_nobadge" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") icon_badge = "officervest_badge" icon_nobadge = "officervest_nobadge" @@ -287,23 +266,52 @@ name = "warden armor vest" desc = "A simple kevlar plate carrier. This one has a silver badge clipped to the chest." icon_state = "wardenvest_nobadge" - item_state = "wardenvest_nobadge" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") icon_badge = "wardenvest_badge" icon_nobadge = "wardenvest_nobadge" +/obj/item/clothing/suit/storage/vest/wardencoat + name = "Warden's jacket" + desc = "An armoured jacket with silver rank pips and livery." + icon_state = "warden_jacket" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + +/obj/item/clothing/suit/storage/vest/wardencoat/alt + name = "Warden's jacket" + desc = "An armoured jacket with silver rank pips and livery." + icon_state = "warden_alt" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + /obj/item/clothing/suit/storage/vest/hos name = "head of security armor vest" desc = "A simple kevlar plate carrier. This one has a gold badge clipped to the chest." icon_state = "hosvest_nobadge" - item_state = "hosvest_nobadge" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") icon_badge = "hosvest_badge" icon_nobadge = "hosvest_nobadge" +/obj/item/clothing/suit/storage/vest/hoscoat + name = "armored coat" + desc = "A greatcoat enhanced with a special alloy for some protection and style." + icon_state = "hos" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) + flags_inv = HIDEJUMPSUIT + siemens_coefficient = 0.6 + +//Jensen cosplay gear +/obj/item/clothing/suit/storage/vest/hoscoat/jensen + name = "armored trenchcoat" + desc = "A trenchcoat augmented with a special alloy for some protection and style." + icon_state = "hostrench" + flags_inv = 0 + siemens_coefficient = 0.6 + /obj/item/clothing/suit/storage/vest/pcrc name = "PCRC armor vest" desc = "A simple kevlar plate carrier belonging to Proxima Centauri Risk Control. This one has a PCRC crest clipped to the chest." icon_state = "pcrcvest_nobadge" - item_state = "pcrcvest_nobadge" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") icon_badge = "pcrcvest_badge" icon_nobadge = "pcrcvest_nobadge" @@ -311,7 +319,7 @@ name = "detective armor vest" desc = "A simple kevlar plate carrier in a vintage brown, it has a badge clipped to the chest that reads, 'Private investigator'." icon_state = "detectivevest_nobadge" - item_state = "detectivevest_nobadge" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") icon_badge = "detectivevest_badge" icon_nobadge = "detectivevest_nobadge" @@ -319,7 +327,7 @@ name = "heavy armor vest" desc = "A heavy kevlar plate carrier with webbing attached." icon_state = "webvest" - item_state = "webvest" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") armor = list(melee = 50, bullet = 40, laser = 40, energy = 25, bomb = 25, bio = 0, rad = 0) slowdown = 1 @@ -327,7 +335,7 @@ name = "officer heavy armor vest" desc = "A heavy kevlar plate carrier with webbing attached. This one has a security holobadge clipped to the chest." icon_state = "officerwebvest_nobadge" - item_state = "officerwebvest_nobadge" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") icon_badge = "officerwebvest_badge" icon_nobadge = "officerwebvest_nobadge" @@ -335,7 +343,7 @@ name = "warden heavy armor vest" desc = "A heavy kevlar plate carrier with webbing attached. This one has a silver badge clipped to the chest." icon_state = "wardenwebvest_nobadge" - item_state = "wardenwebvest_nobadge" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") icon_badge = "wardenwebvest_badge" icon_nobadge = "wardenwebvest_nobadge" @@ -343,7 +351,7 @@ name = "head of security heavy armor vest" desc = "A heavy kevlar plate carrier with webbing attached. This one has a gold badge clipped to the chest." icon_state = "hoswebvest_nobadge" - item_state = "hoswebvest_nobadge" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") icon_badge = "hoswebvest_badge" icon_nobadge = "hoswebvest_nobadge" @@ -351,7 +359,7 @@ name = "PCRC heavy armor vest" desc = "A heavy kevlar plate carrier belonging to Proxima Centauri Risk Control with webbing attached. This one has a PCRC crest clipped to the chest." icon_state = "pcrcwebvest_nobadge" - item_state = "pcrcwebvest_nobadge" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") icon_badge = "pcrcwebvest_badge" icon_nobadge = "pcrcwebvest_nobadge" @@ -360,18 +368,17 @@ name = "heavy armor vest" desc = "A high-quality heavy kevlar plate carrier in a fetching tan. The vest is surprisingly flexible, and possibly made of an advanced material." icon_state = "mercwebvest" - item_state = "mercwebvest" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0) slowdown = 0 //All of the armor below is mostly unused - /obj/item/clothing/suit/armor/centcomm name = "Cent. Com. armor" desc = "A suit that protects against some damage." icon_state = "centcom" - item_state = "centcom" + item_state_slots = list(slot_r_hand_str = "armor", slot_l_hand_str = "armor") w_class = 4//bulky item body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) @@ -384,7 +391,8 @@ name = "heavy armor" desc = "A heavily armored suit that protects against moderate damage." icon_state = "heavy" - item_state = "swat_suit" + item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat") + armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0) w_class = 4//bulky item gas_transfer_coefficient = 0.90 body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS @@ -395,17 +403,16 @@ /obj/item/clothing/suit/armor/tdome body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0) /obj/item/clothing/suit/armor/tdome/red name = "Thunderdome suit (red)" desc = "Reddish armor." icon_state = "tdred" - item_state = "tdred" siemens_coefficient = 1 /obj/item/clothing/suit/armor/tdome/green name = "Thunderdome suit (green)" desc = "Pukish armor." icon_state = "tdgreen" - item_state = "tdgreen" siemens_coefficient = 1 diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 415f8a6da6d..227414b0e4e 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -2,10 +2,6 @@ /obj/item/clothing/head/bio_hood name = "bio hood" icon_state = "bio" - item_state_slots = list( - slot_l_hand_str = "bio_hood", - slot_r_hand_str = "bio_hood", - ) desc = "A hood that protects the head and face from biological comtaminants." permeability_coefficient = 0.01 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) @@ -17,7 +13,6 @@ name = "bio suit" desc = "A suit that protects against biological contamination." icon_state = "bio" - item_state = "bio_suit" w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 @@ -28,14 +23,15 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL siemens_coefficient = 0.9 - //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general icon_state = "bio_general" + item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio") body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/suit/bio_suit/general icon_state = "bio_general" + item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL @@ -66,7 +62,6 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL - //Scientist's biosuit, white with a pink-ish hue /obj/item/clothing/head/bio_hood/scientist icon_state = "bio_scientist" @@ -85,11 +80,10 @@ /obj/item/clothing/head/bio_hood/cmo icon_state = "bio_cmo" - //Plague Dr mask can be found in clothing/masks/gasmask.dm /obj/item/clothing/suit/bio_suit/plaguedoctorsuit name = "Plague doctor suit" desc = "It protected doctors from the Black Death, back then. You bet your arse it's gonna help you against viruses." icon_state = "plaguedoctor" - item_state = "bio_suit" + item_state_slots = list(slot_r_hand_str = "bio", slot_l_hand_str = "bio") flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 0c5f09e5afb..cb3f20749bf 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -7,7 +7,7 @@ name = "apron" desc = "A basic blue apron." icon_state = "apron" - item_state = "apron" + item_state_slots = list(slot_r_hand_str = "overalls", slot_l_hand_str = "overalls") blood_overlay_type = "armor" body_parts_covered = 0 allowed = list (/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/device/analyzer/plant_analyzer,/obj/item/seeds,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/material/minihoe) @@ -17,7 +17,6 @@ name = "captain's parade tunic" desc = "Worn by a Captain to show their class." icon_state = "captunic" - item_state = "captunic" body_parts_covered = UPPER_TORSO|ARMS flags_inv = HIDEJUMPSUIT @@ -25,7 +24,6 @@ name = "captain's uniform jacket" desc = "A less formal jacket for everyday captain use." icon_state = "capjacket" - item_state = "capjacket" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS flags_inv = HIDEJUMPSUIT @@ -34,7 +32,7 @@ name = "chaplain hoodie" desc = "This suit says to you 'hush'!" icon_state = "chaplain_hoodie" - item_state = "chaplain_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") body_parts_covered = UPPER_TORSO|ARMS //Chaplain @@ -42,7 +40,6 @@ name = "nun robe" desc = "Maximum piety in this star system." icon_state = "nun" - item_state = "nun" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS flags_inv = HIDESHOES|HIDEJUMPSUIT @@ -51,7 +48,6 @@ name = "chef's apron" desc = "An apron used by a high class chef." icon_state = "chef" - item_state = "chef" gas_transfer_coefficient = 0.90 permeability_coefficient = 0.50 body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS @@ -62,7 +58,6 @@ name = "classic chef's apron" desc = "A basic, dull, white chef's apron." icon_state = "apronchef" - item_state = "apronchef" blood_overlay_type = "armor" body_parts_covered = 0 @@ -71,21 +66,21 @@ name = "security officer's jacket" desc = "This jacket is for those special occasions when a security officer actually feels safe." icon_state = "officerbluejacket" - item_state = "officerbluejacket" + item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy") body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/suit/security/navywarden name = "warden's jacket" desc = "Perfectly suited for the warden that wants to leave an impression of style on those who visit the brig." icon_state = "wardenbluejacket" - item_state = "wardenbluejacket" + item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy") body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/suit/security/navyhos name = "head of security's jacket" desc = "This piece of clothing was specifically designed for asserting superior authority." icon_state = "hosbluejacket" - item_state = "hosbluejacket" + item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy") body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS //Detective @@ -93,7 +88,6 @@ name = "brown trenchcoat" desc = "A rugged canvas trenchcoat, designed and created by TX Fabrication Corp. The coat is externally impact resistant - perfect for your next act of autodefenestration!" icon_state = "detective" - item_state = "det_suit" blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|ARMS allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter,/obj/item/device/taperecorder,/obj/item/device/uv_light) @@ -102,12 +96,12 @@ /obj/item/clothing/suit/storage/det_trench/grey name = "grey trenchcoat" icon_state = "detective2" + item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket") //Forensics /obj/item/clothing/suit/storage/forensics name = "jacket" desc = "A forensics technician jacket." - item_state = "det_suit" body_parts_covered = UPPER_TORSO|ARMS allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/device/taperecorder,/obj/item/device/uv_light) armor = list(melee = 10, bullet = 10, laser = 15, energy = 10, bomb = 0, bio = 0, rad = 0) @@ -116,6 +110,7 @@ name = "red jacket" desc = "A red forensics technician jacket." icon_state = "forensics_red" + item_state_slots = list(slot_r_hand_str = "suit_red", slot_l_hand_str = "suit_red") /obj/item/clothing/suit/storage/forensics/red/long name = "long red jacket" @@ -126,6 +121,7 @@ name = "blue jacket" desc = "A blue forensics technician jacket." icon_state = "forensics_blue" + item_state_slots = list(slot_r_hand_str = "suit_navy", slot_l_hand_str = "suit_navy") /obj/item/clothing/suit/storage/forensics/blue/long name = "long blue jacket" @@ -137,7 +133,6 @@ name = "hazard vest" desc = "A high-visibility vest used in work zones." icon_state = "hazard" - item_state = "hazard" blood_overlay_type = "armor" allowed = list (/obj/item/device/analyzer, /obj/item/device/flashlight, /obj/item/device/multitool, /obj/item/device/pipe_painter, /obj/item/device/radio, /obj/item/device/t_scanner, \ /obj/item/weapon/crowbar, /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/weapon/tank/emergency_oxygen, \ @@ -149,7 +144,7 @@ name = "blue suit jacket" desc = "A snappy dress jacket." icon_state = "suitjacket_blue_open" - item_state = "suitjacket_blue_open" + item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue") icon_open = "suitjacket_blue_open" icon_closed = "suitjacket_blue" blood_overlay_type = "coat" @@ -159,7 +154,7 @@ name = "purple suit jacket" desc = "A snappy dress jacket." icon_state = "suitjacket_purp_open" - item_state = "suitjacket_purp_open" + item_state_slots = list(slot_r_hand_str = "suit_purple", slot_l_hand_str = "suit_purple") icon_open = "suitjacket_purp_open" icon_closed = "suitjacket_purp" blood_overlay_type = "coat" @@ -170,20 +165,18 @@ name = "black suit jacket" desc = "A smooth black jacket." icon_state = "ia_jacket_open" - item_state = "ia_jacket" + item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") icon_open = "ia_jacket_open" icon_closed = "ia_jacket" blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|ARMS - - //Medical /obj/item/clothing/suit/storage/toggle/fr_jacket name = "first responder jacket" desc = "A high-visibility jacket worn by medical first responders." icon_state = "fr_jacket_open" - item_state = "fr_jacket" + item_state_slots = list(slot_r_hand_str = "fr_jacket", slot_l_hand_str = "fr_jacket") icon_open = "fr_jacket_open" icon_closed = "fr_jacket" blood_overlay_type = "armor" @@ -195,7 +188,7 @@ name = "\improper EMS jacket" desc = "A dark blue, martian-pattern, EMS jacket. It sports high-visibility reflective stripes and a star of life on the back." icon_state = "ems_jacket_closed" - item_state = "ems_jacket_closed" + item_state_slots = list(slot_r_hand_str = "ems_jacket", slot_l_hand_str = "ems_jacket") icon_open = "ems_jacket_open" icon_closed = "ems_jacket_closed" diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index e6b9c0c69fa..2035a86d41b 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -2,7 +2,7 @@ name = "labcoat" desc = "A suit that protects against minor chemical spills." icon_state = "labcoat_open" - item_state = "labcoat" //Is this even used for anything? + item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat") icon_open = "labcoat_open" icon_closed = "labcoat" blood_overlay_type = "coat" @@ -14,65 +14,65 @@ name = "red labcoat" desc = "A suit that protects against minor chemical spills. This one is red." icon_state = "red_labcoat_open" - item_state = "red_labcoat" icon_open = "red_labcoat_open" icon_closed = "red_labcoat" + item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/blue name = "blue labcoat" desc = "A suit that protects against minor chemical spills. This one is blue." icon_state = "blue_labcoat_open" - item_state = "blue_labcoat" icon_open = "blue_labcoat_open" icon_closed = "blue_labcoat" + item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/purple name = "purple labcoat" desc = "A suit that protects against minor chemical spills. This one is purple." icon_state = "purple_labcoat_open" - item_state = "purple_labcoat" icon_open = "purple_labcoat_open" icon_closed = "purple_labcoat" + item_state_slots = list(slot_r_hand_str = "purple_labcoat", slot_l_hand_str = "purple_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/orange name = "orange labcoat" desc = "A suit that protects against minor chemical spills. This one is orange." icon_state = "orange_labcoat_open" - item_state = "orange_labcoat" icon_open = "orange_labcoat_open" icon_closed = "orange_labcoat" + item_state_slots = list(slot_r_hand_str = "orange_labcoat", slot_l_hand_str = "orange_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/green name = "green labcoat" desc = "A suit that protects against minor chemical spills. This one is green." icon_state = "green_labcoat_open" - item_state = "green_labcoat" icon_open = "green_labcoat_open" icon_closed = "green_labcoat" + item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/yellow name = "yellow labcoat" desc = "A suit that protects against minor chemical spills. This one is yellow." icon_state = "yellow_labcoat_open" - item_state = "yellow_labcoat" icon_open = "yellow_labcoat_open" icon_closed = "yellow_labcoat" + item_state_slots = list(slot_r_hand_str = "yellow_labcoat", slot_l_hand_str = "yellow_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/pink name = "pink labcoat" desc = "A suit that protects against minor chemical spills. This one is pink." icon_state = "pink_labcoat_open" - item_state = "pink_labcoat" icon_open = "pink_labcoat_open" icon_closed = "pink_labcoat" + item_state_slots = list(slot_r_hand_str = "pink_labcoat", slot_l_hand_str = "pink_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/cmo name = "chief medical officer's labcoat" desc = "Bluer than the standard model." icon_state = "labcoat_cmo_open" - item_state = "labcoat_cmo" icon_open = "labcoat_cmo_open" icon_closed = "labcoat_cmo" + item_state_slots = list(slot_r_hand_str = "cmo_labcoat", slot_l_hand_str = "cmo_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt name = "chief medical officer labcoat" @@ -80,14 +80,15 @@ icon_state = "labcoat_cmoalt_open" icon_open = "labcoat_cmoalt_open" icon_closed = "labcoat_cmoalt" + item_state_slots = list(slot_r_hand_str = "cmo_labcoat", slot_l_hand_str = "cmo_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/mad name = "The Mad's labcoat" desc = "It makes you look capable of konking someone on the noggin and shooting them into space." icon_state = "labgreen_open" - item_state = "labgreen" icon_open = "labgreen_open" icon_closed = "labgreen" + item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/genetics name = "Geneticist labcoat" @@ -95,6 +96,7 @@ icon_state = "labcoat_gen_open" icon_open = "labcoat_gen_open" icon_closed = "labcoat_gen" + item_state_slots = list(slot_r_hand_str = "genetics_labcoat", slot_l_hand_str = "genetics_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/chemist name = "Chemist labcoat" @@ -102,6 +104,7 @@ icon_state = "labcoat_chem_open" icon_open = "labcoat_chem_open" icon_closed = "labcoat_chem" + item_state_slots = list(slot_r_hand_str = "chemist_labcoat", slot_l_hand_str = "chemist_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/virologist name = "Virologist labcoat" @@ -109,6 +112,7 @@ icon_state = "labcoat_vir_open" icon_open = "labcoat_vir_open" icon_closed = "labcoat_vir" + item_state_slots = list(slot_r_hand_str = "virologist_labcoat", slot_l_hand_str = "virologist_labcoat") armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 0) /obj/item/clothing/suit/storage/toggle/labcoat/science @@ -117,11 +121,12 @@ icon_state = "labcoat_tox_open" icon_open = "labcoat_tox_open" icon_closed = "labcoat_tox" + item_state_slots = list(slot_r_hand_str = "science_labcoat", slot_l_hand_str = "science_labcoat") /obj/item/clothing/suit/storage/toggle/labcoat/emt name = "EMT's labcoat" desc = "A dark blue labcoat with reflective strips for emergency medical technicians." icon_state = "labcoat_emt_open" - item_state = "labcoat_emt" icon_open = "labcoat_emt_open" icon_closed = "labcoat_emt" + item_state_slots = list(slot_r_hand_str = "emt_labcoat", slot_l_hand_str = "emt_labcoat") \ No newline at end of file diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 413685df456..51ec3c6edd9 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -5,6 +5,8 @@ * Misc */ +// -S2-note- Needs categorizing and sorting. + /* * Lasertag */ @@ -12,7 +14,7 @@ name = "blue laser tag armour" desc = "Blue Pride, Station Wide." icon_state = "bluetag" - item_state = "bluetag" + item_state_slots = list(slot_r_hand_str = "tdblue", slot_l_hand_str = "tdblue") blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO allowed = list (/obj/item/weapon/gun/energy/lasertag/blue) @@ -22,7 +24,7 @@ name = "red laser tag armour" desc = "Reputed to go faster." icon_state = "redtag" - item_state = "redtag" + item_state_slots = list(slot_r_hand_str = "tdred", slot_l_hand_str = "tdred") blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO allowed = list (/obj/item/weapon/gun/energy/lasertag/red) @@ -35,83 +37,95 @@ name = "pirate coat" desc = "Yarr." icon_state = "pirate" - item_state = "pirate" + item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat") body_parts_covered = UPPER_TORSO|ARMS - /obj/item/clothing/suit/hgpirate name = "pirate captain coat" desc = "Yarr." icon_state = "hgpirate" - item_state = "hgpirate" + item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat") flags_inv = HIDEJUMPSUIT body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - /obj/item/clothing/suit/cyborg_suit name = "cyborg suit" desc = "Suit for a cyborg costume." icon_state = "death" - item_state = "death" flags = CONDUCT fire_resist = T0C+5200 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - /obj/item/clothing/suit/greatcoat name = "great coat" desc = "A heavy great coat" - icon_state = "nazi" - item_state = "nazi" - + icon_state = "gentlecoat" + item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat") /obj/item/clothing/suit/johnny_coat name = "johnny~~ coat" desc = "Johnny~~" - icon_state = "johnny" - item_state = "johnny" - + icon_state = "gentlecoat" + item_state_slots = list(slot_r_hand_str = "johnny_coat", slot_l_hand_str = "johnny_coat") /obj/item/clothing/suit/justice name = "justice suit" desc = "This pretty much looks ridiculous." - icon_state = "justice" - item_state = "justice" + icon_state = "gentle_coat" + item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat") flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET - /obj/item/clothing/suit/judgerobe name = "judge's robe" desc = "This robe commands authority." icon_state = "judge" - item_state = "judge" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS allowed = list(/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/spacecash) flags_inv = HIDEJUMPSUIT - /obj/item/clothing/suit/wcoat name = "waistcoat" desc = "For some classy, murderous fun." icon_state = "vest" - item_state = "wcoat" + item_state_slots = list(slot_r_hand_str = "wcoat", slot_l_hand_str = "wcoat") blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO|LOWER_TORSO +/obj/item/clothing/suit/wcoat/red + name = "red waistcoat" + icon_state = "red_waistcoat" + +/obj/item/clothing/suit/wcoat/grey + name = "grey waistcoat" + icon_state = "grey_waistcoat" + +/obj/item/clothing/suit/wcoat/brown + name = "brown waistcoat" + icon_state = "brown_waistcoat" + +/obj/item/clothing/suit/wcoat/swvest + name = "black sweatervest" + desc = "A sleeveless sweater. Wear this if you don't want your arms to be warm, or if you're a nerd." + icon_state = "sweatervest" + +/obj/item/clothing/suit/wcoat/swvest/blue + name = "blue sweatervest" + icon_state = "sweatervest_blue" + +/obj/item/clothing/suit/wcoat/swvest/red + name = "red sweatervest" + icon_state = "sweatervest_red" /obj/item/clothing/suit/apron/overalls name = "coveralls" desc = "A set of denim overalls." icon_state = "overalls" - item_state = "overalls" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS - /obj/item/clothing/suit/syndicatefake name = "red space suit replica" icon_state = "syndicate" - item_state = "space_suit_syndicate" desc = "A plastic replica of the syndicate space suit, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" w_class = 3 allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy) @@ -122,66 +136,56 @@ name = "Hastur's Robes" desc = "Robes not meant to be worn by man" icon_state = "hastur" - item_state = "hastur" + item_state_slots = list(slot_r_hand_str = "rad", slot_l_hand_str = "rad") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - /obj/item/clothing/suit/imperium_monk name = "Imperium monk" desc = "Have YOU killed a xenos today?" icon_state = "imperium_monk" - item_state = "imperium_monk" body_parts_covered = HEAD|UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS flags_inv = HIDESHOES|HIDEJUMPSUIT - /obj/item/clothing/suit/chickensuit name = "Chicken Suit" desc = "A suit made long ago by the ancient empire KFC." icon_state = "chickensuit" - item_state = "chickensuit" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET flags_inv = HIDESHOES|HIDEJUMPSUIT siemens_coefficient = 2.0 - /obj/item/clothing/suit/monkeysuit name = "Monkey Suit" desc = "A suit that looks like a primate" icon_state = "monkeysuit" - item_state = "monkeysuit" + item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket") body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT siemens_coefficient = 2.0 - /obj/item/clothing/suit/holidaypriest name = "Holiday Priest" desc = "This is a nice holiday my son." icon_state = "holidaypriest" - item_state = "holidaypriest" + item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS flags_inv = HIDEJUMPSUIT - /obj/item/clothing/suit/cardborg name = "cardborg suit" desc = "An ordinary cardboard box with holes cut in the sides." icon_state = "cardborg" - item_state = "cardborg" body_parts_covered = UPPER_TORSO|LOWER_TORSO flags_inv = HIDEJUMPSUIT /* * Misc */ - /obj/item/clothing/suit/straight_jacket name = "straight jacket" desc = "A suit that completely restrains the wearer." icon_state = "straight_jacket" - item_state = "straight_jacket" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL @@ -189,219 +193,156 @@ name = "worn shirt" desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it but it's pretty close. Good for sleeping in." icon_state = "ianshirt" - item_state = "ianshirt" + item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat") //placeholder -S2- body_parts_covered = UPPER_TORSO|ARMS -//pyjamas -//originally intended to be pinstripes >.> - -/obj/item/clothing/under/bluepyjamas - name = "blue pyjamas" - desc = "Slightly old-fashioned sleepwear." - icon_state = "blue_pyjamas" - item_state = "blue_pyjamas" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - -/obj/item/clothing/under/redpyjamas - name = "red pyjamas" - desc = "Slightly old-fashioned sleepwear." - icon_state = "red_pyjamas" - item_state = "red_pyjamas" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - -//coats - +/* + * coats + */ /obj/item/clothing/suit/leathercoat name = "leather coat" desc = "A long, thick black leather coat." icon_state = "leathercoat_alt" - item_state = "leathercoat_alt" + item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket") /obj/item/clothing/suit/leathercoat/sec name = "leather coat" desc = "A long, thick black leather coat." icon_state = "leathercoat_sec" - item_state = "leathercoat_sec" + item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket") /obj/item/clothing/suit/browncoat name = "brown leather coat" desc = "A long, brown leather coat." icon_state = "browncoat" - item_state = "browncoat" + item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket") /obj/item/clothing/suit/neocoat name = "black coat" desc = "A flowing, black coat." icon_state = "neocoat" - item_state = "neocoat" + item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket") -//stripper -/obj/item/clothing/under/stripper - body_parts_covered = 0 - -/obj/item/clothing/under/stripper/stripper_pink - name = "pink swimsuit" - desc = "A rather skimpy pink swimsuit." - icon_state = "stripper_p_under" - siemens_coefficient = 1 - -/obj/item/clothing/under/stripper/stripper_green - name = "green swimsuit" - desc = "A rather skimpy green swimsuit." - icon_state = "stripper_g_under" - siemens_coefficient = 1 +/obj/item/clothing/suit/customs + name = "customs jacket" + desc = "A standard SolGov Customs formal jacket." + icon_state = "customs_jacket" + item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue") +/* + * stripper + */ /obj/item/clothing/suit/stripper/stripper_pink name = "pink skimpy dress" desc = "A rather skimpy pink dress." icon_state = "stripper_p_over" + item_state_slots = list(slot_r_hand_str = "pink_labcoat", slot_l_hand_str = "pink_labcoat") siemens_coefficient = 1 /obj/item/clothing/suit/stripper/stripper_green name = "green skimpy dress" desc = "A rather skimpy green dress." icon_state = "stripper_g_over" - item_state = "stripper_g" - siemens_coefficient = 1 - -/obj/item/clothing/under/stripper/mankini - name = "mankini" - desc = "No honest man would wear this abomination" - icon_state = "mankini" + item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat") siemens_coefficient = 1 /obj/item/clothing/suit/xenos name = "xenos suit" desc = "A suit made out of chitinous alien hide." icon_state = "xenos" - item_state = "xenos_helm" + item_state_slots = list(slot_r_hand_str = "black_suit", slot_l_hand_str = "black_suit") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT siemens_coefficient = 2.0 -//swimsuit -/obj/item/clothing/under/swimsuit/ - siemens_coefficient = 1 - body_parts_covered = 0 - -/obj/item/clothing/under/swimsuit/black - name = "black swimsuit" - desc = "An oldfashioned black swimsuit." - icon_state = "swim_black" - siemens_coefficient = 1 - -/obj/item/clothing/under/swimsuit/blue - name = "blue swimsuit" - desc = "An oldfashioned blue swimsuit." - icon_state = "swim_blue" - siemens_coefficient = 1 - -/obj/item/clothing/under/swimsuit/purple - name = "purple swimsuit" - desc = "An oldfashioned purple swimsuit." - icon_state = "swim_purp" - siemens_coefficient = 1 - -/obj/item/clothing/under/swimsuit/green - name = "green swimsuit" - desc = "An oldfashioned green swimsuit." - icon_state = "swim_green" - siemens_coefficient = 1 - -/obj/item/clothing/under/swimsuit/red - name = "red swimsuit" - desc = "An oldfashioned red swimsuit." - icon_state = "swim_red" - siemens_coefficient = 1 +/* + * Poncho + */ /obj/item/clothing/suit/poncho name = "poncho" desc = "A simple, comfortable poncho." icon_state = "classicponcho" - item_state = "classicponcho" /obj/item/clothing/suit/poncho/green name = "green poncho" desc = "A simple, comfortable cloak without sleeves. This one is green." icon_state = "greenponcho" - item_state = "greenponcho" /obj/item/clothing/suit/poncho/red name = "red poncho" desc = "A simple, comfortable cloak without sleeves. This one is red." icon_state = "redponcho" - item_state = "redponcho" /obj/item/clothing/suit/poncho/purple name = "purple poncho" desc = "A simple, comfortable cloak without sleeves. This one is purple." icon_state = "purpleponcho" - item_state = "purpleponcho" /obj/item/clothing/suit/poncho/blue name = "blue poncho" desc = "A simple, comfortable cloak without sleeves. This one is blue." icon_state = "blueponcho" - item_state = "blueponcho" /obj/item/clothing/suit/poncho/roles/security name = "security poncho" desc = "A simple, comfortable cloak without sleeves. This one is black and red, standard NanoTrasen Security colors." icon_state = "secponcho" - item_state = "secponcho" /obj/item/clothing/suit/poncho/roles/medical name = "medical poncho" desc = "A simple, comfortable cloak without sleeves. This one is white with green and blue tint, standard Medical colors." icon_state = "medponcho" - item_state = "medponcho" /obj/item/clothing/suit/poncho/roles/engineering name = "engineering poncho" desc = "A simple, comfortable cloak without sleeves. This one is yellow and orange, standard Engineering colors." icon_state = "engiponcho" - item_state = "engiponcho" /obj/item/clothing/suit/poncho/roles/science name = "science poncho" desc = "A simple, comfortable cloak without sleeves. This one is white with purple trim, standard NanoTrasen Science colors." icon_state = "sciponcho" - item_state = "sciponcho" /obj/item/clothing/suit/poncho/roles/cargo name = "cargo poncho" desc = "A simple, comfortable cloak without sleeves. This one is tan and grey, the colors of Cargo." icon_state = "cargoponcho" - item_state = "cargoponcho" /obj/item/clothing/suit/jacket/puffer name = "puffer jacket" desc = "A thick jacket with a rubbery, water-resistant shell." icon_state = "pufferjacket" - item_state = "pufferjacket" + item_state_slots = list(slot_r_hand_str = "chainmail", slot_l_hand_str = "chainmail") /obj/item/clothing/suit/jacket/puffer/vest name = "puffer vest" desc = "A thick vest with a rubbery, water-resistant shell." icon_state = "puffervest" - item_state = "puffervest" + item_state_slots = list(slot_r_hand_str = "chainmail", slot_l_hand_str = "chainmail") /obj/item/clothing/suit/storage/miljacket name = "military jacket" desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable." icon_state = "militaryjacket_nobadge" - item_state = "militaryjacket_nobadge" + item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive") /obj/item/clothing/suit/storage/miljacket/alt name = "military jacket" desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable." icon_state = "militaryjacket_badge" - item_state = "militaryjacket_badge" + item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive") + +/obj/item/clothing/suit/storage/miljacket/green + name = "military jacket" + desc = "A dark green canvas jacket. Feels sturdy, yet comfortable." + icon_state = "militaryjacket_green" + item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive") /obj/item/clothing/suit/storage/toggle/bomber name = "bomber jacket" desc = "A thick, well-worn WW2 leather bomber jacket." icon_state = "bomber" - item_state = "bomber" + item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket") icon_open = "bomber_open" icon_closed = "bomber" body_parts_covered = UPPER_TORSO|ARMS @@ -413,7 +354,7 @@ name = "bomber jacket" desc = "A thick, well-worn WW2 leather bomber jacket." icon_state = "bomberjacket_new" - item_state = "bomberjacket_new" + item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket") body_parts_covered = UPPER_TORSO|ARMS cold_protection = UPPER_TORSO|ARMS min_cold_protection_temperature = T0C - 20 @@ -423,23 +364,23 @@ name = "leather jacket" desc = "A black leather coat." icon_state = "leather_jacket" - item_state = "leather_jacket" body_parts_covered = UPPER_TORSO|ARMS /obj/item/clothing/suit/storage/leather_jacket/alt icon_state = "leather_jacket_alt" - item_state = "leather_jacket_alt" + item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket") /obj/item/clothing/suit/storage/leather_jacket/nanotrasen desc = "A black leather coat. A corporate logo is proudly displayed on the back." icon_state = "leather_jacket_nt" + item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket") //This one has buttons for some reason /obj/item/clothing/suit/storage/toggle/brown_jacket name = "brown jacket" desc = "A brown leather coat." icon_state = "brown_jacket" - item_state = "brown_jacket" + item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket") icon_open = "brown_jacket_open" icon_closed = "brown_jacket" body_parts_covered = UPPER_TORSO|ARMS @@ -447,6 +388,7 @@ /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen desc = "A brown leather coat. A corporate logo is proudly displayed on the back." icon_state = "brown_jacket_nt" + item_state_slots = list(slot_r_hand_str = "brown_jacket", slot_l_hand_str = "brown_jacket") icon_open = "brown_jacket_nt_open" icon_closed = "brown_jacket_nt" @@ -454,7 +396,7 @@ name = "grey hoodie" desc = "A warm, grey sweatshirt." icon_state = "grey_hoodie" - item_state = "grey_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_grey", slot_l_hand_str = "suit_grey") icon_open = "grey_hoodie_open" icon_closed = "grey_hoodie" min_cold_protection_temperature = T0C - 20 @@ -464,7 +406,7 @@ name = "black hoodie" desc = "A warm, black sweatshirt." icon_state = "black_hoodie" - item_state = "black_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") icon_open = "black_hoodie_open" icon_closed = "black_hoodie" @@ -472,7 +414,7 @@ name = "red hoodie" desc = "A warm, red sweatshirt." icon_state = "red_hoodie" - item_state = "red_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_red", slot_l_hand_str = "suit_red") icon_open = "red_hoodie_open" icon_closed = "red_hoodie" @@ -480,7 +422,7 @@ name = "blue hoodie" desc = "A warm, blue sweatshirt." icon_state = "blue_hoodie" - item_state = "blue_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue") icon_open = "blue_hoodie_open" icon_closed = "blue_hoodie" @@ -488,7 +430,7 @@ name = "green hoodie" desc = "A warm, green sweatshirt." icon_state = "green_hoodie" - item_state = "green_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive") icon_open = "green_hoodie_open" icon_closed = "green_hoodie" @@ -496,7 +438,7 @@ name = "orange hoodie" desc = "A warm, orange sweatshirt." icon_state = "orange_hoodie" - item_state = "orange_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_orange", slot_l_hand_str = "suit_orange") icon_open = "orange_hoodie_open" icon_closed = "orange_hoodie" @@ -504,7 +446,7 @@ name = "yellow hoodie" desc = "A warm, yellow sweatshirt." icon_state = "yellow_hoodie" - item_state = "yellow_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_yellow", slot_l_hand_str = "suit_yellow") icon_open = "yellow_hoodie_open" icon_closed = "yellow_hoodie" @@ -512,7 +454,7 @@ name = "CTI hoodie" desc = "A warm, black sweatshirt. It bears the letters ‘CTI’ on the back, a lettering to the prestigious university in Tau Ceti, Ceti Technical Institute. There is a blue supernova embroidered on the front, the emblem of CTI." icon_state = "cti_hoodie" - item_state = "cti_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") icon_open = "cti_hoodie_open" icon_closed = "cti_hoodie" @@ -520,7 +462,7 @@ name = "mojave university hoodie" desc = "A warm, gray sweatshirt. It bears the letters ‘MU’ on the front, a lettering to the well-known public college, Mojave University." icon_state = "mu_hoodie" - item_state = "mu_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_grey", slot_l_hand_str = "suit_grey") icon_open = "mu_hoodie_open" icon_closed = "mu_hoodie" @@ -528,7 +470,7 @@ name = "NT hoodie" desc = "A warm, blue sweatshirt. It proudly bears the silver NanoTrasen insignia lettering on the back. The edges are trimmed with silver." icon_state = "nt_hoodie" - item_state = "nt_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue") icon_open = "nt_hoodie_open" icon_closed = "nt_hoodie" @@ -536,17 +478,15 @@ name = "Space Mountain Wind hoodie" desc = "A warm, black sweatshirt. It has the logo for the popular softdrink Space Mountain Wind on both the front and the back." icon_state = "smw_hoodie" - item_state = "smw_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") icon_open = "smw_hoodie_open" icon_closed = "smw_hoodie" -// FUN! - /obj/item/clothing/suit/whitedress name = "white dress" desc = "A fancy white dress." icon_state = "white_dress" - item_state = "white_dress" + item_state_slots = list(slot_r_hand_str = "white_dress", slot_l_hand_str = "white_dress") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS flags_inv = HIDEJUMPSUIT @@ -554,7 +494,7 @@ name = "carp costume" desc = "A costume made from 'synthetic' carp scales, it smells." icon_state = "carp_casual" - item_state = "carp_casual" + item_state_slots = list(slot_r_hand_str = "carp_casual", slot_l_hand_str = "carp_casual") //Does not exist -S2- body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE //Space carp like space, so you should too @@ -566,6 +506,7 @@ name = "carp hood" desc = "A hood attached to a carp costume." icon_state = "carp_casual" + item_state_slots = list(slot_r_hand_str = "carp_casual", slot_l_hand_str = "carp_casual") //Does not exist -S2- body_parts_covered = HEAD cold_protection = HEAD min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE @@ -574,7 +515,7 @@ name = "corgi costume" desc = "A costume that looks like someone made a human-like corgi, it won't guarantee belly rubs." icon_state = "ian" - item_state = "ian" + item_state_slots = list(slot_r_hand_str = "ian", slot_l_hand_str = "ian") //Does not exist -S2- body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS //cold_protection = CHEST|GROIN|ARMS //min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT @@ -586,18 +527,16 @@ name = "corgi hood" desc = "A hood that looks just like a corgi's head, it won't guarantee dog biscuits." icon_state = "ian" - item_state = "ian" + item_state_slots = list(slot_r_hand_str = "ian", slot_l_hand_str = "ian") //Does not exist -S2- body_parts_covered = HEAD //cold_protection = HEAD //min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT -// WINTER COATS - /obj/item/clothing/suit/storage/hooded/wintercoat name = "winter coat" desc = "A heavy jacket made from 'synthetic' animal furs." icon_state = "coatwinter" - item_state = "labcoat" + item_state_slots = list(slot_r_hand_str = "coatwinter", slot_l_hand_str = "coatwinter") body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE @@ -618,105 +557,210 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/captain name = "captain's winter coat" icon_state = "coatcaptain" + item_state_slots = list(slot_r_hand_str = "coatcaptain", slot_l_hand_str = "coatcaptain") armor = list(melee = 20, bullet = 15, laser = 20, energy = 10, bomb = 15, bio = 0, rad = 0) /obj/item/clothing/suit/storage/hooded/wintercoat/security name = "security winter coat" icon_state = "coatsecurity" + item_state_slots = list(slot_r_hand_str = "coatsecurity", slot_l_hand_str = "coatsecurity") armor = list(melee = 25, bullet = 20, laser = 20, energy = 15, bomb = 20, bio = 0, rad = 0) /obj/item/clothing/suit/storage/hooded/wintercoat/medical name = "medical winter coat" icon_state = "coatmedical" + item_state_slots = list(slot_r_hand_str = "coatmedical", slot_l_hand_str = "coatmedical") armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) /obj/item/clothing/suit/storage/hooded/wintercoat/science name = "science winter coat" icon_state = "coatscience" + item_state_slots = list(slot_r_hand_str = "coatscience", slot_l_hand_str = "coatscience") armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) /obj/item/clothing/suit/storage/hooded/wintercoat/engineering name = "engineering winter coat" icon_state = "coatengineer" + item_state_slots = list(slot_r_hand_str = "coatengineer", slot_l_hand_str = "coatengineer") armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20) /obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos name = "atmospherics winter coat" icon_state = "coatatmos" + item_state_slots = list(slot_r_hand_str = "coatatmos", slot_l_hand_str = "coatatmos") /obj/item/clothing/suit/storage/hooded/wintercoat/hydro name = "hydroponics winter coat" icon_state = "coathydro" + item_state_slots = list(slot_r_hand_str = "coathydro", slot_l_hand_str = "coathydro") /obj/item/clothing/suit/storage/hooded/wintercoat/cargo name = "cargo winter coat" icon_state = "coatcargo" + item_state_slots = list(slot_r_hand_str = "coatcargo", slot_l_hand_str = "coatcargo") /obj/item/clothing/suit/storage/hooded/wintercoat/miner name = "mining winter coat" icon_state = "coatminer" + item_state_slots = list(slot_r_hand_str = "coatminer", slot_l_hand_str = "coatminer") armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/suit/varsity name = "black varsity jacket" desc = "A favorite of jocks everywhere from Sol to Nyx." icon_state = "varsity" - item_state = "leather_jacket" + item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") /obj/item/clothing/suit/varsity/red name = "red varsity jacket" - icon_state = "varsity_red" + icon_state = "suit_red" /obj/item/clothing/suit/varsity/purple name = "purple varsity jacket" - icon_state = "varsity_purple" + icon_state = "suit_purple" /obj/item/clothing/suit/varsity/green name = "green varsity jacket" - icon_state = "varsity_green" + icon_state = "suit_olive" /obj/item/clothing/suit/varsity/blue name = "blue varsity jacket" - icon_state = "varsity_blue" + icon_state = "suit_blue" /obj/item/clothing/suit/varsity/brown name = "brown varsity jacket" - icon_state = "varsity_brown" - -//Track Jackets + icon_state = "brown_jacket" +/* + * Track Jackets + */ /obj/item/clothing/suit/storage/toggle/track name = "track jacket" desc = "a track jacket, for the athletic." icon_state = "trackjacket" - item_state = "trackjacket" + item_state_slots = list(slot_r_hand_str = "black_labcoat", slot_l_hand_str = "black_labcoat") icon_open = "trackjacket_open" icon_closed = "trackjacket" /obj/item/clothing/suit/storage/toggle/track/blue name = "blue track jacket" icon_state = "trackjacketblue" - item_state = "trackjacketblue" + item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat") icon_open = "trackjacketblue_open" icon_closed = "trackjacketblue" /obj/item/clothing/suit/storage/toggle/track/green name = "green track jacket" icon_state = "trackjacketgreen" - item_state = "trackjacketgreen" + item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat") icon_open = "trackjacketgreen_open" icon_closed = "trackjacketgreen" /obj/item/clothing/suit/storage/toggle/track/red name = "red track jacket" icon_state = "trackjacketred" - item_state = "trackjacketred" + item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat") icon_open = "trackjacketred_open" icon_closed = "trackjacketred" /obj/item/clothing/suit/storage/toggle/track/white name = "white track jacket" icon_state = "trackjacketwhite" - item_state = "trackjacketwhite" + item_state_slots = list(slot_r_hand_str = "labcoat", slot_l_hand_str = "labcoat") icon_open = "trackjacketwhite_open" - icon_closed = "trackjacketwhite" \ No newline at end of file + icon_closed = "trackjacketwhite" + +//Flannels + +/obj/item/clothing/suit/storage/flannel + name = "Flannel shirt" + desc = "A comfy, grey flannel shirt. Unleash your inner hipster." + icon_state = "flannel" + item_state_slots = list(slot_r_hand_str = "black_labcoat", slot_l_hand_str = "black_labcoat") + var/rolled = 0 + var/tucked = 0 + var/buttoned = 0 + +/obj/item/clothing/suit/storage/flannel/verb/roll_sleeves() + set name = "Roll Sleeves" + set category = "Object" + set src in usr + if(!istype(usr, /mob/living)) + return + if(usr.stat) + return + + if(rolled == 0) + rolled = 1 + usr << "You roll up the sleeves of your [src]." + else + rolled = 0 + usr << "You roll down the sleeves of your [src]." + update_icon() + +/obj/item/clothing/suit/storage/flannel/verb/tuck() + set name = "Toggle Shirt Tucking" + set category = "Object" + set src in usr + if(!istype(usr, /mob/living)||usr.stat) + return + + if(tucked == 0) + tucked = 1 + usr << "You tuck in your your [src]." + else + tucked = 0 + usr << "You untuck your [src]." + update_icon() + +/obj/item/clothing/suit/storage/flannel/verb/button() + set name = "Toggle Shirt Buttons" + set category = "Object" + set src in usr + if(!istype(usr, /mob/living)||usr.stat) + return + + if(buttoned == 0) + buttoned = 1 + usr << "You unbutton your [src]." + else + buttoned = 0 + usr<<"You button your [src]." + update_icon() + +/obj/item/clothing/suit/storage/flannel/update_icon() + icon_state = initial(icon_state) + if(rolled) + icon_state += "r" + if(tucked) + icon_state += "t" + if(buttoned) + icon_state += "b" + update_clothing_icon() + +/obj/item/clothing/suit/storage/flannel/red + desc = "A comfy, red flannel shirt. Unleash your inner hipster." + icon_state = "flannel_red" + item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat") + +/obj/item/clothing/suit/storage/flannel/aqua + desc = "A comfy, aqua flannel shirt. Unleash your inner hipster." + icon_state = "flannel_aqua" + item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat") + +/obj/item/clothing/suit/storage/flannel/brown + desc = "A comfy, brown flannel shirt. Unleash your inner hipster." + icon_state = "flannel_brown" + item_state_slots = list(slot_r_hand_str = "johnny", slot_l_hand_str = "johnny") + +//Green Uniform + +/obj/item/clothing/suit/storage/toggle/greengov + name = "green formal jacket" + desc = "A sleek proper formal jacket with gold buttons." + icon_state = "suitjacket_green_open" + item_state_slots = list(slot_r_hand_str = "suit_olive", slot_l_hand_str = "suit_olive") + icon_open = "suitjacket_green_open" + icon_closed = "suitjacket_green" + blood_overlay_type = "coat" + body_parts_covered = UPPER_TORSO|ARMS diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index d9aa9bbd3d3..9bd162dc7f1 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -28,7 +28,7 @@ ..() /obj/item/clothing/suit/storage/hooded/proc/RemoveHood() - src.icon_state = "[initial(icon_state)]" + icon_state = "[initial(icon_state)]" suittoggled = 0 if(ishuman(hood.loc)) var/mob/living/carbon/H = hood.loc @@ -41,7 +41,7 @@ /obj/item/clothing/suit/storage/hooded/proc/ToggleHood() if(!suittoggled) - if(ishuman(src.loc)) + if(ishuman(loc)) var/mob/living/carbon/human/H = src.loc if(H.wear_suit != src) H << "You must be wearing [src] to put up the hood!" @@ -52,7 +52,7 @@ else H.equip_to_slot_if_possible(hood,slot_head,0,0,1) suittoggled = 1 - src.icon_state = "[initial(icon_state)]_t" + icon_state = "[initial(icon_state)]_t" H.update_inv_wear_suit() else RemoveHood() \ No newline at end of file diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index d7b4e87bb0f..e732a1318ef 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -13,7 +13,6 @@ name = "firesuit" desc = "A suit that protects against fire and heat." icon_state = "fire" - item_state = "fire_suit" w_class = 4//bulky item gas_transfer_coefficient = 0.90 permeability_coefficient = 0.50 @@ -26,17 +25,14 @@ max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS - /obj/item/clothing/suit/fire/firefighter icon_state = "firesuit" - item_state = "firefighter" - -/obj/item/clothing/suit/fire/heavy +/obj/item/clothing/suit/fire/heavy //Is this even used?? -S2- name = "firesuit" desc = "A suit that protects against extreme fire and heat." //icon_state = "thermal" - item_state = "ro_suit" + item_state_slots = list(slot_r_hand_str = "black_suit", slot_l_hand_str = "black_suit") w_class = 4//bulky item slowdown = 1.5 @@ -52,12 +48,10 @@ body_parts_covered = HEAD|FACE|EYES siemens_coefficient = 0 - /obj/item/clothing/suit/bomb_suit name = "bomb suit" desc = "A suit designed for safety when handling explosives." icon_state = "bombsuit" - item_state = "bombsuit" w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 @@ -68,7 +62,6 @@ max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE siemens_coefficient = 0 - /obj/item/clothing/head/bomb_hood/security icon_state = "bombsuitsec" body_parts_covered = HEAD @@ -89,12 +82,10 @@ body_parts_covered = HEAD|FACE|EYES armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100) - /obj/item/clothing/suit/radiation name = "Radiation suit" desc = "A suit that protects against radiation. Label: Made with lead, do not eat insulation." icon_state = "rad" - item_state = "rad_suit" w_class = 4//bulky item gas_transfer_coefficient = 0.90 permeability_coefficient = 0.50 diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 361bce66aa4..ba04d4ca368 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -2,10 +2,6 @@ name = "wizard hat" desc = "Strange-looking hat-wear that most certainly belongs to a real magic user." icon_state = "wizard" - item_state_slots = list( - slot_l_hand_str = "wizhat", - slot_r_hand_str = "wizhat", - ) //Not given any special protective value since the magic robes are full-body protection --NEO siemens_coefficient = 0.8 body_parts_covered = 0 @@ -33,11 +29,6 @@ name = "Magus Helm" desc = "A mysterious helmet that hums with an unearthly power" icon_state = "magus" - item_state = "magus" - item_state_slots = list( - slot_l_hand_str = "helmet", - slot_r_hand_str = "helmet", - ) siemens_coefficient = 0.8 body_parts_covered = HEAD|FACE|EYES @@ -45,27 +36,19 @@ name = "psychic amplifier" desc = "A crown-of-thorns psychic amplifier. Kind of looks like a tiara having sex with an industrial robot." icon_state = "amp" - item_state_slots = list( - slot_l_hand_str = "helmet", - slot_r_hand_str = "helmet", - ) siemens_coefficient = 0.8 /obj/item/clothing/head/wizard/cap name = "Gentlemans Cap" desc = "A checkered gray flat cap woven together with the rarest of threads." icon_state = "gentcap" - item_state_slots = list( - slot_l_hand_str = "det_hat", - slot_r_hand_str = "det_hat", - ) + item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") siemens_coefficient = 0.8 /obj/item/clothing/suit/wizrobe name = "wizard robe" desc = "A magnificant, gem-lined robe that seems to radiate power." icon_state = "wizard" - item_state = "wizrobe" gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE permeability_coefficient = 0.01 armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20) @@ -78,47 +61,41 @@ name = "red wizard robe" desc = "A magnificant, red, gem-lined robe that seems to radiate power." icon_state = "redwizard" - item_state = "redwizrobe" - /obj/item/clothing/suit/wizrobe/marisa name = "Witch Robe" desc = "Magic is all about the spell power, ZE!" icon_state = "marisa" - item_state = "marisarobe" /obj/item/clothing/suit/wizrobe/magusblue name = "Magus Robe" desc = "A set of armoured robes that seem to radiate a dark power" icon_state = "magusblue" - item_state = "magusblue" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET /obj/item/clothing/suit/wizrobe/magusred name = "Magus Robe" desc = "A set of armoured robes that seem to radiate a dark power" icon_state = "magusred" - item_state = "magusred" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|HANDS|LEGS|FEET /obj/item/clothing/suit/wizrobe/psypurple name = "purple robes" desc = "Heavy, royal purple robes threaded with psychic amplifiers and weird, bulbous lenses. Do not machine wash." icon_state = "psyamp" - item_state = "psyamp" /obj/item/clothing/suit/wizrobe/gentlecoat name = "Gentlemans Coat" desc = "A heavy threaded twead gray jacket. For a different sort of Gentleman." icon_state = "gentlecoat" - item_state = "gentlecoat" + item_state_slots = list(slot_r_hand_str = "greatcoat", slot_l_hand_str = "greatcoat") body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/suit/wizrobe/fake name = "wizard robe" desc = "A rather dull, blue robe meant to mimick real wizard robes." icon_state = "wizard-fake" - item_state = "wizrobe" + item_state_slots = list(slot_r_hand_str = "wizard", slot_l_hand_str = "wizard") armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 1.0 @@ -133,8 +110,6 @@ name = "Witch Robe" desc = "Magic is all about the spell power, ZE!" icon_state = "marisa" - item_state = "marisarobe" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 1.0 - + siemens_coefficient = 1.0 \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index c9ac0fb4f4e..1d6c610cea8 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -3,7 +3,7 @@ desc = "A neosilk clip-on tie." icon = 'icons/obj/clothing/ties.dmi' icon_state = "bluetie" - item_state = "" //no inhands + item_state_slots = list(slot_r_hand_str = "", slot_l_hand_str = "") slot_flags = SLOT_TIE w_class = 2.0 var/slot = "decor" @@ -12,6 +12,8 @@ var/image/mob_overlay = null var/overlay_state = null + sprite_sheets = list("Teshari" = 'icons/mob/species/seromi/ties.dmi') //Teshari can into webbing, too! + /obj/item/clothing/accessory/Destroy() on_removed() return ..() @@ -49,7 +51,7 @@ if(user) user << "You attach \the [src] to \the [has_suit]." - src.add_fingerprint(user) + add_fingerprint(user) /obj/item/clothing/accessory/proc/on_removed(var/mob/user) if(!has_suit) @@ -58,9 +60,9 @@ has_suit = null if(user) usr.put_in_hands(src) - src.add_fingerprint(user) + add_fingerprint(user) else - src.forceMove(get_turf(src)) + forceMove(get_turf(src)) //default attackby behaviour /obj/item/clothing/accessory/attackby(obj/item/I, mob/user) @@ -100,6 +102,10 @@ name = "black tie" icon_state = "blacktie" +/obj/item/clothing/accessory/darkgreen + name = "dark green tie" + icon_state = "dgreentie" + /obj/item/clothing/accessory/yellow name = "yellow tie" icon_state = "yellowtie" @@ -118,6 +124,12 @@ desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing." icon_state = "stethoscope" +/obj/item/clothing/accessory/stethoscope/do_surgery(mob/living/carbon/human/M, mob/living/user) + if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool + return ..() + attack(M, user) //default surgery behaviour is just to scan as usual + return 1 + /obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user) if(ishuman(M) && isliving(user)) if(user.a_intent == I_HELP) @@ -167,7 +179,6 @@ return return ..(M,user) - //Medals /obj/item/clothing/accessory/medal name = "bronze medal" diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index 9ba4ffa5e34..de7ac20c9a8 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -125,3 +125,9 @@ name = "hip holster" desc = "A handgun holster slung low on the hip, draw pardner!" icon_state = "holster_hip" + +/obj/item/clothing/accessory/holster/leg + name = "leg holster" + desc = "A tacticool handgun holster. Worn on the upper leg." + icon_state = "holster_hip" + overlay_state = "holster_leg" \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/lockets.dm b/code/modules/clothing/under/accessories/lockets.dm index 2aaa6750e5c..43fb4956699 100644 --- a/code/modules/clothing/under/accessories/lockets.dm +++ b/code/modules/clothing/under/accessories/lockets.dm @@ -2,7 +2,6 @@ name = "silver locket" desc = "This oval shaped, argentium sterling silver locket hangs on an incredibly fine, refractive string, almost thin as hair and microweaved from links to a deceptive strength, of similar material. The edges are engraved very delicately with an elegant curving design, but overall the main is unmarked and smooth to the touch, leaving room for either remaining as a stolid piece or future alterations. There is an obvious internal place for a picture or lock of some sort, but even behind that is a very thin compartment unhinged with the pinch of a thumb and forefinger." icon_state = "locket" - item_state = "locket" slot_flags = 0 w_class = 2 slot_flags = SLOT_MASK | SLOT_TIE @@ -25,7 +24,7 @@ if(held) user << "\The [held] falls out!" held.loc = get_turf(user) - src.held = null + held = null else icon_state = "[base_icon]" @@ -41,6 +40,6 @@ usr << "You slip [O] into [src]." user.drop_item() O.loc = src - src.held = O + held = O return ..() diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm index 9ab1a5fdbf6..b3461b82c23 100644 --- a/code/modules/clothing/under/accessories/storage.dm +++ b/code/modules/clothing/under/accessories/storage.dm @@ -43,7 +43,7 @@ hold.hide_from(usr) for(var/obj/item/I in hold.contents) hold.remove_from_storage(I, T) - src.add_fingerprint(user) + add_fingerprint(user) /obj/item/clothing/accessory/storage/webbing name = "webbing" diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 9267b96cc17..7452b35aab6 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -1,51 +1,39 @@ /obj/item/clothing/under/color/black name = "black jumpsuit" icon_state = "black" - item_state = "bl_suit" - worn_state = "black" rolled_sleeves = 0 /obj/item/clothing/under/color/blackf name = "feminine black jumpsuit" desc = "It's very smart and in a ladies-size!" icon_state = "black" - item_state = "bl_suit" worn_state = "blackf" /obj/item/clothing/under/color/blackjumpskirt name = "black jumpskirt" desc = "A slimming black jumpskirt." icon_state = "blackjumpskirt" - item_state = "bl_suit" - worn_state = "blackjumpskirt" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") /obj/item/clothing/under/color/blue name = "blue jumpsuit" icon_state = "blue" - item_state = "b_suit" - worn_state = "blue" rolled_sleeves = 0 /obj/item/clothing/under/color/green name = "green jumpsuit" icon_state = "green" - item_state = "g_suit" - worn_state = "green" rolled_sleeves = 0 /obj/item/clothing/under/color/grey name = "grey jumpsuit" icon_state = "grey" - item_state = "gy_suit" - worn_state = "grey" rolled_sleeves = 0 /obj/item/clothing/under/color/orange name = "orange jumpsuit" desc = "It's standardised prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." icon_state = "orange" - item_state = "o_suit" - worn_state = "orange" has_sensor = 2 sensor_mode = 3 rolled_sleeves = 0 @@ -53,122 +41,99 @@ /obj/item/clothing/under/color/pink name = "pink jumpsuit" icon_state = "pink" - item_state = "p_suit" - worn_state = "pink" rolled_sleeves = 0 /obj/item/clothing/under/color/red name = "red jumpsuit" icon_state = "red" - item_state = "r_suit" - worn_state = "red" rolled_sleeves = 0 /obj/item/clothing/under/color/white name = "white jumpsuit" icon_state = "white" - item_state = "w_suit" - worn_state = "white" rolled_sleeves = 0 /obj/item/clothing/under/color/yellow name = "yellow jumpsuit" icon_state = "yellow" - item_state = "y_suit" - worn_state = "yellow" rolled_sleeves = 0 /obj/item/clothing/under/psyche name = "psychedelic jumpsuit" desc = "Groovy!" icon_state = "psyche" - item_state = "psyche" - worn_state = "psyche" /obj/item/clothing/under/color/lightblue name = "lightblue jumpsuit" desc = "A light blue jumpsuit." icon_state = "lightblue" - item_state = "b_suit" - worn_state = "lightblue" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") rolled_sleeves = 0 /obj/item/clothing/under/color/aqua name = "aqua jumpsuit" desc = "An aqua jumpsuit." icon_state = "aqua" - item_state = "b_suit" - worn_state = "aqua" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") rolled_sleeves = 0 /obj/item/clothing/under/color name = "purple jumpsuit" desc = "The latest in space fashion." icon_state = "purple" - item_state = "p_suit" - worn_state = "purple" rolled_sleeves = 0 /obj/item/clothing/under/color/lightpurple name = "lightpurple jumpsuit" desc = "A light purple jumpsuit." icon_state = "lightpurple" - item_state = "p_suit" - worn_state = "lightpurple" + item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple") rolled_sleeves = 0 /obj/item/clothing/under/color/lightgreen name = "lightgreen jumpsuit" desc = "A light green jumpsuit." icon_state = "lightgreen" - item_state = "g_suit" - worn_state = "lightgreen" + item_state_slots = list(slot_r_hand_str = "green", slot_l_hand_str = "green") rolled_sleeves = 0 /obj/item/clothing/under/color/lightbrown name = "lightbrown jumpsuit" desc = "A light brown jumpsuit." icon_state = "lightbrown" - item_state = "lb_suit" - worn_state = "lightbrown" rolled_sleeves = 0 /obj/item/clothing/under/color/brown name = "brown jumpsuit" desc = "A brown jumpsuit." icon_state = "brown" - item_state = "lb_suit" - worn_state = "brown" + item_state_slots = list(slot_r_hand_str = "lightbrown", slot_l_hand_str = "lightbrown") rolled_sleeves = 0 /obj/item/clothing/under/color/yellowgreen name = "yellowgreen jumpsuit" desc = "A... yellow green jumpsuit?" icon_state = "yellowgreen" - item_state = "y_suit" - worn_state = "yellowgreen" + item_state_slots = list(slot_r_hand_str = "yellow", slot_l_hand_str = "yellow") rolled_sleeves = 0 /obj/item/clothing/under/color/darkblue name = "darkblue jumpsuit" desc = "A dark blue jumpsuit." icon_state = "darkblue" - item_state = "b_suit" - worn_state = "darkblue" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") rolled_sleeves = 0 /obj/item/clothing/under/color/lightred name = "lightred jumpsuit" desc = "A light red jumpsuit." icon_state = "lightred" - item_state = "r_suit" - worn_state = "lightred" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") rolled_sleeves = 0 /obj/item/clothing/under/color/darkred name = "darkred jumpsuit" desc = "A dark red jumpsuit." icon_state = "darkred" - item_state = "r_suit" - worn_state = "darkred" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") rolled_sleeves = 0 diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 5f16483bb23..6e922f57440 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -4,45 +4,36 @@ desc = "It looks like it could use some more flair." name = "bartender's uniform" icon_state = "ba_suit" - item_state = "ba_suit" - worn_state = "ba_suit" rolled_sleeves = 0 /obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define. desc = "It's a blue jumpsuit with some gold markings denoting the rank of \"Captain\"." name = "captain's jumpsuit" icon_state = "captain" - item_state = "b_suit" - worn_state = "captain" rolled_sleeves = 0 /obj/item/clothing/under/rank/cargo name = "quartermaster's jumpsuit" desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper." icon_state = "qm" - item_state = "lb_suit" - worn_state = "qm" + item_state_slots = list(slot_r_hand_str = "cargo", slot_l_hand_str = "cargo") rolled_sleeves = 0 /obj/item/clothing/under/rank/cargo/jeans name = "quartermaster's jumpjeans" desc = "Jeeeaaans! They're comfy!" icon_state = "qmj" - worn_state = "qmj" /obj/item/clothing/under/rank/cargo/jeans/female name = "quartermaster's jumpjeans" desc = "Jeeeaaans! They're comfy!" icon_state = "qmjf" - worn_state = "qmjf" rolled_sleeves = -1 /obj/item/clothing/under/rank/cargotech name = "cargo technician's jumpsuit" desc = "Shooooorts! They're comfy and easy to wear!" - icon_state = "cargotech" - item_state = "lb_suit" - worn_state = "cargo" + icon_state = "cargo" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS rolled_sleeves = 0 @@ -50,61 +41,51 @@ name = "cargo technician's jumpjeans" desc = "Jeeeaaans! They're comfy!" icon_state = "cargoj" - worn_state = "cargoj" + item_state_slots = list(slot_r_hand_str = "cargo", slot_l_hand_str = "cargo") rolled_sleeves = -1 /obj/item/clothing/under/rank/cargotech/jeans/female name = "cargo technician's jumpjeans" desc = "Jeeeaaans! They're comfy!" icon_state = "cargojf" - worn_state = "cargojf" /obj/item/clothing/under/rank/chaplain desc = "It's a black jumpsuit, often worn by religious folk." name = "chaplain's jumpsuit" icon_state = "chaplain" - item_state = "bl_suit" - worn_state = "chapblack" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") rolled_sleeves = 0 /obj/item/clothing/under/rank/chef desc = "It's an apron which is given only to the most hardcore chefs in space." name = "chef's uniform" icon_state = "chef" - item_state = "w_suit" - worn_state = "chef" rolled_sleeves = 0 /obj/item/clothing/under/rank/clown name = "clown suit" desc = "'HONK!'" icon_state = "clown" - item_state = "clown" - worn_state = "clown" rolled_sleeves = -1 /obj/item/clothing/under/rank/head_of_personnel desc = "It's a jumpsuit worn by someone who works in the position of \"Head of Personnel\"." name = "head of personnel's jumpsuit" icon_state = "hop" - item_state = "b_suit" - worn_state = "hop" rolled_sleeves = 0 /obj/item/clothing/under/rank/head_of_personnel_whimsy desc = "A blue jacket and red tie, with matching red cuffs! Snazzy. Wearing this makes you feel more important than your job title does." name = "head of personnel's suit" icon_state = "hopwhimsy" - item_state = "b_suit" - worn_state = "hopwhimsy" + item_state_slots = list(slot_r_hand_str = "hop", slot_l_hand_str = "hop") rolled_sleeves = -1 /obj/item/clothing/under/rank/hydroponics desc = "It's a jumpsuit designed to protect against minor plant-related hazards." name = "botanist's jumpsuit" icon_state = "hydroponics" - item_state = "g_suit" - worn_state = "hydroponics" + item_state_slots = list(slot_r_hand_str = "green", slot_l_hand_str = "green") permeability_coefficient = 0.50 rolled_sleeves = 0 @@ -112,8 +93,7 @@ desc = "The plain, professional attire of an Internal Affairs Agent. The collar is immaculately starched." name = "Internal Affairs uniform" icon_state = "internalaffairs" - item_state = "ba_suit" - worn_state = "internalaffairs" + item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit") rolled_sleeves = 0 starting_accessories = list(/obj/item/clothing/accessory/black) @@ -121,8 +101,6 @@ desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards." name = "janitor's jumpsuit" icon_state = "janitor" - worn_state = "janitor" - item_state = "janitor" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -133,66 +111,51 @@ /obj/item/clothing/under/lawyer/black name = "black Lawyer suit" icon_state = "lawyer_black" - item_state = "lawyer_black" - worn_state = "lawyer_black" /obj/item/clothing/under/lawyer/female name = "black Lawyer suit" icon_state = "black_suit_fem" - item_state = "lawyer_black" - worn_state = "black_suit_fem" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") /obj/item/clothing/under/lawyer/red name = "red Lawyer suit" icon_state = "lawyer_red" - item_state = "lawyer_red" - worn_state = "lawyer_red" /obj/item/clothing/under/lawyer/blue name = "blue Lawyer suit" icon_state = "lawyer_blue" - item_state = "lawyer_blue" - worn_state = "lawyer_blue" /obj/item/clothing/under/lawyer/bluesuit name = "Blue Suit" desc = "A classy suit." icon_state = "bluesuit" - item_state = "ba_suit" - worn_state = "bluesuit" + item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue") starting_accessories = list(/obj/item/clothing/accessory/red) /obj/item/clothing/under/lawyer/purpsuit name = "Purple Suit" icon_state = "lawyer_purp" - item_state = "ba_suit" - worn_state = "lawyer_purp" + item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple") /obj/item/clothing/under/lawyer/oldman name = "Old Man's Suit" desc = "A classic suit for the older gentleman with built in back support." icon_state = "oldman" - item_state = "johnny" - worn_state = "oldman" + item_state_slots = list(slot_r_hand_str = "johnny", slot_l_hand_str = "johnny") /obj/item/clothing/under/librarian name = "sensible suit" desc = "It's very... sensible." icon_state = "red_suit" - item_state = "lawyer_red" - worn_state = "red_suit" + item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red") /obj/item/clothing/under/mime name = "mime's outfit" desc = "It's not very colourful." icon_state = "mime" - item_state = "ba_suit" - worn_state = "mime" /obj/item/clothing/under/rank/miner desc = "It's a snappy jumpsuit with a sturdy set of overalls. It is very dirty." name = "shaft miner's jumpsuit" icon_state = "miner" - item_state = "lb_suit" - worn_state = "miner" rolled_sleeves = 0 diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 0c820c6e7ae..b1131b100bc 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -2,9 +2,7 @@ /obj/item/clothing/under/rank/chief_engineer desc = "It's a high visibility jumpsuit given to those engineers insane enough to achieve the rank of \"Chief engineer\". It has minor radiation shielding." name = "chief engineer's jumpsuit" - icon_state = "chiefengineer" - item_state = "g_suit" - worn_state = "chief" + icon_state = "chief" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) rolled_sleeves = 0 @@ -12,16 +10,12 @@ desc = "It's a jumpsuit worn by atmospheric technicians." name = "atmospheric technician's jumpsuit" icon_state = "atmos" - item_state = "atmos_suit" - worn_state = "atmos" rolled_sleeves = 0 /obj/item/clothing/under/rank/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding." name = "engineer's jumpsuit" icon_state = "engine" - item_state = "engi_suit" - worn_state = "engine" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) rolled_sleeves = 0 @@ -29,6 +23,4 @@ desc = "It's a slimming black jumpsuit with reinforced seams; great for industrial work." name = "roboticist's jumpsuit" icon_state = "robotics" - item_state = "bl_suit" - worn_state = "robotics" rolled_sleeves = 0 \ No newline at end of file diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index a80cd626c3b..31ba7389a1d 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -5,24 +5,19 @@ desc = "It's a jumpsuit worn by those with the know-how to achieve the position of \"Research Director\". Its fabric provides minor protection from biological contaminants." name = "research director's jumpsuit" icon_state = "director" - item_state = "lb_suit" - worn_state = "director" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) /obj/item/clothing/under/rank/research_director/rdalt desc = "A dress suit and slacks stained with hard work and dedication to science. Perhaps other things as well, but mostly hard work and dedication." name = "head researcher uniform" icon_state = "rdalt" - item_state = "lb_suit" - worn_state = "rdalt" + item_state_slots = list(slot_r_hand_str = "director", slot_l_hand_str = "director") armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) /obj/item/clothing/under/rank/research_director/dress_rd name = "research director dress uniform" desc = "Feminine fashion for the style concious RD. Its fabric provides minor protection from biological contaminants." icon_state = "dress_rd" - item_state = "lb_suit" - worn_state = "dress_rd" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS @@ -30,8 +25,7 @@ desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer as a scientist." name = "scientist's jumpsuit" icon_state = "science" - item_state = "w_suit" - worn_state = "sciencewhite" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) rolled_sleeves = 0 @@ -40,8 +34,7 @@ desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it." name = "chemist's jumpsuit" icon_state = "chemistry" - item_state = "w_suit" - worn_state = "chemistrywhite" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -53,8 +46,7 @@ desc = "It's a jumpsuit worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection." name = "chief medical officer's jumpsuit" icon_state = "cmo" - item_state = "w_suit" - worn_state = "cmo" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -63,8 +55,7 @@ desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it." name = "geneticist's jumpsuit" icon_state = "genetics" - item_state = "w_suit" - worn_state = "geneticswhite" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -73,8 +64,7 @@ desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." name = "virologist's jumpsuit" icon_state = "virology" - item_state = "w_suit" - worn_state = "virologywhite" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -83,8 +73,6 @@ desc = "It's a jumpsuit commonly worn by nursing staff in the medical department." name = "nurse's suit" icon_state = "nursesuit" - item_state = "nursesuit" - worn_state = "nursesuit" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO @@ -94,8 +82,7 @@ desc = "A dress commonly worn by the nursing staff in the medical department." name = "nurse's dress" icon_state = "nurse" - item_state = "nursesuit" - worn_state = "nurse" + item_state_slots = list(slot_r_hand_str = "nursesuit", slot_l_hand_str = "nursesuit") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO @@ -105,8 +92,7 @@ desc = "A white suit to be worn by medical attendants." name = "orderly's uniform" icon_state = "orderly" - item_state = "nursesuit" - worn_state = "orderly" + item_state_slots = list(slot_r_hand_str = "nursesuit", slot_l_hand_str = "nursesuit") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -115,8 +101,7 @@ desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel." name = "medical doctor's jumpsuit" icon_state = "medical" - item_state = "w_suit" - worn_state = "medical" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -125,7 +110,7 @@ name = "short sleeve medical jumpsuit" desc = "It's made of a special fiber that provides minor protection against biohazards. This one has a cross on the chest denoting that the wearer is trained medical personnel." icon_state = "medical_short" - item_state = "medical_short" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS rolled_sleeves = -1 @@ -133,58 +118,50 @@ name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue." icon_state = "scrubsblue" - item_state = "b_suit" - worn_state = "scrubsblue" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") rolled_sleeves = -1 /obj/item/clothing/under/rank/medical/green name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green." icon_state = "scrubsgreen" - item_state = "g_suit" - worn_state = "scrubsgreen" + item_state_slots = list(slot_r_hand_str = "green", slot_l_hand_str = "green") rolled_sleeves = -1 /obj/item/clothing/under/rank/medical/purple name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple." icon_state = "scrubspurple" - item_state = "p_suit" - worn_state = "scrubspurple" + item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple") rolled_sleeves = -1 /obj/item/clothing/under/rank/medical/black name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in black." icon_state = "scrubsblack" - item_state = "bl_suit" - worn_state = "scrubsblack" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") rolled_sleeves = -1 /obj/item/clothing/under/rank/medical/navyblue name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in navy blue." icon_state = "scrubsnavyblue" - item_state = "b_suit" - worn_state = "scrubsnavyblue" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") rolled_sleeves = -1 /obj/item/clothing/under/rank/psych desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist." name = "psychiatrist's jumpsuit" icon_state = "psych" - item_state = "w_suit" - worn_state = "psych" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") /obj/item/clothing/under/rank/psych/turtleneck desc = "A turqouise turtleneck and a pair of dark blue slacks, belonging to a psychologist." name = "psychologist's turtleneck" icon_state = "psychturtle" - item_state = "b_suit" - worn_state = "psychturtle" + item_state_slots = list(slot_r_hand_str = "psyche", slot_l_hand_str = "psyche") rolled_sleeves = 0 - /* * Medsci, unused (i think) stuff */ @@ -192,8 +169,7 @@ desc = "It's made of a special fiber which provides minor protection against biohazards." name = "geneticist's jumpsuit" icon_state = "genetics_new" - item_state = "w_suit" - worn_state = "genetics_new" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -202,8 +178,7 @@ desc = "It's made of a special fiber which provides minor protection against biohazards." name = "chemist's jumpsuit" icon_state = "chemist_new" - item_state = "w_suit" - worn_state = "chemist_new" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 @@ -212,8 +187,7 @@ desc = "Made of a special fiber that gives special protection against biohazards and small explosions." name = "scientist's jumpsuit" icon_state = "scientist_new" - item_state = "w_suit" - worn_state = "scientist_new" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) rolled_sleeves = 0 @@ -222,8 +196,7 @@ desc = "Made of a special fiber that gives increased protection against biohazards." name = "virologist's jumpsuit" icon_state = "virologist_new" - item_state = "w_suit" - worn_state = "virologist_new" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) rolled_sleeves = 0 \ No newline at end of file diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 564a962125a..bf768c561e7 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -12,24 +12,16 @@ desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for more robust protection. It has the word \"Warden\" written on the shoulders." name = "warden's jumpsuit" icon_state = "warden" - item_state = "r_suit" - worn_state = "warden" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 rolled_sleeves = 0 -/obj/item/clothing/head/helmet/warden - name = "warden's hat" - desc = "It's a special helmet issued to the Warden of a securiy force." - icon_state = "policehelm" - body_parts_covered = 0 - /obj/item/clothing/under/rank/security name = "security officer's jumpsuit" desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection." icon_state = "security" - item_state = "r_suit" - worn_state = "secred" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 rolled_sleeves = 0 @@ -38,8 +30,7 @@ name = "dispatcher's uniform" desc = "A dress shirt and khakis with a security patch sewn on." icon_state = "dispatch" - //item_state = "dispatch" - worn_state = "dispatch" + item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective") armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS siemens_coefficient = 0.9 @@ -48,30 +39,26 @@ name = "security officer's uniform" desc = "It's made of a slightly sturdier material, to allow for robust protection." icon_state = "redshirt2" - item_state = "r_suit" - worn_state = "redshirt2" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 rolled_sleeves = 0 /obj/item/clothing/under/rank/security/corp icon_state = "sec_corporate" - //item_state = "sec_corporate" - worn_state = "sec_corporate" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") rolled_sleeves = 0 /obj/item/clothing/under/rank/warden/corp icon_state = "warden_corporate" - //item_state = "warden_corporate" - worn_state = "warden_corporate" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") rolled_sleeves = 0 /obj/item/clothing/under/tactical name = "tactical jumpsuit" desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection." icon_state = "swatunder" - //item_state = "swatunder" - worn_state = "swatunder" + item_state_slots = list(slot_r_hand_str = "green", slot_l_hand_str = "green") armor = list(melee = 10, bullet = 5, laser = 5,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 rolled_sleeves = -1 @@ -83,8 +70,6 @@ name = "detective's suit" desc = "A rumpled white dress shirt paired with well-worn grey slacks." icon_state = "detective" - item_state = "det" - worn_state = "detective" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 rolled_sleeves = 0 @@ -103,53 +88,29 @@ */ /obj/item/clothing/under/det/grey icon_state = "detective2" - worn_state = "detective2" desc = "A serious-looking tan dress shirt paired with freshly-pressed black slacks." starting_accessories = list(/obj/item/clothing/accessory/red_long) /obj/item/clothing/under/det/black icon_state = "detective3" - worn_state = "detective3" - item_state = "sl_suit" + item_state_slots = list(slot_r_hand_str = "sl_suit", slot_l_hand_str = "sl_suit") desc = "An immaculate white dress shirt, paired with a pair of dark grey dress pants, a red tie, and a charcoal vest." starting_accessories = list(/obj/item/clothing/accessory/red_long, /obj/item/clothing/accessory/vest) /obj/item/clothing/under/det/corporate name = "detective's jumpsuit" icon_state = "det_corporate" - item_state = "bl_suit" - worn_state = "det_corporate" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") desc = "A more modern uniform for corporate investigators." /obj/item/clothing/under/det/waistcoat icon_state = "detective_waistcoat" - worn_state = "detective_waistcoat" desc = "A rumpled white dress shirt paired with well-worn grey slacks, complete with a blue striped tie, faux-gold tie clip, and waistcoat." /obj/item/clothing/under/det/grey/waistcoat icon_state = "detective2_waistcoat" - worn_state = "detective2_waistcoat" desc = "A serious-looking tan dress shirt paired with freshly-pressed black slacks, complete with a red striped tie and waistcoat." - -/obj/item/clothing/head/det - name = "fedora" - desc = "A brown fedora - either the cornerstone of a detective's style or a poor attempt at looking cool, depending on the person wearing it." - icon_state = "detective" - item_state_slots = list( - slot_l_hand_str = "det_hat", - slot_r_hand_str = "det_hat", - ) - allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen) - armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0.9 - body_parts_covered = 0 - -/obj/item/clothing/head/det/grey - icon_state = "detective2" - desc = "A grey fedora - either the cornerstone of a detective's style or a poor attempt at looking cool, depending on the person wearing it." - - /* * Head of Security */ @@ -157,83 +118,44 @@ desc = "It's a jumpsuit worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armor to protect the wearer." name = "head of security's jumpsuit" icon_state = "hos" - item_state = "r_suit" - worn_state = "hosred" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.8 rolled_sleeves = 0 /obj/item/clothing/under/rank/head_of_security/corp icon_state = "hos_corporate" - //item_state = "hos_corporate" - worn_state = "hos_corporate" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") rolled_sleeves = 0 -/obj/item/clothing/head/helmet/HoS - name = "Head of Security Hat" - desc = "The hat of the Head of Security. For showing the officers who's in charge." - icon_state = "hoscap" - body_parts_covered = 0 - siemens_coefficient = 0.8 - -/obj/item/clothing/head/helmet/HoS/dermal - name = "Dermal Armour Patch" - desc = "You're not quite sure how you manage to take it on and off, but it implants nicely in your head." - icon_state = "dermal" - siemens_coefficient = 0.6 - -/obj/item/clothing/suit/armor/hos - name = "armored coat" - desc = "A greatcoat enhanced with a special alloy for some protection and style." - icon_state = "hos" - item_state = "hos" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) - flags_inv = HIDEJUMPSUIT - siemens_coefficient = 0.6 - //Jensen cosplay gear /obj/item/clothing/under/rank/head_of_security/jensen desc = "You never asked for anything that stylish." name = "head of security's jumpsuit" icon_state = "jensen" - item_state = "jensen" - worn_state = "jensen" siemens_coefficient = 0.6 rolled_sleeves = -1 -/obj/item/clothing/suit/armor/hos/jensen - name = "armored trenchcoat" - desc = "A trenchcoat augmented with a special alloy for some protection and style." - icon_state = "hostrench" - item_state = "hostrench" - flags_inv = 0 - siemens_coefficient = 0.6 - /* * Navy uniforms */ - /obj/item/clothing/under/rank/security/navyblue name = "security officer's uniform" desc = "The latest in fashionable security outfits." icon_state = "officerblueclothes" - item_state = "ba_suit" - worn_state = "officerblueclothes" + item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit") rolled_sleeves = 0 /obj/item/clothing/under/rank/head_of_security/navyblue desc = "The insignia on this uniform tells you that this uniform belongs to the Head of Security." name = "head of security's uniform" icon_state = "hosblueclothes" - item_state = "ba_suit" - worn_state = "hosblueclothes" + item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit") rolled_sleeves = 0 /obj/item/clothing/under/rank/warden/navyblue desc = "The insignia on this uniform tells you that this uniform belongs to the Warden." name = "warden's uniform" icon_state = "wardenblueclothes" - item_state = "ba_suit" - worn_state = "wardenblueclothes" + item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit") rolled_sleeves = 0 diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 47535802720..dc4085dddee 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -2,60 +2,57 @@ name = "red pj's" desc = "Sleepwear." icon_state = "red_pyjamas" - worn_state = "red_pyjamas" - item_state = "w_suit" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") /obj/item/clothing/under/pj/blue name = "blue pj's" desc = "Sleepwear." icon_state = "blue_pyjamas" - worn_state = "blue_pyjamas" - item_state = "w_suit" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") /obj/item/clothing/under/captain_fly name = "rogue's uniform" desc = "For the man who doesn't care because he's still free." icon_state = "captain_fly" - item_state = "r_suit" - worn_state = "captain_fly" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") /obj/item/clothing/under/scratch name = "white suit" desc = "A white suit, suitable for an excellent host" icon_state = "scratch" - item_state = "scratch" - worn_state = "scratch" /obj/item/clothing/under/sl_suit desc = "It's a very amish looking suit." name = "amish suit" icon_state = "sl_suit" - worn_state = "sl_suit" - item_state = "sl_suit" rolled_sleeves = 0 /obj/item/clothing/under/waiter name = "waiter's outfit" desc = "It's a very smart uniform with a special pocket for tip." icon_state = "waiter" - item_state = "waiter" - worn_state = "waiter" rolled_sleeves = 0 +/obj/item/clothing/under/customs + name = "customs uniform" + desc = "A standard SolGov customs uniform. Complete with epaulettes." + icon_state = "cu_suit" + +/obj/item/clothing/under/customs/khaki + icon_state = "cu_suit_kh" + /obj/item/clothing/under/rank/mailman name = "mailman's jumpsuit" desc = "'Special delivery!'" icon_state = "mailman" - item_state = "b_suit" - worn_state = "mailman" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") rolled_sleeves = 0 /obj/item/clothing/under/sexyclown name = "sexy-clown suit" desc = "It makes you look HONKable!" icon_state = "sexyclown" - item_state = "clown" - worn_state = "sexyclown" + item_state_slots = list(slot_r_hand_str = "clown", slot_l_hand_str = "clown") body_parts_covered = UPPER_TORSO|LOWER_TORSO rolled_sleeves = -1 //Please never @@ -63,47 +60,48 @@ name = "vice officer's jumpsuit" desc = "It's the standard issue pretty-boy outfit, as seen on Holo-Vision." icon_state = "vice" - item_state = "gy_suit" - worn_state = "vice" + item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey") //This set of uniforms looks fairly fancy and is generally used for high-ranking NT personnel from what I've seen, so lets give them appropriate ranks. /obj/item/clothing/under/rank/centcom desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Captain.\"" name = "\improper Officer's Dress Uniform" icon_state = "officer" - item_state = "lawyer_black" - worn_state = "officer" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") displays_id = 0 /obj/item/clothing/under/rank/centcom_officer desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Admiral.\"" name = "\improper Officer's Dress Uniform" icon_state = "officer" - item_state = "lawyer_black" - worn_state = "officer" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") displays_id = 0 /obj/item/clothing/under/rank/centcom_captain desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Admiral-Executive.\"" name = "\improper Officer's Dress Uniform" icon_state = "centcom" - item_state = "lawyer_black" - worn_state = "centcom" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") displays_id = 0 /obj/item/clothing/under/ert name = "ERT tactical uniform" desc = "A short-sleeved black uniform, paired with grey digital-camo cargo pants. It looks very tactical." icon_state = "ert_uniform" - item_state = "bl_suit" - worn_state = "ert_uniform" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") + +/obj/item/clothing/under/gov + desc = "A neat proper uniform of someone on offical business. The plain, professional attire of an Internal Affairs Agent. The collar is immaculately starched." + name = "Green formal uniform" + icon_state = "greensuit" + item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom") + rolled_sleeves = 0 + starting_accessories = list(/obj/item/clothing/accessory/darkgreen) /obj/item/clothing/under/space name = "\improper NASA jumpsuit" desc = "It has a NASA logo on it and is made of space-proofed materials." icon_state = "black" - item_state = "bl_suit" - worn_state = "black" w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 @@ -115,8 +113,7 @@ /obj/item/clothing/under/acj name = "administrative cybernetic jumpsuit" icon_state = "syndicate" - item_state = "bl_suit" - worn_state = "syndicate" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") desc = "it's a cybernetically enhanced jumpsuit used for administrative duties." gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 @@ -130,138 +127,110 @@ name = "owl uniform" desc = "A jumpsuit with owl wings. Photorealistic owl feathers! Twooooo!" icon_state = "owl" - worn_state = "owl" - item_state = "owl" /obj/item/clothing/under/johnny name = "johnny~~ jumpsuit" desc = "Johnny~~" icon_state = "johnny" - worn_state = "johnny" - item_state = "johnny" /obj/item/clothing/under/color/rainbow name = "rainbow jumpsuit" desc = "A multi-colored jumpsuit." icon_state = "rainbow" - item_state = "rainbow" - worn_state = "rainbow" - -/obj/item/clothing/under/cloud - name = "cloud" - desc = "cloud" - icon_state = "cloud" - worn_state = "cloud" /obj/item/clothing/under/psysuit name = "dark undersuit" desc = "A thick, layered grey undersuit lined with power cables. Feels a little like wearing an electrical storm." icon_state = "psysuit" - item_state = "bl_suit" - worn_state = "psysuit" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS /obj/item/clothing/under/gentlesuit name = "gentlemans suit" desc = "A silk black shirt with a white tie and a matching gray vest and slacks. Feels proper." icon_state = "gentlesuit" - item_state = "gy_suit" - worn_state = "gentlesuit" + item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey") rolled_sleeves = 0 /obj/item/clothing/under/gimmick/rank/captain/suit name = "captain's suit" desc = "A green suit and yellow necktie. Exemplifies authority." icon_state = "green_suit" - item_state = "dg_suit" - worn_state = "green_suit" + item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom") /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit name = "head of personnel's suit" desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble." icon_state = "teal_suit" - item_state = "g_suit" - worn_state = "teal_suit" + item_state_slots = list(slot_r_hand_str = "green", slot_l_hand_str = "green") /obj/item/clothing/under/suit_jacket name = "black suit" desc = "A black suit and red tie. Very formal." icon_state = "black_suit" - item_state = "bl_suit" - worn_state = "black_suit" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") /obj/item/clothing/under/suit_jacket/really_black name = "executive suit" desc = "A formal black suit and red tie, intended for the station's finest." icon_state = "really_black_suit" - item_state = "jensensuit" - worn_state = "black_suit" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") /obj/item/clothing/under/suit_jacket/female name = "executive suit" desc = "A formal trouser suit for women, intended for the station's finest." icon_state = "black_suit_fem" - item_state = "lawyer_black" - worn_state = "black_suit_fem" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") /obj/item/clothing/under/suit_jacket/red name = "red suit" desc = "A red suit and blue tie. Somewhat formal." icon_state = "red_suit" - item_state = "r_suit" - worn_state = "red_suit" + item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red") /obj/item/clothing/under/schoolgirl name = "schoolgirl uniform" desc = "It's just like one of my Japanese animes!" icon_state = "schoolgirl" - item_state = "b_suit" - worn_state = "schoolgirl" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/overalls name = "laborer's overalls" desc = "A set of durable overalls for getting the job done." icon_state = "overalls" - item_state = "lb_suit" - worn_state = "overalls" + item_state_slots = list(slot_r_hand_str = "cargo", slot_l_hand_str = "cargo") /obj/item/clothing/under/pirate name = "pirate outfit" desc = "Yarr." icon_state = "pirate" - item_state = "sl_suit" - worn_state = "pirate" + item_state_slots = list(slot_r_hand_str = "sl_suit", slot_l_hand_str = "sl_suit") body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS /obj/item/clothing/under/soviet name = "soviet uniform" desc = "For the Motherland!" icon_state = "soviet" - item_state = "gy_suit" - worn_state = "soviet" + item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey") /obj/item/clothing/under/redcoat name = "redcoat uniform" desc = "Looks old." icon_state = "redcoat" - item_state = "r_suit" - worn_state = "redcoat" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") /obj/item/clothing/under/kilt name = "kilt" desc = "Includes shoes and plaid" icon_state = "kilt" - item_state = "kilt" - worn_state = "kilt" body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET /obj/item/clothing/under/sexymime name = "sexy mime outfit" desc = "The only time when you DON'T enjoy looking at someone's rack." icon_state = "sexymime" - item_state = "w_suit" - worn_state = "sexymime" + item_state_slots = list(slot_r_hand_str = "mime", slot_l_hand_str = "mime") body_parts_covered = UPPER_TORSO|LOWER_TORSO rolled_sleeves = -1 //Please never @@ -269,11 +238,12 @@ name = "gladiator uniform" desc = "Are you not entertained? Is that not why you are here?" icon_state = "gladiator" - item_state = "o_suit" - worn_state = "gladiator" + item_state_slots = list(slot_r_hand_str = "yellow", slot_l_hand_str = "yellow") body_parts_covered = LOWER_TORSO -//dress +/* + * dress + */ /obj/item/clothing/under/dress body_parts_covered = UPPER_TORSO|LOWER_TORSO @@ -281,119 +251,90 @@ name = "black tango dress" desc = "Filled with Latin fire." icon_state = "black_tango" - item_state = "black_tango" - worn_state = "black_tango" /obj/item/clothing/under/dress/blacktango/alt name = "black tango dress" desc = "Filled with Latin fire." icon_state = "black_tango_alt" - item_state = "black_tango_alt" - worn_state = "black_tango_alt" + item_state_slots = list(slot_r_hand_str = "black_tango", slot_l_hand_str = "black_tango") /obj/item/clothing/under/dress/stripeddress name = "striped dress" desc = "Fashion in space." icon_state = "striped_dress" - item_state = "striped_dress" - worn_state = "striped_dress" /obj/item/clothing/under/dress/sailordress name = "sailor dress" desc = "Formal wear for a leading lady." icon_state = "sailor_dress" - item_state = "sailor_dress" - worn_state = "sailor_dress" /obj/item/clothing/under/dress/redeveninggown name = "red evening gown" desc = "Fancy dress for space bar singers." icon_state = "red_evening_gown" - item_state = "red_evening_gown" - worn_state = "red_evening_gown" /obj/item/clothing/under/dress/maid name = "maid costume" desc = "Maid in China." icon_state = "maid" - item_state = "maid" - worn_state = "maid" /obj/item/clothing/under/dress/janimaid name = "maid uniform" desc = "A simple maid uniform for housekeeping." icon_state = "janimaid" - item_state = "janimaid" - worn_state = "janimaid" /obj/item/clothing/under/dress/dress_fire name = "flame dress" desc = "A small black dress with blue flames print on it." icon_state = "dress_fire" - item_state = "bl_suit" - worn_state = "dress_fire" /obj/item/clothing/under/dress/dress_green name = "green dress" desc = "A simple, tight fitting green dress." icon_state = "dress_green" - item_state = "g_suit" - worn_state = "dress_green" /obj/item/clothing/under/dress/dress_orange name = "orange dress" desc = "A fancy orange gown for those who like to show leg." icon_state = "dress_orange" - item_state = "y_suit" - worn_state = "dress_orange" /obj/item/clothing/under/dress/dress_pink name = "pink dress" desc = "A simple, tight fitting pink dress." icon_state = "dress_pink" - item_state = "p_suit" - worn_state = "dress_pink" /obj/item/clothing/under/dress/dress_yellow name = "yellow dress" desc = "A flirty, little yellow dress." icon_state = "dress_yellow" - item_state = "y_suit" - worn_state = "dress_yellow" /obj/item/clothing/under/dress/dress_saloon name = "saloon girl dress" desc = "A old western inspired gown for the girl who likes to drink." icon_state = "dress_saloon" - item_state = "p_suit" - worn_state = "dress_saloon" - + item_state_slots = list(slot_r_hand_str = "dress_white", slot_l_hand_str = "dress_white") /obj/item/clothing/under/dress/dress_cap name = "captain's dress uniform" desc = "Feminine fashion for the style concious captain." icon_state = "dress_cap" - item_state = "b_suit" - worn_state = "dress_cap" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/under/dress/dress_hop name = "head of personnel dress uniform" desc = "Feminine fashion for the style concious HoP." icon_state = "dress_hop" - item_state = "b_suit" - worn_state = "dress_hop" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/under/dress/dress_hr name = "human resources director uniform" desc = "Superior class for the nosy H.R. Director." icon_state = "huresource" - item_state = "y_suit" - worn_state = "huresource" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS -//wedding stuff +/* + * wedding stuff + */ /obj/item/clothing/under/wedding/ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS @@ -401,40 +342,30 @@ name = "orange wedding dress" desc = "A big and puffy orange dress." icon_state = "bride_orange" - item_state = "y_suit" - worn_state = "bride_orange" flags_inv = HIDESHOES /obj/item/clothing/under/wedding/bride_purple name = "purple wedding dress" desc = "A big and puffy purple dress." icon_state = "bride_purple" - item_state = "p_suit" - worn_state = "bride_purple" flags_inv = HIDESHOES /obj/item/clothing/under/wedding/bride_blue name = "blue wedding dress" desc = "A big and puffy blue dress." icon_state = "bride_blue" - item_state = "b_suit" - worn_state = "bride_blue" flags_inv = HIDESHOES /obj/item/clothing/under/wedding/bride_red name = "red wedding dress" desc = "A big and puffy red dress." icon_state = "bride_red" - item_state = "r_suit" - worn_state = "bride_red" flags_inv = HIDESHOES /obj/item/clothing/under/wedding/bride_white name = "silky wedding dress" desc = "A white wedding gown made from the finest silk." icon_state = "bride_white" - item_state = "nursesuit" - worn_state = "bride_white" flags_inv = HIDESHOES body_parts_covered = UPPER_TORSO|LOWER_TORSO @@ -442,206 +373,242 @@ name = "sundress" desc = "Makes you want to frolic in a field of daisies." icon_state = "sundress" - item_state = "bl_suit" - worn_state = "sundress" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/sundress_white name = "white sundress" desc = "A white sundress decorated with purple lilies." icon_state = "sundress_white" - item_state = "sundress_white" - worn_state = "sundress_white" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/captainformal name = "captain's formal uniform" desc = "A captain's formal-wear, for special occasions." icon_state = "captain_formal" - item_state = "b_suit" - worn_state = "captain_formal" + item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue") /obj/item/clothing/under/hosformalmale name = "head of security's formal uniform" desc = "A male head of security's formal-wear, for special occasions." icon_state = "hos_formal_male" - item_state = "r_suit" - worn_state = "hos_formal_male" + item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red") /obj/item/clothing/under/hosformalfem name = "head of security's formal uniform" desc = "A female head of security's formal-wear, for special occasions." icon_state = "hos_formal_fem" - item_state = "r_suit" - worn_state = "hos_formal_fem" + item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red") /obj/item/clothing/under/assistantformal name = "assistant's formal uniform" desc = "An assistant's formal-wear. Why an assistant needs formal-wear is still unknown." icon_state = "assistant_formal" - item_state = "gy_suit" - worn_state = "assistant_formal" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") /obj/item/clothing/under/suit_jacket/charcoal name = "charcoal suit" desc = "A charcoal suit and red tie. Very professional." icon_state = "charcoal_suit" - item_state = "bl_suit" - worn_state = "charcoal_suit" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") starting_accessories = list(/obj/item/clothing/accessory/navy, /obj/item/clothing/accessory/charcoal_jacket) /obj/item/clothing/under/suit_jacket/navy name = "navy suit" desc = "A navy suit and red tie, intended for the station's finest." icon_state = "navy_suit" - item_state = "bl_suit" - worn_state = "navy_suit" + item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue") starting_accessories = list(/obj/item/clothing/accessory/red, /obj/item/clothing/accessory/navy_jacket) /obj/item/clothing/under/suit_jacket/burgundy name = "burgundy suit" desc = "A burgundy suit and black tie. Somewhat formal." icon_state = "burgundy_suit" - item_state = "r_suit" - worn_state = "burgundy_suit" + item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red") starting_accessories = list(/obj/item/clothing/accessory/black, /obj/item/clothing/accessory/burgundy_jacket) /obj/item/clothing/under/suit_jacket/checkered name = "checkered suit" desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?" icon_state = "checkered_suit" - item_state = "gy_suit" - worn_state = "checkered_suit" + item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") starting_accessories = list(/obj/item/clothing/accessory/black, /obj/item/clothing/accessory/checkered_jacket) /obj/item/clothing/under/suit_jacket/tan name = "tan suit" desc = "A tan suit. Smart, but casual." icon_state = "tan_suit" - item_state = "lb_suit" - worn_state = "tan_suit" + item_state_slots = list(slot_r_hand_str = "tan_suit", slot_l_hand_str = "tan_suit") starting_accessories = list(/obj/item/clothing/accessory/yellow, /obj/item/clothing/accessory/tan_jacket) /obj/item/clothing/under/serviceoveralls name = "workman outfit" desc = "The very image of a working man. Not that you're probably doing work." icon_state = "mechanic" - item_state = "lb_suit" - worn_state = "mechanic" + item_state_slots = list(slot_r_hand_str = "cargo", slot_l_hand_str = "cargo") rolled_sleeves = 0 /obj/item/clothing/under/cheongsam name = "white cheongsam" desc = "It is a white cheongsam dress." icon_state = "mai_yang" - item_state = "mai_yang" - worn_state = "mai_yang" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS /obj/item/clothing/under/cheongsam/red name = "red cheongsam" desc = "It is a red cheongsam dress." icon_state = "cheongsam-red" - item_state = "cheongsam-red" - worn_state = "cheongsam-red" /obj/item/clothing/under/cheongsam/blue name = "blue cheongsam" desc = "It is a blue cheongsam dress." icon_state = "cheongsam-blue" - item_state = "cheongsam-blue" - worn_state = "cheongsam-blue" /obj/item/clothing/under/cheongsam/black name = "black cheongsam" desc = "It is a black cheongsam dress." icon_state = "cheongsam-black" - item_state = "cheongsam-black" - worn_state = "cheongsam-black" /obj/item/clothing/under/blazer name = "blue blazer" desc = "A bold but yet conservative outfit, red corduroys, navy blazer and a tie." icon_state = "blue_blazer" - item_state = "blue_blazer" - worn_state = "blue_blazer" + item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue") /obj/item/clothing/under/croptop name = "crop top" desc = "A shirt that has had the top cropped. This one is NT sponsored." icon_state = "croptop" - item_state = "gy_suit" - worn_state = "croptop" + item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey") /obj/item/clothing/under/croptop/red name = "red crop top" desc = "A red shirt that has had the top cropped." icon_state = "croptop_red" - item_state = "r_suit" - worn_state = "croptop_red" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") /obj/item/clothing/under/croptop/grey name = "grey crop top" desc = "A grey shirt that has had the top cropped." icon_state = "croptop_grey" - item_state = "gy_suit" - worn_state = "croptop_grey" + item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey") /obj/item/clothing/under/cuttop name = "grey cut top" desc = "A grey shirt that has had the top cut low." icon_state = "cuttop" - item_state = "gy_suit" - worn_state = "cuttop" + item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey") /obj/item/clothing/under/cuttop/red name = "red cut top" desc = "A red shirt that has had the top cut low." icon_state = "cuttop_red" - item_state = "r_suit" - worn_state = "cuttop_red" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") /obj/item/clothing/under/harness name = "gear harness" desc = "How... minimalist." icon_state = "gear_harness" - worn_state = "gear_harness" body_parts_covered = 0 /obj/item/clothing/under/dress/white name = "white wedding dress" desc = "A fancy white dress with a blue underdress." icon_state = "whitedress1" - item_state = "whitedress1" - worn_state = "whitedress1" flags_inv = HIDESHOES /obj/item/clothing/under/dress/white2 name = "long dress" desc = "A long dress." icon_state = "whitedress2" - item_state = "whitedress2" - worn_state = "whitedress2" flags_inv = HIDESHOES /obj/item/clothing/under/dress/white3 name = "short dress" desc = "A short, plain dress." icon_state = "whitedress3" - item_state = "whitedress3" - worn_state = "whitedress3" /obj/item/clothing/under/dress/white4 name = "long flared dress" desc = "A long white dress that flares out at the bottom." icon_state = "whitedress4" - item_state = "whitedress4" - worn_state = "whitedress4" flags_inv = HIDESHOES /obj/item/clothing/under/dress/darkred name = "fancy dark red dress" desc = "A short, red dress with a black belt. Fancy." icon_state = "darkreddress" - item_state = "darkreddress" - worn_state = "darkreddress" \ No newline at end of file + +/* + * swimsuit + */ +/obj/item/clothing/under/swimsuit/ + siemens_coefficient = 1 + body_parts_covered = 0 + +/obj/item/clothing/under/swimsuit/black + name = "black swimsuit" + desc = "An oldfashioned black swimsuit." + icon_state = "swim_black" + siemens_coefficient = 1 + +/obj/item/clothing/under/swimsuit/blue + name = "blue swimsuit" + desc = "An oldfashioned blue swimsuit." + icon_state = "swim_blue" + siemens_coefficient = 1 + +/obj/item/clothing/under/swimsuit/purple + name = "purple swimsuit" + desc = "An oldfashioned purple swimsuit." + icon_state = "swim_purp" + siemens_coefficient = 1 + +/obj/item/clothing/under/swimsuit/green + name = "green swimsuit" + desc = "An oldfashioned green swimsuit." + icon_state = "swim_green" + siemens_coefficient = 1 + +/obj/item/clothing/under/swimsuit/red + name = "red swimsuit" + desc = "An oldfashioned red swimsuit." + icon_state = "swim_red" + siemens_coefficient = 1 + +/* + * pyjamas + */ +/obj/item/clothing/under/bluepyjamas + name = "blue pyjamas" + desc = "Slightly old-fashioned sleepwear." + icon_state = "blue_pyjamas" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + +/obj/item/clothing/under/redpyjamas + name = "red pyjamas" + desc = "Slightly old-fashioned sleepwear." + icon_state = "red_pyjamas" + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS + +/obj/item/clothing/under/stripper + body_parts_covered = 0 + +/obj/item/clothing/under/stripper/stripper_pink + name = "pink swimsuit" + desc = "A rather skimpy pink swimsuit." + icon_state = "stripper_p_under" + siemens_coefficient = 1 + +/obj/item/clothing/under/stripper/stripper_green + name = "green swimsuit" + desc = "A rather skimpy green swimsuit." + icon_state = "stripper_g_under" + siemens_coefficient = 1 + +/obj/item/clothing/under/stripper/mankini + name = "mankini" + desc = "No honest man would wear this abomination" + icon_state = "mankini" + siemens_coefficient = 1 \ No newline at end of file diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm index c0f3157c658..3cfc550e437 100644 --- a/code/modules/clothing/under/pants.dm +++ b/code/modules/clothing/under/pants.dm @@ -1,3 +1,4 @@ +//these need item states -S2- /obj/item/clothing/under/pants name = "jeans" desc = "A nondescript pair of tough blue jeans." @@ -81,8 +82,9 @@ desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station." icon_state = "camopants" -//Baggy Pants// - +/* + * Baggy Pants + */ /obj/item/clothing/under/pants/baggy name = "baggy jeans" desc = "A nondescript pair of tough baggy blue jeans." diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index b04621bdfe7..0690b49565e 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -1,3 +1,4 @@ +//these need item states -S2- /obj/item/clothing/under/shorts name = "athletic shorts" desc = "95% Polyester, 5% Spandex!" @@ -7,99 +8,80 @@ /obj/item/clothing/under/shorts/red name = "red athletic shorts" icon_state = "redshorts" - worn_state = "redshorts" /obj/item/clothing/under/shorts/green name = "green athletic shorts" icon_state = "greenshorts" - worn_state = "greenshorts" /obj/item/clothing/under/shorts/blue name = "blue athletic shorts" icon_state = "blueshorts" - worn_state = "blueshorts" /obj/item/clothing/under/shorts/black name = "black athletic shorts" icon_state = "blackshorts" - worn_state = "blackshorts" /obj/item/clothing/under/shorts/grey name = "grey athletic shorts" icon_state = "greyshorts" - worn_state = "greyshorts" /obj/item/clothing/under/shorts/jeans name = "jeans shorts" desc = "Some jeans! Just in short form!" icon_state = "jeans_shorts" - worn_state = "jeans_shorts" /obj/item/clothing/under/shorts/jeans/female name = "jeans short shorts" icon_state = "jeans_shorts_f" - worn_state = "jeans_shorts_f" /obj/item/clothing/under/shorts/jeans/classic name = "classic jeans shorts" icon_state = "jeansclassic_shorts" - worn_state = "jeansclassic_shorts" /obj/item/clothing/under/shorts/jeans/classic/female name = "classic jeans short shorts" icon_state = "jeansclassic_shorts_f" - worn_state = "jeansclassic_shorts_f" /obj/item/clothing/under/shorts/jeans/mustang name = "mustang jeans shorts" icon_state = "jeansmustang_shorts" - worn_state = "jeansmustang_shorts" /obj/item/clothing/under/shorts/jeans/mustang/female name = "mustang jeans short shorts" icon_state = "jeansmustang_shorts_f" - worn_state = "jeansmustang_shorts_f" /obj/item/clothing/under/shorts/jeans/youngfolks name = "young folks jeans shorts" icon_state = "jeansyoungfolks_shorts" - worn_state = "jeansyoungfolks_shorts" /obj/item/clothing/under/shorts/jeans/youngfolks/female name = "young folks jeans short shorts" icon_state = "jeansyoungfolks_shorts_f" - worn_state = "jeansyoungfolks_shorts_f" /obj/item/clothing/under/shorts/jeans/black name = "black jeans shorts" icon_state = "blackpants_shorts" - worn_state = "blackpants_shorts" /obj/item/clothing/under/shorts/jeans/black/female name = "black jeans short shorts" icon_state = "black_shorts_f" - worn_state = "black_shorts_f" /obj/item/clothing/under/shorts/jeans/grey name = "grey jeans shorts" icon_state = "greypants_shorts" - worn_state = "greypants_shorts" /obj/item/clothing/under/shorts/jeans/grey/female name = "grey jeans short shorts" icon_state = "grey_shorts_f" - worn_state = "grey_shorts_f" /obj/item/clothing/under/shorts/khaki name = "khaki shorts" desc = "For that island getaway. It's five o'clock somewhere, right?" icon_state = "tanpants_shorts" - worn_state = "tanpants_shorts" /obj/item/clothing/under/shorts/khaki/female name = "khaki short shorts" icon_state = "khaki_shorts_f" - worn_state = "khaki_shorts_f" //Argh, skirts be below this line -> ------------------------------ @@ -107,8 +89,6 @@ name = "black skirt" desc = "A black skirt, very fancy!" icon_state = "blackskirt" - item_state = "bl_suit" - worn_state = "blackskirt" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS rolled_sleeves = -1 @@ -116,141 +96,122 @@ name = "khaki skirt" desc = "A skirt that is a khaki color." icon_state = "skirt_khaki" - worn_state = "skirt_khaki" /obj/item/clothing/under/skirt/black name = "short black skirt" desc = "A skirt that is a shiny black." icon_state = "skirt_short_black" - worn_state = "skirt_short_black" /obj/item/clothing/under/skirt/blue name = "short blue skirt" desc = "A skirt that is a shiny blue." icon_state = "skirt_short_blue" - worn_state = "skirt_short_blue" /obj/item/clothing/under/skirt/red name = "short red skirt" desc = "A skirt that is a shiny red." icon_state = "skirt_short_red" - worn_state = "skirt_short_red" /obj/item/clothing/under/skirt/swept name = "swept skirt" desc = "A skirt that is swept to one side." icon_state = "skirt_swept" - worn_state = "skirt_swept" /obj/item/clothing/under/skirt/plaid_blue name = "blue plaid skirt" desc = "A preppy blue skirt with a white blouse." icon_state = "plaid_blue" - worn_state = "plaid_blue" + item_state_slots = list(slot_r_hand_str = "blue", slot_l_hand_str = "blue") /obj/item/clothing/under/skirt/plaid_red name = "red plaid skirt" desc = "A preppy red skirt with a white blouse." icon_state = "plaid_red" - item_state = "kilt" - worn_state = "plaid_red" - + item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red") + /obj/item/clothing/under/skirt/plaid_purple name = "blue purple skirt" desc = "A preppy purple skirt with a white blouse." icon_state = "plaid_purple" - item_state = "kilt" - worn_state = "plaid_purple" - + item_state_slots = list(slot_r_hand_str = "purple", slot_l_hand_str = "purple") + /obj/item/clothing/under/rank/cargo/skirt name = "quartermaster's jumpskirt" desc = "It's a jumpskirt worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper." icon_state = "qmf" - worn_state = "qmf" - + item_state_slots = list(slot_r_hand_str = "qm", slot_l_hand_str = "qm") + /obj/item/clothing/under/rank/cargotech/skirt name = "cargo technician's jumpskirt" desc = "Skirrrrrts! They're comfy and easy to wear!" icon_state = "cargof" - worn_state = "cargof" - + item_state_slots = list(slot_r_hand_str = "cargo", slot_l_hand_str = "cargo") + /obj/item/clothing/under/rank/engineer/skirt desc = "It's an orange high visibility jumpskirt worn by engineers. It has minor radiation shielding." name = "engineer's jumpskirt" icon_state = "enginef" - worn_state = "enginef" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) - -/obj/item/clothing/under/rank/engineer/chief_engineer/skirt + item_state_slots = list(slot_r_hand_str = "engine", slot_l_hand_str = "engine") + +/obj/item/clothing/under/rank/chief_engineer/skirt desc = "It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of \"Chief engineer\". It has minor radiation shielding." name = "chief engineer's jumpskirt" icon_state = "chieff" - worn_state = "chieff" - -/obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt + item_state_slots = list(slot_r_hand_str = "chiefengineer", slot_l_hand_str = "chiefengineer") + +/obj/item/clothing/under/rank/atmospheric_technician/skirt desc = "It's a jumpskirt worn by atmospheric technicians." name = "atmospheric technician's jumpskirt" icon_state = "atmosf" - worn_state = "atmosf" - + item_state_slots = list(slot_r_hand_str = "atmos", slot_l_hand_str = "atmos") + /obj/item/clothing/under/rank/roboticist/skirt desc = "It's a slimming black jumpskirt with reinforced seams; great for industrial work." name = "roboticist's jumpskirt" icon_state = "roboticsf" - worn_state = "roboticsf" - + item_state_slots = list(slot_r_hand_str = "robotics", slot_l_hand_str = "robotics") + /obj/item/clothing/under/rank/scientist/skirt name = "scientist's jumpskirt" - icon_state = "sciencewhitef" - worn_state = "sciencewhitef" + icon_state = "sciencef" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) /obj/item/clothing/under/rank/medical/skirt name = "medical doctor's jumpskirt" icon_state = "medicalf" - worn_state = "medicalf" -/obj/item/clothing/under/rank/medical/chemist/skirt +/obj/item/clothing/under/rank/chemist/skirt name = "chemist's jumpskirt" - icon_state = "chemistrywhitef" - worn_state = "chemistrywhitef" + icon_state = "chemistryf" -/obj/item/clothing/under/rank/medical/chief_medical_officer/skirt +/obj/item/clothing/under/rank/chief_medical_officer/skirt desc = "It's a jumpskirt worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection." name = "chief medical officer's jumpskirt" icon_state = "cmof" - worn_state = "cmof" -/obj/item/clothing/under/rank/medical/geneticist/skirt +/obj/item/clothing/under/rank/geneticist/skirt name = "geneticist's jumpskirt" - icon_state = "geneticswhitef" - worn_state = "geneticswhitef" + icon_state = "geneticsf" -/obj/item/clothing/under/rank/medical/virologist/skirt +/obj/item/clothing/under/rank/virologist/skirt name = "virologist's jumpskirt" - icon_state = "virologywhitef" - worn_state = "virologywhitef" + icon_state = "virologyf" /obj/item/clothing/under/rank/security/skirt name = "security officer's jumpskirt" desc = "Standard feminine fashion for Security Officers. It's made of sturdier material than the standard jumpskirts." - icon_state = "secredf" - item_state = "r_suit" - worn_state = "secredf" + icon_state = "securityf" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 -/obj/item/clothing/under/rank/security/warden/skirt +/obj/item/clothing/under/rank/warden/skirt desc = "Standard feminine fashion for a Warden. It is made of sturdier material than standard jumpskirts. It has the word \"Warden\" written on the shoulders." name = "warden's jumpskirt" icon_state = "wardenf" - item_state = "r_suit" - worn_state = "wardenf" -/obj/item/clothing/under/rank/security/head_of_security/skirt +/obj/item/clothing/under/rank/head_of_security/skirt desc = "It's a fashionable jumpskirt worn by those few with the dedication to achieve the position of \"Head of Security\". It has additional armor to protect the wearer." name = "head of security's jumpskirt" - icon_state = "hosredf" - item_state = "r_suit" - worn_state = "hosredf" \ No newline at end of file + icon_state = "hosf" \ No newline at end of file diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 66edeaaf09e..0560d49e300 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -1,9 +1,9 @@ +//these need item states -S2- /obj/item/clothing/under/syndicate //Merc Tactleneck name = "tactical turtleneck" desc = "It's some non-descript, slightly suspicious looking, civilian clothing." icon_state = "syndicate" - item_state = "bl_suit" - worn_state = "syndicate" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") has_sensor = 0 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 @@ -12,8 +12,7 @@ name = "combat turtleneck" desc = "It's some non-descript, slightly suspicious looking, civilian clothing." icon_state = "combat" - item_state = "bl_suit" - worn_state = "combat" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") has_sensor = 1 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 @@ -22,7 +21,6 @@ name = "\improper Tacticool turtleneck" desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." icon_state = "tactifool" - item_state = "bl_suit" - worn_state = "tactifool" + item_state_slots = list(slot_r_hand_str = "black", slot_l_hand_str = "black") siemens_coefficient = 1 rolled_sleeves = 0 diff --git a/code/modules/clothing/under/xenos/seromi.dm b/code/modules/clothing/under/xenos/seromi.dm index e4cc0605022..16eb2c47fe7 100644 --- a/code/modules/clothing/under/xenos/seromi.dm +++ b/code/modules/clothing/under/xenos/seromi.dm @@ -3,31 +3,25 @@ desc = "It looks fitted to nonhuman proportions." icon = 'icons/obj/clothing/species/seromi/uniform.dmi' icon_state = "seromi_grey" - worn_state = "seromi_grey" species_restricted = list("Teshari") body_parts_covered = 0 // It's a thin piece of cloth with a neck hole. /obj/item/clothing/under/seromi/white name = "small white smock" icon_state = "seromi_white" - worn_state = "seromi_white" /obj/item/clothing/under/seromi/red name = "small Security smock" icon_state = "seromi_red" - worn_state = "seromi_red" /obj/item/clothing/under/seromi/yellow name = "small Engineering smock" icon_state = "seromi_yellow" - worn_state = "seromi_yellow" /obj/item/clothing/under/seromi/medical name = "small Medical uniform" icon_state = "seromi_medical" - worn_state = "Teshari_medical" - + /obj/item/clothing/under/seromi/rainbow name = "small rainbow smock" - icon_state = "seromi_rainbow" - worn_state = "seromi_rainbow" \ No newline at end of file + icon_state = "seromi_rainbow" \ No newline at end of file diff --git a/code/modules/detectivework/tools/crimekit.dm b/code/modules/detectivework/tools/crimekit.dm index 8b12203b217..8d4e3cf8e65 100644 --- a/code/modules/detectivework/tools/crimekit.dm +++ b/code/modules/detectivework/tools/crimekit.dm @@ -4,7 +4,6 @@ desc = "A stainless steel-plated carrycase for all your forensic needs. Feels heavy." icon = 'icons/obj/forensics.dmi' icon_state = "case" - item_state = "case" storage_slots = 14 /obj/item/weapon/storage/briefcase/crimekit/New() diff --git a/code/modules/detectivework/tools/evidencebag.dm b/code/modules/detectivework/tools/evidencebag.dm index 6aa4bdf99fb..9e2c4903005 100644 --- a/code/modules/detectivework/tools/evidencebag.dm +++ b/code/modules/detectivework/tools/evidencebag.dm @@ -5,7 +5,7 @@ desc = "An empty evidence bag." icon = 'icons/obj/storage.dmi' icon_state = "evidenceobj" - item_state = "" + item_state = null w_class = 2 var/obj/item/stored_item = null diff --git a/code/modules/economy/price_list.dm b/code/modules/economy/price_list.dm index 8301043c092..3d4589469bc 100644 --- a/code/modules/economy/price_list.dm +++ b/code/modules/economy/price_list.dm @@ -42,6 +42,18 @@ /datum/reagent/drink/milkshake price_tag = 2 +/datum/reagent/drink/roy_rogers + price_tag = 2 + +/datum/reagent/drink/shirley_temple + price_tag = 2 + +/datum/reagent/drink/arnold_palmer + price_tag = 2 + +/datum/reagent/drink/collins_mix + price_tag = 2 + // Beer // @@ -322,6 +334,7 @@ price_tag = 3 + // From the machine // /obj/item/weapon/reagent_containers/food/drinks/cans/cola diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 4eae167a654..4d204310391 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -158,6 +158,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 2.5, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 20, list(ASSIGNMENT_SECURITY = 20)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 10, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SECURITY = 10), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 30, list(ASSIGNMENT_ENGINEER = 5)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 100, list(ASSIGNMENT_SECURITY = 30), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100)), diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index f1ea3593f2d..42952f081e2 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -29,7 +29,7 @@ msg = "A combat drone wing operating near various asteroids in the Kara subsystem has failed to return from a anti-piracy sweep. If any are sighted, \ approach with caution." if(2) - msg = "Contact has been lost with a combat drone wring operating out in the asteroid field near Kara. If any are sighted in the area, approach with \ + msg = "Contact has been lost with a combat drone wing operating out in the asteroid field near Kara. If any are sighted in the area, approach with \ caution." if(3) msg = "Unidentified hackers have targeted a combat drone wing deployed in the Kara subsystem. If any are sighted in the area, approach with caution." diff --git a/code/modules/events/solar_storm.dm b/code/modules/events/solar_storm.dm new file mode 100644 index 00000000000..971e0418bc9 --- /dev/null +++ b/code/modules/events/solar_storm.dm @@ -0,0 +1,52 @@ +/datum/event/solar_storm + startWhen = 45 + announceWhen = 1 + var/const/rad_interval = 5 //Same interval period as radiation storms. + var/base_solar_gen_rate + + +/datum/event/solar_storm/setup() + endWhen = startWhen + rand(30,90) + rand(30,90) //2-6 minute duration + +/datum/event/solar_storm/announce() + command_announcement.Announce("A solar storm has been detected approaching the station. Please halt all EVA activites immediately and return to the interior of the station.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg') + adjust_solar_output(1.5) + +/datum/event/solar_storm/proc/adjust_solar_output(var/mult = 1) + if(isnull(base_solar_gen_rate)) base_solar_gen_rate = solar_gen_rate + solar_gen_rate = mult * base_solar_gen_rate + + +/datum/event/solar_storm/start() + command_announcement.Announce("The solar storm has reached the station. Please refain from EVA and remain inside the station until it has passed.", "Anomaly Alert") + adjust_solar_output(5) + + +/datum/event/solar_storm/tick() + if(activeFor % rad_interval == 0) + radiate() + +/datum/event/solar_storm/proc/radiate() + for(var/mob/living/L in living_mob_list) + var/turf/T = get_turf(L) + if(!T) + continue + + if(!istype(T.loc,/area/space) && !istype(T,/turf/space)) //Make sure you're in a space area or on a space turf + continue + + //Todo: Apply some burn damage from the heat of the sun. Until then, enjoy some moderate radiation. + L.apply_effect((rand(15,30)),IRRADIATE,blocked = L.getarmor(null, "rad")) + + +/datum/event/solar_storm/end() + command_announcement.Announce("The solar storm has passed the station. It is now safe to resume EVA activities. Please report to medbay if you experience any unusual symptoms. ", "Anomaly Alert") + adjust_solar_output() + + +//For a false alarm scenario. +/datum/event/solar_storm/syndicate/adjust_solar_output() + return + +/datum/event/solar_storm/syndicate/radiate() + return diff --git a/code/modules/examine/descriptions/machines.dm b/code/modules/examine/descriptions/machines.dm new file mode 100644 index 00000000000..f6557152b47 --- /dev/null +++ b/code/modules/examine/descriptions/machines.dm @@ -0,0 +1,9 @@ +/obj/machinery/porta_turret + description_info = "This is a turret utilizing an internal energy weapon. Generally, these can fire stun beams, or lasers, and can \ + be configured by unlocking and interfacing with them nearby, or controlled remotely with a turret control switch." + description_antag = "Turrets can be emagged to target anyone and everyone, on lethals, and cannot be turned off if emagged." + +/obj/machinery/porta_turret/ai_defense + description_info = "This is a varient of the normal turret, utilizing an internal energy weapon. This version can fire stun \ + beams, or an xray laser, which is much harder for solid objects to stop than normal laser light, and can be configured remotely \ + with a turret control switch. This varient is also much more durable, and is hardened against electromagnetic pulses." \ No newline at end of file diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 4eb60cc7064..611a6112962 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -144,6 +144,13 @@ I said no! ) result = /obj/item/weapon/reagent_containers/food/snacks/mimeburger +/datum/recipe/bunbun + items = list( + /obj/item/weapon/reagent_containers/food/snacks/bun, + /obj/item/weapon/reagent_containers/food/snacks/bun + ) + result = /obj/item/weapon/reagent_containers/food/snacks/bunbun + /datum/recipe/hotdog items = list( /obj/item/weapon/reagent_containers/food/snacks/bun, @@ -1021,4 +1028,4 @@ I said no! /datum/recipe/cake/brain items = list(/obj/item/organ/internal/brain) - result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake \ No newline at end of file + result = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index 1b353e34071..3fcf07713b3 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -134,7 +134,7 @@ if(P.name != "Blank Card") user << "You cannot write on that card." return - var/cardtext = sanitize(input(user, "What do you wish to write on the card?", "Card Editing") as text|null, MAX_BOOK_MESSAGE_LEN) + var/cardtext = sanitize(input(user, "What do you wish to write on the card?", "Card Editing") as text|null, MAX_PAPER_MESSAGE_LEN) if(!cardtext) return P.name = cardtext diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm index 4c0d0a755e6..1bc0c721c72 100644 --- a/code/modules/holodeck/HolodeckControl.dm +++ b/code/modules/holodeck/HolodeckControl.dm @@ -30,62 +30,60 @@ "Snow Field" = "snowfield", \ "Theatre" = "theatre", \ "Meeting Hall" = "meetinghall", \ - "Courtroom" = "courtroom" \ + "Courtroom" = "courtroom", \ + "Turn Off" = "turnoff" \ ) var/list/restricted_programs = list("Atmospheric Burn Simulation" = "burntest", "Wildlife Simulation" = "wildlifecarp") + var/current_program = "turnoff" /obj/machinery/computer/HolodeckControl/attack_ai(var/mob/user as mob) return src.attack_hand(user) /obj/machinery/computer/HolodeckControl/attack_hand(var/mob/user as mob) - if(..()) return user.set_machine(src) - var/dat - dat += "Holodeck Control System
    " - dat += "
    Current Loaded Programs:
    " - for(var/prog in supported_programs) - dat += "([prog])
    " + ui_interact(user) - dat += "
    " - dat += "(Turn Off)
    " +/** + * Display the NanoUI window for the Holodeck Computer. + * + * See NanoUI documentation for details. + */ +/obj/machinery/computer/HolodeckControl/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) - dat += "
    " - dat += "Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.
    " + var/list/data = list() + var/program_list[0] + var/restricted_program_list[0] + for(var/P in supported_programs) + program_list[++program_list.len] = list("name" = P, "program" = supported_programs[P]) + + for(var/P in restricted_programs) + restricted_program_list[++restricted_program_list.len] = list("name" = P, "program" = restricted_programs[P]) + + data["supportedPrograms"] = program_list + data["restrictedPrograms"] = restricted_program_list + data["currentProgram"] = current_program if(issilicon(user)) - dat += "
    " - if(safety_disabled) - if (emagged) - dat += "ERROR: Cannot re-enable Safety Protocols.
    " - else - dat += "(Re-Enable Safety Protocols?)
    " - else - dat += "(Override Safety Protocols?)
    " - - dat += "
    " - - if(safety_disabled) - for(var/prog in restricted_programs) - dat += "(Begin [prog])
    " - dat += "Ensure the holodeck is empty before testing.
    " - dat += "
    " - dat += "Safety Protocols are DISABLED
    " + data["isSilicon"] = 1 else - dat += "Safety Protocols are ENABLED
    " - + data["isSilicon"] = null + data["safetyDisabled"] = safety_disabled + data["emagged"] = emagged if(linkedholodeck.has_gravity) - dat += "Gravity is (ON)
    " + data["gravity"] = 1 else - dat += "Gravity is (OFF)
    " - - user << browse(dat, "window=computer;size=400x500") - onclose(user, "computer") - - return + data["gravity"] = null + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "holodeck.tmpl", src.name, 400, 550) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(20) /obj/machinery/computer/HolodeckControl/Topic(href, href_list) if(..()) @@ -97,6 +95,7 @@ var/prog = href_list["program"] if(prog in holodeck_programs) loadProgram(holodeck_programs[prog]) + current_program = href_list["program"] else if(href_list["AIoverride"]) if(!issilicon(usr)) @@ -118,8 +117,8 @@ toggleGravity(linkedholodeck) src.add_fingerprint(usr) - src.updateUsrDialog() - return + + nanomanager.update_uis(src) /obj/machinery/computer/HolodeckControl/emag_act(var/remaining_charges, var/mob/user as mob) playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) @@ -132,7 +131,6 @@ user << "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call [company_name] maintenance and do not use the simulator." log_game("[key_name(usr)] emagged the Holodeck Control Computer") return 1 - src.updateUsrDialog() return /obj/machinery/computer/HolodeckControl/proc/update_projections() diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm index f9536420e26..69077aad840 100644 --- a/code/modules/holodeck/HolodeckObjects.dm +++ b/code/modules/holodeck/HolodeckObjects.dm @@ -121,6 +121,10 @@ name = "boxing gloves" desc = "Because you really needed another excuse to punch your crewmates." icon_state = "boxing" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_gloves.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi', + ) item_state = "boxing" /obj/structure/window/reinforced/holowindow/Destroy() @@ -235,6 +239,10 @@ /obj/item/weapon/holo/esword desc = "May the force be within you. Sorta." icon_state = "sword0" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) force = 3.0 throw_speed = 1 throw_range = 5 @@ -295,7 +303,6 @@ icon = 'icons/obj/basketball.dmi' icon_state = "basketball" name = "basketball" - item_state = "basketball" desc = "Here's your chance, do your dance at the Space Jam." w_class = 4 //Stops people from hiding it in their bags/pockets diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm index 01fd8764d83..1c823ef61b1 100644 --- a/code/modules/hydroponics/grown_inedible.dm +++ b/code/modules/hydroponics/grown_inedible.dm @@ -37,7 +37,6 @@ desc = "A reminder of meals gone by." icon = 'icons/obj/trash.dmi' icon_state = "corncob" - item_state = "corncob" w_class = 2.0 throwforce = 0 throw_speed = 4 @@ -56,7 +55,6 @@ desc = "A peel from a banana." icon = 'icons/obj/items.dmi' icon_state = "banana_peel" - item_state = "banana_peel" w_class = 2.0 throwforce = 0 throw_speed = 4 diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 6e88aabee5a..eb1eeb40cae 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -73,7 +73,7 @@ set_trait(TRAIT_PRODUCTION,5) set_trait(TRAIT_YIELD,2) set_trait(TRAIT_POTENCY,10) - set_trait(TRAIT_PRODUCT_COLOUR,"c9fa16") + set_trait(TRAIT_PRODUCT_COLOUR,"#c9fa16") set_trait(TRAIT_WATER_CONSUMPTION, 3) set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.25) diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index fe0a1789195..89dc65b147e 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -55,6 +55,7 @@ /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, /obj/item/seeds/replicapod = 3, + /obj/item/seeds/lavenderseed = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/limeseed = 3, /obj/item/seeds/mtearseed = 2, @@ -74,8 +75,7 @@ /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, - /obj/item/seeds/whitebeetseed = 3, - /obj/item/seeds/lavenderseed = 3 + /obj/item/seeds/whitebeetseed = 3 ) /obj/machinery/seed_storage/xenobotany @@ -99,6 +99,7 @@ /obj/item/seeds/glowshroom = 2, /obj/item/seeds/grapeseed = 3, /obj/item/seeds/grassseed = 3, + /obj/item/seeds/lavenderseed = 3, /obj/item/seeds/lemonseed = 3, /obj/item/seeds/libertymycelium = 2, /obj/item/seeds/limeseed = 3, @@ -122,8 +123,7 @@ /obj/item/seeds/towermycelium = 3, /obj/item/seeds/watermelonseed = 3, /obj/item/seeds/wheatseed = 3, - /obj/item/seeds/whitebeetseed = 3, - /obj/item/seeds/lavenderseed = 3 + /obj/item/seeds/whitebeetseed = 3 ) /obj/machinery/seed_storage/attack_hand(mob/user as mob) diff --git a/code/modules/hydroponics/trays/tray_reagents.dm b/code/modules/hydroponics/trays/tray_reagents.dm index ba2013812ab..1ab73542b00 100644 --- a/code/modules/hydroponics/trays/tray_reagents.dm +++ b/code/modules/hydroponics/trays/tray_reagents.dm @@ -1,7 +1,6 @@ - /obj/item/weapon/plantspray icon = 'icons/obj/hydroponics_machines.dmi' - item_state = "spray" + item_state = "spraycan" flags = NOBLUDGEON slot_flags = SLOT_BELT throwforce = 4 diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index aebcacc91bb..4fba3b50258 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -42,6 +42,7 @@ new/datum/stack_recipe("green comfy chair", /obj/structure/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1), \ )) recipes += new/datum/stack_recipe("table frame", /obj/structure/table, 1, time = 10, one_per_turf = 1, on_floor = 1) + recipes += new/datum/stack_recipe("bench frame", /obj/structure/table/bench, 1, time = 10, one_per_turf = 1, on_floor = 1) recipes += new/datum/stack_recipe("rack", /obj/structure/table/rack, 1, time = 5, one_per_turf = 1, on_floor = 1) recipes += new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1) recipes += new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1) @@ -78,6 +79,7 @@ recipes += new/datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade) recipes += new/datum/stack_recipe("light fixture frame", /obj/item/frame/light, 2) recipes += new/datum/stack_recipe("small light fixture frame", /obj/item/frame/light/small, 1) + recipes += new/datum/stack_recipe("floor lamp fixture frame", /obj/machinery/light_construct/flamp, 2) recipes += new/datum/stack_recipe("apc frame", /obj/item/frame/apc, 2) recipes += new/datum/stack_recipe_list("filing cabinets", list( \ new/datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1), \ @@ -110,7 +112,8 @@ recipes += new/datum/stack_recipe("shower curtain", /obj/structure/curtain, 4, time = 15, one_per_turf = 1, on_floor = 1) recipes += new/datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 4, time = 25, one_per_turf = 1, on_floor = 1) recipes += new/datum/stack_recipe("airtight plastic flaps", /obj/structure/plasticflaps/mining, 5, time = 25, one_per_turf = 1, on_floor = 1) - recipes += new/datum/stack_recipe("water-cooler", /obj/structure/reagent_dispensers/water_cooler, 4, time = 1, one_per_turf = 1, on_floor = 1) + recipes += new/datum/stack_recipe("water-cooler", /obj/structure/reagent_dispensers/water_cooler, 4, time = 10, one_per_turf = 1, on_floor = 1) + recipes += new/datum/stack_recipe("lampshade", /obj/item/weapon/lampshade, 1, time = 1) /material/wood/generate_recipes() ..() diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 9daa14d1faf..aab806aa7cb 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -6,6 +6,10 @@ throw_speed = 3 throw_range = 3 max_amount = 50 + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) var/default_type = DEFAULT_WALL_MATERIAL var/material/material @@ -88,58 +92,91 @@ default_type = "iron" apply_colour = 1 +/obj/item/stack/material/iron/fifty + amount = 50 + /obj/item/stack/material/sandstone name = "sandstone brick" icon_state = "sheet-sandstone" default_type = "sandstone" +/obj/item/stack/material/sandstone/fifty + amount = 50 + /obj/item/stack/material/marble name = "marble brick" icon_state = "sheet-marble" default_type = "marble" +/obj/item/stack/material/marble/fifty + amount = 50 + /obj/item/stack/material/diamond name = "diamond" icon_state = "sheet-diamond" default_type = "diamond" +/obj/item/stack/material/diamond/fifty + amount = 50 + /obj/item/stack/material/uranium name = "uranium" icon_state = "sheet-uranium" default_type = "uranium" +/obj/item/stack/material/uranium/fifty + amount = 50 + /obj/item/stack/material/phoron name = "solid phoron" icon_state = "sheet-phoron" default_type = "phoron" +/obj/item/stack/material/phoron/fifty + amount = 50 + /obj/item/stack/material/plastic name = "plastic" icon_state = "sheet-plastic" default_type = "plastic" +/obj/item/stack/material/plastic/fifty + amount = 50 + /obj/item/stack/material/gold name = "gold" icon_state = "sheet-gold" default_type = "gold" +/obj/item/stack/material/gold/fifty + amount = 50 + /obj/item/stack/material/silver name = "silver" icon_state = "sheet-silver" default_type = "silver" +/obj/item/stack/material/silver/fifty + amount = 50 + //Valuable resource, cargo can sell it. /obj/item/stack/material/platinum name = "platinum" icon_state = "sheet-adamantine" default_type = "platinum" +/obj/item/stack/material/platinum/fifty + amount = 50 + //Extremely valuable to Research. /obj/item/stack/material/mhydrogen name = "metallic hydrogen" icon_state = "sheet-mythril" default_type = "mhydrogen" +/obj/item/stack/material/mhydrogen/fifty + amount = 50 + //Fuel for MRSPACMAN generator. /obj/item/stack/material/tritium name = "tritium" @@ -147,54 +184,92 @@ default_type = "tritium" apply_colour = 1 +/obj/item/stack/material/tritium/fifty + amount = 50 + /obj/item/stack/material/osmium name = "osmium" icon_state = "sheet-silver" default_type = "osmium" apply_colour = 1 +/obj/item/stack/material/osmium/fifty + amount = 50 + /obj/item/stack/material/steel name = DEFAULT_WALL_MATERIAL icon_state = "sheet-metal" default_type = DEFAULT_WALL_MATERIAL +/obj/item/stack/material/steel/fifty + amount = 50 + /obj/item/stack/material/plasteel name = "plasteel" icon_state = "sheet-plasteel" - item_state = "sheet-metal" default_type = "plasteel" +/obj/item/stack/material/plasteel/fifty + amount = 50 + +/obj/item/stack/material/durasteel + name = "durasteel" + icon_state = "sheet-durasteel" + item_state = "sheet-metal" + default_type = "durasteel" + +/obj/item/stack/material/durasteel/fifty + amount = 50 + /obj/item/stack/material/wood name = "wooden plank" icon_state = "sheet-wood" default_type = "wood" +/obj/item/stack/material/wood/fifty + amount = 50 + /obj/item/stack/material/cloth name = "cloth" icon_state = "sheet-cloth" default_type = "cloth" +/obj/item/stack/material/cloth/fifty + amount = 50 + /obj/item/stack/material/cardboard name = "cardboard" icon_state = "sheet-card" default_type = "cardboard" +/obj/item/stack/material/cardboard/fifty + amount = 50 + /obj/item/stack/material/leather name = "leather" desc = "The by-product of mob grinding." icon_state = "sheet-leather" default_type = "leather" +/obj/item/stack/material/leather/fifty + amount = 50 + /obj/item/stack/material/glass name = "glass" icon_state = "sheet-glass" default_type = "glass" +/obj/item/stack/material/glass/fifty + amount = 50 + /obj/item/stack/material/glass/reinforced name = "reinforced glass" icon_state = "sheet-rglass" default_type = "rglass" +/obj/item/stack/material/glass/reinforced/fifty + amount = 50 + /obj/item/stack/material/glass/phoronglass name = "borosilicate glass" desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures" @@ -202,9 +277,15 @@ icon_state = "sheet-phoronglass" default_type = "borosilicate glass" +/obj/item/stack/material/glass/phoronglass/fifty + amount = 50 + /obj/item/stack/material/glass/phoronrglass name = "reinforced borosilicate glass" desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods." singular_name = "reinforced borosilicate glass sheet" icon_state = "sheet-phoronrglass" - default_type = "reinforced borosilicate glass" + default_type = "reinforced borosilicate glass" + +/obj/item/stack/material/glass/phoronrglass/fifty + amount = 50 diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index 920b751117d..b6e2a49fe07 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -91,6 +91,7 @@ var/list/name_to_material var/melting_point = 1800 // K, walls will take damage if they're next to a fire hotter than this var/integrity = 150 // General-use HP value for products. var/opacity = 1 // Is the material transparent? 0.5< makes transparent walls/doors. + var/reflectivity = 0 // How reflective to light is the material? Currently used for laser defense. var/explosion_resistance = 5 // Only used by walls currently. var/conductive = 1 // Objects with this var add CONDUCTS to flags on spawn. var/list/composite_material // If set, object matter var will be a list containing these values. @@ -234,6 +235,7 @@ var/list/name_to_material cut_delay = 60 icon_colour = "#00FFE1" opacity = 0.4 + reflectivity = 0.6 shard_type = SHARD_SHARD tableslam_noise = 'sound/effects/Glasshit.ogg' hardness = 100 @@ -356,6 +358,22 @@ var/list/name_to_material stack_origin_tech = list(TECH_MATERIAL = 2) composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo +// Very rare alloy that is reflective, should be used sparingly. +/material/durasteel + name = "durasteel" + stack_type = /obj/item/stack/material/durasteel + integrity = 600 + melting_point = 7000 + icon_base = "metal" + icon_reinf = "reinf_metal" + icon_colour = "#6EA7BE" + explosion_resistance = 75 + hardness = 100 + weight = 28 + reflectivity = 0.7 // Not a perfect mirror, but close. + stack_origin_tech = list(TECH_MATERIAL = 8) + composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug + /material/plasteel/titanium name = "titanium" stack_type = null @@ -377,7 +395,7 @@ var/list/name_to_material weight = 15 door_icon_base = "stone" destruction_desc = "shatters" - window_options = list("One Direction" = 1, "Full Window" = 4) + window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) created_window = /obj/structure/window/basic rod_product = /obj/item/stack/material/glass/reinforced @@ -407,6 +425,12 @@ var/list/name_to_material for (var/obj/structure/window/check_window in user.loc) window_count++ possible_directions -= check_window.dir + for (var/obj/structure/windoor_assembly/check_assembly in user.loc) + window_count++ + possible_directions -= check_assembly.dir + for (var/obj/machinery/door/window/check_windoor in user.loc) + window_count++ + possible_directions -= check_windoor.dir // Get the closest available dir to the user's current facing. var/build_dir = SOUTHWEST //Default to southwest for fulltile windows. @@ -417,18 +441,12 @@ var/list/name_to_material else if(choice in list("One Direction","Windoor")) if(possible_directions.len) - for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,180), turn(user.dir,270) )) + for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,270), turn(user.dir,180))) if(direction in possible_directions) build_dir = direction break else failed_to_build = 1 - if(!failed_to_build && choice == "Windoor") - if(!is_reinforced()) - user << "This material is not reinforced enough to use for a door." - return - if((locate(/obj/structure/windoor_assembly) in T.contents) || (locate(/obj/machinery/door/window) in T.contents)) - failed_to_build = 1 if(failed_to_build) user << "There is no room in this location." return 1 @@ -436,7 +454,8 @@ var/list/name_to_material var/build_path = /obj/structure/windoor_assembly var/sheets_needed = window_options[choice] if(choice == "Windoor") - build_dir = user.dir + if(is_reinforced()) + build_path = /obj/structure/windoor_assembly/secure else build_path = created_window @@ -466,7 +485,7 @@ var/list/name_to_material weight = 30 stack_origin_tech = "materials=2" composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "glass" = SHEET_MATERIAL_AMOUNT) - window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 5) + window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) created_window = /obj/structure/window/reinforced wire_product = null rod_product = null @@ -479,6 +498,7 @@ var/list/name_to_material integrity = 100 icon_colour = "#FC2BC5" stack_origin_tech = list(TECH_MATERIAL = 4) + window_options = list("One Direction" = 1, "Full Window" = 4) created_window = /obj/structure/window/phoronbasic wire_product = null rod_product = /obj/item/stack/material/glass/phoronrglass @@ -489,6 +509,7 @@ var/list/name_to_material stack_type = /obj/item/stack/material/glass/phoronrglass stack_origin_tech = list(TECH_MATERIAL = 5) composite_material = list() //todo + window_options = list("One Direction" = 1, "Full Window" = 4) created_window = /obj/structure/window/phoronreinforced hardness = 40 weight = 30 diff --git a/code/modules/mining/alloys.dm b/code/modules/mining/alloys.dm index 19d11fc9c02..ed1b88636ee 100644 --- a/code/modules/mining/alloys.dm +++ b/code/modules/mining/alloys.dm @@ -8,6 +8,17 @@ var/product var/metaltag +/datum/alloy/durasteel + metaltag = "durasteel" + requires = list( + "diamond" = 1, + "platinum" = 1, + "carbon" = 2, + "hematite" = 2 + ) + product_mod = 0.3 + product = /obj/item/stack/material/durasteel + /datum/alloy/plasteel metaltag = "plasteel" requires = list( @@ -32,4 +43,4 @@ "platinum" = 1, "sand" = 2 ) - product = /obj/item/stack/material/glass/phoronglass + product = /obj/item/stack/material/glass/phoronglass \ No newline at end of file diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 8e9155d044e..6d460dd8508 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -34,6 +34,19 @@ var/list/mining_overlay_cache = list() var/datum/artifact_find/artifact_find var/ignore_mapgen + var/ore_types = list( + "iron" = /obj/item/weapon/ore/iron, + "uranium" = /obj/item/weapon/ore/uranium, + "gold" = /obj/item/weapon/ore/gold, + "silver" = /obj/item/weapon/ore/silver, + "diamond" = /obj/item/weapon/ore/diamond, + "phoron" = /obj/item/weapon/ore/phoron, + "osmium" = /obj/item/weapon/ore/osmium, + "hydrogen" = /obj/item/weapon/ore/hydrogen, + "silicates" = /obj/item/weapon/ore/glass, + "carbonaceous rock" = /obj/item/weapon/ore/coal + ) + has_resources = 1 /turf/simulated/mineral/ignore_mapgen @@ -154,6 +167,16 @@ var/list/mining_overlay_cache = list() mined_ore = 2 //some of the stuff gets blown up GetDrilled() + if(severity <= 2) // Now to expose the ore lying under the sand. + spawn(1) // Otherwise most of the ore is lost to the explosion, which makes this rather moot. + var/losses = rand(0.5, 1) // Between 0% to 50% loss due to booms. + for(var/ore in resources) + var/amount_to_give = Ceiling(resources[ore] * losses) // Should result in at least one piece of ore. + for(var/i=1, i <= amount_to_give, i++) + var/oretype = ore_types[ore] + new oretype(src) + resources[ore] = 0 + /turf/simulated/mineral/bullet_act(var/obj/item/projectile/Proj) // Emitter blasts @@ -450,7 +473,7 @@ var/list/mining_overlay_cache = list() if(prob(50)) M.adjustBruteLoss(5) else - flick("flash",M.flash) + M.flash_eyes() if(prob(50)) M.Stun(5) M.apply_effect(25, IRRADIATE) diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index a69a66a2104..7fb5807ba17 100644 --- a/code/modules/mining/ore_datum.dm +++ b/code/modules/mining/ore_datum.dm @@ -61,6 +61,7 @@ var/global/list/ore_data = list() name = "sand" display_name = "sand" smelts_to = "glass" + alloy = 1 compresses_to = "sandstone" /ore/phoron diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 2119896c3f5..d4a967dc7b1 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -159,11 +159,7 @@ Works together with spawning an observer, noted above. if(!loc) return if(!client) return 0 - - if(client.images.len) - for(var/image/hud in client.images) - if(copytext(hud.icon_state,1,4) == "hud") - client.images.Remove(hud) + handle_regular_hud_updates() if(antagHUD) var/list/target_list = list() diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 4b6598cf1b3..9fe7f221e11 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -66,9 +66,6 @@ layer = MOB_LAYER - if(blind && client) - blind.layer = 0 - sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS see_in_dark = 8 see_invisible = SEE_INVISIBLE_LEVEL_TWO @@ -77,6 +74,7 @@ drop_l_hand() if(healths) + healths.overlays = null // This is specific to humans but the relevant code is here; shouldn't mess with other mobs. healths.icon_state = "health6" timeofdeath = world.time diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 121b999d21f..d608bb0988d 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -114,6 +114,11 @@ var/list/holder_mob_icon_cache = list() if(!holder_type || buckled || pinned.len) return + if(self_grab) + if(src.incapacitated()) return + else + if(grabber.incapacitated()) return + var/obj/item/weapon/holder/H = new holder_type(get_turf(src)) H.held_mob = src src.forceMove(H) diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index 3c50432025d..ec4278c967e 100644 --- a/code/modules/mob/living/bot/ed209bot.dm +++ b/code/modules/mob/living/bot/ed209bot.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/aibots.dmi' icon_state = "ed2090" density = 1 - health = 100 - maxHealth = 100 + health = 200 + maxHealth = 200 is_ranged = 1 preparing_arrest_sounds = new() @@ -76,7 +76,7 @@ desc = "Some sort of bizarre assembly." icon = 'icons/obj/aibots.dmi' icon_state = "ed209_frame" - item_state = "ed209_frame" + item_state = "buildpipe" created_name = "ED-209 Security Robot" var/lasercolor = "" @@ -101,10 +101,8 @@ user << "You add the robot leg to [src]." name = "legs/frame assembly" if(build_step == 1) - item_state = "ed209_leg" icon_state = "ed209_leg" else - item_state = "ed209_legs" icon_state = "ed209_legs" if(2) diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm index ea80efca7e1..0cd58d330af 100644 --- a/code/modules/mob/living/bot/secbot.dm +++ b/code/modules/mob/living/bot/secbot.dm @@ -2,8 +2,8 @@ name = "Securitron" desc = "A little security robot. He looks less than thrilled." icon_state = "secbot0" - maxHealth = 50 - health = 50 + maxHealth = 100 + health = 100 req_one_access = list(access_security, access_forensics_lockers) botcard_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels) patrol_speed = 2 @@ -85,6 +85,18 @@ declare_arrests = !declare_arrests attack_hand(usr) +/mob/living/bot/secbot/emag_act(var/remaining_uses, var/mob/user) + . = ..() + if(!emagged) + if(user) + user << "\The [src] buzzes and beeps." + emagged = 1 + patrol_speed = 3 + target_speed = 4 + return 1 + else + user << "\The [src] is already corrupt." + /mob/living/bot/secbot/attackby(var/obj/item/O, var/mob/user) var/curhealth = health ..() @@ -130,7 +142,7 @@ if(ishuman(target) && declare_arrests) var/area/location = get_area(src) broadcast_security_hud_message("[src] is [arrest_type ? "detaining" : "arresting"] a level [check_threat(target)] suspect [target] in [location].", src) - + // say("Engaging patrol mode.") /mob/living/bot/secbot/UnarmedAttack(var/mob/M, var/proximity) @@ -145,7 +157,7 @@ var/cuff = 1 if(istype(C, /mob/living/carbon/human)) var/mob/living/carbon/human/H = C - if(istype(H.back, /obj/item/weapon/rig) && istype(H.gloves,/obj/item/clothing/gloves/rig)) + if(istype(H.back, /obj/item/weapon/rig) && istype(H.gloves,/obj/item/clothing/gloves/gauntlets/rig)) cuff = 0 if(!C.lying || C.handcuffed || arrest_type) cuff = 0 @@ -238,6 +250,10 @@ desc = "Some sort of bizarre assembly." icon = 'icons/obj/aibots.dmi' icon_state = "helmet_signaler" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_hats.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_hats.dmi', + ) item_state = "helmet" var/build_step = 0 var/created_name = "Securitron" diff --git a/code/modules/mob/living/carbon/alien/alien_damage.dm b/code/modules/mob/living/carbon/alien/alien_damage.dm index 99c5e52f75d..f2d147641f1 100644 --- a/code/modules/mob/living/carbon/alien/alien_damage.dm +++ b/code/modules/mob/living/carbon/alien/alien_damage.dm @@ -1,7 +1,7 @@ /mob/living/carbon/alien/ex_act(severity) if(!blinded) - flick("flash", flash) + flash_eyes() var/b_loss = null var/f_loss = null diff --git a/code/modules/mob/living/carbon/alien/diona/progression.dm b/code/modules/mob/living/carbon/alien/diona/progression.dm index 588acea5ad8..de9bc72bda6 100644 --- a/code/modules/mob/living/carbon/alien/diona/progression.dm +++ b/code/modules/mob/living/carbon/alien/diona/progression.dm @@ -1,6 +1,6 @@ /mob/living/carbon/alien/diona/confirm_evolution() - if(!is_alien_whitelisted(src, "Diona") && config.usealienwhitelist) + if(!is_alien_whitelisted(src, all_species["Diona"])) src << alert("You are currently not whitelisted to play as a full diona.") return null diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 9352ada1c53..a7764d3d1dc 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -124,21 +124,16 @@ if (client) client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) - if ((blind && stat != 2)) + if ( stat != 2) if ((blinded)) - blind.layer = 18 + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) else - blind.layer = 0 - if (disabilities & NEARSIGHTED) - client.screen += global_hud.vimpaired - if (eye_blurry) - client.screen += global_hud.blurry - if (druggy) - client.screen += global_hud.druggy - - if (stat != 2) - if (machine) - if ( machine.check_eye(src) < 0) + clear_fullscreen("blind") + set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1) + set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry) + set_fullscreen(druggy, "high", /obj/screen/fullscreen/high) + if(machine) + if(machine.check_eye(src) < 0) reset_view(null) else if(client && !client.adminobs) diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 6e1d4bce9c2..11e3b1197ae 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -21,6 +21,9 @@ /obj/item/organ/internal/brain/mechassist() replace_self_with(/obj/item/organ/internal/mmi_holder) +/obj/item/organ/internal/brain/digitize() + replace_self_with(/obj/item/organ/internal/mmi_holder/robot) + /obj/item/organ/internal/brain/proc/replace_self_with(replace_path) var/mob/living/carbon/human/tmp_owner = owner qdel(src) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index 29ef1a24846..cb889b570f1 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -208,22 +208,15 @@ if (client) client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) - if ((blind && stat != 2)) - if ((blinded)) - blind.layer = 18 - else - blind.layer = 0 - - if (disabilities & NEARSIGHTED) - client.screen += global_hud.vimpaired - - if (eye_blurry) - client.screen += global_hud.blurry - - if (druggy) - client.screen += global_hud.druggy - if (stat != 2) + if ((blinded)) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + else + clear_fullscreen("blind") + set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1) + set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry) + set_fullscreen(druggy, "high", /obj/screen/fullscreen/high) + if (machine) if (!( machine.check_eye(src) )) reset_view(null) @@ -239,17 +232,4 @@ reset_view(null) else if(client && !client.adminobs) - reset_view(null) - -/*/mob/living/carbon/brain/emp_act(severity) - if(!(container && istype(container, /obj/item/device/mmi))) - return - else - switch(severity) - if(1) - emp_damage += rand(20,30) - if(2) - emp_damage += rand(10,20) - if(3) - emp_damage += rand(0,10) - ..()*/ + reset_view(null) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/breathe.dm b/code/modules/mob/living/carbon/breathe.dm index 476e1c11176..7f4dc972c4f 100644 --- a/code/modules/mob/living/carbon/breathe.dm +++ b/code/modules/mob/living/carbon/breathe.dm @@ -7,7 +7,7 @@ /mob/living/carbon/proc/breathe() //if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) return - if(!should_have_organ(O_LUNGS) || does_not_breathe) return + if(!should_have_organ(O_LUNGS)) return var/datum/gas_mixture/breath = null diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 6b9cbf02589..4eaf5aa8fef 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -194,7 +194,7 @@ status += "hurts when touched" if(org.status & ORGAN_DEAD) status += "is bruised and necrotic" - if(!org.is_usable()) + if(!org.is_usable() || org.is_dislocated()) status += "dangling uselessly" if(status.len) src.show_message("My [org.name] is [english_list(status)].",1) @@ -309,14 +309,19 @@ if(!item) return + var/throw_range = item.throw_range if (istype(item, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = item item = G.throw_held() //throw the person instead of the grab if(ismob(item)) + var/mob/M = item + + //limit throw range by relative mob size + throw_range = round(M.throw_range * min(src.mob_size/M.mob_size, 1)) + var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) if(start_T && end_T) - var/mob/M = item var/start_T_descriptor = "tile at [start_T.x], [start_T.y], [start_T.z] in area [get_area(start_T)]" var/end_T_descriptor = "tile at [end_T.x], [end_T.y], [end_T.z] in area [get_area(end_T)]" @@ -324,31 +329,28 @@ usr.attack_log += text("\[[time_stamp()]\] Has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]") msg_admin_attack("[usr.name] ([usr.ckey]) has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor] (JMP)") - if(!item) return //Grab processing has a chance of returning null - - - src.remove_from_mob(item) - item.loc = src.loc + src.drop_from_inventory(item) + if(!item || !isturf(item.loc)) + return //actually throw it! - if (item) - src.visible_message("\red [src] has thrown [item].") + src.visible_message("[src] has thrown [item].") - if(!src.lastarea) - src.lastarea = get_area(src.loc) - if((istype(src.loc, /turf/space)) || (src.lastarea.has_gravity == 0)) - src.inertia_dir = get_dir(target, src) - step(src, inertia_dir) + if(!src.lastarea) + src.lastarea = get_area(src.loc) + if((istype(src.loc, /turf/space)) || (src.lastarea.has_gravity == 0)) + src.inertia_dir = get_dir(target, src) + step(src, inertia_dir) /* - if(istype(src.loc, /turf/space) || (src.flags & NOGRAV)) //they're in space, move em one space in the opposite direction - src.inertia_dir = get_dir(target, src) - step(src, inertia_dir) + if(istype(src.loc, /turf/space) || (src.flags & NOGRAV)) //they're in space, move em one space in the opposite direction + src.inertia_dir = get_dir(target, src) + step(src, inertia_dir) */ - item.throw_at(target, item.throw_range, item.throw_speed, src) + item.throw_at(target, throw_range, item.throw_speed, src) /mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 4488f65388b..6a9952ef07c 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -613,7 +613,7 @@ wink, yawn, swish, sway/wag, fastsway/qwag, stopsway/swag"} set desc = "Sets a description which will be shown when someone examines you." set category = "IC" - pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"] [get_visible_gender() == NEUTER ? "are" : "is"]...", "Pose", null) as text) + pose = sanitize(input(usr, "This is [src]. [get_visible_gender() == MALE ? "He" : get_visible_gender() == FEMALE ? "She" : "They"]...", "Pose", null) as text) /mob/living/carbon/human/verb/set_flavor() set name = "Set Flavour Text" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 53d12e8b7de..89db40f75d6 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -401,7 +401,7 @@ if (pose) if( findtext(pose,".",lentext(pose)) == 0 && findtext(pose,"!",lentext(pose)) == 0 && findtext(pose,"?",lentext(pose)) == 0 ) pose = addtext(pose,".") //Makes sure all emotes end with a period. - msg += "\n[T.He] [T.is] [pose]" + msg += "\n[T.He] [pose]" user << msg diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 99a4c40ebd7..df1bfc46675 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -27,16 +27,16 @@ if(mind) mind.name = real_name - hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100") - hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudhealthy") - hud_list[LIFE_HUD] = image('icons/mob/hud.dmi', src, "hudhealthy") - hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudunknown") - hud_list[WANTED_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPLOYAL_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPCHEM_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[STATUS_HUD_OOC] = image('icons/mob/hud.dmi', src, "hudhealthy") + hud_list[HEALTH_HUD] = new /image/hud_overlay('icons/mob/hud_med.dmi', src, "100") + hud_list[STATUS_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealthy") + hud_list[LIFE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealthy") + hud_list[ID_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudunknown") + hud_list[WANTED_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPLOYAL_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPCHEM_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPTRACK_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[SPECIALROLE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[STATUS_HUD_OOC] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealthy") human_mob_list |= src ..() @@ -84,7 +84,7 @@ /mob/living/carbon/human/ex_act(severity) if(!blinded) - flick("flash", flash) + flash_eyes() var/shielded = 0 var/b_loss = null @@ -341,6 +341,8 @@ var/obj/item/organ/external/affected_organ = get_organ(check_zone(def_zone)) var/siemens_coeff = base_siemens_coeff * get_siemens_coefficient_organ(affected_organ) + if(fire_stacks < 0) // Water makes you more conductive. + siemens_coeff *= 1.5 return ..(shock_damage, source, siemens_coeff, def_zone) @@ -774,13 +776,6 @@ b_eyes = hex2num(copytext(new_eyes, 6, 8)) update_eyes() - var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation", "[35-s_tone]") as text - - if (!new_tone) - new_tone = 35 - s_tone = max(min(round(text2num(new_tone)), 220), 1) - s_tone = -s_tone + 35 - // hair var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair var/list/hairs = list() @@ -1030,9 +1025,8 @@ src << msg organ.take_damage(rand(1,3), 0, 0) - if(!(organ.robotic >= ORGAN_ROBOT) && !(should_have_organ(O_HEART))) //There is no blood in protheses. + if(!(organ.robotic >= ORGAN_ROBOT) && (should_have_organ(O_HEART))) //There is no blood in protheses. organ.status |= ORGAN_BLEEDING - src.adjustToxLoss(rand(1,3)) /mob/living/carbon/human/verb/check_pulse() set category = "Object" @@ -1331,15 +1325,13 @@ var/list/limbs = list() for(var/limb in organs_by_name) var/obj/item/organ/external/current_limb = organs_by_name[limb] - if(current_limb && current_limb.dislocated == 2) - limbs |= limb - var/choice = input(usr,"Which joint do you wish to relocate?") as null|anything in limbs + if(current_limb && current_limb.dislocated > 0 && !current_limb.is_parent_dislocated()) //if the parent is also dislocated you will have to relocate that first + limbs |= current_limb + var/obj/item/organ/external/current_limb = input(usr,"Which joint do you wish to relocate?") as null|anything in limbs - if(!choice) + if(!current_limb) return - var/obj/item/organ/external/current_limb = organs_by_name[choice] - if(self) src << "You brace yourself to relocate your [current_limb.joint]..." else @@ -1347,7 +1339,7 @@ if(!do_after(U, 30)) return - if(!choice || !current_limb || !S || !U) + if(!current_limb || !S || !U) return if(self) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 7cc3156f189..62d469cb0e7 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -9,7 +9,6 @@ return null /mob/living/carbon/human/attack_hand(mob/living/carbon/M as mob) - var/mob/living/carbon/human/H = M if(istype(H)) var/obj/item/organ/external/temp = H.organs_by_name["r_hand"] @@ -18,7 +17,7 @@ if(!temp || !temp.is_usable()) H << "\red You can't use your hand." return - break_cloak() + H.break_cloak() ..() // Should this all be in Touch()? @@ -326,7 +325,7 @@ if(!target_zone) return 0 var/obj/item/organ/external/organ = get_organ(check_zone(target_zone)) - if(!organ || organ.is_dislocated() || organ.dislocated == -1) + if(!organ || organ.dislocated > 0 || organ.dislocated == -1) //don't use is_dislocated() here, that checks parent return 0 user.visible_message("[user] begins to dislocate [src]'s [organ.joint]!") diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 614bbe1de8c..1d716b519df 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -18,12 +18,11 @@ emp_act //Shields var/shield_check = check_shields(P.damage, P, null, def_zone, "the [P.name]") - if(shield_check) - if(shield_check < 0) - return shield_check - else - P.on_hit(src, 2, def_zone) - return 2 + if(shield_check) // If the block roll succeeded, this is true. + if(shield_check < 0) // The shield did something weird and the bullet needs to keep doing things (e.g. it was reflected). + return shield_check // Likely equal to PROJECTILE_FORCE_MISS or PROJECTILE_CONTINUE. + else // Otherwise we blocked normally and stopped all the damage. + return 0 //Shrapnel if(P.can_embed()) @@ -40,6 +39,8 @@ emp_act /mob/living/carbon/human/stun_effect_act(var/stun_amount, var/agony_amount, var/def_zone) var/obj/item/organ/external/affected = get_organ(check_zone(def_zone)) var/siemens_coeff = get_siemens_coefficient_organ(affected) + if(fire_stacks < 0) // Water makes you more conductive. + siemens_coeff *= 1.5 stun_amount *= siemens_coeff agony_amount *= siemens_coeff @@ -152,7 +153,16 @@ emp_act if(user == src) // Attacking yourself can't miss return target_zone - var/hit_zone = get_zone_with_miss_chance(target_zone, src) + // Certain statuses make it harder to score a hit. These are the same as gun accuracy, however melee doesn't use multiples of 15. + var/accuracy_penalty = 0 + if(user.eye_blind) + accuracy_penalty += 75 + if(user.eye_blurry) + accuracy_penalty += 30 + if(user.confused) + accuracy_penalty += 45 + + var/hit_zone = get_zone_with_miss_chance(target_zone, src, accuracy_penalty) if(!hit_zone) visible_message("\The [user] misses [src] with \the [I]!") @@ -187,11 +197,13 @@ emp_act // Handle striking to cripple. if(user.a_intent == I_DISARM) - effective_force /= 2 - if(..(I, user, effective_force, blocked, hit_zone)) - attack_joint(affecting, I, blocked) - else + effective_force *= 0.66 //reduced effective force... + if(!..(I, user, effective_force, blocked, hit_zone)) return 0 + + //set the dislocate mult less than the effective force mult so that + //dislocating limbs on disarm is a bit easier than breaking limbs on harm + attack_joint(affecting, I, effective_force, 0.5, blocked) //...but can dislocate joints else if(!..()) return 0 @@ -242,10 +254,16 @@ emp_act return 1 -/mob/living/carbon/human/proc/attack_joint(var/obj/item/organ/external/organ, var/obj/item/W, var/blocked) +/mob/living/carbon/human/proc/attack_joint(var/obj/item/organ/external/organ, var/obj/item/W, var/effective_force, var/dislocate_mult, var/blocked) if(!organ || (organ.dislocated == 2) || (organ.dislocated == -1) || blocked >= 100) return 0 - if(prob(W.force * (100 - blocked)/100)) + + if(W.damtype != BRUTE) + return 0 + + //want the dislocation chance to be such that the limb is expected to dislocate after dealing a fraction of the damage needed to break the limb + var/dislocate_chance = effective_force/(dislocate_mult * organ.min_broken_damage * config.organ_health_multiplier)*100 + if(prob(dislocate_chance * (100 - blocked)/100)) visible_message("[src]'s [organ.joint] [pick("gives way","caves in","crumbles","collapses")]!") organ.dislocate(1) return 1 diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 13f4f2f25a2..99bbe8ffcf3 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -43,6 +43,8 @@ var/citizenship = "" var/personal_faction = "" var/religion = "" + var/antag_faction = "" + var/antag_vis = "" //Equipment slots var/obj/item/wear_suit = null diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 77fe9868579..ae9dd9a5061 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -10,8 +10,11 @@ if(embedded_flag) handle_embedded_objects() //Moving with objects stuck in you can cause bad times. + if(force_max_speed) + return -3 // Returning -1 will actually result in a slowdown for Teshari. + if(CE_SPEEDBOOST in chem_effects) - return -1 + return -3 var/health_deficiency = (maxHealth - health) if(health_deficiency >= 40) tally += (health_deficiency / 25) @@ -32,6 +35,11 @@ for(var/obj/item/I in list(r_hand, l_hand) ) tally += max(I.slowdown, 0) + // Dragging heavy objects will also slow you down, similar to above. + if(pulling && istype(pulling, /obj/item)) + var/obj/item/pulled = pulling + tally += max(pulled.slowdown, 0) + if(istype(buckled, /obj/structure/bed/chair/wheelchair)) for(var/organ_name in list(BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM)) var/obj/item/organ/external/E = get_organ(organ_name) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index f65b9926c8e..8db85ef5fec 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -68,7 +68,7 @@ /mob/living/carbon/human/proc/handle_stance() // Don't need to process any of this if they aren't standing anyways // unless their stance is damaged, and we want to check if they should stay down - if (!stance_damage && (lying || resting) && (life_tick % 4) == 0) + if (!stance_damage && (lying || resting) && (life_tick % 4) != 0) return stance_damage = 0 @@ -80,7 +80,7 @@ var/limb_pain for(var/limb_tag in list("l_leg","r_leg","l_foot","r_foot")) var/obj/item/organ/external/E = organs_by_name[limb_tag] - if(!E || (E.status & (ORGAN_MUTATED|ORGAN_DEAD)) || E.is_stump()) //should just be !E.is_usable() here but dislocation screws that up. + if(!E || !E.is_usable()) stance_damage += 2 // let it fail even if just foot&leg else if (E.is_malfunctioning()) //malfunctioning only happens intermittently so treat it as a missing limb when it procs @@ -93,7 +93,7 @@ spark_system.start() spawn(10) qdel(spark_system) - else if (E.is_broken() || !E.is_usable()) + else if (E.is_broken()) stance_damage += 1 else if (E.is_dislocated()) stance_damage += 0.5 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 13dbd179c03..39d190ddcd2 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -4,9 +4,9 @@ #define HUMAN_MAX_OXYLOSS 1 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it. #define HUMAN_CRIT_MAX_OXYLOSS ( 2.0 / 6) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 50HP to get through, so (1/6)*last_tick_duration per second. Breaths however only happen every 4 ticks. last_tick_duration = ~2.0 on average -#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point -#define HEAT_DAMAGE_LEVEL_2 4 //Amount of damage applied when your body temperature passes the 400K point -#define HEAT_DAMAGE_LEVEL_3 8 //Amount of damage applied when your body temperature passes the 1000K point +#define HEAT_DAMAGE_LEVEL_1 5 //Amount of damage applied when your body temperature just passes the 360.15k safety point +#define HEAT_DAMAGE_LEVEL_2 10 //Amount of damage applied when your body temperature passes the 400K point +#define HEAT_DAMAGE_LEVEL_3 20 //Amount of damage applied when your body temperature passes the 1000K point #define COLD_DAMAGE_LEVEL_1 0.5 //Amount of damage applied when your body temperature just passes the 260.15k safety point #define COLD_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when your body temperature passes the 200K point @@ -32,7 +32,6 @@ var/temperature_alert = 0 var/in_stasis = 0 var/heartbeat = 0 - var/global/list/overlays_cache = null /mob/living/carbon/human/Life() set invisibility = 0 @@ -328,6 +327,11 @@ if(status_flags & GODMODE) return + if(does_not_breathe) + failed_last_breath = 0 + adjustOxyLoss(-5) + return + if(!breath || (breath.total_moles == 0) || suiciding) failed_last_breath = 1 if(suiciding) @@ -620,11 +624,11 @@ if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) var/burn_dam = 0 switch(bodytemperature) - if(-INFINITY to species.cold_level_3) + if(species.cold_level_1 to species.cold_level_2) burn_dam = COLD_DAMAGE_LEVEL_1 - if(species.cold_level_3 to species.cold_level_2) + if(species.cold_level_2 to species.cold_level_3) burn_dam = COLD_DAMAGE_LEVEL_2 - if(species.cold_level_2 to species.cold_level_1) + if(species.cold_level_3 to -INFINITY) burn_dam = COLD_DAMAGE_LEVEL_3 take_overall_damage(burn=burn_dam, used_weapon = "Low Body Temperature") fire_alert = max(fire_alert, 1) @@ -848,7 +852,10 @@ if(!isSynthetic() && (species.flags & IS_PLANT) && (!light_organ || light_organ.is_broken())) if(nutrition < 200) take_overall_damage(2,0) - traumatic_shock++ + + //traumatic_shock is updated every tick, incrementing that is pointless - shock_stage is the counter. + //Not that it matters much for diona, who have NO_PAIN. + shock_stage++ // TODO: stomach and bloodstream organ. if(!isSynthetic()) @@ -1012,33 +1019,6 @@ return 1 /mob/living/carbon/human/handle_regular_hud_updates() - if(!overlays_cache) - overlays_cache = list() - overlays_cache.len = 23 - overlays_cache[1] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage1") - overlays_cache[2] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage2") - overlays_cache[3] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage3") - overlays_cache[4] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage4") - overlays_cache[5] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage5") - overlays_cache[6] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage6") - overlays_cache[7] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage7") - overlays_cache[8] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage8") - overlays_cache[9] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage9") - overlays_cache[10] = image('icons/mob/screen1_full.dmi', "icon_state" = "passage10") - overlays_cache[11] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay1") - overlays_cache[12] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay2") - overlays_cache[13] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay3") - overlays_cache[14] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay4") - overlays_cache[15] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay5") - overlays_cache[16] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay6") - overlays_cache[17] = image('icons/mob/screen1_full.dmi', "icon_state" = "oxydamageoverlay7") - overlays_cache[18] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay1") - overlays_cache[19] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay2") - overlays_cache[20] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay3") - overlays_cache[21] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay4") - overlays_cache[22] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay5") - overlays_cache[23] = image('icons/mob/screen1_full.dmi', "icon_state" = "brutedamageoverlay6") - if(hud_updateflag) // update our mob's hud overlays, AKA what others see flaoting above our head handle_hud_list() @@ -1047,81 +1027,62 @@ if(!client) return 0 - for(var/image/hud in client.images) - if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe - client.images.Remove(hud) + ..() - client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask, global_hud.nvg, global_hud.thermal, global_hud.meson, global_hud.science) + client.screen.Remove(global_hud.blurry, global_hud.druggy, global_hud.vimpaired, global_hud.darkMask, global_hud.nvg, global_hud.thermal, global_hud.meson, global_hud.science, global_hud.whitense) - if(damageoverlay.overlays) - damageoverlay.overlays = list() + if(istype(client.eye,/obj/machinery/camera)) + var/obj/machinery/camera/cam = client.eye + client.screen |= cam.client_huds - if(stat == UNCONSCIOUS) - //Critical damage passage overlay - if(health <= 0) - var/image/I + if(stat != DEAD) + if(stat == UNCONSCIOUS && health <= 0) + //Critical damage passage overlay + var/severity = 0 switch(health) - if(-20 to -10) - I = overlays_cache[1] - if(-30 to -20) - I = overlays_cache[2] - if(-40 to -30) - I = overlays_cache[3] - if(-50 to -40) - I = overlays_cache[4] - if(-60 to -50) - I = overlays_cache[5] - if(-70 to -60) - I = overlays_cache[6] - if(-80 to -70) - I = overlays_cache[7] - if(-90 to -80) - I = overlays_cache[8] - if(-95 to -90) - I = overlays_cache[9] - if(-INFINITY to -95) - I = overlays_cache[10] - damageoverlay.overlays += I - else - //Oxygen damage overlay - if(oxyloss) - var/image/I - switch(oxyloss) - if(10 to 20) - I = overlays_cache[11] - if(20 to 25) - I = overlays_cache[12] - if(25 to 30) - I = overlays_cache[13] - if(30 to 35) - I = overlays_cache[14] - if(35 to 40) - I = overlays_cache[15] - if(40 to 45) - I = overlays_cache[16] - if(45 to INFINITY) - I = overlays_cache[17] - damageoverlay.overlays += I + if(-20 to -10) severity = 1 + if(-30 to -20) severity = 2 + if(-40 to -30) severity = 3 + if(-50 to -40) severity = 4 + if(-60 to -50) severity = 5 + if(-70 to -60) severity = 6 + if(-80 to -70) severity = 7 + if(-90 to -80) severity = 8 + if(-95 to -90) severity = 9 + if(-INFINITY to -95) severity = 10 + overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity) + else + clear_fullscreen("crit") + //Oxygen damage overlay + if(oxyloss) + var/severity = 0 + switch(oxyloss) + if(10 to 20) severity = 1 + if(20 to 25) severity = 2 + if(25 to 30) severity = 3 + if(30 to 35) severity = 4 + if(35 to 40) severity = 5 + if(40 to 45) severity = 6 + if(45 to INFINITY) severity = 7 + overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity) + else + clear_fullscreen("oxy") //Fire and Brute damage overlay (BSSR) var/hurtdamage = src.getBruteLoss() + src.getFireLoss() + damageoverlaytemp damageoverlaytemp = 0 // We do this so we can detect if someone hits us or not. if(hurtdamage) - var/image/I + var/severity = 0 switch(hurtdamage) - if(10 to 25) - I = overlays_cache[18] - if(25 to 40) - I = overlays_cache[19] - if(40 to 55) - I = overlays_cache[20] - if(55 to 70) - I = overlays_cache[21] - if(70 to 85) - I = overlays_cache[22] - if(85 to INFINITY) - I = overlays_cache[23] - damageoverlay.overlays += I + if(10 to 25) severity = 1 + if(25 to 40) severity = 2 + if(40 to 55) severity = 3 + if(55 to 70) severity = 4 + if(70 to 85) severity = 5 + if(85 to INFINITY) severity = 6 + overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) + else + clear_fullscreen("brute") if( stat == DEAD ) sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS|SEE_SELF @@ -1181,19 +1142,37 @@ if (analgesic > 100) healths.icon_state = "health_numb" else - switch(hal_screwyhud) - if(1) healths.icon_state = "health6" - if(2) healths.icon_state = "health7" - else - //switch(health - halloss) - switch(100 - (!can_feel_pain() ? 0 : traumatic_shock)) - if(100 to INFINITY) healths.icon_state = "health0" - if(80 to 100) healths.icon_state = "health1" - if(60 to 80) healths.icon_state = "health2" - if(40 to 60) healths.icon_state = "health3" - if(20 to 40) healths.icon_state = "health4" - if(0 to 20) healths.icon_state = "health5" - else healths.icon_state = "health6" + // Generate a by-limb health display. + healths.icon_state = "blank" + healths.overlays = null + + var/no_damage = 1 + var/trauma_val = 0 // Used in calculating softcrit/hardcrit indicators. + if(!(species.flags & NO_PAIN)) + trauma_val = max(traumatic_shock,halloss)/species.total_health + var/limb_trauma_val = trauma_val*0.3 + // Collect and apply the images all at once to avoid appearance churn. + var/list/health_images = list() + for(var/obj/item/organ/external/E in organs) + if(no_damage && (E.brute_dam || E.burn_dam)) + no_damage = 0 + health_images += E.get_damage_hud_image(limb_trauma_val) + + // Apply a fire overlay if we're burning. + if(on_fire) + health_images += image('icons/mob/screen1_health.dmi',"burning") + + // Show a general pain/crit indicator if needed. + if(trauma_val) + if(!(species.flags & NO_PAIN)) + if(trauma_val > 0.7) + health_images += image('icons/mob/screen1_health.dmi',"softcrit") + if(trauma_val >= 1) + health_images += image('icons/mob/screen1_health.dmi',"hardcrit") + else if(no_damage) + health_images += image('icons/mob/screen1_health.dmi',"fullhealth") + + healths.overlays += health_images if(nutrition_icon) switch(nutrition) @@ -1210,10 +1189,10 @@ // if(resting || lying || sleeping) rest.icon_state = "rest1" // else rest.icon_state = "rest0" if(toxin) - if(hal_screwyhud == 4 || phoron_alert) toxin.icon_state = "tox1" + if(hal_screwyhud == 4 || (phoron_alert && !does_not_breathe)) toxin.icon_state = "tox1" else toxin.icon_state = "tox0" if(oxygen) - if(hal_screwyhud == 3 || oxygen_alert) oxygen.icon_state = "oxy1" + if(hal_screwyhud == 3 || (oxygen_alert && !does_not_breathe)) oxygen.icon_state = "oxy1" else oxygen.icon_state = "oxy0" if(fire) if(fire_alert) fire.icon_state = "fire[fire_alert]" //fire_alert is either 0 if no alert, 1 for cold and 2 for heat. @@ -1265,20 +1244,20 @@ bodytemp.icon_state = "temp-1" else bodytemp.icon_state = "temp0" - if(blind) - if(blinded) blind.layer = 18 - else blind.layer = 0 + + if(blinded) overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + else clear_fullscreens() if(disabilities & NEARSIGHTED) //this looks meh but saves a lot of memory by not requiring to add var/prescription if(glasses) //to every /obj/item var/obj/item/clothing/glasses/G = glasses if(!G.prescription) - client.screen += global_hud.vimpaired + set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1) else - client.screen += global_hud.vimpaired + set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1) - if(eye_blurry) client.screen += global_hud.blurry - if(druggy) client.screen += global_hud.druggy + set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry) + set_fullscreen(druggy, "high", /obj/screen/fullscreen/high) if(config.welder_vision) var/found_welder @@ -1350,7 +1329,7 @@ // Puke if toxloss is too high if(!stat) - if (getToxLoss() >= 45 && nutrition > 20) + if (getToxLoss() >= 45) spawn vomit() //0.1% chance of playing a scary sound to someone who's in complete darkness @@ -1538,10 +1517,9 @@ if (BITTEST(hud_updateflag, HEALTH_HUD)) var/image/holder = hud_list[HEALTH_HUD] if(stat == DEAD) - holder.icon_state = "hudhealth-100" // X_X + holder.icon_state = "-100" // X_X else - var/percentage_health = RoundHealth((health-config.health_threshold_crit)/(maxHealth-config.health_threshold_crit)*100) - holder.icon_state = "hud[percentage_health]" + holder.icon_state = RoundHealth((health-config.health_threshold_crit)/(maxHealth-config.health_threshold_crit)*100) hud_list[HEALTH_HUD] = holder if (BITTEST(hud_updateflag, LIFE_HUD)) @@ -1680,4 +1658,4 @@ ..() #undef HUMAN_MAX_OXYLOSS -#undef HUMAN_CRIT_MAX_OXYLOSS +#undef HUMAN_CRIT_MAX_OXYLOSS \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 25a8149e482..5a8fcba715a 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -108,6 +108,7 @@ // HUD data vars. var/datum/hud_data/hud var/hud_type + var/health_hud_intensity = 1 // This modifies how intensely the health hud is colored. // Body/form vars. var/list/inherent_verbs // Species-specific verbs. @@ -190,6 +191,7 @@ /datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs. + H.mob_size = mob_size for(var/obj/item/organ/organ in H.contents) if((organ in H.organs) || (organ in H.internal_organs)) qdel(organ) @@ -249,7 +251,6 @@ H.mob_swap_flags = swap_flags H.mob_push_flags = push_flags H.pass_flags = pass_flags - H.mob_size = mob_size /datum/species/proc/handle_death(var/mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns). return diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm index 6074934cec2..738284dd384 100644 --- a/code/modules/mob/living/carbon/human/species/station/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm @@ -14,6 +14,7 @@ mob_size = MOB_SMALL has_fine_manipulation = 0 show_ssd = null + health_hud_intensity = 2 gibbed_anim = "gibbed-m" dusted_anim = "dust-m" diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 2ada0dd7c71..5eae3da61e0 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -23,6 +23,7 @@ var/datum/species/shapeshifter/promethean/prometheans flags = NO_SCAN | NO_SLIP | NO_MINOR_CUT appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS spawn_flags = SPECIES_IS_RESTRICTED + health_hud_intensity = 2 breath_type = null poison_type = null diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index 27541c27733..93dfcb6244d 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -11,6 +11,7 @@ name_language = "Schechi" min_age = 12 max_age = 45 + health_hud_intensity = 3 blood_color = "#D514F7" flesh_color = "#5F7BB0" @@ -56,7 +57,7 @@ cold_discomfort_level = 180 has_limbs = list( - BP_CHEST = list("path" = /obj/item/organ/external/chest), + BP_TORSO = list("path" = /obj/item/organ/external/chest), BP_GROIN = list("path" = /obj/item/organ/external/groin), BP_HEAD = list("path" = /obj/item/organ/external/head/seromi), BP_L_ARM = list("path" = /obj/item/organ/external/arm), @@ -83,7 +84,7 @@ /datum/unarmed_attack/claws, /datum/unarmed_attack/stomp/weak ) - +/* var/shock_cap = 30 var/hallucination_cap = 25 @@ -110,7 +111,7 @@ H.shock_stage += 1 if(H.shock_stage >= shock_cap && H.hallucination < hallucination_cap) H.hallucination += 2.5 - +*/ /datum/species/teshari/get_vision_flags(var/mob/living/carbon/human/H) if(!(H.sdisabilities & DEAF) && !H.ear_deaf) return SEE_SELF|SEE_MOBS diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index a903433fdad..ebbacc747eb 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -13,6 +13,7 @@ name_language = null // Use the first-name last-name generator rather than a language scrambler min_age = 17 max_age = 110 + health_hud_intensity = 1.5 spawn_flags = SPECIES_CAN_JOIN appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR @@ -36,6 +37,7 @@ num_alternate_languages = 2 secondary_langs = list("Sinta'unathi") name_language = "Sinta'unathi" + health_hud_intensity = 2.5 min_age = 18 max_age = 60 @@ -96,15 +98,16 @@ num_alternate_languages = 2 secondary_langs = list("Siik'tajr") name_language = "Siik'tajr" + health_hud_intensity = 2.5 min_age = 17 max_age = 80 - blurb = "The Tajaran race is a species of feline-like bipeds hailing from the planet of Ahdomai in the \ - S'randarr system. They have been brought up into the space age by the Humans and Skrell, and have been \ - influenced heavily by their long history of Slavemaster rule. They have a structured, clan-influenced way \ - of family and politics. They prefer colder environments, and speak a variety of languages, mostly Siik'Maas, \ - using unique inflections their mouths form." + blurb = "The Tajaran are a mammalian species resembling roughly felines, hailing from Meralar in the Rarkajar system. \ + While reaching to the stars independently from outside influences, the humans engaged them in peaceful trade contact \ + and have accelerated the fledgling culture into the interstellar age. Their history is full of war and highly fractious \ + governments, something that permeates even to today's times. They prefer colder, tundra-like climates, much like their \ + home worlds and speak a variety of languages, especially Siik and Akhani." cold_level_1 = 200 //Default 260 cold_level_2 = 140 //Default 200 @@ -151,6 +154,7 @@ num_alternate_languages = 2 secondary_langs = list("Skrellian", "Schechi") name_language = "Skrellian" + health_hud_intensity = 2 min_age = 19 max_age = 80 @@ -193,6 +197,7 @@ show_ssd = "completely quiescent" num_alternate_languages = 1 name_language = "Rootspeak" + health_hud_intensity = 2.5 min_age = 1 max_age = 300 diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm index 8b6f7227187..ebb16683a84 100644 --- a/code/modules/mob/living/carbon/resist.dm +++ b/code/modules/mob/living/carbon/resist.dm @@ -18,9 +18,6 @@ ExtinguishMob() return TRUE - if(..()) - return TRUE - if(handcuffed) spawn() escape_handcuffs() else if(legcuffed) @@ -50,7 +47,7 @@ displaytime = breakouttime / 600 //Minutes var/mob/living/carbon/human/H = src - if(istype(H) && H.gloves && istype(H.gloves,/obj/item/clothing/gloves/rig)) + if(istype(H) && H.gloves && istype(H.gloves,/obj/item/clothing/gloves/gauntlets/rig)) breakouttime /= 2 displaytime /= 2 @@ -59,8 +56,8 @@ "You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)" ) - if(do_after(src, breakouttime, incapacitation_flags = INCAPACITATION_DEFAULT & ~INCAPACITATION_RESTRAINED)) - if(!handcuffed || buckled) + if(do_after(src, breakouttime, incapacitation_flags = INCAPACITATION_DISABLED & INCAPACITATION_KNOCKDOWN)) + if(!handcuffed) return visible_message( "\The [src] manages to remove \the [handcuffed]!", diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm index 92eccc66df8..370d3f89d24 100644 --- a/code/modules/mob/living/carbon/shock.dm +++ b/code/modules/mob/living/carbon/shock.dm @@ -23,8 +23,10 @@ if(istype(src,/mob/living/carbon/human)) var/mob/living/carbon/human/M = src for(var/obj/item/organ/external/organ in M.organs) - if(organ && (organ.is_broken() || organ.open)) + if(organ.is_broken() || organ.open) src.traumatic_shock += 30 + else if(organ.is_dislocated()) + src.traumatic_shock += 15 if(src.traumatic_shock < 0) src.traumatic_shock = 0 diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm new file mode 100644 index 00000000000..d6c2bc0405f --- /dev/null +++ b/code/modules/mob/living/death.dm @@ -0,0 +1,3 @@ +/mob/living/death() + clear_fullscreens() + . = ..() \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9101092edaf..ba5b8fd24cf 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -454,6 +454,7 @@ default behaviour is: BITSET(hud_updateflag, LIFE_HUD) failed_last_breath = 0 //So mobs that died of oxyloss don't revive and have perpetual out of breath. + reload_fullscreen() return @@ -622,26 +623,9 @@ default behaviour is: /mob/living/proc/resist_grab() var/resisting = 0 - for(var/obj/O in requests) - requests.Remove(O) - qdel(O) - resisting++ for(var/obj/item/weapon/grab/G in grabbed_by) resisting++ - switch(G.state) - if(GRAB_PASSIVE) - qdel(G) - if(GRAB_AGGRESSIVE) - //Not standing up makes it much harder to break, so it is easier to cuff someone who is down without forcing them into unconsciousness. - //Otherwise, it's the same chance of breaking the grab as disarm. - if(incapacitated(INCAPACITATION_KNOCKDOWN)? prob(15) : prob(60)) - visible_message("[src] has broken free of [G.assailant]'s grip!") - qdel(G) - if(GRAB_NECK) - //If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun. - if (((world.time - G.assailant.l_move_time < 30 || !stunned) && prob(15)) || prob(3)) - visible_message("[src] has broken free of [G.assailant]'s headlock!") - qdel(G) + G.handle_resist() if(resisting) visible_message("[src] resists!") @@ -660,6 +644,15 @@ default behaviour is: return 0 return ..() +//called when the mob receives a bright flash +/mob/living/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash) + if(override_blindness_check || !(disabilities & BLIND)) + overlay_fullscreen("flash", type) + spawn(25) + if(src) + clear_fullscreen("flash", 25) + return 1 + /mob/living/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null, var/ignore_items = 0) // -- TLE -- Merged by Carn if(stat) src << "You must be conscious to do this!" @@ -667,7 +660,6 @@ default behaviour is: if(lying) src << "You can't vent crawl while you're stunned!" return - var/special_fail_msg = cannot_use_vents() if(special_fail_msg) src << "[special_fail_msg]" @@ -822,38 +814,35 @@ default behaviour is: return if(!lastpuke) - + lastpuke = 1 if (nutrition <= 100) src << "You gag as you want to throw up, but there's nothing in your stomach!" src.Weaken(10) - src.adjustToxLoss(3) - return - - lastpuke = 1 - src << "You feel nauseous..." - - if(!skip_wait) - sleep(150) //15 seconds until second warning - src << "You feel like you are about to throw up!" - sleep(100) //and you have 10 more for mad dash to the bucket - - Stun(5) - src.visible_message("[src] throws up!","You throw up!") - playsound(loc, 'sound/effects/splat.ogg', 50, 1) - - var/turf/simulated/T = get_turf(src) - if(istype(T)) - if(blood_vomit) - T.add_blood_floor(src) - else - T.add_vomit_floor(src, 1) - - if(blood_vomit) - if(getBruteLoss() < 50) - adjustBruteLoss(3) else - nutrition -= 40 - adjustToxLoss(-3) + src << "You feel nauseous..." + + if(!skip_wait) + sleep(150) //15 seconds until second warning + src << "You feel like you are about to throw up!" + sleep(100) //and you have 10 more for mad dash to the bucket + + Stun(5) + src.visible_message("[src] throws up!","You throw up!") + playsound(loc, 'sound/effects/splat.ogg', 50, 1) + + var/turf/simulated/T = get_turf(src) + if(istype(T)) + if(blood_vomit) + T.add_blood_floor(src) + else + T.add_vomit_floor(src, 1) + + if(blood_vomit) + if(getBruteLoss() < 50) + adjustBruteLoss(3) + else + nutrition -= 40 + adjustToxLoss(-3) sleep(350) lastpuke = 0 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 9c374685546..76be73da6d1 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -162,7 +162,7 @@ //returns 0 if the effects failed to apply for some reason, 1 otherwise. /mob/living/proc/standard_weapon_hit_effects(obj/item/I, mob/living/user, var/effective_force, var/blocked, var/hit_zone) - if(!effective_force || blocked >= 100) + if(!effective_force || blocked >= 100) return 0 //Hulk modifier @@ -300,6 +300,9 @@ if(fire_stacks < 0) fire_stacks = min(0, ++fire_stacks) //If we've doused ourselves in water to avoid fire, dry off slowly + if(fire_stacks > 0) + fire_stacks = max(0, (fire_stacks-0.1)) //Should slowly burn out + if(!on_fire) return 1 else if(fire_stacks <= 0) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index c547211ecf4..e6b7f2979df 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -44,3 +44,6 @@ var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks. var/lastpuke = 0 + + var/evasion = 0 // Makes attacks harder to land. Each number equals 15% more likely to miss. Negative numbers increase hit chance. + var/force_max_speed = 0 // If 1, the mob runs extremely fast and cannot be slowed. diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 5a5f9f3ec47..b9bf50a51c4 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -173,15 +173,15 @@ var/list/ai_verbs_hidden = list( // For why this exists, refer to https://xkcd.c spawn(5) new /obj/machinery/ai_powersupply(src) - hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[LIFE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[WANTED_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPLOYAL_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPCHEM_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[HEALTH_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[STATUS_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[LIFE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[ID_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[WANTED_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPLOYAL_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPCHEM_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPTRACK_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[SPECIALROLE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") ai_list += src ..() @@ -565,7 +565,21 @@ var/list/ai_verbs_hidden = list( // For why this exists, refer to https://xkcd.c var/icon_list[] = list( "default", "floating face", - "carp" + "carp", + "ian", + "runtime", + "poly", + "pun pun", + "male human", + "female human", + "male unathi", + "female unathi", + "male tajara", + "female tajara", + "male tesharii", + "female tesharii", + "male skrell", + "female skrell" ) input = input("Please select a hologram:") as null|anything in icon_list if(input) @@ -577,6 +591,35 @@ var/list/ai_verbs_hidden = list( // For why this exists, refer to https://xkcd.c holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo2")) if("carp") holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo4")) + if("ian") + holo_icon = getHologramIcon(icon('icons/mob/animal.dmi',"corgi")) + if("runtime") + holo_icon = getHologramIcon(icon('icons/mob/animal.dmi',"cat")) + if("poly") + holo_icon = getHologramIcon(icon('icons/mob/animal.dmi',"parrot_fly")) + if("pun pun") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"punpun")) + if("male human") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holohumm")) + if("female human") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holohumf")) + if("male unathi") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holounam")) + if("female unathi") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holounaf")) + if("male tajara") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holotajm")) + if("female tajara") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holotajf")) + if("male tesharii") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holotesm")) + if("female tesharii") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holotesf")) + if("male skrell") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holoskrm")) + if("female skrell") + holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holoskrf")) + return //Toggles the luminosity and applies it by re-entereing the camera. diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index 7c60bb75e43..6383e55e344 100644 --- a/code/modules/mob/living/silicon/ai/latejoin.dm +++ b/code/modules/mob/living/silicon/ai/latejoin.dm @@ -29,15 +29,4 @@ var/global/list/empty_playable_ai_cores = list() global_announcer.autosay("[src] has been moved to intelligence storage.", "Artificial Intelligence Oversight") //Handle job slot/tater cleanup. - var/job = mind.assigned_role - - job_master.FreeRole(job) - - if(mind.objectives.len) - qdel(mind.objectives) - mind.special_role = null - - clear_antag_roles(mind) - - ghostize(0) - qdel(src) + clear_client() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index b5ddfcedd91..5c6b617a7bd 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -56,18 +56,18 @@ if (aiRestorePowerRoutine==2) src << "Alert cancelled. Power has been restored without our assistance." aiRestorePowerRoutine = 0 - src.blind.layer = 0 + clear_fullscreen("blind") updateicon() return else if (aiRestorePowerRoutine==3) src << "Alert cancelled. Power has been restored." aiRestorePowerRoutine = 0 - src.blind.layer = 0 + clear_fullscreen("blind") updateicon() return else if (APU_power) aiRestorePowerRoutine = 0 - src.blind.layer = 0 + clear_fullscreen("blind") updateicon() return else @@ -79,9 +79,7 @@ //Blind the AI updateicon() - src.blind.screen_loc = ui_entire_screen - if (src.blind.layer!=18) - src.blind.layer = 18 + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) src.sight = src.sight&~SEE_TURFS src.sight = src.sight&~SEE_MOBS src.sight = src.sight&~SEE_OBJS @@ -99,7 +97,7 @@ if (!istype(T, /turf/space)) src << "Alert cancelled. Power has been restored without our assistance." aiRestorePowerRoutine = 0 - src.blind.layer = 0 + clear_fullscreen("blind") return src << "Fault confirmed: missing external power. Shutting down main control system to save power." sleep(20) @@ -129,7 +127,7 @@ if (!istype(T, /turf/space)) src << "Alert cancelled. Power has been restored without our assistance." aiRestorePowerRoutine = 0 - src.blind.layer = 0 //This, too, is a fix to issue 603 + clear_fullscreen("blind") //This, too, is a fix to issue 603 return switch(PRP) if (1) src << "APC located. Optimizing route to APC to avoid needless power waste." diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index 76625cdc3df..fa06162c311 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -2,19 +2,6 @@ ..() for(var/obj/effect/rune/rune in rune_list) client.images += rune.blood_image - regenerate_icons() - flash = new /obj/screen() - flash.icon_state = "blank" - flash.name = "flash" - flash.screen_loc = ui_entire_screen - flash.layer = 17 - blind = new /obj/screen() - blind.icon_state = "black" - blind.name = " " - blind.screen_loc = ui_entire_screen - blind.layer = 0 - client.screen.Add( blind, flash ) - if(stat != DEAD) for(var/obj/machinery/ai_status_display/O in machines) //change status O.mode = 1 diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 2ba3d40a174..bd757f9ab69 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -444,3 +444,18 @@ else idaccessible = 0 src << "You block access modfications." + +/mob/living/silicon/pai/verb/wipe_software() + set name = "Wipe Software" + set category = "OOC" + set desc = "Wipe your software. This is functionally equivalent to cryo or robotic storage, freeing up your job slot." + + // Make sure people don't kill themselves accidentally + if(alert("WARNING: This will immediately wipe your software and ghost you, removing your character from the round permanently (similar to cryo and robotic storage). Are you entirely sure you want to do this?", + "Wipe Software", "No", "No", "Yes") != "Yes") + return + + close_up() + visible_message("[src] fades away from the screen, the pAI device goes silent.") + card.removePersonality() + clear_client() diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm index 19c44d2e536..9881948b1b2 100644 --- a/code/modules/mob/living/silicon/robot/analyzer.dm +++ b/code/modules/mob/living/silicon/robot/analyzer.dm @@ -16,7 +16,18 @@ matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 200) var/mode = 1; + +/obj/item/device/robotanalyzer/do_surgery(mob/living/M, mob/living/user) + if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool + return ..() + do_scan(M, user) //default surgery behaviour is just to scan as usual + return 1 + + /obj/item/device/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob) + do_scan(M, user) + +/obj/item/device/robotanalyzer/proc/do_scan(mob/living/M as mob, mob/living/user as mob) if((CLUMSY in user.mutations) && prob(50)) user << text("\red You try to analyze the floor's vitals!") for(var/mob/O in viewers(M, null)) diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index 8c0ec04900e..89f7942cc45 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -240,7 +240,7 @@ var/list/mob_hat_cache = list() //Drones killed by damage will gib. /mob/living/silicon/robot/drone/handle_regular_status_updates() var/turf/T = get_turf(src) - if((!T || health <= -35 || (master_fabricator && T.z != master_fabricator.z)) && src.stat != DEAD) + if(!T || health <= -35 ) timeofdeath = world.time death() //Possibly redundant, having trouble making death() cooperate. gib() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 3fd496f179c..84547eba188 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -50,6 +50,15 @@ /obj/item/weapon/newspaper ) +/obj/item/weapon/gripper/chemistry + name = "chemistry gripper" + desc = "A simple grasping tool for chemical work." + + can_hold = list( + /obj/item/weapon/reagent_containers/glass, + /obj/item/weapon/storage/pill_bottle + ) + /obj/item/weapon/gripper/research //A general usage gripper, used for toxins/robotics/xenobio/etc name = "scientific gripper" icon_state = "gripper-sci" @@ -92,6 +101,22 @@ /obj/item/organ ) +/obj/item/weapon/gripper/no_use/organ/Entered(var/atom/movable/AM) + if(istype(AM, /obj/item/organ)) + var/obj/item/organ/O = AM + O.preserved = 1 + for(var/obj/item/organ/organ in O) + organ.preserved = 1 + ..() + +/obj/item/weapon/gripper/no_use/organ/Exited(var/atom/movable/AM) + if(istype(AM, /obj/item/organ)) + var/obj/item/organ/O = AM + O.preserved = 0 + for(var/obj/item/organ/organ in O) + organ.preserved = 0 + ..() + /obj/item/weapon/gripper/no_use/organ/robotics name = "external organ gripper" icon_state = "gripper-flesh" diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index a44be642535..26fe14d7d1d 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -275,29 +275,21 @@ // if (src.oxygen) src.oxygen.icon_state = "oxy[src.oxygen_alert ? 1 : 0]" // if (src.fire) src.fire.icon_state = "fire[src.fire_alert ? 1 : 0]" - client.screen.Remove(global_hud.blurry,global_hud.druggy,global_hud.vimpaired) - - if ((src.blind && src.stat != 2)) - if(src.blinded) - src.blind.layer = 18 + if(stat != 2) + if(blinded) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) else - src.blind.layer = 0 - if (src.disabilities & NEARSIGHTED) - src.client.screen += global_hud.vimpaired + clear_fullscreen("blind") + set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1) + set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry) + set_fullscreen(druggy, "high", /obj/screen/fullscreen/high) - if (src.eye_blurry) - src.client.screen += global_hud.blurry - - if (src.druggy) - src.client.screen += global_hud.druggy - - if (src.stat != 2) - if (src.machine) - if (src.machine.check_eye(src) < 0) - src.reset_view(null) - else - if(client && !client.adminobs) - reset_view(null) + if (src.machine) + if (src.machine.check_eye(src) < 0) + src.reset_view(null) + else + if(client && !client.adminobs) + reset_view(null) return 1 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ad3445483d5..5350ba68c0c 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -147,15 +147,15 @@ add_robot_verbs() - hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100") - hud_list[LIFE_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100") - hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[WANTED_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPLOYAL_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPCHEM_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[HEALTH_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[STATUS_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealth100") + hud_list[LIFE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudhealth100") + hud_list[ID_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[WANTED_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPLOYAL_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPCHEM_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPTRACK_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") + hud_list[SPECIALROLE_HUD] = new /image/hud_overlay('icons/mob/hud.dmi', src, "hudblank") /mob/living/silicon/robot/proc/init() aiCamera = new/obj/item/device/camera/siliconcam/robot_camera(src) diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index ee25aebe24e..e5b8ff3de27 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -267,6 +267,10 @@ name = "paper dispenser" icon = 'icons/obj/bureaucracy.dmi' icon_state = "paper_bin1" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) item_state = "sheet-metal" /obj/item/weapon/form_printer/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index cd02dd71f42..03fa56387a3 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -247,6 +247,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src) src.modules += new /obj/item/weapon/reagent_containers/syringe(src) src.modules += new /obj/item/weapon/gripper/no_use/organ(src) + src.modules += new /obj/item/weapon/gripper/chemistry(src) src.modules += new /obj/item/weapon/extinguisher/mini(src) src.emag = new /obj/item/weapon/reagent_containers/spray(src) src.emag.reagents.add_reagent("pacid", 250) @@ -684,7 +685,7 @@ var/global/list/robot_modules = list( hide_on_manifest = 1 sprites = list("Combat Android" = "droid-combat") -/obj/item/weapon/robot_module/combat/New() +/obj/item/weapon/robot_module/security/combat/New() src.modules += new /obj/item/device/flash(src) src.modules += new /obj/item/borg/sight/thermal(src) src.modules += new /obj/item/weapon/gun/energy/laser/mounted(src) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 5a13c7bb792..ef6b1c7872b 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -67,7 +67,7 @@ if(2) src.take_organ_damage(0,10,emp=1) confused = (min(confused + 2, 30)) - flick("noise", src.flash) + flash_eyes(affect_silicon = 1) src << "*BZZZT*" src << "Warning: Electromagnetic pulse detected." ..() @@ -264,7 +264,7 @@ /mob/living/silicon/ex_act(severity) if(!blinded) - flick("flash", flash) + flash_eyes() switch(severity) if(1.0) @@ -361,3 +361,22 @@ ..() if(cameraFollow) cameraFollow = null + +/mob/living/silicon/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash) + if(affect_silicon) + return ..() + +/mob/living/silicon/proc/clear_client() + //Handle job slot/tater cleanup. + var/job = mind.assigned_role + + job_master.FreeRole(job) + + if(mind.objectives.len) + qdel(mind.objectives) + mind.special_role = null + + clear_antag_roles(mind) + + ghostize(0) + qdel(src) diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index f023df1617e..7f04be9c3b2 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -126,6 +126,7 @@ // redirect the projectile P.redirect(new_x, new_y, curloc, src) + P.reflected = 1 return -1 // complete projectile permutation diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 6e827565f78..868bafd7ccf 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -131,7 +131,7 @@ /mob/living/simple_animal/cat/fluff/handle_movement_target() if (friend) - var/follow_dist = 5 + var/follow_dist = 4 if (friend.stat >= DEAD || friend.health <= config.health_threshold_softcrit) //danger follow_dist = 1 else if (friend.stat || friend.health <= 50) //danger or just sleeping @@ -181,24 +181,28 @@ var/verb = pick("meows", "mews", "mrowls") audible_emote("[verb] anxiously.") -/mob/living/simple_animal/cat/fluff/verb/friend() +/mob/living/simple_animal/cat/fluff/verb/become_friends() set name = "Become Friends" set category = "IC" set src in view(1) - if(friend && usr == friend) + if(!friend) + var/mob/living/carbon/human/H = usr + if(istype(H) && (!befriend_job || H.job == befriend_job)) + friend = usr + . = 1 + else if(usr == friend) + . = 1 //already friends, but show success anyways + + if(.) set_dir(get_dir(src, friend)) - say("Meow!") - return - - if (!(ishuman(usr) && befriend_job && usr.job == befriend_job)) + visible_emote(pick("nuzzles [friend].", + "brushes against [friend].", + "rubs against [friend].", + "purrs.")) + else usr << "[src] ignores you." - return - - friend = usr - - set_dir(get_dir(src, friend)) - say("Meow!") + return //RUNTIME IS ALIVE! SQUEEEEEEEE~ /mob/living/simple_animal/cat/fluff/Runtime @@ -209,7 +213,6 @@ item_state = "cat" icon_living = "cat" icon_dead = "cat_dead" - befriend_job = "Chief Medical Officer" /mob/living/simple_animal/cat/kitten name = "kitten" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index ae172d7b711..1b5cd7e37e8 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -195,3 +195,23 @@ for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) set_dir(i) sleep(1) + +//Technically this should be like, its own file or something or a subset of dog but whatever. Not a coder. +/mob/living/simple_animal/corgi/tamaskan + name = "\improper tamaskan" + real_name = "tamaskan" + desc = "It's a tamaskan." + icon_state = "tamaskan" + icon_living = "tamaskan" + icon_dead = "tamaskan_dead" + +/mob/living/simple_animal/corgi/tamaskan/spice + name = "Spice" + real_name = "Spice" //Intended to hold the name without altering it. + gender = FEMALE + desc = "It's a tamaskan, the name Spice can be found on its collar." + var/turns_since_scan = 0 + var/obj/movement_target + response_help = "pets" + response_disarm = "bops" + response_harm = "kicks" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 394dd742acf..cffa215a002 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -155,7 +155,7 @@ eject_brain() death() -/mob/living/simple_animal/spiderbot/proc/update_icon() +/mob/living/simple_animal/spiderbot/update_icon() if(mmi) if(positronic) icon_state = "spiderbot-chassis-posi" diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 8439643fe58..3971b90df5a 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -81,6 +81,7 @@ var/destroy_surroundings = 0 var/shuttletarget = null var/enroute = 0 + var/ai_inactive = 0 // Set to 1 to turn off most AI actions in Life() var/list/resistances = list( HALLOSS = 0, @@ -135,7 +136,7 @@ handle_supernatural() //Movement - if(!client && !stop_automated_movement && wander && !anchored) + if(!client && !stop_automated_movement && wander && !anchored && !ai_inactive) if(isturf(src.loc) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc. turns_since_move++ if(turns_since_move >= turns_per_move) @@ -235,7 +236,7 @@ adjustBruteLoss(unsuitable_atoms_damage) //Hostility - if(!stat && !client && hostile) + if(!stat && !client && hostile && !ai_inactive) switch(stance) if(STANCE_IDLE) target_mob = FindTarget() @@ -380,7 +381,7 @@ /mob/living/simple_animal/ex_act(severity) if(!blinded) - flick("flash", flash) + flash_eyes() switch (severity) if (1.0) adjustBruteLoss(500) diff --git a/code/modules/mob/living/simple_animal/worm.dm b/code/modules/mob/living/simple_animal/worm.dm index 9775a68c9c9..e8663339c10 100644 --- a/code/modules/mob/living/simple_animal/worm.dm +++ b/code/modules/mob/living/simple_animal/worm.dm @@ -123,7 +123,7 @@ return - proc/update_icon() //only for the sake of consistency with the other update icon procs + update_icon() //only for the sake of consistency with the other update icon procs if(stat == CONSCIOUS || stat == UNCONSCIOUS) if(previous) //midsection icon_state = "spaceworm[get_dir(src,previous) | get_dir(src,next)]" //see 3 lines below diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 7f6fdd8aabf..e29f6cdffa4 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -44,6 +44,7 @@ else client.eye = src client.perspective = MOB_PERSPECTIVE - + reload_fullscreen() // Reload any fullscreen overlays this mob has. + add_click_catcher() //set macro to normal incase it was overriden (like cyborg currently does) winset(src, null, "mainwindow.macro=macro hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5") diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index e59914791ab..081eb39a5c7 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -4,6 +4,7 @@ living_mob_list -= src unset_machine() qdel(hud_used) + clear_fullscreen() if(client) for(var/obj/screen/movable/spell_master/spell_master in spell_masters) qdel(spell_master) @@ -17,8 +18,6 @@ ..() /mob/proc/remove_screen_obj_references() - flash = null - blind = null hands = null pullin = null purged = null @@ -33,7 +32,6 @@ throw_icon = null nutrition_icon = null pressure = null - damageoverlay = null pain = null item_use_icon = null gun_move_icon = null @@ -360,8 +358,8 @@ var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1) usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds." - if (deathtime < (15 * 600)) - usr << "You must wait 15 minutes to respawn!" + if (deathtime < (5 * 600)) + usr << "You must wait 5 minutes to respawn!" return else usr << "You can respawn now, enjoy your new life!" diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index f814ac2b231..ce79b499042 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -10,8 +10,6 @@ //Not in use yet var/obj/effect/organstructure/organStructure = null - var/obj/screen/flash = null - var/obj/screen/blind = null var/obj/screen/hands = null var/obj/screen/pullin = null var/obj/screen/purged = null @@ -26,7 +24,6 @@ var/obj/screen/throw_icon = null var/obj/screen/nutrition_icon = null var/obj/screen/pressure = null - var/obj/screen/damageoverlay = null var/obj/screen/pain = null var/obj/screen/gun/item/item_use_icon = null var/obj/screen/gun/radio/radio_use_icon = null @@ -34,9 +31,12 @@ var/obj/screen/gun/run/gun_run_icon = null var/obj/screen/gun/mode/gun_setting_icon = null var/obj/screen/ling/chems/ling_chem_display = null + var/obj/screen/wizard/energy/wiz_energy_display = null + var/obj/screen/wizard/instability/wiz_instability_display = null //spells hud icons - this interacts with add_spell and remove_spell var/list/obj/screen/movable/spell_master/spell_masters = null + var/obj/screen/movable/ability_master/ability_master = null /*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob. A variable should only be globally attached to turfs/objects/whatever, when it is in fact needed as such. @@ -124,7 +124,6 @@ var/datum/hud/hud_used = null var/list/grabbed_by = list( ) - var/list/requests = list( ) var/list/mapobjs = list() diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 47e05847402..e40b14dffd6 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -3,10 +3,15 @@ ///Process_Grab() ///Called by client/Move() -///Checks to see if you are grabbing anything and if moving will affect your grab. +///Checks to see if you are grabbing or being grabbed by anything and if moving will affect your grab. /client/proc/Process_Grab() - if(istype(mob, /mob/living)) + //if we are being grabbed + if(isliving(mob)) var/mob/living/L = mob + if(!L.canmove && L.grabbed_by.len) + L.resist() //shortcut for resisting grabs + + //if we are grabbing someone for(var/obj/item/weapon/grab/G in list(L.l_hand, L.r_hand)) G.reset_kill_state() //no wandering across the station/asteroid while choking someone @@ -131,7 +136,7 @@ handle_eye_mouth_covering(affecting, assailant, assailant.zone_sel.selecting) if(force_down) - if(affecting.loc != assailant.loc) + if(affecting.loc != assailant.loc || size_difference(affecting, assailant) > 0) force_down = 0 else affecting.Weaken(2) @@ -232,7 +237,7 @@ if(state < GRAB_AGGRESSIVE) if(!allow_upgrade) return - if(!affecting.lying) + if(!affecting.lying || size_difference(affecting, assailant) > 0) assailant.visible_message("[assailant] has grabbed [affecting] aggressively (now hands)!") else assailant.visible_message("[assailant] pins [affecting] down to the ground (now hands)!") @@ -335,6 +340,40 @@ hud.icon_state = "kill" state = GRAB_NECK +/obj/item/weapon/grab/proc/handle_resist() + var/grab_name + var/break_strength = 1 + var/list/break_chance_table = list(100) + switch(state) + //if(GRAB_PASSIVE) + + if(GRAB_AGGRESSIVE) + grab_name = "grip" + //Being knocked down makes it harder to break a grab, so it is easier to cuff someone who is down without forcing them into unconsciousness. + if(!affecting.incapacitated(INCAPACITATION_KNOCKDOWN)) + break_strength++ + break_chance_table = list(15, 60, 100) + + if(GRAB_NECK) + grab_name = "headlock" + //If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun. + if(world.time - assailant.l_move_time < 30 || !affecting.stunned) + break_strength++ + break_chance_table = list(3, 18, 45, 100) + + //It's easier to break out of a grab by a smaller mob + break_strength += max(size_difference(affecting, assailant), 0) + + var/break_chance = break_chance_table[Clamp(break_strength, 1, break_chance_table.len)] + if(prob(break_chance)) + if(grab_name) + affecting.visible_message("[affecting] has broken free of [assailant]'s [grab_name]!") + qdel(src) + +//returns the number of size categories between affecting and assailant, rounded. Positive means A is larger than B +/obj/item/weapon/grab/proc/size_difference(mob/A, mob/B) + return mob_size_difference(A.mob_size, B.mob_size) + /obj/item/weapon/grab var/destroying = 0 diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index 5158a7f3d07..e7b75a2e5de 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -51,10 +51,16 @@ return attacker.visible_message("[attacker] [pick("bent", "twisted")] [target]'s [organ.name] into a jointlock!") + + if(target.species.flags & NO_PAIN) + return + var/armor = target.run_armor_check(target, "melee") if(armor < 60) target << "You feel extreme pain!" - affecting.adjustHalLoss(Clamp(0, 60-affecting.halloss, 30)) //up to 60 halloss + + var/max_halloss = round(target.species.total_health * 0.8) //up to 80% of passing out + affecting.adjustHalLoss(Clamp(0, max_halloss - affecting.halloss, 30)) /obj/item/weapon/grab/proc/attack_eye(mob/living/carbon/human/target, mob/living/carbon/human/attacker) if(!istype(attacker)) @@ -125,6 +131,10 @@ return if(force_down) attacker << "You are already pinning [target] to the ground." + return + if(size_difference(affecting, assailant) > 0) + attacker << "You are too small to do that!" + return attacker.visible_message("[attacker] starts forcing [target] to the ground!") if(do_after(attacker, 20) && target) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 5271034d2ba..2f788862f82 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -5,6 +5,9 @@ return L.mob_size <= MOB_SMALL return 0 +//returns the number of size categories between two mob_sizes, rounded. Positive means A is larger than B +/proc/mob_size_difference(var/mob_size_A, var/mob_size_B) + return round(log(2, mob_size_A/mob_size_B), 1) /proc/istiny(A) if(A && istype(A, /mob/living)) @@ -570,4 +573,7 @@ var/list/global/organ_rel_size = list( "r_hand" = 10, "l_foot" = 10, "r_foot" = 10, -) \ No newline at end of file +) + +/mob/proc/flash_eyes(intensity = FLASH_PROTECTION_MODERATE, override_blindness_check = FALSE, affect_silicon = FALSE, visual = FALSE, type = /obj/screen/fullscreen/flash) + return \ No newline at end of file diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index a1b8437b0b7..1f09ea251c2 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -76,7 +76,7 @@ stat("Game Mode:", "Secret") else if(ticker.hide_mode == 0) - stat("Game Mode:", "[master_mode]") // Old setting for showing the game mode + stat("Game Mode:", "[config.mode_names[master_mode]]") // Old setting for showing the game mode if(ticker.current_state == GAME_STATE_PREGAME) stat("Time To Start:", "[ticker.pregame_timeleft][round_progressing ? "" : " (DELAYED)"]") @@ -152,16 +152,6 @@ usr << "\red The round is either not ready, or has already finished..." return - if(client.prefs.species != "Human" && !check_rights(R_ADMIN, 0)) - if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist) - src << alert("You are currently not whitelisted to play [client.prefs.species].") - return 0 - - var/datum/species/S = all_species[client.prefs.species] - if(!(S.spawn_flags & SPECIES_IS_WHITELISTED)) - src << alert("Your current species,[client.prefs.species], is not available for play on the station.") - return 0 - LateChoices() if(href_list["manifest"]) @@ -176,15 +166,14 @@ usr << "The station is currently exploding. Joining would go poorly." return - if(client.prefs.species != "Human") - if(!is_alien_whitelisted(src, client.prefs.species) && config.usealienwhitelist) - src << alert("You are currently not whitelisted to play [client.prefs.species].") - return 0 + if(!is_alien_whitelisted(src, all_species[client.prefs.species])) + src << alert("You are currently not whitelisted to play [client.prefs.species].") + return 0 - var/datum/species/S = all_species[client.prefs.species] - if(!(S.spawn_flags & SPECIES_CAN_JOIN)) - src << alert("Your current species, [client.prefs.species], is not available for play on the station.") - return 0 + var/datum/species/S = all_species[client.prefs.species] + if(!(S.spawn_flags & SPECIES_CAN_JOIN)) + src << alert("Your current species, [client.prefs.species], is not available for play on the station.") + return 0 AttemptLateSpawn(href_list["SelectedJob"],client.prefs.spawnpoint) return @@ -413,7 +402,7 @@ if(chosen_species && use_species_name) // Have to recheck admin due to no usr at roundstart. Latejoins are fine though. - if(is_species_whitelisted(chosen_species) || has_admin_rights()) + if(is_alien_whitelisted(chosen_species)) new_character = new(loc, use_species_name) if(!new_character) @@ -421,13 +410,6 @@ new_character.lastarea = get_area(loc) - for(var/lang in client.prefs.alternate_languages) - var/datum/language/chosen_language = all_languages[lang] - if(chosen_language) - if(!config.usealienwhitelist || !(chosen_language.flags & WHITELISTED) || is_alien_whitelisted(src, lang) || has_admin_rights() \ - || (new_character.species && (chosen_language.name in new_character.species.secondary_langs))) - new_character.add_language(lang) - if(ticker.random_players) new_character.gender = pick(MALE, FEMALE) client.prefs.real_name = random_name(new_character.gender) @@ -454,6 +436,11 @@ new_character.dna.SetSEState(GLASSESBLOCK,1,0) new_character.disabilities |= NEARSIGHTED + for(var/lang in client.prefs.alternate_languages) + var/datum/language/chosen_language = all_languages[lang] + if(chosen_language) + if(is_lang_whitelisted(src,chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs))) + new_character.add_language(lang) // And uncomment this, too. //new_character.dna.UpdateSE() @@ -487,10 +474,6 @@ /mob/new_player/proc/has_admin_rights() return check_rights(R_ADMIN, 0, src) -/mob/new_player/proc/is_species_whitelisted(datum/species/S) - if(!S) return 1 - return is_alien_whitelisted(src, S.name) || !config.usealienwhitelist || !(S.spawn_flags & SPECIES_IS_WHITELISTED) - /mob/new_player/get_species() var/datum/species/chosen_species if(client.prefs.species) @@ -499,7 +482,7 @@ if(!chosen_species) return "Human" - if(is_species_whitelisted(chosen_species) || has_admin_rights()) + if(is_alien_whitelisted(chosen_species)) return chosen_species.name return "Human" @@ -511,9 +494,14 @@ /mob/new_player/is_ready() return ready && ..() +// Prevents lobby players from seeing say, even with ghostears /mob/new_player/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) return +// Prevents lobby players from seeing emotes, even with ghosteyes +/mob/new_player/show_message(msg, type, alt, alt_type) + return + /mob/new_player/hear_radio() return diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 527ad8b70b8..a10049a6447 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -194,31 +194,31 @@ b_skin = blue /datum/preferences/proc/dress_preview_mob(var/mob/living/carbon/human/mannequin) - copy_to(mannequin) - if(!dress_mob) + var/update_icon = FALSE + copy_to(mannequin, TRUE) + + var/datum/job/previewJob + if(equip_preview_mob) + // Determine what job is marked as 'High' priority, and dress them up as such. + if(job_civilian_low & ASSISTANT) + previewJob = job_master.GetJob("Assistant") + else + for(var/datum/job/job in job_master.occupations) + var/job_flag + switch(job.department_flag) + if(CIVILIAN) + job_flag = job_civilian_high + if(MEDSCI) + job_flag = job_medsci_high + if(ENGSEC) + job_flag = job_engsec_high + if(job.flag == job_flag) + previewJob = job + break + else return - // Determine what job is marked as 'High' priority, and dress them up as such. - var/datum/job/previewJob - if(job_civilian_low & ASSISTANT) - previewJob = job_master.GetJob("Assistant") - else - for(var/datum/job/job in job_master.occupations) - var/job_flag - switch(job.department_flag) - if(CIVILIAN) - job_flag = job_civilian_high - if(MEDSCI) - job_flag = job_medsci_high - if(ENGSEC) - job_flag = job_engsec_high - if(job.flag == job_flag) - previewJob = job - break - - if(previewJob) - mannequin.job = previewJob.title - previewJob.equip_preview(mannequin, player_alt_titles[previewJob.title]) + if((equip_preview_mob & EQUIP_PREVIEW_LOADOUT) && !(previewJob && (equip_preview_mob & EQUIP_PREVIEW_JOB) && (previewJob.type == /datum/job/ai || previewJob.type == /datum/job/cyborg))) var/list/equipped_slots = list() //If more than one item takes the same slot only spawn the first for(var/thing in gear) var/datum/gear/G = gear_datums[thing] @@ -238,9 +238,17 @@ continue if(G.slot && !(G.slot in equipped_slots)) - equipped_slots += G.slot var/metadata = gear[G.display_name] - mannequin.equip_to_slot_or_del(G.spawn_item(mannequin, metadata), G.slot) + if(mannequin.equip_to_slot_or_del(G.spawn_item(mannequin, metadata), G.slot)) + equipped_slots += G.slot + update_icon = TRUE + + if((equip_preview_mob & EQUIP_PREVIEW_JOB) && previewJob) + mannequin.job = previewJob.title + previewJob.equip_preview(mannequin, player_alt_titles[previewJob.title]) + update_icon = TRUE + + if(update_icon) mannequin.update_icons() /datum/preferences/proc/update_preview_icon() diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index b9bfba7adb6..7c68dc59721 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -190,6 +190,9 @@ name = "Tress Shoulder" icon_state = "hair_tressshoulder" + spikyponytail + name = "Spiky Ponytail" + icon_state = "hair_spikyponytail" wisp name = "Wisp" icon_state = "hair_wisp" @@ -387,10 +390,6 @@ name = "Hime Cut" icon_state = "hair_himecut" - braid - name = "Floorlength Braid" - icon_state = "bald" //Trust me, it's better this way. - mbraid name = "Medium Braid" icon_state = "hair_shortbraid" @@ -721,6 +720,31 @@ icon_state = "hair_messy" species_allowed = list("Tajara") + taj_ears_curls + name = "Tajara Curly" + icon_state = "hair_curly" + species_allowed = list("Tajara") + + taj_ears_wife + name = "Tajara Housewife" + icon_state = "hair_wife" + species_allowed = list("Tajara") + + taj_ears_victory + name = "Tajara Victory Curls" + icon_state = "hair_victory" + species_allowed = list("Tajara") + + taj_ears_bob + name = "Tajara Bob" + icon_state = "hair_tbob" + species_allowed = list("Tajara") + + taj_ears_fingercurl + name = "Tajara Finger Curls" + icon_state = "hair_fingerwave" + species_allowed = list("Tajara") + /datum/sprite_accessory/facial_hair taj_sideburns diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 2c5f24984a5..105a547e08e 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -135,16 +135,18 @@ var/const/BLOOD_VOLUME_SURVIVE = 40 drip(blood_max) //Makes a blood drop, leaking amt units of blood from the mob -/mob/living/carbon/human/proc/drip(var/amt as num) +/mob/living/carbon/human/proc/drip(var/amt) + if(remove_blood(amt)) + blood_splatter(src,src) +/mob/living/carbon/human/proc/remove_blood(var/amt) if(!should_have_organ(O_HEART)) //TODO: Make drips come from the reagents instead. - return + return 0 if(!amt) - return + return 0 - vessel.remove_reagent("blood",amt) - blood_splatter(src,src) + return vessel.remove_reagent("blood",amt * (src.mob_size/MOB_MEDIUM)) /**************************************************** BLOOD TRANSFERS diff --git a/code/modules/organs/internal/appendix.dm b/code/modules/organs/internal/appendix.dm new file mode 100644 index 00000000000..b3fdc28bc2d --- /dev/null +++ b/code/modules/organs/internal/appendix.dm @@ -0,0 +1,55 @@ +#define PROCESS_ACCURACY 10 + +/obj/item/organ/internal/appendix + name = "appendix" + icon_state = "appendix" + parent_organ = BP_GROIN + organ_tag = "appendix" + var/inflamed = 0 + var/inflame_progress = 0 + +/mob/living/carbon/human/proc/appendicitis() + if(stat == DEAD) + return 0 + var/obj/item/organ/internal/appendix/A = internal_organs_by_name[O_APPENDIX] + if(istype(A) && !A.inflamed) + A.inflamed = 1 + return 1 + return 0 + +/obj/item/organ/internal/appendix/process() + if(!inflamed || !owner) + return + + if(++inflame_progress > 200) + ++inflamed + inflame_progress = 0 + + if(inflamed == 1) + if(prob(5)) + owner << "You feel a stinging pain in your abdomen!" + owner.emote("me", 1, "winces slightly.") + if(inflamed > 1) + if(prob(3)) + owner << "You feel a stabbing pain in your abdomen!" + owner.emote("me", 1, "winces painfully.") + owner.adjustToxLoss(1) + if(inflamed > 2) + if(prob(1)) + owner.vomit() + if(inflamed > 3) + if(prob(1)) + owner << "Your abdomen is a world of pain!" + owner.Weaken(10) + + var/obj/item/organ/external/groin = owner.get_organ(BP_GROIN) + var/datum/wound/W = new /datum/wound/internal_bleeding(20) + owner.adjustToxLoss(25) + groin.wounds += W + inflamed = 0 + +/obj/item/organ/internal/appendix/removed() + if(inflamed) + icon_state = "appendixinflamed" + name = "inflamed appendix" + ..() \ No newline at end of file diff --git a/code/modules/organs/internal/eyes.dm b/code/modules/organs/internal/eyes.dm new file mode 100644 index 00000000000..ddde8726620 --- /dev/null +++ b/code/modules/organs/internal/eyes.dm @@ -0,0 +1,78 @@ +#define PROCESS_ACCURACY 10 + +/obj/item/organ/internal/eyes + name = "eyeballs" + icon_state = "eyes" + gender = PLURAL + organ_tag = O_EYES + parent_organ = BP_HEAD + var/list/eye_colour = list(0,0,0) + +/obj/item/organ/internal/eyes/robotize() + ..() + name = "optical sensor" + icon = 'icons/obj/robot_component.dmi' + icon_state = "camera" + dead_icon = "camera_broken" + verbs |= /obj/item/organ/internal/eyes/proc/change_eye_color + +/obj/item/organ/internal/eyes/robot + name = "optical sensor" + +/obj/item/organ/internal/eyes/robot/New() + ..() + robotize() + +/obj/item/organ/internal/eyes/proc/change_eye_color() + set name = "Change Eye Color" + set desc = "Changes your robotic eye color instantly." + set category = "IC" + set src in usr + + var/current_color = rgb(eye_colour[1],eye_colour[2],eye_colour[3]) + var/new_color = input("Pick a new color for your eyes.","Eye Color", current_color) as null|color + if(new_color && owner) + // input() supplies us with a hex color, which we can't use, so we convert it to rbg values. + var/list/new_color_rgb_list = hex2rgb(new_color) + // First, update mob vars. + owner.r_eyes = new_color_rgb_list[1] + owner.g_eyes = new_color_rgb_list[2] + owner.b_eyes = new_color_rgb_list[3] + // Now sync the organ's eye_colour list. + update_colour() + // Finally, update the eye icon on the mob. + owner.update_eyes() + +/obj/item/organ/internal/eyes/replaced(var/mob/living/carbon/human/target) + + // Apply our eye colour to the target. + if(istype(target) && eye_colour) + target.r_eyes = eye_colour[1] + target.g_eyes = eye_colour[2] + target.b_eyes = eye_colour[3] + target.update_eyes() + ..() + +/obj/item/organ/internal/eyes/proc/update_colour() + if(!owner) + return + eye_colour = list( + owner.r_eyes ? owner.r_eyes : 0, + owner.g_eyes ? owner.g_eyes : 0, + owner.b_eyes ? owner.b_eyes : 0 + ) + +/obj/item/organ/internal/eyes/take_damage(amount, var/silent=0) + var/oldbroken = is_broken() + ..() + if(is_broken() && !oldbroken && owner && !owner.stat) + owner << "You go blind!" + +/obj/item/organ/internal/eyes/process() //Eye damage replaces the old eye_stat var. + ..() + if(!owner) + return + if(is_bruised()) + owner.eye_blurry = 20 + if(is_broken()) + owner.eye_blind = 20 \ No newline at end of file diff --git a/code/modules/organs/internal/heart.dm b/code/modules/organs/internal/heart.dm new file mode 100644 index 00000000000..99b7386403e --- /dev/null +++ b/code/modules/organs/internal/heart.dm @@ -0,0 +1,8 @@ +#define PROCESS_ACCURACY 10 + +/obj/item/organ/internal/heart + name = "heart" + icon_state = "heart-on" + organ_tag = O_HEART + parent_organ = BP_TORSO + dead_icon = "heart-off" \ No newline at end of file diff --git a/code/modules/organs/internal/kidneys.dm b/code/modules/organs/internal/kidneys.dm new file mode 100644 index 00000000000..5d3875ccf54 --- /dev/null +++ b/code/modules/organs/internal/kidneys.dm @@ -0,0 +1,25 @@ +#define PROCESS_ACCURACY 10 + +/obj/item/organ/internal/kidneys + name = "kidneys" + icon_state = "kidneys" + gender = PLURAL + organ_tag = O_KIDNEYS + parent_organ = BP_GROIN + +/obj/item/organ/internal/kidneys/process() + + ..() + + if(!owner) + return + + // Coffee is really bad for you with busted kidneys. + // This should probably be expanded in some way, but fucked if I know + // what else kidneys can process in our reagent list. + var/datum/reagent/coffee = locate(/datum/reagent/drink/coffee) in owner.reagents.reagent_list + if(coffee) + if(is_bruised()) + owner.adjustToxLoss(0.1 * PROCESS_ACCURACY) + else if(is_broken()) + owner.adjustToxLoss(0.3 * PROCESS_ACCURACY) \ No newline at end of file diff --git a/code/modules/organs/internal/liver.dm b/code/modules/organs/internal/liver.dm new file mode 100644 index 00000000000..ef989b7a558 --- /dev/null +++ b/code/modules/organs/internal/liver.dm @@ -0,0 +1,55 @@ +#define PROCESS_ACCURACY 10 + +/obj/item/organ/internal/liver + name = "liver" + icon_state = "liver" + organ_tag = "liver" + parent_organ = BP_GROIN + +/obj/item/organ/internal/liver/process() + + ..() + + if(!owner) + return + + if (germ_level > INFECTION_LEVEL_ONE) + if(prob(1)) + owner << "Your skin itches." + if (germ_level > INFECTION_LEVEL_TWO) + if(prob(1)) + spawn owner.vomit() + + if(owner.life_tick % PROCESS_ACCURACY == 0) + + //High toxins levels are dangerous + if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("anti_toxin")) + //Healthy liver suffers on its own + if (src.damage < min_broken_damage) + src.damage += 0.2 * PROCESS_ACCURACY + //Damaged one shares the fun + else + var/obj/item/organ/internal/O = pick(owner.internal_organs) + if(O) + O.damage += 0.2 * PROCESS_ACCURACY + + //Detox can heal small amounts of damage + if (src.damage && src.damage < src.min_bruised_damage && owner.reagents.has_reagent("anti_toxin")) + src.damage -= 0.2 * PROCESS_ACCURACY + + if(src.damage < 0) + src.damage = 0 + + // Get the effectiveness of the liver. + var/filter_effect = 3 + if(is_bruised()) + filter_effect -= 1 + if(is_broken()) + filter_effect -= 2 + + // Do some reagent processing. + if(owner.chem_effects[CE_ALCOHOL_TOXIC]) + if(filter_effect < 3) + owner.adjustToxLoss(owner.chem_effects[CE_ALCOHOL_TOXIC] * 0.1 * PROCESS_ACCURACY) + else + take_damage(owner.chem_effects[CE_ALCOHOL_TOXIC] * 0.1 * PROCESS_ACCURACY, prob(1)) // Chance to warn them \ No newline at end of file diff --git a/code/modules/organs/internal/lungs.dm b/code/modules/organs/internal/lungs.dm new file mode 100644 index 00000000000..fae4bc5ee6b --- /dev/null +++ b/code/modules/organs/internal/lungs.dm @@ -0,0 +1,26 @@ +#define PROCESS_ACCURACY 10 + +/obj/item/organ/internal/lungs + name = "lungs" + icon_state = "lungs" + gender = PLURAL + organ_tag = O_LUNGS + parent_organ = BP_TORSO + +/obj/item/organ/internal/lungs/process() + ..() + + if(!owner) + return + + if (germ_level > INFECTION_LEVEL_ONE) + if(prob(5)) + owner.emote("cough") //respitory tract infection + + if(is_bruised()) + if(prob(2)) + spawn owner.emote("me", 1, "coughs up blood!") + owner.drip(10) + if(prob(4)) + spawn owner.emote("me", 1, "gasps for air!") + owner.losebreath += 15 \ No newline at end of file diff --git a/code/modules/organs/internal/organ_internal.dm b/code/modules/organs/internal/organ_internal.dm new file mode 100644 index 00000000000..100666caaaa --- /dev/null +++ b/code/modules/organs/internal/organ_internal.dm @@ -0,0 +1,36 @@ +#define PROCESS_ACCURACY 10 + +/**************************************************** + INTERNAL ORGANS DEFINES +****************************************************/ +/obj/item/organ/internal + var/dead_icon // Icon to use when the organ has died. + +/obj/item/organ/internal/die() + ..() + if((status & ORGAN_DEAD) && dead_icon) + icon_state = dead_icon + +/obj/item/organ/internal/Destroy() + if(owner) + owner.internal_organs.Remove(src) + owner.internal_organs_by_name[organ_tag] = null + owner.internal_organs_by_name -= organ_tag + while(null in owner.internal_organs) + owner.internal_organs -= null + var/obj/item/organ/external/E = owner.organs_by_name[parent_organ] + if(istype(E)) E.internal_organs -= src + return ..() + +/obj/item/organ/internal/remove_rejuv() + if(owner) + owner.internal_organs -= src + owner.internal_organs_by_name[organ_tag] = null + owner.internal_organs_by_name -= organ_tag + while(null in owner.internal_organs) + owner.internal_organs -= null + var/obj/item/organ/external/E = owner.organs_by_name[parent_organ] + if(istype(E)) E.internal_organs -= src + ..() + +// Brain is defined in brain_item.dm. \ No newline at end of file diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 13eef2eaf41..e1cf0cad9e2 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -28,6 +28,7 @@ var/list/organ_cache = list() var/min_broken_damage = 30 // Damage before becoming broken var/max_damage // Damage cap var/rejecting // Is this organ already being rejected? + var/preserved = 0 // If this is 1, prevents organ decay. /obj/item/organ/Destroy() @@ -50,6 +51,7 @@ var/list/organ_cache = list() max_damage = min_broken_damage * 2 if(istype(holder)) src.owner = holder + src.w_class = max(src.w_class + mob_size_difference(holder.mob_size, MOB_MEDIUM), 1) //smaller mobs have smaller organs. species = all_species["Human"] if(holder.dna) dna = holder.dna.Clone() @@ -99,7 +101,7 @@ var/list/organ_cache = list() // Don't process if we're in a freezer, an MMI or a stasis bag.or a freezer or something I dunno if(istype(loc,/obj/item/device/mmi)) return - if(istype(loc,/obj/structure/closet/body_bag/cryobag) || istype(loc,/obj/structure/closet/crate/freezer) || istype(loc,/obj/item/weapon/storage/box/freezer) || istype(loc,/obj/item/weapon/gripper/no_use/organ)) + if(preserved) return //Process infections if ((robotic >= ORGAN_ROBOT) || (owner && owner.species && (owner.species.flags & IS_PLANT))) @@ -258,6 +260,9 @@ var/list/organ_cache = list() min_bruised_damage = 15 min_broken_damage = 35 +/obj/item/organ/proc/digitize() //Used to make the circuit-brain. On this level in the event more circuit-organs are added/tweaks are wanted. + robotize() + /obj/item/organ/emp_act(severity) if(!(robotic >= ORGAN_ROBOT)) return diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index a1a31fad7c6..612cda4a985 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -60,7 +60,7 @@ var/cannot_gib // Impossible to gib, distinct from amputation. var/joint = "joint" // Descriptive string used in dislocation. var/amputation_point // Descriptive string used in amputation. - var/dislocated = 0 // If you target a joint, you can dislocate the limb, causing temporary damage to the organ. + var/dislocated = 0 // If you target a joint, you can dislocate the limb, impairing it's usefulness and causing pain var/encased // Needs to be opened with a saw to access the organs. // Surgery vars. @@ -68,6 +68,8 @@ var/stage = 0 var/cavity = 0 + // HUD element variable, see organ_icon.dm get_damage_hud_image() + var/image/hud_damage_image /obj/item/organ/external/Destroy() @@ -156,32 +158,38 @@ /obj/item/organ/external/proc/is_dislocated() if(dislocated > 0) return 1 - if(parent) - return parent.is_dislocated() + if(is_parent_dislocated()) + return 1//if any parent is dislocated, we are considered dislocated as well return 0 -/obj/item/organ/external/proc/dislocate(var/primary) - if(dislocated != -1) - if(primary) - dislocated = 2 - else - dislocated = 1 - owner.verbs |= /mob/living/carbon/human/proc/undislocate - if(children && children.len) - for(var/obj/item/organ/external/child in children) - child.dislocate() +/obj/item/organ/external/proc/is_parent_dislocated() + var/obj/item/organ/external/O = parent + while(O && O.dislocated != -1) + if(O.dislocated == 1) + return 1 + O = O.parent + return 0 + + +/obj/item/organ/external/proc/dislocate() + if(dislocated == -1) + return + + dislocated = 1 + if(owner) + owner.verbs |= /mob/living/carbon/human/proc/undislocate /obj/item/organ/external/proc/undislocate() - if(dislocated != -1) - dislocated = 0 - if(children && children.len) - for(var/obj/item/organ/external/child in children) - if(child.dislocated == 1) - child.undislocate() + if(dislocated == -1) + return + + dislocated = 0 if(owner) owner.shock_stage += 20 + + //check to see if we still need the verb for(var/obj/item/organ/external/limb in owner.organs) - if(limb.dislocated == 2) + if(limb.dislocated == 1) return owner.verbs -= /mob/living/carbon/human/proc/undislocate @@ -466,6 +474,11 @@ This function completely restores a damaged organ to perfect condition. wounds += I owner.custom_pain("You feel something rip in your [name]!", 1) +//Burn damage can cause fluid loss due to blistering and cook-off + if((damage > 5 || damage + burn_dam >= 15) && type == BURN && (robotic < ORGAN_ROBOT)) + var/fluid_loss = (damage/(owner.maxHealth - config.health_threshold_dead)) * owner.species.blood_volume*(1 - BLOOD_VOLUME_SURVIVE/100) + owner.remove_blood(fluid_loss) + // first check whether we can widen an existing wound if(wounds.len > 0 && prob(max(50+(number_wounds-1)*10,90))) if((type == CUT || type == BRUISE) && damage >= 5) @@ -725,7 +738,7 @@ Note that amputating the affected organ does in fact remove the infection from t else brute_dam += W.damage - if(!(robotic >= ORGAN_ROBOT) && W.bleeding() && (H && !H.should_have_organ(O_HEART))) + if(!(robotic >= ORGAN_ROBOT) && W.bleeding() && (H && H.should_have_organ(O_HEART))) W.bleed_timer-- status |= ORGAN_BLEEDING @@ -1085,7 +1098,7 @@ Note that amputating the affected organ does in fact remove the infection from t return 0 /obj/item/organ/external/proc/is_usable() - return !is_dislocated() && !(status & (ORGAN_MUTATED|ORGAN_DEAD)) + return !(status & (ORGAN_MUTATED|ORGAN_DEAD)) /obj/item/organ/external/proc/is_malfunctioning() return ((robotic >= ORGAN_ROBOT) && (brute_dam + burn_dam) >= 10 && prob(brute_dam + burn_dam)) diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 035a0692c39..0fd12ad9efa 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -89,6 +89,8 @@ var/global/list/limb_icon_cache = list() if(owner && owner.gender == MALE) gender = "m" + icon_cache_key = "[icon_name]_[species ? species.name : "Human"]" + if(force_icon) mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") else @@ -120,6 +122,9 @@ var/global/list/limb_icon_cache = list() limb_icon_cache[cache_key] = I mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) + if(model) + icon_cache_key += "_model_[model]" + dir = EAST icon = mob_icon return mob_icon @@ -134,6 +139,7 @@ var/global/list/limb_icon_cache = list() applying.SetIntensity(0.7) else if(status & ORGAN_DEAD) + icon_cache_key += "_dead" applying.ColorTone(rgb(10,50,0)) applying.SetIntensity(0.7) @@ -142,14 +148,18 @@ var/global/list/limb_icon_cache = list() applying.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD) else applying.Blend(rgb(-s_tone, -s_tone, -s_tone), ICON_SUBTRACT) + icon_cache_key += "_tone_[s_tone]" else if(s_col && s_col.len >= 3) applying.Blend(rgb(s_col[1], s_col[2], s_col[3]), ICON_ADD) + icon_cache_key += "_color_[s_col[1]]_[s_col[2]]_[s_col[3]]" // Translucency. if(nonsolid) applying += rgb(,,,180) // SO INTUITIVE TY BYOND return applying +/obj/item/organ/external/var/icon_cache_key + // new damage icon system // adjusted to set damage_state to brute/burn code only (without r_name0 as before) /obj/item/organ/external/update_icon() @@ -158,3 +168,48 @@ var/global/list/limb_icon_cache = list() damage_state = n_is return 1 return 0 + + +// Returns an image for use by the human health dolly HUD element. +// If the user has traumatic shock, it will be passed in as a minimum +// damage amount to represent the pain of the injuries involved. + +// Global scope, used in code below. +var/list/flesh_hud_colours = list("#02BA08","#9ECF19","#DEDE10","#FFAA00","#FF0000","#AA0000","#660000") +var/list/robot_hud_colours = list("#CFCFCF","#AFAFAF","#8F8F8F","#6F6F6F","#4F4F4F","#2F2F2F","#000000") + +/obj/item/organ/external/proc/get_damage_hud_image(var/min_dam_state) + + // Generate the greyscale base icon and cache it for later. + // icon_cache_key is set by any get_icon() calls that are made. + // This looks convoluted, but it's this way to avoid icon proc calls. + if(!hud_damage_image) + var/cache_key = "dambase-[icon_cache_key]" + if(!icon_cache_key || !limb_icon_cache[cache_key]) + limb_icon_cache[cache_key] = icon(get_icon(), null, SOUTH) + var/image/temp = image(limb_icon_cache[cache_key]) + if((robotic < ORGAN_ROBOT) && species) + // Calculate the required colour matrix. + var/r = 0.30 * species.health_hud_intensity + var/g = 0.59 * species.health_hud_intensity + var/b = 0.11 * species.health_hud_intensity + temp.color = list(r, r, r, g, g, g, b, b, b) + else if(model) + var/datum/robolimb/R = all_robolimbs[model] + if(istype(R)) + var/r = 0.30 * R.health_hud_intensity + var/g = 0.59 * R.health_hud_intensity + var/b = 0.11 * R.health_hud_intensity + temp.color = list(r, r, r, g, g, g, b, b, b) + hud_damage_image = image(null) + hud_damage_image.overlays += temp + + // Calculate the required color index. + var/dam_state = min(1,((brute_dam+burn_dam)/max_damage)) + // Apply traumatic shock min damage state. + if(!isnull(min_dam_state) && dam_state < min_dam_state) + dam_state = min_dam_state + // Apply colour and return product. + var/list/hud_colours = (robotic < ORGAN_ROBOT) ? flesh_hud_colours : robot_hud_colours + hud_damage_image.color = hud_colours[max(1,min(ceil(dam_state*hud_colours.len),hud_colours.len))] + return hud_damage_image diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm index 5241747f12c..b0f16372ee2 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -42,6 +42,12 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ var/list/species_cannot_use = list("Teshari") var/list/monitor_styles //If empty, the model of limbs offers a head compatible with monitors. var/parts = BP_ALL //Defines what parts said brand can replace on a body. + var/health_hud_intensity = 1 // Intensity modifier for the health GUI indicator. + +/datum/robolimb/nanotrasen + company = "NanoTrasen" + desc = "A simple but efficient robotic limb, created by NanoTrasen." + icon = 'icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_main.dmi' /datum/robolimb/bishop company = "Bishop" @@ -191,6 +197,9 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\ zenghu company = "Zeng-Hu" + nanotrasen + company = "NanoTrasen" + /obj/item/weapon/disk/limb/New(var/newloc) ..() if(company) diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm index ab5c4367585..7f371066bbd 100644 --- a/code/modules/organs/subtypes/diona.dm +++ b/code/modules/organs/subtypes/diona.dm @@ -52,7 +52,7 @@ name = "left upper tendril" organ_tag = "l_arm" icon_name = "l_arm" - max_damage = 35 + max_damage = 50 min_broken_damage = 20 w_class = 3 body_part = ARM_LEFT @@ -69,7 +69,7 @@ name = "left lower tendril" organ_tag = "l_leg" icon_name = "l_leg" - max_damage = 35 + max_damage = 50 min_broken_damage = 20 w_class = 3 body_part = LEG_LEFT @@ -88,7 +88,7 @@ name = "left foot" organ_tag = "l_foot" icon_name = "l_foot" - max_damage = 20 + max_damage = 35 min_broken_damage = 10 w_class = 2 body_part = FOOT_LEFT @@ -110,7 +110,7 @@ name = "left grasper" organ_tag = "l_hand" icon_name = "l_hand" - max_damage = 30 + max_damage = 40 min_broken_damage = 15 w_class = 2 body_part = HAND_LEFT @@ -206,4 +206,5 @@ amputation_point = "branch" joint = "structural ligament" dislocated = -1 - vital = 0 \ No newline at end of file + vital = 0 + slot_flags = SLOT_BELT diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index df74367d0d5..df692c4a97f 100644 --- a/code/modules/organs/subtypes/machine.dm +++ b/code/modules/organs/subtypes/machine.dm @@ -84,9 +84,18 @@ /obj/item/organ/internal/mmi_holder/posibrain name = "positronic brain interface" brain_type = /obj/item/device/mmi/digital/posibrain - + /obj/item/organ/internal/mmi_holder/posibrain/update_from_mmi() ..() stored_mmi.icon_state = "posibrain-occupied" + icon_state = stored_mmi.icon_state + +/obj/item/organ/internal/mmi_holder/robot + name = "digital brain interface" + brain_type = /obj/item/device/mmi/digital/robot + +/obj/item/organ/internal/mmi_holder/robot/update_from_mmi() + ..() + stored_mmi.icon_state = "mainboard" icon_state = stored_mmi.icon_state \ No newline at end of file diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm index 36fc7ba6776..f54945b51d3 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -2,6 +2,8 @@ ORGAN DEFINES ****************************************************/ +//Make sure that w_class is set as if the parent mob was medium sized! This is because w_class is adjusted automatically for mob_size in New() + /obj/item/organ/external/chest name = "upper body" organ_tag = BP_TORSO @@ -46,7 +48,7 @@ organ_tag = "l_arm" name = "left arm" icon_name = "l_arm" - max_damage = 50 + max_damage = 80 min_broken_damage = 30 w_class = 3 body_part = ARM_LEFT @@ -67,7 +69,7 @@ organ_tag = "l_leg" name = "left leg" icon_name = "l_leg" - max_damage = 50 + max_damage = 80 min_broken_damage = 30 w_class = 3 body_part = LEG_LEFT @@ -90,7 +92,7 @@ organ_tag = "l_foot" name = "left foot" icon_name = "l_foot" - max_damage = 30 + max_damage = 50 min_broken_damage = 15 w_class = 2 body_part = FOOT_LEFT @@ -119,7 +121,7 @@ organ_tag = "l_hand" name = "left hand" icon_name = "l_hand" - max_damage = 30 + max_damage = 50 min_broken_damage = 15 w_class = 2 body_part = HAND_LEFT @@ -148,6 +150,7 @@ organ_tag = BP_HEAD icon_name = "head" name = "head" + slot_flags = SLOT_BELT max_damage = 75 min_broken_damage = 35 w_class = 3 diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index b99833670d5..8c30f1d4863 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -32,54 +32,37 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins /obj/machinery/photocopier/faxmachine/attack_hand(mob/user as mob) user.set_machine(src) - var/dat = "Fax Machine
    " + ui_interact(user) - var/scan_name +/** + * Display the NanoUI window for the fax machine. + * + * See NanoUI documentation for details. + */ +/obj/machinery/photocopier/faxmachine/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + + var/list/data = list() if(scan) - scan_name = scan.name + data["scanName"] = scan.name else - scan_name = "--------" - - dat += "Confirm Identity: [scan_name]
    " - - if(authenticated) - dat += "{Log Out}" + data["scanName"] = null + data["bossName"] = boss_name + data["authenticated"] = authenticated + data["copyItem"] = copyitem + if(copyitem) + data["copyItemName"] = copyitem.name else - dat += "{Log In}" + data["copyItemName"] = null + data["cooldown"] = sendcooldown + data["destination"] = destination - dat += "
    " - - if(authenticated) - dat += "Logged in to: [boss_name] Quantum Entanglement Network

    " - - if(copyitem) - dat += "Remove Item

    " - - if(sendcooldown) - dat += "Transmitter arrays realigning. Please stand by.
    " - - else - - dat += "Send
    " - dat += "Currently sending: [copyitem.name]
    " - dat += "Sending to: [destination]
    " - - else - if(sendcooldown) - dat += "Please insert paper to send via secure connection.

    " - dat += "Transmitter arrays realigning. Please stand by.
    " - else - dat += "Please insert paper to send via secure connection.

    " - - else - dat += "Proper authentication is required to use this device.

    " - - if(copyitem) - dat += "Remove Item
    " - - user << browse(dat, "window=copier") - onclose(user, "copier") - return + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "fax.tmpl", src.name, 500, 500) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(10) //this machine is so unimportant let's not have it update that often. /obj/machinery/photocopier/faxmachine/Topic(href, href_list) if(href_list["send"]) @@ -99,7 +82,6 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins usr.put_in_hands(copyitem) usr << "You take \the [copyitem] out of \the [src]." copyitem = null - updateUsrDialog() if(href_list["scan"]) if (scan) @@ -131,7 +113,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins if(href_list["logout"]) authenticated = 0 - updateUsrDialog() + nanomanager.update_uis(src) /obj/machinery/photocopier/faxmachine/proc/sendfax(var/destination) if(stat & (BROKEN|NOPOWER)) @@ -158,7 +140,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins return 0 //You can't send faxes to "Unknown" flick("faxreceive", src) - playsound(loc, "sound/items/polaroid1.ogg", 50, 1) + playsound(loc, "sound/effects/printer.ogg", 50, 1) // give the sprite some time to flick sleep(20) @@ -216,3 +198,4 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins for(var/client/C in admins) if(R_ADMIN & C.holder.rights) C << msg + C << 'sound/effects/printer.ogg' diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index ea5488152d4..4f2c6d59ba9 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -2,7 +2,6 @@ name = "hand labeler" icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler0" - item_state = "flight" var/label = null var/labels_left = 30 var/mode = 0 //off or on. diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index bb4a9d1a23f..1e85563ee80 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -260,6 +260,7 @@ t = replacetext(t, "\[row\]", "
    ") t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[sglogo\]", "") t = "[t]" else // If it is a crayon, and he still tries to use these, make them empty! @@ -274,6 +275,7 @@ t = replacetext(t, "\[row\]", "") t = replacetext(t, "\[cell\]", "") t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[sglogo\]", "") t = "[t]" diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 8a438e8e905..a2a1273ced5 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -2,6 +2,10 @@ name = "paper bin" icon = 'icons/obj/bureaucracy.dmi' icon_state = "paper_bin1" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) item_state = "sheet-metal" throwforce = 1 w_class = 3 diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index d122d42c2b1..ec0d7acf19f 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -30,24 +30,32 @@ /obj/machinery/photocopier/attack_hand(mob/user as mob) user.set_machine(src) - var/dat = "Photocopier

    " - if(copyitem) - dat += "Remove Item
    " - if(toner) - dat += "Copy
    " - dat += "Printing: [copies] copies." - dat += "- " - dat += "+

    " - else if(toner) - dat += "Please insert something to copy.

    " + ui_interact(user) + +/** + * Display the NanoUI window for the photocopier. + * + * See NanoUI documentation for details. + */ +/obj/machinery/photocopier/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + + var/list/data = list() + data["copyItem"] = copyitem + data["toner"] = toner + data["copies"] = copies + data["maxCopies"] = maxcopies if(istype(user,/mob/living/silicon)) - dat += "Print photo from database

    " - dat += "Current toner level: [toner]" - if(!toner) - dat +="
    Please insert a new toner cartridge!" - user << browse(dat, "window=copier") - onclose(user, "copier") - return + data["isSilicon"] = 1 + else + data["isSilicon"] = null + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "photocopier.tmpl", src.name, 300, 250) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(10) /obj/machinery/photocopier/Topic(href, href_list) if(href_list["copy"]) @@ -72,22 +80,18 @@ break use_power(active_power_usage) - updateUsrDialog() else if(href_list["remove"]) if(copyitem) copyitem.loc = usr.loc usr.put_in_hands(copyitem) usr << "You take \the [copyitem] out of \the [src]." copyitem = null - updateUsrDialog() else if(href_list["min"]) if(copies > 1) copies-- - updateUsrDialog() else if(href_list["add"]) if(copies < maxcopies) copies++ - updateUsrDialog() else if(href_list["aipic"]) if(!istype(usr,/mob/living/silicon)) return if(stat & (BROKEN|NOPOWER)) return @@ -109,7 +113,8 @@ p.desc += " - Copied by [tempAI.name]" toner -= 5 sleep(15) - updateUsrDialog() + + nanomanager.update_uis(src) /obj/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob) if(istype(O, /obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo) || istype(O, /obj/item/weapon/paper_bundle)) @@ -119,7 +124,6 @@ O.loc = src user << "You insert \the [O] into \the [src]." flick(insert_anim, src) - updateUsrDialog() else user << "There is already something in \the [src]." else if(istype(O, /obj/item/device/toner)) @@ -129,7 +133,6 @@ var/obj/item/device/toner/T = O toner += T.toner_amount qdel(O) - updateUsrDialog() else user << "This cartridge is not yet ready for replacement! Use up the rest of the toner." else if(istype(O, /obj/item/weapon/wrench)) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 5787ff2d029..0df6b304328 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -14,7 +14,7 @@ icon = 'icons/obj/items.dmi' desc = "A camera film cartridge. Insert it into a camera to reload it." icon_state = "film" - item_state = "electropack" + item_state = "camera" w_class = 1.0 @@ -120,7 +120,7 @@ var/global/photo_count = 0 icon = 'icons/obj/items.dmi' desc = "A polaroid camera. 10 photos left." icon_state = "camera" - item_state = "electropack" + item_state = "camera" w_class = 2.0 flags = CONDUCT slot_flags = SLOT_BELT diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index f37cdce7063..feb740ba735 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -24,6 +24,10 @@ name = "head of security's rubber stamp" icon_state = "stamp-hos" +/obj/item/weapon/stamp/ward + name = "warden's rubber stamp" + icon_state = "stamp-ward" + /obj/item/weapon/stamp/ce name = "chief engineer's rubber stamp" icon_state = "stamp-ce" @@ -53,9 +57,18 @@ icon_state = "stamp-cent" /obj/item/weapon/stamp/qm - name = "quartermaster's stamp" + name = "quartermaster's rubber stamp" icon_state = "stamp-qm" +/obj/item/weapon/stamp/cargo + name = "cargo rubber stamp" + icon_state = "stamp-cargo" + +/obj/item/weapon/stamp/solgov + name = "solgov stamp" + icon_state = "stamp-sg" + + // Syndicate stamp to forge documents. /obj/item/weapon/stamp/chameleon/attack_self(mob/user as mob) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 1d19b0fd6b4..49b72f4944a 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1139,12 +1139,15 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) // damage and destruction acts /obj/machinery/power/apc/emp_act(severity) + if(is_critical) + severity += 2 if(cell) cell.emp_act(severity) lighting = 0 - equipment = 0 - environ = 0 + if(!is_critical) + equipment = 0 + environ = 0 update() update_icon() diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index a423e4ced4a..4d75a99cf73 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -110,6 +110,17 @@ var/list/possible_cable_coil_colours = list( cable_list -= src //remove it from global cable list ..() // then go ahead and delete the cable +// Ghost examining the cable -> tells him the power +/obj/structure/cable/attack_ghost(mob/user) + if(user.client && user.client.inquisitive_ghost) + user.examinate(src) + // following code taken from attackby (multitool) + if(powernet && (powernet.avail > 0)) + user << "[powernet.avail]W in power network." + else + user << "The cable is not powered." + return + /////////////////////////////////// // General procedures /////////////////////////////////// diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index f3596a5d9a0..2d736804d5b 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -26,6 +26,8 @@ ..() if (fixture_type == "bulb") icon_state = "bulb-construct-stage1" + if (fixture_type == "flamp") + icon_state = "flamp-construct-stage1" /obj/machinery/light_construct/examine(mob/user) if(!..(user, 2)) @@ -71,6 +73,8 @@ src.icon_state = "tube-construct-stage1" if("bulb") src.icon_state = "bulb-construct-stage1" + if("flamp") + src.icon_state = "flamp-construct-stage1" new /obj/item/stack/cable_coil(get_turf(src.loc), 1, "red") user.visible_message("[user.name] removes the wiring from [src].", \ "You remove the wiring from [src].", "You hear a noise.") @@ -86,6 +90,8 @@ src.icon_state = "tube-construct-stage2" if("bulb") src.icon_state = "bulb-construct-stage2" + if("flamp") + src.icon_state = "flamp-construct-stage2" src.stage = 2 user.visible_message("[user.name] adds wires to [src].", \ "You add wires to [src].") @@ -98,6 +104,8 @@ src.icon_state = "tube-empty" if("bulb") src.icon_state = "bulb-empty" + if("flamp") + src.icon_state = "flamp-empty" src.stage = 3 user.visible_message("[user.name] closes [src]'s casing.", \ "You close [src]'s casing.", "You hear a noise.") @@ -109,6 +117,8 @@ newlight = new /obj/machinery/light/built(src.loc) if ("bulb") newlight = new /obj/machinery/light/small/built(src.loc) + if ("flamp") + newlight = new /obj/machinery/light/flamp/built(src.loc) newlight.dir = src.dir src.transfer_fingerprints_to(newlight) @@ -127,6 +137,17 @@ fixture_type = "bulb" sheets_refunded = 1 +/obj/machinery/light_construct/flamp + name = "floor light fixture frame" + desc = "A floor light fixture under construction." + icon = 'icons/obj/lighting.dmi' + icon_state = "flamp-construct-stage1" + anchored = 0 + layer = OBJ_LAYER + stage = 1 + fixture_type = "flamp" + sheets_refunded = 2 + // the standard tube light fixture /obj/machinery/light name = "light fixture" @@ -141,7 +162,6 @@ active_power_usage = 20 power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list var/on = 0 // 1 if on, 0 if off - var/on_gs = 0 var/brightness_range = 10 // luminosity when on, also used in power calculation var/brightness_power = 3 var/brightness_color = null @@ -166,6 +186,18 @@ desc = "A small lighting fixture." light_type = /obj/item/weapon/light/bulb +/obj/machinery/light/flamp + icon_state = "flamp1" + base_state = "flamp" + fitting = "bulb" + brightness_range = 5 + brightness_power = 2 + layer = OBJ_LAYER + brightness_color = "#FFF4E5" + desc = "A floor lamp." + light_type = /obj/item/weapon/light/bulb + var/lamp_shade = 1 + /obj/machinery/light/small/emergency brightness_range = 6 brightness_power = 2 @@ -188,6 +220,12 @@ update(0) ..() +/obj/machinery/light/flamp/built/New() + status = LIGHT_EMPTY + lamp_shade = 0 + update(0) + ..() + // create a new lighting fixture /obj/machinery/light/New() ..() @@ -228,9 +266,29 @@ on = 0 return +/obj/machinery/light/flamp/update_icon() + if(lamp_shade) + base_state = "flampshade" + switch(status) // set icon_states + if(LIGHT_OK) + icon_state = "[base_state][on]" + if(LIGHT_EMPTY) + on = 0 + icon_state = "[base_state][on]" + if(LIGHT_BURNED) + on = 0 + icon_state = "[base_state][on]" + if(LIGHT_BROKEN) + on = 0 + icon_state = "[base_state][on]" + return + else + base_state = "flamp" + ..() + + // update the icon_state and luminosity of the light depending on its state /obj/machinery/light/proc/update(var/trigger = 1) - update_icon() if(on) if(light_range != brightness_range || light_power != brightness_power || light_color != brightness_color) @@ -245,7 +303,7 @@ else if( prob( min(60, switchcount*switchcount*0.01) ) ) if(status == LIGHT_OK && trigger) status = LIGHT_BURNED - icon_state = "[base_state]-burned" + update_icon() on = 0 set_light(0) else @@ -256,8 +314,7 @@ set_light(0) active_power_usage = light_range * light_power - if(on != on_gs) - on_gs = on + /obj/machinery/light/attack_generic(var/mob/user, var/damage) if(!damage) @@ -373,6 +430,11 @@ if("bulb") newlight = new /obj/machinery/light_construct/small(src.loc) newlight.icon_state = "bulb-construct-stage2" + + if("flamp") + newlight = new /obj/machinery/light_construct/flamp(src.loc) + newlight.icon_state = "flamp-construct-stage2" + newlight.dir = src.dir newlight.stage = 2 newlight.fingerprints = src.fingerprints @@ -390,6 +452,30 @@ if (prob(75)) electrocute_mob(user, get_area(src), src, rand(0.7,1.0)) +/obj/machinery/light/flamp/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/wrench)) + anchored = !anchored + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + user << "You [anchored ? "wrench" : "unwrench"] \the [src]." + + if(!lamp_shade) + if(istype(W, /obj/item/weapon/lampshade)) + lamp_shade = 1 + qdel(W) + update_icon() + return + + else + if(istype(W, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1) + user.visible_message("[user.name] removes [src]'s lamp shade.", \ + "You remove [src]'s lamp shade.", "You hear a noise.") + lamp_shade = 0 + new /obj/item/weapon/lampshade(src.loc) + update_icon() + return + + ..() // returns whether this light has power // true if area has power and lightswitch is on @@ -397,6 +483,13 @@ var/area/A = get_area(src) return A && A.lightswitch && (!A.requires_power || A.power_light) +/obj/machinery/light/flamp/has_power() + var/area/A = get_area(src) + if(lamp_shade) + return A && (!A.requires_power || A.power_light) + else + return A && A.lightswitch && (!A.requires_power || A.power_light) + /obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) if(flickering) return flickering = 1 @@ -417,6 +510,10 @@ src.flicker(1) return +/obj/machinery/light/flamp/attack_ai(mob/user) + attack_hand() + return + // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player /obj/machinery/light/attack_hand(mob/user) @@ -481,6 +578,21 @@ status = LIGHT_EMPTY update() +/obj/machinery/light/flamp/attack_hand(mob/user) + if(lamp_shade) + if(status == LIGHT_EMPTY) + user << "There is no [fitting] in this light." + return + + if(on) + on = 0 + update() + else + on = has_power() + update() + else + ..() + /obj/machinery/light/attack_tk(mob/user) if(status == LIGHT_EMPTY) @@ -708,3 +820,11 @@ sharp = 1 playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) update() + +//Lamp Shade +/obj/item/weapon/lampshade + name = "lamp shade" + desc = "A lamp shade for a lamp." + icon = 'icons/obj/lighting.dmi' + icon_state = "lampshade" + w_class = 1 \ No newline at end of file diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 51093296b27..b2277c74cf2 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -24,6 +24,8 @@ var/state = 0 var/locked = 0 + var/integrity = 80 + /obj/machinery/power/emitter/verb/rotate() set name = "Rotate" @@ -221,3 +223,12 @@ emagged = 1 user.visible_message("[user.name] emags [src].","You short out the lock.") return 1 + +/obj/machinery/power/emitter/bullet_act(var/obj/item/projectile/P) + if(!P || !P.damage || (!P.damage_type == BRUTE || !P.damage_type == BURN) ) + return + + integrity = integrity - P.damage + if(integrity >= 0) + explosion(get_turf(src), 1, 2, 4) + qdel(src) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index dd1c2a56b60..cbb974e2e68 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -1,6 +1,6 @@ #define SOLAR_MAX_DIST 40 -#define SOLARGENRATE 1500 +var/solar_gen_rate = 1500 var/list/solars_list = list() /obj/machinery/power/solar @@ -130,7 +130,7 @@ var/list/solars_list = list() if(powernet == control.powernet)//check if the panel is still connected to the computer if(obscured) //get no light from the sun, so don't generate power return - var/sgen = SOLARGENRATE * sunfrac + var/sgen = solar_gen_rate * sunfrac add_avail(sgen) control.gen += sgen else //if we're no longer on the same powernet, remove from control computer @@ -206,7 +206,7 @@ var/list/solars_list = list() desc = "A solar panel assembly kit, allows constructions of a solar panel, or with a tracking circuit board, a solar tracker" icon = 'icons/obj/power.dmi' icon_state = "sp_base" - item_state = "electropack" + item_state = "camera" w_class = 4 // Pretty big! anchored = 0 var/tracker = 0 diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 59428ceb947..930cc54d828 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -91,6 +91,8 @@ /obj/item/ammo_magazine/New() ..() + pixel_x = rand(-5, 5) + pixel_y = rand(-5, 5) if(multiple_sprites) initialize_magazine_icondata(src) diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 001753e81a8..993db0f27c9 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -238,7 +238,7 @@ /obj/item/ammo_magazine/a10mm name = "magazine (10mm)" - icon_state = "12mm" + icon_state = "10mm" origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE caliber = "10mm" diff --git a/code/modules/projectiles/effects.dm b/code/modules/projectiles/effects.dm index 7874eeb383d..2235f188e7b 100644 --- a/code/modules/projectiles/effects.dm +++ b/code/modules/projectiles/effects.dm @@ -124,3 +124,15 @@ //---------------------------- /obj/effect/projectile/bullet/muzzle icon_state = "muzzle_bullet" + +//---------------------------- +// Lightning beam +//---------------------------- +/obj/effect/projectile/lightning/tracer + icon_state = "lightning" + +/obj/effect/projectile/lightning/muzzle + icon_state = "muzzle_lightning" + +/obj/effect/projectile/lightning/impact + icon_state = "impact_lightning" \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 2db78ccd862..8c3169b682d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -333,6 +333,14 @@ P.accuracy = accuracy + acc_mod P.dispersion = dispersion + // Certain statuses make it harder to aim, blindness especially. Same chances as melee, however guns accuracy uses multiples of 15. + if(user.eye_blind) + accuracy -= 5 + if(user.eye_blurry) + accuracy -= 2 + if(user.confused) + accuracy -= 3 + //accuracy bonus from aiming if (aim_targets && (target in aim_targets)) //If you aim at someone beforehead, it'll hit more often. @@ -370,7 +378,6 @@ return ..() - //Suicide handling. /obj/item/weapon/gun/var/mouthshoot = 0 //To stop people from suiciding twice... >.> /obj/item/weapon/gun/proc/handle_suicide(mob/living/user) diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 9d0ba4e7366..5d2fe06fa48 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -68,13 +68,14 @@ obj/item/weapon/gun/energy/retro fire_sound = 'sound/weapons/lasercannonfire.ogg' origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) slot_flags = SLOT_BELT|SLOT_BACK - projectile_type = /obj/item/projectile/beam/heavylaser - charge_cost = 400 - max_shots = 6 - fire_delay = 20 + projectile_type = /obj/item/projectile/beam/heavylaser/cannon + max_shots = 1 + fire_delay = 30 // requires_two_hands = 1 one_handed_penalty = 6 // The thing's heavy and huge. - accuracy = 2 + accuracy = 3 + charge_cost = 400 + /obj/item/weapon/gun/energy/lasercannon/mounted name = "mounted laser cannon" @@ -83,6 +84,10 @@ obj/item/weapon/gun/energy/retro recharge_time = 10 accuracy = 0 // Mounted cannons are just fine the way they are. requires_two_hands = 0 // Not sure if two-handing gets checked for mounted weapons, but better safe than sorry. + projectile_type = /obj/item/projectile/beam/heavylaser + charge_cost = 400 + max_shots = 6 + fire_delay = 20 /obj/item/weapon/gun/energy/xray name = "xray laser gun" @@ -101,7 +106,7 @@ obj/item/weapon/gun/energy/retro desc = "The HI DMR 9E is an older design of Hesphaistos Industries. A designated marksman rifle capable of shooting powerful \ ionized beams, this is a weapon to kill from a distance." icon_state = "sniper" - item_state = "laser" // placeholder + item_state_slots = list(slot_r_hand_str = "laser", slot_l_hand_str = "laser") //placeholder fire_sound = 'sound/weapons/gauss_shoot.ogg' origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4) projectile_type = /obj/item/projectile/beam/sniper diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index ef3a74666ef..0c3822cced0 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -106,7 +106,6 @@ icon = 'icons/obj/gun.dmi' item_icons = null icon_state = "staffofchange" - item_state = "staffofchange" fire_sound = 'sound/weapons/emitter.ogg' flags = CONDUCT slot_flags = SLOT_BACK @@ -142,7 +141,6 @@ obj/item/weapon/gun/energy/staff/focus desc = "An artefact that channels the will of the user into destructive bolts of force. If you aren't careful with it, you might poke someone's brain out." icon = 'icons/obj/wizard.dmi' icon_state = "focus" - item_state = "focus" slot_flags = SLOT_BACK projectile_type = /obj/item/projectile/forcebolt /* diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 9caf66af4b7..08442fcb8c1 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -107,6 +107,8 @@ w_class = 3 caliber = ".45" silenced = 1 + fire_delay = 1 + recoil = 0 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) load_method = MAGAZINE magazine_type = /obj/item/ammo_magazine/c45m @@ -124,6 +126,13 @@ magazine_type = /obj/item/ammo_magazine/a50 allowed_magazines = list(/obj/item/ammo_magazine/a50) +/obj/item/weapon/gun/projectile/deagle/update_icon() + ..() + if(ammo_magazine) + icon_state = "[initial(icon_state)]" + else + icon_state = "[initial(icon_state)]-e" + /obj/item/weapon/gun/projectile/deagle/gold desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .50 AE rounds." icon_state = "deagleg" diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index d69a97f2f49..f91054b2c7a 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -5,20 +5,20 @@ desc = "A portable anti-armour rifle fitted with a scope, the HI PTR-7 Rifle was originally designed to used against armoured exosuits. It is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells." icon_state = "heavysniper" item_state = "l6closed-empty" // placeholder + item_state_slots = list(slot_r_hand_str = "heavysniper", slot_l_hand_str = "heavysniper") w_class = 5 // So it can't fit in a backpack. force = 10 slot_flags = SLOT_BACK origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) caliber = "14.5mm" - recoil = 3 //extra kickback + recoil = 5 //extra kickback fire_sound = 'sound/weapons/sniper.ogg' // extra boom handle_casings = HOLD_CASINGS load_method = SINGLE_CASING max_shells = 1 ammo_type = /obj/item/ammo_casing/a145 - //+2 accuracy over the LWAP because only one shot - accuracy = -1 - scoped_accuracy = 2 + accuracy = -5 + scoped_accuracy = 5 var/bolt_open = 0 /obj/item/weapon/gun/projectile/heavysniper/update_icon() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index ff561b52501..ee46b5f42ed 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -54,6 +54,7 @@ var/drowsy = 0 var/agony = 0 var/embed = 0 // whether or not the projectile can embed itself in the mob + var/reflected = 0 // This should be set to 1 if reflected by any means, to prevent infinite reflections. var/hitscan = 0 // whether the projectile should be hitscan var/step_delay = 1 // the delay between iterations if not a hitscan projectile @@ -169,7 +170,7 @@ return //roll to-hit - miss_modifier = max(15*(distance-2) - round(15*accuracy) + miss_modifier, 0) + miss_modifier = max(15*(distance-2) - round(15*accuracy) + miss_modifier + round(15*target_mob.evasion), 0) var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1 || original != target_mob)) //if the projectile hits a target we weren't originally aiming at then retain the chance to miss var/result = PROJECTILE_FORCE_MISS diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index f564b399ad6..1049f5f70d4 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -42,6 +42,10 @@ tracer_type = /obj/effect/projectile/laser_heavy/tracer impact_type = /obj/effect/projectile/laser_heavy/impact +/obj/item/projectile/beam/heavylaser/cannon + damage = 90 + armor_penetration = 100 + /obj/item/projectile/beam/xray name = "xray beam" icon_state = "xray" diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 66155da7ea4..80112690b3e 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -23,7 +23,7 @@ //blind adjacent people for (var/mob/living/carbon/M in viewers(T, flash_range)) if(M.eyecheck() < 1) - flick("e_flash", M.flash) + M.flash_eyes() //snap pop playsound(src, 'sound/effects/snap.ogg', 50, 1) @@ -80,7 +80,8 @@ icon_state = "toxin" damage = 5 damage_type = TOX - weaken = 5 + agony = 120 + check_armour = "energy" /obj/item/projectile/energy/bolt diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm index 4787a53bf45..87d9c699d04 100644 --- a/code/modules/random_map/drop/drop_types.dm +++ b/code/modules/random_map/drop/drop_types.dm @@ -22,54 +22,112 @@ var/global/list/datum/supply_drop_loot/supply_drop /datum/supply_drop_loot/dd_SortValue() return name -/datum/supply_drop_loot/supermatter - name = "Supermatter" -/datum/supply_drop_loot/supermatter/New() - ..() - contents = list(/obj/machinery/power/supermatter) /datum/supply_drop_loot/lasers - name = "Lasers" + name = "Laser Warfare" container = /obj/structure/largecrate /datum/supply_drop_loot/lasers/New() ..() contents = list( - /obj/item/weapon/gun/energy/laser, - /obj/item/weapon/gun/energy/laser, - /obj/item/weapon/gun/energy/sniperrifle, - /obj/item/weapon/gun/energy/ionrifle) + /obj/item/clothing/gloves/arm_guard/laserproof, + /obj/item/clothing/shoes/leg_guard/laserproof, + /obj/item/clothing/head/helmet/laserproof, + /obj/item/clothing/suit/armor/laserproof, + /obj/item/clothing/glasses/sunglasses/sechud/tactical, + /obj/item/weapon/storage/belt/security/tactical/bandolier, + /obj/item/clothing/accessory/storage/black_drop_pouches, + /obj/item/weapon/storage/backpack/dufflebag/sec, + /obj/item/weapon/shield/energy, + /obj/item/weapon/gun/energy/ionrifle, + /obj/item/weapon/gun/energy/xray, + /obj/item/weapon/storage/box/emps, + /obj/item/weapon/storage/box/flashbangs, + /obj/item/weapon/material/hatchet/tacknife/combatknife) /datum/supply_drop_loot/ballistics - name = "Ballistics" + name = "Ballistic Warfare" container = /obj/structure/largecrate /datum/supply_drop_loot/ballistics/New() ..() contents = list( - /obj/item/weapon/gun/projectile/colt/detective, - /obj/item/weapon/gun/projectile/shotgun/doublebarrel, - /obj/item/weapon/gun/projectile/shotgun/pump/combat, - /obj/item/weapon/gun/projectile/automatic/wt550, - /obj/item/weapon/gun/projectile/automatic/z8) + /obj/item/clothing/head/helmet/bulletproof, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/gloves/arm_guard/bulletproof, + /obj/item/clothing/shoes/leg_guard/bulletproof, + /obj/item/clothing/glasses/sunglasses/sechud/tactical, + /obj/item/weapon/storage/belt/security/tactical/bandolier, + /obj/item/clothing/accessory/storage/black_drop_pouches, + /obj/item/weapon/storage/backpack/dufflebag/sec, + /obj/item/weapon/shield/riot/tele, + /obj/item/weapon/storage/box/emps, + /obj/item/weapon/storage/box/flashbangs, + /obj/item/weapon/gun/projectile/automatic/sts35, + /obj/item/ammo_magazine/c762/ap, + /obj/item/ammo_magazine/c762/ap, + /obj/item/weapon/gun/projectile/colt, + /obj/item/ammo_magazine/c45m, + /obj/item/weapon/material/hatchet/tacknife/combatknife) -/datum/supply_drop_loot/ballistics - name = "Ballistics" +/datum/supply_drop_loot/heavy_warfare + name = "Heavy Warfare" container = /obj/structure/largecrate -/datum/supply_drop_loot/ballistics/New() +/datum/supply_drop_loot/armour/New() ..() contents = list( - /obj/item/weapon/gun/projectile/colt/detective, - /obj/item/weapon/gun/projectile/shotgun/doublebarrel, - /obj/item/weapon/gun/projectile/shotgun/pump/combat, - /obj/item/weapon/gun/projectile/automatic/wt550, - /obj/item/weapon/gun/projectile/automatic/z8) + /obj/item/clothing/head/helmet/combat, + /obj/item/clothing/suit/armor/combat, + /obj/item/clothing/gloves/arm_guard/combat, + /obj/item/clothing/shoes/leg_guard/combat, + /obj/item/clothing/glasses/sunglasses/sechud/tactical, + /obj/item/weapon/storage/belt/security/tactical/bandolier, + /obj/item/clothing/accessory/storage/black_drop_pouches, + /obj/item/weapon/storage/backpack/dufflebag/sec, + /obj/item/weapon/gun/projectile/automatic/carbine, + /obj/item/ammo_magazine/a556m/ap, + /obj/item/ammo_magazine/a556m, + /obj/item/weapon/shield/energy, + /obj/item/weapon/grenade/frag, + /obj/item/weapon/grenade/frag, + /obj/item/weapon/grenade/smokebomb, + /obj/item/weapon/grenade/smokebomb, + /obj/item/weapon/grenade/flashbang, + /obj/item/weapon/grenade/flashbang, + /obj/item/weapon/grenade/empgrenade, + /obj/item/weapon/grenade/empgrenade, + /obj/item/weapon/material/hatchet/tacknife/combatknife) + +datum/supply_drop_loot/riot + name = "Riot Gear" + container = /obj/structure/largecrate +/datum/supply_drop_loot/armour/New() + ..() + contents = list( + /obj/item/clothing/head/helmet/riot, + /obj/item/clothing/suit/armor/riot, + /obj/item/clothing/gloves/arm_guard/riot, + /obj/item/clothing/shoes/leg_guard/riot, + /obj/item/weapon/shield/riot/tele, + /obj/item/weapon/storage/box/flashbangs, + /obj/item/weapon/storage/box/handcuffs, + /obj/item/weapon/melee/baton, + /obj/item/clothing/glasses/sunglasses/sechud/tactical, + /obj/item/weapon/storage/belt/security, + /obj/item/clothing/shoes/jackboots, + /obj/item/clothing/gloves/black, + /obj/item/weapon/gun/projectile/shotgun/pump, + /obj/item/weapon/gun/energy/gun, + /obj/item/clothing/accessory/holster, + /obj/item/weapon/gun/launcher/grenade, + /obj/item/weapon/storage/backpack/dufflebag/sec) /datum/supply_drop_loot/seeds - name = "Seeds" + name = "Plant Growing" container = /obj/structure/closet/crate /datum/supply_drop_loot/seeds/New() ..() contents = list( /obj/item/seeds/chiliseed, + /obj/item/seeds/icepepperseed, /obj/item/seeds/berryseed, /obj/item/seeds/cornseed, /obj/item/seeds/eggplantseed, @@ -79,48 +137,128 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/seeds/wheatseed, /obj/item/seeds/carrotseed, /obj/item/seeds/lemonseed, + /obj/item/seeds/limeseed, /obj/item/seeds/orangeseed, /obj/item/seeds/grassseed, /obj/item/seeds/sunflowerseed, /obj/item/seeds/chantermycelium, /obj/item/seeds/potatoseed, - /obj/item/seeds/sugarcaneseed) + /obj/item/seeds/sugarcaneseed, + /obj/item/seeds/plastiseed, + /obj/item/seeds/grapeseed, + /obj/item/seeds/greengrapeseed, + /obj/item/seeds/peanutseed, + /obj/item/seeds/cabbageseed, + /obj/item/seeds/bananaseed, + /obj/item/seeds/poppyseed, + /obj/item/seeds/riceseed, + /obj/item/seeds/plumpmycelium, + /obj/item/seeds/lavenderseed, + /obj/item/seeds/whitebeetseed, + /obj/item/seeds/sugarcaneseed, + /obj/item/seeds/watermelonseed, + /obj/item/seeds/cherryseed, + /obj/item/weapon/reagent_containers/glass/bottle/eznutrient, + /obj/item/weapon/reagent_containers/glass/bottle/eznutrient, + /obj/item/weapon/reagent_containers/glass/bottle/eznutrient, + /obj/item/weapon/reagent_containers/glass/bottle/eznutrient, + /obj/item/weapon/reagent_containers/glass/bottle/eznutrient, + /obj/item/weapon/reagent_containers/glass/bottle/eznutrient, + /obj/machinery/portable_atmospherics/hydroponics, + /obj/machinery/portable_atmospherics/hydroponics, + /obj/machinery/portable_atmospherics/hydroponics, + /obj/machinery/portable_atmospherics/hydroponics, + /obj/machinery/portable_atmospherics/hydroponics, + /obj/machinery/portable_atmospherics/hydroponics, + /obj/structure/reagent_dispensers/watertank, + /obj/item/weapon/reagent_containers/glass/bucket, + /obj/item/weapon/reagent_containers/glass/bucket) /datum/supply_drop_loot/food - name = "Food" + name = "Emergency Provisions For Two" container = /obj/structure/largecrate /datum/supply_drop_loot/food/New() ..() contents = list( - /obj/item/weapon/reagent_containers/food/condiment/flour, - /obj/item/weapon/reagent_containers/food/condiment/flour, - /obj/item/weapon/reagent_containers/food/condiment/flour, - /obj/item/weapon/reagent_containers/food/drinks/milk, - /obj/item/weapon/reagent_containers/food/drinks/milk, - /obj/item/weapon/storage/fancy/egg_box, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/tofu, - /obj/item/weapon/reagent_containers/food/snacks/meat, - /obj/item/weapon/reagent_containers/food/snacks/meat) + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/tastybread, + /obj/item/weapon/reagent_containers/food/snacks/tastybread, + /obj/item/weapon/reagent_containers/food/snacks/tastybread, + /obj/item/weapon/reagent_containers/food/snacks/tastybread, + /obj/item/weapon/reagent_containers/food/snacks/tastybread, + /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake, + /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake, + /obj/item/weapon/crowbar, + /obj/item/weapon/crowbar, + /obj/item/device/flashlight, + /obj/item/device/flashlight, + /obj/item/clothing/suit/storage/hazardvest, + /obj/item/clothing/suit/storage/hazardvest, + /obj/item/device/flashlight/flare, + /obj/item/device/flashlight/flare) -/datum/supply_drop_loot/armour - name = "Armour" +/datum/supply_drop_loot/plushie + name = "Cuddly Fun!" container = /obj/structure/largecrate -/datum/supply_drop_loot/armour/New() +/datum/supply_drop_loot/plushie/New() ..() contents = list( - /obj/item/clothing/head/helmet/riot, - /obj/item/clothing/suit/armor/riot, - /obj/item/clothing/head/helmet/riot, - /obj/item/clothing/suit/armor/riot, - /obj/item/clothing/head/helmet/riot, - /obj/item/clothing/suit/armor/riot, - /obj/item/clothing/suit/storage/vest, - /obj/item/clothing/suit/storage/vest, - /obj/item/clothing/suit/storage/vest/heavy, - /obj/item/clothing/suit/storage/vest/heavy, - /obj/item/clothing/suit/armor/laserproof, - /obj/item/clothing/suit/armor/bulletproof) + /obj/structure/plushie/drone, + /obj/structure/plushie/carp, + /obj/structure/plushie/beepsky, + /obj/item/toy/plushie/nymph, + /obj/item/toy/plushie/mouse, + /obj/item/toy/plushie/kitten, + /obj/item/toy/plushie/lizard, + /obj/random/action_figure, + /obj/random/action_figure, + /obj/random/action_figure, + /obj/random/action_figure, + /obj/random/action_figure, + /obj/random/action_figure, + /obj/item/toy/nanotrasenballoon, + /obj/item/toy/syndicateballoon, + /obj/item/toy/sword, + /obj/item/toy/sword, + /obj/item/toy/sword, + /obj/item/toy/sword, + /obj/item/toy/katana, + /obj/item/toy/katana, + /obj/item/weapon/inflatable_duck, + /obj/item/weapon/inflatable_duck) + +/datum/supply_drop_loot/christmas + name = "Surplus Christmas Supplies" + container = /obj/structure/largecrate +/datum/supply_drop_loot/christmas/New() + ..() + contents = list( + /obj/structure/flora/pottedplant/xmas, + /obj/structure/flora/pottedplant/xmas, + /obj/structure/flora/pottedplant/xmas, + /obj/structure/flora/pottedplant/xmas, + /obj/structure/flora/pottedplant/xmas, + /obj/structure/flora/pottedplant/xmas, + /obj/structure/flora/pottedplant/xmas, + /obj/structure/flora/pottedplant/xmas, + /obj/item/clothing/head/santa, + /obj/item/clothing/head/santa, + /obj/item/clothing/head/santa, + /obj/item/clothing/head/santa, + /obj/item/clothing/head/santa/green, + /obj/item/clothing/head/santa/green, + /obj/item/clothing/head/santa/green, + /obj/item/clothing/head/santa/green, + /obj/item/clothing/accessory/scarf/christmas, + /obj/item/clothing/accessory/scarf/christmas, + /obj/item/clothing/accessory/scarf/christmas, + /obj/item/clothing/accessory/scarf/christmas + ) /datum/supply_drop_loot/materials name = "Materials" @@ -128,15 +266,42 @@ var/global/list/datum/supply_drop_loot/supply_drop /datum/supply_drop_loot/materials/New() ..() contents = list( - /obj/item/stack/material/steel, - /obj/item/stack/material/steel, - /obj/item/stack/material/steel, - /obj/item/stack/material/glass, - /obj/item/stack/material/glass, - /obj/item/stack/material/wood, - /obj/item/stack/material/plastic, - /obj/item/stack/material/glass/reinforced, - /obj/item/stack/material/plasteel) + /obj/item/stack/material/steel/fifty, + /obj/item/stack/material/steel/fifty, + /obj/item/stack/material/steel/fifty, + /obj/item/stack/material/glass/fifty, + /obj/item/stack/material/glass/fifty, + /obj/item/stack/material/wood/fifty, + /obj/item/stack/material/plastic/fifty, + /obj/item/stack/material/glass/reinforced/fifty, + /obj/item/stack/material/plasteel/fifty) + +/datum/supply_drop_loot/materials_advanced + name = "Advanced Materials" + container = /obj/structure/largecrate +/datum/supply_drop_loot/materials_advanced/New() + ..() + contents = list( + /obj/item/stack/material/steel/fifty, + /obj/item/stack/material/glass/fifty, + /obj/item/stack/material/wood/fifty, + /obj/item/stack/material/plastic/fifty, + /obj/item/stack/material/glass/reinforced/fifty, + /obj/item/stack/material/plasteel/fifty, + /obj/item/stack/material/diamond/fifty, + /obj/item/stack/material/phoron/fifty, + /obj/item/stack/material/gold/fifty, + /obj/item/stack/material/silver/fifty, + /obj/item/stack/material/platinum/fifty, + /obj/item/stack/material/mhydrogen/fifty, + /obj/item/stack/material/tritium/fifty, + /obj/item/stack/material/osmium/fifty,) + +/datum/supply_drop_loot/supermatter + name = "Supermatter" +/datum/supply_drop_loot/supermatter/New() + ..() + contents = list(/obj/machinery/power/supermatter) /datum/supply_drop_loot/medical name = "Medical" @@ -149,47 +314,10 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/weapon/storage/firstaid/toxin, /obj/item/weapon/storage/firstaid/o2, /obj/item/weapon/storage/firstaid/adv, + /obj/item/weapon/storage/firstaid/combat, + /obj/item/weapon/reagent_containers/glass/bottle/antitoxin, /obj/item/weapon/reagent_containers/glass/bottle/antitoxin, /obj/item/weapon/reagent_containers/glass/bottle/inaprovaline, - /obj/item/weapon/reagent_containers/glass/bottle/stoxin, + /obj/item/weapon/reagent_containers/glass/bottle/inaprovaline, /obj/item/weapon/storage/box/syringes, - /obj/item/weapon/storage/box/autoinjectors) - -/datum/supply_drop_loot/power - name = "Power" - container = /obj/structure/largecrate -/datum/supply_drop_loot/power/New() - ..() - contents = list( - /obj/item/stack/material/steel, - /obj/item/stack/material/steel, - /obj/item/stack/material/steel, - /obj/item/stack/material/glass, - /obj/item/stack/material/glass, - /obj/item/stack/material/wood, - /obj/item/stack/material/plastic, - /obj/item/stack/material/glass/reinforced, - /obj/item/stack/material/plasteel) - -/datum/supply_drop_loot/hydroponics - name = "Hydroponics" - container = /obj/structure/largecrate -/datum/supply_drop_loot/hydroponics/New() - ..() - contents = list( - /obj/machinery/portable_atmospherics/hydroponics, - /obj/machinery/portable_atmospherics/hydroponics, - /obj/machinery/portable_atmospherics/hydroponics) - -/datum/supply_drop_loot/power - name = "Power" - container = /obj/structure/largecrate -/datum/supply_drop_loot/power/New() - ..() - contents = list( - /obj/machinery/power/port_gen/pacman, - /obj/machinery/power/port_gen/pacman/super, - /obj/machinery/power/port_gen/pacman/mrs) - -/datum/supply_drop_loot/power/contents() - return list(pick(contents)) + /obj/item/weapon/storage/box/autoinjectors) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index b2d04233f23..57b62e609d4 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -97,30 +97,30 @@ return 0 if(my_atom.flags & NOREACT) // No reactions here return 0 - + var/reaction_occured var/list/effect_reactions = list() var/list/eligible_reactions = list() for(var/i in 1 to PROCESS_REACTION_ITER) reaction_occured = 0 - + //need to rebuild this to account for chain reactions for(var/datum/reagent/R in reagent_list) eligible_reactions |= chemical_reactions_list[R.id] - + for(var/datum/chemical_reaction/C in eligible_reactions) if(C.can_happen(src) && C.process(src)) effect_reactions |= C reaction_occured = 1 - + eligible_reactions.Cut() - + if(!reaction_occured) break - + for(var/datum/chemical_reaction/C in effect_reactions) C.post_reaction(src) - + update_total() return reaction_occured @@ -300,7 +300,7 @@ amount -= spill if(spill) splash(target.loc, spill, multiplier, copy, min_spill, max_spill) - + trans_to(target, amount, multiplier, copy) /datum/reagents/proc/trans_id_to(var/atom/target, var/id, var/amount = 1) @@ -366,6 +366,10 @@ var/perm = 1 if(isliving(target)) //will we ever even need to tranfer reagents to non-living mobs? var/mob/living/L = target + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.check_shields(0, null, null, null, "the spray") == 1) //If they block the spray, it does nothing. + amount = 0 perm = L.reagent_permeability() return trans_to_mob(target, amount, CHEM_TOUCH, perm, copy) @@ -416,4 +420,4 @@ /* Atom reagent creation - use it all the time */ /atom/proc/create_reagents(var/max_vol) - reagents = new/datum/reagents(max_vol, src) + reagents = new/datum/reagents(max_vol, src) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 5c4dc8c169f..38f558721ea 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -2,7 +2,6 @@ #define LIQUID 2 #define GAS 3 -#define BOTTLE_SPRITES list("bottle-1", "bottle-2", "bottle-3", "bottle-4") //list of available bottle sprites #define REAGENTS_PER_SHEET 20 @@ -23,10 +22,11 @@ var/condi = 0 var/useramount = 15 // Last used amount var/pillamount = 10 - var/bottlesprite = "bottle-1" //yes, strings + var/bottlesprite = "1" var/pillsprite = "1" - var/client/has_sprites = list() var/max_pill_count = 20 + var/tab = "home" + var/analyze_data[0] flags = OPENCONTAINER /obj/machinery/chem_master/New() @@ -56,7 +56,6 @@ user.drop_item() B.loc = src user << "You add the beaker to the machine!" - src.updateUsrDialog() icon_state = "mixer1" else if(istype(B, /obj/item/weapon/storage/pill_bottle)) @@ -69,9 +68,74 @@ user.drop_item() B.loc = src user << "You add the pill bottle into the dispenser slot!" - src.updateUsrDialog() return +/obj/machinery/chem_master/attack_hand(mob/user as mob) + if(stat & BROKEN) + return + user.set_machine(src) + ui_interact(user) + +/** + * Display the NanoUI window for the chem master. + * + * See NanoUI documentation for details. + */ +/obj/machinery/chem_master/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + + var/list/data = list() + data["tab"] = tab + data["condi"] = condi + + if(loaded_pill_bottle) + data["pillBottle"] = list("total" = loaded_pill_bottle.contents.len, "max" = loaded_pill_bottle.max_storage_space) + else + data["pillBottle"] = null + + if(beaker) + var/datum/reagents/R = beaker:reagents + var/ui_reagent_beaker_list[0] + for(var/datum/reagent/G in R.reagent_list) + ui_reagent_beaker_list[++ui_reagent_beaker_list.len] = list("name" = G.name, "volume" = G.volume, "description" = G.description, "id" = G.id) + + data["beaker"] = list("total_volume" = R.total_volume, "reagent_list" = ui_reagent_beaker_list) + else + data["beaker"] = null + + if(reagents.total_volume) + var/ui_reagent_list[0] + for(var/datum/reagent/N in reagents.reagent_list) + ui_reagent_list[++ui_reagent_list.len] = list("name" = N.name, "volume" = N.volume, "description" = N.description, "id" = N.id) + + data["reagents"] = list("total_volume" = reagents.total_volume, "reagent_list" = ui_reagent_list) + else + data["reagents"] = null + + data["mode"] = mode + + if(analyze_data) + data["analyzeData"] = list("name" = analyze_data["name"], "desc" = analyze_data["desc"], "blood_type" = analyze_data["blood_type"], "blood_DNA" = analyze_data["blood_DNA"]) + else + data["analyzeData"] = null + + data["pillSprite"] = pillsprite + data["bottleSprite"] = bottlesprite + + var/P[20] //how many pill sprites there are. Sprites are taken from chemical.dmi and can be found in nano/images/pill.png + for(var/i = 1 to P.len) + P[i] = i + data["pillSpritesAmount"] = P + + data["bottleSpritesAmount"] = list(1, 2, 3, 4) //how many bottle sprites there are. Sprites are taken from chemical.dmi and can be found in nano/images/pill.png + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "chem_master.tmpl", src.name, 575, 400) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(5) + /obj/machinery/chem_master/Topic(href, href_list) if(stat & (BROKEN|NOPOWER)) return if(usr.stat || usr.restrained()) return @@ -80,20 +144,19 @@ src.add_fingerprint(usr) usr.set_machine(src) + if(href_list["tab_select"]) + tab = href_list["tab_select"] if (href_list["ejectp"]) if(loaded_pill_bottle) loaded_pill_bottle.loc = src.loc loaded_pill_bottle = null - else if(href_list["close"]) - usr << browse(null, "window=chemmaster") - usr.unset_machine() - return if(beaker) var/datum/reagents/R = beaker:reagents - if (href_list["analyze"]) - var/dat = "" + if (tab == "analyze") + analyze_data["name"] = href_list["name"] + analyze_data["desc"] = href_list["desc"] if(!condi) if(href_list["name"] == "Blood") var/datum/reagent/blood/G @@ -101,16 +164,9 @@ if(F.name == href_list["name"]) G = F break - var/A = G.name - var/B = G.data["blood_type"] - var/C = G.data["blood_DNA"] - dat += "Chemmaster 3000Chemical infos:

    Name:
    [A]

    Description:
    Blood Type: [B]
    DNA: [C]


    (Back)" - else - dat += "Chemmaster 3000Chemical infos:

    Name:
    [href_list["name"]]

    Description:
    [href_list["desc"]]


    (Back)" - else - dat += "Condimaster 3000Condiment infos:

    Name:
    [href_list["name"]]

    Description:
    [href_list["desc"]]


    (Back)" - usr << browse(dat, "window=chem_master;size=575x400") - return + analyze_data["name"] = G.name + analyze_data["blood_type"] = G.data["blood_type"] + analyze_data["blood_DNA"] = G.data["blood_DNA"] else if (href_list["add"]) @@ -147,9 +203,6 @@ else if (href_list["toggle"]) mode = !mode - else if (href_list["main"]) - attack_hand(usr) - return else if (href_list["eject"]) if(beaker) beaker:loc = src.loc @@ -185,9 +238,8 @@ P.icon_state = "pill"+pillsprite reagents.trans_to_obj(P,amount_per_pill) if(src.loaded_pill_bottle) - if(loaded_pill_bottle.contents.len < loaded_pill_bottle.storage_slots) + if(loaded_pill_bottle.contents.len < loaded_pill_bottle.max_storage_space) P.loc = loaded_pill_bottle - src.updateUsrDialog() else if (href_list["createbottle"]) if(!condi) @@ -197,106 +249,23 @@ P.name = "[name] bottle" P.pixel_x = rand(-7, 7) //random position P.pixel_y = rand(-7, 7) - P.icon_state = bottlesprite + P.icon_state = "bottle-"+bottlesprite reagents.trans_to_obj(P,60) P.update_icon() else var/obj/item/weapon/reagent_containers/food/condiment/P = new/obj/item/weapon/reagent_containers/food/condiment(src.loc) reagents.trans_to_obj(P,50) - else if(href_list["change_pill"]) - #define MAX_PILL_SPRITE 20 //max icon state of the pill sprites - var/dat = "" - for(var/i = 1 to MAX_PILL_SPRITE) - dat += "" - dat += "
    " - usr << browse(dat, "window=chem_master") - return - else if(href_list["change_bottle"]) - var/dat = "" - for(var/sprite in BOTTLE_SPRITES) - dat += "" - dat += "
    " - usr << browse(dat, "window=chem_master") - return + else if(href_list["pill_sprite"]) pillsprite = href_list["pill_sprite"] else if(href_list["bottle_sprite"]) bottlesprite = href_list["bottle_sprite"] - src.updateUsrDialog() - return + nanomanager.update_uis(src) /obj/machinery/chem_master/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/chem_master/attack_hand(mob/user as mob) - if(stat & BROKEN) - return - user.set_machine(src) - if(!(user.client in has_sprites)) - spawn() - has_sprites += user.client - for(var/i = 1 to MAX_PILL_SPRITE) - usr << browse_rsc(icon('icons/obj/chemical.dmi', "pill" + num2text(i)), "pill[i].png") - for(var/sprite in BOTTLE_SPRITES) - usr << browse_rsc(icon('icons/obj/chemical.dmi', sprite), "[sprite].png") - var/dat = "" - if(!beaker) - dat = "Please insert beaker.
    " - if(src.loaded_pill_bottle) - dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]

    " - else - dat += "No pill bottle inserted.

    " - dat += "Close" - else - var/datum/reagents/R = beaker:reagents - dat += "Eject beaker and Clear Buffer
    " - if(src.loaded_pill_bottle) - dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]

    " - else - dat += "No pill bottle inserted.

    " - if(!R.total_volume) - dat += "Beaker is empty." - else - dat += "Add to buffer:
    " - for(var/datum/reagent/G in R.reagent_list) - dat += "[G.name] , [G.volume] Units - " - dat += "(Analyze) " - dat += "(1) " - dat += "(5) " - dat += "(10) " - dat += "(30) " - dat += "(60) " - dat += "(All) " - dat += "(Custom)
    " - - dat += "
    Transfer to [(!mode ? "disposal" : "beaker")]:
    " - if(reagents.total_volume) - for(var/datum/reagent/N in reagents.reagent_list) - dat += "[N.name] , [N.volume] Units - " - dat += "(Analyze) " - dat += "(1) " - dat += "(5) " - dat += "(10) " - dat += "(30) " - dat += "(60) " - dat += "(All) " - dat += "(Custom)
    " - else - dat += "Empty
    " - if(!condi) - dat += "

    Create pill (60 units max)
    " - dat += "Create multiple pills
    " - dat += "Create bottle (60 units max)" - else - dat += "Create bottle (50 units max)" - if(!condi) - user << browse("Chemmaster 3000Chemmaster menu:

    [dat]", "window=chem_master;size=575x400") - else - user << browse("Condimaster 3000Condimaster menu:

    [dat]", "window=chem_master;size=575x400") - onclose(user, "chem_master") - return - /obj/machinery/chem_master/condimaster name = "CondiMaster 3000" condi = 1 diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index 842814bca26..f051e8307fe 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -127,12 +127,9 @@ if(istype(L)) var/needed = L.fire_stacks * 10 if(amount > needed) - L.fire_stacks = 0 L.ExtinguishMob() - remove_self(needed) - else - L.adjust_fire_stacks(-(amount / 10)) - remove_self(amount) + L.adjust_fire_stacks(-(amount / 10)) + remove_self(needed) /datum/reagent/water/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) if(istype(M, /mob/living/carbon/slime)) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 55a50bc925e..5d400776357 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -636,25 +636,16 @@ if(alien == IS_DIONA) return ..() - if(alien == IS_TAJARA) - M.adjustToxLoss(0.5 * removed) - M.make_jittery(4) //extra sensitive to caffine + if(adj_temp > 0) holder.remove_reagent("frostoil", 10 * removed) /datum/reagent/nutriment/coffee/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) ..() - if(alien == IS_TAJARA) - M.adjustToxLoss(2 * removed) - M.make_jittery(4) - return /datum/reagent/drink/coffee/overdose(var/mob/living/carbon/M, var/alien) if(alien == IS_DIONA) return - if(alien == IS_TAJARA) - M.adjustToxLoss(4 * REM) - M.apply_effect(3, STUTTER) M.make_jittery(5) /datum/reagent/drink/coffee/icecoffee @@ -924,6 +915,50 @@ glass_desc = "A tangy substance made of 0.5% natural citrus!" glass_special = list(DRINK_FIZZ) +/datum/reagent/drink/shirley_temple + name = "Shirley Temple" + description = "A sweet concotion hated even by its namesake." + id = "shirley_temple" + color = "#EF304F" + adj_temp = -8 + + glass_name = "shirley temple" + glass_desc = "A sweet concotion hated even by its namesake." + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/roy_rogers + name = "Roy Rogers" + description = "I'm a cowboy, on a steel horse I ride." + id = "roy_rogers" + color = "#4F1811" + adj_temp = -8 + + glass_name = "roy rogers" + glass_desc = "I'm a cowboy, on a steel horse I ride" + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/collins_mix + name = "Collins Mix" + description = "Best hope it isn't a hoax." + id = "collins_mix" + color = "#D7D0B3" + adj_temp = -8 + + glass_name = "collins mix" + glass_desc = "Best hope it isn't a hoax." + glass_special = list(DRINK_FIZZ) + +/datum/reagent/drink/arnold_palmer + name = "Arnold Palmer" + description = "Tastes just like the old man." + id = "arnold_palmer" + color = "#AF5517" + adj_temp = -8 + + glass_name = "arnold palmer" + glass_desc = "Tastes just like the old man." + glass_special = list(DRINK_FIZZ) + /datum/reagent/drink/doctor_delight name = "The Doctor's Delight" id = "doctorsdelight" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index c81a94927cd..db573995b66 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -112,9 +112,9 @@ /datum/reagent/tricordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien != IS_DIONA) - M.adjustOxyLoss(-6 * removed) - M.heal_organ_damage(3 * removed, 3 * removed) - M.adjustToxLoss(-3 * removed) + M.adjustOxyLoss(-3 * removed) + M.heal_organ_damage(1.5 * removed, 1.5 * removed) + M.adjustToxLoss(-1.5 * removed) /datum/reagent/cryoxadone name = "Cryoxadone" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 884ee830f0c..ac054b224f9 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -6,7 +6,7 @@ description = "A toxic chemical." reagent_state = LIQUID color = "#CF3600" - metabolism = REM * 0.05 // 0.01 by default. They last a while and slowly kill you. + metabolism = REM * 0.25 // 0.05 by default. Hopefully enough to get some help, or die horribly, whatever floats your boat var/strength = 4 // How much damage it deals per unit /datum/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -479,7 +479,7 @@ return if(M.dna) - if(prob(removed * 0.1)) + if(prob(removed * 0.1)) randmuti(M) if(prob(98)) randmutb(M) @@ -505,7 +505,7 @@ return if(M.dna) - if(prob(removed * 0.1)) + if(prob(removed * 0.1)) randmuti(M) if(prob(98)) randmutb(M) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index e9c3df50985..081be5d54ac 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -622,7 +622,7 @@ if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) continue - flick("e_flash", M.flash) + M.flash_eyes() M.Weaken(15) if(4 to 5) @@ -630,7 +630,7 @@ if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) continue - flick("e_flash", M.flash) + M.flash_eyes() M.Stun(5) /datum/chemical_reaction/emp_pulse @@ -1003,7 +1003,7 @@ if(holder.my_atom && istype(holder.my_atom, required)) return ..() return 0 - + /datum/chemical_reaction/slime/golem name = "Prometheans" id = "m_promethean" @@ -1016,7 +1016,7 @@ var/location = get_turf(holder.my_atom) new /obj/item/slime_cube(location) qdel(holder.my_atom) - + /* Food */ /datum/chemical_reaction/tofu @@ -1499,7 +1499,7 @@ name = "Allies Cocktail" id = "alliescocktail" result = "alliescocktail" - required_reagents = list("classicmartini" = 1, "vodka" = 1) + required_reagents = list("martini" = 1, "vodka" = 1) result_amount = 2 /datum/chemical_reaction/demonsblood @@ -1748,3 +1748,30 @@ required_reagents = list("hydrogen" = 2, "carbon" = 2, "ammonia" = 2) result_amount = 6 +/datum/chemical_reaction/shirleytemple + name = "Shirley Temple" + id = "shirley_temple" + result = "shirley_temple" + required_reagents = list("lemon_lime" = 4, "grenadine" = 1) + result_amount = 5 + +/datum/chemical_reaction/royrogers + name = "Roy Rogers" + id = "roy_rogers" + result = "roy_rogers" + required_reagents = list("cola" = 4, "grenadine" = 1) + result_amount = 5 + +/datum/chemical_reaction/collinsmix + name = "Collins Mix" + id = "collins_mix" + result = "collins_mix" + required_reagents = list("lemon_lime" = 3, "sodawater" = 1) + result_amount = 4 + +/datum/chemical_reaction/arnoldpalmer + name = "Arnold Palmer" + id = "arnold_palmer" + result = "arnold_palmer" + required_reagents = list("icetea" = 1, "lemonade" = 1) + result_amount = 2 \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm b/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm index c367d8b09c3..8d19e493300 100644 --- a/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm @@ -25,6 +25,8 @@ possible_transfer_amounts = list(5,10,15,30) flags = OPENCONTAINER + matter = list("glass" = 60) + /obj/item/weapon/reagent_containers/food/drinks/glass2/examine(mob/M as mob) ..() diff --git a/code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm b/code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm index feec8bf16e7..a0d484ddab4 100644 --- a/code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm +++ b/code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm @@ -7,6 +7,7 @@ volume = 30 possible_transfer_amounts = list(5,10,15,30) rim_pos = list(23,13,20) // y, x0, x1 + matter = list("glass" = 60) /obj/item/weapon/reagent_containers/food/drinks/glass2/rocks name = "rocks glass" @@ -16,6 +17,7 @@ volume = 20 possible_transfer_amounts = list(5,10,20) rim_pos = list(21, 10, 23) + matter = list("glass" = 40) /obj/item/weapon/reagent_containers/food/drinks/glass2/shake name = "milkshake glass" @@ -25,6 +27,7 @@ volume = 30 possible_transfer_amounts = list(5,10,15,30) rim_pos = list(25, 13, 21) + matter = list("glass" = 30) /obj/item/weapon/reagent_containers/food/drinks/glass2/cocktail name = "cocktail glass" @@ -34,6 +37,7 @@ volume = 15 possible_transfer_amounts = list(5,10,15) rim_pos = list(22, 13, 21) + matter = list("glass" = 30) /obj/item/weapon/reagent_containers/food/drinks/glass2/shot name = "shot glass" @@ -43,6 +47,7 @@ volume = 5 possible_transfer_amounts = list(1,2,5) rim_pos = list(17, 13, 21) + matter = list("glass" = 10) /obj/item/weapon/reagent_containers/food/drinks/glass2/pint name = "pint glass" @@ -52,6 +57,7 @@ volume = 60 possible_transfer_amounts = list(5,10,15,30,60) rim_pos = list(25, 12, 21) + matter = list("glass" = 120) /obj/item/weapon/reagent_containers/food/drinks/glass2/mug name = "glass mug" @@ -61,6 +67,7 @@ volume = 40 possible_transfer_amounts = list(5,10,20,40) rim_pos = list(22, 12, 20) + matter = list("glass" = 80) /obj/item/weapon/reagent_containers/food/drinks/glass2/wine name = "wine glass" @@ -70,3 +77,4 @@ volume = 25 possible_transfer_amounts = list(5, 10, 15, 25) rim_pos = list(25, 12, 21) + matter = list("glass" = 50) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 36a8b40feff..ba671cdb502 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -12,8 +12,15 @@ slot_flags = SLOT_EARS volume = 5 -/obj/item/weapon/reagent_containers/dropper/afterattack(var/obj/target, var/mob/user, var/flag) - if(!target.reagents || !flag) return + +/obj/item/weapon/reagent_containers/dropper/do_surgery(mob/living/carbon/M, mob/living/user) + if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool + return ..() + afterattack(M, user, 1) + return 1 + +/obj/item/weapon/reagent_containers/dropper/afterattack(var/obj/target, var/mob/user, var/proximity) + if(!target.reagents || !proximity) return if(reagents.total_volume) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index ce26cdda50e..7257ac65b1a 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -167,7 +167,6 @@ desc = "A big bag of flour. Good for baking!" icon = 'icons/obj/food.dmi' icon_state = "flour" - item_state = "flour" /obj/item/weapon/reagent_containers/food/condiment/flour/on_reagent_change() return diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 69472021b84..c1a585cbaad 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -132,7 +132,7 @@ reagents.add_reagent("soymilk", 50) /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton - name = "small chocolate milk carton" + name = "small milk carton" volume = 30 icon_state = "mini-milk" /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/New() @@ -140,9 +140,9 @@ reagents.add_reagent("milk", 30) /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate - name = "Small Carton of Chocolate Milk" + name = "small chocolate milk carton" desc = "It's milk! This one is in delicious chocolate flavour." - + icon_state = "mini-milk_choco" /obj/item/weapon/reagent_containers/food/drinks/milk/smallcarton/chocolate/New() ..() reagents.add_reagent("chocolate_milk", 30) @@ -204,6 +204,7 @@ possible_transfer_amounts = null volume = 10 center_of_mass = list("x"=16, "y"=12) + /obj/item/weapon/reagent_containers/food/drinks/sillycup/New() ..() @@ -214,6 +215,17 @@ else icon_state = "water_cup_e" +/obj/item/weapon/reagent_containers/food/drinks/sillycup/MouseDrop(obj/over_object as obj) + if(!reagents.total_volume && istype(over_object, /obj/structure/reagent_dispensers/water_cooler)) + if(over_object.Adjacent(usr)) + var/obj/structure/reagent_dispensers/water_cooler/W = over_object + if(W.cupholder && W.cups < 10) + W.cups++ + usr << "You put the [src] in the cup dispenser." + qdel(src) + W.update_icon() + else + return ..() //////////////////////////drinkingglass and shaker// //Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 45b0eb97b81..a5dff3868da 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -11,9 +11,15 @@ var/slices_num var/dried_type = null var/dry = 0 + var/nutriment_amt = 0 center_of_mass = list("x"=16, "y"=16) w_class = 2 +/obj/item/weapon/reagent_containers/food/snacks/New() + ..() + if(nutriment_amt) + reagents.add_reagent("nutriment", nutriment_amt) + //Placeholder for effect that trigger on eating that aren't tied to reagents. /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) if(!usr) return @@ -3176,6 +3182,17 @@ else ..() +/obj/item/weapon/reagent_containers/food/snacks/bunbun + name = "\improper Bun Bun" + desc = "A small bread monkey fashioned from two burger buns." + icon_state = "bunbun" + bitesize = 2 + center_of_mass = list("x"=16, "y"=8) + +/obj/item/weapon/reagent_containers/food/snacks/bunbun/New() + ..() + reagents.add_reagent("nutriment", 8) + /obj/item/weapon/reagent_containers/food/snacks/taco name = "taco" desc = "Take a bite!" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 4eb927444e7..1347a182fc3 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -69,8 +69,15 @@ flags |= OPENCONTAINER update_icon() -/obj/item/weapon/reagent_containers/glass/afterattack(var/obj/target, var/mob/user, var/flag) - if(!is_open_container() || !flag) +/obj/item/weapon/reagent_containers/glass/do_surgery(mob/living/carbon/M, mob/living/user) + if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool + return ..() + afterattack(M, user, 1) + return 1 + +/obj/item/weapon/reagent_containers/glass/afterattack(var/obj/target, var/mob/user, var/proximity) + + if(!is_open_container() || !proximity) return for(var/type in can_be_placed_into) @@ -248,7 +255,7 @@ name = "water-cooler bottle" icon = 'icons/obj/vending.dmi' icon_state = "water_cooler_bottle" - matter = list(DEFAULT_WALL_MATERIAL = 200) + matter = list("glass" = 2000) w_class = 3.0 amount_per_transfer_from_this = 20 possible_transfer_amounts = list(10,20,30,60,120) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 884afc5ed83..771ce4cc274 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -20,6 +20,12 @@ // reagents.add_reagent("tricordrazine", 30) // return +/obj/item/weapon/reagent_containers/hypospray/do_surgery(mob/living/carbon/M, mob/living/user) + if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool + return ..() + attack(M, user) + return 1 + /obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob) if(!reagents.total_volume) user << "[src] is empty." diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index def1ac7f817..150a7743096 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -19,10 +19,15 @@ if(!icon_state) icon_state = "pill[rand(1, 20)]" -/obj/item/weapon/reagent_containers/pill/attack(mob/M as mob, mob/user as mob, def_zone) +/obj/item/weapon/reagent_containers/pill/do_surgery(mob/M, mob/user) + if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool + return ..() + attack(M, user) //default surgery behaviour is just to scan as usual + return 1 + +/obj/item/weapon/reagent_containers/pill/attack(mob/M as mob, mob/user as mob) if(M == user) - if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M if(!H.check_has_mouth()) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index efc8d9c2b83..c3b48691c05 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -38,8 +38,6 @@ Spray_at(A, user, proximity) - playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) - user.setClickCooldown(4) if(reagents.has_reagent("sacid")) @@ -54,6 +52,7 @@ return /obj/item/weapon/reagent_containers/spray/proc/Spray_at(atom/A as mob|obj, mob/user as mob, proximity) + playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) if (A.density && proximity) A.visible_message("[usr] sprays [A] with [src].") reagents.splash(A, amount_per_transfer_from_this) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 09ae98eb908..87b5311be2f 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -52,6 +52,14 @@ /obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I as obj, mob/user as mob) return +/obj/item/weapon/reagent_containers/syringe/do_surgery(mob/living/carbon/M, mob/living/user) + if(user.a_intent == I_HURT) + return 0 + if(user.a_intent != I_HELP) //in case it is ever used as a surgery tool + return ..() + afterattack(M, user, 1) + return 1 + /obj/item/weapon/reagent_containers/syringe/afterattack(obj/target, mob/user, proximity) if(!proximity || !target.reagents) return @@ -66,7 +74,6 @@ syringestab(target, user) return - switch(mode) if(SYRINGE_DRAW) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 495a248c53c..39004b3e95b 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -26,12 +26,12 @@ examine(mob/user) if(!..(user, 2)) return - user << "\blue It contains:" + user << "It contains:" if(reagents && reagents.reagent_list.len) for(var/datum/reagent/R in reagents.reagent_list) - user << "\blue [R.volume] units of [R.name]" + user << "[R.volume] units of [R.name]" else - user << "\blue Nothing." + user << "Nothing." verb/set_APTFT() //set amount_per_transfer_from_this set name = "Set transfer amount" @@ -92,7 +92,7 @@ if(!..(user, 2)) return if (modded) - user << "\red Fuel faucet is wrenched open, leaking the fuel!" + user << "Fuel faucet is wrenched open, leaking the fuel!" if(rig) user << "There is some kind of device rigged to the tank." @@ -100,7 +100,7 @@ if (rig) usr.visible_message("[usr] begins to detach [rig] from \the [src].", "You begin to detach [rig] from \the [src]") if(do_after(usr, 20)) - usr.visible_message("\blue [usr] detaches [rig] from \the [src].", "\blue You detach [rig] from \the [src]") + usr.visible_message("[usr] detaches [rig] from \the [src].", "You detach [rig] from \the [src]") rig.loc = get_turf(usr) rig = null overlays = new/list() @@ -117,11 +117,11 @@ leak_fuel(amount_per_transfer_from_this) if (istype(W,/obj/item/device/assembly_holder)) if (rig) - user << "\red There is another device in the way." + user << "There is another device in the way." return ..() user.visible_message("[user] begins rigging [W] to \the [src].", "You begin rigging [W] to \the [src]") if(do_after(user, 20)) - user.visible_message("\blue [user] rigs [W] to \the [src].", "\blue You rig [W] to \the [src]") + user.visible_message("[user] rigs [W] to \the [src].", "You rig [W] to \the [src]") var/obj/item/device/assembly_holder/H = W if (istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter)) @@ -203,13 +203,24 @@ possible_transfer_amounts = null anchored = 1 var/bottle = 0 + var/cups = 0 + var/cupholder = 0 + +/obj/structure/reagent_dispensers/water_cooler/full + bottle = 1 + cupholder = 1 + cups = 10 /obj/structure/reagent_dispensers/water_cooler/New() - if(bottle == 1) + if(bottle) ..() reagents.add_reagent("water",120) - else - icon_state = "water_cooler_0" + update_icon() + +/obj/structure/reagent_dispensers/water_cooler/examine(mob/user) + ..() + if(cupholder) + user << "There are [cups] cups in the cup dispenser." /obj/structure/reagent_dispensers/water_cooler/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/wrench)) @@ -224,7 +235,7 @@ G.reagents.add_reagent(R.id, total_reagent) reagents.clear_reagents() bottle = 0 - icon_state = "water_cooler_0" + update_icon() else if(anchored) user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.") @@ -237,11 +248,24 @@ return if(istype(I, /obj/item/weapon/screwdriver)) - if(!bottle) + if(cupholder) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) - user << "You take the water-cooler apart." - new /obj/item/stack/material/plastic( src.loc, 4 ) - qdel(src) + user << "You take the cup dispenser off." + new /obj/item/stack/material/plastic( src.loc ) + if(cups) + for(var/i = 0 to cups) + new /obj/item/weapon/reagent_containers/food/drinks/sillycup(src.loc) + cups = 0 + cupholder = 0 + update_icon() + return + if(!bottle && !cupholder) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) + user << "You start taking the water-cooler apart." + if(do_after(user, 20)) + user << "You take the water-cooler apart." + new /obj/item/stack/material/plastic( src.loc, 4 ) + qdel(src) return if(istype(I, /obj/item/weapon/reagent_containers/glass/cooler_bottle)) @@ -252,8 +276,8 @@ user << "You start to screw the bottle onto the water-cooler." if(do_after(user, 20)) bottle = 1 - icon_state = "water_cooler" - user << "You screw the bottle onto the water-cooler but accidently spill some!" //you spill some because it for somereason transfers 5 units to the bottle after it gets attached but before it's deleted... + update_icon() + user << "You screw the bottle onto the water-cooler!" for(var/datum/reagent/R in G.reagents.reagent_list) var/total_reagent = G.reagents.get_reagent_amount(R.id) reagents.add_reagent(R.id, total_reagent) @@ -263,8 +287,46 @@ else user << "There is already a bottle there!" return - else - return ..() + + if(istype(I, /obj/item/stack/material/plastic)) + if(!cupholder) + if(anchored) + var/obj/item/stack/material/plastic/P = I + src.add_fingerprint(user) + user << "You start to attach a cup dispenser onto the water-cooler." + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + if(do_after(user, 20)) + if (P.use(1)) + user << "You attach a cup dispenser onto the water-cooler." + cupholder = 1 + update_icon() + else + user << "You need to wrench down the cooler first." + else + user << "There is already a cup dispenser there!" + return + +/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/user) + if(cups) + new /obj/item/weapon/reagent_containers/food/drinks/sillycup(src.loc) + cups-- + update_icon() + return + +/obj/structure/reagent_dispensers/water_cooler/update_icon() + icon_state = "water_cooler" + overlays.Cut() + var/image/I + if(bottle) + I = image(icon, "water_cooler_bottle") + overlays += I + if(cupholder) + I = image(icon, "water_cooler_cupholder") + overlays += I + if(cups) + I = image(icon, "water_cooler_cups") + overlays += I + return /obj/structure/reagent_dispensers/beerkeg name = "beer keg" diff --git a/code/modules/research/prosfab_designs.dm b/code/modules/research/prosfab_designs.dm index 9629bb31f10..d59c2af6097 100644 --- a/code/modules/research/prosfab_designs.dm +++ b/code/modules/research/prosfab_designs.dm @@ -49,7 +49,7 @@ //////////////////// Prosthetics //////////////////// /datum/design/item/prosfab/pros/torso time = 35 - materials = list(DEFAULT_WALL_MATERIAL = 45000, "glass" = 7500, "plasteel" = 1500) + materials = list(DEFAULT_WALL_MATERIAL = 30000, "glass" = 7500) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case var/gender = MALE @@ -72,7 +72,7 @@ id = "pros_head" build_path = /obj/item/organ/external/head time = 30 - materials = list(DEFAULT_WALL_MATERIAL = 18750, "glass" = 3750, "plasteel" = 750) + materials = list(DEFAULT_WALL_MATERIAL = 18750, "glass" = 3750) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case /datum/design/item/prosfab/pros/l_arm @@ -80,63 +80,63 @@ id = "pros_l_arm" build_path = /obj/item/organ/external/arm time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 13500) + materials = list(DEFAULT_WALL_MATERIAL = 10125) /datum/design/item/prosfab/pros/l_hand name = "Prosthetic left hand" id = "pros_l_hand" build_path = /obj/item/organ/external/hand time = 15 - materials = list(DEFAULT_WALL_MATERIAL = 7500) - -/datum/design/item/prosfab/pros/l_leg - name = "Prosthetic left leg" - id = "pros_l_leg" - build_path = /obj/item/organ/external/leg - time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 11250) - -/datum/design/item/prosfab/pros/l_foot - name = "Prosthetic left foot" - id = "pros_l_foot" - build_path = /obj/item/organ/external/foot - time = 15 - materials = list(DEFAULT_WALL_MATERIAL = 7500) + materials = list(DEFAULT_WALL_MATERIAL = 3375) /datum/design/item/prosfab/pros/r_arm name = "Prosthetic right arm" id = "pros_r_arm" build_path = /obj/item/organ/external/arm/right time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 13500) + materials = list(DEFAULT_WALL_MATERIAL = 10125) /datum/design/item/prosfab/pros/r_hand name = "Prosthetic right hand" id = "pros_r_hand" build_path = /obj/item/organ/external/hand/right time = 15 - materials = list(DEFAULT_WALL_MATERIAL = 7500) + materials = list(DEFAULT_WALL_MATERIAL = 3375) + +/datum/design/item/prosfab/pros/l_leg + name = "Prosthetic left leg" + id = "pros_l_leg" + build_path = /obj/item/organ/external/leg + time = 20 + materials = list(DEFAULT_WALL_MATERIAL = 8437) + +/datum/design/item/prosfab/pros/l_foot + name = "Prosthetic left foot" + id = "pros_l_foot" + build_path = /obj/item/organ/external/foot + time = 15 + materials = list(DEFAULT_WALL_MATERIAL = 2813) /datum/design/item/prosfab/pros/r_leg name = "Prosthetic right leg" id = "pros_r_leg" build_path = /obj/item/organ/external/leg/right time = 20 - materials = list(DEFAULT_WALL_MATERIAL = 11250) + materials = list(DEFAULT_WALL_MATERIAL = 8437) /datum/design/item/prosfab/pros/r_foot name = "Prosthetic right foot" id = "pros_r_foot" build_path = /obj/item/organ/external/foot/right time = 15 - materials = list(DEFAULT_WALL_MATERIAL = 7500) + materials = list(DEFAULT_WALL_MATERIAL = 2813) /datum/design/item/prosfab/pros/cell name = "Prosthetic powercell" id = "pros_cell" build_path = /obj/item/organ/internal/cell time = 15 - materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 3000, "plasteel" = 1500) + materials = list(DEFAULT_WALL_MATERIAL = 7500, "glass" = 3000) // req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2) /datum/design/item/prosfab/pros/eyes diff --git a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm index 67ac1bd867f..f6bbeed769a 100644 --- a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm +++ b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm @@ -4,21 +4,18 @@ name = "Anomaly suit" desc = "A sealed bio suit capable of insulating against exotic alien energies." icon_state = "engspace_suit" - item_state = "engspace_suit" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) /obj/item/clothing/head/bio_hood/anomaly name = "Anomaly hood" desc = "A sealed bio hood capable of insulating against exotic alien energies." icon_state = "engspace_helmet" - item_state = "engspace_helmet" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) /obj/item/clothing/suit/space/anomaly name = "Excavation suit" desc = "A pressure resistant excavation suit partially capable of insulating against exotic alien energies." icon_state = "cespace_suit" - item_state = "cespace_suit" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit) @@ -26,5 +23,4 @@ name = "Excavation hood" desc = "A pressure resistant excavation hood partially capable of insulating against exotic alien energies." icon_state = "cespace_helmet" - item_state = "cespace_helmet" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 100) diff --git a/code/modules/research/xenoarchaeology/tools/gearbelt.dm b/code/modules/research/xenoarchaeology/tools/gearbelt.dm deleted file mode 100644 index d12446382ba..00000000000 --- a/code/modules/research/xenoarchaeology/tools/gearbelt.dm +++ /dev/null @@ -1,30 +0,0 @@ - -/obj/item/weapon/storage/belt/archaeology - name = "excavation gear-belt" - desc = "Can hold various excavation gear." - icon_state = "gearbelt" - item_state = "utility" - can_hold = list( - /obj/item/weapon/storage/box/samplebags, - /obj/item/device/core_sampler, - /obj/item/device/beacon_locator, - /obj/item/device/radio/beacon, - /obj/item/device/gps, - /obj/item/device/measuring_tape, - /obj/item/device/flashlight, - /obj/item/weapon/pickaxe, - /obj/item/device/depth_scanner, - /obj/item/device/camera, - /obj/item/weapon/paper, - /obj/item/weapon/photo, - /obj/item/weapon/folder, - /obj/item/weapon/pen, - /obj/item/weapon/folder, - /obj/item/weapon/clipboard, - /obj/item/weapon/anodevice, - /obj/item/clothing/glasses, - /obj/item/weapon/wrench, - /obj/item/weapon/storage/box/excavation, - /obj/item/weapon/anobattery, - /obj/item/device/ano_scanner - ) diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index bc9d0ca21f5..bf320f0cd39 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -7,7 +7,7 @@ desc = "Triangulates the approximate co-ordinates using a nearby satellite network." icon = 'icons/obj/device.dmi' icon_state = "locator" - item_state = "locator" + item_state = "analyzer" w_class = 2 /obj/item/device/gps/attack_self(var/mob/user as mob) diff --git a/code/modules/spells/targeted/equip/horsemask.dm b/code/modules/spells/targeted/equip/horsemask.dm index 92b85fdb364..c52f75acee7 100644 --- a/code/modules/spells/targeted/equip/horsemask.dm +++ b/code/modules/spells/targeted/equip/horsemask.dm @@ -26,7 +26,7 @@ for(var/mob/living/target in targets) target.visible_message( "[target]'s face lights up in fire, and after the event a horse's head takes its place!", \ "Your face burns up, and shortly after the fire you realise you have the face of a horse!") - flick("e_flash", target.flash) + target.flash_eyes() /spell/targeted/equip_item/horsemask/summon_item(var/new_type) var/obj/item/new_item = new new_type diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 82c6ad543c8..d0ba9591117 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -149,6 +149,7 @@ if(container.reagents.has_reagent("peridaxon")) affected.status &= ~ORGAN_DEAD + affected.owner.update_body(1) user.visible_message("\blue [user] applies [trans] units of the solution to affected tissue in [target]'s [affected.name]", \ "\blue You apply [trans] units of the solution to affected tissue in [target]'s [affected.name] with \the [tool].") diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 6635753ed92..17729a6304d 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -164,17 +164,14 @@ can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) if(..()) - var/obj/item/stack/cable_coil/C = tool var/obj/item/organ/external/affected = target.get_organ(target_zone) - var/limb_can_operate = ((affected && affected.open >= 3) && (affected.disfigured || affected.burn_dam > 0) && target_zone != O_MOUTH) - if(limb_can_operate) - if(istype(C)) - if(!C.get_amount() >= 3) - user << "You need three or more cable pieces to repair this damage." - return SURGERY_FAILURE - C.use(3) - return 1 - return SURGERY_FAILURE + if(istype(tool,/obj/item/stack/cable_coil/)) + var/obj/item/stack/cable_coil/C = tool + if(!C.can_use(5)) + user << "You need ten or more cable pieces to repair this damage." //usage amount made more consistent with regular cable repair + return SURGERY_FAILURE + C.use(5) + return affected && affected.open == 3 && (affected.disfigured || affected.burn_dam > 0) && target_zone != O_MOUTH begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/obj/item/organ/external/affected = target.get_organ(target_zone) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index cc56b311b59..109da96b697 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -68,7 +68,7 @@ proc/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) return null -proc/spread_germs_to_organ(var/obj/item/organ/external/E, var/mob/living/carbon/human/user) +/proc/spread_germs_to_organ(var/obj/item/organ/external/E, var/mob/living/carbon/human/user) if(!istype(user) || !istype(E)) return var/germ_level = user.germ_level @@ -77,7 +77,7 @@ proc/spread_germs_to_organ(var/obj/item/organ/external/E, var/mob/living/carbon/ E.germ_level = max(germ_level,E.germ_level) //as funny as scrubbing microbes out with clean gloves is - no. -proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool) +/obj/item/proc/do_surgery(mob/living/carbon/M, mob/living/user) if(!istype(M)) return 0 if (user.a_intent == I_HURT) //check for Hippocratic Oath @@ -88,18 +88,18 @@ proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool) return 1 for(var/datum/surgery_step/S in surgery_steps) //check if tool is right or close enough and if this step is possible - if(S.tool_quality(tool)) - var/step_is_valid = S.can_use(user, M, zone, tool) + if(S.tool_quality(src)) + var/step_is_valid = S.can_use(user, M, zone, src) if(step_is_valid && S.is_valid_target(M)) if(step_is_valid == SURGERY_FAILURE) // This is a failure that already has a message for failing. return 1 M.op_stage.in_progress += zone - S.begin_step(user, M, zone, tool) //start on it + S.begin_step(user, M, zone, src) //start on it //We had proper tools! (or RNG smiled.) and user did not move or change hands. - if(prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration))) - S.end_step(user, M, zone, tool) //finish successfully - else if ((tool in user.contents) && user.Adjacent(M)) //or - S.fail_step(user, M, zone, tool) //malpractice~ + if(prob(S.tool_quality(src)) && do_mob(user, M, rand(S.min_duration, S.max_duration))) + S.end_step(user, M, zone, src) //finish successfully + else if ((src in user.contents) && user.Adjacent(M)) //or + S.fail_step(user, M, zone, src) //malpractice~ else // This failing silently was a pain. user << "You must remain close to your patient to conduct surgery." M.op_stage.in_progress -= zone // Clear the in-progress flag. @@ -109,11 +109,11 @@ proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool) return 1 //don't want to do weapony things after surgery if (user.a_intent == I_HELP) - user << "You can't see any useful way to use [tool] on [M]." + user << "You can't see any useful way to use [src] on [M]." return 1 return 0 -proc/sort_surgeries() +/proc/sort_surgeries() var/gap = surgery_steps.len var/swapped = 1 while (gap > 1 || swapped) diff --git a/code/modules/tables/bench.dm b/code/modules/tables/bench.dm new file mode 100644 index 00000000000..88c2b61526c --- /dev/null +++ b/code/modules/tables/bench.dm @@ -0,0 +1,17 @@ +/obj/structure/table/bench + name = "bench frame" + icon = 'icons/obj/bench.dmi' + icon_state = "frame" + desc = "It's a bench, for putting things on. Or standing on, if you really want to." + can_reinforce = 0 + flipped = -1 + density = 0 + +/obj/structure/table/bench/update_desc() + if(material) + name = "[material.display_name] bench" + else + name = "bench frame" + +/obj/structure/table/bench/CanPass(atom/movable/mover) + return 1 \ No newline at end of file diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm index 05cc2eac20a..954ab8156b5 100644 --- a/code/modules/tables/interactions.dm +++ b/code/modules/tables/interactions.dm @@ -10,6 +10,8 @@ return 1 if(istype(mover) && mover.checkpass(PASSTABLE)) return 1 + if(locate(/obj/structure/table/bench) in get_turf(mover)) + return 0 if(locate(/obj/structure/table) in get_turf(mover)) return 1 return 0 @@ -136,7 +138,8 @@ user << "There's nothing to put \the [W] on! Try adding plating to \the [src] first." return - user.drop_item(src.loc) + if(item_place) + user.drop_item(src.loc) return /obj/structure/table/attack_tk() // no telehulk sorry diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index 12b9e26b480..72cc6dbf8b2 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -26,6 +26,8 @@ var/list/connections = list("nw0", "ne0", "sw0", "se0") + var/item_place = 1 //allows items to be placed on the table, but not on benches. + /obj/structure/table/proc/update_material() var/old_maxhealth = maxhealth if(!material) @@ -217,7 +219,7 @@ // Returns the material to set the table to. /obj/structure/table/proc/common_material_remove(mob/user, material/M, delay, what, type_holding, sound) if(!M.stack_type) - user << "You are unable to remove the [what] from this table!" + user << "You are unable to remove the [what] from this [src]!" return M if(manipulating) return M diff --git a/code/modules/xenobio2/mob/xeno procs.dm b/code/modules/xenobio2/mob/xeno procs.dm index 94da479f5a5..f4c0f317817 100644 --- a/code/modules/xenobio2/mob/xeno procs.dm +++ b/code/modules/xenobio2/mob/xeno procs.dm @@ -29,7 +29,7 @@ Procs for targeting set_light(traitdat.traits[TRAIT_XENO_GLOW_RANGE], traitdat.traits[TRAIT_XENO_GLOW_STRENGTH], traitdat.traits[TRAIT_XENO_BIO_COLOR]) else set_light(0, 0, "#000000") //Should kill any light that shouldn't be there. - + hostile = traitdat.traits[TRAIT_XENO_HOSTILE] speed = traitdat.traits[TRAIT_XENO_SPEED] @@ -144,6 +144,7 @@ Procs for targeting // redirect the projectile P.redirect(new_x, new_y, curloc, src) + P.reflected = 1 return -1 diff --git a/code/modules/xenobio2/mob/xeno.dm b/code/modules/xenobio2/mob/xeno.dm index e72f6a4f2bc..6783823d6a9 100644 --- a/code/modules/xenobio2/mob/xeno.dm +++ b/code/modules/xenobio2/mob/xeno.dm @@ -16,35 +16,35 @@ Also includes Life and New attack_sound = null friendly = "touches" environment_smash = 0 - + var/datum/xeno/traits/traitdat //Trait datum. - + var/internal_vol = 1000 //Internal volume for ingesting/injected reagents - + var/obj/temp_chem_holder //Used in handle_reagents() - + var/mutable = NOMUT //Flag for mutation. var/nameVar = "Blah" - var/instability = 0 + var/mut_instability = 0 var/stasis = 0 var/mut_level = 0 //How mutated a specimen is. Irrelevant while mutable = NOMUT. var/mut_max = 100000 var/colored = 1 var/maleable = MIN_MALEABLE //How easy is it to manipulate traitdat.traits after it's alive. var/stability = 0 //Used in gene manipulation - + //Traits that might not be maleable. var/list/chemreact = list() var/hunger_factor = 10 var/chromatic = 0 var/starve_damage = 0 - + //Used for speech learning var/list/speech_buffer = list() - + var/list/default_chems = list() - + //Life additions /mob/living/simple_animal/xeno/Life() if(stasis) @@ -52,16 +52,16 @@ Also includes Life and New if(stasis < 0) stasis = 0 return 0 - + ..() if(!(stat == DEAD)) handle_reagents() if((mut_level >= mut_max) && !(mutable & NOMUT)) Mutate() mut_level -= mut_max - + ProcessSpeechBuffer() - + //Have to feed the xenos somehow. if(nutrition < 0) nutrition = 0 @@ -71,15 +71,15 @@ Also includes Life and New else if(traitdat.traits[TRAIT_XENO_EATS]) health = starve_damage - + return 1 //Everything worked okay. - + /mob/living/simple_animal/xeno/New() traitdat = new() - + ProcessTraits() - + ..() if(colored) color = traitdat.get_trait(TRAIT_XENO_COLOR) @@ -89,12 +89,12 @@ Also includes Life and New nutrition = 350 for(var/R in default_chems) traitdat.chems[R] = default_chems[R] - + traitdat.source = name - + if(!health) stat = DEAD - + /mob/living/simple_animal/xeno/Destroy() traitdat.Destroy() //Let's clean up after ourselves. traitdat = null diff --git a/code/unit_tests/unit_test.dm b/code/unit_tests/unit_test.dm index b8acf60c218..a090548623c 100644 --- a/code/unit_tests/unit_test.dm +++ b/code/unit_tests/unit_test.dm @@ -75,7 +75,7 @@ var/total_unit_tests = 0 // // Check the async tests to see if they are finished. - // + // while(async_test.len) for(var/datum/unit_test/test in async_test) diff --git a/code/world.dm b/code/world.dm index a6d27a8850b..1d439428d26 100644 --- a/code/world.dm +++ b/code/world.dm @@ -24,6 +24,8 @@ var/global/datum/global_init/init = new () qdel(src) //we're done +/datum/global_init/Destroy() + return 1 /world mob = /mob/new_player @@ -101,8 +103,6 @@ var/global/datum/global_init/init = new () for(var/turf/simulated/mineral/M in world) // Ugh. M.update_icon() - // Create autolathe recipes, as above. - populate_lathe_recipes() // Create robolimbs for chargen. populate_robolimb_list() diff --git a/config/example/config.txt b/config/example/config.txt index ae99ec3d198..3839b63bac6 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -76,6 +76,8 @@ SQL_ENABLED ## disconnect players who did nothing during the set amount of minutes # KICK_INACTIVE 10 +##Show developers on staffwho +SHOW_DEVS ##Show mods on staffwho SHOW_MODS @@ -103,6 +105,7 @@ PROBABILITY EXTENDED 1 PROBABILITY MALFUNCTION 1 PROBABILITY MERCENARY 1 PROBABILITY WIZARD 1 +PROBABILITY TECHNOMANCER 1 PROBABILITY CHANGELING 1 PROBABILITY CULT 1 PROBABILITY EXTEND-A-TRAITORMONGOUS 6 diff --git a/html/changelog.html b/html/changelog.html index 1723a560d03..a8a7b461710 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,281 @@ -->
    +

    05 August 2016

    +

    Anewbe updated:

    +
      +
    • Changeling Self-Respiration is now a toggle. By default they breathe normally, but if they use the power they no longer require oxygen, or experience the effects of inhaled gasses.
    • +
    • Heat based damage has been increased. This includes fire.
    • +
    +

    Hubblenaut updated:

    +
      +
    • Windoor assemblies can now be named with a pen.
    • +
    • Windoor and airlock assemblies now show their custom name during construction phase.
    • +
    • Windoors can now be made out of two sheets of glass or reinforced glass, for normal and secure windoors respectively.
    • +
    • Windoors now automatically close after construction.
    • +
    • Adjusts the algorism for how windoors and windows are placed on construction (when there are already windows co on the same turf).
    • +
    • Windoors will now drop exactly the materials they were made of.
    • +
    • Prying a broken circuit out of a windoor will no longer cause duplicates to drop.
    • +
    • Airlocks no longer spark after spawn and several other icon update issues were fixed.
    • +
    • Fixes reinforced walls not being constructable with one sheet left in stack.
    • +
    • Windows that were busted out of their frame by force are now correctly rotatable.
    • +
    • Lots of spellchecking and code cleanup in windoor and airlock code.
    • +
    • Killed innocent kittens.
    • +
    +

    Sin4 updated:

    +
      +
    • Advanced Body Scanners are now deconstructable
    • +
    • You can now add coolant to the Radiocarbon Spectrometers
    • +
    • Frame code revamped and cleaned up.
    • +
    • R&D server circuitboards can be swapped between core and robotics types using a screwdriver.
    • +
    +

    Yoshax updated:

    +
      +
    • Wounds will now once again bleed.
    • +
    • Xeno loadout items will now properly be reloaded into a slot when the server restarts.
    • +
    • A new item has been added to the uplink. Package bombs. These come in two variants, small and big, which cost 20 TC and 40 TC respectively. These come in a box with an explosive, a disguised detonator and a screwdriver. The use the detonator you muse apply the screwdriver to configure it into detonator mode. This must be done when it is closed.
    • +
    + +

    31 July 2016

    +

    Anewbe updated:

    +
      +
    • Sprays now respect shields.
    • +
    +

    Yoshax updated:

    +
      +
    • Certain items such as pills and suchlike will once again be usable on someone who is on a surgical table/table.
    • +
    + +

    25 July 2016

    +

    PsiOmegaDelta updated:

    +
      +
    • Robot upgrades produced in robotics to be applied to Cyborgs can now once again actually be applied.
    • +
    +

    Rymdmannen updated:

    +
      +
    • Added department specific rubber stamps for cargo and warden.
    • +
    • Replaced 'small rubber stamp' with corresponding new ones in cargo area and warden's office.
    • +
    • Renamed ''quartermaster's stamp'' to ''quartermaster's rubber stamp''.
    • +
    +

    Superbee29 updated:

    +
      +
    • Ghosts can now see the power in a cable when examining it.
    • +
    +

    Yoshax updated:

    +
      +
    • Flashes no longer provide an instant stun. Flashes now confuse and blind the affected person for five seconds and in addition makes their eyes blurry for ten seconds.
    • +
    • The empty box supply crate has been replaced with a shipping crate. Which contains what you need to send stuff places!
    • +
    • The chef now gets a destination tagger and packaging paper to send people food.
    • +
    • Drinking glasses now have a material cost in the autolathe.
    • +
    • When emagged security bots such as the Securitron and ED-209 will now move and pursue faster.
    • +
    • Securty bots such as mentioned above will now be properly emagged.
    • +
    • The cost of items in the antag uplink have been tweaked. Some are cheaper, some are more expensive. In addition, you can now buy singular grenades isntead of boxes. Buying a box has a discount over the singular.
    • +
    • Repairing burn damage on FBPs will now once again properly work.
    • +
    • Undislocating limbs will now once again properly work.
    • +
    • The phoron assembly crate in cargo has been renamed to a Phoron research crate and now contains more supplies including tank transfer valves.
    • +
    • The cooldown between discount offers in the antag uplink is now 10 minutes versus the previous 15 minutes.
    • +
    • The ordering of the items in the autolathe will now be somewhat diferrent due to a code overhaul. It is now in alphabetic order.
    • +
    • Security robots such as the Securitron or ED-209 are now more hardy and can take more damage before dying.
    • +
    • The silenced pistol no longer has any recoil and can be fired faster with less delay in between shots.
    • +
    + +

    22 July 2016

    +

    Anewbe updated:

    +
      +
    • Removes assault carbine from uplink.
    • +
    • Speeds up the toxin reagents
    • +
    +

    EmperorJon updated:

    +
      +
    • Having between 20 and 100 nutrition and over 45 toxin damage will no longer cause you to gag ad-infinitum and die. It now respects vomit time restraints.
    • +
    • Gagging now occurs only when the mob has no nutrition at all. It no longer causes three toxin damage, only weakens as before.
    • +
    • Vomiting and/or gagging from toxins now occurs regardless of nutrition, not only 20+.
    • +
    +

    Neerti updated:

    +
      +
    • Adds ability for ghosts to send and receive text messages via communicator.
    • +
    +

    Yoshax updated:

    +
      +
    • Drop pod contents have been adjusted. In general, you will get something more useful and the less useful contents have been made more interesting. There is a total of 12 drop pod content lists and 7/12 are useful, 4/12 are useless, 1/12 is potentially useful.
    • +
    • Stun Revolvers will no longer be able to spawn from random energy weapon spawns. In addition, some of the other random item spawns have new items and adjusted probablities.
    • +
    • Tajaran are no longer negatively affected by coffee.
    • +
    • Bucklecuffing as it has been known for the longest time is no longer a thing. When you resist when cuffed and buckled to something, you will now resist out of the handcuffs first, allowing you to simply unbuckle yourself once done.
    • +
    + +

    13 July 2016

    +

    Anewbe updated:

    +
      +
    • Removed detonating borgs via Robotics Console
    • +
    +

    Yoshax updated:

    +
      +
    • Emagging a cargo supply console will now properly hack it and will also remove the access requirement.
    • +
    • Languages selected during character setup will once again be properly added to mobs.
    • +
    +

    xDarkSapphire updated:

    +
      +
    • Adds a new hairstyle: Spiky Ponytail.
    • +
    + +

    10 July 2016

    +

    Anewbe updated:

    +
      +
    • Changelings will no longer remain stunned or suchlike when attempting to regenerate.
    • +
    +

    Cirra/ updated:

    +
      +
    • Added a chemistry gripper for Crisis borgs.
    • +
    +

    GinjaNinja32 updated:

    +
      +
    • Adds 3x & 4x upscaling options for players with very large monitors.
    • +
    +

    HarpyEagle updated:

    +
      +
    • Runtime can now become friends with anyone, regardless of their initial job.
    • +
    +

    Neerti updated:

    +
      +
    • Mining can now be done with explosives. The effectiveness depends on the spot chosen to explode, so using an ore scanner is advised.
    • +
    +

    PsiOmegaDelta updated:

    +
      +
    • MedHUD overlays now have more stages, both for 'normal' and critical stages of injury, for improved quick-diagnosis.
    • +
    +

    Redstryker updated:

    +
      +
    • Communicators will no longer show up on camera networks by default.
    • +
    • Adds a selection of flannels to the loadout. These can have their sleeves rolled up, their buttons buttoned up, be tucked in and any combination of those.
    • +
    +

    Techhead updated:

    +
      +
    • New Random Event: Solar Storms. Similar to a radiation storm, but anywhere inside the station is safe. Also boosts solar panel output significantly for the duration.
    • +
    +

    Yoshax updated:

    +
      +
    • Ports an Advanced Who verb that allows normal players to see what players are in game, and which aren't.
    • +
    +

    Zuhayr updated:

    +
      +
    • Modifies the health HUD element to display limb damage individually. It will reflect your species, prosthetics, loss of limbs, as well as being on fire.
    • +
    + +

    08 July 2016

    +

    EmperorJon updated:

    +
      +
    • Adds admin functionality to call a trader ship event with the Beruang in the same manner as ERT dispatches.
    • +
    • Adds a Trader 'antagonist' as they use the antagonist framework. Not considered an actual antagonist, like the ERT.
    • +
    • Alters Beruang base to provide some clothing for Traders plus a locked-down area for admins to spawn cargo.
    • +
    • Alters Beruang access to a new Trader-ID-only access requirement.
    • +
    +

    Neerti updated:

    +
      +
    • Restructred the AI core massively, and the upload slightly.
    • +
    • Adds a new material type, called Durasteel, which is made from plasteel and diamonds. It's incredibly tough and also reflective. The inner walls of the AI core contain this new material to protect it.
    • +
    • New turret subtype just for the AI core, that is more durable, has a chance to shrug off EMP, and fires xray lasers. They even turn green.
    • +
    • Turrets now wait to go back down in their covers upon losing sight of a target.
    • +
    • Emitters now have health, and can be damaged by projectiles. They will explode on death.
    • +
    • Critical APCs (the type found in the engine and AI core) are now more resistant to EMP. Equipment and Enviroment stays on during an EMP, and less of the cell is drained.
    • +
    +

    Sin4 updated:

    +
      +
    • Added benches.
    • +
    • Added floor lamps.
    • +
    • Added water-cooler cup dispenser.
    • +
    +

    Yoshax updated:

    +
      +
    • Adds recipes for four new non-alcoholic cocktails. Shirley Temples, Roy Rogers, Arnold Palmers and Collins Mixes.
    • +
    • Adds five new Tajaran hairstyles ported from Aurora.
    • +
    + +

    01 July 2016

    +

    Aztectornado updated:

    +
      +
    • Clicking a stack of sheets (Metal, phoron...) in your other hand now asks how many you want to split off the stack, courtesy of Baycode
    • +
    +

    Datraen updated:

    +
      +
    • Antagonistic factions can now be set and viewed on the uplink. Visibilities can be set for these as well, to help identify sympathizers/potential aids, or to hide the information from those outside of your faction.
    • +
    +

    Yosh updated:

    +
      +
    • Increases max records and book length to ridiculous levels.
    • +
    +

    Yoshax updated:

    +
      +
    • The PTR Sniper is now more accurate when scoped, but less accurate when unscoped. In addition it now has more recoil.
    • +
    • The Laser Cannon no longer holds multiple shots. It holds charge for one shot at a time. This is because the beams it fires now do 90 damage with 100 armor penetration. Furthermore, it is now considerably more accurate. Lastly, to counteract it only holding one shot at a time, it now autorecharges, which takes 60 seconds.
    • +
    +

    Zuhayr updated:

    +
      +
    • Ports/adapted several kitchen machines from Apollo Station.
    • +
    + +

    27 June 2016

    +

    Sin4 updated:

    +
      +
    • Added NanoUI for Advanced Body Scanners, Arcade, Atmospherics Control Computer, Chemmaster, Cloning Console, Fax Machines, Guestpass Console, Holodeck Computer, Laptop Vendors, Operating Computer, and Photocopiers.
    • +
    • Fixes chemmaster not putting pills in pill bottles.
    • +
    + +

    21 June 2016

    +

    HarpyEagle updated:

    +
      +
    • Fixes disarm-attack dislocation chances being so low that you were very likely to break the targeted limb before it would dislocate.
    • +
    • It is now possible to disarm-attack with stunbatons like with other melee weapons. Note that this means that using a stunbaton on disarm intent will hurt people.
    • +
    • Trying to move while being grabbed will now automatically resist.
    • +
    • Small mobs are no longer able to pin larger mobs.
    • +
    • Resisting a smaller mob's grab is more likely to be successful.
    • +
    • Fixed being able to climb onto a larger mob while restrained, weakened, unconscious, or dead.
    • +
    +

    JerTheAce updated:

    +
      +
    • CentCom Fax, Admin Prayer, and CentCom emergency messages now prompt admins with a pleasing sound effect.
    • +
    • Fax machines now sound like fax machines and not polaroid cameras.
    • +
    + +

    15 June 2016

    +

    Yoshax updated:

    +
      +
    • The categories for items in the cargo ordering console have been reworked. Items shoulw now be in more sensible categories. If you cannot find something, try the sensible category.
    • +
    + +

    14 June 2016

    +

    Arokha updated:

    +
      +
    • Adds video-calls on communicators for existing calls
    • +
    • Adds a 'decline' to incoming communicator calls
    • +
    • New wallets that let you color them how you want
    • +
    • Fixes communicators being able to hear speech
    • +
    • Fixes deadcalls to communicators
    • +
    • Fixed dropping head/foot/glove items on limb loss
    • +
    • Suit coolers inside mecha now work
    • +
    • Fixed printing '1' to world over and over
    • +
    • Made mech tracking beacon constructable again
    • +
    • Change how emotes and LOOC propogate to nearby people
    • +
    • Rewrote how get_mobs_and_objs_in_view_fast works
    • +
    • Can now see through the red external airlock doors
    • +
    +

    Datraen updated:

    +
      +
    • Adds a chance for slimes to get mutation toxin for creation of prometheans (40%).
    • +
    • Simple animals outside of the hostile subtype won't follow you as a zombie.
    • +
    • Xeno hostility is more apparent now.
    • +
    • Slime cores can no longer create twice as many slimes through an exploit.
    • +
    +

    GinjaNinja32 updated:

    +
      +
    • Rewrote drinking glasses. There are now eight types of glass, and drink appearance is based on color and the type of glass you put it in.
    • +
    • There are now 'glass extras' you can add to drinks. Straws, drink sticks, and fruit slices (yes, all of them) all work. You can add up to two extras per glass. Add extras by clicking the glass with the extra, remove by clicking the glass with an empty hand while it's in your other hand.
    • +
    • Adding 'fizzy' things (soda water, cola, etc) or ice to a drink will make it be fizzy or have ice floating in it.
    • +
    +

    Yoshax updated:

    +
      +
    • Everything produced in Robotics is now 25% cheaper to produce.
    • +
    +

    08 June 2016

    Yoshax updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index f556dac6847..4bc9e3273b5 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -2388,3 +2388,263 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. cabinets, consoles, fax machines, etc. This applies to all bullets. - maptweak: The research outpost toxins department now has reinforced phoron windows. - bugfix: Spears now do their correct damage instead of doing around half. +2016-06-14: + Arokha: + - rscadd: Adds video-calls on communicators for existing calls + - rscadd: Adds a 'decline' to incoming communicator calls + - rscadd: New wallets that let you color them how you want + - bugfix: Fixes communicators being able to hear speech + - bugfix: Fixes deadcalls to communicators + - bugfix: Fixed dropping head/foot/glove items on limb loss + - bugfix: Suit coolers inside mecha now work + - bugfix: Fixed printing '1' to world over and over + - bugfix: Made mech tracking beacon constructable again + - tweak: Change how emotes and LOOC propogate to nearby people + - tweak: Rewrote how get_mobs_and_objs_in_view_fast works + - tweak: Can now see through the red external airlock doors + Datraen: + - tweak: Adds a chance for slimes to get mutation toxin for creation of prometheans + (40%). + - bugfix: Simple animals outside of the hostile subtype won't follow you as a zombie. + - bugfix: Xeno hostility is more apparent now. + - bugfix: Slime cores can no longer create twice as many slimes through an exploit. + GinjaNinja32: + - rscadd: Rewrote drinking glasses. There are now eight types of glass, and drink + appearance is based on color and the type of glass you put it in. + - rscadd: There are now 'glass extras' you can add to drinks. Straws, drink sticks, + and fruit slices (yes, all of them) all work. You can add up to two extras per + glass. Add extras by clicking the glass with the extra, remove by clicking the + glass with an empty hand while it's in your other hand. + - rscadd: Adding 'fizzy' things (soda water, cola, etc) or ice to a drink will make + it be fizzy or have ice floating in it. + Yoshax: + - tweak: Everything produced in Robotics is now 25% cheaper to produce. +2016-06-15: + Yoshax: + - tweak: The categories for items in the cargo ordering console have been reworked. + Items shoulw now be in more sensible categories. If you cannot find something, + try the sensible category. +2016-06-21: + HarpyEagle: + - bugfix: Fixes disarm-attack dislocation chances being so low that you were very + likely to break the targeted limb before it would dislocate. + - bugfix: It is now possible to disarm-attack with stunbatons like with other melee + weapons. Note that this means that using a stunbaton on disarm intent will hurt + people. + - rscadd: Trying to move while being grabbed will now automatically resist. + - tweak: Small mobs are no longer able to pin larger mobs. + - tweak: Resisting a smaller mob's grab is more likely to be successful. + - bugfix: Fixed being able to climb onto a larger mob while restrained, weakened, + unconscious, or dead. + JerTheAce: + - rscadd: CentCom Fax, Admin Prayer, and CentCom emergency messages now prompt admins + with a pleasing sound effect. + - tweak: Fax machines now sound like fax machines and not polaroid cameras. +2016-06-27: + Sin4: + - rscadd: Added NanoUI for Advanced Body Scanners, Arcade, Atmospherics Control + Computer, Chemmaster, Cloning Console, Fax Machines, Guestpass Console, Holodeck + Computer, Laptop Vendors, Operating Computer, and Photocopiers. + - bugfix: Fixes chemmaster not putting pills in pill bottles. +2016-07-01: + Aztectornado: + - tweak: Clicking a stack of sheets (Metal, phoron...) in your other hand now asks + how many you want to split off the stack, courtesy of Baycode + Datraen: + - rscadd: Antagonistic factions can now be set and viewed on the uplink. Visibilities + can be set for these as well, to help identify sympathizers/potential aids, + or to hide the information from those outside of your faction. + Yosh: + - tweaks: Increases max records and book length to ridiculous levels. + Yoshax: + - tweak: The PTR Sniper is now more accurate when scoped, but less accurate when + unscoped. In addition it now has more recoil. + - tweak: The Laser Cannon no longer holds multiple shots. It holds charge for one + shot at a time. This is because the beams it fires now do 90 damage with 100 + armor penetration. Furthermore, it is now considerably more accurate. Lastly, + to counteract it only holding one shot at a time, it now autorecharges, which + takes 60 seconds. + Zuhayr: + - rscadd: Ports/adapted several kitchen machines from Apollo Station. +2016-07-08: + EmperorJon: + - rscadd: Adds admin functionality to call a trader ship event with the Beruang + in the same manner as ERT dispatches. + - rscadd: Adds a Trader 'antagonist' as they use the antagonist framework. Not considered + an actual antagonist, like the ERT. + - maptweak: Alters Beruang base to provide some clothing for Traders plus a locked-down + area for admins to spawn cargo. + - maptweak: Alters Beruang access to a new Trader-ID-only access requirement. + Neerti: + - maptweak: Restructred the AI core massively, and the upload slightly. + - rscadd: Adds a new material type, called Durasteel, which is made from plasteel + and diamonds. It's incredibly tough and also reflective. The inner walls of + the AI core contain this new material to protect it. + - rscadd: New turret subtype just for the AI core, that is more durable, has a chance + to shrug off EMP, and fires xray lasers. They even turn green. + - tweak: Turrets now wait to go back down in their covers upon losing sight of a + target. + - tweak: Emitters now have health, and can be damaged by projectiles. They will + explode on death. + - tweak: Critical APCs (the type found in the engine and AI core) are now more resistant + to EMP. Equipment and Enviroment stays on during an EMP, and less of the cell + is drained. + Sin4: + - rscadd: Added benches. + - rscadd: Added floor lamps. + - rscadd: Added water-cooler cup dispenser. + Yoshax: + - rscadd: Adds recipes for four new non-alcoholic cocktails. Shirley Temples, Roy + Rogers, Arnold Palmers and Collins Mixes. + - rscadd: Adds five new Tajaran hairstyles ported from Aurora. +2016-07-10: + Anewbe: + - bugfix: Changelings will no longer remain stunned or suchlike when attempting + to regenerate. + Cirra/: + - rscadd: Added a chemistry gripper for Crisis borgs. + GinjaNinja32: + - rscadd: Adds 3x & 4x upscaling options for players with very large monitors. + HarpyEagle: + - tweak: Runtime can now become friends with anyone, regardless of their initial + job. + Neerti: + - rscadd: Mining can now be done with explosives. The effectiveness depends on + the spot chosen to explode, so using an ore scanner is advised. + PsiOmegaDelta: + - rscadd: MedHUD overlays now have more stages, both for 'normal' and critical stages + of injury, for improved quick-diagnosis. + Redstryker: + - bugfix: Communicators will no longer show up on camera networks by default. + - rscadd: Adds a selection of flannels to the loadout. These can have their sleeves + rolled up, their buttons buttoned up, be tucked in and any combination of those. + Techhead: + - rscadd: 'New Random Event: Solar Storms. Similar to a radiation storm, but anywhere + inside the station is safe. Also boosts solar panel output significantly for + the duration.' + Yoshax: + - rscadd: Ports an Advanced Who verb that allows normal players to see what players + are in game, and which aren't. + Zuhayr: + - tweak: Modifies the health HUD element to display limb damage individually. It + will reflect your species, prosthetics, loss of limbs, as well as being on fire. +2016-07-13: + Anewbe: + - rscdel: Removed detonating borgs via Robotics Console + Yoshax: + - tweak: Emagging a cargo supply console will now properly hack it and will also + remove the access requirement. + - bugfix: Languages selected during character setup will once again be properly + added to mobs. + xDarkSapphire: + - rscadd: 'Adds a new hairstyle: Spiky Ponytail.' +2016-07-22: + Anewbe: + - rscdel: Removes assault carbine from uplink. + - tweak: Speeds up the toxin reagents + EmperorJon: + - bugfix: Having between 20 and 100 nutrition and over 45 toxin damage will no longer + cause you to gag ad-infinitum and die. It now respects vomit time restraints. + - tweak: Gagging now occurs only when the mob has no nutrition at all. It no longer + causes three toxin damage, only weakens as before. + - tweak: Vomiting and/or gagging from toxins now occurs regardless of nutrition, + not only 20+. + Neerti: + - rscadd: Adds ability for ghosts to send and receive text messages via communicator. + Yoshax: + - tweak: Drop pod contents have been adjusted. In general, you will get something + more useful and the less useful contents have been made more interesting. There + is a total of 12 drop pod content lists and 7/12 are useful, 4/12 are useless, + 1/12 is potentially useful. + - tweak: Stun Revolvers will no longer be able to spawn from random energy weapon + spawns. In addition, some of the other random item spawns have new items and + adjusted probablities. + - rscdel: Tajaran are no longer negatively affected by coffee. + - tweak: Bucklecuffing as it has been known for the longest time is no longer a + thing. When you resist when cuffed and buckled to something, you will now resist + out of the handcuffs first, allowing you to simply unbuckle yourself once done. +2016-07-25: + PsiOmegaDelta: + - bugfix: Robot upgrades produced in robotics to be applied to Cyborgs can now once + again actually be applied. + Rymdmannen: + - rscadd: Added department specific rubber stamps for cargo and warden. + - maptweak: Replaced 'small rubber stamp' with corresponding new ones in cargo area + and warden's office. + - spellcheck: Renamed ''quartermaster's stamp'' to ''quartermaster's rubber stamp''. + Superbee29: + - rscadd: Ghosts can now see the power in a cable when examining it. + Yoshax: + - tweak: Flashes no longer provide an instant stun. Flashes now confuse and blind + the affected person for five seconds and in addition makes their eyes blurry + for ten seconds. + - tweak: The empty box supply crate has been replaced with a shipping crate. Which + contains what you need to send stuff places! + - maptweak: The chef now gets a destination tagger and packaging paper to send people + food. + - bugfix: Drinking glasses now have a material cost in the autolathe. + - tweak: When emagged security bots such as the Securitron and ED-209 will now move + and pursue faster. + - bufix: Securty bots such as mentioned above will now be properly emagged. + - tweak: The cost of items in the antag uplink have been tweaked. Some are cheaper, + some are more expensive. In addition, you can now buy singular grenades isntead + of boxes. Buying a box has a discount over the singular. + - bugfix: Repairing burn damage on FBPs will now once again properly work. + - bugfix: Undislocating limbs will now once again properly work. + - rscadd: The phoron assembly crate in cargo has been renamed to a Phoron research + crate and now contains more supplies including tank transfer valves. + - tweak: The cooldown between discount offers in the antag uplink is now 10 minutes + versus the previous 15 minutes. + - tweak: The ordering of the items in the autolathe will now be somewhat diferrent + due to a code overhaul. It is now in alphabetic order. + - tweak: Security robots such as the Securitron or ED-209 are now more hardy and + can take more damage before dying. + - tweak: The silenced pistol no longer has any recoil and can be fired faster with + less delay in between shots. +2016-07-31: + Anewbe: + - rscadd: Sprays now respect shields. + Yoshax: + - bugfix: Certain items such as pills and suchlike will once again be usable on + someone who is on a surgical table/table. +2016-08-05: + Anewbe: + - rscadd: Changeling Self-Respiration is now a toggle. By default they breathe normally, + but if they use the power they no longer require oxygen, or experience the effects + of inhaled gasses. + - tweak: Heat based damage has been increased. This includes fire. + Hubblenaut: + - rscadd: Windoor assemblies can now be named with a pen. + - rscadd: Windoor and airlock assemblies now show their custom name during construction + phase. + - tweak: Windoors can now be made out of two sheets of glass or reinforced glass, + for normal and secure windoors respectively. + - tweak: Windoors now automatically close after construction. + - tweak: Adjusts the algorism for how windoors and windows are placed on construction + (when there are already windows co on the same turf). + - bugfix: Windoors will now drop exactly the materials they were made of. + - bugfix: Prying a broken circuit out of a windoor will no longer cause duplicates + to drop. + - bugfix: Airlocks no longer spark after spawn and several other icon update issues + were fixed. + - bugfix: Fixes reinforced walls not being constructable with one sheet left in + stack. + - bugfix: Windows that were busted out of their frame by force are now correctly + rotatable. + - bugfix: Lots of spellchecking and code cleanup in windoor and airlock code. + - rscdel: Killed innocent kittens. + Sin4: + - bugfix: Advanced Body Scanners are now deconstructable + - bugfix: You can now add coolant to the Radiocarbon Spectrometers + - tweak: Frame code revamped and cleaned up. + - rscadd: R&D server circuitboards can be swapped between core and robotics types + using a screwdriver. + Yoshax: + - bugfix: Wounds will now once again bleed. + - bugfix: Xeno loadout items will now properly be reloaded into a slot when the + server restarts. + - rscadd: A new item has been added to the uplink. Package bombs. These come in + two variants, small and big, which cost 20 TC and 40 TC respectively. These + come in a box with an explosive, a disguised detonator and a screwdriver. The + use the detonator you muse apply the screwdriver to configure it into detonator + mode. This must be done when it is closed. diff --git a/html/changelogs/Datraen-Xenobio2Update7.yml b/html/changelogs/Datraen-Xenobio2Update7.yml deleted file mode 100644 index 5c7739f344a..00000000000 --- a/html/changelogs/Datraen-Xenobio2Update7.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: Datraen - -delete-after: True - -changes: - - tweak: "Adds a chance for slimes to get mutation toxin for creation of prometheans (40%)." - - bugfix: "Simple animals outside of the hostile subtype won't follow you as a zombie." - - bugfix: "Xeno hostility is more apparent now." - - bugfix: "Slime cores can no longer create twice as many slimes through an exploit." diff --git a/html/changelogs/GinjaNinja32-newdrinks.yml b/html/changelogs/GinjaNinja32-newdrinks.yml deleted file mode 100644 index 3c685a553ab..00000000000 --- a/html/changelogs/GinjaNinja32-newdrinks.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: GinjaNinja32 -delete-after: True -changes: - - rscadd: "Rewrote drinking glasses. There are now eight types of glass, and drink appearance is based on color and the type of glass you put it in." - - rscadd: "There are now 'glass extras' you can add to drinks. Straws, drink sticks, and fruit slices (yes, all of them) all work. You can add up to two extras per glass. Add extras by clicking the glass with the extra, remove by clicking the glass with an empty hand while it's in your other hand." - - rscadd: "Adding 'fizzy' things (soda water, cola, etc) or ice to a drink will make it be fizzy or have ice floating in it." diff --git a/html/changelogs/Yoshax-Roboticsstuff.yml b/html/changelogs/HarpyEagle-burns.yml similarity index 90% rename from html/changelogs/Yoshax-Roboticsstuff.yml rename to html/changelogs/HarpyEagle-burns.yml index 8a3033a9563..f7fce8e5fe9 100644 --- a/html/changelogs/Yoshax-Roboticsstuff.yml +++ b/html/changelogs/HarpyEagle-burns.yml @@ -22,7 +22,7 @@ ################################# # Your name. -author: Yoshax +author: HarpyEagle # Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. delete-after: True @@ -33,4 +33,4 @@ delete-after: True # Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. # Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. changes: - - tweak: "Everything produced in Robotics is now 25% cheaper to produce." + - rscadd: "Severe enough burn damage now causes one-time blood loss due to blistering and body fluid cook-off." \ No newline at end of file diff --git a/html/changelogs/Sin4 - miscfixes.yml b/html/changelogs/Sin4 - miscfixes.yml new file mode 100644 index 00000000000..ae61151c33b --- /dev/null +++ b/html/changelogs/Sin4 - miscfixes.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Sin4 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Fixed ERT icon not showing up properly for sechuds." + - tweak: "Fixed instances of the game mode's config_tag being displayed instead of the game mode name." diff --git a/html/changelogs/Yoshax - Telecrystals.yml b/html/changelogs/Yoshax - Telecrystals.yml new file mode 100644 index 00000000000..25e6a390864 --- /dev/null +++ b/html/changelogs/Yoshax - Telecrystals.yml @@ -0,0 +1,39 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Yoshax + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Attacking yourself, or anyone else with a stack of five or more telecrystals will teleport the attacked person to a random, safe (not in space) location within 14 metres." + - tweak: "All telecrystals ammounts have been multiplied by 10. This means the base amount is now 120, and an emag for example costs 30, vs the previous 12 and 3, respectively." + - tweak: "You can once again use telecrystals on an emag to add more uses to it. You get 1 use per every 2 telecrystals." + - tweak: "Instead of only being able to remove 1 telecrystal from your uplink, you can now remove 1, 5, 10, 25, 50." diff --git a/html/images/sglogo.png b/html/images/sglogo.png new file mode 100644 index 00000000000..930a0c4a5e0 Binary files /dev/null and b/html/images/sglogo.png differ diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index 521aea66d40..5580e9a5da7 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 416f2b5d6cd..4e08b08c8db 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/projectiles.dmi b/icons/effects/projectiles.dmi index 703d8f8c3dc..5598cf6f849 100644 Binary files a/icons/effects/projectiles.dmi and b/icons/effects/projectiles.dmi differ diff --git a/icons/misc/beach.dmi b/icons/misc/beach.dmi index 4caa0d10d77..036cc7d71f1 100644 Binary files a/icons/misc/beach.dmi and b/icons/misc/beach.dmi differ diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi index a9374db3408..c294178f918 100644 Binary files a/icons/misc/buildmode.dmi and b/icons/misc/buildmode.dmi differ diff --git a/icons/mob/AI.dmi b/icons/mob/AI.dmi index f074231afba..7fe7877cdaa 100644 Binary files a/icons/mob/AI.dmi and b/icons/mob/AI.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index daba63e2e9b..971ed98d1a3 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index ce61c817f5e..0441606e95b 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 5f8e67691e0..9eaa1546e40 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/critter.dmi b/icons/mob/critter.dmi index f63949af792..d118b9ec2ae 100644 Binary files a/icons/mob/critter.dmi and b/icons/mob/critter.dmi differ diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index 0fbebc0d3d2..b9fbe70b5e1 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 788fed60d8d..5a343aa2ae2 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 1d4385103bf..18238c0543c 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/mob/hud_med.dmi b/icons/mob/hud_med.dmi new file mode 100644 index 00000000000..752829fba26 Binary files /dev/null and b/icons/mob/hud_med.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index ececc9ef9ad..99f9bfd2e7f 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/human_races/cyberlimbs/morpheus/morpheus_main.dmi b/icons/mob/human_races/cyberlimbs/morpheus/morpheus_main.dmi index e1e948f5b5c..5c466d63ed5 100644 Binary files a/icons/mob/human_races/cyberlimbs/morpheus/morpheus_main.dmi and b/icons/mob/human_races/cyberlimbs/morpheus/morpheus_main.dmi differ diff --git a/icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_main.dmi b/icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_main.dmi new file mode 100644 index 00000000000..66a871d1b07 Binary files /dev/null and b/icons/mob/human_races/cyberlimbs/nanotrasen/nanotrasen_main.dmi differ diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi index bab98652cc4..0188ec65f2a 100644 Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ diff --git a/icons/mob/items/lefthand_backpacks.dmi b/icons/mob/items/lefthand_backpacks.dmi deleted file mode 100644 index 74da58f2dab..00000000000 Binary files a/icons/mob/items/lefthand_backpacks.dmi and /dev/null differ diff --git a/icons/mob/items/lefthand_gloves.dmi b/icons/mob/items/lefthand_gloves.dmi new file mode 100644 index 00000000000..0c12bda3d58 Binary files /dev/null and b/icons/mob/items/lefthand_gloves.dmi differ diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index 7d495b376de..73ce626bf45 100644 Binary files a/icons/mob/items/lefthand_guns.dmi and b/icons/mob/items/lefthand_guns.dmi differ diff --git a/icons/mob/items/lefthand_hats.dmi b/icons/mob/items/lefthand_hats.dmi index 2cae6e7e967..96c7bd9dc29 100644 Binary files a/icons/mob/items/lefthand_hats.dmi and b/icons/mob/items/lefthand_hats.dmi differ diff --git a/icons/mob/items/lefthand_masks.dmi b/icons/mob/items/lefthand_masks.dmi new file mode 100644 index 00000000000..316661dd369 Binary files /dev/null and b/icons/mob/items/lefthand_masks.dmi differ diff --git a/icons/mob/items/lefthand_material.dmi b/icons/mob/items/lefthand_material.dmi new file mode 100644 index 00000000000..70127575ee6 Binary files /dev/null and b/icons/mob/items/lefthand_material.dmi differ diff --git a/icons/mob/items/lefthand_melee.dmi b/icons/mob/items/lefthand_melee.dmi new file mode 100644 index 00000000000..93ac77c6555 Binary files /dev/null and b/icons/mob/items/lefthand_melee.dmi differ diff --git a/icons/mob/items/lefthand_shoes.dmi b/icons/mob/items/lefthand_shoes.dmi new file mode 100644 index 00000000000..cfdfddc8158 Binary files /dev/null and b/icons/mob/items/lefthand_shoes.dmi differ diff --git a/icons/mob/items/lefthand_spells.dmi b/icons/mob/items/lefthand_spells.dmi new file mode 100644 index 00000000000..bb1b3b0b6ce Binary files /dev/null and b/icons/mob/items/lefthand_spells.dmi differ diff --git a/icons/mob/items/lefthand_storage.dmi b/icons/mob/items/lefthand_storage.dmi new file mode 100644 index 00000000000..80c8a703028 Binary files /dev/null and b/icons/mob/items/lefthand_storage.dmi differ diff --git a/icons/mob/items/lefthand_suits.dmi b/icons/mob/items/lefthand_suits.dmi new file mode 100644 index 00000000000..04f62b1266d Binary files /dev/null and b/icons/mob/items/lefthand_suits.dmi differ diff --git a/icons/mob/items/lefthand_uniforms.dmi b/icons/mob/items/lefthand_uniforms.dmi index 149d44fd8bc..64a18812f75 100644 Binary files a/icons/mob/items/lefthand_uniforms.dmi and b/icons/mob/items/lefthand_uniforms.dmi differ diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi index e52cd632b04..2f0182a1dd8 100644 Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ diff --git a/icons/mob/items/righthand_backpacks.dmi b/icons/mob/items/righthand_backpacks.dmi deleted file mode 100644 index 77ac28ea056..00000000000 Binary files a/icons/mob/items/righthand_backpacks.dmi and /dev/null differ diff --git a/icons/mob/items/righthand_gloves.dmi b/icons/mob/items/righthand_gloves.dmi new file mode 100644 index 00000000000..25b41e25ec9 Binary files /dev/null and b/icons/mob/items/righthand_gloves.dmi differ diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index fe2bb9e62f1..4d0f6375116 100644 Binary files a/icons/mob/items/righthand_guns.dmi and b/icons/mob/items/righthand_guns.dmi differ diff --git a/icons/mob/items/righthand_hats.dmi b/icons/mob/items/righthand_hats.dmi index ffaa950b557..727dcebfe94 100644 Binary files a/icons/mob/items/righthand_hats.dmi and b/icons/mob/items/righthand_hats.dmi differ diff --git a/icons/mob/items/righthand_masks.dmi b/icons/mob/items/righthand_masks.dmi new file mode 100644 index 00000000000..e69f1594d03 Binary files /dev/null and b/icons/mob/items/righthand_masks.dmi differ diff --git a/icons/mob/items/righthand_material.dmi b/icons/mob/items/righthand_material.dmi new file mode 100644 index 00000000000..db11ee211f6 Binary files /dev/null and b/icons/mob/items/righthand_material.dmi differ diff --git a/icons/mob/items/righthand_melee.dmi b/icons/mob/items/righthand_melee.dmi new file mode 100644 index 00000000000..ce37a0997ed Binary files /dev/null and b/icons/mob/items/righthand_melee.dmi differ diff --git a/icons/mob/items/righthand_shoes.dmi b/icons/mob/items/righthand_shoes.dmi new file mode 100644 index 00000000000..83600b934ad Binary files /dev/null and b/icons/mob/items/righthand_shoes.dmi differ diff --git a/icons/mob/items/righthand_spells.dmi b/icons/mob/items/righthand_spells.dmi new file mode 100644 index 00000000000..9bd305bd007 Binary files /dev/null and b/icons/mob/items/righthand_spells.dmi differ diff --git a/icons/mob/items/righthand_storage.dmi b/icons/mob/items/righthand_storage.dmi new file mode 100644 index 00000000000..0b5b26bba6c Binary files /dev/null and b/icons/mob/items/righthand_storage.dmi differ diff --git a/icons/mob/items/righthand_suits.dmi b/icons/mob/items/righthand_suits.dmi new file mode 100644 index 00000000000..6b5e8a511b1 Binary files /dev/null and b/icons/mob/items/righthand_suits.dmi differ diff --git a/icons/mob/items/righthand_uniforms.dmi b/icons/mob/items/righthand_uniforms.dmi index c014bdc35e6..5b16babfbb8 100644 Binary files a/icons/mob/items/righthand_uniforms.dmi and b/icons/mob/items/righthand_uniforms.dmi differ diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 6e5777e4bfe..bb8e6b94619 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi index 077b0e80403..9a326ac8a40 100644 Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ diff --git a/icons/mob/screen1_health.dmi b/icons/mob/screen1_health.dmi new file mode 100644 index 00000000000..6905268a135 Binary files /dev/null and b/icons/mob/screen1_health.dmi differ diff --git a/icons/mob/screen1_robot.dmi b/icons/mob/screen1_robot.dmi index ad0ac4fd774..ef3965f8ee0 100644 Binary files a/icons/mob/screen1_robot.dmi and b/icons/mob/screen1_robot.dmi differ diff --git a/icons/mob/screen_full.dmi b/icons/mob/screen_full.dmi new file mode 100644 index 00000000000..e84b0546950 Binary files /dev/null and b/icons/mob/screen_full.dmi differ diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi new file mode 100644 index 00000000000..cf74d73796c Binary files /dev/null and b/icons/mob/screen_gen.dmi differ diff --git a/icons/mob/screen_spells.dmi b/icons/mob/screen_spells.dmi index db693428d07..1d416a954ce 100644 Binary files a/icons/mob/screen_spells.dmi and b/icons/mob/screen_spells.dmi differ diff --git a/icons/mob/species/seromi/back.dmi b/icons/mob/species/seromi/back.dmi index 66455ffb3c7..e69e3858e21 100644 Binary files a/icons/mob/species/seromi/back.dmi and b/icons/mob/species/seromi/back.dmi differ diff --git a/icons/mob/species/seromi/gloves.dmi b/icons/mob/species/seromi/gloves.dmi index 7ff6c97e692..1eaab4f913c 100644 Binary files a/icons/mob/species/seromi/gloves.dmi and b/icons/mob/species/seromi/gloves.dmi differ diff --git a/icons/mob/species/seromi/head.dmi b/icons/mob/species/seromi/head.dmi index 7305a6e216e..57c4f117133 100644 Binary files a/icons/mob/species/seromi/head.dmi and b/icons/mob/species/seromi/head.dmi differ diff --git a/icons/mob/species/seromi/suit.dmi b/icons/mob/species/seromi/suit.dmi index 693565171c6..f74326df984 100644 Binary files a/icons/mob/species/seromi/suit.dmi and b/icons/mob/species/seromi/suit.dmi differ diff --git a/icons/mob/species/seromi/ties.dmi b/icons/mob/species/seromi/ties.dmi new file mode 100644 index 00000000000..de7bc664e8e Binary files /dev/null and b/icons/mob/species/seromi/ties.dmi differ diff --git a/icons/mob/species/seromi/uniform.dmi b/icons/mob/species/seromi/uniform.dmi index 86cea78d38a..360c765aea9 100644 Binary files a/icons/mob/species/seromi/uniform.dmi and b/icons/mob/species/seromi/uniform.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 93a38573cdf..fff04a0c608 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi index 33f7790f888..67898604e37 100644 Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 6a313ae90de..17fe5b8ad90 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index ba63e4189f5..6e36b86b00d 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/bench.dmi b/icons/obj/bench.dmi new file mode 100644 index 00000000000..fb8c2123b34 Binary files /dev/null and b/icons/obj/bench.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index f8b7e566d31..a033aad43aa 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 7fa721499b3..7a5326775bf 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index fa521d772d3..a5a4767b91c 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 26a6110e38c..6d13ab616c3 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index a61e8386368..3c65628900d 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 9ea8f949add..e11c97c709a 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi index f3ef480e1a0..c97eff9aa41 100644 Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index e9256fa849e..235d0b5193f 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/cooking_machines.dmi b/icons/obj/cooking_machines.dmi new file mode 100644 index 00000000000..666a31b9d09 Binary files /dev/null and b/icons/obj/cooking_machines.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index cba5ea04cae..2c2e234a3ff 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/dice.dmi b/icons/obj/dice.dmi index 669ad215c5c..f6a209b4687 100644 Binary files a/icons/obj/dice.dmi and b/icons/obj/dice.dmi differ diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 7354bd311b2..9f5106f0aec 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ diff --git a/icons/obj/food_custom.dmi b/icons/obj/food_custom.dmi new file mode 100644 index 00000000000..39491d65f5e Binary files /dev/null and b/icons/obj/food_custom.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 453baecbc04..81ad5fa3914 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 53836c99c5e..b8ee96c1d9b 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index 1a9d80bb13e..c3d5491a7c9 100644 Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 5b453fbfb47..dbaf4a58902 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/paper.dmi b/icons/obj/paper.dmi index ca4663df18d..0d5ca3e4e78 100644 Binary files a/icons/obj/paper.dmi and b/icons/obj/paper.dmi differ diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi index 80d768dfe5c..14878d4dd08 100644 Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 7f3468a3638..2e254cc5cb2 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/spells.dmi b/icons/obj/spells.dmi new file mode 100644 index 00000000000..3f4572f61ca Binary files /dev/null and b/icons/obj/spells.dmi differ diff --git a/icons/obj/technomancer.dmi b/icons/obj/technomancer.dmi new file mode 100644 index 00000000000..b8b19722696 Binary files /dev/null and b/icons/obj/technomancer.dmi differ diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi index b3a20367426..775fe03b612 100644 Binary files a/icons/obj/turrets.dmi and b/icons/obj/turrets.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index e4157037b97..5671731aab6 100755 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/icons/turf/overlays.dmi b/icons/turf/overlays.dmi index a96f6b14bc5..d4dae7101a1 100644 Binary files a/icons/turf/overlays.dmi and b/icons/turf/overlays.dmi differ diff --git a/icons/turf/snow.dmi b/icons/turf/snow.dmi index 5871cbdfc63..8f13ef91076 100644 Binary files a/icons/turf/snow.dmi and b/icons/turf/snow.dmi differ diff --git a/icons/turf/snow_new.dmi b/icons/turf/snow_new.dmi new file mode 100644 index 00000000000..8a95c14bed3 Binary files /dev/null and b/icons/turf/snow_new.dmi differ diff --git a/interface/skin.dmf b/interface/skin.dmf index 59d3d784317..be23750148c 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -995,6 +995,24 @@ menu "menu" group = "size" is-disabled = false saved-params = "is-checked" + elem "icon128" + name = "&128x128" + command = ".winset \"mapwindow.map.icon-size=128\"" + category = "&Icons" + is-checked = false + can-check = true + group = "size" + is-disabled = false + saved-params = "is-checked" + elem "icon96" + name = "&96x96" + command = ".winset \"mapwindow.map.icon-size=96\"" + category = "&Icons" + is-checked = false + can-check = true + group = "size" + is-disabled = false + saved-params = "is-checked" elem "icon64" name = "&64x64" command = ".winset \"mapwindow.map.icon-size=64\"" diff --git a/maps/polaris-1.dmm b/maps/polaris-1.dmm index fe5ad28a226..a010896198d 100644 --- a/maps/polaris-1.dmm +++ b/maps/polaris-1.dmm @@ -158,8 +158,8 @@ "adb" = (/obj/machinery/photocopier,/turf/simulated/floor/lino,/area/chapel/office) "adc" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "add" = (/turf/simulated/wall,/area/maintenance/library) -"ade" = (/turf/space,/area/shuttle/escape_pod1/station) -"adf" = (/turf/space,/area/shuttle/escape_pod2/station) +"ade" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/red{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/security/main) +"adf" = (/obj/structure/closet,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/turf/simulated/floor,/area/maintenance/pool) "adg" = (/obj/structure/table/rack,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/plating,/area/maintenance/library) "adh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/library) "adi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/maintenance/library) @@ -1257,9 +1257,9 @@ "ayi" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/northern_star{c_tag = "Hall - Chapel Access Port"; dir = 2},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway) "ayj" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/paleblue{dir = 5},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "ayk" = (/obj/structure/closet/secure_closet/medical3,/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/effect/floor_decal/corner/paleblue/full{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) -"ayl" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/packageWrap,/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"ayl" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/reagentgrinder,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "aym" = (/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway) -"ayn" = (/obj/structure/closet/chefcloset,/obj/item/glass_jar,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/device/retail_scanner/civilian,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"ayn" = (/obj/structure/closet/chefcloset,/obj/item/glass_jar,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/device/retail_scanner/civilian,/obj/item/weapon/soap/nanotrasen,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "ayo" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5) "ayp" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled/dark,/area/hallway/secondary/chapel_hallway) "ayq" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6) @@ -1328,6 +1328,8 @@ "azB" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_7) "azC" = (/obj/structure/table/standard,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_8) "azD" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = -27},/obj/machinery/light_switch{pixel_x = 0; pixel_y = -27},/obj/structure/table/standard,/obj/structure/bedsheetbin,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash) +"azE" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/browndouble,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) +"azF" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/browndouble,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6) "azG" = (/turf/space,/area/syndicate_station/northwest) "azH" = (/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) "azI" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) @@ -1351,6 +1353,7 @@ "aAa" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor,/area/security/riot_control) "aAb" = (/turf/simulated/floor,/area/security/riot_control) "aAc" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor,/area/security/riot_control) +"aAd" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/browndouble,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) "aAe" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor,/area/maintenance/security_starboard) "aAf" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor,/area/maintenance/security_starboard) "aAg" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/maintenance/security_starboard) @@ -1376,7 +1379,14 @@ "aAA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway) "aAB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway) "aAC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled,/area/hallway/secondary/chapel_hallway) +"aAD" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/browndouble,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12) +"aAE" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) +"aAF" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6) +"aAG" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) +"aAH" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12) +"aAI" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 5"; dir = 1},/obj/structure/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "aAJ" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/chapel) +"aAK" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "aAL" = (/turf/simulated/wall/r_wall,/area/security/armoury) "aAM" = (/obj/structure/closet/bombclosetsecurity,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) "aAN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/security_equiptment_storage) @@ -1427,7 +1437,7 @@ "aBG" = (/turf/simulated/floor/tiled/dark,/area/security/warden) "aBH" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/security/warden) "aBI" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/button/remote/blast_door{id = "security_lockdown"; name = "Brig Lockdown"; pixel_x = 36; pixel_y = 18; req_access = list(2)},/obj/machinery/button/remote/blast_door{id = "brigobs"; name = "Observation Shutters"; pixel_x = 24; pixel_y = 18; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/warden) -"aBJ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/material/ashtray/glass,/obj/structure/window/reinforced,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/stamp,/obj/item/weapon/stamp/denied{pixel_x = 5},/turf/simulated/floor/tiled/dark,/area/security/warden) +"aBJ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/material/ashtray/glass,/obj/structure/window/reinforced,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/weapon/stamp/denied{pixel_x = 5},/obj/item/weapon/stamp/ward,/turf/simulated/floor/tiled/dark,/area/security/warden) "aBK" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/floor_decal/corner/red{dir = 1},/turf/simulated/floor/tiled,/area/security/brig) "aBL" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/effect/floor_decal/corner/red{dir = 4},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/security/brig) "aBM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/security_processing) @@ -1583,6 +1593,7 @@ "aEG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/medical_escape_pod_hallway) "aEH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/machinery/door/window/brigdoor/northleft{name = "Weapons locker"; req_access = list(2)},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/obj/item/weapon/gun/projectile/colt/detective,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) "aEI" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden) +"aEJ" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3) "aEK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/security_equiptment_storage) "aEL" = (/obj/machinery/computer/security{pixel_y = 0},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden) "aEM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/warden) @@ -1622,7 +1633,9 @@ "aFu" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) "aFv" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) "aFw" = (/obj/machinery/computer/arcade,/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) +"aFx" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4) "aFy" = (/obj/structure/table/woodentable,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/item/device/paicard,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) +"aFz" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9) "aFA" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) "aFB" = (/obj/structure/closet/athletic_mixed,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aFC" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) @@ -1633,13 +1646,14 @@ "aFH" = (/obj/item/weapon/stool/padded,/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aFI" = (/obj/structure/table/glass,/obj/item/inflatable{pixel_x = 6; pixel_y = 6},/obj/item/inflatable{pixel_x = 2; pixel_y = 2},/obj/item/inflatable{pixel_x = -2; pixel_y = -3},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aFJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/pool) -"aFK" = (/obj/structure/reagent_dispensers/water_cooler{bottle = 1},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) -"aFL" = (/obj/structure/reagent_dispensers/water_cooler{bottle = 1},/obj/effect/floor_decal/corner/paleblue{dir = 2},/turf/simulated/floor/tiled,/area/medical/surgeryobs) -"aFM" = (/obj/structure/reagent_dispensers/water_cooler{bottle = 1},/obj/effect/floor_decal/corner/lime/full{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/virology) +"aFK" = (/obj/structure/reagent_dispensers/water_cooler/full,/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) +"aFL" = (/obj/structure/reagent_dispensers/water_cooler/full,/obj/effect/floor_decal/corner/paleblue{dir = 2},/turf/simulated/floor/tiled,/area/medical/surgeryobs) +"aFM" = (/obj/structure/reagent_dispensers/water_cooler/full,/obj/effect/floor_decal/corner/lime/full{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/virology) "aFN" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/armoury) "aFO" = (/obj/machinery/door/blast/regular{id = "Armoury"; name = "Emergency Access"},/turf/simulated/floor/tiled,/area/security/armoury) "aFP" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled,/area/security/brig) "aFQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/security/brig) +"aFR" = (/obj/structure/table/standard,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) "aFS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/warden) "aFT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/warden) "aFU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access = list(3)},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/security/warden) @@ -1671,6 +1685,7 @@ "aGu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor,/area/maintenance/security_starboard) "aGv" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/closet/l3closet/janitor,/turf/simulated/floor/tiled,/area/janitor) "aGw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/brig) +"aGx" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3) "aGy" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) "aGz" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft) "aGA" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/lawoffice) @@ -1685,7 +1700,7 @@ "aGJ" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) "aGK" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) "aGL" = (/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) -"aGM" = (/obj/structure/reagent_dispensers/water_cooler{bottle = 1},/obj/effect/floor_decal/corner/paleblue{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/medical/reception) +"aGM" = (/obj/structure/reagent_dispensers/water_cooler/full,/obj/effect/floor_decal/corner/paleblue{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/medical/reception) "aGN" = (/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) "aGO" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) "aGP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/crew_quarters/recreation_area) @@ -1693,11 +1708,11 @@ "aGR" = (/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aGS" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aGT" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) -"aGU" = (/obj/effect/floor_decal/corner/blue,/obj/structure/reagent_dispensers/water_cooler{bottle = 1},/turf/simulated/floor/tiled,/area/bridge_hallway) +"aGU" = (/obj/effect/floor_decal/corner/blue,/obj/structure/reagent_dispensers/water_cooler/full,/turf/simulated/floor/tiled,/area/bridge_hallway) "aGV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/armoury) "aGW" = (/obj/machinery/door/airlock/atmos{name = "Riot Control Maintenance"; req_access = newlist(); req_one_access = list(2,12,24)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/security/riot_control) "aGX" = (/obj/structure/table/standard,/obj/item/weapon/clipboard,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/stamp/qm,/turf/simulated/floor/tiled,/area/quartermaster/qm) -"aGY" = (/obj/structure/reagent_dispensers/water_cooler{bottle = 1},/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning) +"aGY" = (/obj/structure/reagent_dispensers/water_cooler/full,/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning) "aGZ" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/armoury) "aHa" = (/obj/machinery/door/blast/regular{id = "Armoury"; name = "Emergency Access"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/armoury) "aHb" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/brig) @@ -1737,7 +1752,9 @@ "aHJ" = (/obj/machinery/flasher{id = "Cell 3"; pixel_x = -28; pixel_y = 0},/obj/structure/bed/padded,/turf/simulated/floor/tiled,/area/security/prison) "aHK" = (/obj/structure/closet/secure_closet/brig{id = "Cell 3"; name = "Cell 3 Locker"},/obj/machinery/camera/network/prison{c_tag = "SEC - Brig Cell 3"; dir = 8},/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/tiled,/area/security/prison) "aHL" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor,/area/maintenance/security_starboard) +"aHM" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3) "aHN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/security_starboard) +"aHO" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4) "aHP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/janitor) "aHQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/janitor) "aHR" = (/obj/machinery/light_switch{pixel_x = 34; pixel_y = 1},/obj/machinery/button/remote/blast_door{id = "janitor_blast"; name = "Privacy Shutters"; pixel_x = 26; pixel_y = 0},/obj/machinery/camera/network/civilian{c_tag = "CIV - Custodial Closet"; dir = 9},/turf/simulated/floor/tiled,/area/janitor) @@ -1801,6 +1818,7 @@ "aIX" = (/obj/machinery/door/blast/regular{dir = 1; id = "Cell 3"; name = "Cell Door"},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/security/prison) "aIY" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/security_starboard) "aIZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor,/area/maintenance/security_starboard) +"aJa" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4) "aJb" = (/turf/simulated/floor/tiled,/area/janitor) "aJc" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/janitor) "aJd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/janitor) @@ -1834,6 +1852,7 @@ "aJF" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/corner/red{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/computer/cryopod{density = 0; layer = 3.3; pixel_y = 32},/turf/simulated/floor/tiled,/area/security/security_cell_hallway) "aJG" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/security/armoury) "aJH" = (/obj/effect/floor_decal/corner/red{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/tiled,/area/security/security_cell_hallway) +"aJI" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9) "aJJ" = (/turf/simulated/wall/r_wall,/area/security/range) "aJK" = (/turf/simulated/wall,/area/security/range) "aJL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/range) @@ -1852,6 +1871,7 @@ "aJY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{id_tag = "visitdoor"; name = "Visitation Area"; req_access = list(63)},/turf/simulated/floor/tiled,/area/security/prison) "aJZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_security{id_tag = "prisonexit"; name = "Brig Exit"; req_access = list(2)},/turf/simulated/floor/tiled,/area/security/prison) "aKa" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_security{id_tag = "prisonexit"; name = "Brig Exit"; req_access = list(2)},/turf/simulated/floor/tiled,/area/security/prison) +"aKb" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9) "aKc" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/computer/arcade,/turf/simulated/floor/tiled,/area/security/prison) "aKd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/prison) "aKe" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/security/prison) @@ -1863,7 +1883,10 @@ "aKk" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/security/prison) "aKl" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/maintenance/security_starboard) "aKm" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Janitor"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/janitor) +"aKn" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) "aKo" = (/obj/structure/janitorialcart,/turf/simulated/floor/tiled,/area/janitor) +"aKp" = (/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) +"aKq" = (/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3) "aKr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/lawoffice) "aKs" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/lawoffice) "aKt" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/blue{pixel_x = -5; pixel_y = -1},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = 3},/obj/item/weapon/material/ashtray/plastic{pixel_x = 4; pixel_y = 6},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/tiled/dark,/area/lawoffice) @@ -1878,6 +1901,9 @@ "aKC" = (/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/pool) "aKD" = (/obj/effect/floor_decal/spline/plain{dir = 4},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/pool) "aKE" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) +"aKF" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3) +"aKG" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4) +"aKH" = (/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4) "aKI" = (/turf/simulated/floor/tiled,/area/security/range) "aKJ" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/security/range) "aKK" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/security/range) @@ -1915,7 +1941,11 @@ "aLq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/security_starboard) "aLr" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access = list(26)},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/janitor) "aLs" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/janitor) +"aLt" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9) +"aLu" = (/obj/machinery/newscaster{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9) +"aLv" = (/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) "aLw" = (/obj/item/weapon/stool/padded,/obj/effect/landmark/start{name = "Janitor"},/turf/simulated/floor/tiled,/area/janitor) +"aLx" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) "aLy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft) "aLz" = (/obj/machinery/button/remote/blast_door{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_x = -26; pixel_y = 0},/obj/machinery/light_switch{pixel_x = -34; pixel_y = 0},/obj/machinery/camera/network/civilian{c_tag = "CIV - Internal Affairs"; dir = 5},/turf/simulated/floor/tiled/dark,/area/lawoffice) "aLA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/dark,/area/lawoffice) @@ -1936,6 +1966,8 @@ "aLP" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area) "aLQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/pool) "aLR" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) +"aLS" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/candy,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"aLT" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/oven,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "aLU" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/target_stake,/turf/simulated/floor/tiled,/area/security/range) "aLV" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/security/range) "aLW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/security/range) @@ -1955,6 +1987,7 @@ "aMk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/flasher{id = "permentryflash"; name = "Floor mounted flash"; pixel_x = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/security/prison) "aMl" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/prison{c_tag = "SEC - Common Brig Enterance"; dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/security/prison) "aMm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Communal Brig Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison) +"aMn" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/reagent_containers/food/snacks/mint,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/obj/item/weapon/packageWrap,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "aMo" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table/steel,/obj/machinery/camera/network/prison{c_tag = "SEC - Brig Observation"; dir = 1},/turf/simulated/floor/tiled,/area/security/prison) "aMp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Prison Gate"; name = "Communal Brig Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison) "aMq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/prison) @@ -1989,6 +2022,12 @@ "aMT" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aMU" = (/obj/effect/floor_decal/spline/plain{dir = 5},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aMV" = (/obj/structure/table/glass,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) +"aMW" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/light{dir = 8},/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/obj/machinery/cooker/cereal,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"aMX" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/grill,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"aMY" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/fryer,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"aMZ" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/item/weapon/book/manual/chef_recipes,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"aNa" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/icecream_vat,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"aNb" = (/turf/space,/area/shuttle/trade/station) "aNc" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/security/range) "aNd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/security/range) "aNe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/range) @@ -2054,7 +2093,12 @@ "aOm" = (/obj/effect/floor_decal/spline/plain{dir = 6},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aOn" = (/obj/structure/table/glass,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aOo" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/pool) +"aOp" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "aOq" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard) +"aOr" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) +"aOs" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"aOt" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) +"aOu" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "exterior access button"; pixel_x = 4; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "aOv" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/range) "aOw" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/range) "aOx" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/security/range) @@ -2090,6 +2134,7 @@ "aPb" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/dark,/area/lawoffice) "aPc" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/blue,/obj/item/weapon/pen/red{pixel_x = -5; pixel_y = -1},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor/tiled/dark,/area/lawoffice) "aPd" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/holodeck) +"aPe" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "aPf" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/holodeck_control) "aPg" = (/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/holodeck_control) "aPh" = (/obj/machinery/camera/network/northern_star{c_tag = "Hall - Recreation Mid"; dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) @@ -2106,6 +2151,7 @@ "aPs" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aPt" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/pool) "aPu" = (/obj/structure/closet/secure_closet/paramedic,/obj/item/clothing/accessory/storage/black_vest,/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay) +"aPv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "aPw" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue{dir = 10},/obj/structure/window/reinforced,/obj/random/energy,/obj/random/energy,/obj/machinery/door/window/brigdoor/northleft{name = "Energy"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury) "aPx" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/range) "aPy" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/security/range) @@ -2181,9 +2227,13 @@ "aQQ" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Art Storage"; dir = 8},/turf/simulated/floor/tiled,/area/storage/art) "aQR" = (/obj/machinery/firealarm{dir = 4; pixel_x = 26},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_aft) "aQS" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/tiled/dark,/area/lawoffice) +"aQT" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "exterior access button"; pixel_x = 4; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "aQU" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) "aQV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) "aQW" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) +"aQX" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_starboard_airlock"; name = "exterior access button"; pixel_x = -4; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"aQY" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"aQZ" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "aRa" = (/obj/machinery/door/airlock{name = "Unisex Showers"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/recreation_area_restroom) "aRb" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aRc" = (/obj/effect/floor_decal/spline/plain{dir = 10},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/pool) @@ -2223,6 +2273,7 @@ "aRK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aRL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/pool) "aRM" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/maintenance/pool) +"aRN" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "aRO" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 4},/area/shuttle/large_escape_pod2/station) "aRP" = (/turf/simulated/shuttle/wall,/area/shuttle/large_escape_pod2/station) "aRQ" = (/obj/structure/shuttle/engine/propulsion{dir = 4; icon_state = "propulsion_r"},/turf/space,/area/shuttle/large_escape_pod2/station) @@ -2473,8 +2524,11 @@ "aWB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) "aWC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) "aWD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway) +"aWE" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "aWF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/dark,/area/crew_quarters/recreation_area_hallway) "aWG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/pool) +"aWH" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) +"aWI" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "trade_shuttle_dock_airlock"; name = "interior access button"; pixel_x = -28; pixel_y = -26; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "aWJ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/maintenance/pool) "aWK" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/fore_port_escape_pod_hallway) "aWL" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/fore_port_escape_pod_hallway) @@ -2706,6 +2760,7 @@ "bbd" = (/turf/space,/area/skipjack_station/northwest_solars) "bbe" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/closet/firecloset,/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/camera/network/research{c_tag = "SCI - Research Auxiliary Access"; dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer_auxiliary) "bbf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/rnd/research_foyer_auxiliary) +"bbg" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_dock_inner"; locked = 1; name = "Dock One Internal Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "bbh" = (/obj/structure/window/reinforced,/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/obj/machinery/camera/network/civilian{c_tag = "CIV - Gateway"; dir = 4},/turf/simulated/floor/tiled/dark,/area/gateway) "bbi" = (/obj/machinery/gateway{dir = 10},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor/tiled/dark,/area/gateway) "bbj" = (/obj/machinery/gateway,/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor/tiled/dark,/area/gateway) @@ -2770,7 +2825,7 @@ "bcq" = (/turf/simulated/floor/tiled/dark,/area/ai_server_room) "bcr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/ai_server_room) "bcs" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/turretid/stun{control_area = "\improper AI Upload Chamber"; name = "AI Upload turret control"; pixel_x = 6; pixel_y = -24},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; name = "Private AI Channel"; pixel_x = -12; pixel_y = -21},/turf/simulated/floor/tiled/dark,/area/ai_upload_foyer) -"bct" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/ai_upload_foyer) +"bct" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/flasher{id = "AIFoyer"; pixel_x = 22; pixel_y = -36},/turf/simulated/floor/tiled/dark,/area/ai_upload_foyer) "bcu" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/ai_upload_foyer) "bcv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/ai_cyborg_station) "bcw" = (/turf/simulated/floor/tiled/dark,/area/ai_cyborg_station) @@ -2861,8 +2916,8 @@ "bed" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bee" = (/turf/simulated/wall/r_wall,/area/hallway/primary/central_four) "bef" = (/turf/simulated/wall/r_wall,/area/teleporter) -"beg" = (/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/dark,/area/ai_upload) -"beh" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/dark,/area/ai_upload) +"beg" = (/turf/simulated/mineral,/area/ai_upload) +"beh" = (/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/obj/machinery/porta_turret/ai_defense,/turf/simulated/floor/bluegrid,/area/ai_upload) "bei" = (/turf/simulated/floor/tiled/dark,/area/ai_upload) "bej" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hydroponics/garden) "bek" = (/obj/structure/table/glass,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera/network/research{c_tag = "SCI - Break Room"; dir = 4},/turf/simulated/floor/wood,/area/rnd/research) @@ -2899,7 +2954,7 @@ "beP" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/tiled/dark,/area/teleporter) "beQ" = (/obj/machinery/teleport/station,/turf/simulated/floor/tiled/dark,/area/teleporter) "beR" = (/obj/machinery/teleport/hub,/turf/simulated/floor/tiled/dark,/area/teleporter) -"beS" = (/obj/machinery/porta_turret{dir = 8},/turf/simulated/floor/bluegrid,/area/ai_upload) +"beS" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/porta_turret/ai_defense,/turf/simulated/floor/bluegrid,/area/ai_upload) "beT" = (/turf/simulated/floor/bluegrid,/area/ai_upload) "beU" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/ai_upload) "beV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/beach/water,/area/hydroponics/garden) @@ -2912,6 +2967,7 @@ "bfc" = (/obj/structure/table/standard,/obj/item/weapon/hemostat,/obj/item/weapon/cautery,/obj/effect/floor_decal/corner/pink/full{dir = 8},/obj/machinery/button/remote/blast_door{id = "surgeryobs2"; name = "Privacy Shutters"; pixel_x = -26; pixel_y = 0},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/white,/area/medical/surgery2) "bfd" = (/obj/structure/table/standard,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/retractor,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/medical/surgery2) "bfe" = (/obj/structure/table/standard,/obj/item/weapon/circular_saw{pixel_y = 8},/obj/item/weapon/scalpel,/obj/effect/floor_decal/corner/pink{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/medical/surgery2) +"bff" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "trade_shuttle_dock_airlock"; pixel_x = 28; pixel_y = 0; req_one_access = list(13); tag_airpump = "trade_shuttle_dock_pump"; tag_chamber_sensor = "trade_shuttle_dock_sensor"; tag_exterior_door = "trade_shuttle_dock_outer"; tag_interior_door = "trade_shuttle_dock_inner"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "bfg" = (/obj/structure/closet/secure_closet/medical2,/obj/effect/floor_decal/corner/pink/full{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/surgery2) "bfh" = (/turf/simulated/wall,/area/medical/surgery2) "bfi" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) @@ -2938,11 +2994,11 @@ "bfD" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/teleporter) "bfE" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/teleporter) "bfF" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/teleporter) -"bfG" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/protectStation,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/ai_upload) +"bfG" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/protectStation,/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/ai_upload) "bfH" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/dark,/area/ai_upload) -"bfI" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/dark,/area/ai_upload) +"bfI" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/tiled/dark,/area/ai_upload) "bfJ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/ai_upload) -"bfK" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/reset,/obj/machinery/light{dir = 4},/turf/simulated/floor/bluegrid,/area/ai_upload) +"bfK" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/reset,/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/ai_upload) "bfL" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/brflowers,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/grass,/area/hydroponics/garden) "bfM" = (/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/simulated/floor/tiled,/area/hydroponics/garden) "bfN" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/flora/ausbushes/reedbush,/turf/simulated/floor/beach/water,/area/hydroponics/garden) @@ -2982,9 +3038,9 @@ "bgv" = (/turf/simulated/floor/tiled,/area/teleporter) "bgw" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled,/area/teleporter) "bgx" = (/obj/structure/dispenser{phorontanks = 0},/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/teleporter) -"bgy" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/freeform,/obj/machinery/camera/network/command{c_tag = "AI - Upload"; dir = 4},/turf/simulated/floor/bluegrid,/area/ai_upload) +"bgy" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/freeform,/turf/simulated/floor/bluegrid,/area/ai_upload) "bgz" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/ai_upload) -"bgA" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/nanotrasen,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/bluegrid,/area/ai_upload) +"bgA" = (/obj/structure/table/standard,/obj/item/weapon/aiModule/nanotrasen,/turf/simulated/floor/bluegrid,/area/ai_upload) "bgB" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/structure/flora/ausbushes/pointybush,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/grass,/area/hydroponics/garden) "bgC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/beach/water,/area/hydroponics/garden) "bgD" = (/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/grass,/area/hydroponics/garden) @@ -3025,15 +3081,16 @@ "bhm" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/structure/extinguisher_cabinet{pixel_x = -27},/turf/simulated/floor/tiled/white,/area/rnd/research) "bhn" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/research{c_tag = "SCI - Research Auxiliary Hallway"; dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research) "bho" = (/turf/simulated/wall/r_wall,/area/rnd/research_restroom) +"bhp" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 1 End"; dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "trade_shuttle_dock_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "bhq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bhr" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bhs" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bht" = (/obj/machinery/light_switch{pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/command{c_tag = "COM - Teleporter"; dir = 4},/turf/simulated/floor/tiled,/area/teleporter) "bhu" = (/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/floor/tiled/dark,/area/teleporter) -"bhv" = (/obj/machinery/porta_turret{dir = 8},/obj/machinery/ai_status_display{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/ai_upload) +"bhv" = (/obj/machinery/porta_turret/ai_defense,/turf/simulated/floor/bluegrid,/area/ai_upload) "bhw" = (/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/ai_upload) -"bhx" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/bluegrid,/area/ai_upload) -"bhy" = (/obj/machinery/porta_turret{dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/ai_upload) +"bhx" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/ai_upload) +"bhy" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/bluegrid,/area/ai_upload) "bhz" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/machinery/camera/network/civilian{c_tag = "CIV - Park Aft"; dir = 1},/turf/simulated/floor/grass,/area/hydroponics/garden) "bhA" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/grass,/area/hydroponics/garden) "bhB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hydroponics/garden) @@ -3110,6 +3167,7 @@ "biU" = (/obj/machinery/iv_drip,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/white,/area/medical/surgery2) "biV" = (/obj/structure/bed/chair/wood{dir = 8},/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop) "biW" = (/obj/machinery/vending/wallmed1{pixel_y = -32},/obj/machinery/camera/network/medbay{c_tag = "MED - Operating Theatre 2"; dir = 1},/turf/simulated/floor/tiled/white,/area/medical/surgery2) +"biX" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "trade_shuttle_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "trade_shuttle_dock_sensor"; pixel_x = 30; pixel_y = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "biY" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "biZ" = (/obj/structure/table/standard,/obj/item/weapon/cane,/obj/item/weapon/cane{pixel_x = -3; pixel_y = 2},/obj/item/weapon/storage/box/rxglasses,/obj/effect/floor_decal/corner/pink{dir = 9},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/exam_room) "bja" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/exam_room) @@ -3233,13 +3291,13 @@ "blo" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "blp" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/teleporter) "blq" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/teleporter) -"blr" = (/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Steve"; pixel_y = 15; tag = "icon-plant-09"},/obj/structure/table/standard,/turf/simulated/floor/bluegrid,/area/ai) -"bls" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/bluegrid,/area/ai) -"blt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/bluegrid,/area/ai) -"blu" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/bluegrid,/area/ai) -"blv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/bluegrid,/area/ai) -"blw" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/bluegrid,/area/ai) -"blx" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/bluegrid,/area/ai) +"blr" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/bluegrid,/area/ai_upload) +"bls" = (/obj/structure/cable/cyan,/obj/machinery/power/apc/critical{name = "south bump"; pixel_y = -24},/turf/simulated/floor/bluegrid,/area/ai_upload) +"blt" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/camera/network/command{c_tag = "AI - Upload"; dir = 1},/turf/simulated/floor/bluegrid,/area/ai_upload) +"blu" = (/turf/simulated/wall/r_wall,/area/mine/unexplored/upper_level) +"blv" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/bluegrid,/area/ai) +"blw" = (/obj/machinery/porta_turret/ai_defense,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/dark,/area/ai) +"blx" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/bluegrid,/area/ai) "bly" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/structure/flora/ausbushes/palebush,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/grass,/area/hydroponics/garden) "blz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/beach/water,/area/hydroponics/garden) "blA" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 2},/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/hydroponics/garden) @@ -3252,6 +3310,7 @@ "blH" = (/obj/structure/table/standard,/obj/item/weapon/hemostat,/obj/item/weapon/cautery,/obj/machinery/button/remote/blast_door{id = "surgeryobs"; name = "Privacy Shutters"; pixel_x = -26; pixel_y = 0},/obj/effect/floor_decal/corner/pink/full{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/white,/area/medical/surgery) "blI" = (/obj/structure/table/standard,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/retractor,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/medical/surgery) "blJ" = (/obj/structure/table/standard,/obj/item/weapon/circular_saw{pixel_y = 8},/obj/item/weapon/scalpel,/obj/effect/floor_decal/corner/pink{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/medical/surgery) +"blK" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "trade_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = 28; pixel_y = -6; req_access = list(13)},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_dock_outer"; locked = 1; name = "Dock One External Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "blL" = (/obj/structure/closet/secure_closet/medical2,/obj/effect/floor_decal/corner/pink/full{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/surgery) "blM" = (/turf/simulated/wall,/area/medical/surgery) "blN" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/camera/network/medbay{c_tag = "MED - Surgery Hallway"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) @@ -3306,12 +3365,12 @@ "bmK" = (/obj/machinery/shieldwallgen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/teleporter) "bmL" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/teleporter) "bmM" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/closet/crate,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/teleporter) -"bmN" = (/obj/machinery/porta_turret{dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/ai) -"bmO" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/ai) +"bmN" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/light{dir = 1},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/ai) +"bmO" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/bluegrid,/area/ai) "bmP" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/ai) -"bmQ" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/tiled/dark,/area/ai) -"bmR" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/ai) -"bmS" = (/obj/machinery/porta_turret{dir = 4},/obj/machinery/light{dir = 4},/turf/simulated/floor/bluegrid,/area/ai) +"bmQ" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/ai) +"bmR" = (/obj/machinery/porta_turret/ai_defense,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/dark,/area/ai) +"bmS" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/light{dir = 1},/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/ai) "bmT" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/structure/flora/ausbushes/sparsegrass,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/grass,/area/hydroponics/garden) "bmU" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/hydroponics/garden) "bmV" = (/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/obj/structure/flora/ausbushes/sunnybush,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/grass,/area/hydroponics/garden) @@ -3371,6 +3430,7 @@ "bnX" = (/obj/structure/bed/chair/comfy/purp{dir = 4},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/wood,/area/rnd/research) "bnY" = (/obj/structure/table/glass,/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/rnd/research) "bnZ" = (/obj/structure/bed/chair/comfy/purp{dir = 8},/turf/simulated/floor/wood,/area/rnd/research) +"boa" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_dock_outer"; locked = 1; name = "Dock One External Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "bob" = (/obj/effect/floor_decal/corner/purple/diagonal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/rnd/research_restroom) "boc" = (/obj/structure/undies_wardrobe,/obj/effect/floor_decal/corner/purple/diagonal,/turf/simulated/floor/tiled/white,/area/rnd/research_restroom) "bod" = (/obj/effect/floor_decal/corner/purple/full{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/rnd/lab) @@ -3382,12 +3442,12 @@ "boj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bok" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar,/turf/simulated/floor/tiled,/area/teleporter) "bol" = (/obj/structure/closet/crate,/turf/simulated/floor/tiled,/area/teleporter) -"bom" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/bluegrid,/area/ai) +"bom" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled/dark,/area/ai) "bon" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/ai) -"boo" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/bluegrid,/area/ai) -"bop" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/door/window/northright{name = "AI Core Door"; req_access = list(16)},/obj/machinery/flasher{id = "AI"; pixel_x = -22; pixel_y = -24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = -38; pixel_y = -24},/turf/simulated/floor/bluegrid,/area/ai) -"boq" = (/obj/machinery/power/apc/super/critical{dir = 2; is_critical = 1; name = "south bump"; pixel_y = -24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/bluegrid,/area/ai) -"bor" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/ai) +"boo" = (/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/bluegrid,/area/ai) +"bop" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid,/area/ai) +"boq" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled/dark,/area/ai) +"bor" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/bluegrid,/area/ai) "bos" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/corner/paleblue{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/reception) "bot" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/primary/central_two) "bou" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/floor/tiled,/area/hallway/primary/central_two) @@ -3415,6 +3475,7 @@ "boQ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/virology) "boR" = (/obj/effect/floor_decal/corner/lime{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/virology) "boS" = (/obj/effect/floor_decal/corner/lime{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/virology) +"boT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics) "boU" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/effect/floor_decal/corner/lime{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/medical/virology) "boV" = (/obj/machinery/disease2/diseaseanalyser,/obj/effect/floor_decal/corner/lime{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/virology) "boW" = (/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/white,/area/medical/virology) @@ -3455,12 +3516,12 @@ "bpF" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/lab) "bpG" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/micro_laser,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/rnd/lab) "bpH" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{dir = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 20},/obj/item/device/radio/intercom{broadcasting = 0; dir = 2; frequency = 1343; name = "Private Channel"; pixel_x = 0; pixel_y = -21},/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 1; name = "Common Channel"; pixel_x = -21; pixel_y = 0},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/ai) -"bpI" = (/obj/machinery/door/window{dir = 4; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/ai) -"bpJ" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/dark,/area/ai) -"bpK" = (/turf/simulated/wall,/area/ai) -"bpL" = (/obj/effect/landmark/start{name = "AI"},/obj/structure/cable/cyan,/obj/item/device/radio/intercom{broadcasting = 1; listening = 1; name = "Common Channel"; pixel_y = -21},/obj/item/device/radio/intercom{dir = 4; listening = 0; name = "Custom Channel"; pixel_x = 21; pixel_y = -10},/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; frequency = 1343; name = "Private Channel"; pixel_x = -21; pixel_y = -10},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the AI core maintenance door."; id = "AICore"; name = "AI Maintenance Hatch"; pixel_x = -17; pixel_y = -25; req_access = list(16)},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = 30; pixel_y = -32},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = -32},/turf/simulated/floor/bluegrid,/area/ai) -"bpM" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled/dark,/area/ai) -"bpN" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/ai) +"bpI" = (/turf/simulated/wall/durasteel,/area/ai) +"bpJ" = (/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{dir = 4; listening = 0; name = "Custom Channel"; pixel_x = 21; pixel_y = 10},/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; frequency = 1343; name = "Private Channel"; pixel_x = -21; pixel_y = 10},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; listening = 1; name = "Common Channel"; pixel_y = 21},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -30; pixel_y = 32},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/turf/simulated/floor/bluegrid,/area/ai) +"bpK" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = null; locked = 1; name = "AI Core"; req_access = list(16)},/turf/simulated/floor/tiled/dark,/area/ai) +"bpL" = (/obj/machinery/flasher{id = "AI"; pixel_x = -22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 30; pixel_y = 24},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the AI core maintenance door."; id = "AICore"; name = "AI Maintenance Hatch"; pixel_x = -8; pixel_y = -25; req_access = list(16)},/obj/machinery/camera/xray/command{c_tag = "AI - Core"; dir = 1},/obj/machinery/ai_slipper{icon_state = "motion0"},/obj/machinery/light/small,/turf/simulated/floor/tiled/dark,/area/ai) +"bpM" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled/dark,/area/ai) +"bpN" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/turf/simulated/floor/tiled/dark,/area/ai) "bpO" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{dir = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 21},/obj/item/device/radio/intercom{broadcasting = 0; frequency = 1343; name = "Private Channel"; pixel_x = 0; pixel_y = -21},/obj/item/device/radio/intercom{broadcasting = 1; dir = 4; listening = 1; name = "Common Channel"; pixel_x = 21; pixel_y = 0},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid,/area/ai) "bpP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central_two) "bpQ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/medical/surgeryobs) @@ -3506,6 +3567,7 @@ "bqE" = (/obj/effect/floor_decal/corner/lime{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/black{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology) "bqF" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/medical/virology) "bqG" = (/obj/effect/floor_decal/corner/lime{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/virology) +"bqH" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/ai_slipper{icon_state = "motion0"},/turf/simulated/floor/bluegrid,/area/ai) "bqI" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/airless,/area/maintenance/disposal) "bqJ" = (/obj/machinery/computer/shuttle_control/research{name = "research elevator control console"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/research/station) "bqK" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/research/station) @@ -3546,10 +3608,10 @@ "brt" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/disposalpipe/segment,/obj/machinery/camera/network/northern_star{c_tag = "Hall - Central Primary Port Fore 2"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "bru" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "brv" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/hallway/primary/central_four) -"brw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/bluegrid,/area/ai) -"brx" = (/turf/simulated/floor/tiled/dark,/area/ai) -"bry" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/ai) -"brz" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/bluegrid,/area/ai) +"brw" = (/obj/machinery/porta_turret/ai_defense,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled/dark,/area/ai) +"brx" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/ai) +"bry" = (/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/power/apc/super/critical{dir = 1; is_critical = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/ai) +"brz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid,/area/ai) "brA" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/wood,/area/rnd/research) "brB" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/hydroponics/garden) "brC" = (/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/grass,/area/hydroponics/garden) @@ -3562,6 +3624,7 @@ "brJ" = (/obj/machinery/iv_drip,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/white,/area/medical/surgery) "brK" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 8; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -21; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "brL" = (/obj/machinery/vending/wallmed1{pixel_y = -32},/obj/machinery/camera/network/medbay{c_tag = "MED - Operating Theatre 1"; dir = 1},/turf/simulated/floor/tiled/white,/area/medical/surgery) +"brM" = (/obj/machinery/porta_turret/ai_defense,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/tiled/dark,/area/ai) "brN" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "brO" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "brP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) @@ -3617,11 +3680,11 @@ "bsN" = (/obj/machinery/r_n_d/circuit_imprinter,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor/tiled,/area/rnd/lab) "bsO" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/white,/area/rnd/lab) "bsP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/lab) -"bsQ" = (/obj/machinery/porta_turret{dir = 4},/turf/simulated/floor/bluegrid,/area/ai) -"bsR" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/ai) -"bsS" = (/obj/machinery/power/smes/buildable{charge = 5e+006; input_attempt = 1; input_level = 200000; output_level = 200000},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/camera/xray/command{c_tag = "AI - Core"},/turf/simulated/floor/bluegrid,/area/ai) -"bsT" = (/obj/machinery/power/sensor{name = "Powernet Sensor - AI Subgrid"; name_tag = "AI Subgrid"},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/ai) -"bsU" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/dark,/area/ai) +"bsQ" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/ai) +"bsR" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/table/standard,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Steve"; pixel_y = 15; tag = "icon-plant-09"},/turf/simulated/floor/bluegrid,/area/ai) +"bsS" = (/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/structure/cable/cyan,/obj/machinery/power/sensor{name = "Powernet Sensor - AI Subgrid"; name_tag = "AI Subgrid"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/bluegrid,/area/ai) +"bsT" = (/obj/machinery/power/smes/buildable{charge = 5e+006; input_attempt = 1; input_level = 200000; output_level = 200000},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/bluegrid,/area/ai) +"bsU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard) "bsV" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/grass,/area/hydroponics/garden) "bsW" = (/obj/machinery/door/airlock/medical{id_tag = "surgery_observation"; name = "Observation Room"; req_access = newlist()},/obj/machinery/holosign/surgery,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/surgeryobs) "bsX" = (/turf/simulated/wall,/area/medical/medbay_primary_storage) @@ -3638,6 +3701,7 @@ "bti" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/corner/paleblue{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/sleeper) "btj" = (/obj/machinery/camera/network/medbay{c_tag = "MED - Diagnostics Starboard"; dir = 1},/turf/simulated/floor/tiled/white,/area/medical/sleeper) "btk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/sleeper) +"btl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard) "btm" = (/obj/machinery/vending/medical,/obj/effect/floor_decal/corner/paleblue{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/sleeper) "btn" = (/obj/effect/floor_decal/corner/mauve{dir = 8},/obj/machinery/button/remote/airlock{desc = "A remote control switch for the medbay foyer."; id = "GeneticsDoor"; name = "Door Control"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) "bto" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/blue{dir = 10},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/item/clothing/suit/armor/laserproof{pixel_x = 0; pixel_y = 0},/obj/machinery/door/window/brigdoor/northleft{name = "Laser Armor"; req_access = list(1)},/obj/item/clothing/gloves/arm_guard/laserproof,/obj/item/clothing/shoes/leg_guard/laserproof,/obj/item/clothing/head/helmet/laserproof,/turf/simulated/floor/tiled/dark,/area/security/armoury) @@ -3687,10 +3751,10 @@ "bug" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/lab) "buh" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/rnd/lab) "bui" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/rnd/lab) -"buj" = (/obj/machinery/light,/turf/simulated/floor/bluegrid,/area/ai) +"buj" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard) "buk" = (/turf/simulated/floor/bluegrid,/area/ai) -"bul" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/ai) -"bum" = (/obj/machinery/porta_turret{dir = 4},/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/bluegrid,/area/ai) +"bul" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/shuttle/arrival/station) +"bum" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/shuttle/arrival/station) "bun" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_two) "buo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/reception) "bup" = (/obj/structure/table/standard,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/cafeteria) @@ -3704,6 +3768,8 @@ "bux" = (/obj/structure/table/standard,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/item/device/flashlight/pen,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "buy" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/syringes{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/syringes,/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "buz" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_y = 0},/obj/effect/floor_decal/corner/paleblue{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) +"buA" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/arrival/station) +"buB" = (/obj/machinery/vending/cola,/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "buC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/medbay_primary_storage) "buD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/sleeper) "buE" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/turf/simulated/floor/tiled/white,/area/medical/sleeper) @@ -3736,6 +3802,7 @@ "bvf" = (/obj/machinery/door/blast/regular{id = "trash"; name = "disposal mass driver"},/turf/simulated/floor/airless,/area/maintenance/disposal) "bvg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bvh" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor,/area/maintenance/disposal) +"bvi" = (/obj/machinery/hologram/holopad,/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "bvj" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/structure/sign/vacuum{pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/maintenance/disposal) "bvk" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/conveyor{dir = 4; id = "garbage"},/turf/simulated/floor,/area/maintenance/disposal) "bvl" = (/obj/effect/floor_decal/corner/purple/full,/obj/machinery/newscaster{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/rnd/research) @@ -3774,6 +3841,7 @@ "bvS" = (/turf/simulated/floor/tiled/white,/area/medical/reception) "bvT" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/medical/reception) "bvU" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 2; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -21},/turf/simulated/floor/tiled/white,/area/medical/surgery) +"bvV" = (/turf/space,/area/mine/unexplored/upper_level) "bvW" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "bvX" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) "bvY" = (/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage) @@ -3820,6 +3888,7 @@ "bwN" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Research Hallway"; req_access = list(47)},/turf/simulated/floor/tiled/white,/area/rnd/research) "bwO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/rnd/research) "bwP" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Research Hallway"; req_access = list(47)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/rnd/research) +"bwQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHWEST)"; icon_state = "swall"; dir = 9},/area/shuttle/arrival/station) "bwR" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/rnd/research) "bwS" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/rnd/research) "bwT" = (/obj/machinery/vending/snack,/turf/simulated/floor/wood,/area/rnd/research) @@ -4139,6 +4208,7 @@ "bCV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area/solar/auxport) "bCW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/solar/port) "bCX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area/solar/port) +"bCY" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "bCZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_tool_airlock"; name = "exterior access button"; pixel_x = 26; pixel_y = -26; req_access = list(11,13)},/turf/simulated/floor/airless,/area/solar/auxport) "bDa" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_tool_outer"; locked = 1; name = "Engineering External Access"; req_access = list(11,13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/auxsolarport) "bDb" = (/obj/effect/floor_decal/industrial/warning/full,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "solar_tool_pump"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "solar_tool_airlock"; pixel_x = 0; pixel_y = 28; req_access = list(13); tag_airpump = "solar_tool_pump"; tag_chamber_sensor = "solar_tool_sensor"; tag_exterior_door = "solar_tool_outer"; tag_interior_door = "solar_tool_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_tool_sensor"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor,/area/maintenance/auxsolarport) @@ -4230,6 +4300,7 @@ "bEJ" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/structure/closet/wardrobe/virology_white,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 8; pixel_y = 28; req_access = list(39)},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/virology) "bEK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/virology) "bEL" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled/steel,/area/medical/virology) +"bEM" = (/turf/simulated/shuttle/wall{icon_state = "swall"; dir = 5},/area/shuttle/arrival/station) "bEN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/auxsolarport) "bEO" = (/obj/structure/cable/yellow,/obj/machinery/power/solar_control{id = "auxsolareast"; name = "Fore Port Solar Control"; track = 0},/turf/simulated/floor,/area/maintenance/auxsolarport) "bEP" = (/obj/item/weapon/stool,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil/yellow,/turf/simulated/floor,/area/maintenance/auxsolarport) @@ -4277,9 +4348,9 @@ "bFF" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) "bFG" = (/obj/machinery/camera/network/civilian{c_tag = "CIV - Kitchen Cold Room"; dir = 2},/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) "bFH" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) -"bFI" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/book/manual/chef_recipes,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"bFI" = (/turf/simulated/shuttle/wall{tag = "icon-swall"; icon_state = "swall"},/area/shuttle/arrival/station) "bFJ" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) -"bFK" = (/obj/structure/table/standard,/obj/machinery/reagentgrinder,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"bFK" = (/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/structure/table/standard,/obj/effect/floor_decal/corner/brown,/obj/item/weapon/stamp/cargo,/turf/simulated/floor/tiled,/area/quartermaster/office) "bFL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/crew_quarters/kitchen) "bFM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/corner/lime/full{dir = 8},/turf/simulated/floor/tiled,/area/hydroponics) "bFN" = (/obj/structure/closet/secure_closet/hydroponics,/obj/effect/floor_decal/corner/lime{dir = 5},/turf/simulated/floor/tiled,/area/hydroponics) @@ -4363,7 +4434,7 @@ "bHn" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) "bHo" = (/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) "bHp" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) -"bHq" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/reagent_containers/food/snacks/mint,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"bHq" = (/obj/structure/closet/secure_closet/cargotech,/obj/item/weapon/storage/backpack/dufflebag,/obj/item/weapon/stamp/cargo,/turf/simulated/floor/tiled,/area/quartermaster/storage) "bHr" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bHs" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bHt" = (/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access = list(28)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) @@ -4404,6 +4475,7 @@ "bIc" = (/obj/machinery/computer/crew,/obj/effect/floor_decal/corner/paleblue/full{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 2; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -21},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bId" = (/obj/structure/table/standard,/obj/item/weapon/stamp/rd{pixel_x = 3; pixel_y = -2},/obj/item/weapon/reagent_containers/food/drinks/jar,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/weapon/folder/white_rd,/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bIe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/virology) +"bIf" = (/obj/structure/closet/secure_closet/cargotech,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/item/weapon/stamp/cargo,/turf/simulated/floor/tiled,/area/quartermaster/storage) "bIg" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/weapon/tank/emergency_oxygen/double,/turf/simulated/floor/plating,/area/maintenance/research) "bIh" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/maintenance/research) "bIi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/research) @@ -4434,6 +4506,7 @@ "bIH" = (/obj/effect/floor_decal/corner/blue{dir = 5},/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = 28},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) "bII" = (/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 30},/obj/effect/floor_decal/corner/blue{dir = 5},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) "bIJ" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/obj/effect/floor_decal/corner/blue/full{dir = 1},/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) +"bIK" = (/obj/machinery/door/airlock/maintenance{req_one_access = list(12,5)},/turf/simulated/floor,/area/maintenance/pool) "bIL" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/bridge_hallway) "bIM" = (/obj/effect/floor_decal/corner/blue{dir = 6},/obj/structure/table/standard,/obj/item/weapon/storage/box/cups,/turf/simulated/floor/tiled,/area/bridge_hallway) "bIN" = (/obj/machinery/cell_charger,/obj/structure/table/steel,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/substation/command) @@ -4443,7 +4516,7 @@ "bIR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) "bIS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) "bIT" = (/obj/structure/closet/crate/freezer,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen) -"bIU" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/effect/decal/cleanable/flour,/obj/structure/table/marble,/obj/machinery/light{dir = 8},/obj/machinery/newscaster{pixel_x = -31; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) +"bIU" = (/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/cobweb2{icon_state = "spiderling"; name = "dead spider"; tag = "icon-spiderling"},/turf/simulated/floor,/area/maintenance/medbay_fore) "bIV" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bIW" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/material/knife/butch,/obj/item/weapon/material/kitchen/rollingpin,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bIX" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/crew_quarters/kitchen) @@ -4579,7 +4652,7 @@ "bLx" = (/obj/effect/floor_decal/corner/purple{dir = 6},/turf/simulated/floor/tiled/white,/area/rnd/rdoffice) "bLy" = (/obj/structure/table/standard,/obj/item/weapon/cartridge/signal/science,/obj/item/weapon/cartridge/signal/science{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/science{pixel_x = 4; pixel_y = 6},/obj/item/clothing/glasses/welding/superior,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = 30; pixel_y = -2},/turf/simulated/floor/tiled/dark,/area/rnd/rdoffice) "bLz" = (/obj/structure/closet{name = "robotics parts"},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/effect/floor_decal/corner/pink{dir = 6},/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/turf/simulated/floor/tiled/white,/area/assembly/robotics) -"bLA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/assembly/robotics) +"bLA" = (/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/toolbox,/obj/effect/decal/cleanable/molten_item,/mob/living/simple_animal/hostile/mimic/crate,/turf/simulated/floor,/area/maintenance/medbay_fore) "bLB" = (/obj/structure/disposalpipe/segment,/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/white,/area/assembly/robotics) "bLC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/pen/red,/obj/item/weapon/pen/blue,/turf/simulated/floor/tiled/white,/area/assembly/robotics) "bLD" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virology_airlock_exterior"; locked = 1; name = "Virology Exterior Airlock"; req_access = list(39)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(39)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/black,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/medical/virology) @@ -4690,7 +4763,6 @@ "bNE" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bNG" = (/obj/structure/table/woodentable,/obj/machinery/light,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/coffee_shop) "bNH" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) -"bNI" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bNJ" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Kitchen Starboard"; dir = 8},/obj/structure/closet/secure_closet/freezer/meat,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bNK" = (/obj/effect/floor_decal/corner/lime/full,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/table/standard{name = "plastic table frame"},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/hydroponics) "bNL" = (/obj/effect/floor_decal/corner/lime{dir = 8},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/tiled,/area/hydroponics) @@ -4792,7 +4864,6 @@ "bPD" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bPE" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bPF" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) -"bPG" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bPH" = (/obj/structure/closet/secure_closet/freezer/kitchen,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bPI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hydroponics) "bPJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hydroponics) @@ -4838,7 +4909,6 @@ "bQx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/medical/virologyaccess) "bQy" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/medbay{c_tag = "MED - Virology Access"; dir = 1},/turf/simulated/floor/tiled,/area/medical/virologyaccess) "bQz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/lime{dir = 6},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/medical/virologyaccess) -"bQA" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "bQB" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/medical/virologyaccess) "bQD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/medical/virologyaccess) "bQE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/medical/virologyaccess) @@ -5947,7 +6017,6 @@ "clY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/storage/tech) "clZ" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/crew_quarters/cafeteria) "cma" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/quartermaster/office) -"cmb" = (/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/structure/table/standard,/obj/effect/floor_decal/corner/brown,/turf/simulated/floor/tiled,/area/quartermaster/office) "cmc" = (/obj/structure/sign/poster{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/quartermaster/office) "cmd" = (/obj/machinery/door/airlock/glass_mining{id_tag = "cargodoor"; name = "Cargo Office"; req_access = list(50)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/miningdock) "cme" = (/obj/structure/table/steel,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/effect/floor_decal/corner/brown{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/tiled,/area/quartermaster/delivery) @@ -6361,7 +6430,6 @@ "cus" = (/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "cut" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atm{pixel_y = 30},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "cuu" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) -"cuv" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "cux" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5) "cuy" = (/obj/effect/floor_decal/corner/lime{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor/tiled,/area/hydroponics) "cuz" = (/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) @@ -6370,9 +6438,7 @@ "cuC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6) "cuD" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6) "cuE" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6) -"cuF" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6) "cuG" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) -"cuH" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) "cuI" = (/obj/item/frame/light,/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/vacant/vacant_shop) "cuJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11) "cuL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) @@ -6381,7 +6447,6 @@ "cuO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12) "cuP" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12) "cuQ" = (/obj/structure/closet/secure_closet/personal,/obj/item/clothing/head/kitty,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12) -"cuR" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12) "cuS" = (/turf/simulated/wall,/area/quartermaster/storage) "cuT" = (/obj/structure/curtain/open/shower,/obj/machinery/door/window/southright{name = "Shower"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/shower{pixel_y = 3},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12) "cuU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/quartermaster/storage) @@ -6412,27 +6477,21 @@ "cvt" = (/obj/machinery/atm{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/lino,/area/hallway/secondary/entry/docking_lounge) "cvu" = (/obj/structure/bed/chair/wood/wings,/turf/simulated/floor/wood,/area/crew_quarters/bar) "cvv" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_engineeringatmos{name = "Engineering Break Room"; req_one_access = list(10)},/turf/simulated/floor/tiled,/area/engineering/break_room) -"cvw" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "cvx" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "cvy" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_5) "cvA" = (/obj/effect/floor_decal/corner/white{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "cvB" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_6) -"cvC" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6) "cvD" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6) -"cvE" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) "cvF" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) "cvG" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_11) "cvH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/blue{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "cvI" = (/obj/effect/floor_decal/corner/white{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "cvJ" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_12) -"cvK" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12) "cvL" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12) "cvM" = (/turf/space,/area/supply/station) "cvN" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/camera/network/northern_star{c_tag = "Hall - Port Primary 1"; dir = 4},/turf/simulated/floor/tiled/dark,/area/hallway/primary/port) "cvO" = (/obj/structure/closet/emcloset,/obj/machinery/status_display/supply_display{pixel_y = 32},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cvP" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/quartermaster/storage) -"cvQ" = (/obj/structure/closet/secure_closet/cargotech,/obj/item/weapon/storage/backpack/dufflebag,/turf/simulated/floor/tiled,/area/quartermaster/storage) -"cvR" = (/obj/structure/closet/secure_closet/cargotech,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cvS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/quartermaster/storage) "cvT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/quartermaster/storage) "cvU" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #3"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/quartermaster/storage) @@ -6541,7 +6600,6 @@ "cxU" = (/obj/structure/table/reinforced,/turf/simulated/floor/tiled,/area/vacant/vacant_shop) "cxV" = (/obj/structure/bed/chair/comfy/beige{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "cxW" = (/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"; req_one_access = list(5,10,63)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station) -"cxX" = (/obj/structure/bed/chair/comfy/beige{dir = 8},/obj/machinery/camera/network/civilian{c_tag = "CIV - Visitor Room 5"; dir = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "cxY" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 2},/obj/machinery/light,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "cxZ" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "cya" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) @@ -6747,24 +6805,16 @@ "cBW" = (/obj/machinery/atmospherics/pipe/tank/air,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor,/area/maintenance/bar) "cBX" = (/obj/structure/table/rack{dir = 4},/obj/item/clothing/mask/gas,/turf/simulated/floor/plating,/area/maintenance/bar) "cBY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/corner/lime{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled/white,/area/medical/virology) -"cBZ" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3) -"cCa" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3) "cCb" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_3) "cCc" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_4) "cCd" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/blue{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "cCe" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_4) "cCf" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4) -"cCg" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4) -"cCh" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_4) -"cCi" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9) -"cCj" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9) "cCk" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_9) "cCl" = (/obj/structure/toilet,/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_9) "cCm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/white{dir = 4},/obj/effect/floor_decal/corner/blue,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging) "cCn" = (/obj/machinery/door/airlock{name = "Restroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/vistor_room_10) "cCo" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) -"cCp" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/brown,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) -"cCq" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_10) "cCr" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cCs" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/trolley,/obj/machinery/camera/network/cargo{c_tag = "CRG - Cargo Bay Starboard"; dir = 8; name = "security camera"},/turf/simulated/floor/tiled,/area/quartermaster/storage) "cCt" = (/turf/simulated/wall,/area/quartermaster/warehouse) @@ -8529,7 +8579,6 @@ "dkP" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dkQ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "virologyq_airlock_control"; name = "Virology Quarantine Access Button"; pixel_x = -28; pixel_y = 0; req_access = list(39)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/tiled/white,/area/medical/virology) "dkR" = (/obj/effect/floor_decal/corner/lime{dir = 10},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/tiled/white,/area/medical/virology) -"dkS" = (/obj/machinery/status_display{pixel_y = 30},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "dkT" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dkU" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored/upper_level) "dkV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D3) @@ -8571,14 +8620,11 @@ "dlG" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dlH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dlI" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "interior access button"; pixel_x = 26; pixel_y = 26; req_one_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dlJ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = 19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dlK" = (/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_north_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_north_mech"; tag_airpump = "escape_dock_north_pump"; tag_chamber_sensor = "escape_dock_north_sensor"; tag_exterior_door = "escape_dock_north_outer"; tag_interior_door = "escape_dock_north_inner"; tag_shuttle_mech_sensor = "shuttle_dock_north_mech"},/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dlL" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_north_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dlM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = 19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dlN" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = 19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dlO" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_north_starboard_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dlP" = (/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_snorth_airlock"; master_tag = "escape_dock"; pixel_y = 30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_north_starboard_mech"; tag_airpump = "escape_dock_north_starboard_pump"; tag_chamber_sensor = "escape_dock_north_starboard_sensor"; tag_exterior_door = "escape_dock_north_starboard_outer"; tag_interior_door = "escape_dock_north_starboard_inner"; tag_shuttle_mech_sensor = "shuttle_dock_north_starboard_mech"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dlQ" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = 19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dlR" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_north_starboard_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dlS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dlT" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) @@ -8621,14 +8667,11 @@ "dmF" = (/obj/structure/table/steel,/obj/item/clothing/head/orangebandana,/turf/simulated/floor,/area/maintenance/engineering) "dmG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4) "dmH" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dmI" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dmJ" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dmK" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_sensor"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_north_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dmL" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_north_airlock"; name = "exterior access button"; pixel_x = 4; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dmM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_north_starboard_airlock"; name = "exterior access button"; pixel_x = -4; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dmN" = (/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_north_starboard_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_north_starboard_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dmO" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/light/small,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dmP" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dmQ" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dmR" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dmS" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) @@ -8692,7 +8735,6 @@ "dnY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dnZ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "doa" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station) -"dob" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "doc" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dod" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "doe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) @@ -8715,7 +8757,6 @@ "dov" = (/obj/structure/table/steel,/obj/item/weapon/book/manual/engineering_singularity_safety,/turf/simulated/floor,/area/maintenance/engineering) "dow" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dox" = (/obj/structure/window/shuttle{icon_state = "window3"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station) -"doy" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "doz" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "doA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D4) "doB" = (/turf/space,/area/syndicate_station/southeast) @@ -8846,14 +8887,10 @@ "dqX" = (/obj/machinery/door/airlock/maintenance_hatch{icon_state = "door_closed"; locked = 0; name = "Engine Access"; req_one_access = list(11)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/engine_airlock) "dqY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engineering) "dqZ" = (/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/turf/simulated/floor/tiled/dark,/area/engineering/aft_hallway) -"dra" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "drb" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "drc" = (/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"drd" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "exterior access button"; pixel_x = 4; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dre" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "escape_dock_south_starboard_airlock"; name = "exterior access button"; pixel_x = -4; pixel_y = 26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "drf" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "escape_dock_south_starboard_sensor"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "drg" = (/obj/effect/floor_decal/industrial/loading{tag = "icon-loadingarea (WEST)"; icon_state = "loadingarea"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"drh" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = 19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dri" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "drj" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "drk" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dock_three_mid_inner"; locked = 1; name = "Dock Three Internal Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) @@ -8897,14 +8934,10 @@ "drW" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway) "drX" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "drY" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_airlock"; name = "interior access button"; pixel_x = 26; pixel_y = -26; req_one_access = list(13)},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"drZ" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = -19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dsa" = (/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_mech"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_mech"},/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dsb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "escape_dock_south_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dsc" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = -19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dsd" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_outer"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = -19},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dse" = (/obj/effect/floor_decal/industrial/loading{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "escape_dock_south_starboard_pump"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dsf" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{frequency = 1380; id_tag = "escape_dock_ssouth_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access = list(13); tag_airlock_mech_sensor = "escape_dock_south_starboard_mech"; tag_airpump = "escape_dock_south_starboard_pump"; tag_chamber_sensor = "escape_dock_south_starboard_sensor"; tag_exterior_door = "escape_dock_south_starboard_outer"; tag_interior_door = "escape_dock_south_starboard_inner"; tag_shuttle_mech_sensor = "shuttle_dock_south_starboard_mech"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) -"dsg" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_south_starboard_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_south_mech"; pixel_y = -19},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dsh" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "escape_dock_south_starboard_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = -26; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dsi" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dsj" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) @@ -8959,7 +8992,6 @@ "dtg" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dth" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dti" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/shuttle/arrival/station) -"dtj" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "dtk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area/maintenance/portsolar) "dtl" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) "dtm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D4) @@ -9161,7 +9193,6 @@ "dxa" = (/obj/structure/lattice,/obj/structure/grille/broken,/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/space) "dxb" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dxc" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dxd" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "dock_one_aft_airlock"; name = "interior access button"; pixel_x = -28; pixel_y = -26; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dxe" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dxf" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/table/standard,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dxg" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/table/standard,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) @@ -9195,7 +9226,6 @@ "dxI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/engineering/engine_room) "dxJ" = (/turf/simulated/floor/plating,/area/engineering/engine_room) "dxK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/aft_hallway) -"dxL" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dock_one_aft_inner"; locked = 1; name = "Dock One Internal Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dxM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dxN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/engineering/engine_airlock) "dxO" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/engineering/engine_airlock) @@ -9233,7 +9263,6 @@ "dyu" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space) "dyv" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dyw" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dyx" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "dock_one_aft_airlock"; name = "Airlock Console"; pixel_x = 28; pixel_y = 0; req_access = list(13); tag_airpump = "dock_one_aft_pump"; tag_chamber_sensor = "dock_one_aft_sensor"; tag_exterior_door = "dock_one_aft_outer"; tag_interior_door = "dock_one_aft_inner"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dyy" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "admin_shuttle_dock_airlock"; pixel_x = -28; pixel_y = 0; req_one_access = list(13); tag_airpump = "admin_shuttle_dock_pump"; tag_chamber_sensor = "admin_shuttle_dock_sensor"; tag_exterior_door = "admin_shuttle_dock_outer"; tag_interior_door = "admin_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dyz" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dyA" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) @@ -9270,8 +9299,6 @@ "dzf" = (/obj/machinery/atmospherics/binary/pump/high_power{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "dzg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) "dzh" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/lattice,/turf/space,/area/space) -"dzi" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "dock_one_aft_pump"},/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 1 End"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dzj" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "dock_one_aft_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "dock_one_aft_sensor"; pixel_x = 30; pixel_y = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dzk" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "admin_shuttle_dock_sensor"; pixel_x = -30; pixel_y = 8},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dzl" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 2 End"; dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dzm" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "dock_three_aft_pump"},/obj/machinery/camera/network/northern_star{c_tag = "DOCK - Dock 3 End"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D3) @@ -9303,8 +9330,6 @@ "dzM" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/plating,/area/engineering/engine_room) "dzN" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/engineering/aft_hallway) "dzO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/maintenance/starboardsolar) -"dzP" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dock_one_aft_outer"; locked = 1; name = "Dock One External Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) -"dzQ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "dock_one_aft_airlock"; name = "exterior access button"; pixel_x = 28; pixel_y = -6; req_access = list(13)},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "dock_one_aft_outer"; locked = 1; name = "Dock One External Access"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D1) "dzR" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = -28; pixel_y = -6; req_one_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dzS" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = list(13)},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/D2) "dzT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry/D2) @@ -9508,11 +9533,9 @@ "dDL" = (/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/button/remote/blast_door{id = "atmoslockdown"; name = "Atmospherics Lockdown"; pixel_x = 6; pixel_y = -12; req_access = list(10)},/obj/machinery/button/remote/blast_door{id = "englockdown"; name = "Engineering Lockdown"; pixel_x = -6; pixel_y = -12; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) "dDM" = (/obj/structure/bed/chair{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) "dDN" = (/obj/structure/bed/chair/office/light{dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "ceoffice"; name = "Chief Engineer Privacy Shutters"; pixel_x = -26; pixel_y = 18; req_access = list(56)},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/start{name = "Chief Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) -"dDO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard) "dDP" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard) "dDQ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief) "dDR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard) -"dDS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard) "dDT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard) "dDU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard) "dDV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/hallway/secondary/entry/starboard) @@ -9532,7 +9555,6 @@ "dEJ" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #1"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage) "dEK" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/effect/floor_decal/industrial/outline/yellow,/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/storage) "dEL" = (/turf/simulated/mineral,/area/mine/explored/upper_level) -"dEM" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_5) "dEN" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6) "dEO" = (/turf/simulated/wall,/area/medical/first_aid_station_starboard) "dEP" = (/obj/structure/table/standard,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) @@ -9643,7 +9665,6 @@ "dHn" = (/obj/machinery/requests_console{department = "Arrival shuttle"; pixel_y = 26},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "dHo" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "dHp" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"dHq" = (/obj/machinery/vending/cola,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "dHr" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_research{name = "Mech Bay"; req_access = list(29)},/turf/simulated/floor/tiled,/area/assembly/chargebay) "dHs" = (/obj/machinery/status_display,/turf/simulated/wall,/area/assembly/chargebay) "dHt" = (/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access = list(29)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/assembly/chargebay) @@ -9652,7 +9673,7 @@ "dHz" = (/obj/machinery/computer/cryopod/robot{pixel_x = 30; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/corner,/obj/machinery/camera/network/research{c_tag = "SCI - Mech Bay Starboard"; dir = 8},/turf/simulated/floor/tiled,/area/assembly/chargebay) "dHA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/hallway/primary/central_four) "dHB" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/hallway/primary/central_four) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9734,8 +9755,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaacyacyacyacyacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddacKaddacLaeMafSafTafUafVafWafXafYafcafZaeMaahaahaddacLaddaddaddaahaahaahaahaaNaaOaaPaaPaaNaahaahaahaaSaaSabtabtabtacMabtabtabtabtabtajFakAajWajHakhaiZaiZaiZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddaddakNakOakRaeMafcafcagkaglaglaglagmafcafcaeMaahaahaddaiwacQacPaddaddaddaddaddaaeaaRaaRaaRaaNaaSaaSaaSaaSabtabtakAakAakAakAakAakAakAabtakCakAacRakEajHakFakGakHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaddaddacSalvacTadVaeMagtaguagkafcagvafcagwaguagxaeMaahaahaddaiwacVacUacXacWacZacYaddabbabcabdabcabeaaSabtadaabsabKabqakAalkallalmalnadbakAabtajFakAalNalOadcaiZaiZaiZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeadeadeaaaadfadfadfahyahyaaQaahaaaalTalUalVaaaalWalXalYaddaifakRadgaddaddaeMaeMaeMagCagDagEagFagGaeMaeMaeMaahaahaddadhadiakQakQakQadkadjadmadladoadnaeyaboabpabtabtabJabHabIakAalGalHalIalJalKakAadpalMakAaiZajHadqalQalRalSaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuadeadeadeaBmadfadfadfaBmaahaahaahamxamvamwamvamxamyamzamyadraiwadVaddaddaahagHagNagNagPagQagRagSagTahtahtagHaahaahaddaddaddaddaddahoahPagMagMadsabcadtaduabGaaSaaSakzakzakzakzakAamiamjamkamlammakAamnamoabqaiZampamqamramsamtahyahyahyahyahyaaaaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaQaahaaaalTalUalVaaaalWalXalYaddaifakRadgaddaddaeMaeMaeMagCagDagEagFagGaeMaeMaeMaahaahaddadhadiakQakQakQadkadjadmadladoadnaeyaboabpabtabtabJabHabIakAalGalHalIalJalKakAadpalMakAaiZajHadqalQalRalSaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuaaaaaaaaaaBmaaaaaaaaaaBmaahaahaahamxamvamwamvamxamyamzamyadraiwadVaddaddaahagHagNagNagPagQagRagSagTahtahtagHaahaahaddaddaddaddaddahoahPagMagMadsabcadtaduabGaaSaaSakzakzakzakzakAamiamjamkamlammakAamnamoabqaiZampamqamramsamtahyahyahyahyahyaaaaaaahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamPamQamQamRaaaamuatNatNatNaBmatNatNatNaBmaahaahaahamxamvamSamvamxamyamTamyadraiwadVaddaahaahagHahbahcahdahcahcahcaheahfahgagHaahaahaahaahaahaahagMadvadAadzagMagMadDadBadEaaNaTWaahakzalhalialjakAamlamGamHamIamJakAabvamKamLaiZajHamMamNamsamOahyahyahyahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamuanhaniamuamuamuanjankamuamuanlanmannanoamuamuadGadFadHaBmadIayZadJaBmaahaahaahamxamvanpamvamxamyanqamyadraiwadVaddaahaahagHahqahqagPagQahrahsagTagVagVagHaahaahaahaahaahaahagMadSadUadTadWahoabcabZafwaaNaahaahakzalEakzalFakAancandaneancandakzakzaaSanfaiZaiZangaiZaiZaiZahyahyahyahyahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyamuamuaobaocaodaoeaofaogaohaoiaojaokaolaolaomaonamuayZayZayZaBmadXayZayZaBmaahaahaahamxaooaopaoqamxaoraosaotadraiwaebaddaahaahagHaecahfahEahFaeeaedaefahcaehagHaahaahaahaahaahaahagMahAaepaeiaeqahaabDabZaeraaNaahaahakzaesanKanLanManNanOanPanQanRamfakzanTanUanVanWanXanYanYanZanZanZanZaoaahyahyahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9749,7 +9770,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahahyahyahyahyahyatiauXauYauZatiavaavbavcavdaveavdavfavfavgavhaviavjavkavfavlavmavnavoavpavqatDavravsavtavuavvavwavxavyavzavAasRaahatNavBatNaahaahaahaahaahaahaahanrasTauOasranraahaahagHagHakbakcagHainahXagUagHakbakcagHagHagHagHagHahyahydEOaioaOqaipairaiqabYafvafwaisaaNaahakzauSauTakzauUauVauWakzauSauTakzaahamXaitanzanzapBaiuapDapEanZaixanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaxsaxsaxsaxsaxsaxsaxsaxsaahatiavKavLavMatiavNavOavdavdavPavQavfavRavSavTavUavTavVavWavXavYavZawaawbawcawdaweaweawfaweawgasQawhawiasRawjasRaahatNauNatNaahaahaahaahaahaahanranrawkaiBawmanranrahyahyahyahyahyagHaiCaiDakfagHahyahyahyaahaahaahahyahyahydEOaiEaiGaiFdEOaaNaiIaiHaiJaaNaaNahyahyahyahyaiKavHavIavJaiKahyahyahyaahamXanwanzanzaquaquaquapEanZarNanZaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaahaahaahaahaahaahaahaahaxsdFmdFnazHdFoaytayuaxsaahatiawAawBawCatiawDawEavdawFawGawHavfawIawJawKawLawMawNawOawPavmawQawQawRawSatDatEawTawUawVawWasQawXawYasRawZasRaahatNauNatNaahaahaahaahaahatNavCaxaaxbaxcaxdaxeavCavCaxfaxgaxhavCavCaxdavEawnavCavCavCavCavCavCavCaxfaxgaxhavCaiLaiQaiPavCaxkaxlaxmaxdaxnawsawsawsaxoaxpawsavHaxqavJawsaxoaxpawsawsamXaiRanwanwanwanwanwapEanZaiSanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaALaALaALaALaALaALaALaxsdFqdFqazHazHdFrdFraxsaahatiaxtaxuaxvaxwaxxaxyavdavQaxzaxAavfaxBaxCaxDaxEaxFaxGavfawPaxHaxIawQawRaxJaxKaxKaxKaxKaxKaxKaxKaxLaxLaxLaxLaxLaahatNauNatNatNatNatNatNatNatNaxMawnaxNaxOaxPaxQaiTaxSaxTaxQaxQaxRaxVaiUaiWaiVaiVajaaiVaiVajgajcajhaiVajjaiVajkaiVaiVaiVajaaiVajmajlajnaydayeaygayfayfayhayiajpajoavJaymaymaymaymaypamXajqajtanzanzajxanwanZanZarNanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaALaALaALaALaALaALaALaxsdFqdFqazHazHdFrdFraxsaahatiaxtaxuaxvaxwaxxaxyavdavQaxzaxAavfaxBaxCaxDaxEaxFaxGavfadeaxHaxIawQawRaxJaxKaxKaxKaxKaxKaxKaxKaxLaxLaxLaxLaxLaahatNauNatNatNatNatNatNatNatNaxMawnaxNaxOaxPaxQaiTaxSaxTaxQaxQaxRaxVaiUaiWaiVaiVajaaiVaiVajgajcajhaiVajjaiVajkaiVaiVaiVajaaiVajmajlajnaydayeaygayfayfayhayiajpajoavJaymaymaymaymaypamXajqajtanzanzajxanwanZanZarNanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaALaALaALaALaALaALaALaALaxsdFsdFsazHazHdFtdFuaxsaahatiayxayyayzatiayAavbavdayBayCayDavfaEqayFavTayGavTayHayIayJayKayLayMayNayOayPayQayRayPazXaySayPayTayUayVayWayXatNatNauNayYayZayZayZazaazbazcazdawnaxlazeazfazgazkaziazjazjazgazhaziazjazlazjazgazmaznaznaznazoaznaznazpaznazqaznaznaznazmazqazpazrazsaztazuazvazvazvazwazvazvajyajAazvazvazvazvavDavGavFawoawlawlawpajBanZarOarNanZaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaALaALaALdFwdFvdFxaALdFzdFyaxsayrayraBCazHazHazIaxsazJazJazJazJazJazJazKazLazMazMazNazMazMazMazMazOazPazQazRazSazTazUazVavqavqazWayPazYaBiayPaCdaCcayPazZaAaaAbaAcaGWaAeaAfauNaAgatNatNatNaAhazbatNaAiawnaxlaxmaxdaAjaAoaAlawnaAmaAnaAkaApawnaAqawnaAraAkawnawnawnaApawnawnaAsawnaAtawnaAuawnaAkaAvaxlaAwaAxaAyaAzaAAaAAaAAaAAaACaABajCajDayfayfayfajGajEajOajIasYaoAaoAanzajPanZarOajQanZaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaALaALaALdFAaDxaDxaDxdFBdFDdFCaALayrayrazHazHaAMaAMaANaAOaAPaAQaARaASaATaAUaAVaAWaAXaAYaAZaBaaBbazMavfavfavfavfavfaBcaBdaBeaBfaBgaBhayPaDdaDeayPaIoaDgayPaBjaBkaBlayXayXaBmaBnaBoatNatNaKlatNatNatNatNavCaBpaxlaxmaxdaBqavCavCaxfaxgaxhavCavCaBraBsaAiavCavCaBtaBuaBuaBuaBvavCavCavCavCavCavCavCavCaBwaxlaAwaxdaBxawsawsawsawsawsawsawsawsawsawsawsawsawsawsamXajRanzataanzanzataanZaByaBzanZaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9775,41 +9796,41 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuaRPaRPaRPaTUaTUaRPaRPaRPaRPaTVaRfaahaahaahaahaahaTWaTWaTWaTWaSxaTXaTYaTZaSxaRTaUaaRTaUbaUcaTfaUdaTkaTkaTkaUeaTfaUfaTkaUgaTkaUhaTfaUiaUjaTfaTfaTfaTfaTgaThaThaThaThaThaThaThaTiaTfaUkaUlaUmaTfaTfaTfaTfaTfaTfaUnaUoaUpaTfaTfaTfaTfaTfaUqaUraTfaUsaTkaTlaTkaUtaToaUuaUvaUvaUwaUxaToaUyaUzaUAaClaClaClaClaClaClaUBaUCaUCaUCaUCaUCaUCaUDaClaGIaUEaCnaCoaClaClcllcllcllcllcllcllaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaTWaDtaDtaUFaUGaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaRfaRfaRfaRfaUHaUHaRfaRfaRfaRfaRfaRfaUIaUIaUIaUIaUIaUIaUJaUKaULaSxaTcaUMaSxaSxawqaUOaUPaUNaUNaUQaTkaURaUSaUTaUTaUUaUVaUTaUWaUTaUTaUUaUTaUTaUTaUXaUYaUTaUZaUTaUTaUTaUTaUSaUTaUTaUTaUUaUTaVaaUSaUUaUTaUTaVbaVcaVdaUTaVeaTkaTJaTkaVfaTkaVgaTkaTkaVhaTkaTkaTlaTkaTkaViaVjaUvaUvaVkaVlaVmaVnaVoaVnaVpaVqaVraZQaVsaVtaVnaVnaVuaVvaVnaVnaVwaVxaVyaVnaVnaVzaVAaLIaUAcpZcmkcmlakuaktaktaDtaVCaYcaYdaYeaDtaDtaDtaDtaDtaDtaDtaDtaDtaVBaVCaFJaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaVDaVEaVFaVGaVHaVIaVJaVKaVLaVMaVNaVOaVPaVQaVKaVKaVRaVSaVTaVKaVUaVKaVPaVVaVWaVVaVRaVKaVXaVYaVZaIxaVYaVYaWbaWcaWdaWeaWdaWfaWbaWdaWdaWdaWgaWhaWdaWdaWiaWdaWdaWfaWcaWdaWdaWaaWbaWdaWjaWcaWbaWqaWdaWgaWdaWkaWhaWlaWdaWbaWdaWiaWdaWcaWdaWdaWmaWdaWfaWnaTkaTkaViaWoaWpbhcaWraWsaWtaWuaWvaWuaWwaWuaWuaWuaWuaWxaWyaWuaObaWuaWuaWuaWzaWAaWAaWAaWBaWCaWDaWDaWFakvakxakwakBakyakyakDaWGakIaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWGaWJaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaWKaWLaWMaWNaWLaWOaWPaUNaWQaUNaWRaUNaWSaUNaWTaWUaWVaWWaWXaWYaWZaXaaXbaXcaXdaXeaXfaXgaXhaXiaXjaXkaXlaXmaXnaXmaXmaXmaXmaXoaXnaXmaXmaXpaXmaXqaXmaXmaXraXmaXmaXsaXtaXuaXmaXvaXnaXwaXxaXyaXzaXyaXyaXyaXAaXBaXCaXDaXEaXFaXGaXHaXmaXIaXtaXJaXKaTkaXLaTkaTkaTkaViaUvaXMaXNaXOaXPaXQaXRaXSaLIaLIaXTaLIaLIaXVaSfaXWaLIaLJaLIaXXaLIaXYaXZaXVaXUaYaaYbaLIaLIaUAcpZakLakKakPakMcomaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaRfaYfaYgaYhaYiaYjaRfaRfaRfaRfaYkaYlaYmaRfaUIaUIaUIaUIaUIaUIaUbaYnaYnaYnaUcaUIaUIaYhaTfaYoaYpaYqaYraYsaTfaYtaTkaTkaTkaYuaTfaTfaTfaTfaTfaTfaYvaYwaUgaYxaYvaTfaTfaTfaTfaTfaTfaYyaYzaYAaTfaUqaYBaUraTfaTfaUqaYBaUraTfaYCaYDaYEaTfaUqaYBaUraTfaTfaUqaYBaUraToaRjaYGaYHaUwaYIaToaClaYJaYKaYLaClaYJaYKaYLaClaClaClaYMaUAaClaClaClaClaClaClaUAaYNaUAaClaClcllakTakSakVakUakWdEoakYakXalaakZalcalbdEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaRfaRfaRfaRfaRfaRfaRfaahaahaRfaYOaYOaYOaRfaahaahaahaahaYPaYQaYRaYRaYRaYRaYRbewaYPahyaTfaTfaYTaYUaYVaTfaTfaTfaYWaYXaYYaTfaTfaahaahaahaahaahaYZaZaaZbaZcaYZaahaahaahaahaahaTfaZdaZeaZdaTfahyahyahyahyahyahyahyahyaZfaZgaZhaZiaZfahyahyahyahyahyahyahyahyaToaToaZjaZkaZlaToaToahyahyahyahyahyahyahyahyahyahyaClaYMaUAaClaahaahaahaahaZmaZmaZnaZmaZmaahcllclldEoalddEodEodEoakYalealgalfaloalbdEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpaZqaZraZoaahaahaahaahaYPaZsaZtaZuaZvaZwaZxaYRaYPahyahyaZyaZzaZAaZBaZyahyaTfaUiaThaTiaTfaahaahaZCaZCaZCaZCaZDaZDaZEaZDaZDaZFaZFaZFaZFaahaZdaZGaZHaZdahyahyahyahyaZIaZJaZKaZLaZIaZIaZMaZNaZOaZIaZIaZJaZKaZLaZIahyahyahyahyaZPaYGaYHaUwbaAaZRaZRaZSaZTaZUaZRaZSaZTaZUaZRaZRaZRaZVaZRaZRaahaahaahaahaahaZmaZWaZXaZmaahaahdEoalpalsalralualtalxalwalzalyalyalAdEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZYaZZbaaaZoaahaahaahaahaYPbabbacbadbaebafbagbahaYPahyahybaibajbakbalbamahyahyahyahyahyaahaahaahaZCbanbaobapaZDbaqbarbasaZDbatbaubavaZFaahaZdaZGbaxaZdahyahyahybayaZLbKzaYFaTHbaCbKMbaEbaFbaGbaHbaIbawbazbhAaZJbaMahyahyahybaNaYGaYHaUwbdwbaLbaBbaPbaObaRbaQbaPbaSbaRbaTbaWbaVbcPbaXaZRaZRaahaahaahaahaZmbbbbbcaZmaahaahdEoalBalCalyalLalDalyalPalZalyambamadEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdaaaaaabbdaaaaaaaaabbdaaaaaaaaaaaaaaabbdaaaaaaaaabbdaaaaaabbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobbebbfdGNaZoaahaahaahaahaYPbbhbacbbibbjbbkbagbblaYPbbmbbnbbobbpbbqbbrbamahyahyahyaahaahaahaahaahaZCbbsbbtbbubbvbbwbbxbbybbzbbAbbBbbCaZFaahaZdaZdaZHaZdahyahybaybbDbbEbMcbfMbdCbdCdCqbbGbbHbbGbgHccSblCdCpbbLbbEbbMbaMahyahybbNbbObbPbbQbbRbbabaYbbTbbSbbTbbUbbWbbVbbWbcabcIbbXbbYbbZbcJaZRaahaahaahaahaZmaZWbcbaZmaahaahdEodEBamdamcamgameamAamhamCamBamDamadEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobccbcdbceaZoaahaahaahaahaYPbcfbcgbchbchbchbcibfvbcjbckbclbclbcmbcnbcobamahyahyaahaahaahaahaahaahaZCbcpbcqbcraZDbcsbctbcuaZDbcvbcwbcxaZFaahaahaZdaZHaZdahyaZIbcybbEbbFbfMdCqbbGbbGbczbcAbcBbcCbcDbbGbbGbgHdCrbbLbbEbcyaZIahyaTobcEbcFbcGbcHbcLbcKbcNbcMbcNbcQbdzbdybdzdCsbdDbcObaZdCtbdEaZRbcRbcRbcRbcRaZmbcSbcTaZmaahaahdEodEBamFamEamWamVanaamZdEodEodEodEodEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpbcUaZoaZoaahaahaahaahaYPbcVbcWbcXbcYbcZbdabdbbdcbddbdebdebdfbdgbdhbaiahyahyaahaahaahaahaahaahaZCbdibdjbdkbdlbdlbdmbdlbdlbdnbdobdpaZFaahaahaZdaZHaZdahybdqbaJbbFbfMdCqbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbgHdCrbdsbaKbdqahyaTobdubdvaUwbdwbaLbdFbfkbdGbLZbdIbWObNGbiVbYuaZRccRcsWdCucwuaZRbdJbdKbdLbcRbdMbdNbdOaZmaahaahaZmaZmaZmanbaZmaZmaZmaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbdPbdPbdPbdPbdQbdRbdSbdTaahaahaahaahaYPaRtbdVbdWbdXbdYbdXbdZbeabebbecbecaZzbcnbedbeebefbefbefbefbefaahaahaahaZCaZCaZCaZCbdlbegbehbeibdlaZFaZFaZFaZFaahaahaZdaZHaZdahybejbiHbfMdCqbbGbelbbGbembenbbGbbGbbGbeobepbbGbelbbGbgHdCvbiFbejahyaZPbesbetaUwaToaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRbkjbevbuJbcRbdMbdNbdOaZmaahaZmaZmbexbeyaZWantbdObezbeAaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbeBbeCbeDbdPbeEbeFbeGbdTaahaahaahaahaYPaYPbeHbeIbeJbeKbeLaYPaYPbbmbbnbbobeMbcnbeNbeebeObePbeQbeRbefaahaahaahaahaahbdlbdlbeSbeTbeUbeTbeSbdlbdlaahaahaahaahaZdaZHaZdahybcybiHdCwbeqbbGbbGbeVbeWbbGbbGbbGbbGbbGbeXbepbbGbbGbbGdCxbiFbcyahybaNbbObetbeYaToaahaahbeZbeZbfaaFLbeZbfcbfdbfedGObfgbfhbfibfjbcRbkhbevbevbflbdMbdNbfmaZmaZmaZmbfnbfobfodGGbfobfobfobfobfpaZmaZmaZmaZmaZmaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbfqbfrbfsbdPbftbfucxEbdTaahaahaahaahaahaYPaYPbfwbfxbfyaYPaYPahyahyahybfzbfAbcnbfBbeebfCbfDbfEbfFbefbefaahaahaahaahbdlbfGbeTbfHbfIbfJbeTbfKbdlaahaahaahaahaZdaZHaZdahyaZIbfLdCybbJbbGbeVbfNbfObbGdCzdCzdCzbbGbjlbfPbfQbbGbbGdCAbfSaZIahybbNaYGbetaUwaToaahaahbeZbfTbfUbfVbfWbfXbfYbfZbfZbgabgbbgcbgdbgebgfbggbghbcRbdMbgibfobfobfobfobgjbgkbgkbgkbgkbgkbgkbgkbglbfobfobfobfobfobfpaZmaZmaahaahaahaahaahaahbgmbgmbgmbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbgnbfrbgobdPbgpbgqbgrbdTaahaahaahaahahyahyahyahyahyahyahyahyahyahybbobbobgsbcnbgtbeebefbgubgvbgwbgxbefaahaahaahaahbdlbgybeTbeibgzbeibeTbgAbdlaahaahaahaZdaZdaZHaZdahyaZIbgBdCBbfRbbGbgCbbGbbGdCCbgDbgEbgFdCDbbGbbGbgCbbGbgGbgHdCEaZIaZfaTobgIbgJbgKaToaToaahbeZbgLbgMbgNbgObgPbgQbgRbgSbgTbgUbgVbgWbgXbgYbgYbgYbgYbgYbgYbgZbgZbgZbgZbgZbgkbhabhbbmzbhdbhebgkbhfbhfbhfbhfbhfbhfbglbfpaZmaahaahaahaahaahbgmbgmbhgbhhbhibhhbhjbgmbgmaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbhkbhlbhkbdPbhmbfubhnbhobhobhobhoaahaahaahahyahyahyahyahyahyahyahyaZycrkbajbhqbhrbhsbefbhtbgvbgwbhubefaahaahaahaahbdlbhvbeTbhwbhxbhwbeTbhybdlaahaahaahaZdaZGaZHaZdahybdqbaUdCFbbGbbGbbGbbGdCGbgDbhAbhAbhAbgFdCFbbGbbGbbGbhBbbGbhCbhDbhEbhFbhGbetaUwbhHaToaahbeZbhIbhJbgNbhKbhLbhLbhLbhLbhMbhNbgVbhObhPbgYbhQbhRbhSbhTbgYbhUbhVbhVbhWbgZbhXbhYbhYbhZbhZbhYbiabhfbibbicbidbiebhfbdOaZWaZmaahaahaahaahaahbgmbifbigbihbiibijbikbifbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahbilbilbilbilbilbilbilbilbilbimbinbiobipbeEbfubinbhobiqbirbhobhobhoaahaahahyahyahyahyahyahyahybambisaZzbitbiubdebivbiwbixbgwbhubefaahaahaahaahbdlbiybeTbizbiAbiBbeTbiCbdlaahaahaahaZdbiDaZHaZdahybejbdrdCFbbGbbGbbGbbGdCGbiFbhAbdtbhAbiHdCFbbGbbGbbGbiIbiJbiJbiKbiLbiMbiNbiObiPbiQaToaahbeZbfTbiRbiSbeZbiTbiUblObiWbxjbfhbzjbhObiYbgYbiZbjabjbbjcbgYbSjbjebjfbjgbgZbjhbjibjjbjkbpybjmbjnbhfbibbjobjpbjqbhfbjrbjsaZmaahaahaahaahaahbgmbjtbjubjvbjwbjvbjubjxbgmaahaahbgmbgmbgmbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaWKaWLaWMaWNaWLaWOaWPaUNaWQaUNaWRaUNaWSaUNaWTaWUaWVaWWaWXaWYaWZaXaaXbaXcaXdaXeaXfaXgaXhaXiaXjaXkaXlaXmaXnaXmaXmaXmaXmaXoaXnaXmaXmaXpaXmaXqaXmaXmaXraXmaXmaXsaXtaXuaXmaXvaXnaXwaXxaXyaXzaXyaXyaXyaXAaXBaXCaXDaXEaXFaXGaXHaXmaXIaXtaXJaXKaTkaXLaTkaTkaTkaViaUvaXMaXNaXOaXPaXQaXRaXSaLIaLIaXTaLIaLIaXVaSfaXWaLIaLJaLIaXXaLIaXYaXZaXVaXUaYaaYbaLIaLIaUAcpZakLakKakPakMcomaDtaDtaDtaDtaDtaDtaDtaDtaVCaVCaDtaDtaDtaDtaDtaDtaDtaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaazGazGazGazGazGaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaRfaRfaYfaYgaYhaYiaYjaRfaRfaRfaRfaYkaYlaYmaRfaUIaUIaUIaUIaUIaUIaUbaYnaYnaYnaUcaUIaUIaYhaTfaYoaYpaYqaYraYsaTfaYtaTkaTkaTkaYuaTfaTfaTfaTfaTfaTfaYvaYwaUgaYxaYvaTfaTfaTfaTfaTfaTfaYyaYzaYAaTfaUqaYBaUraTfaTfaUqaYBaUraTfaYCaYDaYEaTfaUqaYBaUraTfaTfaUqaYBaUraToaRjaYGaYHaUwaYIaToaClaYJaYKaYLaClaYJaYKaYLaClaClaClaYMaUAaClaClaClaClaClaClaUAaYNaUAaClaClcllakTakSakVakUakWdEoakYakXalaakZalcalbdEoaVCaVCaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaazGazGazGazGazGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaRfaRfaRfaRfaRfaRfaRfaahaahaRfaYOaYOaYOaRfaahaahaahaahaYPaYQaYRaYRaYRaYRaYRbewaYPahyaTfaTfaYTaYUaYVaTfaTfaTfaYWaYXaYYaTfaTfaahaahaahaahaahaYZaZaaZbaZcaYZaahaahaahaahaahaTfaZdaZeaZdaTfahyahyahyahyahyahyahyahyaZfaZgaZhaZiaZfahyahyahyahyahyahyahyahyaToaToaZjaZkaZlaToaToahyahyahyahyahyahyahyahyahyahyaClaYMaUAaClaahaahaahaahaZmaZmaZnaZmaZmaahcllclldEoalddEodEodEoakYalealgalfaloalbdEoaVCadfaDtaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpaZqaZraZoaahaahaahaahaYPaZsaZtaZuaZvaZwaZxaYRaYPahyahyaZyaZzaZAaZBaZyahyaTfaUiaThaTiaTfaahaahaZCaZCaZCaZCaZDaZDaZEaZDaZDaZFaZFaZFaZFaahaZdaZGaZHaZdahyahyahyahyaZIaZJaZKaZLaZIaZIaZMaZNaZOaZIaZIaZJaZKaZLaZIahyahyahyahyaZPaYGaYHaUwbaAaZRaZRaZSaZTaZUaZRaZSaZTaZUaZRaZRaZRaZVaZRaZRaahaahaahaahaahaZmaZWaZXaZmaahaahdEoalpalsalralualtalxalwalzalyalyalAdEobIKaDtaTWaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZYaZZbaaaZoaahaahaahaahaYPbabbacbadbaebafbagbahaYPahyahybaibajbakbalbamahyahyahyahyahyaahaahaahaZCbanbaobapaZDbaqbarbasaZDbatbaubavaZFaahaZdaZGbaxaZdahyahyahybayaZLbKzaYFaTHbaCbKMbaEbaFbaGbaHbaIbawbazbhAaZJbaMahyahyahybaNaYGaYHaUwbdwbaLbaBbaPbaObaRbaQbaPbaSbaRbaTbaWbaVbcPbaXaZRaZRaahaahaahaahaZmbbbbbcaZmaahaahdEoalBalCalyalLalDalyalPalZalyambamadEobdOaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdaaaaaabbdaaaaaaaaabbdaaaaaaaaaaaaaaabbdaaaaaaaaabbdaaaaaabbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobbebbfdGNaZoaahaahaahaahaYPbbhbacbbibbjbbkbagbblaYPbbmbbnbbobbpbbqbbrbamahyahyahyaahaahaahaahaahaZCbbsbbtbbubbvbbwbbxbbybbzbbAbbBbbCaZFaahaZdaZdaZHaZdahyahybaybbDbbEbMcbfMbdCbdCdCqbbGbbHbbGbgHccSblCdCpbbLbbEbbMbaMahyahybbNbbObbPbbQbbRbbabaYbbTbbSbbTbbUbbWbbVbbWbcabcIbbXbbYbbZbcJaZRaahaahaahaahaZmaZWbcbaZmaahaahdEodEBamdamcamgameamAamhamCamBamDamadEobdOaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobccbcdbceaZoaahaahaahaahaYPbcfbcgbchbchbchbcibfvbcjbckbclbclbcmbcnbcobamahyahyaahaahaahaahaahaahaZCbcpbcqbcraZDbcsbctbcuaZDbcvbcwbcxaZFaahaahaZdaZHaZdahyaZIbcybbEbbFbfMdCqbbGbbGbczbcAbcBbcCbcDbbGbbGbgHdCrbbLbbEbcyaZIahyaTobcEbcFbcGbcHbcLbcKbcNbcMbcNbcQbdzbdybdzdCsbdDbcObaZdCtbdEaZRbcRbcRbcRbcRaZmbcSbcTaZmaahaahdEodEBamFamEamWamVanaamZdEodEodEodEodEobdOaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpbcUaZoaZoaahaahaahaahaYPbcVbcWbcXbcYbcZbdabdbbdcbddbdebdebdfbdgbdhbaiahyahyaahaahaahaahaahaahaZCbdibdjbdkbdlbdlbdmbdlbdlbdnbdobdpaZFaahaahaZdaZHaZdahybdqbaJbbFbfMdCqbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbgHdCrbdsbaKbdqahyaTobdubdvaUwbdwbaLbdFbfkbdGbLZbdIbWObNGbiVbYuaZRccRcsWdCucwuaZRbdJbdKbdLbcRbdMbdNbdOaZmaahaahaZmaZmaZmanbaZmaZmaZmaZmaZmaahaahaahaZmbdOaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbdPbdPbdPbdPbdQbdRbdSbdTaahaahaahaahaYPaRtbdVbdWbdXbdYbdXbdZbeabebbecbecaZzbcnbedbeebefbefbefbefbefaahaahaahaZCaZCaZCaZCbdlbeibeUbeibdlaZFaZFaZFaZFaahaahaZdaZHaZdahybejbiHbfMdCqbbGbelbbGbembenbbGbbGbbGbeobepbbGbelbbGbgHdCvbiFbejahyaZPbesbetaUwaToaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRbkjbevbuJbcRbdMbdNbdOaZmaahaZmaZmbexbeyaZWantbdObezbeAaZmaZmaahaahaZmbdObIUaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbeBbeCbeDbdPbeEbeFbeGbdTaahaahaahaahaYPaYPbeHbeIbeJbeKbeLaYPaYPbbmbbnbbobeMbcnbeNbeebeObePbeQbeRbefaahaahaahbegbegbdlbdlbehbeTbeUbeTbeSbdlbdlbegbegaahaahaZdaZHaZdahybcybiHdCwbeqbbGbbGbeVbeWbbGbbGbbGbbGbbGbeXbepbbGbbGbbGdCxbiFbcyahybaNbbObetbeYaToaahaahbeZbeZbfaaFLbeZbfcbfdbfedGObfgbfhbfibfjbcRbkhbevbevbflbdMbdNbfmaZmaZmaZmbfnbfobfodGGbfobfobfobfobfpaZmaZmaZmaZmbdObdObLAaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbfqbfrbfsbdPbftbfucxEbdTaahaahaahaahaahaYPaYPbfwbfxbfyaYPaYPahyahyahybfzbfAbcnbfBbeebfCbfDbfEbfFbefbefaahaahbegbegbdlbfGbeTbfHbfIbfJbeTbfKbdlbegbegaahaahaZdaZHaZdahyaZIbfLdCybbJbbGbeVbfNbfObbGdCzdCzdCzbbGbjlbfPbfQbbGbbGdCAbfSaZIahybbNaYGbetaUwaToaahaahbeZbfTbfUbfVbfWbfXbfYbfZbfZbgabgbbgcbgdbgebgfbggbghbcRbdMbgibfobfobfobfobgjbgkbgkbgkbgkbgkbgkbgkbglbfobfobfobfobfobfpbdOaZmaahaahaahaahaahaahbgmbgmbgmbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbgnbfrbgobdPbgpbgqbgrbdTaahaahaahaahahyahyahyahyahyahyahyahyahyahybbobbobgsbcnbgtbeebefbgubgvbgwbgxbefaahaahbegbegbdlbgybeTbeibgzbeibeTbgAbdlbegbegaahaZdaZdaZHaZdahyaZIbgBdCBbfRbbGbgCbbGbbGdCCbgDbgEbgFdCDbbGbbGbgCbbGbgGbgHdCEaZIaZfaTobgIbgJbgKaToaToaahbeZbgLbgMbgNbgObgPbgQbgRbgSbgTbgUbgVbgWbgXbgYbgYbgYbgYbgYbgYbgZbgZbgZbgZbgZbgkbhabhbbmzbhdbhebgkbhfbhfbhfbhfbhfbhfbglbfpaZmaahaahaahaahaahbgmbgmbhgbhhbhibhhbhjbgmbgmaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbhkbhlbhkbdPbhmbfubhnbhobhobhobhoaahaahaahahyahyahyahyahyahyahyahyaZycrkbajbhqbhrbhsbefbhtbgvbgwbhubefaahaahbegbegbdlbhvbhybhxblrbhwbeTbhvbdlbegbegaahaZdaZGaZHaZdahybdqbaUdCFbbGbbGbbGbbGdCGbgDbhAbhAbhAbgFdCFbbGbbGbbGbhBbbGbhCbhDbhEbhFbhGbetaUwbhHaToaahbeZbhIbhJbgNbhKbhLbhLbhLbhLbhMbhNbgVbhObhPbgYbhQbhRbhSbhTbgYbhUbhVbhVbhWbgZbhXbhYbhYbhZbhZbhYbiabhfbibbicbidbiebhfbdOaZWaZmaahaahaahaahaahbgmbifbigbihbiibijbikbifbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahbilbilbilbilbilbilbilbilbilbimbinbiobipbeEbfubinbhobiqbirbhobhobhoaahaahahyahyahyahyahyahyahybambisaZzbitbiubdebivbiwbixbgwbhubefaahaahbegbegbdlbiyblsbizbiAbiBbltbiCbdlbegbegaahaZdbiDaZHaZdahybejbdrdCFbbGbbGbbGbbGdCGbiFbhAbdtbhAbiHdCFbbGbbGbbGbiIbiJbiJbiKbiLbiMbiNbiObiPbiQaToaahbeZbfTbiRbiSbeZbiTbiUblObiWbxjbfhbzjbhObiYbgYbiZbjabjbbjcbgYbSjbjebjfbjgbgZbjhbjibjjbjkbpybjmbjnbhfbibbjobjpbjqbhfbjrbjsaZmaahaahaahaahaahbgmbjtbjubjvbjwbjvbjubjxbgmaahaahbgmbgmbgmbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahbilbjybjzbjAbjBbjCbjDbjEbilbjFbjGbjHbjIbjJbjKbjLbhobjMbjNbjObjPbhoaahaahaahahyahyahyahyahyahybaibjQbjRbjSbhrbecbjTbjUbjVbgwbhubefaahaahaahaahbjWbjWbjWbjWbjXbjWbjWbjWbjWaahaahaahaZdbjYaZHaZdahybcybaUdCFbbGbbGbbGbbGdCGbjZbhAbhAbhAbkadCFbbGbbGbbGbkbbbGbbGbkcaZibkdaYGbetaUwbkeaToaahbeZbkfbkgblRbeZbfhbfhbfhbfhbkibfhbALbkkbklbgYbkmbknbkobkpbgYbkqbkrbksbktbgZbkubkvbkwbkxbkybkzbkAbkBbkCbkDbkEbkFbhfbdObkGaZmaahaahbgmbgmbgmbgmbkHbkIbkHbkJbkHbkKbkHbgmbgmbgmbgmbkLbkMbkNbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkObkPbkRbkQbkSbkPbkPahyaahaahaahaahaahaahaahaahaahbilbkTbkUbkVbkWbkXbkYbkZblablbblcbldbleblfblgblhbhoblibljblkblkbhobllbllbllbllahyahyahyahyahybbobboblmblnblobeebefblpbjVbgwblqbefaahaahaahaahbjWblrblsbltblublvblwblxbjWaahaahaahaZdaZdaZHaZdahyaZIblydCwbeqbbGblzbbGbbGdCrbjZblAbkabfMbbGbbGblzbbGblBdCHdCIaZIaZfaToaZjblDaZlaToaToaahbeZblEblFblGbeZblHblIblJdGQblLblMblNbhOblWbgYbgYblPblQbpabgYblSblTblUblVbgZbrKbhZbhYblXbhYbhYblYbhfblZbmabhfbmbbhfbmcaZWaZmaahbgmbgmbifbmdbkHbmebmfbmgbmhbmibmfbmgbmjbkJbmkbmlbmibmmbmgbmnbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkPbmobmpbmqbmpbmobkRahyahyaahbkPbkPbkPbkPaahaahaahbilbmrbmsbjAbmtbmubmvbmwbilbmxbfubmybdTbrebdTbrebhoblibmAbmBbmCblkbmDbmEbmFbllbmGbmHbmIbllahyahyaZyaZzbcnbhrbeebmJbmKbmLbmMbefbefaahaahaahaahbjWbmNbmObmPbmQbmPbmRbmSbjWaahaahaahaahaZdaZHaZdahyaZIbmTdCJbbJbbGbfPbfQbmUbbGbdCbdCbdCbbGbmUbeVbfNbbGbbGdCKbmVaZIahyaZPaYGaYHaUwaToaahaahbeZbmWbmXbmYbmZbnabnbbncbncbndbnebnfbngbnhbnibgYbnjbnkbnlbgYbnmbnnbnobnpbgZbnqbnrbhYbnsbhYbntbnubhfbnvbnwbhfbnxbhfbnyaZWaZmaahbgmbnzbnAbnBbnCbnDbnEbnDbnFbnDbnGbihbnHbkJbnIbnJbnKbnLbihbnMaFMbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnObnPbnQbnRbnRbnPbnSbnTbkPbkPbkPbnUbnVbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbftbfubnWbdTbnXbnYbnZblkblkaybbobbocblkbodboeboebofbogbohboibllahyahybamaZzbcnbojbeebmKbmKbokbolbefaahaahaahaahbjWbjWbombonboobopboqbonborbjWbjWaahaahaahaZdaZHaZdahybdqbiHdCBbfRbbGbbGbfPbfQbbGbbGbbGbbGbbGbembeWbbGbbGbbGdCxbdxbdqahybaNbbObotbouaToaahaahbeZbgLbovbgNbowboxboybozboAboBboCbgVbhOboDboEbgYboFboGboFbgYboHboIbTzboKbgZbgkboLboMbdAboLboMboOboOboOboOboOboOboOboOaZWaZmaahbgmboPboQboRbkHboSbmfanuboUboVboWbmmbmgbkHbmibmmboXboYboSboZbuPbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQbmqbpbbpcbpcbmqbpdbpebpfbpgbphbpibpjbpkbplbpmbpnbpobppbpqbprbprbpsbprbptbpubpvbpwbpxbMKbpzbpzbpzbpAblkblkbpBblkblkbpCbpDbpEbpEbpEbpFbpGbllahyahybamaZzbcnbfBbeebefbefbefbefbefaahaahaahaahbjWbpHbpIbpJbpKbpLbpKbpMbpNbpObjWaahaahaahaZdaZHaZdahybejbiHdCDdCLbbGbelbbGbfPbenbbGbbGbbGbeobeWbbGbelbbGdCHdCMbdxbejahybbNaYGaYHaUwbpPahyaahbeZbpQbpRbgNbpSbpTbpUbpVbpVbpWbpXbpYbpZbqabqabqbbqcbqdbqcbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnboObqoaCqbqqbqrbqsbqtboOaZWaZmaahbgmbqubqvbqwbkJbqxbqybqzbgmbqAbqBbqCbqCbqDbsnbqCbqEbqFbqGboZaycbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAacOacAacAacAacAacAacAacAacOacAacAacAacAaaaaaaacAacAacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqIaadahybkQbnPbqJbpcbpcbqKbqLbqMbqNbqObqPbqQbqRbqSbqTbqUbqVbqTbqWbqXbqTbqYbqZbrabrbbrcbrdbgqbinbMNbrfbrgbpzbrhbrebribrjbrkbrlbrmbrnbrobrpbrqbrrbrsbllahyahybambrtbrubrvaZyahyahyahyahyahyahyaahaahaahbjWbjWbrwbrxbpKbpKbpKbrybrzbjWbjWaahaahaahaZdaZHaZdahybcyaTsbrBdCDdCLbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGdCHdCCbrCbdBbcyahyaTobrEaYHbrFbrGahyahybeZbfTblFbrHbeZbrIbrJbvUbrLbEEblMbrNbrObrPbrQbrRbrSbrTbrSbrSbrSbrUbrVbrWbrXbrYbrZbrYbsabrYbrYbsbbscaCrbsebsfbsgbsgboOaZWaZmaahbgmboPbshboRbkHbmibsibsjbskbslbmmbmmbsmbkHbuYbmmbsobspbmiboZbsqbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaaaaadaadaaaaadaadaadaaaaadaadaadaaaacAaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsrahyahybssbmqbstbpcbpcbmqbsubsvbswbsxbsybszbsAbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbsBbfubsCbdTbekbsEbsFbsFbsGbsHbsIbsJbrlbsKbrnbsLbsMbsNbrrbsObsPahyahybamaZzbcnbhrbamahyahyahyahyahyahyaahaahaahaahbjWbsQbrxbsRbsSbsTbsUbsQbjWaahaahaahaahaZdaZHaZdahyaZIbdqbbEbsVdCDdCLbbIbbJbbKbbGbbGbbGbbIbbJbbKdCHdCCbrCbbEbdqaZIahyaZPaYGbetaUwbrGahyahybeZbeZbsWbeZbeZblMblMblMbsXbsXbsXbsXbsYbsZbsXbsXbtabtbbtcbtdbtdbtebtfbtbbtgbthbtibtjbtkawrbtmboObtnaCsaCuaCtaCuaDwboOaZWaZmaahbgmbtsbttbnBbtubnDbtvbnDbtwbmmbtxbmmbtybkJbyTbijbtzbtAbtBbtCbtDbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaaacAaadaadaaaaaaaaaaaaaaaaaabtHbtIbtJbtKaaaaaabtLbtMbtNbtLbtLbtObnPbnQbtPbtQbnPbtRbnTbkPbkPbkPbtSbnTbkPaahaahaahaahaahaahaahaahaahaahaahbdTbtTbtUbtVbMKbtWbtXbtYbpzbtZbeEbuabubbucbudbuebufbufbufbugbuhbuiahyahybamaZzbcnbhrbamahyahyahyahyahyaahaahaahaahaahbjWbujbukbulbumbukbukbujbjWaahaahaahaahaZdaZHaZdahyahybbMbaMbbEbsVdCDdCNdCPdCOdCzdCzdCzdCNdCPdCOdCCbrCbbEbaybbDahyahybaNbdubdvbunbrGahyahybuoberbuqburbusbutbuubuvbsXbuwbuxbuybuzayjaykbuCbuDbuEbuFbuGbuHbuIbtfbHXbuKbuLbuMbuNbuObuLbuNboObwxbuQbuRbuSbuTbuUboOaZWaZmaahbgmbgmbifbuVbkHboSbuWbmmbmfbmmbmmbtCbuXbkJbCQbwubuZbvabsmbvbbgmbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaacAaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadacOaaaaadaadaaaaaaaaaaaaaaabtHbtHbvdbvebtHbvfbvgbvhawxbvjbvkbkPbmobmpbmqbmpbmobkRahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahaahbdTbvlbvmbvnbMNbvobvpbvqbvrbMKbvsbvtbvubvvbvwbvxbvybvzbvAbvBbvCbllahyahybaiaZzbMObhrbaiahyahyahyaahaahaahaahaahaahaahbjWbjWbjWbvDbjWbjWbjWbjWbjWaahaahaahaahaZdaZHaZdahyahyahybbMaZLbaJbgEbgEbvGbvHbiEbhzbiEbvKbvLbgEbgEbiGaZJbbDahyahyahybbNaYGbRLaUwbvNahyahybvObosbuqbvQboNbvSbvTbxbbsXanvbvWbvXbvYbvYbvZbwabwbbwcbwdbwebwebwfbwgbQwbwibwjbwkbwlbwmbwnbwoboObwpbwqbwrbtqbwsbwtboOaZWaZmaahaahbgmbgmbgmbgmbAQbwvbwwbmfbyUbwybwzbkJbkJbGRbkJbwAbwBbwCbgmbgmaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaadaadaaaaaaaaaaaabtHbwDbwEbwFbtHbwGbwHbwIbwJbwKbwLbkObkPbkRbkQbkSbkPbkPaahaahahyahyahyahyahyahyaahaahbwMbwMbwMbwMbwMbwMbwMbwMbwMbwNbwObwPbdTbrAbwRbwSbwTbMNbwUbuabsCbucbwVbwWbwXbllbwYbwZbwYbllahybeebeeblmblnblobboahyahyaahaahaahaahaahaahaahaahaahaahaahbxaaahaahaahaahaahaahaahaahaZdaZdaZHaZdaZdahyahyahyaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIahyahyahyahyaToaZjblDaZlaToaToahybxcbxdbxebvSbxfbxgbxhbxibsXanAbxkbxlbxmbvYbvYbxnbqhbxpbxqbthbthbxrbtfbxsbxtbxubxvbxwbxxbADbvRboOboOboOboObxAboOboOboOaZWaZmaahaahaahaahaahbgmbxBbxCbkJbxDbkJbxBbxEbkJbxFbxGbkJbxHbxIbkJbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaaaaadaadaaaaaaaaabtHbxJbxKbxLbtHdDfbxMbxNbxObxPbxQbtLaahaahaahahyahyaahaahahyahyahyahyaahaahaahaahbwMbwMbxRbxSbxTbxUbxVbxWbxXbwMbxYbxZbyabdTbybbycbydbyebdTbyfbuabygbyhbyhbyhbyhbyhbyibyjbykbyhbfzbeebylaZzbcnbymbboaZdaahaahaahaahaahaahaahaahaahaahaahaahbxaaahaahaahaahaahaahaahaZdaZdaZGaZHaZGaZdaZdahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaZdaTobbObynbiPbyoaTobypbyqbyrbysbytbyubyvbywbyxbyybyzbyAbyBbyCbvYbxobsXbyEbtbbyFbyGbyHbyIbyJbyKbyLbyMbyNbxybyPbyQbyRbySbIxbCLbyVbyWbyXbyYbySaZWaZmaahaahaahaahaahbgmbyZbzabzbbzcbzdbzebzfbzgbzhbzibkJdkQbzkbzlbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaaaaaaaadbzmbznbznbznbznbzobtHbtHbtLbzpbzqbzrbzsawybtLaahaahaahaahahyahyahyahyahyahyaahaahaahaahaahbwMbzubzvbzwbzxbzybzzbzAbzBbzCbzDbzEbzFbzGbzHbzIbzJbzKbzLbzMbzNbzObzPbzQbzRbzSbzPbzTbzUbzVbzWbzXbzYbecbajbhqbhrbzZaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaahaahaahbxaaahaahaZdaZdaZdaZdaZdaZdbAabAbbAcbAdaZGaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdbAebAfbAgbAhaUvbAibAjbAkbvSbAlbvSbAmbxgbAnbAobuCbApbAqbArbAsbAtbAubuCbAvbAwbqmbAxbAxbAybtfbAzbwibAAbABbACbADbAEbAFbySbAGbAHbAIbyWbyWbAJbySbAKaZmaahaahaahaahaahbgmbgmdkRbAMbANbAObAPcBYbARbASbATbAUbAVbAWbAXbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkObkPbkRbkQbkSbkPbkPahyaahaahaahaahaahaahaahaahaahbilbkTbkUbkVbkWbkXbkYbkZblablbblcbldbleblfblgblhbhoblibljblkblkbhobllbllbllbllahyahyahyahyahybbobboblmblnblobeebefblpbjVbgwblqbefaahaahaahblubjWbjWbjWbjWblvbjWbjWbjWbjWbjWaahaahaZdaZdaZHaZdahyaZIblydCwbeqbbGblzbbGbbGdCrbjZblAbkabfMbbGbbGblzbbGblBdCHdCIaZIaZfaToaZjblDaZlaToaToaahbeZblEblFblGbeZblHblIblJdGQblLblMblNbhOblWbgYbgYblPblQbpabgYblSblTblUblVbgZbrKbhZbhYblXbhYbhYblYbhfblZbmabhfbmbbhfbmcaZWaZmaahbgmbgmbifbmdbkHbmebmfbmgbmhbmibmfbmgbmjbkJbmkbmlbmibmmbmgbmnbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkPbmobmpbmqbmpbmobkRahyahyaahbkPbkPbkPbkPaahaahaahbilbmrbmsbjAbmtbmubmvbmwbilbmxbfubmybdTbrebdTbrebhoblibmAbmBbmCblkbmDbmEbmFbllbmGbmHbmIbllahyahyaZyaZzbcnbhrbeebmJbmKbmLbmMbefbefaahaahaahblubjWblwbmNblxbmQbmObmSbmRbjWbjWaahaahaahaZdaZHaZdahyaZIbmTdCJbbJbbGbfPbfQbmUbbGbdCbdCbdCbbGbmUbeVbfNbbGbbGdCKbmVaZIahyaZPaYGaYHaUwaToaahaahbeZbmWbmXbmYbmZbnabnbbncbncbndbnebnfbngbnhbnibgYbnjbnkbnlbgYbnmbnnbnobnpbgZbnqbnrbhYbnsbhYbntbnubhfbnvbnwbhfbnxbhfbnyaZWaZmaahbgmbnzbnAbnBbnCbnDbnEbnDbnFbnDbnGbihbnHbkJbnIbnJbnKbnLbihbnMaFMbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabnObnPbnQbnRbnRbnPbnSbnTbkPbkPbkPbnUbnVbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbftbfubnWbdTbnXbnYbnZblkblkaybbobbocblkbodboeboebofbogbohboibllahyahybamaZzbcnbojbeebmKbmKbokbolbefaahaahaahbjWbjWbjWbomboobukbopbmPborboqbjWbjWbjWaahaahaZdaZHaZdahybdqbiHdCBbfRbbGbbGbfPbfQbbGbbGbbGbbGbbGbembeWbbGbbGbbGdCxbdxbdqahybaNbbObotbouaToaahaahbeZbgLbovbgNbowboxboybozboAboBboCbgVbhOboDboEbgYboFboGboFbgYboHboIbTzboKbgZbgkboLboMbdAboLboMboOboOboOboOboOboOboOboOaZWaZmaahbgmboPboQboRbkHboSbmfanuboUboVboWbmmbmgbkHbmibmmboXboYboSboZbuPbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQbmqbpbbpcbpcbmqbpdbpebpfbpgbphbpibpjbpkbplbpmbpnbpobppbpqbprbprbpsbprbptbpubpvbpwbpxbMKbpzbpzbpzbpAblkblkbpBblkblkbpCbpDbpEbpEbpEbpFbpGbllahyahybamaZzbcnbfBbeebefbefbefbefbefaahaahaahbjWbjWbjWbukbukbpIbpIbpIbonbukbjWbjWbjWaahaahaZdaZHaZdahybejbiHdCDdCLbbGbelbbGbfPbenbbGbbGbbGbeobeWbbGbelbbGdCHdCMbdxbejahybbNaYGaYHaUwbpPahyaahbeZbpQbpRbgNbpSbpTbpUbpVbpVbpWbpXbpYbpZbqabqabqbbqcbqdbqcbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnboObqoaCqbqqbqrbqsbqtboOaZWaZmaahbgmbqubqvbqwbkJbqxbqybqzbgmbqAbqBbqCbqCbqDbsnbqCbqEbqFbqGboZaycbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAacOacAacAacAacAacAacAacAacOacAacAacAacAaaaaaaacAacAacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqIaadahybkQbnPbqJbpcbpcbqKbqLbqMbqNbqObqPbqQbqRbqSbqTbqUbqVbqTbqWbqXbqTbqYbqZbrabrbbrcbrdbgqbinbMNbrfbrgbpzbrhbrebribrjbrkbrlbrmbrnbrobrpbrqbrrbrsbllahyahybambrtbrubrvaZyahyahyahyahyahyahyaahaahbjWbjWbpHbukbukbpIbpJbpIbonbukbpObjWbjWaahaahaZdaZHaZdahybcyaTsbrBdCDdCLbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGdCHdCCbrCbdBbcyahyaTobrEaYHbrFbrGahyahybeZbfTblFbrHbeZbrIbrJbvUbrLbEEblMbrNbrObrPbrQbrRbrSbrTbrSbrSbrSbrUbrVbrWbrXbrYbrZbrYbsabrYbrYbsbbscaCrbsebsfbsgbsgboOaZWaZmaahbgmboPbshboRbkHbmibsibsjbskbslbmmbmmbsmbkHbuYbmmbsobspbmiboZbsqbgmaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaaaaadaadaaaaadaadaadaaaaadaadaadaaaacAaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsrahyahybssbmqbstbpcbpcbmqbsubsvbswbsxbsybszbsAbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbkPbsBbfubsCbdTbekbsEbsFbsFbsGbsHbsIbsJbrlbsKbrnbsLbsMbsNbrrbsObsPahyahybamaZzbcnbhrbamahyahyahyahyahyahyaahaahbjWbjWbjWbukbukbpKbpLbpKbonbukbjWbjWbjWaahaahaZdaZHaZdahyaZIbdqbbEbsVdCDdCLbbIbbJbbKbbGbbGbbGbbIbbJbbKdCHdCCbrCbbEbdqaZIahyaZPaYGbetaUwbrGahyahybeZbeZbsWbeZbeZblMblMblMbsXbsXbsXbsXbsYbsZbsXbsXbtabtbbtcbtdbtdbtebtfbtbbtgbthbtibtjbtkawrbtmboObtnaCsaCuaCtaCuaDwboOaZWaZmaahbgmbtsbttbnBbtubnDbtvbnDbtwbmmbtxbmmbtybkJbyTbijbtzbtAbtBbtCbtDbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaacAaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaabtEbtFbtGaaaacAaadaadaaaaaaaaaaaaaaaaaabtHbtIbtJbtKaaaaaabtLbtMbtNbtLbtLbtObnPbnQbtPbtQbnPbtRbnTbkPbkPbkPbtSbnTbkPaahaahaahaahaahaahaahaahaahaahaahbdTbtTbtUbtVbMKbtWbtXbtYbpzbtZbeEbuabubbucbudbuebufbufbufbugbuhbuiahyahybamaZzbcnbhrbamahyahyahyahyahyaahaahaahbjWbjWbjWbpMboobpIbpIbpIbqHbpNbjWbjWbjWaahaahaZdaZHaZdahyahybbMbaMbbEbsVdCDdCNdCPdCOdCzdCzdCzdCNdCPdCOdCCbrCbbEbaybbDahyahybaNbdubdvbunbrGahyahybuoberbuqburbusbutbuubuvbsXbuwbuxbuybuzayjaykbuCbuDbuEbuFbuGbuHbuIbtfbHXbuKbuLbuMbuNbuObuLbuNboObwxbuQbuRbuSbuTbuUboOaZWaZmaahbgmbgmbifbuVbkHboSbuWbmmbmfbmmbmmbtCbuXbkJbCQbwubuZbvabsmbvbbgmbgmaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaacAaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadbtEbvcbtGaadacOaaaaadaadaaaaaaaaaaaaaaabtHbtHbvdbvebtHbvfbvgbvhawxbvjbvkbkPbmobmpbmqbmpbmobkRahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahaahbdTbvlbvmbvnbMNbvobvpbvqbvrbMKbvsbvtbvubvvbvwbvxbvybvzbvAbvBbvCbllahyahybaiaZzbMObhrbaiahyahyahyaahaahaahaahaahaahbjWbjWbrwbrxbukbrzbrybsQbrMbjWbjWaahaahaahaZdaZHaZdahyahyahybbMaZLbaJbgEbgEbvGbvHbiEbhzbiEbvKbvLbgEbgEbiGaZJbbDahyahyahybbNaYGbRLaUwbvNahyahybvObosbuqbvQboNbvSbvTbxbbsXanvbvWbvXbvYbvYbvZbwabwbbwcbwdbwebwebwfbwgbQwbwibwjbwkbwlbwmbwnbwoboObwpbwqbwrbtqbwsbwtboOaZWaZmaahaahbgmbgmbgmbgmbAQbwvbwwbmfbyUbwybwzbkJbkJbGRbkJbwAbwBbwCbgmbgmaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaadaadaaaaaaaaaaaabtHbwDbwEbwFbtHbwGbwHbwIbwJbwKbwLbkObkPbkRbkQbkSbkPbkPaahaahahyahyahyahyahyahyaahaahbwMbwMbwMbwMbwMbwMbwMbwMbwMbwNbwObwPbdTbrAbwRbwSbwTbMNbwUbuabsCbucbwVbwWbwXbllbwYbwZbwYbllahybeebeeblmblnblobboahyahyaahaahaahaahaahaahaahbjWbjWbjWbjWbsRbsTbsSbjWbjWbjWbjWaahaahaZdaZdaZHaZdaZdahyahyahyaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIaZIaZJaZKaZLaZIahyahyahyahyaToaZjblDaZlaToaToahybxcbxdbxebvSbxfbxgbxhbxibsXanAbxkbxlbxmbvYbvYbxnbqhbxpbxqbthbthbxrbtfbxsbxtbxubxvbxwbxxbADbvRboOboOboOboObxAboOboOboOaZWaZmaahaahaahaahaahbgmbxBbxCbkJbxDbkJbxBbxEbkJbxFbxGbkJbxHbxIbkJbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaaaaadaadaaaaaaaaabtHbxJbxKbxLbtHdDfbxMbxNbxObxPbxQbtLaahaahaahahyahyaahaahahyahyahyahyaahaahaahaahbwMbwMbxRbxSbxTbxUbxVbxWbxXbwMbxYbxZbyabdTbybbycbydbyebdTbyfbuabygbyhbyhbyhbyhbyhbyibyjbykbyhbfzbeebylaZzbcnbymbboaZdaahaahaahaahaahaahaahaahaahbjWbjWbjWbvDbjWbjWbjWbjWbjWaahaahaZdaZdaZGaZHaZGaZdaZdahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaZdaTobbObynbiPbyoaTobypbyqbyrbysbytbyubyvbywbyxbyybyzbyAbyBbyCbvYbxobsXbyEbtbbyFbyGbyHbyIbyJbyKbyLbyMbyNbxybyPbyQbyRbySbIxbCLbyVbyWbyXbyYbySaZWaZmaahaahaahaahaahbgmbyZbzabzbbzcbzdbzebzfbzgbzhbzibkJdkQbzkbzlbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaabtEbvcbtGaaaaadaaaaaaaaaaaaaadbzmbznbznbznbznbzobtHbtHbtLbzpbzqbzrbzsawybtLaahaahaahaahahyahyahyahyahyahyaahaahaahaahaahbwMbzubzvbzwbzxbzybzzbzAbzBbzCbzDbzEbzFbzGbzHbzIbzJbzKbzLbzMbzNbzObzPbzQbzRbzSbzPbzTbzUbzVbzWbzXbzYbecbajbhqbhrbzZaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaahaahblubxablubluaZdaZdaZdaZdaZdaZdbAabAbbAcbAdaZGaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdaZdbAebAfbAgbAhaUvbAibAjbAkbvSbAlbvSbAmbxgbAnbAobuCbApbAqbArbAsbAtbAubuCbAvbAwbqmbAxbAxbAybtfbAzbwibAAbABbACbADbAEbAFbySbAGbAHbAIbyWbyWbAJbySbAKaZmaahaahaahaahaahbgmbgmdkRbAMbANbAObAPcBYbARbASbATbAUbAVbAWbAXbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaaaaaaaaabAZbBabBbbBcbBdbBebBfbBgbBhbBibtLbBjbBkbBlbBmbztbtLaahaahaahaahaahahyahyahyahyaahaahaahaahaahaahbwMbBnbzwbBobBpbBqbBrbBsbBrbBtbBubBvbBwbBxbjJbBybjJbBzbjJbjJbBAbBBbBCbBDbBEbBFbBGbBHbBIbBJbBKbBLbBMbBNbBObBPbBQbBRbBSbBTbBUbBUbBUbBUbBVbBUbBWaZdaZdaZdaZdbBXaZdaZdaZdbBYbBZbBZbBZbBZbBZbCabCbbCcbCdbCdbCdbCdbCdbCdbCdbCebCdbCdbCdbCfbCgbCgbCgbCgbCgbCgbCgbCgbChbCgbCibCjbCkbClbCmbbRbCnbCobCpbCqbCrbvQbCsbvSbCtbCubwabCvbCwbCxbCzbyDbCybwabCBbCCbCDbCEbCEbCFbCGbwhbxtbCHbCIbCJbCKbIcbySbySbCMbCNbCObCPbyWbAJbySbAKaZmaahaahaahaahaahaahbgmbgmbgmbJJbCRbgmbgmbgmbgmbgmbgmbCSbCTbgmbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadbCUbCVbCVbCVbAYbCVbCVbCVbAYbCVbCVbCVbAYbCVbCVbCVbAYbCVbCVbCVbCVbCVbCZbDabDbbDcbDdbDebDfbDgbDhbDibDjbtLbtLbDkbtLbtLbDlbtLaahaahaahaahaahaahaahahyahyaahaahaahaahaahaahbwMbDmbDnbDobDpbDqbDrbDsbDtbwMbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDEbDFbyhbDGbDHbDIbDJbDKbDLbzVbzWbzXbzYbecbecbDMbDNbDOaZdbDPbDQbDRbDSbDTbDUbDVbDWbDXbDYbDZbEabEbbBUbBUbBUbEcaZdaZdaZdaZdaZGbEdbEebEfbEgbEgbEgbEgbEgbEgbEgbEhbEgbEgbEgbEibEjbEjbEjbEjbEjbEjbEjbEkbiDbjYaZdbElaYGbetbEmaVlbEnbEobEpbEqbErbEsbEtbEubEvbEwbsXbsYbsZbExbsYbEybsZbsXbEzbtbbyFbyGbyHbEAbtfbEBbuKbECbEDbuKbySbySbySdBabEFbEGbEHbEIbyWbAJbySbAKaZmaahaahaahaahaahaahaahbgmbEJbEKbELbgmaahaahaahaahbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaaaaaaaaabAZbBabENbEObEPbEQbznbERbESbETbEUbEUbEVbEWbtHbEXbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbEYbEZbFabFbbFcbFdbFebFfbwMbFgbfubFhbFibFjbFkbFlbFmbFibFnbFobFnbyhbyhbyhbyhbyhbrDbFqbFrbyhbfzbeebFsbecbcnbFtbboaZdbFubFubFubFubFubFubFvbFwaZdbFxbFybFxaZdbFzbFAbFBbFCaZdaahaahaZdaZdaZGaZHaZGbFDbFEbFFbFGbEgbFHbFIbFJbFJbFKbFLbFMbFObFNbFPbFNbHvbHubEjbFQbEjaZdaZdaTobFRbgJaUvbFSaTobypbyqbFTbAlbFUbFVbFWbFXbEqbFYbFZbGabGbbGcbGdbGebGfbGgbGhbGibGjbGjbGkbGlbtbbGmbGnbGobGpbySbGqbGrbGsbGtbGubGvbGwbyWbAJbySaZWaZmaZmaahaahaahaahaahaahbgmbxzbGybGzbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaadbtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaaaaaabGBbznbznbznbznbtHbtHbGCbGDbDibGEbGFbGGbGHbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbwMbwMbGIbGJbGJbGJbwMbwMbwMbGKbGLbyfbGMbGNbGObGPbGQbFibGSbGUbGTbGWbGVbIsbGXbGYbFnbGZbFnbGYahybeebeebHabcnbecbHbbHcbFubHdbyObHfbHgbFubFubFubFuawzbHibHhbHjbHjbHkbHlbHjbHmaahaahaahaZdaZdaZHbEgbEgbHnbHobHpbEgbHqbHrbHsbHsbHsbHtbHwbHybHxbHxbHzbKBbJbbHAbHBbEjahyahyaToaZjblDbHCaToaToahybxcbHDbHEbCqbHFbHGbHHbCqbHIbHJbHKbHLbHMbHNbHMbHObHPbHPbHQbHPbHPbHRbHSbHTbHUbHVbHWdBkbySbHYbHZbIabGtbGubGvbIbbyWbAJbySbbbbJraZmaahaahaahaahaahaahbgmbHebIedGPbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaahaahaahaahaahaahaahaahbtHbtHbtHbtHbtHbIgbIhbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbIjbGJbGIbGJbGJbGJbGJbIkbwMbIlbfubImbInbIobIpbIqbIrbFibItbIAbIybIubIubIwbIubJXbJWbIzbJYbKcahyahybIBbecbRQbecbICbHcbIDbIEbIFbIFbIGbIHbIIbIJbFuaxjaxibIMbHjbINbIObIPbHjaahaahaahaahaZdaZGaZHbEgbIQbIRbISbITbEgbIUbIVbIWbFJbFJbIXbIYbIZbJabJabJabJabJabJbbJcbJdahyahybJeaYGbRSaUvbpPahyahybuobosbvSbvSbJfbJgbvSbvSbJhbJibJjbJkbxqbJlbJmbJnbthbJobJpbJqbKLbJsbJtbJubJvbJwbJxbJybJzbJAbJBbJCbJDbJEbJFbJGbJHbJIbySbglbfpaZmaahaahaahaahaahaahbgmbgmbLDbJKbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaacAaaaaaaaahaahahyahyahyahyahyahyahyahyaahaahaahbtHbtHbJLbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbJMbGJbJNbJObGJbGJbGJbIkbwMbJPbtUbJQbJRbJSbIdbJUbJVbFibGYbKabJZbIubIubIubIubKbbIubIubLzbLAahyahybKdbecbcnbecbKebHcbKfbKgbKhbKibKjbKhbKhbKkbFubKlbILbKmbHjbKnbKobKpbHjaahaahaahaahaZdbKqaZHbEgbIQbKrbKsbKtbEgbKubKvbKwbFJbKxbKycuybKAbJabJabJabJabJabKBbKCbKDahyahybrGbKEbynbKFbrGahyahybvObsDbKHbKHbKIbKKbMHaGMbKNbKNbKObKPbKQbKRbKNbKSbKTbKUbKVbKSbKWbKWbKWbKWbKWbKXbKYbKZbLabySbySbySbySbySbySbySbySbySbySbLbbLcaZmbLdbLebLebLebLdbLdbLfbLgbLhbLibLfbLdaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadacAaaabLjaahbLkbLkbLlbkQbkQbkQbLmbLkbLkahyaahaahaahbtHbLnbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbLobLpbLqbGJbLrbGJbLsbwMbwMbLtbfubImbFibLubLvbLwbLxbLybGYbLCbLBbIvbIubIubIubKbbIvbIubLEbLAahyahybKdbLGbhqbecbKebHcbLHbLIbKhbLJbLKbLLbLMbLNbLObLPbLQbLRbLSbLTbLUbLVbHjaahaahaahaahaZdaZdaZHbEgbEgbLWbEgbEgbEgbLXbLYcAgbMabKxbMbcuBbMdbMebMfbMgbMhbKBbKBbMibKDahyahybvNbMjbgJaUvbvNahyahybMkbMlbMmbKJbOcbMkbMkbMkbMkaPubMqbMrbMsbMtbMsbKSbMubMvbMwbMxbKWbMybMzbMAbMBbMCbMDbMEbMFbMGbOdbMIbMJbRXbMLbMMdFecbabUSbMQbMRbMSbMTbMUbMVbMWbMXbMYbMZbNabNbbNabNcbLdaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaaaadaadbLjaahbLkbNebNfbNgbNfbNgbNfbNebLkahyahyaahaahbtHbNhbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahbtHbtHbtHbwMbwMbwMbwMbwMbwMbwMbwMbwMbNibNjbfubyfbGMbNkbNlbNmbLxbNnbGYbPkbNsbRfbPnaxraxUbRibRfbRkbRjbLFahyahybKdbecbDMbDNbKebNtbFubNubKhbNvbNwbNxbKhbNybFubNzbNAaGUbNCbNCbNCbNCbNCbNCbNCbNCaahaahaZdaZHbEgbNDbNEaylbQAbNHbFJbFJbNIbFJbNJbEgbNKbNLbNMbNNbNObKBbNPbNQbNRbNSahyahyaTobNTbetbNUaToahyahybMkbNVbNWbNXbNYbSkbUXbMnbMobNBbMqbMrbOebOfbOgbKSbOhbOibOjbOkbKWbOlbOmbOnbOobOpbOqbOrbOsbOtbOtbOubOvbOqbOtbOwbOtbOxbOybOzbOAbOBbOCbODbOEbOEbOFbOEbOGbOHbOIbOJbOKbLdaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaahaahaahbOLbOMbONbOObOPbOQbOLbORahyahyaahaahbtHbOSbIibOTbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbOUbOVbOWbOXbOYbOZbzHbPabPbbPcbPdbPebPfbPgbImbInbIobPhbPibLxbPjbGYbSRbSQbSSbNqbNqbNrbNpbSSbRlbSTbGYahyahybKdbecbcnbecbPobHcbFubPpbKhbPqbPrbPsbKhbPtbFubPubPvbPwbNCbPxbPybPzbPAbNCbPBbNCbNCaahaZdaZHbEgbPCbPDbPEbPEbPFbPEbPEbPGbFJbPHbEgbPIbPJbPKbPLbPMbPNbPIbPJbPKbEjbPObPPaToaZjblDbHCaToaToahybMkbPQbPRbPSbPTbPUbPVbPWbPXbPYbPZbQabQbbQcbQdbKSbQebQfbQgbQhbKWbQibQjbQkbMBbQlbQmbQnbQobQpbQqbQrbQsbQtbQpbQubQvdGRbMPbMQbQxbQybQzbMUbMVbWWbQBbOJanDbQDbQEbOJcAfbLdaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaivaadaaaaadaaaaaaaaabAZbBabENbEObEPbEQbznbERbESbETbEUbEUbEVbEWbtHbEXbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbEYbEZbFabFbbFcbFdbFebFfbwMbFgbfubFhbFibFjbFkbFlbFmbFibFnbFobFnbyhbyhbyhbyhbyhbrDbFqbFrbyhbfzbeebFsbecbcnbFtbboaZdbFubFubFubFubFubFubFvbFwaZdbFxbFybFxaZdbFzbFAbFBbFCaZdaahaahaZdaZdaZGaZHaZGbFDbFEbFFbFGbEgbFHaylbFJaLTaLSbFLbFMbFObFNbFPbFNbHvbHubEjbFQbEjaZdaZdaTobFRbgJaUvbFSaTobypbyqbFTbAlbFUbFVbFWbFXbEqbFYbFZbGabGbbGcbGdbGebGfbGgbGhbGibGjbGjbGkbGlbtbbGmbGnbGobGpbySbGqbGrbGsbGtbGubGvbGwbyWbAJbySaZWaZmaZmaahaahaahaahaahaahbgmbxzbGybGzbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaadbtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaaaaaabGBbznbznbznbznbtHbtHbGCbGDbDibGEbGFbGGbGHbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbwMbwMbGIbGJbGJbGJbwMbwMbwMbGKbGLbyfbGMbGNbGObGPbGQbFibGSbGUbGTbGWbGVbIsbGXbGYbFnbGZbFnbGYahybeebeebHabcnbecbHbbHcbFubHdbyObHfbHgbFubFubFubFuawzbHibHhbHjbHjbHkbHlbHjbHmaahaahaahaZdaZdaZHbEgbEgbHnbHobHpbEgaMnbHrbHsbHsbHsbHtbHwbHybHxbHxbHzbKBbJbbHAbHBbEjahyahyaToaZjblDbHCaToaToahybxcbHDbHEbCqbHFbHGbHHbCqbHIbHJbHKbHLbHMbHNbHMbHObHPbHPbHQbHPbHPbHRbHSbHTbHUbHVbHWdBkbySbHYbHZbIabGtbGubGvbIbbyWbAJbySbbbbJraZmaahaahaahaahaahaahbgmbHebIedGPbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaaadaaaaaaaaaaahaahaahaahaahaahaahaahbtHbtHbtHbtHbtHbIgbIhbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbIjbGJbGIbGJbGJbGJbGJbIkbwMbIlbfubImbInbIobIpbIqbIrbFibItbIAbIybIubIubIwbIubJXbJWbIzbJYbKcahyahybIBbecbRQbecbICbHcbIDbIEbIFbIFbIGbIHbIIbIJbFuaxjaxibIMbHjbINbIObIPbHjaahaahaahaahaZdaZGaZHbEgbIQbIRbISbITbEgaMWbIVbIWbFJbFJbIXbIYbIZbJabJabJabJabJabJbbJcbJdahyahybJeaYGbRSaUvbpPahyahybuobosbvSbvSbJfbJgbvSbvSbJhbJibJjbJkbxqbJlbJmbJnbthbJobJpbJqbKLbJsbJtbJubJvbJwbJxbJybJzbJAbJBbJCbJDbJEbJFbJGbJHbJIbySbglbfpaZmaahaahaahaahaahaahbgmbgmbLDbJKbgmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaabtEbGAbtGaaaacAaaaaaaaahaahahyahyahyahyahyahyahyahyaahaahaahbtHbtHbJLbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbJMbGJbJNbJObGJbGJbGJbIkbwMbJPbtUbJQbJRbJSbIdbJUbJVbFibGYbKabJZbIubIubIubIubKbbIubIubLzboTahyahybKdbecbcnbecbKebHcbKfbKgbKhbKibKjbKhbKhbKkbFubKlbILbKmbHjbKnbKobKpbHjaahaahaahaahaZdbKqaZHbEgbIQbKrbKsbKtbEgbKubKvbKwbFJbKxbKycuybKAbJabJabJabJabJabKBbKCbKDahyahybrGbKEbynbKFbrGahyahybvObsDbKHbKHbKIbKKbMHaGMbKNbKNbKObKPbKQbKRbKNbKSbKTbKUbKVbKSbKWbKWbKWbKWbKWbKXbKYbKZbLabySbySbySbySbySbySbySbySbySbySbLbbLcaZmbLdbLebLebLebLdbLdbLfbLgbLhbLibLfbLdaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadbtEbGAbtGaadacAaaabLjaahbLkbLkbLlbkQbkQbkQbLmbLkbLkahyaahaahaahbtHbLnbIibtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbwMbLobLpbLqbGJbLrbGJbLsbwMbwMbLtbfubImbFibLubLvbLwbLxbLybGYbLCbLBbIvbIubIubIubKbbIvbIubLEboTahyahybKdbLGbhqbecbKebHcbLHbLIbKhbLJbLKbLLbLMbLNbLObLPbLQbLRbLSbLTbLUbLVbHjaahaahaahaahaZdaZdaZHbEgbEgbLWbEgbEgbEgbLXbLYcAgbMabKxbMbcuBbMdbMebMfbMgbMhbKBbKBbMibKDahyahybvNbMjbgJaUvbvNahyahybMkbMlbMmbKJbOcbMkbMkbMkbMkaPubMqbMrbMsbMtbMsbKSbMubMvbMwbMxbKWbMybMzbMAbMBbMCbMDbMEbMFbMGbOdbMIbMJbRXbMLbMMdFecbabUSbMQbMRbMSbMTbMUbMVbMWbMXbMYbMZbNabNbbNabNcbLdaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaabtEbNdbtGaaaaadaadbLjaahbLkbNebNfbNgbNfbNgbNfbNebLkahyahyaahaahbtHbNhbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahbtHbtHbtHbwMbwMbwMbwMbwMbwMbwMbwMbwMbNibNjbfubyfbGMbNkbNlbNmbLxbNnbGYbPkbNsbRfbPnaxraxUbRibRfbRkbRjbLFahyahybKdbecbDMbDNbKebNtbFubNubKhbNvbNwbNxbKhbNybFubNzbNAaGUbNCbNCbNCbNCbNCbNCbNCbNCaahaahaZdaZHbEgbNDbNEaMYaMXbNHbFJbFJaMZbFJbNJbEgbNKbNLbNMbNNbNObKBbNPbNQbNRbNSahyahyaTobNTbetbNUaToahyahybMkbNVbNWbNXbNYbSkbUXbMnbMobNBbMqbMrbOebOfbOgbKSbOhbOibOjbOkbKWbOlbOmbOnbOobOpbOqbOrbOsbOtbOtbOubOvbOqbOtbOwbOtbOxbOybOzbOAbOBbOCbODbOEbOEbOFbOEbOGbOHbOIbOJbOKbLdaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaahaahaahbOLbOMbONbOObOPbOQbOLbORahyahyaahaahbtHbOSbIibOTbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbOUbOVbOWbOXbOYbOZbzHbPabPbbPcbPdbPebPfbPgbImbInbIobPhbPibLxbPjbGYbSRbSQbSSbNqbNqbNrbNpbSSbRlbSTbGYahyahybKdbecbcnbecbPobHcbFubPpbKhbPqbPrbPsbKhbPtbFubPubPvbPwbNCbPxbPybPzbPAbNCbPBbNCbNCaahaZdaZHbEgbPCbPDbPEbPEbPFbPEbPEaNabFJbPHbEgbPIbPJbPKbPLbPMbPNbPIbPJbPKbEjbPObPPaToaZjblDbHCaToaToahybMkbPQbPRbPSbPTbPUbPVbPWbPXbPYbPZbQabQbbQcbQdbKSbQebQfbQgbQhbKWbQibQjbQkbMBbQlbQmbQnbQobQpbQqbQrbQsbQtbQpbQubQvdGRbMPbMQbQxbQybQzbMUbMVbWWbQBbOJanDbQDbQEbOJcAfbLdaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczaczacAaczaczacOacAaadaadaadaadaaaaaaaaaaadaadaadacOaadaaaaahaahaahbNgbQFbQGbQHbQHbQIbNgahyahyahyaahaahbtHbQJbQKbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQLbQMbQNbQObQPbQQbQRbQSbQTbQUbQVbQWbQXbQYbQZbyfbJRbRabRbbRcbRdbRebGYbNobNpbNpbNpbNpbNpbNpbNpbRlbSUbGYahyahybKdbecbcnbRmbRnbRobRpbRqbRrbRsbRtbRubRvbRwbFubRxbPvbRybNCbRzbRAbRBbRBbRCbRDbREbNCaahaZdaZHbEgaynbRGbFJbRHbRIbFJbFJbFJbFJbRJbEgbupbTlbTkbRNbRObRPbRObRPbvEbRTbRUbRUbRVbRWbetaUvbvFaToahybMkbRYbRZbSabNWbSbbScbSdbSebSfbSgbShbSibMpbvIbKSbXibQfbSlbSmbKWbKWbKWbKWbKWbSnbSobSpbSpbSpbSpbSpbSqbSrbSqbSqbSqbSqbSqbSsbStbSubSvbSwbSwbSwbLdbLdbSxbSycNtbSxbLdbLdaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbOLbSAbQGbQHbQHbSBbOLbORahyahyaahaahbtHbSCbIibSDbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbtHbSEbSEbSFbSGbSEbSHbSIbSJbSKbSLbSMbSNbSObSPbSLbSLbSLbSLbSLbGYbUDbPlbPmbNpbNpbSzcpCcpubRlbXTbGYahyahybKdbecbcnbSVbbobbobFubFubFubFubFubFubSWbFubFubSXbSYbSZbNCbTabTbbTcbTdbNCbTebTfbNCaahaZdaZHbEgbFLbvJbEgbEgbThbTibTibTibTibEgbEgbTjbTkbTlbTmbTnbTkbTlbTkbTobTpaUvaUvaUvaUvbTqbTrbTsaToahybMkbGxbTubTvbTubTtbScbTxbTybVhbTAbTBbTCbTDbTEbKSbTFbTGbTHbTIbTJbTKbTLbTMbTNbTObTPbTQbTRbTSbTTbSpbTUbTVbTWbOabTXbTZbSqbUabUbbSubUcbUdbUebSuaahaahbSxbUfbUgbSxaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahbLkbNebNfbNgbUhbNgbNfbNebLkahyahyaahaahbtHbtHbIibtHbtHaahaahaahaahaahaahaahaahaahaahaahaahaahaahbSEbUibUjbUkbUlbSEbUmbUnbUnbUobUpbUqbUrbUsbUtbUubUvbUwbUxbGYbXUbRgbYYbNpbNpcbIbRgcGibRlcGQbGYahyahybKdbecbcnaZzbUFahybUGbUHbUIbUJbUKbULbULbUMbUGbUNbUObUPbNCbNCbUQbNCbNCbNCbNCbNCbNCaahaZdaZHaZdbvMbUTbUUbUVbUWbUWbUWbUWbUWbYobUYbTkbTlbUZbVabVbbVcbTkbTlbVdbVeaUvaUvbVfbVgbdvaUvbvPaToahybMkbVibVjbVkbVlbVmbVnbVobVpbVqbVrbVsdGSbKNbKNbKSbKSbKSbKSbKSbTJbVtbVubVvbVwbVxbVybVzbVAbVBbVCbSpbVDbVEbVFbVGbVGbVHbSqbVIbVJbSubVKbVLbVMbSuaahaahbSxbVNcAhbSxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9828,106 +9849,106 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcjgcjOcjPcjgbVScjQbVQcjRbVScjQbVQbZUchYapCcjTchYcjUchYcjVcjWcjXcjqaahaahamYamYamYamYapFamYamYamYamYaahaahaahaahaahaahaahbZXbZXcjucjYbZXcjZbYlbZXaahahyahyahyahycjzcjzckbckcckdckeckfcjzcjzahyahyahyahyahybbobbockgblnccHbbobboahyahyahyckEahyahyahyahyahyahyahyahyahyahyahyahyckEahyahyahyciFciFckicfQcfRciFciFaahaahaahahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyciFciFckjckjckkciFciFahyahyahyahyapGapAapGahyahyahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcbccbccbccbccbccbccbccbccbccbccbccbcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjgcjgcklckmcknckockpckqckrckscktckuckvckwckxapHckzchYckAchYckBckCckDcjqaahaahamYaqwapIapRapQapSanCaqwamYaahaahaahaahaahaahaahaahbZXcjubZXbZXbZXbZXbZXahyahyckKckFckFckGckHckIckIckIckIckIckIcjzahyahyahyahybbobbodETcimbcnbecbDObboclmckLckMciFclmckLckLckLckLckLckLckLckLckLckLckMciFclmckLckMciFckNckOckPcfRckQciFciFciFciFciFclmckLckLckLckLckLckLckLckLckLckLckRciFclmckLckRciFckScfRcfRckTckUciFciFahyahOahOahOapXahOahOahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjgckVckmcknckWckXckYckZclaclbchVclccldclecleclfclgclhcjUchYclicljclkcjqaahaahamYaqwaoDaoDaqlaqnaqmaucamYaahaahaahaahaahaahaahaahbZXcjubZXaahaahaahaahahyahyclYclncloclpclqclrclscltcluclvclwcjzahyahyahyahyaZycrkbecclyclzclAclAclBclCclCclCclDclCclEclCclCclFcfRcfRcfRcfRclGclHclIclJclIclIclIclKclLclMclNclIclIclKclIclOclIclPclIclQclIclIclIclIclIclQclRclIclSclIclTclIclQclIclKclIclUclUclVclWbKGcmpahyahOaqoaieaqsaqpaqtahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcsTcknckncmacmbcmcbZUbZUcmdbZUbZUchYcmeclecmfcmgcmhcmichYcjqcjqcjqcjqaahaahamYaqvaoDaqwaqxaqwaoDaqyamYcmjcmjcmjcmjaahaahaahbZXbZXcjubZXdEldEldEldElahyahycmRcmqcmrcmscmtcmtcmucmvcmwcmtcmxcjzahyahyahyahybambisbeccimcsUbecbeccmzcfRcfRcfRcfRcmAcmBcmBcmBcmCcmDcmDcmDcmEcmDcmFcmDcmGcmDcmDcsVcmHcmIcmJcmKcmDcmDcmHcsZcmDcmDcmLcmDcmDcmDcmMcmDcmDcmDcmDcmGcmDcmDcmDcmEcmDcmDcmDcmHcmNcmBctacmOcmPcmQcncahyahOaieaieaqzaieaqAahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMbZMciVbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcmScmTcmUcmVcmWcjgcmXbObcmZcnacnbcnScndcnecnfcngcnhcmichYaahaahaahaahaahaahamYartaoDaqwaqBaqwaoDanFamYcnicnjcnkcmjaahaahaahbZXcnocjubZXbWTckJccqdEldElahyclYcnpcnqcnrcnsckIcntcnucnvckIcnwcjzahyahyahyahybaibjQbeccimbDMbDNbeccmzcfRcnxcfRcnycnzcnAcnBcfRcnCcnxcfRcfRcnDcnxcnEcfRcnFcfRcnxcfRcjKcnGchicnHcevcevcnIcevcnJcevcnKcnMcevcnLcxCcevcnJcevcevcevcevcnJcevcnNcevcevcevcnIcnOcnQcnPcnRcfRbKGcodahyahOaqDaqCaqZaqEaraahOaahaahaahaahaahaahbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcnTciVcgnbZMbZMbZMbZMbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjaahaahcjgcnUckXcnVcnWcnXcnYcnZcoacobcoacoccoocoecleclecofchYbRKchYaahaahaahaahaahaahamYanBarbardarcaoDaoDaqwamYcogcohcoicmjaahaahaahbZXconcjubZXclxcrlcmycrqdElahycowckFckFcopcoqckIckIcorckIckIcoscjzahyahyahyahybbobbocotcimbcnbeccoAbboclmckLckMciFclmckMciFcovcoGcoxcoycozcoScoxcoBcovciFclmckLckMciFcoCckicoDcmBcoEciFclmckLckMciFciFclmckLckMczAclmckLckMciFciFdCQckMciFclmckLckMciFcoFckickicfRcoXciFciFaahahOareaiearfaieargahOaahaahaahaahaahbZMbZMcoHcoIcoJcoJcoJcoJcoJcoJcoJcoJcoKcoLcoLcoLcoMcoNcoObZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbLjaahaahcjgcoPckncoQcmacoRcpqcoTcoUcoVcoacoWcpPcoYcoZcpacpbchYcpcchYaahaahaahaahaahaahamYariarharkarjarmarlarnamYcpdcohcpecmjaahaahaahcpjbZXarqbZXcpjcvVcrrcvWdElahyahyahyahycjzcplcpmcpncpocppcpTcprcjzahyahyahyahyahybbobbocpscptcmzbbobboahyahyahyahyahyahycovawtcpvcpwcpxcpycpzcpAcpBawucovahyahyahyciFciFcpDcpEckjciFciFahyahyahyczZcEVcEVcEVcEvcEvcEvcEVcEVcEWczZahyahyahyahyahyahyciFciFcjIcjIcjKciFciFaahaahahOahOaiaarraidahOahOaahaahaahaahaahbZMcpFcpGcpHbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcpIcoMcpJbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahcjgcpKcpLcpMcpNcpOcqecpQcoacpRcoacpSchYcqzcpUcqzcpVcpWchZchYcpXcpXcpXcpXcpXcpXamYamYarsauQaruauRarvamYamYcmjcpYcmjcmjcpXcpXcpjcpjcFucFrcqdcpjdElcxWcyjdElcrIcqfcqfcqgcjzcjzcjzcjzcqhcjzcjzcjzcjzcrIcqfcqfcqfcqgcpjcqicqjcqkcqlcqmcpjcpjahyahyahyahyahycovcqncqocqpcqqcqrcqscrJcpBcqucovahyahyahyahycqvcqwcqxcqycqvahyahyahyahyczZcuIarwcxUcEvcEvcEVcEVcEVcIFczZahyahyahyahyahyahyahycrNckicqAcqBciFaahaahaahaahahOahOahOahOahOaahaahaahaahaahaahbZMcqCcgnbZMbZMaahaahaahaahaahaahaahaahaahaahaahbZMbZMcgncqDbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahcjgctxckncqFcqGcqHcqIcqJcqJcqKcqLcqMcqNcqOcqOcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqYcqZcqOarxcracqYcqYcqYcqYarycqOcrdarzcrfcrgcrhcricrjcMIcMjcrmcrncrocOZcrudBNcrscrtcrucrucrvcrucricrwcrxcrycrzcrAcrBcrAcrCcrAcrDcrAcrzcrAcrEcrFcrGcrucrHcrRahyahyahyahyahycrWcqtcrKcrLcrLcrMcrLcrLcpBcqtcrWahyahyahyahycsKcrOcrPcqycsKahyahyahyahycIHcEVcEVcEVcEVcEVcEVcEVcEVcJKcrQcrQcrQcsLcrScrTcrUcrQcrQctccsNctccrQcrQcrQcrQaahaahaahaahaahaahaahcrXcrXcrXcrXcrXbZMcrYcrZcrZcrZcrZcrZaahaahaahaahaahaahaahcsacsacsacsacsacsbbZMcsccsccsccsccscaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahcjgcsdcknckncsecsfcsgcshcshcsicshcsjcskcslcsmcsncsncsncsocspcsqcsrcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsucsvcswcsxcsycswcswcsvdBPcswcswcszcsAcsBcrucrucrucricrucsCcswcsDcswcsEcswcswcswcsFcswcsvcswcsGcsHcsIcrucsJcsRahyahyahyahyahyctmcqtcrKcrLcsMcsMcsMcrLcpBcqtctmahyahyahyctucsOcrOcsPcsQcumcsSahyahyahycMYcEVcEVcDncEVcEVcEVcEVcFecrQcrQcwtctdcsXcwtcwvcsXcsYcwwctbcsYctbctecxOcwxcrQcrQaahaahcrXcrXcrXcrXcrXctfctgayocrXctictjcrZayqctlcurcrZcrZcrZcrZcrZcsacsacsacsactnctoayscsactqctrcscayvcttcuTcsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaabLjbLjcjgctvctwcALctycmacjgbRMctActBctCctDctEctFctGctHcrfcrfcrfctIctJctKcrfctLctMctNcrfctFctOcrfcrfctPctQctRctSctTctQctQctUctVctWcrocrpctXctYctZcuacubdCbcuadCfcuacuccudcuacuacuacubcuecufcuacubcuacugcuacuhcuicuacuacubcuacujcrucukcruculcuYahyahyahyahyahyctmcuncuocrLcsMcupcsMcrLcuqcunctmahyahyahycvacqycrOcrPcqycqycvaahyahyahycMYcJacEVcLvcEVcQdcEVcEVcEVcrQcxScsYcwrcwscwscwscwscwscwsczmczlczoczncPbcPbcBjcrQaahaahcrXcuucuvcuucrXcNfcuxdGMcrXcuzcuAcrZcuNcuCcuDcrZcuEcuFcuEcrZcuGcuHcuGcsacOScuJdHccsacuLcuMcsccwEcuOcuPcsccuQcuRcuQcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadcuScuScvgcuUcuScuVcuWcuScuScuScuXcvocuZcuXcvrcvbcuXcvccvdcvecvfcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpjcvNcvhcrFcvicvjcpjcpjcpjcpjcrIcqfcqfcqfcqfcqgcpjbRRcvlcqdcpjcrIcqfcqgcpjcrIcqfcqgcpjcvmcrucrucrGcvncpjcpjahyahyahyahyahycwjcvpcuocrLcrLcrLcrLcrLcuqcvqcwjahyahyahycqvcwqcrOcrPcqycvscqvahyahyahycRUcWRcEVcEVcEVcEVcEVcEVcWRcrQcBkcsYcsYcsYcvucvucvucvucvuctbcDpcwzcsYcsYcsYcducrQaahaahcrXcvwcvxcvwcrXcrXcvycrXcrXcwFcwGcrZcrZcvBcrZcrZcvCcvDcvCcrZcvEcvFcvEcsacsacvGcsacsacvHcvIcsccsccvJcsccsccvKcvLcvKcscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxfcvOcvPcvQcvRcvScvTcvUdEKdEJcvXcvYcvZcwacwbcwccuXcpXcpXcpXcpXcpXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcpjcwdcwecwfcwgcwdcpjdELdELdELahyahyahyahyahyahycpjcwhcwicwhcpjahyahyahyahyahyahyahycxAcqicqicqicwkcqicxAahyahyahyahyahyahycovcuncwlcwmcwncwocuncuncuqcwpcovahyahyahycsKcqycrOcrPcqycqycsKahyahyahyczZcPicEVcEVcEvcPocEVcEVcEVcrQcvucvucsYcsYcBicDqdBUcxPbdUctbcxRcsYcFdcFdcFdcFdcrQaahaahcrXcwBcwCcwDcPvcwDcwJcwHcwLcwKcwUcwTcwXcwVcwMcwNcwMcwOcwPcrZcwQcwRcwScPBcwScyacyecybcyqcyfcwYcwZcxacxbcxccxbcxdcxecscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxNcxgcxgcxgcxgcvScvTcxhcxhcxicuXcxjcxkcxlcxmcxncuXcxocxpcxqcxraahaahaahaahaahcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxscxtcxucxvcxwcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcxxcxycwhahyahyahyahyahyahyahyahycxzcyBcxBczkcxDcyBcxzahyahyahyahyahyahycovcovdHdcxFcxGcxHcxIcxJdHecovcovahyahyahycumcsScxLcxMcqyctucsOahyahyahyczZczZcEVcTdcQncUncEVcEVddacrQcEFcxPcsYcsYcxQcxQcxQcxQcxQctbcxRcsYcFdcFdcFdcFbcrQaahaahcrXcxVdEMcxXcxYcxZcytcyrcrXcyccydcrZcAkcyucygcyhcyidENcykcrZcyldEPcyncyocypcAqcAucsacyscAxcBocBncyvcywcyxcyydEQcyAcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczTcyCcyDcyEcyFcxgcxgcvScyGcyHcyIcyJcyKcyLcyMaGXcyOcyPcuXcxqcxqcxqcxrcxrcxrcxrcxrcxrcxrcyQcyRcyScyScyScyScyScyScyScyScyScyScyScyTcyScyUcyVcyWcyXcyYcyVcyZczaczbczaczaczaczaczaczaczaczaczaczccwhahyahyahyahyahycxzcxzcxzcxzczdczebTgczgczhcxzcxzcxzcxzahyahyahyahycovcovcovcziczjczicovcovcovahyahyahyahyahycvacrOcrPcqycvaahyahyahyahyahyczZczZczZczZddeczZczZczZcrQcxQcxQcDocwycwycwycFccHvcHrcJzcHxcsYcFdcFdcFdcFdcrQaahaahcrXcrXcrXcrXcrXcrXcBqcrXcrXczpcuAcrZcrZcBrcrZcrZcrZcrZcrZcrZcsacsacsacsacsacBucsacsacuLcBvcsccsccsccsccsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczrczsczrczscztczuczvczwczxczyczzcxgcArczBczCczDczEcuXcuXczFczGczGczGczGczGczGczGczGczGczGczHcxqcxrcxrcxrcxrcxrczIczIczJcxrcOHczKcxqcxrczLczMczNczOczPcwhczQczQddgddmddkczQczQcwhcwhcwhcwhczRcwhahyahyahyahyahycxzczSczScABczUczVczWczXczYcAIcAacAacxzaahahyahyahyahyaahaahczicAbcziaahaahaahahyahyahyahyahycqvcAccAdcAecqvahyahyahyahyahyahyahyahycBgcWQcBgahyaahcrQcJNcxTcKMcxTcxTcFacFacKNcxTcxTcMecDrcFdcFdcFdcmYcrQaahaahaahaahaahaahcAicAjcBxaywcAicAmcAncAoayEcCccBbcAoaahaahaahaahaahaahaahcAscAtcClazxcAscAwcCmcAyazycAAcBAcAyaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcAEcAFcxgcxgcvScvTcAGczzcAHcBTcAJcAKcMdbWMcuXcxqcANcxqcxqcxrcxrcxrcxrcxrcxrcxrcxrcAOcxrcxraahaahaahcxrcAPcAPcAPcxrcxrcxrcxrcwdcwdcAQcARcAScwdcwdcwhcwhcwhcwhcwhczQcwhcwhaahaahcwhczRcwhaahahyahyahyahycxzcATczecAUcAVczeczeczgcAWcAXczecAYcxzaahahyahyaahaahaahaahczicAZcziaahaahaahcBacCScBccBacqvcqvcBdcBecBfcqvcBgcBgcBgcBgcBgahyahyahycBgcWQcBgaahaahcrQcvucvucMXcGzcGAcGAcGAcNJcGAcGzcNMcsYcNVcNVcNWcNXcrQaahaahcAicAicAicAicAicBmcDydHfcAiczpcBpcAocDDcDCcBscAocAocAocAocAocAscAscAscAscBtcDMdHgcAscBwcBvcAycFkcBycBzcAycAycAycAycAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacymcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWcBXcBgcBgahyahycBgcWQcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUdFccGzcNMcsYcPccPccPccOVcrQaahaahcAicBZcCacCbcAicAicFlcAicAicCdcvAcAocFmcCecAocAocCfcCgcChcAocCicCjcCkcAscAscFncAscAscvHcFycAycAycCncAycAycCocCpcCqcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcCrcyFcxgcxgcvScvTcAGczzcCscCtcCucCvcCwcCxcCycCzcCAcxrcxraahaahaahaahaahaahaahcxrcCBcCCcxrcxraahaahcBIcBQcCEcCDcBIcCGcCGcCGaahcwdcCHcCIcCJcCKcCKcCKcCKcCKcCKcCKcCLcCKcCKaahahycwhczRcwhaahaahaahaahahycxzcCMcCNcABcCOczVcCPcCQcCRcEKcCTcCUcxzaahaahaahaahaahaahaahczicCVcCWcCXcCXcCYcCZcDacDbcDccDdcDecDfcDgcDhcDicBgcDjcDkcDlcDmcBgcBgcBgcBgcWQcQzcBgcBgcrQclXcxQcMXcGzcHscHtcIGcOYcHwcGzcNMcsYcQHcQHdERcPacrQaahaahcAicDtcDucDvcDwcDvcFAcFzcDzcDAcwIcDBcHFcHAcDEcDFcDEcDGcDHcAocDIcDJcDKcDLcDKcHGcHKcDOcwWcHNcDPcDQcDRcDScDTcDScDUcDVcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcDWcDXcDWcDYcDZcEacEbcEccEdcEeczzcEfcCtcEgcEhcEicEjcEkcCtcxrcxraahaahaahaahaahaahaahaahcxrcElcEmcxqcxraahaahcBIcBQcCEcCDcBIcEncEocCGcCGcwdcEpcEqcErcCKcEscEtcEuddpcEwcEwcEwcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcATczecEycAVczecEzczgcEAcFHczeczecxzaahaahaahaahaahaahaahczicECcEDcEEcEDcBackacEGcEHcFXcEJcGfcELcEMcENcEOcEPcEQcERcERcEScETcEUcEUcQecZMcEXcQfcEYcEZcxTcxTcQgcQhcHscJLcJMcQFcHwcGzcNMcQIcQGcQGcQGcQGcQGaahaahcAicFfdEScFhcFicFjcIKcIJcAicyccydcAocIPcILcFocFpcFqdEUcFscAocFtdEVcFvcFwcFxcIQcIRcAscyscAxcKacJRcFBcFCcFDcFEdEWcFGcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcGjcFIcFJcFKcDZcxgcxgcvScFLcyHcFMcFNcFOcFPcFQcFRcFScFTcCtaahaahaahaahaahaahaahaahaahaahcxrcElcFUcxqcxraahaahcBIcCFcCEcCDcBIcFWcGpcFYcFZcwdcGacGbcGccCKcGdcGecEwcEwcEwcEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcxzcxzcxzcGqczecGgcGhcOIcGBczecGkcxzaahaahaahaahaahaahaahczicECcGlcziczicBacGmcGncGocGScEJcHccGrcrPcqycGscBgcGtcGucGvcGwcBgcBgcBgcGxcXdcERcERddqcrQcrQcrQcrQcrQcKJcKKcKLdhfcHwcGzcNMcQGcQGdkBdkBdlCcQGaahaahcAicAicAicAicAicAicKbcAicAiczpcuAcAocAocFmcAocAocAocAocAocAocAscAscAscAscAscKScAscAscuLcBvcAycAycAycAycAycAycAycAycAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacHHcGCcGDcGEcGEcGFcGGcGGcGGcGGcGHcGIcGIcGJcGKcGLcCtbkQbkQahyahyahybkQbkQaahaahaahcxrcGMcGNcxrcxraahaahcBIcFgcGPcFFcBIcGRcHRcCGcCGcwdcGTcCIcGUcGVcGWcGWcGWcGXcGXcGXcGXcGYcCKahyahycwhczRcwhaahaahaahaahaahcxzcGZczecABcHaczVcCPcCQcHbcHSczecGkcxzaahaahaahaahaahaahaahczicAbczicziaahcBacHdcHedmEcHgcHfcHccHicHjcHkcHlcHmcHncHocHmcHpcHmaahcBgcBgcHqcGxcGxdnjcOUdBScFVcMfcrQcrQcMgcMhdhfcHwcGzdBVdDhdDgdDjdDidDkcQGaahaahaahaahaahaahcHycHzcKTazzcHycHCcHDcHEazAcKWcIzcHEaahaahaahaahaahaahaahcHIcHJcLgazBcHIcHMcLhcHOazCcHQcJtcHOaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacJwcGCcDXcHTcDXcHUcHVcxgcxgcHWcCtcHXcGKcHYcHZcIacCtbkQcIbcIccIccIccIcbkQaahaahaahcxrcIdcIecxraahaahaahcBIcBQcIfcGOcBIcIhcIicIjcIkcwdcIlcImcIncCKcGecIocGecEwcGecEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcIpczecIqcAVcIrcIscItcAWcIuczecGkcxzaahaahaahaahaahaahaahczicAbcziaahaahcBacIvcIwcHhcFXcIycKDcrOcrPcIAcDicHmcIBcICcIDcIEcHmaahaahcBgcHqcBgcOTdDlcNKcNTcNLcNNctzcNOcNPcNQdDmcNScNTdDncQGdDodDqdDpdDrcQGaahaahcHycHycHycHycHycIIcMpdHhcHyczpcuAcHEcMqcIMcINcHEcHEcHEcHEcHEcHIcHIcHIcHIcIOcMrdHicHIcuLcBvcHOcMtcIScITcHOcHOcHOcHOcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcvMcvMcvMcvMcvMaadaadaadcuScuScuScuScuScuScuScIUcIVcIWcIXcIYcIZddOcJbcCtcCtahycIccJccJdcJccIcahyahyaahcJecJecJfcJgcJeaahaahaahcBIcBQcJhcJicJjcJkcJlcJmcJmcwdcJncJocJpcCKcJqcGecEwcEwcEwcEwcJrcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcJsczecMLcJuczVcJvczXczYcNgczeczecxzaahaahaahaahaahaahaahczicAbcziaahaahcBacJxcJycIxcGScJAcJBcJCcJDcJEcJFcHmcJGcJHcJIcJJcHmaahaahcBgcGycBgcBgcBgcrQdFdcsYcOWdHjcrQcHtdDscOYdDtcsYdDucQGdDvcQGdDwcQGcQGaahaahcHycJOcJPcJQcHycHycMucHycHycJScvAcHEcMvcJTcHEcHEcJUcJVcJWcHEcJXcJYcJZcHIcHIcMwcHIcHIcvHcMxcHOcHOcKccHOcHOcKdcKecKfcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadbkQaahaahaahaahaahcuScuScuScuScCtcCtcCtcCtcCtcCtaahahycIccJccJccJccIcahyahyaahcJecKgcKhcKicJecKjcKjcKjcBIcBIcKkcKlcBIazDcKncKocKpcKqcKrcKscKtcKqcKucGedeccKvcEwcKwcKwcKwcCKahyahycwhczRcwhaahaahaahaahaahcxzcKxczecHScKyczecKzczgcKAcHScKBcKBcxzaahaahaahaahaahaahaahczicAbcziaahcKCcKCcNYcKEcKFcKCcKCcKCcKGcKHcKIcKCcKCcKCcKCcKCcKCcKCcKCaahcBgcHqcBgaahaahcrQcrQcQAcQBcQCcrQcQDcQEdDydDxcsYcsYcQGdDzcQGdDAcQGaahaahaahcHycKOcKPcKQcKRcKQcMzcMycKUcDAcwIcKVcMBcMAcKYcKZcKYcLacLbcHEcLccLdcLecLfcLecMCcMDcLicwWcHNcLjcLkcLlcLmcLncLmcLocLpcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccLqcLrcLscIcahyaahaahcJecLtcLudEXcJecLwcLxcLycLzcBIcLAcBIcCGcCGcLBcCGcLCcKqcLDcLEcLFcKqcLGcLGcLGcLGcLGcLGcLGcLGahyahyahycwhczRcwhcziaahaahaahaahcxzcxzcxzcxzcLHcLIcLJcLKcLLcxzcxzcxzcxzaahaahaahaahaahaahcziczicAbczicKCcKCcLMcLNcLOawvcLQcLRcLScLTcLUcLVcLWcLXcLYcLZcMacMbcMccKCcKCcBgcHqcBgahyaahaahcrQcrQcrQcrQcrQcrQcrQcrQcrQdDCdDBcQGcQGcQGcQGcQGaahaahaahcHycMidEYcMkcMlcMmcMndBWcHycyccydcHEdBYdBXdCadBZdCcdEZdCedCddCgdFadCidChdCkdCjdClcHIcysdCmdCodCncMEcMFcMGcMHdFbcMJcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQcIccMKcNZcMMcIcbkQcMNcMNcMNcMNcMPcMOcKjcMQcMRcMScMTcMUcMVcMWdDDcoucMZcNacMUcNbcNccNdcNecrVcOpcNhcNicNjcTfcLGcNlcLGcLGahyahycwhcNmcNncziczicziczicziczicNocNpcxzcNqcxzcNrcxzcNqcxzcEDcEDcziczicziczicziczicziczicUqcXxcUucKCcNucLPcLPcNvcNwcNwcNxcNycNzcNAcNBcNCcNDcNEcNEcNEcNFcLPcNGcKCcZgdDEcBgahyahyaahaahaahaahaahaahaahaahcWudDFdbMdbMdDGcWuaahaahaahaahaahaahcHycHycHycHycHycHycHycHycHyczpcuAcHEcHEcHEcHEcHEcHEcHEcHEcHEcHIcHIcHIcHIcHIcHIcHIcHIcuLczqcHOcHOcHOcHOcHOcHOcHOcHOcHOaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQbkQcOsahycOMbkQbkQcMNcOacObcOccOdcOecOfcOgcOhcOicMTcOjcOkcOlcOlcOmcOncOocPFcOqcNccNdcNecOrcPPcOtcOtcyzdDHcOvcOtcOwcLGahyahycwhcOxcOycOzcOAcOBcOCcOCcOCcOCcOAcOAcOAcODcOEcOFcOAcOCcOCcOGcOCcOCcOCcOCcOCcOCcOCcOCdlDdBIdBHcKCcOKcLPcLPcOLcLPcLPcPYcONcOOcOPcOQcONcPYcLPcLPcLPcORcLPcLPcKCdBJcHqcBgahyahyahyaahaahaahaahaahaahaahcWudDIdbMdbMdDJcWuaahaahaahaahaahaahcPdcPecPfcPgcPhaGYcPjcPkcPdcPlcPmcPncuscPpcPpcPqcPpcutcPrcPscPpcPtcPpcPucPpcPpcvkcPncPwcPlcPxcPycPzcPAaEycPCcPDcPEcPxaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahycQscPGcPGcPHcPGcPIcPJcPKcMNcPLcPMcPMcPNcPOcRfcPQcPRcPScMTcPTcPUcOocPVcPWcOocPXcRucPZcNccQacQbcQcdcEdDKdDMdDLdDNcQicQjcQkcLGahyahycwhcQlczQczicziczicziczicziczicziczicEDcEDcEEcNscEDczicziczicziczicziczicziczicziczicQmcEDdBKcKCcQocQocLPcQpcQqcQrcRJcQtcOOcQucQvcQwcRJcQxcQocLPcQycQqcQocKCdCRcHqcBgahyahyahyahyaahaahaahaahaahaahcWucWudDPdDOcWucWuaahaahaahaahaahaahcPdcQJcQKcQKcQLcQKcQKcQMcQNcQOcQPcQQcQRcQRcQRcQScQRcQTcQUcQVcQWcQXcQRcQYcQRcQRcQRcQQcQZarAcRbcRccRccRccRdcRccRccRecPxaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjbLjaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahycSAcRgcRhcRicRjcRkcRlcRmcRncRocRpcRqcRrcRscRtcSLcRvcRwcRxcMTcRycPUcRzcRAcRBcRCcOlcRDcREcRFcRGcRHcRIcTadDQcRKcRLcRMcRNcROcRPcLGahyahycwhcRQcwhcziahyahyahyahyahyahyahycziczicziczicziczicziaahaahaahaahaahaahaahaahaahcziczicRRdCScKCcRTcRWcRVcLPcRWcRXcRJcRYcOOcOPcOQcRZcRJcRTcRWcLPcRVcRWcSacKCdCTcSccBgahyahyahyahyahyaahaahaahaahaahahydDRdbMdDScWuaahaahcXGcXGcXGcXGaahcPdcSdcSecSfcSgcShcSicSjcSjcSkcSlcSmcSlcSlcSlcSncSlcSlcSlcSocSpcSqcSqcSrcSqcSqcSqcSscStarBcSucSucSvcSwcSxcSycSyarCcPxaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahbLjbLjaahaahaahaahaahaahaahaahaahbkQbkQahyahyahybkQbkQcTZcSBcSCcPMcSDcPMcSEcSFcSGcSHcPMcPMcSIcSJcSKcUlcSMcSNcSOcMTcSPcSQcSRcSScSTcSUcSVcSWcSXcSYcSZcNecRIcUscTbcOtcTccOtcTearDcTgcLGahyahycwhcRQcwhahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahaahaahaahczicThcRScKCcTicTjcTkcLPcTlcTjcRJcTmcTncTocOQcTmcRJcTjcTjcTpcLPcTlcTqcKCcSbcTrcBgahyahyahyahyahyahyahyahyahyahyahydDTdbMdDUcWuaahcXGcXGasfasecXGaahcPdcPdcTscTtcTucTvcTwcTxcPdcPncPncPncTycTzcTzcTAcTBcTCcTDcTEcTFcTGdCUcTHcTzcTzasgcPncTDashcPxcTJcTKasicTMcTNcTOcPxcPxaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQcTZcSBcTPcTQcTRcTScTTcTUcTVcTWcPMcPMcTXcSIcTYcKjcUvcUacUvcMTcUbcUccUdcUecUecUfcPXcPFcUgcUhcUicUjcRIcUkcUycUmcUodcLcUkcUkcUkcLGahyahycwhcUpcwhahyahyahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahahyczidCVcRScKCcUrcLPcORcLPcLPcLPcUHcONcOOcOPcOQcONcUHcLPcLPcOLcLPcLPcUtcKCcSbdCWcBgahyahyahyahyahyahyahyahyahyahyahycWudDWdDVcWuaahcXGasjaskdaDcXGaahaahcPdcUIcUwcUwcUwcUxcPdcPdaahaahcPncPncUYcUzcUzcUAcPncUBcUCcUDcPncPncPncPncPncPncPncUBcPmcPxcPxcPxcPxcPxcPxcPxcPxaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccUEcUEcUFcUGcVucVgcUJcUKcULcUMcPMcUMcUNcUOcUPcUQcURcUScUTcUUcUVcRqcUWcUXcVQcUZcOocOocOocOocOocVacRucVbcUhcVccNecVdcVecVfcWicVhcVicVjcVkcVlcVmahyahycwhcRQcwhahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahahyahyahyahyahyahyczicVncEDcKCcLPcLPcVocNEcNEcNEcNDcNCcVpcVqcVrcNycNxcNwcNwcVscLPcLPcLPcKCcGxcVtcBgahyahyahyahyahyahyahyahyahyahyahydDRdbMdbScWuaahcXGaslaskasmcXGaahaahahyahyahyahyahyahyahyaahaahaahaahahyahyahyahyahycWvcVvcVwcVxcPnaahaahaahaahaahabTasoasnabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccVycVzcVAcNZahycTZcVBcVCcVDcVEcVFcUMcVGcVHcVIcVJcVKcVKcVLcVMcVNcPMcVOcVPcWBcVRcVScVScVTcOocVUcVVcMTcVWcVXcVYcNecVZcWacWbcWicWccWdcWecWfcWgcVmcwhcwhcwhcRQcwhcWhcWhcWOcWjcWkcWhcWhcWOcWjcWkcWhcWhahyahyahyahyahyahyahyahyahyahyahyahycziczicWlczicKCcWmcWncWocWpcvtcLPcLRcONcOOcOOcOQcONcLRcLPcvtcWpcWqcWrcWscKCcBgcWtcBgcBgahyahyahyahyahyahyahyahyahyahydDTdbMdbScWuaahcXGcXGaspcXGcXGaahaahahyahyahyahyahyaahaahaahaahaahaahaahahyahyahyahycXncWwcWxcWycWuaahabTabTabTabTabTastasqabTabTabTabTabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccUEcUEcWzcWAcVucXucWCcWDcWEcWFcWGcWHcWIcWJcWJcWJcWFcWFcWFcWKcWLcPMcWMcWNcMTcMTcXycWPcwAcvvcXycWPcWScWTcWUcVYcNecWVcWWcWXcWicWYcWZcXacXbcXccVmdDXcXecXecXfczQcWhcXgcXhcXicXjcXkcXlcXhcXmcXhcXhcWhcWhcXHcXocXocXocXocXocXpcXqcXHcXpcXqcXqcXrcXscXtcKCcKCcNYcKEcKFcKCcKCcKCcYfcXvcXvcKIcYfcKCcKCcKCcNYcKEcKFcKCcKCcXtcXwdCXcXqcXqcZncXzcXzcXzcXAcWucWucWudDYcWucWwdDZcWucWucWucXBasvdHkcWucWucWucWucZncXzcXzcXAcWucWucWucWucWucWucWucZncXzcXzcXAcWucXDcXEcXFcWuabTabTaswacwacwasxacuaeVaszasyacwacwabTabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQcZocXIcXJcVDcXKcXLcUMcUNcXMcXMcXNcUOcVEcXOcXPcWFcXQcXRcXScXTcXUcXVcXWcXXcXYcXZcYacYbcYacYccYdcNecYecWacNcdaTcYgcYhcYicYjcYkcVmcRQczQcYlczQczQcYmcYncYocYpcYqcYncYrcYpcYscYtcYucYvcYwcYxcYycYxcYxcYzcYxcYAcYBcYxcYxcYCcYDcYEcYFcYGcYHcYCcYxcYIcYxcYycYJcYKcYxcYxcYxcYLcYxcYMcYNcYycYxcYxcYxcYCcYxcYGcYOcYPcYPcYQcYRcYScYRcYTcYRcYUcYVdCYcYRcYScYWcYRcYRcYXcYScYYasAcYZdCYcYXcYRcZacYRcYRcZbcYRcYRcZccYUdCYcYRcYRcZdcYRcYRcYScYRcYXcZecZfcXFasBasDasCacuacuacuasEasFaeVacuacuacuacuawwabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccZkcZkcZlcZmdbDdbdcZpcZqcVMcZrcPMcUMcUNcZscZtcZucVGcVHcZvcZqcZwcZxcZycZqcZzcZAcZBcZCcZDcZEcZFcZGcZHcZGcZIcZJcZKcZLdmbcZNcZOcZPcZQcZRcZScZTcVmcRQcwhcwhcZUcwhcZVcZWcZXcWhcZVcZWcZYcWhcZVcZZdaadabdacdaddaddaddaedaddaddafdaddaddaddagdaedahdaidajdakdagdaddajdaddaddaddaedaddaddaddaddaddafdaddaddaddaddaddagdakdajdaldaddaedagdamdamdamdandamdamdaodamdamdamdapdamdamdaqdaodardasdatdaudaqdamdandamdamdaodamdamdamdamdamdamdamdavdamdamdaudamdaqdawdaxasUasSasWasVasXasXatbasZatdatcacJacuacuacuadKabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIcdaEdaFdaGcNZahycTZdaHdaIdaJdaKcTSdaLcUNdaMdaNaImcUNcPMdaPcPMdaQcPMcPMdaRdaSdaSdbIdaUdaVdaWdbIdaUdaSdaXdaYdaZdbadbbdbcdbNdbedbfdbgdbNdbedbcdbccRQcwhdbhdbidbjcZVdbkdbldbmcWhdbndbldbocZVcWhdbpcXhdbqdbrdbrdbrdbsdbtdbrdbrdbudbrdbrdbvdbwdbxdbydbzdbAdbBdbCdcedbCdbCdbEdbFdbCdbCdbGdbCdbCdbCdbHdbCdbCdcfdbCdbBdbJdbzdbydbKdbLdbvdbMdbMdcrdbMdbMdbMdbOdbMdbMdbMdbPdbMdbMcWwdbQdbRdbScXEdbTcWwdbMdcrdbMdbMdbUdbMdbVdbMdbMdbMdbVdbMdbMdbMdbMdbWdbMcWwdbWdbXcXFdbYadCacuacuateatOatfatSatPacJacuacuacuatTabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccZkcZkdccdcddcDdczdcgdchdcidaPcPMcUMdcjdckdcldcmdcndcodcpcTQdcpdcmdcodcqdcJdcsdctdcudcvdcwdcxdcydcxddbdcAdcBdcCddndmkdcFdcGdcHdcIddtdcKczfdbcdcMcwhdcNdbidcOcZVdcPdcQdcRcWhdcSdcTdcUcZVcWhcWhcWhcWhcXHcXocXocXocXocXocXpdcVcXHcXpdcWdcXdpPdqIdpQdcXdcWddDdcVcXHcXocXocXocXocXpdcVcXHcXocXocXocXocXpdcVddDddcddddskdtrdstddddddcZncXAddhcZncXzcXAddhcZncXzcXAddhcZncXAddiddjdBAdBCdBBddjddiddPddhcZncXzcXzcXzcXzcXAddhcZncXzcXzcXzcXzcXAddhddPddodBEdBDdBFddsabTaezacuaeVacuacuatVatUacuacuacuacuaeCabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQddWdducXJddvddwcTSddxcPMcUOcVFcVEcPMcPMddyddzcWLddAddBddCdeedcsdcudcudcvdcwddEddEddFddGddHddIdcCddJddKddKddKddLddMddNddNdBGdbccRQcwhdekddQddRcZVddSddTddScWhddUddVddUcZVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqddXddYddZdeadebdeqaaaaaaaaaaaaaaadeddeddeddeddeddeddedaaaaaaaaaaaaaaadeWdefdegdehdeidejdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdeldemdendeodepdfbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdesdetdeuddsatWatYatXauaatZaegacuaeXaubaciaeYabTabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahbkQcIcdevdevdewcZmdbDdbddexcZqdeydezcVNcUMcPMdcjdclcVHcSHcPMcWLcWLcVIcVJdeAdeBdeCdeDdcudeEdeFdeGdeHdeIdeJdeKdeLdeMdeNddJddKddKdeOdePdeQdeRddKdeSdbccRQcwhahyahyahycZVddSdeTddScWhddUdeUddUcZVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVaaaaaadfhdeXdeYdeZdeadfadfmaaaaaaaaaaaadeddeddeddeddeddeddeddeddedaaaaaaaaaaaadfBdfddegdfedffdfgdfBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfIdfidfjdfkdeodfldfIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfLderdesdfndfoddsabTabTabTaflaflafmaflaflabTabTabTabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahahycIcdfpdfqdfrcNZahycTZdfscPMcUMcWLcVIdeydftcZqdfucZqdftcZqdfvcWLcPMcPMdfwdfxdfydfzdcudcudfAaIndfCdfDdfEddbdfFdfGdfHddndfXdfJdfKdfYdfMdfYdfNdbcdbccRQcwhahyahyahyahyddSdfOddScZVddUdfPddUdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdgwdfRdfSdfTdfUdfVdfWdhgdcWaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaaddcdhudfZdgadgbdgcddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddidgddemdgedgfdggddiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddodghdgidgjdgkddsaahaflagBaflaudafBaueafDafEaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahahycIcdevdevdgldcddcDdczdgmcTSdgncWLcPMdgocTTcTSdgpcTScTScTSdgpdgpdgqcPMdgrdgsdaSdgtdcudgudgvdhzdgxdfDdgydgzdgAddIdgBdgCdgCdgCdgCdgCdgCdgCdgCdbcdgDdgEcwhcwhahyahyahydgFdgGdgHaaadgIdgJdgKdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdgLdgMdgNdgOdgPdgQdgRdfadeqaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadeWdfddgSdgTdeidfgdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdfidemdgUdgVdfldfbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdgWdgjdgXddsaahaflauPaflafPafQafRaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQddWdgYcXJcPMcWLcPMcPMdgZdhacWLcPMcPMdhacWLcWLdhbdhadhcdhddaSdhedcudcucyNdhEdfCdhhdhidgzdhjdfGdhkdhldhmdhndhodhpdhqdhrdhsczQczQdhtczQcwhahyahyaaaaaaaaaaaaaaaaaaaaaaaadeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdhIdfRdhvdfTdhwdhxdgRdhydfhaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadhMdhAdhBdgadhCdhDdhMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadifdhFdemdgedhGdhHdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydhJdesdhKdhLddsaahaflagAaflagfaggaggaghafEaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahbkQbkQahyahyahybkQbkQdiLdhNdhOdhPcVIdhQdhRdhSdhTdhUdhVdhWdhXdhYdhZdiadibdicdiddaSdiedcudcucyNdiYdfCdfDdigdgzdfFdihdgBdiidijdikdildimdindiodipcXecXediqdircwhahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVaaaaaadfmdeXddYddZdgRdfadfmaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadfBdfddgSdehdeidfgdfBaaaaaaaaadisditdiudiudiudivdiwaaaaaaaaadfIdfidemdendhGdfldfIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfLderdesdixdgXddsaahaflaflaflaflagqaflaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahahyahyahyahyahydjtdizdiAdiBdiCdiBdiDdiEdiCdiBdiFdiEdiCdiCdiDdiGcMNcMNdaSdiHdiIdiJdiKdjudiMdiNdiOdgzdfFdihdgBdiidijdiPdiQdiRdijdhrdiSdiTdiUdiVdiWcwhahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdjwddYdjcdjddjedcWaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaaddcdjfdjgdjhdeidjiddcaaaaaaaaadjjdjkdjkdjkdjkdjkdjjaaaaaaaaaddidjldemdjmdjndjoddiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddodjpdjqdjrdjsddsaahaahaahaflagyaggagzaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaaaaaaaaaahydkCdjxdbDdbDdkJdjxdkLdbDdkJdjxdkLdbDdkJdkUcOsbkQbkQahydaSdgzdgzdgzdgzdgzdjydgzdgzdgzdjzdjAdjBdjCdjCdjCdjCdjCdjCdjCdjCdjCcxxdhtcwhcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqdeXddYddZdgRdfadeqaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadeWdfddgSdehdeidfgdeWaaaaaaaaadjjdjDdjEdjkdjEdjDdjjaaaaaaaaadfbdfidemdendhGdfldfbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdesdixdgXddsaahaahaahaflagyagLagzaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAaaadjFaaabkQcIcdjGcNZcMKcIcdjGcNZcMKcIcdjGcNZcMKcIcbkQaahdjHdjHdjIdjJdjKdjLdjMdjNdjOdjPdjQdjRdjSdjCdjTdjUdjVdjWdjXdjYdjZdjCdjCdhtcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgwdfRdfSdkadfUddZdgRdebdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdejdgSdehdeidgSdhMaaaaaadisdkbdkcdkcdkddkcdkcdkbdiwaaaaaadifdhGdemdendhGdepdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiyderdesdixdgXddsddsaahaahaflaflaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaadaadaaaaadaadaadaaaaadaadaadaaaaadaadaadaaaacAaaddkeaadbkQcIcdkfdkgdkhcIcddrdcYdfQcIcdkldkmdkncIcaahaahdjHdkodkpdkqdkrdksdktdkqdkudjPdkvdkwdkxdjCdkydkydkzdjXdjXdkAdkAdEbdjCdhtcwhdkYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkDdkEdkFdkGdkHddZdkIdlEdfSdfRdkKdeddeddeddeddeddeddeddeddeddeddeddeddeddlUdkMdkNdkOdkPdehdeidfgdhMaaaaaadjjdjkdHmdHldjkdHldHndkSdjjaaaaaadifdfidemdendkTdlYdkVdkWdkXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmGdkZdladlbdlcdixdgXdldddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledlfdlgaaadledlfdlgaaadledlfdlgaaadledlfdlgaaaacAaadaadaaaaaacIcdlhdlidlhcIcdkjdkidkjcIcdlkdlldlkcIcaahaahdjHdlmdlndkqdlodlpdlqdlrdlsdltdludlvdlwdlxdlydlzdlAdlzdlzdlBdlzdEcdjCdhtdDadoidlFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhIdfRdhvdkadlGdlHdlIdlJdlKdlLdlMdeddeddeddeddeddeddeddeddeddeddeddeddeddlNdlOdlPdlQdlRdlSdlTdokdkNdkMdlVdjjdlWdjkdjkdjkdjkdjkdlXdjjdoEdkWdkVdkXdlZdmadDbdmcdmddmedmfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmgdmhdmidmjdDcdixdgXdmlddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaddledmmdlgaaddledmmdlgaaddledmmdlgaaddledmmdlgaadacOaaaaadaadaaacIcdlhdmndlhcIcdkjdkkdkjcIcdlkdmpdlkcIcaahaahdjHdlmdmqdkqdlpdlpdmrdmsdmtdmudmvdmwdmxdmydmzdmAdmBdmCdmCdmDdlzdEddjCdhtczQdmFdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfmdeXddYddZdmHdmIdmJdmKdmLdeddeddeddeddeddeddeddeddeddeddeddeddeddmMdmNdmOdmPdmQdehdmRdmSdmTdgSdmSdkddjkdmUdmUdjkdmUdmUdjkdkddmVdhGdmWdmVdmXdendmYdmZdnadnbdncaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnddnednfdngdnhdixdgXdniddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaadaadcIccIccIccIccIccIccIccIccIccIccIccIccIcaahaahdjHdkodkpdkqdlodlpdktdkqdEedjPdfFdihdnkdjCdnldnmdnndnodnpdnqdnrdnsdjCdntczQdnudppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdnvddYddZdnwdlEdhvdfRdfTdeddeddeddeddeddeddeddeddeddeddeddeddeddokdkMdnxdkOdnydehdnzdokdnxdkMdkOdjjdjkdjkdjkdjkdjkdjkdjkdjjdlYdkWdnAdkXdnBdendnCdlYdnAdkWdkXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmGdkZdnDdlbdnEdixdgXdnFddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaaaaadaadaadaadaaaaaaaadaadaadaaabkQdnGdnGdnGdnGdnGdjHdjHdnHdnIdnJdnKdnLdnMdjHdjHdnNdnOdnPdjCdjCdnQdnodnRdnSdnTdnrdjCdjCdhtczQdnudppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaadeqdeXdnVdnWdgRdeXdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdnXdgSdnYdnZdnXdhMaaaaaadoadjkdmUdmUdobdmUdmUdjkdoaaaaaaadifdocdoddoedhGdocdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydofdesdogdohddsddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaaaaaaaaddqrdojdojdojdojdnGdqLdoldnGdnGdomdomdondoodopdjHdjHdjHdjHdjHdjHdjHdjHdoqdordosdotdoudjCdjCdjCdjCdjCdjCdjCdjCdjCdhtczQdovdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdgwdfRdfSdkadfUddZdgRdhydfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdhAdgSdehdeidowdhMaaaaaadoxdjkdjkdjkdoydjkdjkdjkdoxaaaaaadifdozdemdendhGdhHdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydhJdesdixdoAddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaadoDaaaaaaaaadqNdoFdoGdoHdoIdoJdoKdoLdoMdoNdoOdoPdoQdoQdoRdoSdoTdoUdoVdoWdoRdoOdoXdoYdoZdpadpbdpcdpddpedpfdpgdphdpidpjdpkdpldpmdpndhtdpodqTdpqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdprdpsdptdpudpvdpwdpxdeXdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdnXdpydpzdeidnXdhMaaaaaadpAdjkdmUdmUdjkdmUdmUdjkdpAaaaaaadifdocdemdpBdpCdocdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydofdpDdpEdgXddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaddpFdpGdpGdpGbCXdpGdpGdpGbCXdpGdpGdpGbCXdpGdpGdpGbCXdpGdpGdpGdpGdpGdpKdpLdpMdpNdpOcBhcAMdpRdpSdpTdpUdpVdpWdpXdpYdpZdqadqbdqcdqddqedoudoudqfdoudqgdoudqhdqidoudoudqjdoudqfdqkdqldqmdqndqodqpdqqcwhdqYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdhIdfRdhvdkadqsdcZdqtdlEdfSdfRdfTdeddeddeddeddeddeddeddeddeddeddeddeddeddokdkMdkNdkOdquddfdqvdokdkNdkMdkOdjjdqwdjkdjkdjkdjkdjkdqxdjjdlYdkWdkVdkXdqyddldqzdlYdkVdkWdkXaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAaaaaaadmGdkZdladlbdqBdqCdqDddsaahaahaahdqEdqEdqEdqEdqEdqEdqEaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaaaadaaaaaaaaadqNdoFdqGdqHcBPcBldojdnGdqJdqKdnGdnGdrxdoldqMdnGdrAdqOdqOdqPdqOdqQdqRdqQdqSdrBdqUdqVdrBdqUdqSdqWdqXdsLdnGdqZdqZdnGdnGcwhcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaadfmdeXddYddZdmHdradrbdrcdrddeddeddeddeddeddeddeddeddeddeddeddeddeddredrfdrgdrhdmQdehdmRdmSdridgSdmSdkddjkdmUdmUdjkdmUdmUdjkdkddmVdhGdrjdmVdmXdendmYdrkdrldrmdrnaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaadrodrpdrqdrrdnhdixdgXddsdqEdqEdqEdqEdrsdrtdrudrvdrsdqEdqEdqEdqEdqEdqEdqEdqEdqEdqEdqEdqEaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaddledrwdlgaaadledrwdlgaaadledrwdlgaaadledrwdlgaaaaadaaaaaaaaaaaaaaddtkdojdojdojdojdnGdrydrzdtIaaadtXdrCdrDdrEdrFdqOdrGdrHdrIdqQdrJdrKdrLdrMdrNdrOdrPdrQdrLdrRdrSdrTdnGdrUdrVdrWdtIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdjbdrXdlHdrYdrZdsadsbdscdeddeddeddeddeddeddeddeddeddeddeddeddeddsddsedsfdsgdshdlSdsidokdnxdkMdlVdjjdlWdjkdjkdjkdjkdjkdlXdjjdoEdkWdnAdkXdsjdmadDddsldsmdsndsoaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaadspdsqdsrdssdDedsudsvdswdBLdsydsydsydszdsAdszdsBdszdsydsxdsydsydsydsCdsDdsEdsFdsGdsHdqEdqEaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaadledrwdlgaaadledrwdlgaaadledrwdlgaaadledrwdlgaaaaadaaaaaaaaaaadaadaaaaaaaaaaaaaaadnGdsJdsKdtZaaddtXdsMdsNdsOdsPdqOdsQdsRdsSdqQdsTdsUdrLdsVdsWdsXdsYdsZdrLdtadtbdtcdnGdtddtedtfdtZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqdeXddYddZdtgdlEdhvdfRdkKdeddeddeddeddeddeddeddeddeddeddeddeddeddlUdkMdnxdkOdthdehdeidfgdhMaaaaaadjjdtidtjdHodHqdHpdtjdwfdjjaaaaaadifdfidemdendtldlYdnAdkWdkXaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaadmGdkZdtmdtndtodtpdtqdtqdBMdtsdttdtudtvdtwdtxdtydtzdtwdtAdtBdtCdtDdtEdtBdtBdtBdtBdtFdtGdqEaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaadledrwdlgaaadledrwdlgaaadledrwdlgaaadledrwdlgaaaacAaaaaaaaadaadaaaaaaaaaaaaaaaaaadnGdtHdtHdnGahydxKdoldtJdqLdoldqOdtKdtLdtMdtNdtOdtPdtQdtRdtSdtTdtUdtVdtWdxNdtYdxOduadubducdnGdnGaaddudduedueduedueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgwdfRdfSdkadufddZdgRdugdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMduhdgSdehdeiduidhMaaaaaadujdukduldumdumdumduldukdunaaaaaadifduodemdendhGdupdifaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaadiyduqdixdurddsdqEdqEdusdutduudqEdusdutduvdqEdusdqEdqEdqEdqEdqEdqEdqEdtBdtFdtBdqEaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaddledrwdlgaaddledrwdlgaaddledrwdlgaaddledrwdlgaadacAaaaaadaadaaaaaaaaaaaaaaaaaaaaaduwduxduyduwbkQduzduAduBduAduzdqOduCduDduEdqQduFduGdrLduHduIduJduIduKdrLduLduMduNduaduOduPduQduRaaaaadaadaaaaaadueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduSduTduUduVduWduXdjddfadfmaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadfBdfddjgduYdeidfgdfBaaaaaaaaaaaadujdukdukdukdunaaaaaaaaaaaadfIdfidemduZdjndfldfIaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaadfLdvadvbdvcddsaahaahdqEdvddvedvfdqEdvgdvhdvidqEaahaahaahaahaahaahdvjdvjdvkdvjdvjaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaadledvldlgaaadledvldlgaaadledvldlgaaadledvldlgaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQdvmdvndvodvpdvmdvqdvrdvsdvtdqQdvudvvdrLdvwdvxdvydvzdvAdrLdvBdvCdvDduadvEdvFduQdvGaaaaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhIdfRdhvdkadvHdvIdgRdvJdcWaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaaddcdvKdgSdvLdeidjiddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddidjldemdvMdhGdvNddiaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaddodvOdvPdvQddsaahaahdqEdvRdvSdvTdqEdvUdvVdvWdqEaahaahaahaahaahaahdvjdvXdvYdvZdvjaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQduAdwadvodwbduAdqOdwcdwddqOdqQdqQdweduadxSdwgdwhdwgdwiduadqWdwjdqWduaduaduaduadwkdwldwmdwmdwldwnaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfhdeXdeYdwodgRdfadeqaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadeWdfddgSdwpdffdfgdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdfidfjdwqdhGdfldfbaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaadfcdwrdwsdwtddsaahaahdqEdwudwvdwudqEdwwdwxdwwdqEaahaahaahaahaahaahdvjdwydwzdwAdvjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdwBdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczaczacAaczaczacOacAaadaadaadaadacOacOacAaadaadaadacOacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQdvmdwCdvodwDdvmduadwEdwFdwGdwHdwIdwJdwKdwLdwMdwNdwOdwPdwQdwRdwSdwTdwUdwVdwVduadwWdwmdwXdwYdwmdwZdxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfmdxbdxcdxddxedxfdfmaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadfBdxgdxhdxidxjdxkdfBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfIdxldxmdxndxodxpdfIaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaadfLdxqdxrdxsddsaahahydqEdwudxtdwudqEdwwdxudwwdqEaahaahaahaahaahaahdvjdxvdxwdxxdvjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQduAdxydxydxyduAduadwUdxzdxAdxBdxCdxDdxEdxFdxGdxHdxGdxGdxGdxGdxGdxIdxJdwVdwVduadwkdwldwZdwWdwldwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdcWdxVdxLdxLdcWdcWaaaaaaaaaaaaaaaaaadeddeddeddeddedaaaaaaaaaaaaaaaaaaddcddcdxMdxMdxYddcddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddiddidyadxPdxPddiddiaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAddoddodxQdxRdyPddoaahahydusdwudxTdwudusdwwdxUdwwdusaahaahaahaahaahaahdzgdxWdxXdztdxZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydzNdvmdybdybdycdvmduadwUdxzdyddyedyfdygdyhdyhdyidyjdykdyldymdyndyodypdyqdyrdysduadytdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqdyvdywdyxdeqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeWdyydyzdyAdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdyBdyCdyDdfbaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdyEdyFdyGdyHdyIdfcahyahyahydyJdyKdyLaaadyMdyNdyOaahahyaahaahaahaahbLjbkQdzOdyQdzOaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRaaaaaadyRaaaaaaaaadyRaaaaaaaaaaaaaaadyRaaaaaaaaadyRaaaaaadyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydnGduzduAdySduAduzduadwUdxzdyTdyUdyVdwUdwUdwUdyWdyXdyYdyZdyZdzadzbdzcdzddzedzfdzUdzhdwmdwZdwWdwmdwXdueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfhdzidxedzjdfhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhMdzkdxhdzldhMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadifdzmdxodzndifaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdzodzpdzqdzrdzsdiyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaaaaaaaaaadaadaaadAadzudAaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRaaaaaaaaadyRdyRdyRdyRdyRdyRdyRaaaaaaaaadyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzvdnGdzNbkQdzNdnGduadzwdxzdzxdzydzzdwUdzAdzBdzCdzDdzEdzFdzGdzHdzIdzJdzKdzLdzMdBwdzhdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBxdfTdzPdzQdfmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfBdzRdzSdokdzTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBydkXdzVdzWdfIaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdmGdkZdzXdkZdkZdzYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaadzZaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaadyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydBzahyahyduadAbdyTdAcdAddAedwUdAfduadAgdAhdAiduadAjdAkdAldAmdAndAodApduadwkdwldwZdwWdwldwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaadaadaaaaaaaaaaaadAraaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaadyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaahyduadAsdwUdAtdAudAudwUdAvdAwdAxdAydAzdAwdAAdABdzbdzcdACdADdAEduadwWdwmdwXdwYdwmdwZdueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaadAraaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaaaduadwUdwUdzydAFdAFdwUdAvdAGdAHdAIdAJdAGdAAdAvdzIdAKdzKdALdAMduadwkdwldwZdwWdwldwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueduedudaadaadaadaaddAraadaadaadaadaadacOduedueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaaaduaduadwUdAOdAddAddAPdAvdAQdARdASdATdAQdAUdAVdAWdAXdAYdAZduaduadytdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaaaadaaaaaaaaadAraaaaadaadaaaaaaaaaaaadueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadudaaaaaaaaaduaduadBbdBcdBbdBbduaduaduadBdduaduaduaduaduadBeduaduaduaaaddwYdwmdwZdwWdwmdwXdueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaadBfdBfdBfdBfdBfaaddAraaddBfdBfdBfdBfdBfaaadueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueaaaaaaaaaaaadBgdBgdBgdBgaadaaddBhaaadBhaadaaaaadaaaaaaaadaaaaaaaaddytdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBidBjdBjdBjdBjadLaejadLdBmdBmdBmdBmdBnaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueaaaaaaaaadBodBpdBpdBoaaadudaaaaaaaaaaaddwkdwXdwkdwndwYdwndwkdwXdwkdwndBodBodwkdwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBqdBqdBqdBqdBqaaadAraaadBqdBqdBqdBqdBqaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdBrdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueaadaaddBodBodBodBoaaddueaaaaaaaaaduddBpdBodBpdBpdBodBpdBpdBodBpdBpdBodBodBpdBpaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaaaadaadaadaaadAraaaaadaaaaadaaaaadaaadueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaadueaaaaaadBodBpdBpdBoaaadueaaaaaaaaaduedBodwWdwZdwWdwZdwWdwZdwWdwZdwWdwZdwWdwZdBoaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaadBfdBfdBfdBfdBfaaddAraaddBfdBfdBfdBfdBfaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaadaaddBodBodBodBoaaddueaaaaaaaaaduedBodwYdwXdwYdwXdwYdwXdwYdwXdwYdwXdwYdwXdBodudaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBidBjdBjdBjdBjadLaejadLdBmdBmdBmdBmdBnaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBaaadoBdoBdoBdoBdoBaaadoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadudaaaaaadwWdyudytdwZaaadueaaaaaaaaaduedBpdBodBpdBpdBodBpdBpdBodBpdBpdBpdBpdBpdBpdueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBqdBqdBqdBqdBqaaadAraaddBqdBqdBqdBqdBqaaadueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBaaadoBdoBdoBdoBdoBaaadoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueaaaaadaaaaaaaadaaadueaaaaaaaaaduedytdwZdytdyudwWdyudytdwZdytdyudytdyudytdyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAaaadqAdqAdqAdqAdqAaaadqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadudaaaaadaaaaadaaaaadaaadAraaaaadaaaaadaadaadaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueduedueduedueaaddueaaaaaaaaadudduedueduedueaadduedueduedueduedueduddueduedueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAaaadqAdqAdqAdqAdqAaaadqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaadBfdBfdBfdBfdBfaaddAraaddBfdBfdBfdBfdBfaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBidBjdBjdBjdBjadLaejadLdBmdBmdBmdBmdBnaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIaaadsIdsIdsIdsIdsIaaadsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBqdBqdBqdBqdBqaaadAraaddBqdBqdBqdBqdBqaaadueaaadBsaaaaaadBsaaaaaaaaadBsaaaaaaaaaaaaaaadBsaaaaaaaaadBsaaaaaadBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIaaadsIdsIdsIdsIdsIaaadsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadudaaaaadaaaaadaaaaadaaadAraaaaadaaaaadaadaadaaddueaaadBsdBsdBsdBsaaaaaaaaadBsdBsdBsdBsdBsdBsdBsaaaaaaaaadBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaadBfdBfdBfdBfdBfaaddAraaddBfdBfdBfdBfdBfaaddueaaadBsdBsdBsdBsaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaadBsdBsdBsdBsaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBidBjdBjdBjdBjadLaejadLdBmdBmdBmdBmdBnaaddueaaadBsdBsdBsdBsaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaadBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBqdBqdBqdBqdBqaaadAraaadBqdBqdBqdBqdBqaaadueaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaadueaaaaaaaadaadaadaaaaaadAraadaaaaaaaadaadaaaaaadueaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueduedueduedueaaaaaaaaadAraaaaaaaaadueduedueduddueaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBuaaddueaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaadueaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueduedueduedueaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcsTcknckncmabFKcmcbZUbZUcmdbZUbZUchYcmeclecmfcmgcmhcmichYcjqcjqcjqcjqaahaahamYaqvaoDaqwaqxaqwaoDaqyamYcmjcmjcmjcmjaahaahaahbZXbZXcjubZXdEldEldEldElahyahycmRcmqcmrcmscmtcmtcmucmvcmwcmtcmxcjzahyahyahyahybambisbeccimcsUbecbeccmzcfRcfRcfRcfRcmAcmBcmBcmBcmCcmDcmDcmDcmEcmDcmFcmDcmGcmDcmDcsVcmHcmIcmJcmKcmDcmDcmHcsZcmDcmDcmLcmDcmDcmDcmMcmDcmDcmDcmDcmGcmDcmDcmDcmEcmDcmDcmDcmHcmNcmBctacmOcmPcmQcncahyahOaieaieaqzaieaqAahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMbZMciVbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcmScmTcmUcmVcmWcjgcmXbObcmZcnacnbcnScndcnecnfcngcnhcmichYaahaahaahaahaahaahamYartaoDaqwaqBaqwaoDanFamYcnicnjcnkcmjaahaahaahbZXcnocjubZXbWTckJccqdEldElahyclYcnpcnqcnrcnsckIcntcnucnvckIcnwcjzahyahyahyahybaibjQbeccimbDMbDNbeccmzcfRcnxcfRcnycnzcnAcnBcfRcnCcnxcfRcfRcnDcnxcnEcfRcnFcfRcnxcfRcjKcnGchicnHcevcevcnIcevcnJcevcnKcnMcevcnLcxCcevcnJcevcevcevcevcnJcevcnNcevcevcevcnIcnOcnQcnPcnRcfRbKGcodahyahOaqDaqCaqZaqEaraahOaahaahaahaahaahaahaahaahaahaahbZMbZMbZMbZMbZMbZMcnTciVcgnbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjaahaahcjgcnUckXcnVcnWcnXcnYcnZcoacobcoacoccoocoecleclecofchYbRKchYaahaahaahaahaahaahamYanBarbardarcaoDaoDaqwamYcogcohcoicmjaahaahaahbZXconcjubZXclxcrlcmycrqdElahycowckFckFcopcoqckIckIcorckIckIcoscjzahyahyahyahybbobbocotcimbcnbeccoAbboclmckLckMciFclmckMciFcovcoGcoxcoycozcoScoxcoBcovciFclmckLckMciFcoCckicoDcmBcoEciFclmckLckMciFciFclmckLckMczAclmckLckMciFciFdCQckMciFclmckLckMciFcoFckickicfRcoXciFciFaahahOareaiearfaieargahOaahaahaahaahaahaahaahaahaahbZMbZMcoHcoIcoJcoJcoJcoJcoKcoLcoLcoLcoLcoLcoLcoLcoMcoNcoObZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbLjaahaahcjgcoPckncoQcmacoRcpqcoTcoUcoVcoacoWcpPcoYcoZcpacpbchYcpcchYaahaahaahaahaahaahamYariarharkarjarmarlarnamYcpdcohcpecmjaahaahaahcpjbZXarqbZXcpjcvVcrrcvWdElahyahyahyahycjzcplcpmcpncpocppcpTcprcjzahyahyahyahyahybbobbocpscptcmzbbobboahyahyahyahyahyahycovawtcpvcpwcpxcpycpzcpAcpBawucovahyahyahyciFciFcpDcpEckjciFciFahyahyahyczZcEVcEVcEVcEvcEvcEvcEVcEVcEWczZahyahyahyahyahyahyciFciFcjIcjIcjKciFciFaahaahahOahOaiaarraidahOahOaahaahaahaahaahaahaahaahaahbZMcpFcpGcpHbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcpIcoMcpJbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahcjgcpKcpLcpMcpNcpOcqecpQcoacpRcoacpSchYcqzcpUcqzcpVcpWchZchYcpXcpXcpXcpXcpXcpXamYamYarsauQaruauRarvamYamYcmjcpYcmjcmjcpXcpXcpjcpjcFucFrcqdcpjdElcxWcyjdElcrIcqfcqfcqgcjzcjzcjzcjzcqhcjzcjzcjzcjzcrIcqfcqfcqfcqgcpjcqicqjcqkcqlcqmcpjcpjahyahyahyahyahycovcqncqocqpcqqcqrcqscrJcpBcqucovahyahyahyahycqvcqwcqxcqycqvahyahyahyahyczZcuIarwcxUcEvcEvcEVcEVcEVcIFczZahyahyahyahyahyahyahycrNckicqAcqBciFaahaahaahaahahOahOahOahOahOaahaahaahaahaahaahaahaahaahaahbZMcqCcgnbZMbZMaahaahaahaahaahaahaahaahaahaahaahbZMbZMcgncqDbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahcjgctxckncqFcqGcqHcqIcqJcqJcqKcqLcqMcqNcqOcqOcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqYcqZcqOarxcracqYcqYcqYcqYarycqOcrdarzcrfcrgcrhcricrjcMIcMjcrmcrncrocOZcrudBNcrscrtcrucrucrvcrucricrwcrxcrycrzcrAcrBcrAcrCcrAcrDcrAcrzcrAcrEcrFcrGcrucrHcrRahyahyahyahyahycrWcqtcrKcrLcrLcrMcrLcrLcpBcqtcrWahyahyahyahycsKcrOcrPcqycsKahyahyahyahycIHcEVcEVcEVcEVcEVcEVcEVcEVcJKcrQcrQcrQcsLcrScrTcrUcrQcrQctccsNctccrQcrQcrQcrQaahaahaahaahaahaahaahaahaahaahaahcrXcrXcrXcrXcrXbZMcrYcrZcrZcrZcrZcrZaahaahaahaahaahaahaahcsacsacsacsacsacsbbZMcsccsccsccsccscaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahcjgcsdcknckncsecsfcsgcshcshcsicshcsjcskcslcsmcsncsncsncsocspcsqcsrcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsucsvcswcsxcsycswcswcsvdBPcswcswcszcsAcsBcrucrucrucricrucsCcswcsDcswcsEcswcswcswcsFcswcsvcswcsGcsHcsIcrucsJcsRahyahyahyahyahyctmcqtcrKcrLcsMcsMcsMcrLcpBcqtctmahyahyahyctucsOcrOcsPcsQcumcsSahyahyahycMYcEVcEVcDncEVcEVcEVcEVcFecrQcrQcwtctdcsXcwtcwvcsXcsYcwwctbcsYctbctecxOcwxcrQcrQaahaahaahaahaahaahcrXcrXcrXcrXcrXctfctgayocrXctictjcrZayqctlcurcrZcrZcrZcrZcrZcsacsacsacsactnctoayscsactqctrcscayvcttcuTcsccsccsccsccscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaabLjbLjcjgctvctwcALctycmacjgbRMctActBctCctDctEctFctGctHcrfcrfcrfctIctJctKcrfctLctMctNcrfctFctOcrfcrfctPctQctRctSctTctQctQctUctVctWcrocrpctXctYctZcuacubdCbcuadCfcuacuccudcuacuacuacubcuecufcuacubcuacugcuacuhcuicuacuacubcuacujcrucukcruculcuYahyahyahyahyahyctmcuncuocrLcsMcupcsMcrLcuqcunctmahyahyahycvacqycrOcrPcqycqycvaahyahyahycMYcJacEVcLvcEVcQdcEVcEVcEVcrQcxScsYcwrcwscwscwscwscwscwsczmczlczoczncPbcPbcBjcrQaahaahaahaahaahaahcrXcuuazEcuucrXcNfcuxdGMcrXcuzcuAcrZcuNcuCcuDcrZcuEazFcuEcrZcuGaAdcuGcsacOScuJdHccsacuLcuMcsccwEcuOcuPcsccuQaADcuQcscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadcuScuScvgcuUcuScuVcuWcuScuScuScuXcvocuZcuXcvrcvbcuXcvccvdcvecvfcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpjcvNcvhcrFcvicvjcpjcpjcpjcpjcrIcqfcqfcqfcqfcqgcpjbRRcvlcqdcpjcrIcqfcqgcpjcrIcqfcqgcpjcvmcrucrucrGcvncpjcpjahyahyahyahyahycwjcvpcuocrLcrLcrLcrLcrLcuqcvqcwjahyahyahycqvcwqcrOcrPcqycvscqvahyahyahycRUcWRcEVcEVcEVcEVcEVcEVcWRcrQcBkcsYcsYcsYcvucvucvucvucvuctbcDpcwzcsYcsYcsYcducrQaahaahaahaahaahaahcrXaAEcvxaAEcrXcrXcvycrXcrXcwFcwGcrZcrZcvBcrZcrZaAFcvDaAFcrZaAGcvFaAGcsacsacvGcsacsacvHcvIcsccsccvJcsccscaAHcvLaAHcscaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxfcvOcvPbHqbIfcvScvTcvUdEKdEJcvXcvYcvZcwacwbcwccuXcpXcpXcpXcpXcpXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcpjcwdcwecwfcwgcwdcpjdELdELdELahyahyahyahyahyahycpjcwhcwicwhcpjahyahyahyahyahyahyahycxAcqicqicqicwkcqicxAahyahyahyahyahyahycovcuncwlcwmcwncwocuncuncuqcwpcovahyahyahycsKcqycrOcrPcqycqycsKahyahyahyczZcPicEVcEVcEvcPocEVcEVcEVcrQcvucvucsYcsYcBicDqdBUcxPbdUctbcxRcsYcFdcFdcFdcFdcrQaahaahaahaahaahaahcrXcwBcwCcwDcPvcwDcwJcwHcwLcwKcwUcwTcwXcwVcwMcwNcwMcwOcwPcrZcwQcwRcwScPBcwScyacyecybcyqcyfcwYcwZcxacxbcxccxbcxdcxecscaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxNcxgcxgcxgcxgcvScvTcxhcxhcxicuXcxjcxkcxlcxmcxncuXcxocxpcxqcxraahaahaahaahaahcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxscxtcxucxvcxwcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcxxcxycwhahyahyahyahyahyahyahyahycxzcyBcxBczkcxDcyBcxzahyahyahyahyahyahycovcovdHdcxFcxGcxHcxIcxJdHecovcovahyahyahycumcsScxLcxMcqyctucsOahyahyahyczZczZcEVcTdcQncUncEVcEVddacrQcEFcxPcsYcsYcxQcxQcxQcxQcxQctbcxRcsYcFdcFdcFdcFbcrQaahaahaahaahaahaahcrXcxVaAKaAIcxYcxZcytcyrcrXcyccydcrZcAkcyucygcyhcyidENcykcrZcyldEPcyncyocypcAqcAucsacyscAxcBocBncyvcywcyxcyydEQcyAcscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczTcyCcyDcyEcyFcxgcxgcvScyGcyHcyIcyJcyKcyLcyMaGXcyOcyPcuXcxqcxqcxqcxrcxrcxrcxrcxrcxrcxrcyQcyRcyScyScyScyScyScyScyScyScyScyScyScyTcyScyUcyVcyWcyXcyYcyVcyZczaczbczaczaczaczaczaczaczaczaczaczccwhahyahyahyahyahycxzcxzcxzcxzczdczebTgczgczhcxzcxzcxzcxzahyahyahyahycovcovcovcziczjczicovcovcovahyahyahyahyahycvacrOcrPcqycvaahyahyahyahyahyczZczZczZczZddeczZczZczZcrQcxQcxQcDocwycwycwycFccHvcHrcJzcHxcsYcFdcFdcFdcFdcrQaahaahaahaahaahaahcrXcrXcrXcrXcrXcrXcBqcrXcrXczpcuAcrZcrZcBrcrZcrZcrZcrZcrZcrZcsacsacsacsacsacBucsacsacuLcBvcsccsccsccsccsccsccsccsccscaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczrczsczrczscztczuczvczwczxczyczzcxgcArczBczCczDczEcuXcuXczFczGczGczGczGczGczGczGczGczGczGczHcxqcxrcxrcxrcxrcxrczIczIczJcxrcOHczKcxqcxrczLczMczNczOczPcwhczQczQddgddmddkczQczQcwhcwhcwhcwhczRcwhahyahyahyahyahycxzczSczScABczUczVczWczXczYcAIcAacAacxzaahahyahyahyahyaahaahczicAbcziaahaahaahahyahyahyahyahycqvcAccAdcAecqvahyahyahyahyahyahyahyahycBgcWQcBgahyaahcrQcJNcxTcKMcxTcxTcFacFacKNcxTcxTcMecDrcFdcFdcFdcmYcrQaahaahaahaahaahaahcAicCbaEJcCbcAicAjcBxaywcAicAmcAncAoayEcCccBbcAocCfaFxcCfcAocCkaFzcCkcAscAtcClazxcAscAwcCmcAyazycAAcBAcAycCoaFRcCocAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcAEcAFcxgcxgcvScvTcAGczzcAHcBTcAJcAKcMdbWMcuXcxqcANcxqcxqcxrcxrcxrcxrcxrcxrcxrcxrcAOcxrcxraahaahaahcxrcAPcAPcAPcxrcxrcxrcxrcwdcwdcAQcARcAScwdcwdcwhcwhcwhcwhcwhczQcwhcwhaahaahcwhczRcwhaahahyahyahyahycxzcATczecAUcAVczeczeczgcAWcAXczecAYcxzaahahyahyaahaahaahaahczicAZcziaahaahaahcBacCScBccBacqvcqvcBdcBecBfcqvcBgcBgcBgcBgcBgahyahyahycBgcWQcBgaahaahcrQcvucvucMXcGzcGAcGAcGAcNJcGAcGzcNMcsYcNVcNVcNWcNXcrQaahaahaahaahaahaahcAiaGxaHMaGxcAicBmcDydHfcAiczpcBpcAocDDcDCcBscAoaJaaHOaJacAoaKbaJIaKbcAscBtcDMdHgcAscBwcBvcAycFkcBycBzcAyaKnaKpaKncAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacymcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWcBXcBgcBgahyahycBgcWQcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUdFccGzcNMcsYcPccPccPccOVcrQaahaahaahaahaahaahcAiaKqaKFaHMcAicAicFlcAicAicCdcvAcAocFmcCecAocAoaHOaKGaKHcAoaLuaLtaJIcAscAscFncAscAscvHcFycAycAycCncAycAyaKpaLxaLvcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcCrcyFcxgcxgcvScvTcAGczzcCscCtcCucCvcCwcCxcCycCzcCAcxrcxraahaahaahaahaahaahaahcxrcCBcCCcxrcxraahaahcBIcBQcCEcCDcBIcCGcCGcCGaahcwdcCHcCIcCJcCKcCKcCKcCKcCKcCKcCKcCLcCKcCKaahahycwhczRcwhaahaahaahaahahycxzcCMcCNcABcCOczVcCPcCQcCRcEKcCTcCUcxzaahaahaahaahaahaahaahczicCVcCWcCXcCXcCYcCZcDacDbcDccDdcDecDfcDgcDhcDicBgcDjcDkcDlcDmcBgcBgcBgcBgcWQcQzcBgcBgcrQclXcxQcMXcGzcHscHtcIGcOYcHwcGzcNMcsYcQHcQHdERcPacrQaahaahaahaahaahaahcAicDtcDucDvcDwcDvcFAcFzcDzcDAcwIcDBcHFcHAcDEcDFcDEcDGcDHcAocDIcDJcDKcDLcDKcHGcHKcDOcwWcHNcDPcDQcDRcDScDTcDScDUcDVcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcDWcDXcDWcDYcDZcEacEbcEccEdcEeczzcEfcCtcEgcEhcEicEjcEkcCtcxrcxraahaahaahaahaahaahaahaahcxrcElcEmcxqcxraahaahcBIcBQcCEcCDcBIcEncEocCGcCGcwdcEpcEqcErcCKcEscEtcEuddpcEwcEwcEwcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcATczecEycAVczecEzczgcEAcFHczeczecxzaahaahaahaahaahaahaahczicECcEDcEEcEDcBackacEGcEHcFXcEJcGfcELcEMcENcEOcEPcEQcERcERcEScETcEUcEUcQecZMcEXcQfcEYcEZcxTcxTcQgcQhcHscJLcJMcQFcHwcGzcNMcQIcQGcQGcQGcQGcQGaahaahaahaahaahaahcAicFfdEScFhcFicFjcIKcIJcAicyccydcAocIPcILcFocFpcFqdEUcFscAocFtdEVcFvcFwcFxcIQcIRcAscyscAxcKacJRcFBcFCcFDcFEdEWcFGcAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcGjcFIcFJcFKcDZcxgcxgcvScFLcyHcFMcFNcFOcFPcFQcFRcFScFTcCtaahaahaahaahaahaahaahaahaahaahcxrcElcFUcxqcxraahaahcBIcCFcCEcCDcBIcFWcGpcFYcFZcwdcGacGbcGccCKcGdcGecEwcEwcEwcEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcxzcxzcxzcGqczecGgcGhcOIcGBczecGkcxzaahaahaahaahaahaahaahczicECcGlcziczicBacGmcGncGocGScEJcHccGrcrPcqycGscBgcGtcGucGvcGwcBgcBgcBgcGxcXdcERcERddqcrQcrQcrQcrQcrQcKJcKKcKLdhfcHwcGzcNMcQGcQGdkBdkBdlCcQGaahaahaahaahaahaahcAicAicAicAicAicAicKbcAicAiczpcuAcAocAocFmcAocAocAocAocAocAocAscAscAscAscAscKScAscAscuLcBvcAycAycAycAycAycAycAycAycAyaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacHHcGCcGDcGEcGEcGFcGGcGGcGGcGGcGHcGIcGIcGJcGKcGLcCtbkQbkQahyahyahybkQbkQaahaahaahcxrcGMcGNcxrcxraahaahcBIcFgcGPcFFcBIcGRcHRcCGcCGcwdcGTcCIcGUcGVcGWcGWcGWcGXcGXcGXcGXcGYcCKahyahycwhczRcwhaahaahaahaahaahcxzcGZczecABcHaczVcCPcCQcHbcHSczecGkcxzaahaahaahaahaahaahaahczicAbczicziaahcBacHdcHedmEcHgcHfcHccHicHjcHkcHlcHmcHncHocHmcHpcHmaahcBgcBgcHqcGxcGxdnjcOUdBScFVcMfcrQcrQcMgcMhdhfcHwcGzdBVdDhdDgdDjdDidDkcQGaahaahaahaahaahaahaahaahaahaahcHycHzcKTazzcHycHCcHDcHEazAcKWcIzcHEaahaahaahaahaahaahaahcHIcHJcLgazBcHIcHMcLhcHOazCcHQcJtcHOaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacJwcGCcDXcHTcDXcHUcHVcxgcxgcHWcCtcHXcGKcHYcHZcIacCtbkQcIbcIccIccIccIcbkQaahaahaahcxrcIdcIecxraahaahaahcBIcBQcIfcGOcBIcIhcIicIjcIkcwdcIlcImcIncCKcGecIocGecEwcGecEwcEwcEwcCKahyahycwhczRcwhaahaahaahaahaahcxzcIpczecIqcAVcIrcIscItcAWcIuczecGkcxzaahaahaahaahaahaahaahczicAbcziaahaahcBacIvcIwcHhcFXcIycKDcrOcrPcIAcDicHmcIBcICcIDcIEcHmaahaahcBgcHqcBgcOTdDlcNKcNTcNLcNNctzcNOcNPcNQdDmcNScNTdDncQGdDodDqdDpdDrcQGaahaahaahaahaahaahcHycHycHycHycHycIIcMpdHhcHyczpcuAcHEcMqcIMcINcHEcHEcHEcHEcHEcHIcHIcHIcHIcIOcMrdHicHIcuLcBvcHOcMtcIScITcHOcHOcHOcHOcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadcvMcvMcvMcvMcvMaadaadaadcuScuScuScuScuScuScuScIUcIVcIWcIXcIYcIZddOcJbcCtcCtahycIccJccJdcJccIcahyahyaahcJecJecJfcJgcJeaahaahaahcBIcBQcJhcJicJjcJkcJlcJmcJmcwdcJncJocJpcCKcJqcGecEwcEwcEwcEwcJrcExcCKahyahycwhczRcwhaahaahaahaahaahcxzcJsczecMLcJuczVcJvczXczYcNgczeczecxzaahaahaahaahaahaahaahczicAbcziaahaahcBacJxcJycIxcGScJAcJBcJCcJDcJEcJFcHmcJGcJHcJIcJJcHmaahaahcBgcGycBgcBgcBgcrQdFdcsYcOWdHjcrQcHtdDscOYdDtcsYdDucQGdDvcQGdDwcQGcQGaahaahaahaahaahaahcHycJOcJPcJQcHycHycMucHycHycJScvAcHEcMvcJTcHEcHEcJUcJVcJWcHEcJXcJYcJZcHIcHIcMwcHIcHIcvHcMxcHOcHOcKccHOcHOcKdcKecKfcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaadbkQaahaahaahaahaahcuScuScuScuScCtcCtcCtcCtcCtcCtaahahycIccJccJccJccIcahyahyaahcJecKgcKhcKicJecKjcKjcKjcBIcBIcKkcKlcBIazDcKncKocKpcKqcKrcKscKtcKqcKucGedeccKvcEwcKwcKwcKwcCKahyahycwhczRcwhaahaahaahaahaahcxzcKxczecHScKyczecKzczgcKAcHScKBcKBcxzaahaahaahaahaahaahaahczicAbcziaahcKCcKCcNYcKEcKFcKCcKCcKCcKGcKHcKIcKCcKCcKCcKCcKCcKCcKCcKCaahcBgcHqcBgaahaahcrQcrQcQAcQBcQCcrQcQDcQEdDydDxcsYcsYcQGdDzcQGdDAcQGaahaahaahaahaahaahaahcHycKOcKPcKQcKRcKQcMzcMycKUcDAcwIcKVcMBcMAcKYcKZcKYcLacLbcHEcLccLdcLecLfcLecMCcMDcLicwWcHNcLjcLkcLlcLmcLncLmcLocLpcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccLqcLrcLscIcahyaahaahcJecLtcLudEXcJecLwcLxcLycLzcBIcLAcBIcCGcCGcLBcCGcLCcKqcLDcLEcLFcKqcLGcLGcLGcLGcLGcLGcLGcLGahyahyahycwhczRcwhcziaahaahaahaahcxzcxzcxzcxzcLHcLIcLJcLKcLLcxzcxzcxzcxzaahaahaahaahaahaahcziczicAbczicKCcKCcLMcLNcLOawvcLQcLRcLScLTcLUcLVcLWcLXcLYcLZcMacMbcMccKCcKCcBgcHqcBgahyaahaahcrQcrQcrQcrQcrQcrQcrQcrQcrQdDCdDBcQGcQGcQGcQGcQGaahaahaahaahaahaahaahcHycMidEYcMkcMlcMmcMndBWcHycyccydcHEdBYdBXdCadBZdCcdEZdCedCddCgdFadCidChdCkdCjdClcHIcysdCmdCodCncMEcMFcMGcMHdFbcMJcHOaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQcIccMKcNZcMMcIcbkQcMNcMNcMNcMNcMPcMOcKjcMQcMRcMScMTcMUcMVcMWdDDcoucMZcNacMUcNbcNccNdcNecrVcOpcNhcNicNjcTfcLGcNlcLGcLGahyahycwhcNmcNncziczicziczicziczicNocNpcxzcNqcxzcNrcxzcNqcxzcEDcEDcziczicziczicziczicziczicUqcXxcUucKCcNucLPcLPcNvcNwcNwcNxcNycNzcNAcNBcNCcNDcNEcNEcNEcNFcLPcNGcKCcZgdDEcBgahyahyaahaahaahaahaahaahaahaahcWudDFdbMdbMdDGcWuaahaahaahaahaahaahaahaahaahaahcHycHycHycHycHycHycHycHycHyczpcuAcHEcHEcHEcHEcHEcHEcHEcHEcHEcHIcHIcHIcHIcHIcHIcHIcHIcuLczqcHOcHOcHOcHOcHOcHOcHOcHOcHOaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahybkQbkQcOsahycOMbkQbkQcMNcOacObcOccOdcOecOfcOgcOhcOicMTcOjcOkcOlcOlcOmcOncOocPFcOqcNccNdcNecOrcPPcOtcOtcyzdDHcOvcOtcOwcLGahyahycwhcOxcOycOzcOAcOBcOCcOCcOCcOCcOAcOAcOAcODcOEcOFcOAcOCcOCcOGcOCcOCcOCcOCcOCcOCcOCcOCdlDdBIdBHcKCcOKcLPcLPcOLcLPcLPcPYcONcOOcOPcOQcONcPYcLPcLPcLPcORcLPcLPcKCdBJcHqcBgahyahyahyaahaahaahaahaahaahaahcWudDIdbMdbMdDJcWuaahaahaahaahaahaahaahaahaahaahcPdcPecPfcPgcPhaGYcPjcPkcPdcPlcPmcPncuscPpcPpcPqcPpcutcPrcPscPpcPtcPpcPucPpcPpcvkcPncPwcPlcPxcPycPzcPAaEycPCcPDcPEcPxaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahycQscPGcPGcPHcPGcPIcPJcPKcMNcPLcPMcPMcPNcPOcRfcPQcPRcPScMTcPTcPUcOocPVcPWcOocPXcRucPZcNccQacQbcQcdcEdDKdDMdDLdDNcQicQjcQkcLGahyahycwhcQlczQczicziczicziczicziczicziczicEDcEDcEEcNscEDczicziczicziczicziczicziczicziczicQmcEDdBKcKCcQocQocLPcQpcQqcQrcRJcQtcOOcQucQvcQwcRJcQxcQocLPcQycQqcQocKCdCRcHqcBgahyahyahyahyaahaahaahaahaahaahcWucWudDPbsUcWucWuaahaahaahaahaahaahaahaahaahaahcPdcQJcQKcQKcQLcQKcQKcQMcQNcQOcQPcQQcQRcQRcQRcQScQRcQTcQUcQVcQWcQXcQRcQYcQRcQRcQRcQQcQZarAcRbcRccRccRccRdcRccRccRecPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjbLjaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahycSAcRgcRhcRicRjcRkcRlcRmcRncRocRpcRqcRrcRscRtcSLcRvcRwcRxcMTcRycPUcRzcRAcRBcRCcOlcRDcREcRFcRGcRHcRIcTadDQcRKcRLcRMcRNcROcRPcLGahyahycwhcRQcwhcziahyahyahyahyahyahyahycziczicziczicziczicziaahaahaahaahaahaahaahaahaahcziczicRRdCScKCcRTcRWcRVcLPcRWcRXcRJcRYcOOcOPcOQcRZcRJcRTcRWcLPcRVcRWcSacKCdCTcSccBgahyahyahyahyahyaahaahaahaahaahahydDRdbMdDUdDRahyaahaahaahaahaahcXGcXGcXGcXGaahcPdcSdcSecSfcSgcShcSicSjcSjcSkcSlcSmcSlcSlcSlcSncSlcSlcSlcSocSpcSqcSqcSrcSqcSqcSqcSscStarBcSucSucSvcSwcSxcSycSyarCcPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahbLjbLjaahaahaahaahaahaahaahaahaahbkQbkQahyahyahybkQbkQcTZcSBcSCcPMcSDcPMcSEcSFcSGcSHcPMcPMcSIcSJcSKcUlcSMcSNcSOcMTcSPcSQcSRcSScSTcSUcSVcSWcSXcSYcSZcNecRIcUscTbcOtcTccOtcTearDcTgcLGahyahycwhcRQcwhahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahaahaahaahczicThcRScKCcTicTjcTkcLPcTlcTjcRJcTmcTncTocOQcTmcRJcTjcTjcTpcLPcTlcTqcKCcSbcTrcBgahyahyahyahyahyahyahyahyahyahyahydDTdbMdDUdDTahyahyahyaahaahcXGcXGasfasecXGaahcPdcPdcTscTtcTucTvcTwcTxcPdcPncPncPncTycTzcTzcTAcTBcTCcTDcTEcTFcTGdCUcTHcTzcTzasgcPncTDashcPxcTJcTKasicTMcTNcTOcPxcPxaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQcTZcSBcTPcTQcTRcTScTTcTUcTVcTWcPMcPMcTXcSIcTYcKjcUvcUacUvcMTcUbcUccUdcUecUecUfcPXcPFcUgcUhcUicUjcRIcUkcUycUmcUodcLcUkcUkcUkcLGahyahycwhcUpcwhahyahyahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahaahaahaahaahaahaahaahahyczidCVcRScKCcUrcLPcORcLPcLPcLPcUHcONcOOcOPcOQcONcUHcLPcLPcOLcLPcLPcUtcKCcSbdCWcBgahyahyahyahyahyahyahyahyahyahyahycWudDWdDVcWuahyahyahyahyaahcXGasjaskdaDcXGaahaahcPdcUIcUwcUwcUwcUxcPdcPdaahaahcPncPncUYcUzcUzcUAcPncUBcUCcUDcPncPncPncPncPncPncPncUBcPmcPxcPxcPxcPxcPxcPxcPxcPxaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccUEcUEcUFcUGcVucVgcUJcUKcULcUMcPMcUMcUNcUOcUPcUQcURcUScUTcUUcUVcRqcUWcUXcVQcUZcOocOocOocOocOocVacRucVbcUhcVccNecVdcVecVfcWicVhcVicVjcVkcVlcVmahyahycwhcRQcwhahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyaahaahaahahyahyahyahyahyahyczicVncEDcKCcLPcLPcVocNEcNEcNEcNDcNCcVpcVqcVrcNycNxcNwcNwcVscLPcLPcLPcKCcGxcVtcBgahyahyahyahyahyahyahyahyahyahyahydDRdbMdbSdDRahyahyahyahyahycXGaslaskasmcXGahyahyahyahyahyahyahyahyaahaahaahaahaahahyahyahyahyahycWvcVvcVwcVxcPnaahaahaahaahaahabTasoasnabTaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIccVycVzcVAcNZahycTZcVBcVCcVDcVEcVFcUMcVGcVHcVIcVJcVKcVKcVLcVMcVNcPMcVOcVPcWBcVRcVScVScVTcOocVUcVVcMTcVWcVXcVYcNecVZcWacWbcWicWccWdcWecWfcWgcVmcwhcwhcwhcRQcwhcWhcWhcWOcWjcWkcWhcWhcWOcWjcWkcWhcWhahyahyahyahyahyahyahyahyahyahyahyahycziczicWlczicKCcWmcWncWocWpcvtcLPcLRcONcOOcOOcOQcONcLRcLPcvtcWpcWqcWrcWscKCcBgcWtcBgcBgahyahyahyahyahyahyahyahyahyahydDTdbMdbSdDTahyahyahyahyahycXGcXGaspcXGcXGahyahyahyahyahyahyahyaahaahaahaahaahahyahyahyahyahyahycXncWwcWxcWycWuaahabTabTabTabTabTastasqabTabTabTabTabTaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccUEcUEcWzcWAcVucXucWCcWDcWEcWFcWGcWHcWIcWJcWJcWJcWFcWFcWFcWKcWLcPMcWMcWNcMTcMTcXycWPcwAcvvcXycWPcWScWTcWUcVYcNecWVcWWcWXcWicWYcWZcXacXbcXccVmdDXcXecXecXfczQcWhcXgcXhcXicXjcXkcXlcXhcXmcXhcXhcWhcWhcXHcXocXocXocXocXocXpcXqcXHcXpcXqcXqcXrcXscXtcKCcKCcNYcKEcKFcKCcKCcKCcYfcXvcXvcKIcYfcKCcKCcKCcNYcKEcKFcKCcKCcXtcXwdCXcXqcXqcZncXzcXzcXzcXAcWucWucWudDYcWucWwdDZcWucZncXzcXzcXAcWucWucXBasvdHkcWucWucWucWucZncXzcXzcXAcWucWucWucWucWucWucWucZncXzcXzcXAcWucXDcXEcXFcWuabTabTaswacwacwasxacuaeVaszasyacwacwabTabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQcZocXIcXJcVDcXKcXLcUMcUNcXMcXMcXNcUOcVEcXOcXPcWFcXQcXRcXScXTcXUcXVcXWcXXcXYcXZcYacYbcYacYccYdcNecYecWacNcdaTcYgcYhcYicYjcYkcVmcRQczQcYlczQczQcYmcYncYocYpcYqcYncYrcYpcYscYtcYucYvcYwcYxcYycYxcYxcYzcYxcYAcYBcYxcYxcYCcYDcYEcYFcYGcYHcYCcYxcYIcYxcYycYJcYKcYxcYxcYxcYLcYxcYMcYNcYycYxcYxcYxcYCcYxcYGcYOcYPcYPcYQcYRcYScYRcYTcYRcYUcYVdCYcYRcYScYRbtlcYRcYRcYRcYWcYRcYXcYScYYasAcYZdCYcYXcYRcZacYRcYRcZbcYRcYRcZccYUdCYcYRcYRcZdcYRcYRcYScYRcYXcZecZfcXFasBasDasCacuacuacuasEasFaeVacuacuacuacuawwabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccZkcZkcZlcZmdbDdbdcZpcZqcVMcZrcPMcUMcUNcZscZtcZucVGcVHcZvcZqcZwcZxcZycZqcZzcZAcZBcZCcZDcZEcZFcZGcZHcZGcZIcZJcZKcZLdmbcZNcZOcZPcZQcZRcZScZTcVmcRQcwhcwhcZUcwhcZVcZWcZXcWhcZVcZWcZYcWhcZVcZZdaadabdacdaddaddaddaedaddaddafdaddaddaddagdaedahdaidajdakdagdaddajdaddaddaddaedaddaddaddaddaddafdaddaddaddaddaddagdakdajdaldaddaedagdamdamdamdandamdamdaodamdamdamdambujdamdamdamdapdamdaqdaodardasdatdaudaqdamdandamdamdaodamdamdamdamdamdamdamdavdamdamdaudamdaqdawdaxasUasSasWasVasXasXatbasZatdatcacJacuacuacuadKabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahahycIcdaEdaFdaGcNZahycTZdaHdaIdaJdaKcTSdaLcUNdaMdaNaImcUNcPMdaPcPMdaQcPMcPMdaRdaSdaSdbIdaUdaVdaWdbIdaUdaSdaXdaYdaZdbadbbdbcdbNdbedbfdbgdbNdbedbcdbccRQcwhdbhdbidbjcZVdbkdbldbmcWhdbndbldbocZVcWhdbpcXhdbqdbrdbrdbrdbsdbtdbrdbrdbudbrdbrdbvdbwdbxdbydbzdbAdbBdbCdcedbCdbCdbEdbFdbCdbCdbGdbCdbCdbCdbHdbCdbCdcfdbCdbBdbJdbzdbydbKdbLdbvdbMdcrdbMdbMdbMdbMdbOdbMdbVdbMdbMdbMdbMdbMdbMdbPdbMcWwdbQdbRdbScXEdbTcWwdbMdcrdbMdbMdbUdbMdbVdbMdbMdbMdbVdbMdbMdbMdbMdbWdbMcWwdbWdbXcXFdbYadCacuacuateatOatfatSatPacJacuacuacuatTabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccZkcZkdccdcddcDdczdcgdchdcidaPcPMcUMdcjdckdcldcmdcndcodcpcTQdcpdcmdcodcqdcJdcsdctdcudcvdcwdcxdcydcxddbdcAdcBdcCddndmkdcFdcGdcHdcIddtdcKczfdbcdcMcwhdcNdbidcOcZVdcPdcQdcRcWhdcSdcTdcUcZVcWhcWhcWhcWhcXHcXocXocXocXocXocXpdcVcXHcXpdcWdcXdpPdqIdpQdcXdcWddDdcVcXHcXocXocXocXocXpdcVcXHcXocXocXocXocXpdcVddDddcddddskdtrdstddddddddPddhcZncXzcXzcXzcXzcXAddhcZncXzcXzcXzcXzcXAddhddPddiddjdBAdBCdBBddjddiddPddhcZncXzcXzcXzcXzcXAddhcZncXzcXzcXzcXzcXAddhddPddodBEdBDdBFddsabTaezacuaeVacuacuatVatUacuacuacuacuaeCabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQddWdducXJddvddwcTSddxcPMcUOcVFcVEcPMcPMddyddzcWLddAddBddCdeedcsdcudcudcvdcwddEddEddFddGddHddIdcCddJddKddKddKddLddMddNddNdBGdbccRQcwhdekddQddRcZVddSddTddScWhddUddVddUcZVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqddXddYddZdeadebdeqaaaaaaaaaaaaaaadeddeddeddeddeddeddedaaaaaaaaaaaaaaadeWdefdegdehdeidejdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdeldemdendeodepdfbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdesdetdeuddsatWatYatXauaatZaegacuaeXaubaciaeYabTabTaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahbkQcIcdevdevdewcZmdbDdbddexcZqdeydezcVNcUMcPMdcjdclcVHcSHcPMcWLcWLcVIcVJdeAdeBdeCdeDdcudeEdeFdeGdeHdeIdeJdeKdeLdeMdeNddJddKddKdeOdePdeQdeRddKdeSdbccRQcwhahyahyahycZVddSdeTddScWhddUdeUddUcZVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVaaaaaadfhdeXdeYdeZdeadfadfmaaaaaaaaaaaadeddeddeddeddeddeddeddeddedaaaaaaaaaaaadfBdfddegdfedffdfgdfBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfIdfidfjdfkdeodfldfIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfLderdesdfndfoddsabTabTabTaflaflafmaflaflabTabTabTabTaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahahycIcdfpdfqdfrcNZahycTZdfscPMcUMcWLcVIdeydftcZqdfucZqdftcZqdfvcWLcPMcPMdfwdfxdfydfzdcudcudfAaIndfCdfDdfEddbdfFdfGdfHddndfXdfJdfKdfYdfMdfYdfNdbcdbccRQcwhahyahyahyahyddSdfOddScZVddUdfPddUdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdgwdfRdfSdfTdfUdfVdfWdhgdcWaaaaacaaadeddeddeddeddeddeddeddeddeddeddedaaaaacaaaddcdhudfZdgadgbdgcddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddidgddemdgedgfdggddiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddodghdgidgjdgkddsaahaflagBaflaudafBaueafDafEaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahahycIcdevdevdgldcddcDdczdgmcTSdgncWLcPMdgocTTcTSdgpcTScTScTSdgpdgpdgqcPMdgrdgsdaSdgtdcudgudgvdhzdgxdfDdgydgzdgAddIdgBdgCdgCdgCdgCdgCdgCdgCdgCdbcdgDdgEcwhcwhahyahyahydgFdgGdgHaaadgIdgJdgKdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdgLdgMdgNdgOdgPdgQdgRdfadeqaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadeWdfddgSdgTdeidfgdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdfidemdgUdgVdfldfbaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdgWdgjdgXddsaahaflauPaflafPafQafRaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahbkQcIccIccIccIccIcbkQddWdgYcXJcPMcWLcPMcPMdgZdhacWLcPMcPMdhacWLcWLdhbdhadhcdhddaSdhedcudcucyNdhEdfCdhhdhidgzdhjdfGdhkdhldhmdhndhodhpdhqdhrdhsczQczQdhtczQcwhahyahyaaaaaaaaaaaaaaaaaaaaaaaadeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdhIdfRdhvdfTdhwdhxdgRdhydfhaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadhMdhAdhBdgadhCdhDdhMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadifdhFdemdgedhGdhHdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydhJdesdhKdhLddsaahaflagAaflagfaggaggaghafEaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahbkQbkQahyahyahybkQbkQdiLdhNdhOdhPcVIdhQdhRdhSdhTdhUdhVdhWdhXdhYdhZdiadibdicdiddaSdiedcudcucyNdiYdfCdfDdigdgzdfFdihdgBdiidijdikdildimdindiodipcXecXediqdircwhahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVdeVaaaaaadfmdeXddYddZdgRdfadfmaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadfBdfddgSdehdeidfgdfBaaaaaaaaaaaaaaadisditdiudiudiudivdiwaaaaaaaaaaaaaaadfIdfidemdendhGdfldfIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfLderdesdixdgXddsaahaflaflaflaflagqaflaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahahyahyahyahyahydjtdizdiAdiBdiCdiBdiDdiEdiCdiBdiFdiEdiCdiCdiDdiGcMNcMNdaSdiHdiIdiJdiKdjudiMdiNdiOdgzdfFdihdgBdiidijdiPdiQdiRdijdhrdiSdiTdiUdiVdiWcwhahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdjwddYdjcdjddjedcWaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaaddcdjfdjgdjhdeidjiddcaaaaaaaaaaaaaaadjjdjkdjkdjkdjkdjkdjjaaaaaaaaaaaaaaaddidjldemdjmdjndjoddiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddodjpdjqdjrdjsddsaahaahaahaflagyaggagzaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaaaaaaaaaahydkCdjxdbDdbDdkJdjxdkLdbDdkJdjxdkLdbDdkJdkUcOsbkQbkQahydaSdgzdgzdgzdgzdgzdjydgzdgzdgzdjzdjAdjBdjCdjCdjCdjCdjCdjCdjCdjCdjCcxxdhtcwhcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqdeXddYddZdgRdfadeqaaaaaaaaadeddeddeddeddeddeddeddeddeddeddedaaaaaaaaadeWdfddgSdehdeidfgdeWaaaaaaaaaaaaaaadjjdjDdjEdjkdjEdjDdjjaaaaaaaaaaaaaaadfbdfidemdendhGdfldfbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfcderdesdixdgXddsaahaahaahaflagyagLagzaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAacAaaadjFaaabkQcIcdjGcNZcMKcIcdjGcNZcMKcIcdjGcNZcMKcIcbkQaahdjHdjHdjIdjJdjKdjLdjMdjNdjOdjPdjQdjRdjSdjCdjTdjUdjVdjWdjXdjYdjZdjCdjCdhtcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgwdfRdfSdkadfUddZdgRdebdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdejdgSdehdeidgSdhMaaaaaaaaaaaadisdkbdkcdkcdkddkcdkcdkbdiwaaaaaaaaaaaadifdhGdemdendhGdepdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiyderdesdixdgXddsddsaahaahaflaflaflaflaflaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaadaadaaaaadaadaadaaaaadaadaadaaaaadaadaadaaaacAaaddkeaadbkQcIcdkfdkgdkhcIcddrdcYdfQcIcdkldkmdkncIcaahaahdjHdkodkpdkqdkrdksdktdkqdkudjPdkvdkwdkxdjCdkydkydkzdjXdjXdkAdkAdEbdjCdhtcwhdkYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadkDdkEdkFdkGdkHddZdkIdlEdfSdfRdkKdeddeddeddeddeddeddeddeddeddeddeddeddeddlUdkMdkNdkOdkPdehdeidfgdhMaaaaaadisdkcbwQdlWdHmdHldjkdHldHnbCYbEMdkcdiwaaaaaadifdfidemdendkTdlYdkVdkWdkXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmGdkZdladlbdlcdixdgXdldddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledlfdlgaaadledlfdlgaaadledlfdlgaaadledlfdlgaaaacAaadaadaaaaaacIcdlhdlidlhcIcdkjdkidkjcIcdlkdlldlkcIcaahaahdjHdlmdlndkqdlodlpdlqdlrdlsdltdludlvdlwdlxdlydlzdlAdlzdlzdlBdlzdEcdjCdhtdDadoidlFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhIdfRdhvdkadlGdlHdlIaOpdlKdlLaOrdeddeddeddeddeddeddeddeddeddeddeddeddeddlNdlOdlPaOsdlRdlSdlTdokdkNdkMdlVdjjbuAdjkdjkdjkdjkdjkdjkdjkdjkdjkbuAdjjdoEdkWdkVdkXdlZdmadDbdmcdmddmedmfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmgdmhdmidmjdDcdixdgXdmlddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaddledmmdlgaaddledmmdlgaaddledmmdlgaaddledmmdlgaadacOaaaaadaadaaacIcdlhdmndlhcIcdkjdkkdkjcIcdlkdmpdlkcIcaahaahdjHdlmdmqdkqdlpdlpdmrdmsdmtdmudmvdmwdmxdmydmzdmAdmBdmCdmCdmDdlzdEddjCdhtczQdmFdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfmdeXddYddZdmHaOtdmJdmKaOudeddeddeddeddeddeddeddeddeddeddeddeddeddmMdmNdmOaPedmQdehdmRdmSdmTdgSdmSdkddjkdjkdjkdmUdmUdjkdmUdmUdjkdjkdjkdkddmVdhGdmWdmVdmXdendmYdmZdnadnbdncaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnddnednfdngdnhdixdgXdniddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaadaadcIccIccIccIccIccIccIccIccIccIccIccIccIcaahaahdjHdkodkpdkqdlodlpdktdkqdEedjPdfFdihdnkdjCdnldnmdnndnodnpdnqdnrdnsdjCdntczQdnudppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdnvddYddZdnwdlEdhvdfRdfTdeddeddeddeddeddeddeddeddeddeddeddeddeddokdkMdnxdkOdnydehdnzdokdnxdkMdkOdjjdqwdjkdjkdjkdjkdjkdjkdjkdjkdjkdqxdjjdlYdkWdnAdkXdnBdendnCdlYdnAdkWdkXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmGdkZdnDdlbdnEdixdgXdnFddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaaaaadaadaadaadaaaaaaaadaadaadaaabkQdnGdnGdnGdnGdnGdjHdjHdnHdnIdnJdnKdnLdnMdjHdjHdnNdnOdnPdjCdjCdnQdnodnRdnSdnTdnrdjCdjCdhtczQdnudppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaadeqdeXdnVdnWdgRdeXdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdnXdgSdnYdnZdnXdhMaaaaaadoadjkdmUdmUdmUdmUdjkdmUdmUdmUdmUdjkdoaaaaaaadifdocdoddoedhGdocdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydofdesdogdohddsddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaadledmmdlgaaadledmmdlgaaadledmmdlgaaadledmmdlgaaaaadaaaaaaaaaaaaaaddqrdojdojdojdojdnGdqLdoldnGdnGdomdomdondoodopdjHdjHdjHdjHdjHdjHdjHdjHdoqdordosdotdoudjCdjCdjCdjCdjCdjCdjCdjCdjCdhtczQdovdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdgwdfRdfSdkadfUddZdgRdhydfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdhAdgSdehdeidowdhMaaaaaadoxdjkdjkdjkdjkdjkbvidjkdjkdjkdjkdjkdoxaaaaaadifdozdemdendhGdhHdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydhJdesdixdoAddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaadoDaaaaaaaaadqNdoFdoGdoHdoIdoJdoKdoLdoMdoNdoOdoPdoQdoQdoRdoSdoTdoUdoVdoWdoRdoOdoXdoYdoZdpadpbdpcdpddpedpfdpgdphdpidpjdpkdpldpmdpndhtdpodqTdpqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdprdpsdptdpudpvdpwdpxdeXdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMdnXdpydpzdeidnXdhMaaaaaadpAdjkdmUdmUdmUdmUdjkdmUdmUdmUdmUdjkdpAaaaaaadifdocdemdpBdpCdocdifaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiydofdpDdpEdgXddsaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaddpFdpGdpGdpGbCXdpGdpGdpGbCXdpGdpGdpGbCXdpGdpGdpGbCXdpGdpGdpGdpGdpGdpKdpLdpMdpNdpOcBhcAMdpRdpSdpTdpUdpVdpWdpXdpYdpZdqadqbdqcdqddqedoudoudqfdoudqgdoudqhdqidoudoudqjdoudqfdqkdqldqmdqndqodqpdqqcwhdqYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdhIdfRdhvdkadqsdcZdqtdlEdfSdfRdfTdeddeddeddeddeddeddeddeddeddeddeddeddeddokdkMdkNdkOdquddfdqvdokdkNdkMdkOdjjdqwdjkdjkdjkdjkdjkdjkdjkdjkdjkdqxdjjdlYdkWdkVdkXdqyddldqzdlYdkVdkWdkXaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAaaaaaadmGdkZdladlbdqBdqCdqDddsaahaahaahdqEdqEdqEdqEdqEdqEdqEaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaaaadbCWaadaaaaadaaaaaaaaadqNdoFdqGdqHcBPcBldojdnGdqJdqKdnGdnGdrxdoldqMdnGdrAdqOdqOdqPdqOdqQdqRdqQdqSdrBdqUdqVdrBdqUdqSdqWdqXdsLdnGdqZdqZdnGdnGcwhcwhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnUdnUdnUdnUdnUdnUdnUdnUdnUdnUdnUaaaaaaaaadfmdeXddYddZdmHaPvdrbdrcaQTdeddeddeddeddeddeddeddeddeddeddeddeddedaQXdrfdrgaQYdmQdehdmRdmSdridgSdmSdkddjkdjkdjkdmUdmUdjkdmUdmUdjkdjkdjkdkddmVdhGdrjdmVdmXdendmYdrkdrldrmdrnaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaadrodrpdrqdrrdnhdixdgXddsdqEdqEdqEdqEdrsdrtdrudrvdrsdqEdqEdqEdqEdqEdqEdqEdqEdqEdqEdqEdqEaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAacAacAaadaaddledrwdlgaaadledrwdlgaaadledrwdlgaaadledrwdlgaaaaadaaaaaaaaaaaaaaddtkdojdojdojdojdnGdrydrzdtIaaadtXdrCdrDdrEdrFdqOdrGdrHdrIdqQdrJdrKdrLdrMdrNdrOdrPdrQdrLdrRdrSdrTdnGdrUdrVdrWdtIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdjbdrXdlHdrYaQZdsadsbaRNdeddeddeddeddeddeddeddeddeddeddeddeddedaWEdsedsfaWHdshdlSdsidokdnxdkMdlVdjjbuAbFIdlWdjkdjkdjkdjkdjkdlXbFIbuAdjjdoEdkWdnAdkXdsjdmadDddsldsmdsndsoaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaadspdsqdsrdssdDedsudsvdswdBLdsydsydsydszdsAdszdsBdszdsydsxdsydsydsydsCdsDdsEdsFdsGdsHdqEdqEaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaadledrwdlgaaadledrwdlgaaadledrwdlgaaadledrwdlgaaaaadaaaaaaaaaaadaadaaaaaaaaaaaaaaadnGdsJdsKdtZaaddtXdsMdsNdsOdsPdqOdsQdsRdsSdqQdsTdsUdrLdsVdsWdsXdsYdsZdrLdtadtbdtcdnGdtddtedtfdtZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeqdeXddYddZdtgdlEdhvdfRdkKdeddeddeddeddeddeddeddeddeddeddeddeddeddlUdkMdnxdkOdthdehdeidfgdhMaaaaaadujdkcbuldtidjkdHobuBdHpdjkdwfbumdkcdunaaaaaadifdfidemdendtldlYdnAdkWdkXaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaadmGdkZdtmdtndtodtpdtqdtqdBMdtsdttdtudtvdtwdtxdtydtzdtwdtAdtBdtCdtDdtEdtBdtBdtBdtBdtFdtGdqEaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaadledrwdlgaaadledrwdlgaaadledrwdlgaaadledrwdlgaaaacAaaaaaaaadaadaaaaaaaaaaaaaaaaaadnGdtHdtHdnGahydxKdoldtJdqLdoldqOdtKdtLdtMdtNdtOdtPdtQdtRdtSdtTdtUdtVdtWdxNdtYdxOduadubducdnGdnGaaddudduedueduedueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgwdfRdfSdkadufddZdgRdugdfhaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadhMduhdgSdehdeiduidhMaaaaaaaaaaaadujdukduldumdumdumduldukdunaaaaaaaaaaaadifduodemdendhGdupdifaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaadiyduqdixdurddsdqEdqEdusdutduudqEdusdutduvdqEdusdqEdqEdqEdqEdqEdqEdqEdtBdtFdtBdqEaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaddledrwdlgaaddledrwdlgaaddledrwdlgaaddledrwdlgaadacAaaaaadaadaaaaaaaaaaaaaaaaaaaaaduwduxduyduwbkQduzduAduBduAduzdqOduCduDduEdqQduFduGdrLduHduIduJduIduKdrLduLduMduNduaduOduPduQduRaaaaadaadaaaaaadueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduSduTduUduVduWduXdjddfadfmaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadfBdfddjgduYdeidfgdfBaaaaaaaaaaaaaaaaaadujdukdukdukdunaaaaaaaaaaaaaaaaaadfIdfidemduZdjndfldfIaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaadfLdvadvbdvcddsaahaahdqEdvddvedvfdqEdvgdvhdvidqEaahaahaahaahaahaahdvjdvjdvkdvjdvjaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOaaadledvldlgaaadledvldlgaaadledvldlgaaadledvldlgaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQdvmdvndvodvpdvmdvqdvrdvsdvtdqQdvudvvdrLdvwdvxdvydvzdvAdrLdvBdvCdvDduadvEdvFduQdvGaaaaadaadaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhIdfRdhvdkadvHdvIdgRdvJdcWaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaaddcdvKdgSdvLdeidjiddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddidjldemdvMdhGdvNddiaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaddodvOdvPdvQddsaahaahdqEdvRdvSdvTdqEdvUdvVdvWdqEaahaahaahaahaahaahdvjdvXdvYdvZdvjbvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAaaaaadaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaadaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQduAdwadvodwbduAdqOdwcdwddqOdqQdqQdweduadxSdwgdwhdwgdwiduadqWdwjdqWduaduaduaduadwkdwldwmdwmdwldwnaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfhdeXdeYdwodgRdfadeqaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadeWdfddgSdwpdffdfgdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdfidfjdwqdhGdfldfbaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaadfcdwrdwsdwtddsaahaahdqEdwudwvdwudqEdwwdwxdwwdqEaahaahaahaahaahaahdvjdwydwzdwAdvjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdwBdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczaczacAaczaczacOacAaadaadaadaadacOacOacAaadaadaadacOacAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQdvmdwCdvodwDdvmduadwEdwFdwGdwHdwIdwJdwKdwLdwMdwNdwOdwPdwQdwRdwSdwTdwUdwVdwVduadwWdwmdwXdwYdwmdwZdxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfmdxbdxcaWIdxedxfdfmaaaaaadeddeddeddeddeddeddeddeddeddeddeddeddedaaaaaadfBdxgdxhdxidxjdxkdfBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfIdxldxmdxndxodxpdfIaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaadfLdxqdxrdxsddsaahahydqEdwudxtdwudqEdwwdxudwwdqEaahaahaahaahaahaahdvjdxvdxwdxxdvjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkQduAdxydxydxyduAduadwUdxzdxAdxBdxCdxDdxEdxFdxGdxHdxGdxGdxGdxGdxGdxIdxJdwVdwVduadwkdwldwZdwWdwldwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiXdcWdjvdiZdjadcXdcXdcXdcXdcXdcWdcWdxVbbgbbgdcWdcWaaaaaaaaaaaaaaaaaadeddeddeddeddedaaaaaaaaaaaaaaaaaaddcddcdxMdxMdxYddcddcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddiddidyadxPdxPddiddiaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAddoddodxQdxRdyPddoaahahydusdwudxTdwudusdwwdxUdwwdusahyahyaahaahaahaahdzgdxWdxXdztdxZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydzNdvmdybdybdycdvmduadwUdxzdyddyedyfdygdyhdyhdyidyjdykdyldymdyndyodypdyqdyrdysduadytdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaadeqdyvdywbffdeqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeWdyydyzdyAdeWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfbdyBdyCdyDdfbaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdyEdyFdyGdyHdyIdfcahyahyahydyJdyKdyLaaadyMdyNdyOahyahyahyahyahyahybkQbkQdzOdyQdzOaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRaaaaaadyRaaaaaaaaadyRaaaaaaaaaaaaaaadyRaaaaaaaaadyRaaaaaadyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydnGduzduAdySduAduzduadwUdxzdyTdyUdyVdwUdwUdwUdyWdyXdyYdyZdyZdzadzbdzcdzddzedzfdzUdzhdwmdwZdwWdwmdwXdueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfhbhpdxebiXdfhaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhMdzkdxhdzldhMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadifdzmdxodzndifaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdzodzpdzqdzrdzsdiyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyahyaaaaaaaaaaadaadaaadAadzudAaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRaaaaaaaaadyRdyRdyRdyRdyRdyRdyRaaaaaaaaadyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzvdnGdzNbkQdzNdnGduadzwdxzdzxdzydzzdwUdzAdzBdzCdzDdzEdzFdzGdzHdzIdzJdzKdzLdzMdBwdzhdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBxdfTboablKdfmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfBdzRdzSdokdzTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBydkXdzVdzWdfIaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdmGdkZdzXdkZdkZdzYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaadzZaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaadyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahydBzahyahyduadAbdyTdAcdAddAedwUdAfduadAgdAhdAiduadAjdAkdAldAmdAndAodApduadwkdwldwZdwWdwldwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaaaaaaaaaaaaaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaadaadaaaaaaaaaaaadAraaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaadyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaahyduadAsdwUdAtdAudAudwUdAvdAwdAxdAydAzdAwdAAdABdzbdzcdACdADdAEduadwWdwmdwXdwYdwmdwZdueaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaaaaaaaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaadAraaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaaaduadwUdwUdzydAFdAFdwUdAvdAGdAHdAIdAJdAGdAAdAvdzIdAKdzKdALdAMduadwkdwldwZdwWdwldwndueaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueduedudaadaadaadaaddAraadaadaadaadaadacOduedueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaaaduaduadwUdAOdAddAddAPdAvdAQdARdASdATdAQdAUdAVdAWdAXdAYdAZduaduadytdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaaaadaaaaaaaaadAraaaaadaadaaaaaaaaaaaadueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadudaaaaaaaaaduaduadBbdBcdBbdBbduaduaduadBdduaduaduaduaduadBeduaduaduaaaddwYdwmdwZdwWdwmdwXdueaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaadBfdBfdBfdBfdBfaaddAraaddBfdBfdBfdBfdBfaaadueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueaaaaaaaaaaaadBgdBgdBgdBgaadaaddBhaaadBhaadaaaaadaaaaaaaadaaaaaaaaddytdwldwXdwYdwldyudueaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBidBjdBjdBjdBjadLaejadLdBmdBmdBmdBmdBnaaddueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueaaaaaaaaadBodBpdBpdBoaaadudaaaaaaaaaaaddwkdwXdwkdwndwYdwndwkdwXdwkdwndBodBodwkdwndueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBqdBqdBqdBqdBqaaadAraaadBqdBqdBqdBqdBqaaddueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdBrdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueaadaaddBodBodBodBoaaddueaaaaaaaaaduddBpdBodBpdBpdBodBpdBpdBodBpdBpdBodBodBpdBpaadaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaaaadaadaadaaadAraaaaadaaaaadaaaaadaaadueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaadueaaaaaadBodBpdBpdBoaaadueaaaaaaaaaduedBodwWdwZdwWdwZdwWdwZdwWdwZdwWdwZdwWdwZdBoaadaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaadBfdBfdBfdBfdBfaaddAraaddBfdBfdBfdBfdBfaaddueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaadaaddBodBodBodBoaaddueaaaaaaaaaduedBodwYdwXdwYdwXdwYdwXdwYdwXdwYdwXdwYdwXdBodudaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBidBjdBjdBjdBjadLaejadLdBmdBmdBmdBmdBnaaddueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBaaadoBdoBdoBdoBdoBaaadoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadudaaaaaadwWdyudytdwZaaadueaaaaaaaaaduedBpdBodBpdBpdBodBpdBpdBodBpdBpdBpdBpdBpdBpdueaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBqdBqdBqdBqdBqaaadAraaddBqdBqdBqdBqdBqaaadueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBaaadoBdoBdoBdoBdoBaaadoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueaaaaadaaaaaaaadaaadueaaaaaaaaaduedytdwZdytdyudwWdyudytdwZdytdyudytdyudytdyudueaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAaaadqAdqAdqAdqAdqAaaadqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadudaaaaadaaaaadaaaaadaaadAraaaaadaaaaadaadaadaaddueaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaadoBdoBdoBdoBdoBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaduedueduedueduedueaaddueaaaaaaaaadudduedueduedueaadduedueduedueduedueduddueduedueaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAaaadqAdqAdqAdqAdqAaaadqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaadBfdBfdBfdBfdBfaaddAraaddBfdBfdBfdBfdBfaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaadqAdqAdqAdqAdqAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBidBjdBjdBjdBjadLaejadLdBmdBmdBmdBmdBnaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIaaadsIdsIdsIdsIdsIaaadsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaadAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqdAqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBqdBqdBqdBqdBqaaadAraaddBqdBqdBqdBqdBqaaadueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIaaadsIdsIdsIdsIdsIaaadsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadudaaaaadaaaaadaaaaadaaadAraaaaadaaaaadaadaadaaddueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaadsIdsIdsIdsIdsIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyRdyRdyRdyRdyRdyRdyRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaadBfdBfdBfdBfdBfaaddAraaddBfdBfdBfdBfdBfaaddueaaadBsaaaaaadBsaaaaaaaaadBsaaaaaaaaaaaaaaadBsaaaaaaaaadBsaaaaaadBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBidBjdBjdBjdBjadLaejadLdBmdBmdBmdBmdBnaaddueaaadBsdBsdBsdBsaaaaaaaaadBsdBsdBsdBsdBsdBsdBsaaaaaaaaadBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaNbaNbaNbaNbaNbaNbaaaaaaaNbaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBqdBqdBqdBqdBqaaadAraaadBqdBqdBqdBqdBqaaadueaaadBsdBsdBsdBsaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaadBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbaNbaNbaNbaaaaaaaaaaaaaNbaNbaNbaNbaNbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadueaaaaaaaadaadaadaaaaaadAraadaaaaaaaadaadaaaaaadueaaadBsdBsdBsdBsaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaadBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueduedueduedueaaaaaaaaadAraaaaaaaaadueduedueduddueaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaddBuaaddueaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueaaaaadaaadueaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadueduedueduedueaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBsdBsdBsdBsdBsdBsdBsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvdBvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/polaris-2.dmm b/maps/polaris-2.dmm index 91f9006b6ba..a9f68d2953e 100644 --- a/maps/polaris-2.dmm +++ b/maps/polaris-2.dmm @@ -1,2715 +1,3006 @@ -"aa" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns15,/area/space) -"ab" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns9,/area/space) -"ac" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns5,/area/space) -"ad" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) -"ae" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns8,/area/space) -"af" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns3,/area/space) -"ag" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns6,/area/space) -"ah" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns7,/area/space) -"ai" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns4,/area/space) -"aj" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns14,/area/space) -"ak" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns1,/area/space) -"al" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns11,/area/space) -"am" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns13,/area/space) -"an" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns2,/area/space) -"ao" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns10,/area/space) -"ap" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns10,/area/space) -"aq" = (/turf/space/transit/east/shuttlespace_ew13,/area/space) -"ar" = (/turf/space/transit/east/shuttlespace_ew14,/area/space) -"as" = (/turf/space/transit/east/shuttlespace_ew15,/area/space) -"at" = (/turf/space/transit/east/shuttlespace_ew1,/area/space) -"au" = (/turf/space/transit/east/shuttlespace_ew2,/area/space) -"av" = (/turf/space/transit/east/shuttlespace_ew3,/area/space) -"aw" = (/turf/space/transit/east/shuttlespace_ew4,/area/space) -"ax" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) -"ay" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) -"az" = (/turf/space{icon_state = "black"},/area/space) -"aA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew5,/area/space) -"aB" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew6,/area/space) -"aC" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew7,/area/space) -"aD" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew8,/area/space) -"aE" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew9,/area/space) -"aF" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew10,/area/space) -"aG" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew11,/area/space) -"aH" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew12,/area/space) -"aI" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew13,/area/space) -"aJ" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew14,/area/space) -"aK" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew15,/area/space) -"aL" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew1,/area/space) -"aM" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew2,/area/space) -"aN" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew3,/area/space) -"aO" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew4,/area/space) -"aP" = (/turf/space,/area/space) -"aQ" = (/turf/unsimulated/wall,/area/prison/solitary) -"aR" = (/turf/unsimulated/wall,/area/space) -"aS" = (/obj/structure/window/reinforced,/turf/unsimulated/wall,/area/space) -"aT" = (/turf/space/transit/north/shuttlespace_ns8,/area/space) -"aU" = (/turf/space/transit/north/shuttlespace_ns4,/area/space) -"aV" = (/turf/space/transit/north/shuttlespace_ns11,/area/space) -"aW" = (/turf/space/transit/north/shuttlespace_ns7,/area/space) -"aX" = (/turf/space/transit/north/shuttlespace_ns2,/area/space) -"aY" = (/turf/space/transit/north/shuttlespace_ns5,/area/space) -"aZ" = (/turf/space/transit/north/shuttlespace_ns6,/area/space) -"ba" = (/turf/space/transit/north/shuttlespace_ns14,/area/space) -"bb" = (/turf/space/transit/north/shuttlespace_ns3,/area/space) -"bc" = (/turf/space/transit/north/shuttlespace_ns13,/area/space) -"bd" = (/turf/space/transit/north/shuttlespace_ns15,/area/space) -"be" = (/turf/space/transit/north/shuttlespace_ns10,/area/space) -"bf" = (/turf/space/transit/north/shuttlespace_ns12,/area/space) -"bg" = (/turf/space/transit/north/shuttlespace_ns1,/area/space) -"bh" = (/turf/space/transit/north/shuttlespace_ns9,/area/space) -"bi" = (/turf/space/transit/east/shuttlespace_ew5,/area/space) -"bj" = (/turf/space/transit/east/shuttlespace_ew6,/area/space) -"bk" = (/turf/space/transit/east/shuttlespace_ew7,/area/space) -"bl" = (/turf/space/transit/east/shuttlespace_ew8,/area/space) -"bm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area/space) -"bn" = (/turf/space/transit/east/shuttlespace_ew10,/area/space) -"bo" = (/turf/space/transit/east/shuttlespace_ew11,/area/space) -"bp" = (/turf/space/transit/east/shuttlespace_ew12,/area/space) -"bq" = (/turf/space/transit/east/shuttlespace_ew9,/area/space) -"br" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/prison/solitary) -"bs" = (/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/prison/solitary) -"bt" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/wall,/area/space) -"bu" = (/turf/simulated/floor/holofloor/desert,/area/holodeck/source_desert) -"bv" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_desert) -"bw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall,/area/space) -"bx" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"by" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"bz" = (/obj/structure/table/rack/holorack,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/head/hairflower,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre) -"bA" = (/obj/effect/landmark/costume,/obj/structure/table/rack/holorack,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre) -"bB" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) -"bC" = (/obj/structure/window/reinforced/holowindow{dir = 4},/obj/structure/flora/pottedplant{tag = "icon-plant-10"; icon_state = "plant-10"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) -"bD" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"bE" = (/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_wildlife) -"bF" = (/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_plating) -"bG" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_emptycourt) -"bH" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"bI" = (/obj/structure/holostool,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"bJ" = (/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"bK" = (/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"bL" = (/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"bM" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall,/area/space) -"bN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) -"bO" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_desert) -"bP" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"bQ" = (/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"bR" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre) -"bS" = (/obj/machinery/door/window/holowindoor,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) -"bT" = (/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"bU" = (/obj/effect/landmark{name = "Holocarp Spawn"},/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_wildlife) -"bV" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"bW" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"bX" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"bY" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area/space) -"bZ" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/corner,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"ca" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"cb" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"cc" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 8},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"cd" = (/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) -"ce" = (/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"cf" = (/obj/structure/window/reinforced/holowindow{dir = 1},/obj/structure/window/reinforced/holowindow{dir = 8},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"cg" = (/obj/structure/window/reinforced/holowindow{dir = 1},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"ch" = (/obj/machinery/door/window/holowindoor{dir = 1; name = "Jury Box"},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/obj/effect/floor_decal/carpet{dir = 5},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"ci" = (/obj/machinery/door/window/holowindoor{name = "Red Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_emptycourt) -"cj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) -"ck" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"cl" = (/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) -"cm" = (/obj/effect/decal/cleanable/dirt,/obj/structure/holostool,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) -"cn" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) -"co" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"cp" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) -"cq" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"cr" = (/obj/structure/window/reinforced/holowindow,/obj/machinery/door/window/holowindoor{dir = 1; name = "Court Reporter's Box"},/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"cs" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/obj/structure/window/reinforced/holowindow{dir = 8},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"ct" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"cu" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"cv" = (/obj/structure/window/reinforced/holowindow,/obj/machinery/door/window/holowindoor{base_state = "right"; dir = 1; icon_state = "right"; name = "Witness Box"},/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"cw" = (/obj/structure/window/reinforced/holowindow{dir = 8},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) -"cx" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"cy" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet/corners{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"cz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) -"cA" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) -"cB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) -"cC" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) -"cD" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area/space) -"cE" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) -"cF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area/space) -"cG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area/space) -"cH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area/space) -"cI" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) -"cJ" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"cK" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) -"cL" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"cM" = (/obj/effect/floor_decal/carpet{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"cN" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"cO" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"cP" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"cQ" = (/obj/effect/floor_decal/carpet{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"cR" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"cS" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"cT" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"cU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) -"cV" = (/turf/space,/area/shuttle/escape/transit) -"cW" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew13,/area/space) -"cX" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew14,/area/space) -"cY" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew15,/area/space) -"cZ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew1,/area/space) -"da" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"db" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"dc" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"dd" = (/obj/structure/table/woodentable/holotable,/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"de" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"df" = (/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"dg" = (/obj/structure/table/woodentable/holotable,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"dh" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"di" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"dj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area/space) -"dk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) -"dl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space,/area/space) -"dm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew9,/area/space) -"dn" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/large_escape_pod1/transit) -"do" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/large_escape_pod1/transit) -"dp" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/large_escape_pod1/transit) -"dq" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/large_escape_pod1/transit) -"dr" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/large_escape_pod1/transit) -"ds" = (/turf/space/transit/east/shuttlespace_ew6,/area/shuttle/large_escape_pod1/transit) -"dt" = (/turf/space/transit/east/shuttlespace_ew7,/area/shuttle/large_escape_pod1/transit) -"du" = (/turf/space/transit/east/shuttlespace_ew8,/area/shuttle/large_escape_pod1/transit) -"dv" = (/turf/space/transit/east/shuttlespace_ew9,/area/shuttle/large_escape_pod1/transit) -"dw" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"dx" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"dy" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"dz" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"dA" = (/obj/structure/bed/chair/holochair{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"dB" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"dC" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) -"dD" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area/space) -"dE" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area/space) -"dF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) -"dG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) -"dH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) -"dI" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area/space) -"dJ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) -"dK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) -"dL" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew4,/area/space) -"dM" = (/turf/space/transit/east/shuttlespace_ew13,/area/shuttle/large_escape_pod1/transit) -"dN" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/large_escape_pod1/transit) -"dO" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/large_escape_pod1/transit) -"dP" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"dQ" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 4},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) -"dR" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) -"dS" = (/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"dT" = (/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"dU" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_emptycourt) -"dV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area/space) -"dW" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/cryo/transit) -"dX" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/cryo/transit) -"dY" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/cryo/transit) -"dZ" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/cryo/transit) -"ea" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/cryo/transit) -"eb" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/cryo/transit) -"ec" = (/turf/space/transit/east/shuttlespace_ew11,/area/shuttle/large_escape_pod1/transit) -"ed" = (/turf/space/transit/east/shuttlespace_ew12,/area/shuttle/large_escape_pod1/transit) -"ee" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew14,/area/space) -"ef" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"eg" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"eh" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"ei" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"ej" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"ek" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"el" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) -"em" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/cryo/transit) -"en" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/cryo/transit) -"eo" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/cryo/transit) -"ep" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/cryo/transit) -"eq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew11,/area/space) -"er" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/large_escape_pod1/transit) -"es" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew1,/area/space) -"et" = (/obj/structure/flora/pottedplant{tag = "icon-plant-06"; icon_state = "plant-06"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) -"eu" = (/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 6},/obj/effect/floor_decal/carpet{dir = 10},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) -"ev" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"ew" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"ex" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) -"ey" = (/obj/effect/floor_decal/corner/green/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"ez" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"eA" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) -"eB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area/space) -"eC" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/cryo/transit) -"eD" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/cryo/transit) -"eE" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/cryo/transit) -"eF" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/cryo/transit) -"eG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew5,/area/space) -"eH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area/space) -"eI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall,/area/space) -"eJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/wall,/area/space) -"eK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) -"eL" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) -"eM" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) -"eN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew10,/area/space) -"eO" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew12,/area/space) -"eP" = (/turf/simulated/floor/holofloor/space,/area/holodeck/source_space) -"eQ" = (/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) -"eR" = (/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) -"eS" = (/obj/structure/flora/pottedplant{tag = "icon-plant-06"; icon_state = "plant-06"},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) -"eT" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball) -"eU" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"eV" = (/obj/structure/holostool,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"eW" = (/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"eX" = (/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"eY" = (/obj/structure/holohoop,/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"eZ" = (/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"fa" = (/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) -"fb" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_thunderdomecourt) -"fc" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"fd" = (/obj/structure/holostool,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"fe" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"ff" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/weapon/holo/esword/red,/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"fg" = (/obj/structure/table/holotable,/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"fh" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"fi" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"fj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) -"fk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area/space) -"fl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) -"fm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area/space) -"fn" = (/obj/effect/landmark{name = "Holocarp Spawn Random"},/turf/simulated/floor/holofloor/space,/area/holodeck/source_space) -"fo" = (/obj/structure/flora/grass/both,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) -"fp" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"fq" = (/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"fr" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"fs" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"ft" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"fu" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"fv" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) -"fw" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"fx" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"fy" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"fz" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"fA" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) -"fB" = (/obj/structure/flora/tree/pine,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) -"fC" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) -"fD" = (/obj/machinery/door/window/holowindoor{name = "Red Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball) -"fE" = (/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) -"fF" = (/obj/effect/overlay/palmtree_l,/obj/effect/overlay/coconut,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) -"fG" = (/obj/machinery/door/window/holowindoor{name = "Red Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_thunderdomecourt) -"fH" = (/obj/machinery/door/window/holowindoor{base_state = "right"; dir = 2; icon_state = "right"; name = "Red Corner"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"fI" = (/obj/structure/window/reinforced/holowindow,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"fJ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area/space) -"fK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area/space) -"fL" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/large_escape_pod2/transit) -"fM" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/large_escape_pod2/transit) -"fN" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/large_escape_pod2/transit) -"fO" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/large_escape_pod2/transit) -"fP" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/large_escape_pod2/transit) -"fQ" = (/turf/space/transit/east/shuttlespace_ew6,/area/shuttle/large_escape_pod2/transit) -"fR" = (/turf/space/transit/east/shuttlespace_ew7,/area/shuttle/large_escape_pod2/transit) -"fS" = (/turf/space/transit/east/shuttlespace_ew8,/area/shuttle/large_escape_pod2/transit) -"fT" = (/turf/space/transit/east/shuttlespace_ew9,/area/shuttle/large_escape_pod2/transit) -"fU" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) -"fV" = (/turf/simulated/floor/holofloor/lino,/area/holodeck/source_meetinghall) -"fW" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_meetinghall) -"fX" = (/obj/item/weapon/beach_ball,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) -"fY" = (/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"fZ" = (/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"ga" = (/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gb" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gc" = (/obj/structure/window/reinforced/holowindow{dir = 8},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"gd" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area/space) -"ge" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/cryo/transit) -"gf" = (/turf/space/transit/east/shuttlespace_ew13,/area/shuttle/large_escape_pod2/transit) -"gg" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/large_escape_pod2/transit) -"gh" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/large_escape_pod2/transit) -"gi" = (/obj/structure/flora/grass/green,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) -"gj" = (/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 6},/obj/effect/floor_decal/carpet{dir = 9},/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"gk" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"gl" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"gm" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"gn" = (/obj/effect/floor_decal/corner/red/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"go" = (/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gp" = (/obj/item/weapon/beach_ball/holoball,/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gq" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gr" = (/obj/item/weapon/inflatable_duck,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) -"gs" = (/obj/structure/window/reinforced/holowindow/disappearing,/obj/effect/floor_decal/corner/red/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"gt" = (/obj/structure/window/reinforced/holowindow/disappearing,/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"gu" = (/obj/structure/window/reinforced/holowindow/disappearing,/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"gv" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gw" = (/obj/effect/floor_decal/corner/blue/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gx" = (/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gy" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) -"gA" = (/turf/space/transit/east/shuttlespace_ew11,/area/shuttle/large_escape_pod2/transit) -"gB" = (/turf/space/transit/east/shuttlespace_ew12,/area/shuttle/large_escape_pod2/transit) -"gC" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"gD" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"gE" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"gF" = (/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gG" = (/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gH" = (/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gI" = (/obj/structure/window/reinforced/holowindow/disappearing{dir = 1},/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"gJ" = (/obj/structure/window/reinforced/holowindow/disappearing{dir = 1},/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"gK" = (/obj/structure/window/reinforced/holowindow/disappearing{dir = 1},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"gL" = (/obj/effect/floor_decal/corner/blue/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gM" = (/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gN" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/large_escape_pod2/transit) -"gO" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gP" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gQ" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"gR" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"gS" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gT" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) -"gU" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) -"gV" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet{dir = 8},/area/holodeck/source_meetinghall) -"gW" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball) -"gX" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"gY" = (/turf/unsimulated/beach/sand{tag = "icon-beach"; icon_state = "beach"},/area/holodeck/source_beach) -"gZ" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_thunderdomecourt) -"ha" = (/obj/structure/window/reinforced/holowindow{dir = 1},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"hb" = (/obj/machinery/door/window/holowindoor{dir = 1; name = "Green Corner"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"hc" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"hd" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"he" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) -"hf" = (/turf/simulated/floor/holofloor/beach/water,/area/holodeck/source_beach) -"hg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) -"hh" = (/obj/effect/floor_decal/corner/green/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"hi" = (/obj/structure/holohoop{dir = 1},/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"hj" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) -"hk" = (/obj/structure/table/holotable,/obj/effect/floor_decal/corner/green/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"hl" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/weapon/holo/esword/green,/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"hm" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) -"hn" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen"; item_state = "boxinggreen"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) -"ho" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall,/area/space) -"hp" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area/space) -"hq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) -"hr" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area/space) -"hs" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) -"ht" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) -"hu" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area/space) -"hv" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape/transit) -"hw" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape/transit) -"hx" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape/transit) -"hy" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape/transit) -"hz" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape/transit) -"hA" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership) -"hB" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/syndicate_mothership) -"hC" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership) -"hD" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) -"hE" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/space,/area/shuttle/syndicate_elite/mothership) -"hF" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/space,/area/shuttle/syndicate_elite/mothership) -"hG" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/space,/area/shuttle/syndicate_elite/mothership) -"hH" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) -"hI" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/syndicate_elite/mothership) -"hJ" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/airless,/area/shuttle/syndicate_elite/mothership) -"hK" = (/obj/effect/landmark{name = "Syndicate-Commando-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) -"hL" = (/mob/living/silicon/decoy{icon_state = "ai-malf"; name = "GLaDOS"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/control) -"hM" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1213; listening = 1; name = "Syndicate Ops Intercom"; pixel_y = 0; subspace_transmission = 1; syndie = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"hN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area/space) -"hO" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) -"hP" = (/turf/space/transit/north/shuttlespace_ns6,/area/syndicate_station/transit) -"hQ" = (/turf/space/transit/north/shuttlespace_ns8,/area/syndicate_station/transit) -"hR" = (/turf/space/transit/north/shuttlespace_ns3,/area/syndicate_station/transit) -"hS" = (/turf/space/transit/north/shuttlespace_ns5,/area/syndicate_station/transit) -"hT" = (/turf/space/transit/north/shuttlespace_ns9,/area/syndicate_station/transit) -"hU" = (/turf/space/transit/north/shuttlespace_ns2,/area/syndicate_station/transit) -"hV" = (/turf/space/transit/north/shuttlespace_ns13,/area/syndicate_station/transit) -"hW" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) -"hX" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) -"hY" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) -"hZ" = (/turf/space/transit/north/shuttlespace_ns11,/area/syndicate_station/transit) -"ia" = (/turf/space/transit/north/shuttlespace_ns7,/area/syndicate_station/transit) -"ib" = (/turf/space/transit/north/shuttlespace_ns14,/area/syndicate_station/transit) -"ic" = (/turf/space/transit/north/shuttlespace_ns4,/area/syndicate_station/transit) -"id" = (/turf/space/transit/north/shuttlespace_ns10,/area/syndicate_station/transit) -"ie" = (/turf/space/transit/north/shuttlespace_ns1,/area/syndicate_station/transit) -"if" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) -"ig" = (/turf/space,/area/syndicate_mothership/elite_squad) -"ih" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership/elite_squad) -"ii" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"ij" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1213; listening = 0; name = "Syndicate Ops Intercom"; pixel_y = 28; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"ik" = (/obj/effect/landmark{name = "Syndicate-Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"il" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"im" = (/obj/machinery/mech_recharger,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"in" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"io" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"ip" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) -"iq" = (/turf/space/transit/north/shuttlespace_ns12,/area/syndicate_station/transit) -"ir" = (/turf/space/transit/north/shuttlespace_ns15,/area/syndicate_station/transit) -"is" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"it" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space,/area/space) -"iu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad) -"iv" = (/turf/space/transit/north/shuttlespace_ns3,/area/skipjack_station/transit) -"iw" = (/turf/space/transit/north/shuttlespace_ns2,/area/skipjack_station/transit) -"ix" = (/turf/space/transit/north/shuttlespace_ns6,/area/skipjack_station/transit) -"iy" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) -"iz" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad) -"iA" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"iB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) -"iC" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) -"iD" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area/space) -"iE" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) -"iF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) -"iG" = (/turf/space/transit/north/shuttlespace_ns1,/area/skipjack_station/transit) -"iH" = (/turf/space/transit/north/shuttlespace_ns5,/area/skipjack_station/transit) -"iI" = (/turf/space/transit/north/shuttlespace_ns10,/area/skipjack_station/transit) -"iJ" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) -"iK" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod2/transit) -"iL" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod2/transit) -"iM" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod2/transit) -"iN" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod1/transit) -"iO" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod1/transit) -"iP" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod1/transit) -"iQ" = (/turf/space/transit/north/shuttlespace_ns15,/area/skipjack_station/transit) -"iR" = (/turf/space/transit/north/shuttlespace_ns4,/area/skipjack_station/transit) -"iS" = (/turf/space/transit/north/shuttlespace_ns9,/area/skipjack_station/transit) -"iT" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) -"iU" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) -"iV" = (/turf/space/transit/north/shuttlespace_ns8,/area/skipjack_station/transit) -"iW" = (/turf/space/transit/north/shuttlespace_ns14,/area/skipjack_station/transit) -"iX" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) -"iY" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "syndicate_elite"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/shuttle/syndicate_elite/mothership) -"iZ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) -"ja" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod2/transit) -"jb" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod2/transit) -"jc" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod2/transit) -"jd" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod1/transit) -"je" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod1/transit) -"jf" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod1/transit) -"jg" = (/turf/space/transit/north/shuttlespace_ns7,/area/skipjack_station/transit) -"jh" = (/turf/space/transit/north/shuttlespace_ns13,/area/skipjack_station/transit) -"ji" = (/turf/space,/area/syndicate_mothership) -"jj" = (/turf/simulated/floor/airless,/area/shuttle/syndicate_elite/mothership) -"jk" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod2/transit) -"jl" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod2/transit) -"jm" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod1/transit) -"jn" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod1/transit) -"jo" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod1/transit) -"jp" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area/space) -"jq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) -"jr" = (/turf/space/transit/north/shuttlespace_ns12,/area/skipjack_station/transit) -"js" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod2/transit) -"jt" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod1/transit) -"ju" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod1/transit) -"jv" = (/turf/space/transit/north/shuttlespace_ns11,/area/skipjack_station/transit) -"jw" = (/turf/unsimulated/wall,/area/syndicate_mothership) -"jx" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) -"jy" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) -"jz" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"jA" = (/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"jB" = (/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"jC" = (/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"jD" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) -"jE" = (/turf/space,/area/skipjack_station/transit) -"jF" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"jG" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"jH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) -"jI" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership) -"jJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_mothership) -"jK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_mothership) -"jL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_mothership) -"jM" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_mothership) -"jN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) -"jO" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) -"jP" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) -"jQ" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"jR" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"jS" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod6/transit) -"jT" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod6/transit) -"jU" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod6/transit) -"jV" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod5/transit) -"jW" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod5/transit) -"jX" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod5/transit) -"jY" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod4/transit) -"jZ" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod4/transit) -"ka" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod4/transit) -"kb" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod3/transit) -"kc" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod3/transit) -"kd" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod3/transit) -"ke" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) -"kf" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) -"kg" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) -"kh" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership) -"ki" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area/space) -"kj" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/syndicate_mothership) -"kk" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kl" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"km" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"kn" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"ko" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kp" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod6/transit) -"kq" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod6/transit) -"kr" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod6/transit) -"ks" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod5/transit) -"kt" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod5/transit) -"ku" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod5/transit) -"kv" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod4/transit) -"kw" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod4/transit) -"kx" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod4/transit) -"ky" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod3/transit) -"kz" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod3/transit) -"kA" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod3/transit) -"kB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) -"kC" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_mothership) -"kD" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_mothership) -"kE" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) -"kF" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kG" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kH" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod6/transit) -"kI" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod6/transit) -"kJ" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod5/transit) -"kK" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod5/transit) -"kL" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod5/transit) -"kM" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod4/transit) -"kN" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod4/transit) -"kO" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod3/transit) -"kP" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod3/transit) -"kQ" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod3/transit) -"kR" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_surround"; dir = 8},/area/syndicate_mothership) -"kS" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 6},/area/syndicate_mothership) -"kT" = (/turf/unsimulated/wall/fakeglass,/area/syndicate_mothership) -"kU" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kV" = (/obj/structure/table/standard,/obj/item/weapon/folder,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kW" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kX" = (/obj/structure/closet/crate/freezer,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"kY" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod6/transit) -"kZ" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod5/transit) -"la" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod5/transit) -"lb" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod4/transit) -"lc" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod3/transit) -"ld" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod3/transit) -"le" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"lf" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"lg" = (/obj/machinery/door/airlock/centcom{name = "Restroom"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"lh" = (/obj/structure/urinal{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"li" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"lj" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership) -"lk" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"ll" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) -"lm" = (/turf/simulated/shuttle/plating,/area/syndicate_mothership) -"ln" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"lo" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 5},/area/syndicate_mothership) -"lp" = (/obj/machinery/door/airlock/centcom{name = "Barracks"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) -"lq" = (/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"lr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) -"ls" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) -"lt" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) -"lu" = (/obj/structure/bed,/obj/item/weapon/bedsheet/red,/turf/simulated/floor/wood,/area/syndicate_mothership) -"lv" = (/turf/simulated/floor/wood,/area/syndicate_mothership) -"lw" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"},/area/syndicate_mothership) -"lx" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) -"ly" = (/turf/unsimulated/wall,/area/alien) -"lz" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) -"lA" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) -"lB" = (/turf/unsimulated/floor{icon_state = "dark"},/area/alien) -"lC" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lD" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lF" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lG" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon_state = "dark"},/area/alien) -"lH" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) -"lI" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lJ" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lK" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lL" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) -"lM" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) -"lN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lO" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "ninjastart"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lP" = (/turf/space,/area/shuttle/alien/base) -"lQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lR" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership) -"lS" = (/obj/structure/bed/alien,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) -"lT" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_mothership) -"lU" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_mothership) -"lV" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_mothership) -"lW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lX" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lY" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"lZ" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ma" = (/turf/unsimulated/wall,/area) -"mb" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"mc" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) -"md" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) -"me" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"mf" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"mg" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"mh" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_mothership{name = "\improper Ninja Base"}) -"mi" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"mj" = (/turf/simulated/mineral,/area/space) -"mk" = (/obj/effect/landmark/start,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area) -"ml" = (/turf/simulated/shuttle/wall{dir = 6; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) -"mm" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3_straight"; tag = "icon-swall_straight (EAST)"},/area/centcom/specops) -"mn" = (/turf/simulated/shuttle/wall{dir = 10; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) -"mo" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "wall3_straight"; tag = "icon-swall_straight (EAST)"},/area/centcom/specops) -"mp" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mq" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall3_t"},/area/centcom/specops) -"mr" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3_t"},/area/centcom/specops) -"ms" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mt" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mu" = (/obj/structure/table/rack,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mv" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/ionrifle,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mw" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mx" = (/obj/structure/table/rack,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"my" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/launcher/grenade,/obj/item/weapon/gun/launcher/grenade,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mz" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/emps{pixel_x = 4; pixel_y = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/box/frags,/obj/item/weapon/storage/box/smokes,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mA" = (/obj/machinery/vending/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mB" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "wall3_t"},/area/centcom/specops) -"mC" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall{dir = 9; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) -"mD" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mE" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mF" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mG" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mH" = (/obj/structure/table/rack,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mI" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a762,/obj/item/ammo_magazine/a762,/obj/item/ammo_magazine/a762,/obj/item/ammo_magazine/a762,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mJ" = (/obj/structure/table/rack,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/plasmacutter,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mK" = (/obj/structure/table/rack,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/healthscanner,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mL" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/egun,/obj/item/rig_module/mounted/egun,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mM" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"mN" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mO" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mP" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/box/cdeathalarm_kit,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mQ" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/command,/obj/item/clothing/head/helmet/ert/command,/obj/item/weapon/storage/backpack/ert/commander,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mR" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mS" = (/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) -"mT" = (/obj/structure/lattice,/turf/space,/area/space) -"mU" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/centcom/specops) -"mV" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mW" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall{dir = 5; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) -"mX" = (/obj/structure/table/reinforced,/obj/item/device/aicard,/obj/item/weapon/pinpointer/advpinpointer,/obj/item/weapon/stamp/centcomm,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"mY" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"mZ" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"na" = (/obj/structure/table/rack,/obj/item/device/lightreplacer,/obj/item/device/lightreplacer,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"nb" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nc" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nd" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ne" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nf" = (/obj/machinery/deployable/barrier,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ng" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nh" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ni" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"nj" = (/turf/unsimulated/wall{icon = 'icons/misc/title.dmi'; icon_state = "title"},/area) -"nk" = (/turf/unsimulated/wall,/area/centcom/specops) -"nl" = (/obj/machinery/mech_recharger,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"nm" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership{name = "\improper Ninja Base"}) -"nn" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"no" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"np" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nq" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nr" = (/obj/structure/table/reinforced,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ns" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nt" = (/obj/structure/table/rack,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nu" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nv" = (/obj/structure/table/rack,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/grenade_launcher,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nw" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/handcuffs,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/weapon/material/hatchet/tacknife/combatknife,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nx" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ny" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/hand_tele,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nz" = (/obj/structure/table/rack,/obj/item/weapon/storage/backpack/security,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/shoes/galoshes,/obj/item/clothing/head/bio_hood/janitor,/obj/item/clothing/suit/bio_suit/janitor,/obj/item/clothing/gloves/purple,/obj/item/clothing/glasses/science,/obj/item/weapon/storage/backpack/security,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/shoes/galoshes,/obj/item/clothing/head/bio_hood/janitor,/obj/item/clothing/suit/bio_suit/janitor,/obj/item/clothing/gloves/purple,/obj/item/clothing/glasses/science,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"nA" = (/obj/item/weapon/mop,/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"nB" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket{amount_per_transfer_from_this = 50},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"nC" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"nD" = (/obj/effect/landmark{name = "Marauder Exit"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"nE" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT3"; name = "Launch Bay #3"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"nF" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nG" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"nH" = (/obj/structure/table/rack,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nI" = (/turf/simulated/shuttle/wall{dir = 9; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) -"nJ" = (/turf/simulated/shuttle/wall{dir = 5; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) -"nK" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "wall3_t"},/area/centcom/specops) -"nL" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"nM" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"nN" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"nO" = (/obj/structure/lattice,/obj/structure/grille/broken,/turf/space,/area/space) -"nP" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) -"nQ" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Armor Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"nR" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) -"nS" = (/obj/structure/table/rack,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nT" = (/obj/effect/floor_decal/corner/yellow{dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nU" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nV" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nW" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT3"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"nX" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nY" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"nZ" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"oa" = (/obj/structure/closet/wardrobe/ert,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"ob" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"oc" = (/obj/structure/urinal{pixel_y = 32},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"od" = (/obj/structure/urinal{pixel_y = 32},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"oe" = (/obj/item/weapon/bikehorn/rubberducky,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"of" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"og" = (/obj/structure/table/standard,/obj/item/device/radio/headset/syndicate/alt,/obj/item/device/radio/headset/syndicate/alt,/obj/item/device/radio/headset/syndicate/alt,/obj/item/device/radio/headset/syndicate/alt,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"oh" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"oi" = (/obj/mecha/medical/odysseus/loaded,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"oj" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ok" = (/obj/structure/table/rack,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ol" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/rocket,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"om" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"on" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oo" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"op" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oq" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"or" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"os" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ot" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ou" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ov" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/security,/obj/item/weapon/rig/ert/security,/obj/item/weapon/rig/ert/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ow" = (/obj/structure/table/rack,/obj/item/rig_module/mounted,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ox" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oy" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) -"oz" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) -"oA" = (/obj/effect/landmark{name = "Response Team"},/obj/effect/landmark{name = "Commando"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) -"oB" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/window/reinforced/tinted,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"oC" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/obj/structure/window/reinforced/tinted,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"oD" = (/obj/item/weapon/bedsheet/hos,/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"oE" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"oF" = (/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"oG" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT2"; name = "Launch Bay #2"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"oH" = (/obj/machinery/recharge_station,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"oI" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"oJ" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"oK" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"oL" = (/obj/mecha/working/ripley/firefighter,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"oM" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oN" = (/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oO" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oP" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oQ" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oR" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/captain,/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 9},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"oS" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donut,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oT" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oU" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT1"; name = "Launch Bay #1"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"oV" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT2"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"oW" = (/obj/structure/sign/securearea{name = "ENGINEERING ACCESS"; pixel_y = -32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oX" = (/obj/structure/sign/redcross{pixel_y = -32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oY" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"oZ" = (/obj/machinery/cell_charger,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pa" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall{dir = 7; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) -"pb" = (/turf/simulated/shuttle/wall{dir = 7; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) -"pc" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"pd" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"pe" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"pf" = (/obj/structure/table/standard,/obj/item/device/pda/syndicate,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"pg" = (/obj/mecha/working/hoverpod,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"ph" = (/obj/item/mecha_parts/mecha_equipment/tool/sleeper,/obj/item/mecha_parts/mecha_equipment/tool/sleeper,/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"pi" = (/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pj" = (/obj/structure/table/reinforced,/obj/item/weapon/stamp/centcomm,/obj/item/weapon/pen,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pk" = (/obj/structure/table/reinforced,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pl" = (/obj/structure/table/reinforced,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pm" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"pn" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"po" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"pp" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT0"; name = "Launch Bay #0"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"pq" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT1"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"pr" = (/obj/item/mecha_parts/mecha_equipment/teleporter,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"ps" = (/obj/machinery/vending/assist,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pt" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/weapon/storage/backpack/ert/engineer,/obj/item/weapon/storage/backpack/ert/engineer,/obj/item/weapon/storage/backpack/ert/engineer,/obj/item/weapon/storage/backpack/ert/engineer,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pu" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/engineer,/obj/item/weapon/rig/ert/engineer,/obj/item/weapon/rig/ert/engineer,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pv" = (/obj/structure/closet/crate/medical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pw" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"px" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"py" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/pillbottles,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pz" = (/obj/machinery/chemical_dispenser/ert,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pA" = (/obj/machinery/chem_master,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pB" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/medical,/obj/item/weapon/rig/ert/medical,/obj/item/weapon/rig/ert/medical,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pC" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pD" = (/turf/simulated/shuttle/wall{icon_state = "wall3_wall15"},/area/centcom/specops) -"pE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"pF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"pG" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"pH" = (/obj/machinery/door/airlock/centcom{name = "Barracks"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"pI" = (/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"pJ" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pK" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pL" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pM" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pN" = (/obj/structure/table/rack,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pO" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pP" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pQ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_centcom_dock"; name = "docking port controller"; pixel_x = 0; pixel_y = -25; req_one_access = list(103); tag_door = "specops_centcom_dock_door"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"pR" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"pS" = (/obj/structure/reagent_dispensers/beerkeg,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"pT" = (/obj/machinery/vending/boozeomat,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"pU" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"pV" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/glasses/square,/obj/item/weapon/storage/box/glasses/square,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"pW" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"pX" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"pY" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) -"pZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"qa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"qb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"qc" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) -"qd" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"qe" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qf" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qg" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qh" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qi" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"qj" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"qk" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"ql" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"qm" = (/obj/effect/landmark{name = "Nuclear-Code"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership) -"qn" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership) -"qo" = (/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership) -"qp" = (/obj/machinery/camera/network/ert{c_tag = "Assault Armor South"; dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"qq" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/obj/item/mecha_parts/mecha_equipment/tool/cable_layer,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"qr" = (/obj/item/mecha_parts/mecha_equipment/tool/extinguisher,/obj/item/mecha_parts/mecha_equipment/tool/rcd,/obj/item/weapon/pickaxe/diamonddrill,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"qs" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,/obj/item/mecha_parts/mecha_equipment/tool/passenger,/obj/item/mecha_parts/mecha_equipment/tool/passenger,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"qt" = (/obj/machinery/vending/engivend,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qu" = (/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qv" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qw" = (/obj/machinery/pipedispenser/orderable,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qx" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_centcom_dock_door"; locked = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"qy" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"qz" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"qA" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"qB" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) -"qC" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT0"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"qD" = (/obj/machinery/computer/security/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qE" = (/obj/machinery/computer/shuttle_control/multi/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qF" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qG" = (/obj/structure/table/standard,/obj/machinery/button/remote/blast_door{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qH" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"qI" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"qJ" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"qK" = (/obj/structure/table/standard,/obj/machinery/recharger,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"qL" = (/obj/machinery/vending/engineering,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qM" = (/obj/item/weapon/circuitboard/aiupload,/obj/item/weapon/circuitboard/borgupload,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/aiModule/nanotrasen,/obj/item/weapon/aiModule/reset,/obj/item/weapon/aiModule/freeformcore,/obj/item/weapon/aiModule/protectStation,/obj/item/weapon/aiModule/quarantine,/obj/item/weapon/aiModule/paladin,/obj/item/weapon/aiModule/robocop,/obj/item/weapon/aiModule/safeguard,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qN" = (/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/structure/table/steel_reinforced,/obj/item/clothing/glasses/welding/superior,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qO" = (/obj/machinery/pipedispenser/disposal/orderable,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qP" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qQ" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/hud/health{pixel_x = 4; pixel_y = 4},/obj/item/clothing/glasses/hud/health{pixel_x = 2; pixel_y = 2},/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qR" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qS" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"qT" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 8},/turf/space,/area/shuttle/specops/centcom) -"qU" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/specops/centcom) -"qV" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_port_hatch"; locked = 1; name = "Port Docking Hatch"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "dark"},/area/shuttle/specops/centcom) -"qW" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) -"qX" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"qY" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"qZ" = (/obj/machinery/door/airlock/freezer,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) -"ra" = (/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"rb" = (/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rc" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rd" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"re" = (/obj/item/weapon/folder{pixel_y = 2},/obj/structure/table/glass,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"rf" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 4},/obj/structure/table/glass,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"rg" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"rh" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"ri" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/green,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/green,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"rj" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/blue,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"rk" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"rl" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"rm" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/storage/pill_bottle/dylovene,/obj/item/weapon/storage/pill_bottle/dylovene,/obj/item/weapon/storage/pill_bottle/dylovene,/obj/item/weapon/storage/pill_bottle/dermaline,/obj/item/weapon/storage/pill_bottle/dermaline,/obj/item/weapon/storage/pill_bottle/dermaline,/obj/item/weapon/storage/pill_bottle/spaceacillin,/obj/item/weapon/storage/pill_bottle/dexalin_plus,/obj/item/weapon/storage/pill_bottle/dexalin_plus,/obj/item/weapon/storage/pill_bottle/dexalin_plus,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"rn" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/bodybags,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ro" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"rp" = (/obj/structure/closet/crate/medical,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/bonesetter,/obj/item/weapon/scalpel,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/hemostat{pixel_y = 4},/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"rq" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/space,/area/shuttle/specops/centcom) -"rr" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/airless,/area/shuttle/specops/centcom) -"rs" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"rt" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"ru" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"rv" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"rw" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -1; pixel_y = 2},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rx" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"ry" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"rz" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/red/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"rA" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 2; pixel_y = 3},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rB" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rC" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rD" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"rE" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"rF" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"rG" = (/obj/structure/table/reinforced,/obj/item/weapon/tray{pixel_y = 5},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"rH" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 12},/obj/item/weapon/reagent_containers/food/drinks/bottle/wine{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"rI" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/med,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/med,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"rJ" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/orange,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/orange,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"rK" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"rL" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/shuttle/specops/centcom) -"rM" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"rN" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"rO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom) -"rP" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_animal/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"rQ" = (/obj/structure/table/standard,/obj/item/stack/material/glass{amount = 15},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rR" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rS" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"rT" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) -"rU" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"rV" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"rW" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"rX" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"rY" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"rZ" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"sa" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) -"sb" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"sc" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"sd" = (/turf/unsimulated/wall,/area/centcom/command) -"se" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; dir = 8; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/command) -"sf" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_station/start) -"sg" = (/obj/machinery/door/window/northright{name = "Flight Deck"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"sh" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_station/start) -"si" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"sj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"sk" = (/obj/machinery/shower{pixel_y = 32},/obj/structure/window/basic{dir = 8},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"sl" = (/obj/machinery/shower{pixel_y = 32},/obj/item/weapon/soap/syndie,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"sm" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"sn" = (/obj/structure/table/rack,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"so" = (/obj/machinery/shieldgen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sp" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sq" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sr" = (/obj/machinery/portable_atmospherics/canister/air,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ss" = (/obj/machinery/shieldwallgen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"st" = (/obj/machinery/power/emitter,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"su" = (/obj/structure/table/reinforced,/obj/item/roller,/obj/item/roller,/obj/item/roller,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sv" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/fire,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sw" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sx" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/adv{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/adv,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sy" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/o2,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sz" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sA" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sB" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 8},/turf/space,/area/shuttle/specops/centcom) -"sC" = (/obj/machinery/vending/dinnerware,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"sD" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/computer/arcade,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"sE" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"sF" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) -"sG" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command) -"sH" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = -2; pixel_y = -2},/obj/item/clothing/suit/storage/vest/heavy/merc,/obj/item/clothing/suit/storage/vest/heavy/merc,/obj/item/clothing/suit/storage/vest/heavy/merc,/obj/item/clothing/suit/storage/vest/heavy/merc,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"sI" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"sJ" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"sK" = (/obj/structure/closet/hydrant{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"sL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"sM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"sN" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"sO" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"sP" = (/obj/machinery/shield_gen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sQ" = (/obj/machinery/shield_capacitor,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sR" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; dir = 8; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/specops) -"sS" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "CREED"; name = "Ready Room"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"sT" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"sU" = (/obj/structure/bed/chair{dir = 8},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"sV" = (/obj/structure/closet,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"sW" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"sX" = (/obj/structure/mirror{dir = 4; pixel_x = -32; pixel_y = 0},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) -"sY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"sZ" = (/obj/machinery/door/airlock/centcom{name = "Suit Storage"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"ta" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/centcom/specops) -"tb" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"tc" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/centcom/specops) -"td" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) -"te" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) -"tf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) -"tg" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) -"th" = (/obj/machinery/recharger/wallcharger{pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"ti" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/food/snacks/liquidfood,/obj/item/weapon/reagent_containers/food/snacks/liquidfood,/obj/item/weapon/reagent_containers/food/snacks/liquidfood,/obj/item/weapon/reagent_containers/food/snacks/liquidfood,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"tj" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) -"tk" = (/obj/machinery/recharger/wallcharger{pixel_x = -25},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"tl" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tm" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tn" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"to" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) -"tp" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tq" = (/obj/machinery/vending/cigarette,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tr" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = 32},/obj/item/weapon/gun/energy/ionrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"ts" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle"; pixel_x = -25; pixel_y = 0; req_one_access = list(101); tag_door = "admin_shuttle_hatch"},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) -"tt" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) -"tu" = (/obj/item/device/multitool,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tv" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tw" = (/obj/structure/sign/poster{poster_type = "/datum/poster/bay_50"; pixel_x = -32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"tx" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"ty" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/space) -"tz" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1331; id_tag = "merc_base"; pixel_x = -25; pixel_y = -5},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership) -"tA" = (/obj/structure/table/rack,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tB" = (/obj/structure/table/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tC" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tD" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tE" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) -"tF" = (/obj/structure/table/rack,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = 32},/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tG" = (/obj/machinery/cell_charger,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tH" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) -"tI" = (/obj/machinery/flasher{id = "syndieflash"; pixel_x = 0; pixel_y = 28},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) -"tJ" = (/obj/item/device/radio/electropack,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) -"tK" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 0; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"tL" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"tM" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "merc_shuttle_pump"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"tN" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "merc_shuttle_sensor"; pixel_x = 8; pixel_y = 25},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"tO" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "merc_shuttle_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1331; id_tag = "merc_shuttle"; pixel_x = -8; pixel_y = 25; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"tP" = (/obj/machinery/door/airlock/external{density = 1; frequency = 1331; id_tag = "merc_shuttle_outer"; name = "Ship External Access"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "smindicate"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"tQ" = (/obj/machinery/door/airlock/external{frequency = 1331; id_tag = "merc_base_hatch"; req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tR" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tS" = (/obj/machinery/door/airlock/vault{name = "Armory"; req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tT" = (/obj/effect/landmark{name = "Syndicate-Uplink"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tU" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tV" = (/obj/machinery/door/window/northright,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tW" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tX" = (/obj/item/weapon/flame/lighter/zippo,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tY" = (/obj/item/weapon/storage/fancy/cigarettes,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"tZ" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"ua" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"ub" = (/obj/item/stack/material/glass{amount = 50},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"uc" = (/obj/item/stack/material/steel{amount = 50},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"ud" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"ue" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) -"uf" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) -"ug" = (/obj/machinery/door/window{dir = 2; name = "Seating"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uh" = (/obj/structure/table/rack,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"ui" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uj" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "merc_shuttle_pump"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uk" = (/obj/machinery/microwave,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"ul" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"um" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"un" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"uo" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/administration/centcom) -"up" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) -"uq" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"ur" = (/obj/item/weapon/stool,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"us" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"ut" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"uu" = (/obj/structure/table/standard,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"uv" = (/obj/machinery/robotic_fabricator,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"uw" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"ux" = (/obj/structure/dispenser,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"uy" = (/obj/machinery/door/window{dir = 1; name = "Cell"; req_access = list(150)},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uz" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uA" = (/obj/machinery/vending/assist{contraband = null; name = "AntagCorpVend"; products = list(/obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/signaler = 4, /obj/item/device/assembly/infra = 4, /obj/item/device/assembly/prox_sensor = 4, /obj/item/weapon/handcuffs = 8, /obj/item/device/flash = 4, /obj/item/weapon/cartridge/signal = 4, /obj/item/clothing/glasses/sunglasses = 4)},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"uC" = (/obj/machinery/door/airlock/external{frequency = 1331; id_tag = "merc_shuttle_inner"; name = "Ship External Access"; req_access = list(0)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uD" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/space) -"uE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) -"uF" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/handcuffs{pixel_x = 4; pixel_y = 2},/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"uG" = (/obj/structure/table/rack,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"uH" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Thunderdome Autolathe"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"uI" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"uJ" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (WEST)"; icon_state = "propulsion_r"; dir = 8},/turf/space,/area/shuttle/administration/centcom) -"uK" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) -"uL" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uM" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/button/flasher{id = "syndieflash"; name = "Flasher"; pixel_x = 27; pixel_y = 0; tag = "permflash"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uN" = (/mob/living/simple_animal/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uO" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4; start_pressure = 740.5},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uP" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uQ" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uR" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uS" = (/obj/machinery/door/airlock/centcom{name = "Hardsuit Storage"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"uT" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) -"uU" = (/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"uV" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"uW" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/simulated/shuttle/plating,/area/shuttle/administration/centcom) -"uX" = (/turf/unsimulated/wall,/area/centcom/suppy) -"uY" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/utensil/knife{pixel_x = -6},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = -1},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = 4},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"uZ" = (/obj/machinery/door/window{dir = 4; name = "Brig"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"va" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Preparation"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vb" = (/obj/structure/closet/syndicate/suit{name = "suit closet"},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vc" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/head/helmet/space/void/merc,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"vd" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"ve" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/suppy) -"vf" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/suppy) -"vg" = (/obj/structure/closet{name = "custodial"},/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vh" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Brig"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vi" = (/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "Preparation"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vj" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/syndicate{pixel_x = -1; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vk" = (/obj/machinery/dna_scannernew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"vl" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"vm" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"vn" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"vo" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Administration"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"vp" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 4},/area/supply/dock) -"vq" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/supply/dock) -"vr" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 2},/area/supply/dock) -"vs" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"vt" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/supply/dock) -"vu" = (/turf/simulated/shuttle/floor,/area/supply/dock) -"vv" = (/obj/machinery/clonepod,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"vw" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"vx" = (/obj/structure/table/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"vy" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"vz" = (/obj/structure/table/standard,/obj/structure/closet/secure_closet/medical_wall{pixel_y = 32; req_access = list(150)},/obj/item/bodybag,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = 8},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 4; pixel_y = 7},/obj/item/weapon/reagent_containers/syringe,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"vA" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vB" = (/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vC" = (/obj/structure/table/standard,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler{pixel_y = 2},/obj/item/clothing/glasses/night,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vD" = (/obj/structure/table/standard,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler{pixel_y = 2},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vE" = (/obj/structure/table/standard,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vF" = (/obj/structure/table/standard,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vG" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/terminal) -"vH" = (/turf/unsimulated/wall,/area/centcom/terminal) -"vI" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "CREED"; name = "Ready Room"; p_open = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"vJ" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command) -"vK" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"vL" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; tag_door = "admin_shuttle_bay_door"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"vM" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"vN" = (/obj/structure/table/reinforced,/obj/machinery/librarycomp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"vO" = (/obj/structure/bookcase,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"vP" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor,/area/supply/dock) -"vQ" = (/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor,/area/supply/dock) -"vR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"vS" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"vT" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vU" = (/obj/structure/table/standard,/obj/item/weapon/screwdriver,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"vV" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"vW" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"vX" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"vY" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/terminal) -"vZ" = (/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/terminal) -"wa" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"wb" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"wc" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"wd" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"we" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"wf" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_bay_door"; locked = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command) -"wg" = (/obj/machinery/door/window/northright{icon_state = "right"; dir = 2},/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"wh" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/surgery,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"wi" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"wj" = (/obj/structure/table/standard,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"wk" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"wl" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"wm" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/shuttle/floor,/area/supply/dock) -"wn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"wo" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/supply/dock) -"wp" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"wq" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"wr" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"ws" = (/obj/item/weapon/stool/padded,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wt" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/frags,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"wv" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/unsimulated/wall,/area/centcom/terminal) -"ww" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"wx" = (/obj/machinery/light{dir = 8},/obj/structure/bed/padded,/obj/item/weapon/bedsheet/hos,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) -"wy" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/supply/dock) -"wz" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"wA" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"wB" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wC" = (/obj/structure/table/standard,/obj/item/device/aicard,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wD" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"wE" = (/obj/machinery/vending/medical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"wF" = (/obj/machinery/chem_master,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"wG" = (/obj/machinery/chemical_dispenser/ert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) -"wH" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "supply_shuttle"; pixel_x = 25; pixel_y = 0; req_one_access = list(13,31); tag_door = "supply_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/supply/dock) -"wI" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"wJ" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"wK" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wM" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wN" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_telebay"; name = "remote shutter control"; pixel_x = 0; pixel_y = -25; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wO" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_workshop"; name = "remote shutter control"; pixel_x = 25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wP" = (/turf/unsimulated/wall,/area/centcom/security) -"wQ" = (/obj/structure/closet/secure_closet/medical_wall{pixel_x = -32; pixel_y = 0; req_access = list(150)},/obj/item/stack/medical/splint,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wR" = (/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"wS" = (/obj/structure/table/standard,/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"wT" = (/obj/effect/floor_decal/carpet{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"wU" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/standard,/obj/item/weapon/surgicaldrill,/obj/item/weapon/cautery,/obj/item/weapon/retractor,/obj/item/stack/nanopaste,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"wV" = (/obj/machinery/door/window{dir = 1; name = "Surgery"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"wW" = (/obj/structure/table/rack,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"wX" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "merc_shuttle_pump"},/obj/machinery/button/remote/blast_door{id = "smindicate"; name = "ship lockdown control"; pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"wY" = (/obj/structure/table/rack,/obj/item/weapon/rig/merc/empty,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"wZ" = (/obj/item/weapon/weldingtool,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"xa" = (/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"xb" = (/obj/machinery/telecomms/allinone{intercept = 1},/obj/machinery/door/window/northright{name = "Telecoms Mainframe"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"xc" = (/obj/machinery/door/blast/regular{id = "syndieshutters_telebay"; name = "Outer Airlock"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) -"xd" = (/obj/structure/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"xe" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xf" = (/obj/effect/floor_decal/corner/orange{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xg" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/security) -"xh" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/floor_decal/corner/orange/full{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xi" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/effect/floor_decal/corner/orange{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xj" = (/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"xk" = (/obj/machinery/computer/card/centcom,/obj/item/weapon/card/id/centcom,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"xl" = (/obj/machinery/computer/security/telescreen{name = "Spec. Ops. Monitor"; network = list("ERT")},/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"xm" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"xn" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"xo" = (/obj/effect/floor_decal/carpet{dir = 4},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"xp" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"xq" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/floor,/area/supply/dock) -"xr" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/standard,/obj/item/weapon/circular_saw,/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/weapon/hemostat,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"xs" = (/obj/machinery/door/window{tag = "icon-right"; name = "Seating"; icon_state = "right"; dir = 2; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"xt" = (/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"xu" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"xv" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"xw" = (/obj/machinery/door/airlock/external,/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"xx" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"xy" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"xz" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/effect/floor_decal/corner/orange/full{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xA" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xB" = (/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/command) -"xC" = (/obj/machinery/door/airlock/glass{name = "Brig Dormitories"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xD" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"xE" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"xF" = (/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 2; pixel_y = 6},/obj/structure/table/standard,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"xG" = (/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/structure/table/standard,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"xH" = (/obj/structure/bed/chair/comfy/teal,/obj/effect/floor_decal/carpet{dir = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"xI" = (/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 9},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"xJ" = (/obj/structure/table/standard,/obj/item/roller,/obj/item/roller,/obj/item/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"xK" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"xL" = (/obj/structure/flora/pottedplant{tag = "icon-plant-10"; icon_state = "plant-10"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"xM" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_station/start) -"xN" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/supply/dock) -"xO" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"xP" = (/obj/structure/table/reinforced,/obj/item/device/taperecorder,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xQ" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xR" = (/obj/structure/table/rack,/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"xS" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xT" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/weapon/deck/cards,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xU" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"xV" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"xW" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"xX" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"xY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/bananapeel,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"xZ" = (/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 10},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"ya" = (/obj/structure/closet/secure_closet/personal,/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"yb" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/supply/dock) -"yc" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 2},/area/supply/dock) -"yd" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 4},/area/supply/dock) -"ye" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/supply/dock) -"yf" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_station/start) -"yg" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_station/start) -"yh" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_station/start) -"yi" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/effect/floor_decal/corner/orange{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yj" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yk" = (/obj/structure/bed/chair/comfy/teal{dir = 4},/obj/effect/floor_decal/carpet{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"yl" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"ym" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/button/remote/blast_door{name = "Spec Ops Ready Room"; pixel_y = 15; req_access = list(11); id = "CREED"},/obj/machinery/button/remote/blast_door{name = "Mech Storage"; icon_state = "doorctrl0"; pixel_y = 0; req_access = list(11); id = "ASSAULT"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"yn" = (/obj/structure/device/piano{dir = 4},/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yo" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command) -"yp" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/supply/dock) -"yq" = (/turf/simulated/shuttle/wall{icon_state = "swall15"; dir = 2},/area/supply/dock) -"yr" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/supply/dock) -"ys" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 8},/area/supply/dock) -"yt" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"yu" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"yv" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yw" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/command) -"yx" = (/obj/structure/closet/secure_closet/hos,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"yy" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yz" = (/obj/effect/floor_decal/corner/orange{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yA" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/space,/area/supply/dock) -"yB" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/supply/dock) -"yC" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/space,/area/supply/dock) -"yD" = (/obj/effect/floor_decal/corner/orange,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yE" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yF" = (/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -6},/obj/structure/table/standard,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yG" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/effect/floor_decal/corner/orange/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yH" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yI" = (/turf/unsimulated/wall,/area/centcom/restaurant) -"yJ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/storage/briefcase,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"yK" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yL" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yM" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yN" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yO" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yP" = (/mob/living/silicon/decoy{name = "A.L.I.C.E."},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yQ" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"yR" = (/turf/unsimulated/floor{icon_state = "steel"},/area/space) -"yS" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yT" = (/obj/structure/bed/chair/comfy/teal{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"yU" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) -"yV" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) -"yW" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) -"yX" = (/obj/machinery/vending/dinnerware,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"yY" = (/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"yZ" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"za" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/glasses/square,/obj/item/weapon/storage/box/glasses/square,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"zb" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access = list(105)},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"zc" = (/obj/machinery/computer/security,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zd" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"ze" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1443; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zf" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access = list(109)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zg" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zh" = (/obj/structure/table/reinforced,/obj/item/weapon/material/minihoe,/obj/item/device/analyzer/plant_analyzer,/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zi" = (/obj/effect/floor_decal/corner/orange{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zj" = (/obj/machinery/computer/card/centcom,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"zk" = (/obj/structure/table/reinforced,/obj/item/clothing/head/greenbandana,/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zl" = (/obj/machinery/vending/hydroseeds,/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zm" = (/obj/machinery/vending/hydronutrients,/obj/effect/floor_decal/corner/orange/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zn" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) -"zo" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"zp" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"zq" = (/obj/structure/filingcabinet/filingcabinet,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zr" = (/obj/machinery/door/airlock/glass_security{name = "Spaceport Security Airlock"; req_access = list(63)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zs" = (/obj/effect/floor_decal/corner/orange{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zt" = (/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zu" = (/obj/machinery/door/airlock/freezer,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) -"zv" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"zw" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"zx" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"zy" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"zz" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access = list(109)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zA" = (/obj/structure/table/reinforced,/obj/item/device/pda/captain,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zB" = (/obj/structure/table/reinforced,/obj/item/weapon/card/id/captains_spare,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zC" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zD" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"zE" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "swall_s"},/area/shuttle/transport1/centcom) -"zF" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/shuttle/transport1/centcom) -"zG" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 2},/area/shuttle/transport1/centcom) -"zH" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) -"zI" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) -"zJ" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) -"zK" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 1},/area/shuttle/transport1/centcom) -"zL" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 4},/turf/space,/area/shuttle/transport1/centcom) -"zM" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle_bay"; name = "shuttle bay controller"; pixel_x = -24; pixel_y = 0; tag_door = "centcom_shuttle_bay_door"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"zN" = (/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zO" = (/obj/machinery/computer/arcade/orion_trail,/obj/effect/floor_decal/corner/orange{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zP" = (/obj/structure/closet/wardrobe/orange,/obj/effect/floor_decal/corner/orange{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zQ" = (/obj/structure/closet/wardrobe/orange,/obj/effect/floor_decal/corner/orange/full{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zR" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) -"zS" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/obj/effect/floor_decal/corner/orange{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zT" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"zU" = (/obj/machinery/door/airlock/centcom{name = "Teleporter Bay"; opacity = 1; req_access = list(107)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zV" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zW" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 8},/area/shuttle/transport1/centcom) -"zX" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Centcom"},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"zY" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "swall_f"},/area/shuttle/transport1/centcom) -"zZ" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/shuttle/transport1/centcom) -"Aa" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"Ab" = (/obj/structure/bed/chair,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"Ac" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/airless,/area/shuttle/transport1/centcom) -"Ad" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/space,/area/shuttle/transport1/centcom) -"Ae" = (/obj/effect/floor_decal/corner/orange{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Af" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 30},/obj/effect/floor_decal/corner/orange{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Ag" = (/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detectives camera"; pictures_left = 30; pixel_x = 2; pixel_y = 3},/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Ah" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) -"Ai" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Aj" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_thunderdome"; name = "Thunderdome Access"; pixel_x = 6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_vip_shuttle"; name = "VIP Shuttle Access"; pixel_x = 6; pixel_y = -34; req_access = list(101)},/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Ak" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Centcom"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Al" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Am" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"An" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) -"Ao" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"Ap" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"Aq" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"Ar" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/shuttle/transport1/centcom) -"As" = (/obj/machinery/door/airlock/external{frequency = 1380; glass = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_bay_door"; locked = 1; name = "Transport Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"At" = (/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Au" = (/obj/machinery/door/airlock/centcom{name = "Maintenance Access"; opacity = 1; req_access = list(106)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Av" = (/obj/machinery/computer/robotics,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Aw" = (/turf/unsimulated/wall,/area/centcom/main_hall) -"Ax" = (/turf/unsimulated/wall,/area/centcom/tram) -"Ay" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/shuttle/transport1/centcom) -"Az" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 2},/area/shuttle/transport1/centcom) -"AA" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle"; pixel_x = 0; pixel_y = -25; tag_door = "centcom_shuttle_hatch"},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"AB" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 4},/area/shuttle/transport1/centcom) -"AC" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"AD" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) -"AE" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/shuttle/transport1/centcom) -"AF" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 4},/turf/space,/area/shuttle/transport1/centcom) -"AG" = (/obj/structure/table/standard,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"AH" = (/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/effect/floor_decal/corner/red{dir = 5},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"AI" = (/obj/machinery/telecomms/receiver/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"AJ" = (/obj/machinery/telecomms/bus/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"AK" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"AL" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"AM" = (/obj/structure/sign/securearea,/turf/unsimulated/wall,/area/centcom/command) -"AN" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"AO" = (/obj/structure/sign/nosmoking_2,/turf/unsimulated/wall,/area/centcom/command) -"AP" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"AQ" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"AR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"AS" = (/obj/machinery/gateway{dir = 9},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"AT" = (/obj/machinery/gateway{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"AU" = (/obj/machinery/gateway{dir = 5},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"AV" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"AW" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"AX" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"AY" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"AZ" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 8},/area/shuttle/transport1/centcom) -"Ba" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 2},/area/shuttle/transport1/centcom) -"Bb" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/shuttle/transport1/centcom) -"Bc" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"Bd" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"Be" = (/obj/machinery/gateway{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"Bf" = (/obj/machinery/gateway/centerstation,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"Bg" = (/obj/machinery/gateway{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"Bh" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) -"Bi" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = list(150)},/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/gloves/latex,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"Bj" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Bk" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"Bl" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"Bm" = (/obj/machinery/turretid{pixel_x = -28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"Bn" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"Bo" = (/obj/machinery/gateway{dir = 10},/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"Bp" = (/obj/machinery/gateway,/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"Bq" = (/obj/machinery/gateway{dir = 6},/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"Br" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) -"Bs" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"Bt" = (/obj/machinery/telecomms/broadcaster/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Bu" = (/obj/machinery/telecomms/hub/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Bv" = (/obj/machinery/computer/rdservercontrol{badmin = 1; name = "Master R&D Server Controller"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Bw" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Bx" = (/obj/machinery/door/blast/regular{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"By" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"Bz" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"BA" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"BB" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"BC" = (/obj/machinery/r_n_d/server/centcom,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"BD" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"BE" = (/obj/machinery/door/airlock/external,/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"BF" = (/obj/machinery/door/airlock/glass{name = "Arrivals Processing"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"BG" = (/obj/machinery/door/airlock/security{name = "Equipment Storage"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"BH" = (/obj/machinery/iv_drip,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"BI" = (/obj/machinery/account_database{name = "CentComm Accounts database"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"BJ" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"BK" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHEAST)"; icon_state = "swall"; dir = 6},/area/centcom/tram) -"BL" = (/turf/simulated/shuttle/wall{tag = "icon-swall_straight (WEST)"; icon_state = "swall_straight"; dir = 8},/area/centcom/tram) -"BM" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"BN" = (/turf/simulated/shuttle/wall{tag = "icon-swall (WEST)"; icon_state = "swall"; dir = 8},/area/centcom/tram) -"BO" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"BP" = (/turf/simulated/shuttle/wall{tag = "icon-swall (EAST)"; icon_state = "swall"; dir = 4},/area/centcom/tram) -"BQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHWEST)"; icon_state = "swall"; dir = 10},/area/centcom/tram) -"BR" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"BS" = (/obj/effect/floor_decal/corner/white/full{tag = "icon-corner_white_full (EAST)"; icon_state = "corner_white_full"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"BT" = (/obj/effect/floor_decal/corner/white,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"BU" = (/obj/effect/floor_decal/corner/white{dir = 5},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"BV" = (/obj/effect/floor_decal/corner/white{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"BW" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/structure/table/standard,/obj/item/weapon/scalpel,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/stack/medical/advanced/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"BX" = (/obj/structure/closet{name = "Evidence Closet"},/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"BY" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"BZ" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHWEST)"; icon_state = "swall"; dir = 9},/area/centcom/tram) -"Ca" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"Cb" = (/obj/structure/bed/chair,/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = 28},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"Cc" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"Cd" = (/obj/structure/bed/chair,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"Ce" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHEAST)"; icon_state = "swall"; dir = 5},/area/centcom/tram) -"Cf" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"Cg" = (/obj/effect/floor_decal/corner/white{dir = 6; icon_state = "corner_white"; tag = "icon-corner_white (NORTHWEST)"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"Ch" = (/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"Ci" = (/obj/effect/floor_decal/corner/white{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"Cj" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"Ck" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"Cl" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"Cm" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"Cn" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window2"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"Co" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"Cp" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"Cq" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"Cr" = (/obj/effect/floor_decal/corner/white{tag = "icon-corner_white (NORTH)"; icon_state = "corner_white"; dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"Cs" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"Ct" = (/obj/item/weapon/storage/box/evidence,/obj/item/weapon/folder/red,/obj/effect/floor_decal/corner/red{dir = 9},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Cu" = (/obj/machinery/door/airlock/centcom{name = "Administrative Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"Cv" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/stamp/chameleon,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"Cw" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/card/id/centcom,/obj/item/weapon/card/id/syndicate,/obj/item/weapon/card/id,/obj/item/weapon/card/id/gold,/obj/item/weapon/card/id/silver,/obj/item/device/pda/captain,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"Cx" = (/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"Cy" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Cz" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 4},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CA" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"CB" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 8},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CC" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CD" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"CE" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window1"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) -"CF" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"CG" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"CH" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"CI" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"CJ" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"CK" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"CL" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"CM" = (/obj/machinery/computer/arcade/battle,/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"CN" = (/obj/structure/flora/ausbushes/fernybush,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CO" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CP" = (/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CQ" = (/obj/structure/sign/nosmoking_1{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"CR" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_infirmary"; name = "remote shutter control"; pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) -"CS" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CT" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CU" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CV" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CW" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"CX" = (/obj/structure/flora/ausbushes/fernybush,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CY" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"CZ" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Da" = (/obj/machinery/turretid{pixel_x = -28; pixel_y = 0; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"Db" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"Dc" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"Dd" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -30},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"De" = (/obj/structure/bed/chair{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) -"Df" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Dg" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"Dh" = (/obj/structure/table/reinforced,/obj/machinery/newscaster{layer = 3.3; pixel_x = 27; pixel_y = 0},/obj/effect/floor_decal/corner/orange/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Di" = (/obj/machinery/door/airlock/centcom{name = "Administrative Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) -"Dj" = (/obj/structure/sign/securearea{name = "\improper CAUTION"; pixel_x = 32},/obj/machinery/light{dir = 4},/obj/structure/mopbucket,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"Dk" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"Dl" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Dm" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/restaurant) -"Dn" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Do" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Dp" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Dq" = (/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"Dr" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPortEast"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"Ds" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"Dt" = (/obj/machinery/door/window/northright,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Du" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Dv" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Dw" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Dx" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Dy" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Dz" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DA" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DC" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortWest"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"DD" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"DE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"DF" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"DG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"DH" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"DI" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"DJ" = (/obj/machinery/door/airlock/external,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"DK" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DL" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DM" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DN" = (/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DO" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DP" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"DQ" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"DR" = (/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"DS" = (/obj/effect/floor_decal/spline/plain{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"DT" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortEast"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"DU" = (/obj/machinery/door/blast/regular{id = "CentComPortEast"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/tram) -"DV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) -"DW" = (/obj/machinery/door/window/eastright,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DX" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"DY" = (/obj/machinery/door/window/westright,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"DZ" = (/obj/structure/bed/chair/office/light{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Ea" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/main_hall) -"Eb" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"Ec" = (/obj/effect/floor_decal/spline/plain{tag = "icon-spline_plain_full (NORTH)"; icon_state = "spline_plain_full"; dir = 1},/obj/structure/showcase,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"Ed" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"Ee" = (/obj/structure/bed/chair/office/light,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Ef" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Eg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Eh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"Ei" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"Ej" = (/obj/machinery/door/window/southleft,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Ek" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"El" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Em" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"En" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Eo" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Ep" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Eq" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Er" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Es" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"Et" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Eu" = (/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"Ev" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) -"Ew" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"Ex" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ey" = (/turf/unsimulated/wall,/area/centcom/medical) -"Ez" = (/obj/machinery/door/airlock/glass_medical{name = "Arrivals Medbay"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"EA" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/medical) -"EB" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/bar) -"EC" = (/obj/structure/table/standard,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"ED" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EE" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EF" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EG" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"EI" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"EJ" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"EK" = (/obj/item/weapon/bedsheet/rd,/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"EL" = (/obj/machinery/camera/network/ert{c_tag = "Assault Armor North"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"EM" = (/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"EN" = (/obj/mecha/combat/gygax/dark,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) -"EO" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 8},/obj/item/clothing/glasses/sunglasses/prescription,/obj/item/clothing/glasses/sunglasses/prescription,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) -"EP" = (/obj/structure/table/standard,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"EQ" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = -30},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"ER" = (/obj/structure/table/standard,/obj/structure/flora/pottedplant{pixel_y = 8},/obj/effect/floor_decal/corner/green{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"ES" = (/obj/effect/floor_decal/corner/green{dir = 5},/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"ET" = (/obj/structure/flora/ausbushes,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EU" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EV" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EW" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EX" = (/obj/structure/flora/bush,/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) -"EY" = (/obj/effect/floor_decal/corner/white{dir = 9; icon_state = "corner_white"; tag = "icon-corner_white (NORTHWEST)"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"EZ" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fa" = (/obj/effect/floor_decal/corner/green{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fb" = (/turf/unsimulated/wall,/area/centcom/bar) -"Fc" = (/obj/effect/floor_decal/corner/green/full{dir = 8},/obj/machinery/computer/arcade/orion_trail,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fd" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) -"Fe" = (/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"Ff" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"Fg" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) -"Fh" = (/turf/unsimulated/wall,/area/centcom/bathroom) -"Fi" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) -"Fj" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s (EAST)"; icon_state = "swall_s"; dir = 4},/area/shuttle/escape/centcom) -"Fk" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"Fl" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"Fm" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"Fn" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s"; icon_state = "swall_s"},/area/shuttle/escape/centcom) -"Fo" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fp" = (/obj/structure/table/standard,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fq" = (/obj/effect/floor_decal/corner/green{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fr" = (/obj/effect/floor_decal/corner/green,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Fs" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"Ft" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"Fu" = (/obj/structure/table/steel,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) -"Fv" = (/obj/structure/closet/secure_closet/personal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) -"Fw" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) -"Fx" = (/obj/structure/table/rack,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"Fy" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHWEST)"; icon_state = "swall"; dir = 9},/area/shuttle/escape/centcom) -"Fz" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"FA" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"FB" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"FC" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"FD" = (/obj/machinery/computer/med_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"FE" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHEAST)"; icon_state = "swall"; dir = 5},/area/shuttle/escape/centcom) -"FF" = (/obj/item/device/taperecorder,/obj/effect/floor_decal/corner/red/full,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"FG" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge West"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"FH" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"FI" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"FJ" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge East"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"FK" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FL" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FM" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FN" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FO" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FP" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FQ" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) -"FR" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"FS" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 0; pixel_y = -25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"FT" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"FU" = (/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"FV" = (/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"},/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/inaprovaline,/turf/unsimulated/wall,/area/centcom/medical) -"FW" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/boiledrice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FX" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/beetsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stuffing,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"FZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/soylenviridians,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"Ga" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Gb" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"Gc" = (/obj/structure/table/rack,/obj/item/weapon/grenade/empgrenade,/obj/item/weapon/grenade/flashbang,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Gd" = (/turf/simulated/shuttle/wall{tag = "icon-swall_straight"; icon_state = "swall_straight"},/area/shuttle/escape/centcom) -"Ge" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"Gf" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Gg" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Gh" = (/turf/simulated/shuttle/wall{tag = "icon-swall"; icon_state = "swall"},/area/shuttle/escape/centcom) -"Gi" = (/obj/structure/AIcore/deactivated,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"Gj" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Gk" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Gl" = (/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"Gm" = (/obj/effect/floor_decal/corner/red{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Gn" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Go" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access = list(19)},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"Gp" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHEAST)"; icon_state = "swall"; dir = 6},/area/shuttle/escape/centcom) -"Gq" = (/turf/simulated/shuttle/wall{tag = "icon-swall_t"; icon_state = "swall_t"},/area/shuttle/escape/centcom) -"Gr" = (/turf/simulated/shuttle/wall{tag = "icon-swall_straight (EAST)"; icon_state = "swall_straight"; dir = 4},/area/shuttle/escape/centcom) -"Gs" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHWEST)"; icon_state = "swall"; dir = 10},/area/shuttle/escape/centcom) -"Gt" = (/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerPort"; req_access = newlist()},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Gu" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Gv" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Gw" = (/obj/effect/floor_decal/corner/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Gx" = (/obj/effect/floor_decal/corner/red{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Gy" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Gz" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"GA" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"GB" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"GC" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"GD" = (/obj/machinery/atm{pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"GE" = (/obj/machinery/atm{pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"GF" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"GG" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Cell"},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"GH" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"GI" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"GJ" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"GK" = (/obj/effect/floor_decal/corner/red{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"GL" = (/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"GM" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/spesslaw,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"GN" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"GO" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"GP" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/meatsteak,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"GQ" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"GR" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"GS" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"GT" = (/obj/structure/urinal{pixel_y = 32},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"GU" = (/obj/structure/urinal{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"GV" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) -"GW" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"GX" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"GY" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"GZ" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"Ha" = (/obj/effect/floor_decal/corner/red{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Hb" = (/obj/structure/window/shuttle{icon_state = "window1"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"Hc" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"Hd" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"He" = (/turf/unsimulated/wall,/area/tdome) -"Hf" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/tdome) -"Hg" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access = list(101)},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Hh" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"Hi" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"Hj" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"Hk" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"Hl" = (/obj/machinery/door/airlock{name = "Unit 5"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"Hm" = (/obj/machinery/door/airlock{name = "Unit 6"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"Hn" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/shuttle/escape/centcom) -"Ho" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Hp" = (/turf/simulated/shuttle/wall{icon_state = "swall"; dir = 5},/area/shuttle/escape/centcom) -"Hq" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) -"Hr" = (/turf/simulated/shuttle/wall{icon_state = "swall"; dir = 9},/area/shuttle/escape/centcom) -"Hs" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"Ht" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) -"Hu" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"Hv" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/glass2/square,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"Hw" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Hx" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Hy" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"Hz" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) -"HA" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_south_mech"; pixel_y = 19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"HB" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"HC" = (/obj/machinery/camera/network/crescent{c_tag = "Shuttle Center"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"HD" = (/obj/machinery/vending/medical,/turf/unsimulated/wall,/area/centcom/medical) -"HE" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"HF" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/red{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"HG" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"HH" = (/obj/structure/bed/chair/comfy/brown,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"HI" = (/obj/structure/bed/chair/comfy/brown,/obj/effect/floor_decal/carpet{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"HJ" = (/obj/structure/bed/chair/comfy/brown,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"HK" = (/obj/structure/table/woodentable{dir = 5},/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/wcoat,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"HL" = (/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"HM" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"HN" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"HO" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"HP" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_north_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"HQ" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"HR" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"HS" = (/obj/machinery/computer/security,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"HT" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"HU" = (/obj/effect/floor_decal/carpet{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"HV" = (/obj/structure/curtain/open/shower,/obj/machinery/shower,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"HW" = (/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"HX" = (/obj/structure/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera/network/crescent{c_tag = "Shuttle West"; dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"HY" = (/obj/structure/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/camera/network/crescent{c_tag = "Shuttle East"; dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"HZ" = (/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Ia" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Ib" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"Ic" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/effect/floor_decal/carpet,/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"Id" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) -"Ie" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"If" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/reagent_containers/glass/rag,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"Ig" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"Ih" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_alc/full,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"Ii" = (/obj/structure/window/shuttle{icon_state = "window3"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) -"Ij" = (/obj/structure/closet/secure_closet/security,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Ik" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Il" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Im" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"In" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) -"Io" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_one_access = list(13); tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) -"Ip" = (/obj/structure/table/standard,/obj/structure/flora/pottedplant{pixel_y = 8},/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Iq" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ir" = (/obj/machinery/smartfridge/chemistry,/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Is" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"It" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Iu" = (/obj/structure/table/glass,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Iv" = (/obj/machinery/sleeper{dir = 8},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Iw" = (/obj/machinery/body_scanconsole,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ix" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Iy" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Iz" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IA" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"IB" = (/obj/structure/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"IC" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"ID" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IE" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access = list(66)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IF" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"IG" = (/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"IH" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"II" = (/obj/machinery/door/airlock/command{name = "Thunderdome"},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome) -"IJ" = (/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access = list(5)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IK" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IL" = (/obj/machinery/computer/crew,/obj/effect/floor_decal/corner/green{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IM" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"IN" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"IO" = (/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"IP" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"IQ" = (/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"IR" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"IS" = (/obj/machinery/status_display{pixel_y = -30},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"IT" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_south_starboard_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) -"IU" = (/obj/machinery/door/airlock/medical{name = "Observation Room"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IV" = (/obj/machinery/computer/med_data,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IW" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IX" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access = list(6,5)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IY" = (/obj/machinery/optable,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"IZ" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ja" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Jb" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Jc" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"Jd" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"Je" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"Jf" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/shuttle/escape/centcom) -"Jg" = (/obj/machinery/door/airlock/glass_mining{name = "Shuttle Cargo"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"Jh" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 1},/area/shuttle/escape/centcom) -"Ji" = (/obj/machinery/door/airlock/glass_medical{name = "Escape Shuttle Infirmary"; req_access = list(5)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Jj" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/shuttle/escape/centcom) -"Jk" = (/obj/effect/floor_decal/corner/green{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Jl" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/APlus,/obj/item/weapon/reagent_containers/blood/BMinus,/obj/item/weapon/reagent_containers/blood/BPlus,/obj/item/weapon/reagent_containers/blood/OPlus,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Jm" = (/obj/machinery/vending/medical,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Jn" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Jo" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Jp" = (/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Jq" = (/obj/machinery/sleep_console,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Jr" = (/obj/machinery/sleeper{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Js" = (/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Jt" = (/obj/machinery/bodyscanner{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ju" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Jv" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"Jw" = (/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"Jx" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"Jy" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"Jz" = (/obj/structure/closet/hydrant{pixel_x = 30; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"JA" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JB" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JC" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JD" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JE" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JF" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"JG" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"JH" = (/obj/structure/table/standard,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"JI" = (/obj/structure/bed/chair,/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) -"JJ" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"JK" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JL" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JM" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JN" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"JO" = (/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"JP" = (/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"JQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv,/obj/item/weapon/storage/firstaid/adv,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"JR" = (/obj/effect/floor_decal/corner/blue{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"JS" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"JT" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"JU" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/structure/disposalpipe/segment,/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"JV" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"JW" = (/obj/structure/closet/crate/freezer/rations,/obj/machinery/camera/network/crescent{c_tag = "Shuttle West Storage"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"JX" = (/obj/structure/closet/crate/freezer/rations,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"JY" = (/obj/machinery/iv_drip,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"JZ" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Ka" = (/obj/structure/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Kb" = (/obj/structure/bed/roller,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Kc" = (/obj/machinery/clonepod,/obj/effect/floor_decal/corner/blue/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Kd" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) -"Ke" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/corner/blue{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Kf" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Kg" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Kh" = (/obj/machinery/door/blast/regular{id = "thunderdomeaxe"; name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Ki" = (/obj/machinery/igniter,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Kj" = (/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Kk" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Kl" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/shuttle/escape/centcom) -"Km" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Kn" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Ko" = (/obj/machinery/sleep_console{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"Kp" = (/obj/machinery/recharge_station,/obj/machinery/camera/network/crescent{c_tag = "Shuttle East Storage"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"Kq" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Kr" = (/obj/machinery/door/airlock/glass_medical{name = "Virology Laboratory"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ks" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Kt" = (/obj/machinery/door/blast/regular{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Ku" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome2) -"Kv" = (/obj/machinery/door/blast/regular{id = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Kw" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) -"Kx" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Ky" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/shuttle/escape/centcom) -"Kz" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape/centcom) -"KA" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 2},/area/shuttle/escape/centcom) -"KB" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 8},/area/shuttle/escape/centcom) -"KC" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KD" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/toxin,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KE" = (/obj/effect/floor_decal/corner/blue{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KF" = (/obj/structure/morgue,/obj/effect/floor_decal/corner/blue/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KG" = (/obj/structure/table/rack,/obj/item/device/binoculars,/obj/item/device/binoculars,/obj/item/device/binoculars,/obj/item/device/binoculars,/obj/item/device/binoculars,/obj/item/device/binoculars,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"KH" = (/obj/machinery/recharge_station,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) -"KI" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"KJ" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KK" = (/obj/structure/bed/roller,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = -32},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KL" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/o2,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KM" = (/obj/structure/table/rack,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"KN" = (/obj/structure/table/rack,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"KO" = (/obj/effect/floor_decal/corner/blue{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KP" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/wrench,/obj/effect/floor_decal/corner/blue/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KQ" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KR" = (/obj/effect/landmark{name = "tdome2"},/obj/machinery/camera/network/thunder{c_tag = "Thunderdome - Red Team"; invisibility = 101},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome2) -"KS" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"KT" = (/obj/effect/landmark{name = "tdome1"},/obj/machinery/camera/network/thunder{c_tag = "Green Team"; invisibility = 101},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) -"KU" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KV" = (/obj/structure/morgue,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KW" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KX" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"KY" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"KZ" = (/obj/effect/floor_decal/corner/blue{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"La" = (/obj/effect/floor_decal/corner/blue/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Lb" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/effect/floor_decal/corner/blue{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Lc" = (/obj/machinery/atmospherics/pipe/vent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Ld" = (/obj/machinery/camera/network/thunder{c_tag = "Thunderdome Arena"; invisibility = 101},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Le" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Lf" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Lg" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Lh" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Li" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Lj" = (/obj/machinery/door/blast/regular{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Lk" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Ll" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Lm" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) -"Ln" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"Lo" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/terminal) -"Lp" = (/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Lq" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Lr" = (/obj/item/weapon/extinguisher,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Ls" = (/obj/machinery/atmospherics/valve,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Lt" = (/obj/structure/bed/chair{dir = 1},/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Lu" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Lv" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/sleeping_agent{pixel_x = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Lw" = (/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Lx" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"Ly" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome) -"Lz" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LA" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) -"LB" = (/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LC" = (/obj/machinery/computer/pod{id = "thunderdomeaxe"; name = "Thunderdome Axe Supply"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LD" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LE" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LF" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LG" = (/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LH" = (/obj/structure/table/standard,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LI" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LJ" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LK" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/electrical,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LL" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"LM" = (/turf/unsimulated/beach/sand{density = 1; opacity = 1},/area/beach) -"LN" = (/turf/unsimulated/beach/sand,/area/beach) -"LO" = (/obj/structure/signpost,/turf/unsimulated/beach/sand,/area/beach) -"LP" = (/obj/structure/closet,/turf/unsimulated/beach/sand,/area/beach) -"LQ" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/beach) -"LR" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/beach) -"LS" = (/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/beach) -"LT" = (/turf/space,/area/shuttle/cryo/centcom) -"LU" = (/obj/effect/overlay/palmtree_r,/turf/unsimulated/beach/sand,/area/beach) -"LV" = (/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach) -"LW" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "swall_s"},/area/centcom/evac) -"LX" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; dir = 8; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/evac) -"LY" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 2},/area/centcom/evac) -"LZ" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/centcom/evac) -"Ma" = (/obj/structure/table/standard,/obj,/obj,/obj,/obj,/obj,/obj,/obj,/turf/unsimulated/beach/sand,/area/beach) -"Mb" = (/obj/structure/table/standard,/obj/item/clothing/under/color/rainbow,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/collectable/petehat{pixel_y = 5},/turf/unsimulated/beach/sand,/area/beach) -"Mc" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s (EAST)"; icon_state = "swall_s"; dir = 4},/area/centcom/evac) -"Md" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 1},/area/centcom/evac) -"Me" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/centcom/evac) -"Mf" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/centcom/evac) -"Mg" = (/turf/simulated/shuttle/plating,/area/centcom/evac) -"Mh" = (/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod2/centcom) -"Mi" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome2) -"Mj" = (/obj/machinery/computer/cloning,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Mk" = (/obj/machinery/dna_scannernew,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Ml" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Mm" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Mn" = (/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Mo" = (/obj/structure/closet/crate/medical,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/bonesetter,/obj/item/weapon/scalpel,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/hemostat{pixel_y = 4},/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Mp" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 1},/area/centcom/evac) -"Mq" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/unsimulated/beach/sand,/area/beach) -"Mr" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/beach/sand,/area/beach) -"Ms" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand,/area/beach) -"Mt" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_l"},/turf/space,/area/centcom/evac) -"Mu" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/centcom/evac) -"Mv" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/shuttle/plating,/area/centcom/evac) -"Mw" = (/obj/machinery/vending/engineering,/turf/simulated/shuttle/plating,/area/centcom/evac) -"Mx" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod1/centcom) -"My" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod2/centcom) -"Mz" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/shuttle/cryo/centcom) -"MA" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/centcom/evac) -"MB" = (/turf/simulated/shuttle/wall,/area/centcom/evac) -"MC" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"MD" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/centcom/evac) -"ME" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MF" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MG" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MH" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MI" = (/obj/machinery/computer/operating,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MJ" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/space,/area/centcom/evac) -"MK" = (/obj/structure/closet/emcloset,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"ML" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"MM" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) -"MN" = (/obj/machinery/body_scanconsole,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MO" = (/obj/machinery/optable,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MP" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"MQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MR" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MS" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MT" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MU" = (/obj/structure/table/standard,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) -"MV" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MW" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MX" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"MY" = (/obj/machinery/computer/card,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"MZ" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Na" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/obj/item/toy/plushie/mouse{desc = "A plushie of a small fuzzy rodent."; name = "Woodrat"},/turf/unsimulated/beach/sand,/area/beach) -"Nb" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach) -"Nc" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach) -"Nd" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/space,/area/centcom/evac) -"Ne" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 02"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Nf" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Ng" = (/obj/item/clothing/head/collectable/paper,/turf/unsimulated/beach/sand,/area/beach) -"Nh" = (/obj/machinery/door/airlock/maintenance_hatch{req_access = list(101)},/turf/simulated/shuttle/plating,/area/centcom/evac) -"Ni" = (/turf/simulated/shuttle/wall{tag = "icon-swall_t"; icon_state = "swall_t"},/area/centcom/evac) -"Nj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 1"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Nk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 2"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Nl" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cryostorage_shuttle_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock Cryostorage"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Nm" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Nn" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "large_escape_pod_2_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "large_escape_pod_2_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"No" = (/obj/structure/bed/roller,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Np" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Nq" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Nr" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/bodybags,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Ns" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 2},/area/centcom/evac) -"Nt" = (/turf/unsimulated/floor{icon_state = "sandwater"},/area/beach) -"Nu" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/evac) -"Nv" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_1_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "escape_pod_1_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Nw" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_2_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "escape_pod_2_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Nx" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cryostorage_shuttle_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "cryostorage_shuttle_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Ny" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Nz" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"NA" = (/obj/machinery/vending/cola,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"NB" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window4"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"NC" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window8"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"ND" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) -"NE" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window12"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"NF" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NG" = (/obj/structure/table/standard,/obj/item/device/radio/off,/obj/item/weapon/paper_bin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NH" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) -"NI" = (/turf/unsimulated/beach/coastline{density = 1; opacity = 1},/area/beach) -"NJ" = (/turf/unsimulated/beach/coastline,/area/beach) -"NK" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"NL" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NM" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) -"NN" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NO" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NP" = (/obj/machinery/computer/shuttle,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NQ" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window3"},/turf/simulated/shuttle/plating,/area/centcom/evac) -"NR" = (/turf/unsimulated/beach/water{density = 1; opacity = 1},/area/beach) -"NS" = (/turf/unsimulated/beach/water,/area/beach) -"NT" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NU" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NV" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"NW" = (/obj/structure/table/standard,/obj/item/weapon/storage/lockbox,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NX" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"NY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_6_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_6_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"NZ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_5_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_5_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Oa" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_4_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_4_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Ob" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_3_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_3_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Oc" = (/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"Od" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Oe" = (/obj/structure/table/standard,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/weapon/stamp/captain,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Of" = (/obj/structure/window/shuttle{icon_state = "window1"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) -"Og" = (/turf/unsimulated/wall,/area/syndicate_mothership{name = "\improper Raider Base"}) -"Oh" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/centcom/evac) -"Oi" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_6_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 6"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Oj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 5"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Ok" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_4_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 4"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Ol" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 3"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Om" = (/obj/machinery/door/airlock/maintenance_hatch{req_access = list(101)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"On" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "large_escape_pod_1_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "large_escape_pod_1_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"Oo" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"Op" = (/obj/structure/table/rack,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"Oq" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"Or" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"Os" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"Ot" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Ou" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 8},/area/centcom/evac) -"Ov" = (/turf/simulated/mineral,/area/syndicate_mothership{name = "\improper Raider Base"}) -"Ow" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Ox" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Oy" = (/obj/structure/table/standard,/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/cobweb2{icon_state = "spiderling"; name = "dead spider"; tag = "icon-spiderling"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Oz" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod6/centcom) -"OA" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/space) -"OB" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod5/centcom) -"OC" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod4/centcom) -"OD" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod3/centcom) -"OE" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 01"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"OF" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"OG" = (/obj/structure/closet/secure_closet/personal/patient,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"OH" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"OI" = (/obj/item/weapon/bedsheet/orange,/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"OJ" = (/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod1/centcom) -"OK" = (/obj/structure/closet{name = "Evidence Closet"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"OL" = (/obj/structure/closet/secure_closet/security,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"OM" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"ON" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"OO" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"OP" = (/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"OQ" = (/obj/structure/filingcabinet/chestdrawer{desc = "A large drawer filled with autopsy reports."; name = "Autopsy Reports"},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"OR" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) -"OS" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) -"OT" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"OU" = (/obj/machinery/vending/cola,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"OV" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"OW" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/shuttle/plating,/area/centcom/evac) -"OX" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/plating,/area/centcom/evac) -"OY" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket{amount_per_transfer_from_this = 50},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"OZ" = (/obj/item/weapon/mop,/obj/structure/mopbucket,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Pa" = (/obj/structure/table/rack,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 6; pixel_y = 3},/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) -"Pb" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pc" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pd" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 4},/area/centcom/evac) -"Pe" = (/obj/item/weapon/bedsheet/orange,/obj/effect/decal/cleanable/cobweb2{tag = "icon-cobweb1"; icon_state = "cobweb1"},/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pf" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"Pg" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Ph" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pi" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Pj" = (/obj/structure/urinal{pixel_y = 32},/obj/item/weapon/soap/syndie,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pk" = (/obj/structure/urinal{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pl" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pm" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pn" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Po" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pp" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pq" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pr" = (/obj/item/clothing/head/xenos,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Ps" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"Pt" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pu" = (/obj/item/clothing/mask/gas/swat{desc = "A close-fitting mask clearly not made for a human face."; name = "\improper alien mask"},/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pv" = (/obj/item/xenos_claw,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pw" = (/obj/structure/table/rack,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Px" = (/obj/structure/table/rack,/obj/item/clothing/glasses/thermal/plain/monocle,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Py" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -28; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Pz" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PA" = (/obj/item/pizzabox/meat,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PB" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PC" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PD" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PE" = (/obj/effect/decal/cleanable/cobweb2,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PF" = (/turf/simulated/wall/skipjack,/area/skipjack_station/start) -"PG" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/wall/skipjack,/area/skipjack_station/start) -"PH" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PI" = (/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PJ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access = list(150)},/turf/simulated/wall/skipjack,/area/skipjack_station/start) -"PK" = (/obj/item/organ/internal/stack,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PL" = (/obj/structure/bed/chair,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PP" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PQ" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"PR" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PS" = (/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PT" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/syndicate_mothership{name = "\improper Raider Base"}) -"PU" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PV" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/syndicate_mothership{name = "\improper Raider Base"}) -"PW" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PX" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"PY" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/skipjack_station/start) -"PZ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/skipjack_station/start) -"Qa" = (/obj/machinery/button/remote/blast_door{id = "skipjackshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/wall/skipjack,/area/skipjack_station/start) -"Qb" = (/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"Qc" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_northwest_lock"; locked = 0; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qg" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_northeast_lock"; locked = 0; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qh" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"Qi" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qj" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qk" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Ql" = (/obj/structure/table/steel,/obj/item/weapon/deck/cards,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Qm" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Qn" = (/obj/structure/table/standard,/obj/item/weapon/deck/cards,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) -"Qo" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qp" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qq" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qr" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qs" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Qt" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Qu" = (/obj/structure/bed/chair{dir = 1},/obj/item/clothing/glasses/thermal/plain/monocle,/obj/item/clothing/head/pirate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Qv" = (/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Qw" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access = list(150); tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qx" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qy" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southwest_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Qz" = (/obj/structure/table/rack,/obj/item/weapon/rig/industrial,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"QA" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"QB" = (/obj/structure/table/rack,/obj/item/weapon/rig/light/hacker,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"QC" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southeast_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QD" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; pixel_x = -22; req_one_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QE" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/weapon/material/harpoon,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/rig/light/stealth,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QF" = (/obj/machinery/clonepod,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"QG" = (/obj/item/seeds/potatoseed,/obj/item/seeds/potatoseed,/obj/item/seeds/ambrosiavulgarisseed,/obj/item/weapon/material/minihoe,/obj/item/weapon/beartrap,/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QH" = (/obj/machinery/vending/hydroseeds,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QI" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"QJ" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/clothing/shoes/magboots,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QK" = (/obj/machinery/bodyscanner{dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"QL" = (/obj/structure/table/standard,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/clothing/gloves/yellow,/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/weapon/card/emag,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QM" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/clothing/suit/space/void/mining,/obj/item/clothing/head/helmet/space/void/mining,/obj/item/clothing/head/helmet/space/void/atmos,/obj/item/clothing/suit/space/void/atmos,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QN" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; pixel_x = 22; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QO" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QP" = (/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QQ" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QR" = (/obj/machinery/button/remote/blast_door{id = "smindicate"; name = "ship lockdown control"; pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) -"QS" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"QT" = (/obj/structure/table/standard,/obj/structure/flora/pottedplant{icon_state = "plant-06"; pixel_y = 8; tag = "icon-plant-06"},/obj/effect/floor_decal/corner/red{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"QU" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"QV" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QW" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QY" = (/obj/item/robot_parts/l_leg,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"QZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Ra" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Rb" = (/obj/machinery/floodlight,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Rc" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/crossbow,/obj/item/stack/rods{amount = 10},/obj/machinery/light/small{dir = 8},/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Rd" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/obj/effect/floor_decal/corner/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Re" = (/obj/machinery/sleeper{dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) -"Rf" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Rg" = (/obj/item/robot_parts/robot_suit,/obj/item/robot_parts/r_leg,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Rh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Ri" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Rj" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Rk" = (/obj/structure/table/steel,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Rl" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Rm" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Rn" = (/obj/item/weapon/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Ro" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/crowbar,/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Rp" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"Rq" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"Rr" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) -"Rs" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) -"Rt" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Ru" = (/obj/structure/reagent_dispensers/beerkeg/fakenuke,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) -"Rv" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Rw" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Rx" = (/obj/machinery/light/small{dir = 1},/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"Ry" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"Rz" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"RA" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"RB" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"RC" = (/turf/unsimulated/wall,/area/wizard_station) -"RD" = (/obj/structure/sink,/turf/unsimulated/wall,/area/wizard_station) -"RE" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/skipjack_station/start) -"RF" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"RG" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"RH" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/skipjack_station/start) -"RI" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"RJ" = (/obj/structure/bookcase{name = "Forbidden Knowledge"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"RK" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"RL" = (/obj/machinery/librarycomp,/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"RM" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"RN" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/nuclear,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"RO" = (/obj/structure/table/woodentable,/obj/effect/landmark{name = "Teleport-Scroll"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"RP" = (/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"RQ" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack/satchel/withwallet,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"RR" = (/obj/structure/toilet{pixel_y = 8},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"RS" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"RT" = (/obj/structure/mirror{pixel_y = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"RU" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/skipjack_station/start) -"RV" = (/obj/structure/table/standard,/obj/item/weapon/legcuffs,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) -"RW" = (/obj/item/device/camera{name = "Autopsy Camera"; pixel_x = -2; pixel_y = 7},/obj/item/weapon/paper_bin{pixel_y = -6},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = -9},/obj/item/weapon/pen/blue{pixel_x = 3; pixel_y = -5},/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"RX" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"RY" = (/obj/structure/table/standard,/obj/item/weapon/circular_saw{pixel_y = 8},/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/obj/item/stack/medical/advanced/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"RZ" = (/obj/structure/simple_door/wood{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"Sa" = (/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"Sb" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"Sc" = (/obj/structure/simple_door/iron,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"Sd" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"Se" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"Sf" = (/obj/structure/table/standard,/obj/item/weapon/cautery,/obj/item/weapon/retractor,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"Sg" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"Sh" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/structure/closet/coffin,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"Si" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"Sj" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) -"Sk" = (/obj/item/weapon/bedsheet/rainbow,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Sl" = (/obj/item/weapon/bedsheet/hos,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Sm" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"Sn" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/bag/cash,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"So" = (/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"Sp" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) -"Sq" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"Sr" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"Ss" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"St" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"Su" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) -"Sv" = (/obj/item/weapon/bedsheet/orange,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Sw" = (/obj/item/weapon/bedsheet/green,/obj/machinery/light/small{dir = 4},/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"Sx" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"Sy" = (/obj/item/weapon/tray{pixel_y = 5},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) -"Sz" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SA" = (/obj/machinery/vending/magivend,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SB" = (/obj/structure/simple_door/wood{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"SC" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"SD" = (/obj/item/weapon/bedsheet/rd,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"SE" = (/obj/item/pizzabox/meat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"SF" = (/obj/item/weapon/bedsheet/clown,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"SG" = (/obj/structure/table/woodentable,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SH" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack/cultpack,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"SI" = (/obj/structure/table/woodentable,/obj/item/clothing/glasses/monocle,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"SJ" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/backpack,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"SK" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"SL" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"SM" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) -"SN" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SO" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SP" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/cups,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SQ" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SR" = (/obj/item/target,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) -"SS" = (/obj/item/target/syndicate,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) -"ST" = (/obj/item/target/alien,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) -"SU" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"SV" = (/obj/structure/table/rack,/obj/item/weapon/material/knife/ritual,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"SW" = (/obj/structure/kitchenspike,/obj/structure/table/marble,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"SX" = (/obj/structure/table/woodentable,/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/milosoup,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SY" = (/obj/structure/table/woodentable,/obj/item/weapon/dice,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"SZ" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) -"Ta" = (/turf/unsimulated/wall/fakeglass,/area/wizard_station) -"Tb" = (/obj/structure/table/woodentable,/obj/item/device/megaphone,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"Tc" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donut,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"Td" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chawanmushi,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"Te" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/cash_register/civilian{tag = "icon-register_idle (WEST)"; icon_state = "register_idle"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) -"Tf" = (/obj/item/weapon/book/manual/robotics_cyborgs,/obj/structure/table/glass,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) -"Tg" = (/obj/item/robot_parts/head,/obj/structure/table/glass,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) -"Th" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/wizard_station) -"Ti" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/wizard_station) -"Tj" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/wizard_station) -"Tk" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"},/area/wizard_station) -"Tl" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/wizard_station) -"Tm" = (/obj/effect/decal/remains/human,/turf/unsimulated/floor{tag = "icon-lava"; name = "plating"; icon_state = "lava"},/area/wizard_station) -"Tn" = (/turf/unsimulated/floor{tag = "icon-lava"; name = "plating"; icon_state = "lava"},/area/wizard_station) -"To" = (/turf/unsimulated/floor{icon_state = "asteroid"; tag = "icon-ironsand7"},/area/wizard_station) -"Tp" = (/mob/living/simple_animal/crab{name = "Experiment 68a"},/turf/unsimulated/floor{icon_state = "asteroid"; tag = "icon-ironsand7"},/area/wizard_station) -"Tq" = (/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"Tr" = (/obj/structure/flora/ausbushes/fullgrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"Ts" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"Tt" = (/mob/living/carbon/human/monkey{name = "Murphey"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"Tu" = (/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{tag = "icon-lava"; name = "plating"; icon_state = "lava"},/area/wizard_station) -"Tv" = (/obj/structure/flora/ausbushes/grassybush,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"Tw" = (/mob/living/simple_animal/hostile/retaliate/goat{name = "Experiment 97d"},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) -"Tx" = (/obj/item/weapon/caution,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"Ty" = (/obj/item/weapon/material/knife/ritual,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/wizard_station) -"Tz" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"TA" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"TB" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"TC" = (/obj/machinery/washing_machine,/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"TD" = (/obj/structure/table/steel,/obj/machinery/recharger,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"TE" = (/obj/structure/table/steel,/obj/item/clothing/glasses/regular,/obj/item/clothing/glasses/regular,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) -"TF" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"TG" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/shuttle/plating,/area/skipjack_station/start) -"TH" = (/obj/structure/table/woodentable,/obj/item/weapon/paper{info = "\[center]\[b]LIST OF SPELLS AVAILABLE\[/b]\[/center]\[br]\[br]Magic Missile:\[br]This spell fires several, slow moving, magic projectiles at nearby targets. If they hit a target, it is paralyzed and takes minor damage.\[br]\[br]Fireball:\[br]This spell fires a fireball at a target and does not require wizard garb. Be careful not to fire it at people that are standing next to you.\[br]\[br]Disintegrate:\[br]This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown.\[br]\[br]Disable Technology:\[br]This spell disables all weapons, cameras and most other technology in range.\[br]\[br]Smoke:\[br]This spell spawns a cloud of choking smoke at your location and does not require wizard garb.\[br]\[br]Blind:\[br]This spell temporarly blinds a single person and does not require wizard garb.\[br]Forcewall:\[br]This spell creates an unbreakable wall that lasts for 30 seconds and does not require wizard garb.\[br]\[br]Blink:\[br]This spell randomly teleports you a short distance. Useful for evasion or getting into areas if you have patience.\[br]\[br]Teleport:\[br]This spell teleports you to a type of area of your selection. Very useful if you are in danger, but has a decent cooldown, and is unpredictable.\[br]\[br]Mutate:\[br]This spell causes you to turn into a hulk, and gain telekinesis for a short while.\[br]\[br]Ethereal Jaunt:\[br]This spell creates your ethereal form, temporarily making you invisible and able to pass through walls.\[br]\[br]Knock:\[br]This spell opens nearby doors and does not require wizard garb.\[br]"; name = "List of Available Spells (READ)"},/obj/item/clothing/glasses/regular,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) -"TI" = (/obj/structure/table/standard,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/obj/item/weapon/FixOVein,/obj/item/stack/nanopaste,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"TJ" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/machinery/light/small{dir = 4},/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = list(150)},/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"TK" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"TL" = (/obj/effect/floor_decal/corner/white{dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"TM" = (/obj/structure/table/reinforced,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"TN" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"TO" = (/obj/structure/bed/chair/comfy/teal{dir = 1},/obj/effect/floor_decal/carpet,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"TP" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) -"TQ" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/red/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"TR" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) -"TS" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/cash_register/civilian,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) -"TT" = (/obj/structure/table/woodentable,/obj/item/weapon/spacecash/c1,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) -"TU" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/computer/arcade/orion_trail,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) -"TV" = (/obj/effect/floor_decal/corner/pink{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"TW" = (/obj/effect/floor_decal/corner/pink{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"TX" = (/obj/effect/floor_decal/corner/pink{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"TY" = (/obj/effect/floor_decal/corner/pink/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"TZ" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 0; pixel_y = 0},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ua" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ub" = (/obj/machinery/computer/cloning,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uc" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) -"Ud" = (/obj/structure/closet/wardrobe/white,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ue" = (/obj/machinery/dna_scannernew,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uf" = (/obj/structure/table/standard,/obj/item/weapon/book/manual/medical_cloning,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ug" = (/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uh" = (/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ui" = (/obj/item/weapon/autopsy_scanner,/obj/item/weapon/scalpel,/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uj" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/pink{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uk" = (/obj/effect/floor_decal/corner/pink,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ul" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/pink/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Um" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Un" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uo" = (/obj/item/weapon/storage/box/syringes{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/dropper,/obj/structure/table/glass,/obj/structure/reagent_dispensers/virusfood{pixel_x = 0; pixel_y = 28},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Up" = (/obj/machinery/disease2/incubator,/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uq" = (/obj/machinery/disease2/isolator,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ur" = (/obj/structure/closet/secure_closet/security,/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"Us" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ut" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uu" = (/obj/structure/table/standard,/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/medical/advanced/bruise_pack,/obj/effect/floor_decal/corner/pink{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uv" = (/obj/structure/table/standard,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/scalpel,/obj/effect/floor_decal/corner/pink{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uw" = (/obj/structure/table/standard,/obj/item/weapon/surgicaldrill,/obj/item/weapon/circular_saw,/obj/effect/floor_decal/corner/pink/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ux" = (/obj/structure/table/standard,/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/hemostat{pixel_y = 4},/obj/item/stack/nanopaste,/obj/effect/floor_decal/corner/pink{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uy" = (/obj/effect/floor_decal/corner/pink{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Uz" = (/obj/structure/table/standard,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/effect/floor_decal/corner/pink{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UA" = (/obj/machinery/computer/operating,/obj/effect/floor_decal/corner/pink{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UB" = (/obj/machinery/computer/centrifuge,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UC" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UD" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28},/obj/effect/floor_decal/corner/pink{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UE" = (/obj/machinery/smartfridge/chemistry/virology,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UF" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UG" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UH" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/corner/green/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UI" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UJ" = (/obj/machinery/computer/arcade,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UK" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UL" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/corner/pink{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UM" = (/obj/structure/closet/secure_closet/medical2,/obj/effect/floor_decal/corner/pink/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UN" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = 4; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = 4; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus{pixel_x = -5; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/OMinus{pixel_x = -5; pixel_y = -1},/obj/effect/floor_decal/corner/pink{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UO" = (/obj/effect/floor_decal/corner/pink{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UP" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/box/masks,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/effect/floor_decal/corner/pink/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UQ" = (/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks,/obj/structure/table/glass,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UR" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/effect/floor_decal/corner/green/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"US" = (/obj/machinery/computer/diseasesplicer,/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UT" = (/obj/machinery/disease2/diseaseanalyser,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UU" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UV" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"UW" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"UX" = (/obj/structure/table/standard,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/effect/floor_decal/corner/beige/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UY" = (/obj/effect/floor_decal/corner/beige{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"UZ" = (/obj/structure/table/standard,/obj/machinery/reagentgrinder,/obj/effect/floor_decal/corner/beige{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Va" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vb" = (/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vc" = (/obj/machinery/chemical_dispenser/ert,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vd" = (/obj/structure/closet/secure_closet/chemical,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Ve" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vf" = (/obj/structure/closet/secure_closet/medical1,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vg" = (/obj/structure/closet/secure_closet/medical1,/obj/effect/floor_decal/corner/beige/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vh" = (/obj/effect/floor_decal/corner/beige,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vi" = (/obj/effect/floor_decal/corner/beige{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vj" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vk" = (/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) -"Vl" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/corner/red{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) - +"aaa" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns15,/area/space) +"aab" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns9,/area/space) +"aac" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns5,/area/space) +"aad" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) +"aae" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns8,/area/space) +"aaf" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns3,/area/space) +"aag" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns6,/area/space) +"aah" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns7,/area/space) +"aai" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns4,/area/space) +"aaj" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns14,/area/space) +"aak" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns1,/area/space) +"aal" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns11,/area/space) +"aam" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns13,/area/space) +"aan" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns2,/area/space) +"aao" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns10,/area/space) +"aap" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns10,/area/space) +"aaq" = (/turf/space/transit/east/shuttlespace_ew13,/area/space) +"aar" = (/turf/space/transit/east/shuttlespace_ew14,/area/space) +"aas" = (/turf/space/transit/east/shuttlespace_ew15,/area/space) +"aat" = (/turf/space/transit/east/shuttlespace_ew1,/area/space) +"aau" = (/turf/space/transit/east/shuttlespace_ew2,/area/space) +"aav" = (/turf/space/transit/east/shuttlespace_ew3,/area/space) +"aaw" = (/turf/space/transit/east/shuttlespace_ew4,/area/space) +"aax" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) +"aay" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) +"aaz" = (/turf/space{icon_state = "black"},/area/space) +"aaA" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew5,/area/space) +"aaB" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew6,/area/space) +"aaC" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew7,/area/space) +"aaD" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew8,/area/space) +"aaE" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew9,/area/space) +"aaF" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew10,/area/space) +"aaG" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew11,/area/space) +"aaH" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew12,/area/space) +"aaI" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew13,/area/space) +"aaJ" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew14,/area/space) +"aaK" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew15,/area/space) +"aaL" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew1,/area/space) +"aaM" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew2,/area/space) +"aaN" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew3,/area/space) +"aaO" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/east/shuttlespace_ew4,/area/space) +"aaP" = (/turf/space,/area/space) +"aaQ" = (/turf/unsimulated/wall,/area/prison/solitary) +"aaR" = (/turf/unsimulated/wall,/area/space) +"aaS" = (/obj/structure/window/reinforced,/turf/unsimulated/wall,/area/space) +"aaT" = (/turf/space/transit/north/shuttlespace_ns8,/area/space) +"aaU" = (/turf/space/transit/north/shuttlespace_ns4,/area/space) +"aaV" = (/turf/space/transit/north/shuttlespace_ns11,/area/space) +"aaW" = (/turf/space/transit/north/shuttlespace_ns7,/area/space) +"aaX" = (/turf/space/transit/north/shuttlespace_ns2,/area/space) +"aaY" = (/turf/space/transit/north/shuttlespace_ns5,/area/space) +"aaZ" = (/turf/space/transit/north/shuttlespace_ns6,/area/space) +"aba" = (/turf/space/transit/north/shuttlespace_ns14,/area/space) +"abb" = (/turf/space/transit/north/shuttlespace_ns3,/area/space) +"abc" = (/turf/space/transit/north/shuttlespace_ns13,/area/space) +"abd" = (/turf/space/transit/north/shuttlespace_ns15,/area/space) +"abe" = (/turf/space/transit/north/shuttlespace_ns10,/area/space) +"abf" = (/turf/space/transit/north/shuttlespace_ns12,/area/space) +"abg" = (/turf/space/transit/north/shuttlespace_ns1,/area/space) +"abh" = (/turf/space/transit/north/shuttlespace_ns9,/area/space) +"abi" = (/turf/space/transit/east/shuttlespace_ew5,/area/space) +"abj" = (/turf/space/transit/east/shuttlespace_ew6,/area/space) +"abk" = (/turf/space/transit/east/shuttlespace_ew7,/area/space) +"abl" = (/turf/space/transit/east/shuttlespace_ew8,/area/space) +"abm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area/space) +"abn" = (/turf/space/transit/east/shuttlespace_ew10,/area/space) +"abo" = (/turf/space/transit/east/shuttlespace_ew11,/area/space) +"abp" = (/turf/space/transit/east/shuttlespace_ew12,/area/space) +"abq" = (/turf/space/transit/east/shuttlespace_ew9,/area/space) +"abr" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/prison/solitary) +"abs" = (/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/prison/solitary) +"abt" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/wall,/area/space) +"abu" = (/turf/simulated/floor/holofloor/desert,/area/holodeck/source_desert) +"abv" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_desert) +"abw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall,/area/space) +"abx" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"aby" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"abz" = (/obj/structure/table/rack/holorack,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/head/hairflower,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre) +"abA" = (/obj/effect/landmark/costume,/obj/structure/table/rack/holorack,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre) +"abB" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) +"abC" = (/obj/structure/window/reinforced/holowindow{dir = 4},/obj/structure/flora/pottedplant{tag = "icon-plant-10"; icon_state = "plant-10"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) +"abD" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"abE" = (/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_wildlife) +"abF" = (/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_plating) +"abG" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_emptycourt) +"abH" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"abI" = (/obj/structure/holostool,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"abJ" = (/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"abK" = (/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"abL" = (/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"abM" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/wall,/area/space) +"abN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) +"abO" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_desert) +"abP" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"abQ" = (/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"abR" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_theatre) +"abS" = (/obj/machinery/door/window/holowindoor,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) +"abT" = (/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"abU" = (/obj/effect/landmark{name = "Holocarp Spawn"},/turf/simulated/floor/holofloor/reinforced,/area/holodeck/source_wildlife) +"abV" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"abW" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"abX" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"abY" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area/space) +"abZ" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/corner,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"aca" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"acb" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"acc" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 8},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"acd" = (/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) +"ace" = (/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"acf" = (/obj/structure/window/reinforced/holowindow{dir = 1},/obj/structure/window/reinforced/holowindow{dir = 8},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"acg" = (/obj/structure/window/reinforced/holowindow{dir = 1},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"ach" = (/obj/machinery/door/window/holowindoor{dir = 1; name = "Jury Box"},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/obj/effect/floor_decal/carpet{dir = 5},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"aci" = (/obj/machinery/door/window/holowindoor{name = "Red Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_emptycourt) +"acj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) +"ack" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"acl" = (/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) +"acm" = (/obj/effect/decal/cleanable/dirt,/obj/structure/holostool,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) +"acn" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) +"aco" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"acp" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) +"acq" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"acr" = (/obj/structure/window/reinforced/holowindow,/obj/machinery/door/window/holowindoor{dir = 1; name = "Court Reporter's Box"},/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"acs" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/obj/structure/window/reinforced/holowindow{dir = 8},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"act" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"acu" = (/obj/structure/table/woodentable/holotable,/obj/structure/window/reinforced/holowindow,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"acv" = (/obj/structure/window/reinforced/holowindow,/obj/machinery/door/window/holowindoor{base_state = "right"; dir = 1; icon_state = "right"; name = "Witness Box"},/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"acw" = (/obj/structure/window/reinforced/holowindow{dir = 8},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_courtroom) +"acx" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"acy" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet/corners{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"acz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) +"acA" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) +"acB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) +"acC" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) +"acD" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area/space) +"acE" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) +"acF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area/space) +"acG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area/space) +"acH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area/space) +"acI" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"acJ" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/desert,/area/holodeck/source_picnicarea) +"acK" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) +"acL" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"acM" = (/obj/effect/floor_decal/carpet{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"acN" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"acO" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"acP" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"acQ" = (/obj/effect/floor_decal/carpet{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"acR" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"acS" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"acT" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"acU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) +"acV" = (/turf/space,/area/shuttle/escape/transit) +"acW" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew13,/area/space) +"acX" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew14,/area/space) +"acY" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew15,/area/space) +"acZ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew1,/area/space) +"ada" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"adb" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"adc" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"add" = (/obj/structure/table/woodentable/holotable,/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"ade" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"adf" = (/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"adg" = (/obj/structure/table/woodentable/holotable,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"adh" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"adi" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"adj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area/space) +"adk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) +"adl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space,/area/space) +"adm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew9,/area/space) +"adn" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/large_escape_pod1/transit) +"ado" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/large_escape_pod1/transit) +"adp" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/large_escape_pod1/transit) +"adq" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/large_escape_pod1/transit) +"adr" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/large_escape_pod1/transit) +"ads" = (/turf/space/transit/east/shuttlespace_ew6,/area/shuttle/large_escape_pod1/transit) +"adt" = (/turf/space/transit/east/shuttlespace_ew7,/area/shuttle/large_escape_pod1/transit) +"adu" = (/turf/space/transit/east/shuttlespace_ew8,/area/shuttle/large_escape_pod1/transit) +"adv" = (/turf/space/transit/east/shuttlespace_ew9,/area/shuttle/large_escape_pod1/transit) +"adw" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"adx" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"ady" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"adz" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"adA" = (/obj/structure/bed/chair/holochair{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"adB" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"adC" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) +"adD" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area/space) +"adE" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area/space) +"adF" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) +"adG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) +"adH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) +"adI" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area/space) +"adJ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) +"adK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) +"adL" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew4,/area/space) +"adM" = (/turf/space/transit/east/shuttlespace_ew13,/area/shuttle/large_escape_pod1/transit) +"adN" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/large_escape_pod1/transit) +"adO" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/large_escape_pod1/transit) +"adP" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 1},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"adQ" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 4},/turf/simulated/floor/holofloor/grass,/area/holodeck/source_picnicarea) +"adR" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_courtroom) +"adS" = (/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"adT" = (/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"adU" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_emptycourt) +"adV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area/space) +"adW" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/cryo/transit) +"adX" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/cryo/transit) +"adY" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/cryo/transit) +"adZ" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/cryo/transit) +"aea" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/cryo/transit) +"aeb" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/cryo/transit) +"aec" = (/turf/space/transit/east/shuttlespace_ew11,/area/shuttle/large_escape_pod1/transit) +"aed" = (/turf/space/transit/east/shuttlespace_ew12,/area/shuttle/large_escape_pod1/transit) +"aee" = (/obj/effect/step_trigger/thrower{direction = 1; name = "thrower_throwup"; nostop = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew14,/area/space) +"aef" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"aeg" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"aeh" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"aei" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"aej" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"aek" = (/obj/structure/bed/chair/holochair{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"ael" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) +"aem" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/cryo/transit) +"aen" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/cryo/transit) +"aeo" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/cryo/transit) +"aep" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/cryo/transit) +"aeq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew11,/area/space) +"aer" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/large_escape_pod1/transit) +"aes" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew1,/area/space) +"aet" = (/obj/structure/flora/pottedplant{tag = "icon-plant-06"; icon_state = "plant-06"},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_theatre) +"aeu" = (/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 6},/obj/effect/floor_decal/carpet{dir = 10},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_theatre) +"aev" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"aew" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"aex" = (/obj/structure/bed/chair/holochair{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_courtroom) +"aey" = (/obj/effect/floor_decal/corner/green/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"aez" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"aeA" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_emptycourt) +"aeB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area/space) +"aeC" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/cryo/transit) +"aeD" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/cryo/transit) +"aeE" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/cryo/transit) +"aeF" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/cryo/transit) +"aeG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew5,/area/space) +"aeH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; stopper = 0; tiles = 0},/turf/space/transit/east/shuttlespace_ew10,/area/space) +"aeI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall,/area/space) +"aeJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/wall,/area/space) +"aeK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) +"aeL" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) +"aeM" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) +"aeN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew10,/area/space) +"aeO" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; name = "thrower_leftnostop"},/turf/space/transit/east/shuttlespace_ew12,/area/space) +"aeP" = (/turf/simulated/floor/holofloor/space,/area/holodeck/source_space) +"aeQ" = (/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) +"aeR" = (/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) +"aeS" = (/obj/structure/flora/pottedplant{tag = "icon-plant-06"; icon_state = "plant-06"},/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) +"aeT" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball) +"aeU" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"aeV" = (/obj/structure/holostool,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"aeW" = (/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"aeX" = (/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"aeY" = (/obj/structure/holohoop,/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"aeZ" = (/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"afa" = (/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) +"afb" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_thunderdomecourt) +"afc" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"afd" = (/obj/structure/holostool,/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"afe" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"aff" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/weapon/holo/esword/red,/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"afg" = (/obj/structure/table/holotable,/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"afh" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"afi" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"afj" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) +"afk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area/space) +"afl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) +"afm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area/space) +"afn" = (/obj/effect/landmark{name = "Holocarp Spawn Random"},/turf/simulated/floor/holofloor/space,/area/holodeck/source_space) +"afo" = (/obj/structure/flora/grass/both,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) +"afp" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"afq" = (/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"afr" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"afs" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"aft" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"afu" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"afv" = (/obj/effect/overlay/palmtree_r,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) +"afw" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"afx" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"afy" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"afz" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"afA" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) +"afB" = (/obj/structure/flora/tree/pine,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) +"afC" = (/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_meetinghall) +"afD" = (/obj/machinery/door/window/holowindoor{name = "Red Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball) +"afE" = (/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) +"afF" = (/obj/effect/overlay/palmtree_l,/obj/effect/overlay/coconut,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) +"afG" = (/obj/machinery/door/window/holowindoor{name = "Red Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_thunderdomecourt) +"afH" = (/obj/machinery/door/window/holowindoor{base_state = "right"; dir = 2; icon_state = "right"; name = "Red Corner"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"afI" = (/obj/structure/window/reinforced/holowindow,/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"afJ" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area/space) +"afK" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area/space) +"afL" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/large_escape_pod2/transit) +"afM" = (/turf/space/transit/east/shuttlespace_ew2,/area/shuttle/large_escape_pod2/transit) +"afN" = (/turf/space/transit/east/shuttlespace_ew3,/area/shuttle/large_escape_pod2/transit) +"afO" = (/turf/space/transit/east/shuttlespace_ew4,/area/shuttle/large_escape_pod2/transit) +"afP" = (/turf/space/transit/east/shuttlespace_ew5,/area/shuttle/large_escape_pod2/transit) +"afQ" = (/turf/space/transit/east/shuttlespace_ew6,/area/shuttle/large_escape_pod2/transit) +"afR" = (/turf/space/transit/east/shuttlespace_ew7,/area/shuttle/large_escape_pod2/transit) +"afS" = (/turf/space/transit/east/shuttlespace_ew8,/area/shuttle/large_escape_pod2/transit) +"afT" = (/turf/space/transit/east/shuttlespace_ew9,/area/shuttle/large_escape_pod2/transit) +"afU" = (/obj/structure/flora/tree/dead,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) +"afV" = (/turf/simulated/floor/holofloor/lino,/area/holodeck/source_meetinghall) +"afW" = (/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_meetinghall) +"afX" = (/obj/item/weapon/beach_ball,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) +"afY" = (/obj/structure/window/reinforced/holowindow{dir = 4},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"afZ" = (/obj/effect/floor_decal/corner/red/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"aga" = (/obj/effect/floor_decal/corner/red{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agb" = (/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agc" = (/obj/structure/window/reinforced/holowindow{dir = 8},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"agd" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns15,/area/space) +"age" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/cryo/transit) +"agf" = (/turf/space/transit/east/shuttlespace_ew13,/area/shuttle/large_escape_pod2/transit) +"agg" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/large_escape_pod2/transit) +"agh" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/large_escape_pod2/transit) +"agi" = (/obj/structure/flora/grass/green,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) +"agj" = (/obj/effect/floor_decal/carpet{dir = 5},/obj/effect/floor_decal/carpet{dir = 6},/obj/effect/floor_decal/carpet{dir = 9},/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"agk" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"agl" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"agm" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"agn" = (/obj/effect/floor_decal/corner/red/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"ago" = (/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agp" = (/obj/item/weapon/beach_ball/holoball,/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agq" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agr" = (/obj/item/weapon/inflatable_duck,/turf/simulated/floor/holofloor/beach/sand,/area/holodeck/source_beach) +"ags" = (/obj/structure/window/reinforced/holowindow/disappearing,/obj/effect/floor_decal/corner/red/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"agt" = (/obj/structure/window/reinforced/holowindow/disappearing,/obj/effect/floor_decal/corner/red{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"agu" = (/obj/structure/window/reinforced/holowindow/disappearing,/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"agv" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agw" = (/obj/effect/floor_decal/corner/blue/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agx" = (/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agy" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agz" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) +"agA" = (/turf/space/transit/east/shuttlespace_ew11,/area/shuttle/large_escape_pod2/transit) +"agB" = (/turf/space/transit/east/shuttlespace_ew12,/area/shuttle/large_escape_pod2/transit) +"agC" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"agD" = (/obj/structure/holostool,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"agE" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"agF" = (/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agG" = (/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agH" = (/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agI" = (/obj/structure/window/reinforced/holowindow/disappearing{dir = 1},/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"agJ" = (/obj/structure/window/reinforced/holowindow/disappearing{dir = 1},/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"agK" = (/obj/structure/window/reinforced/holowindow/disappearing{dir = 1},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"agL" = (/obj/effect/floor_decal/corner/blue/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agM" = (/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agN" = (/turf/space/transit/east/shuttlespace_ew10,/area/shuttle/large_escape_pod2/transit) +"agO" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agP" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agQ" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"agR" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"agS" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agT" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_boxingcourt) +"agU" = (/obj/structure/flora/grass/brown,/turf/simulated/floor/holofloor/snow,/area/holodeck/source_snowfield) +"agV" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 4},/turf/simulated/floor/holofloor/carpet{dir = 8},/area/holodeck/source_meetinghall) +"agW" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_basketball) +"agX" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"agY" = (/turf/unsimulated/beach/sand{tag = "icon-beach"; icon_state = "beach"},/area/holodeck/source_beach) +"agZ" = (/obj/machinery/door/window/holowindoor{base_state = "right"; icon_state = "right"; name = "Green Team"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_thunderdomecourt) +"aha" = (/obj/structure/window/reinforced/holowindow{dir = 1},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"ahb" = (/obj/machinery/door/window/holowindoor{dir = 1; name = "Green Corner"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"ahc" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"ahd" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet,/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"ahe" = (/obj/structure/holostool,/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 6},/turf/simulated/floor/holofloor/carpet,/area/holodeck/source_meetinghall) +"ahf" = (/turf/simulated/floor/holofloor/beach/water,/area/holodeck/source_beach) +"ahg" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) +"ahh" = (/obj/effect/floor_decal/corner/green/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"ahi" = (/obj/structure/holohoop{dir = 1},/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"ahj" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_basketball) +"ahk" = (/obj/structure/table/holotable,/obj/effect/floor_decal/corner/green/full,/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"ahl" = (/obj/structure/table/holotable,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/weapon/holo/esword/green,/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"ahm" = (/obj/structure/table/holotable,/obj/machinery/readybutton{pixel_y = 0},/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) +"ahn" = (/obj/structure/table/holotable,/obj/item/clothing/gloves/boxing/hologlove{icon_state = "boxinggreen"; item_state = "boxinggreen"},/turf/simulated/floor/holofloor/tiled/dark,/area/holodeck/source_boxingcourt) +"aho" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/wall,/area/space) +"ahp" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area/space) +"ahq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) +"ahr" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area/space) +"ahs" = (/turf/unsimulated/wall,/area/syndicate_mothership{name = "\improper Trader Base"}) +"aht" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahu" = (/obj/structure/closet/wardrobe/pink,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahv" = (/obj/structure/closet/wardrobe/white,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahw" = (/obj/structure/closet/wardrobe/green,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahx" = (/obj/structure/closet/wardrobe/grey,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahy" = (/obj/structure/closet/wardrobe/black,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahz" = (/obj/structure/closet/wardrobe/pjs,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahA" = (/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahB" = (/obj/structure/closet/crate,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahC" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahD" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) +"ahE" = (/obj/structure/closet/wardrobe/yellow,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahF" = (/obj/structure/closet/wardrobe/suit,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahG" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahH" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahI" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) +"ahJ" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahK" = (/obj/structure/closet/wardrobe/mixed,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahL" = (/obj/structure/closet/wardrobe/xenos,/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahM" = (/obj/effect/landmark{name = "Trader"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdownside"; nostop = 1; stopper = 0; tiles = 0},/turf/space/transit/north/shuttlespace_ns3,/area/space) +"ahO" = (/obj/machinery/door/blast/shutters{dir = 8; id = "qm_warehouse"; name = "Warehouse Shutters"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahP" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape/transit) +"ahQ" = (/obj/structure/toilet{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahR" = (/obj/machinery/door/airlock/silver{name = "Toilet"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ahS" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape/transit) +"ahT" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape/transit) +"ahU" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape/transit) +"ahV" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape/transit) +"ahW" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership) +"ahX" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/syndicate_mothership) +"ahY" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership) +"ahZ" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 4; req_access = list(160)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"aia" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"aib" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) +"aic" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/space,/area/shuttle/syndicate_elite/mothership) +"aid" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 1},/turf/space,/area/shuttle/syndicate_elite/mothership) +"aie" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/space,/area/shuttle/syndicate_elite/mothership) +"aif" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) +"aig" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"aih" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 3},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"aii" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/syndicate_elite/mothership) +"aij" = (/obj/structure/window/reinforced,/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 1},/turf/simulated/floor/airless,/area/shuttle/syndicate_elite/mothership) +"aik" = (/obj/structure/table/standard,/obj/item/weapon/soap/deluxe,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"ail" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"aim" = (/obj/effect/landmark{name = "Syndicate-Commando-Bomb"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) +"ain" = (/mob/living/silicon/decoy{icon_state = "ai-malf"; name = "GLaDOS"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/control) +"aio" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1213; listening = 1; name = "Syndicate Ops Intercom"; pixel_y = 0; subspace_transmission = 1; syndie = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aip" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns7,/area/space) +"aiq" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) +"air" = (/turf/space/transit/north/shuttlespace_ns6,/area/syndicate_station/transit) +"ais" = (/turf/space/transit/north/shuttlespace_ns8,/area/syndicate_station/transit) +"ait" = (/turf/space/transit/north/shuttlespace_ns3,/area/syndicate_station/transit) +"aiu" = (/turf/space/transit/north/shuttlespace_ns5,/area/syndicate_station/transit) +"aiv" = (/turf/space/transit/north/shuttlespace_ns9,/area/syndicate_station/transit) +"aiw" = (/turf/space/transit/north/shuttlespace_ns2,/area/syndicate_station/transit) +"aix" = (/turf/space/transit/north/shuttlespace_ns13,/area/syndicate_station/transit) +"aiy" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) +"aiz" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) +"aiA" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) +"aiB" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "trade_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; tag_door = "trade_shuttle_bay_door"},/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"aiC" = (/turf/space/transit/north/shuttlespace_ns11,/area/syndicate_station/transit) +"aiD" = (/turf/space/transit/north/shuttlespace_ns7,/area/syndicate_station/transit) +"aiE" = (/turf/space/transit/north/shuttlespace_ns14,/area/syndicate_station/transit) +"aiF" = (/turf/space/transit/north/shuttlespace_ns4,/area/syndicate_station/transit) +"aiG" = (/turf/space/transit/north/shuttlespace_ns10,/area/syndicate_station/transit) +"aiH" = (/turf/space/transit/north/shuttlespace_ns1,/area/syndicate_station/transit) +"aiI" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) +"aiJ" = (/turf/space,/area/syndicate_mothership/elite_squad) +"aiK" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership/elite_squad) +"aiL" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"aiM" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1213; listening = 0; name = "Syndicate Ops Intercom"; pixel_y = 28; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"aiN" = (/obj/effect/landmark{name = "Syndicate-Commando"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"aiO" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"aiP" = (/obj/machinery/mech_recharger,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"aiQ" = (/obj/mecha/combat/marauder/mauler,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aiR" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aiS" = (/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space/transit/north/shuttlespace_ns12,/area/space) +"aiT" = (/turf/space/transit/north/shuttlespace_ns12,/area/syndicate_station/transit) +"aiU" = (/turf/space/transit/north/shuttlespace_ns15,/area/syndicate_station/transit) +"aiV" = (/turf/space/transit/north/shuttlespace_ns3,/area/skipjack_station/transit) +"aiW" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space,/area/space) +"aiX" = (/turf/space,/area/skipjack_station/transit) +"aiY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad) +"aiZ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_bay_door"; locked = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/syndicate_mothership{name = "\improper Trader Base"}) +"aja" = (/turf/space/transit/north/shuttlespace_ns2,/area/skipjack_station/transit) +"ajb" = (/turf/space/transit/north/shuttlespace_ns6,/area/skipjack_station/transit) +"ajc" = (/turf/space/transit/north/shuttlespace_ns11,/area/skipjack_station/transit) +"ajd" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "syndicate_elite"; name = "Side Hull Door"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) +"aje" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership/elite_squad) +"ajf" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"ajg" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/trade/centcom) +"ajh" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "trade_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aji" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/trade/centcom) +"ajj" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/trade/centcom) +"ajk" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns4,/area/space) +"ajl" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns14,/area/space) +"ajm" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns1,/area/space) +"ajn" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns10,/area/space) +"ajo" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns6,/area/space) +"ajp" = (/turf/space/transit/north/shuttlespace_ns1,/area/skipjack_station/transit) +"ajq" = (/turf/space/transit/north/shuttlespace_ns5,/area/skipjack_station/transit) +"ajr" = (/turf/space/transit/north/shuttlespace_ns10,/area/skipjack_station/transit) +"ajs" = (/obj/machinery/door/airlock/glass_security{name = "Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{id = "syndicate_elite_mech_room"; name = "Mech Room Door"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership/elite_squad) +"ajt" = (/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"aju" = (/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"ajv" = (/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"ajw" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "trade_shuttle"; pixel_x = -25; pixel_y = 0; req_one_access = list(101); tag_door = "trade_shuttle_hatch"},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"ajx" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"ajy" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/floor/airless,/area/shuttle/trade/centcom) +"ajz" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 4},/turf/space,/area/shuttle/trade/centcom) +"ajA" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod2/transit) +"ajB" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod2/transit) +"ajC" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod2/transit) +"ajD" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod1/transit) +"ajE" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod1/transit) +"ajF" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod1/transit) +"ajG" = (/turf/space/transit/north/shuttlespace_ns15,/area/skipjack_station/transit) +"ajH" = (/turf/space/transit/north/shuttlespace_ns4,/area/skipjack_station/transit) +"ajI" = (/turf/space/transit/north/shuttlespace_ns9,/area/skipjack_station/transit) +"ajJ" = (/obj/machinery/computer/pod{id = "syndicate_elite"; name = "Hull Door Control"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) +"ajK" = (/obj/machinery/computer/syndicate_elite_shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership) +"ajL" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ajM" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/rd,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ajN" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ajO" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ajP" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"ajQ" = (/obj/structure/bed/chair,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"ajR" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"ajS" = (/obj/machinery/sleep_console{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ajT" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ajU" = (/obj/structure/shuttle/engine/propulsion{dir = 4},/turf/space,/area/shuttle/trade/centcom) +"ajV" = (/turf/space/transit/north/shuttlespace_ns8,/area/skipjack_station/transit) +"ajW" = (/turf/space/transit/north/shuttlespace_ns14,/area/skipjack_station/transit) +"ajX" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) +"ajY" = (/obj/machinery/door/airlock/external{name = "Shuttle Airlock"; req_access = list(150)},/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "syndicate_elite"; name = "Front Hull Door"; opacity = 1},/turf/simulated/shuttle/plating,/area/shuttle/syndicate_elite/mothership) +"ajZ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/syndicate_elite/mothership) +"aka" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"akb" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akc" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akd" = (/obj/machinery/door/airlock/silver{name = "Sleeping"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ake" = (/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"akf" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"akg" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"akh" = (/obj/machinery/atm{pixel_x = -32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"aki" = (/obj/machinery/suit_cycler/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akj" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akk" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akl" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/medical_wall{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akm" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akn" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod2/transit) +"ako" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod2/transit) +"akp" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod2/transit) +"akq" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod1/transit) +"akr" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod1/transit) +"aks" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod1/transit) +"akt" = (/turf/space/transit/north/shuttlespace_ns7,/area/skipjack_station/transit) +"aku" = (/turf/space/transit/north/shuttlespace_ns13,/area/skipjack_station/transit) +"akv" = (/turf/space,/area/syndicate_mothership) +"akw" = (/turf/simulated/floor/airless,/area/shuttle/syndicate_elite/mothership) +"akx" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradestarshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"aky" = (/obj/structure/closet/wardrobe/pjs,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akz" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/obj/machinery/light,/obj/structure/table/glass,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akA" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/hos,/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akB" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"akC" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"akD" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"akE" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/inflatable_duck,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"akF" = (/obj/structure/table/steel_reinforced,/obj/item/stack/material/mhydrogen,/obj/item/stack/material/diamond,/obj/item/stack/material/sandstone,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"akG" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/rig/internalaffairs,/obj/item/clothing/head/helmet/space/void/wizard,/obj/item/clothing/suit/space/void/wizard,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"akH" = (/obj/structure/table/steel_reinforced,/obj/random/tool,/obj/random/tool,/obj/random/tool,/obj/random/tool,/obj/random/tool,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"akI" = (/obj/structure/table/steel_reinforced,/obj/random/toolbox,/obj/random/toolbox,/obj/random/toolbox,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"akJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"akK" = (/obj/vehicle/train/cargo/engine,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akL" = (/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/trade/centcom) +"akM" = (/obj/machinery/door/airlock/glass_medical{name = "Medical Bay"; req_access = list(160)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akN" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"akO" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/space,/area/shuttle/trade/centcom) +"akP" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod2/transit) +"akQ" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod2/transit) +"akR" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod1/transit) +"akS" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod1/transit) +"akT" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod1/transit) +"akU" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns5,/area/space) +"akV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) +"akW" = (/turf/space/transit/north/shuttlespace_ns12,/area/skipjack_station/transit) +"akX" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/trade/centcom) +"akY" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/trade/centcom) +"akZ" = (/obj/structure/closet/walllocker/emerglocker{pixel_y = -32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ala" = (/obj/machinery/button/remote/blast_door{id = "tradestarshutters"; name = "remote shutter control"; pixel_x = 30; req_access = list(160)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alb" = (/obj/structure/table/steel_reinforced,/obj/random/firstaid,/obj/random/firstaid,/obj/random/firstaid,/obj/random/firstaid,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"alc" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ald" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ale" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alf" = (/obj/structure/table/steel_reinforced,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/weapon/weldpack,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"alg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"alh" = (/obj/vehicle/train/cargo/trolley,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ali" = (/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alj" = (/obj/machinery/vending/medical{pixel_y = -32; req_access = null},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alk" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/trade/centcom) +"all" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod2/transit) +"alm" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod1/transit) +"aln" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod1/transit) +"alo" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 4; req_access = list(160)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alp" = (/obj/structure/table/steel_reinforced,/obj/random/medical,/obj/random/medical,/obj/random/medical,/obj/random/medical,/obj/structure/window/reinforced,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"alq" = (/obj/machinery/door/window/southleft{name = "Cargo Hold"; req_access = list(160)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"alr" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/coin/uranium,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/platinum,/obj/item/weapon/coin/phoron,/obj/item/weapon/coin/iron,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/diamond,/obj/structure/window/reinforced,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"als" = (/obj/machinery/door/window/southright{name = "Cargo Hold"; req_access = list(160)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"alt" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/hyper,/obj/item/weapon/cell/potato,/obj/structure/window/reinforced,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"alu" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"alv" = (/obj/structure/table/standard,/obj/item/clothing/gloves/latex,/obj/item/clothing/mask/surgical,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/scalpel,/obj/item/weapon/surgicaldrill,/obj/item/weapon/circular_saw,/obj/item/stack/nanopaste,/obj/item/weapon/hemostat{pixel_y = 4},/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alw" = (/obj/machinery/iv_drip,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alx" = (/turf/unsimulated/wall,/area/syndicate_mothership) +"aly" = (/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"alz" = (/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"alA" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alB" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alC" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/trade/centcom) +"alD" = (/obj/machinery/door/airlock/multi_tile/glass,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/trade/centcom) +"alE" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/trade/centcom) +"alF" = (/obj/structure/closet/crate/secure/weapon,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alG" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns13,/area/space) +"alH" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns2,/area/space) +"alI" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"alJ" = (/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"alK" = (/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"alL" = (/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"alM" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alN" = (/obj/structure/table/steel_reinforced,/obj/machinery/newscaster{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alO" = (/obj/structure/toilet,/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/trade/centcom) +"alP" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/trade/centcom) +"alQ" = (/obj/structure/mirror{pixel_x = 0; pixel_y = 28},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/trade/centcom) +"alR" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/trade/centcom) +"alS" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alT" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"alU" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alV" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 8; name = "thrower_escapeshuttletop(left)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) +"alW" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"alX" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"alY" = (/obj/machinery/light{dir = 4},/obj/structure/sign/kiddieplaque{desc = "A plaque commemorating the construction of the cargo ship Beruang."; name = "Beruang"; pixel_x = 32},/mob/living/simple_animal/corgi/tamaskan/spice,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/trade/centcom) +"alZ" = (/obj/machinery/door/airlock/silver{name = "Toilet"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ama" = (/obj/machinery/door/airlock/silver{name = "Restroom"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amb" = (/obj/structure/undies_wardrobe,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amc" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amd" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/obj/structure/largecrate/animal/cat,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ame" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/structure/largecrate/animal/cow,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amf" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/structure/closet/crate/freezer/rations,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amg" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/item/device/kit/paint/ripley/death,/obj/item/device/kit/paint/ripley/flames_blue,/obj/item/device/kit/paint/ripley/flames_red,/obj/item/device/kit/paint/ripley,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amh" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ami" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/structure/largecrate/hoverpod,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amj" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/mecha/working/ripley/mining,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amk" = (/obj/machinery/door/window/westright{name = "Storefront"; req_access = list(160)},/obj/structure/table/marble,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "trade"; name = "Shop Shutters"; opacity = 0},/turf/simulated/shuttle/floor4{icon_state = "floor6"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aml" = (/obj/structure/bed/chair/office/dark{dir = 8},/turf/simulated/shuttle/floor4{icon_state = "floor6"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amm" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"amn" = (/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"amo" = (/obj/machinery/computer/shuttle_control{name = "Beruang control console"; req_access = list(160); shuttle_tag = "Trade"},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amp" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/shuttle/trade/centcom) +"amq" = (/obj/machinery/door/airlock/command{name = "Bridge"; req_access = list(160)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amr" = (/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ams" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/structure/largecrate/animal/corgi,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amt" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/largecrate/animal/corgi,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amu" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/closet/crate/internals,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amv" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/warning,/obj/item/device/kit/paint/gygax/darkgygax,/obj/item/device/kit/paint/gygax/recitence,/obj/item/device/kit/paint/durand,/obj/item/device/kit/paint/durand/phazon,/obj/item/device/kit/paint/durand/seraph,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amw" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/closet/crate/secure/loot,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amx" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/largecrate/hoverpod,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amy" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/mecha/working/ripley/firefighter,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amz" = (/obj/machinery/door/window/westleft{name = "Storefront"; req_access = list(160)},/obj/structure/window/reinforced,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "trade"; name = "Shop Shutters"; opacity = 0},/obj/structure/table/marble,/turf/simulated/shuttle/floor4{icon_state = "floor6"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amA" = (/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amB" = (/obj/structure/table/steel_reinforced,/obj/machinery/button/remote/blast_door{id = "tradebridgeshutters"; name = "remote shutter control"; pixel_x = 30; req_access = list(150)},/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Esteban"; pixel_y = 8; tag = "icon-plant-09"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amC" = (/obj/machinery/vending/assist{contraband = null; name = "Old Vending Machine"; products = list(/obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/signaler = 4, /obj/item/device/assembly/infra = 4, /obj/item/device/assembly/prox_sensor = 4, /obj/item/weapon/handcuffs = 8, /obj/item/device/flash = 4, /obj/item/weapon/cartridge/signal = 4, /obj/item/clothing/glasses/sunglasses = 4)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amD" = (/obj/structure/closet{name = "custodial"},/obj/item/weapon/reagent_containers/spray/cleaner,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/mop,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amE" = (/obj/machinery/vending/sovietsoda,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amF" = (/obj/machinery/light,/obj/structure/table/standard,/obj/item/weapon/soap,/obj/item/weapon/towel{color = "#0000FF"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amG" = (/obj/structure/sign/poster{pixel_y = -32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amH" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 2; req_access = list(160)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amI" = (/obj/machinery/door/window/westleft{name = "Storefront"; req_access = list(160)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amJ" = (/obj/machinery/button/remote/blast_door{id = "trade"; name = "Shop Shutters"; pixel_x = 0; pixel_y = -26},/turf/simulated/shuttle/floor4{icon_state = "floor6"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amK" = (/turf/simulated/shuttle/floor4{icon_state = "floor6"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amL" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"amM" = (/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradebridgeshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"amN" = (/obj/machinery/vending/boozeomat{req_access = null},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amO" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/trade/centcom) +"amP" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amR" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"amS" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/steel_reinforced,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amT" = (/obj/machinery/door/window/northleft{name = "Cargo Hold"; req_access = list(160)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amU" = (/obj/structure/table/steel_reinforced,/obj/random/plushie,/obj/random/plushie,/obj/random/plushie,/obj/random/plushie,/obj/random/plushie,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amV" = (/obj/machinery/door/window/northright{name = "Cargo Hold"; req_access = list(160)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amW" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/blue,/obj/item/clothing/gloves/brown,/obj/item/clothing/gloves/captain,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/green,/obj/item/clothing/gloves/grey,/obj/item/clothing/gloves/light_brown,/obj/item/clothing/gloves/purple,/obj/item/clothing/gloves/rainbow,/obj/item/clothing/gloves/swat,/obj/item/clothing/gloves/white,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amX" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 2; start_pressure = 740.5},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"amY" = (/obj/structure/closet/walllocker/emerglocker{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"amZ" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ana" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns12,/area/space) +"anb" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership) +"anc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_mothership) +"and" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_mothership) +"ane" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_mothership) +"anf" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_mothership) +"ang" = (/obj/machinery/button/remote/blast_door{id = "tradeportshutters"; name = "remote shutter control"; pixel_x = 30; req_access = list(160)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"anh" = (/obj/structure/table/steel_reinforced,/obj/random/contraband,/obj/random/contraband,/obj/random/contraband,/obj/random/contraband,/obj/random/contraband,/obj/random/contraband,/obj/item/weapon/bikehorn,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ani" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"anj" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ank" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"anl" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/head/bearpelt,/obj/item/clothing/head/bowler,/obj/item/clothing/head/caphat/cap,/obj/item/clothing/head/beaverhat,/obj/item/clothing/head/beret/centcom,/obj/item/clothing/head/beret/sec,/obj/item/clothing/head/collectable/kitty,/obj/item/clothing/head/collectable/kitty,/obj/item/clothing/head/collectable/kitty,/obj/item/clothing/head/collectable/rabbitears,/obj/item/clothing/head/collectable/rabbitears,/obj/item/clothing/head/collectable/rabbitears,/obj/item/clothing/head/collectable/petehat,/obj/item/clothing/head/collectable/pirate,/obj/item/clothing/head/collectable/wizard,/obj/item/clothing/head/collectable/xenom,/obj/item/clothing/head/cowboy_hat,/obj/item/clothing/head/hairflower/violet,/obj/item/clothing/head/hairflower/blue,/obj/item/clothing/head/hairflower/orange,/obj/item/clothing/head/hairflower/pink,/obj/item/clothing/head/justice,/obj/item/clothing/head/justice/blue,/obj/item/clothing/head/justice/green,/obj/item/clothing/head/justice/pink,/obj/item/clothing/head/justice/yellow,/obj/item/clothing/head/philosopher_wig,/obj/item/clothing/head/plaguedoctorhat,/obj/item/clothing/head/xenos,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"anm" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/structure/largecrate/animal/cat,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"ann" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access = list(160)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"ano" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns11,/area/space) +"anp" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership) +"anq" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) +"anr" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/both,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"ans" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/tree/pine,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"ant" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"anu" = (/obj/structure/closet/wardrobe/captain,/obj/item/weapon/gun/projectile/revolver/mateba,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"anv" = (/obj/machinery/light{dir = 1},/obj/structure/bookcase,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"anw" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"anx" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"any" = (/obj/machinery/photocopier,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"anz" = (/obj/structure/table/steel_reinforced,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"anA" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/lipstick/black,/obj/item/weapon/lipstick/jade,/obj/item/weapon/lipstick/purple,/obj/item/weapon/lipstick,/obj/item/weapon/lipstick/random,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"anB" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/webbing,/obj/item/clothing/accessory/storage/webbing,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/scarf/white,/obj/item/clothing/accessory/scarf/lightblue,/obj/item/clothing/accessory/scarf/red,/obj/item/clothing/accessory/scarf/purple,/obj/item/clothing/accessory/armband/science,/obj/item/clothing/accessory/armband/med,/obj/item/clothing/accessory/armband/engine,/obj/item/clothing/accessory/armband/cargo,/obj/item/clothing/accessory/armband,/obj/item/clothing/accessory/medal/nobel_science,/obj/item/clothing/accessory/medal/silver,/obj/item/clothing/accessory/medal/gold,/obj/item/clothing/accessory/medal/bronze_heart,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"anC" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/under/cheongsam,/obj/item/clothing/under/hosformalmale,/obj/item/clothing/under/hosformalfem,/obj/item/clothing/under/harness,/obj/item/clothing/under/gladiator,/obj/item/clothing/under/ert,/obj/item/clothing/under/schoolgirl,/obj/item/clothing/under/redcoat,/obj/item/clothing/under/sexymime,/obj/item/clothing/under/sexyclown,/obj/item/clothing/under/soviet,/obj/item/clothing/under/space,/obj/item/clothing/under/stripper/mankini,/obj/item/clothing/under/suit_jacket/female,/obj/item/clothing/under/rank/psych/turtleneck,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/tacticool,/obj/item/clothing/under/syndicate/tacticool,/obj/item/clothing/under/dress/sailordress,/obj/item/clothing/under/dress/redeveninggown,/obj/item/clothing/under/dress/dress_saloon,/obj/item/clothing/under/dress/blacktango,/obj/item/clothing/under/dress/blacktango/alt,/obj/item/clothing/under/dress/dress_orange,/obj/item/clothing/under/dress/janimaid,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"anD" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/suit/hgpirate,/obj/item/clothing/suit/imperium_monk,/obj/item/clothing/suit/leathercoat,/obj/item/clothing/suit/justice,/obj/item/clothing/suit/justice,/obj/item/clothing/suit/justice,/obj/item/clothing/suit/justice,/obj/item/clothing/suit/justice,/obj/item/clothing/suit/pirate,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"anE" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/closet/crate/solar,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"anF" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod6/transit) +"anG" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod6/transit) +"anH" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod6/transit) +"anI" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod5/transit) +"anJ" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod5/transit) +"anK" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod5/transit) +"anL" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod4/transit) +"anM" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/escape_pod4/transit) +"anN" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod4/transit) +"anO" = (/turf/space/transit/north/shuttlespace_ns3,/area/shuttle/escape_pod3/transit) +"anP" = (/turf/space/transit/north/shuttlespace_ns14,/area/shuttle/escape_pod3/transit) +"anQ" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod3/transit) +"anR" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) +"anS" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership) +"anT" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership) +"anU" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 4},/area/syndicate_mothership) +"anV" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"anW" = (/obj/machinery/door/airlock/command{name = "Captain's Quarters"; req_access = list(160)},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"anX" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"anY" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"anZ" = (/obj/structure/table/woodentable,/obj/item/device/laptop,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"aoa" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"aob" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"aoc" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "tradeportshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/shuttle/trade/centcom) +"aod" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/atm{pixel_x = -32},/obj/machinery/meter,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aoe" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "trade2_control"; pixel_x = -22; pixel_y = -32; req_one_access = list(150)},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aof" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aog" = (/obj/structure/table/standard,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aoh" = (/obj/structure/table/standard,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aoi" = (/obj/structure/table/standard,/obj/item/stack/material/steel{amount = 2},/obj/item/stack/material/steel{amount = 2},/obj/item/stack/material/glass{amount = 15},/obj/item/stack/material/glass{amount = 15},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aoj" = (/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aok" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns9,/area/space) +"aol" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/syndicate_mothership) +"aom" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aon" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aoo" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aop" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aoq" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aor" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/captain,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"aos" = (/obj/structure/table/glass,/obj/machinery/computer3/wall_comp/telescreen/entertainment{pixel_y = -35},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"aot" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"aou" = (/obj/machinery/light,/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"aov" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"aow" = (/obj/structure/flora/pottedplant{tag = "icon-plant-10"; icon_state = "plant-10"},/turf/simulated/floor/carpet,/area/shuttle/trade/centcom) +"aox" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "trade2_shuttle_inner"; locked = 1; name = "Ship Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aoy" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "trade2_shuttle_inner"; locked = 1; name = "Ship Hatch"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aoz" = (/obj/machinery/vending/engivend,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"aoA" = (/obj/machinery/vending/tool,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/shuttle/trade/centcom) +"aoB" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod6/transit) +"aoC" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod6/transit) +"aoD" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod6/transit) +"aoE" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod5/transit) +"aoF" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod5/transit) +"aoG" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod5/transit) +"aoH" = (/turf/space/transit/north/shuttlespace_ns11,/area/shuttle/escape_pod4/transit) +"aoI" = (/turf/space/transit/north/shuttlespace_ns6,/area/shuttle/escape_pod4/transit) +"aoJ" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod4/transit) +"aoK" = (/turf/space/transit/north/shuttlespace_ns2,/area/shuttle/escape_pod3/transit) +"aoL" = (/turf/space/transit/north/shuttlespace_ns13,/area/shuttle/escape_pod3/transit) +"aoM" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod3/transit) +"aoN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) +"aoO" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_mothership) +"aoP" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_mothership) +"aoQ" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/area/syndicate_mothership) +"aoR" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aoS" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aoT" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1331; id_tag = "trade2_vent"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1331; id_tag = "trade2_control"; pixel_x = -24; req_access = list(150); tag_airpump = "trade2_vent"; tag_chamber_sensor = "trade2_sensor"; tag_exterior_door = "trade2_shuttle_outer"; tag_interior_door = "trade2_shuttle_inner"},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aoU" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "trade2_sensor"; pixel_x = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1331; id_tag = "trade2_vent"},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"aoV" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod6/transit) +"aoW" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod6/transit) +"aoX" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod5/transit) +"aoY" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod5/transit) +"aoZ" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod5/transit) +"apa" = (/turf/space/transit/north/shuttlespace_ns10,/area/shuttle/escape_pod4/transit) +"apb" = (/turf/space/transit/north/shuttlespace_ns5,/area/shuttle/escape_pod4/transit) +"apc" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/escape_pod3/transit) +"apd" = (/turf/space/transit/north/shuttlespace_ns12,/area/shuttle/escape_pod3/transit) +"ape" = (/turf/space/transit/north/shuttlespace_ns9,/area/shuttle/escape_pod3/transit) +"apf" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_surround"; dir = 8},/area/syndicate_mothership) +"apg" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 6},/area/syndicate_mothership) +"aph" = (/turf/unsimulated/wall/fakeglass,/area/syndicate_mothership) +"api" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"apj" = (/obj/structure/table/standard,/obj/item/weapon/folder,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"apk" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"apl" = (/obj/structure/closet/crate/freezer,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"apm" = (/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "trade2_shuttle_outer"; locked = 1; name = "Ship Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"apn" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "trade2_control"; pixel_x = 24; req_one_access = list(150)},/obj/machinery/door/airlock/external{frequency = 1331; icon_state = "door_locked"; id_tag = "trade2_shuttle_outer"; locked = 1; name = "Ship Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor4{icon_state = "floor7"; name = "shuttle floor"},/area/shuttle/trade/centcom) +"apo" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod6/transit) +"app" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod5/transit) +"apq" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod5/transit) +"apr" = (/turf/space/transit/north/shuttlespace_ns4,/area/shuttle/escape_pod4/transit) +"aps" = (/turf/space/transit/north/shuttlespace_ns15,/area/shuttle/escape_pod3/transit) +"apt" = (/turf/space/transit/north/shuttlespace_ns8,/area/shuttle/escape_pod3/transit) +"apu" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"apv" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"apw" = (/obj/machinery/door/airlock/centcom{name = "Restroom"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"apx" = (/obj/structure/urinal{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"apy" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"apz" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 8},/area/syndicate_mothership) +"apA" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"apB" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_escapeshuttletop(right)"; tiles = 0},/turf/space/transit/north/shuttlespace_ns8,/area/space) +"apC" = (/turf/simulated/shuttle/plating,/area/syndicate_mothership) +"apD" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"apE" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 5},/area/syndicate_mothership) +"apF" = (/obj/machinery/door/airlock/centcom{name = "Barracks"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) +"apG" = (/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"apH" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership) +"apI" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/grass/brown,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) +"apJ" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"},/area/syndicate_mothership) +"apK" = (/obj/structure/bed,/obj/item/weapon/bedsheet/red,/turf/simulated/floor/wood,/area/syndicate_mothership) +"apL" = (/turf/simulated/floor/wood,/area/syndicate_mothership) +"apM" = (/turf/unsimulated/wall/fakeglass{dir = 1; icon_state = "fakewindows"},/area/syndicate_mothership) +"apN" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 10},/area/syndicate_mothership) +"apO" = (/turf/unsimulated/wall,/area/alien) +"apP" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_mothership) +"apQ" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) +"apR" = (/turf/unsimulated/floor{icon_state = "dark"},/area/alien) +"apS" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"apT" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"apU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"apV" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"apW" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon_state = "dark"},/area/alien) +"apX" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) +"apY" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"apZ" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqa" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqb" = (/obj/structure/closet/acloset,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) +"aqc" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership) +"aqd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqe" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqf" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "ninjastart"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqg" = (/turf/space,/area/shuttle/alien/base) +"aqh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqi" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership) +"aqj" = (/obj/structure/bed/alien,/turf/unsimulated/floor{icon_state = "dark"},/area/alien) +"aqk" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_mothership) +"aql" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_mothership) +"aqm" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_mothership) +"aqn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqo" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqp" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqq" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqr" = (/turf/unsimulated/wall,/area) +"aqs" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqt" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) +"aqu" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) +"aqv" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqw" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqx" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqy" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqz" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_mothership{name = "\improper Ninja Base"}) +"aqA" = (/turf/simulated/mineral,/area/space) +"aqB" = (/turf/simulated/shuttle/wall{dir = 6; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) +"aqC" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3_straight"; tag = "icon-swall_straight (EAST)"},/area/centcom/specops) +"aqD" = (/turf/simulated/shuttle/wall{dir = 10; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) +"aqE" = (/obj/effect/landmark/start,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area) +"aqF" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "wall3_straight"; tag = "icon-swall_straight (EAST)"},/area/centcom/specops) +"aqG" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqH" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqI" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqJ" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqK" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall3_t"},/area/centcom/specops) +"aqL" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3_t"},/area/centcom/specops) +"aqM" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqN" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqO" = (/obj/structure/table/rack,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqP" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/ionrifle,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqR" = (/obj/structure/table/rack,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqS" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/launcher/grenade,/obj/item/weapon/gun/launcher/grenade,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqT" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/emps{pixel_x = 4; pixel_y = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/box/frags,/obj/item/weapon/storage/box/smokes,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqU" = (/obj/machinery/vending/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqV" = (/obj/structure/table/rack,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/rcd,/obj/item/rig_module/device/plasmacutter,/obj/item/rig_module/device/plasmacutter,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqW" = (/obj/structure/table/rack,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/combat,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/chem_dispenser/injector,/obj/item/rig_module/device/healthscanner,/obj/item/rig_module/device/healthscanner,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqX" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/egun,/obj/item/rig_module/mounted/egun,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqY" = (/turf/simulated/shuttle/wall{dir = 5; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) +"aqZ" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) +"ara" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arb" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) +"arc" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "wall3_t"},/area/centcom/specops) +"ard" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall{dir = 9; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) +"are" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arf" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall{dir = 5; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) +"arg" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) +"arh" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ari" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arj" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ark" = (/obj/structure/table/rack,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arl" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a762,/obj/item/ammo_magazine/a762,/obj/item/ammo_magazine/a762,/obj/item/ammo_magazine/a762,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arm" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"arn" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aro" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arp" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/box/cdeathalarm_kit,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arq" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/command,/obj/item/clothing/head/helmet/ert/command,/obj/item/weapon/storage/backpack/ert/commander,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arr" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ars" = (/turf/simulated/shuttle/wall{dir = 8; icon_state = "wall3_t"},/area/centcom/specops) +"art" = (/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) +"aru" = (/obj/structure/lattice,/turf/space,/area/space) +"arv" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/centcom/specops) +"arw" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arx" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ary" = (/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arz" = (/obj/structure/table/reinforced,/obj/item/device/aicard,/obj/item/weapon/pinpointer/advpinpointer,/obj/item/weapon/stamp/centcomm,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arA" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"arB" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"arC" = (/obj/structure/table/rack,/obj/item/device/lightreplacer,/obj/item/device/lightreplacer,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"arD" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"arE" = (/obj/machinery/camera/network/ert{c_tag = "Assault Armor North"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"arF" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"arG" = (/turf/simulated/shuttle/wall{dir = 7; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) +"arH" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arI" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arJ" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arK" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arL" = (/obj/machinery/deployable/barrier,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arM" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arN" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"arO" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"arP" = (/turf/unsimulated/wall{icon = 'icons/misc/title.dmi'; icon_state = "title"},/area) +"arQ" = (/turf/unsimulated/wall,/area/centcom/specops) +"arR" = (/obj/machinery/mech_recharger,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"arS" = (/obj/mecha/combat/gygax/dark,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"arT" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arU" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arV" = (/obj/structure/table/reinforced,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arW" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arX" = (/obj/structure/table/rack,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arY" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arZ" = (/obj/structure/table/rack,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/grenade_launcher,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asa" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/handcuffs,/obj/item/device/flash,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/weapon/material/hatchet/tacknife/combatknife,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asb" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asc" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/hand_tele,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asd" = (/obj/structure/table/rack,/obj/item/weapon/storage/backpack/security,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/shoes/galoshes,/obj/item/clothing/head/bio_hood/janitor,/obj/item/clothing/suit/bio_suit/janitor,/obj/item/clothing/gloves/purple,/obj/item/clothing/glasses/science,/obj/item/weapon/storage/backpack/security,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/shoes/galoshes,/obj/item/clothing/head/bio_hood/janitor,/obj/item/clothing/suit/bio_suit/janitor,/obj/item/clothing/gloves/purple,/obj/item/clothing/glasses/science,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 6; pixel_y = 3},/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"ase" = (/obj/item/weapon/mop,/obj/structure/mopbucket,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"asf" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket{amount_per_transfer_from_this = 50},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"asg" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) +"ash" = (/obj/effect/landmark{name = "Marauder Exit"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"asi" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT3"; name = "Launch Bay #3"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"asj" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT3"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"ask" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion,/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser,/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster,/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"asl" = (/obj/structure/table/rack,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/taperoll/police,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asm" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"asn" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"aso" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"asp" = (/obj/structure/lattice,/obj/structure/grille/broken,/turf/space,/area/space) +"asq" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Armor Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"asr" = (/obj/structure/table/rack,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/obj/item/clothing/glasses/night,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ass" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ast" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asu" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asv" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asw" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asx" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asy" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall{dir = 1; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) +"asz" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"asA" = (/obj/structure/closet/wardrobe/ert,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"asB" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"asC" = (/obj/structure/urinal{pixel_y = 32},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"asD" = (/obj/structure/urinal{pixel_y = 32},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"asE" = (/obj/item/weapon/bikehorn/rubberducky,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"asF" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 8},/obj/item/clothing/glasses/sunglasses/prescription,/obj/item/clothing/glasses/sunglasses/prescription,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"asG" = (/obj/structure/table/standard,/obj/item/device/radio/headset/syndicate/alt,/obj/item/device/radio/headset/syndicate/alt,/obj/item/device/radio/headset/syndicate/alt,/obj/item/device/radio/headset/syndicate/alt,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"asH" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"asI" = (/obj/mecha/medical/odysseus/loaded,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"asJ" = (/obj/machinery/recharge_station,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"asK" = (/obj/structure/table/rack,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asL" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/rocket,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asM" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asN" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asO" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asP" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asQ" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asR" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asS" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asT" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asU" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/suit/armor/vest/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/clothing/head/helmet/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/obj/item/weapon/storage/backpack/ert/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asV" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/security,/obj/item/weapon/rig/ert/security,/obj/item/weapon/rig/ert/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asW" = (/obj/structure/table/rack,/obj/item/rig_module/mounted,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asX" = (/obj/structure/table/reinforced,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asY" = (/obj/effect/landmark{name = "Response Team"},/obj/effect/landmark{name = "Commando"},/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) +"asZ" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/window/reinforced/tinted,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"ata" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/curtain/open/shower,/obj/structure/window/reinforced/tinted,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"atb" = (/obj/item/weapon/bedsheet/hos,/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"atc" = (/obj/effect/landmark{name = "Syndicate-Spawn"},/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"atd" = (/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"ate" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT2"; name = "Launch Bay #2"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atf" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT2"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atg" = (/turf/simulated/shuttle/wall{dir = 9; icon_state = "wall3_wall"; tag = "icon-swall (NORTHWEST)"},/area/centcom/specops) +"ath" = (/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ati" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atj" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"atk" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"atl" = (/obj/mecha/working/ripley/firefighter,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atm" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atn" = (/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ato" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atp" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atq" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atr" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donut,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ats" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"att" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT1"; name = "Launch Bay #1"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atu" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT1"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atv" = (/obj/structure/sign/securearea{name = "ENGINEERING ACCESS"; pixel_y = -32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atw" = (/obj/structure/sign/redcross{pixel_y = -32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atx" = (/obj/structure/table/reinforced,/obj/item/weapon/stamp/centcomm,/obj/item/weapon/pen,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aty" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"atz" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"atA" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"atB" = (/obj/mecha/working/hoverpod,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atC" = (/obj/item/mecha_parts/mecha_equipment/tool/sleeper,/obj/item/mecha_parts/mecha_equipment/tool/sleeper,/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atD" = (/obj/effect/floor_decal/corner/yellow{dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atE" = (/obj/effect/floor_decal/corner/white{dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atF" = (/obj/structure/table/reinforced,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atG" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atH" = (/obj/structure/table/reinforced,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atI" = (/obj/machinery/cell_charger,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atJ" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall{dir = 7; icon_state = "wall3_wall"; tag = "icon-swall (EAST)"},/area/centcom/specops) +"atK" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"atL" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"atM" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"atN" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"atO" = (/obj/structure/table/standard,/obj/item/device/pda/syndicate,/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"atP" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT0"; name = "Launch Bay #0"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atQ" = (/obj/machinery/mass_driver{dir = 8; id = "ASSAULT0"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atR" = (/obj/item/mecha_parts/mecha_equipment/teleporter,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/item/mecha_parts/mecha_tracking,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"atS" = (/obj/machinery/vending/assist,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atT" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/weapon/storage/backpack/ert/engineer,/obj/item/weapon/storage/backpack/ert/engineer,/obj/item/weapon/storage/backpack/ert/engineer,/obj/item/weapon/storage/backpack/ert/engineer,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atU" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/engineer,/obj/item/weapon/rig/ert/engineer,/obj/item/weapon/rig/ert/engineer,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atV" = (/obj/structure/closet/crate/medical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atW" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atX" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atY" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/pillbottles,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atZ" = (/obj/machinery/chemical_dispenser/ert,/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aua" = (/obj/machinery/chem_master,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aub" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/medical,/obj/item/weapon/rig/ert/medical,/obj/item/weapon/rig/ert/medical,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"auc" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aud" = (/obj/structure/table/reinforced,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aue" = (/turf/simulated/shuttle/wall{icon_state = "wall3_wall15"},/area/centcom/specops) +"auf" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"aug" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"auh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"aui" = (/obj/machinery/door/airlock/centcom{name = "Barracks"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "lino"},/area/syndicate_mothership) +"auj" = (/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/item/mecha_parts/mecha_equipment/repair_droid,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"auk" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aul" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aum" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aun" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"auo" = (/obj/structure/table/rack,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aup" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"auq" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aur" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_centcom_dock"; name = "docking port controller"; pixel_x = 0; pixel_y = -25; req_one_access = list(103); tag_door = "specops_centcom_dock_door"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aus" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"aut" = (/obj/structure/reagent_dispensers/beerkeg,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"auu" = (/obj/machinery/vending/boozeomat,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"auv" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"auw" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/glasses/square,/obj/item/weapon/storage/box/glasses/square,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"aux" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"auy" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"auz" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/syndicate_station/start) +"auA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"auB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"auC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"auD" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/syndicate_station/start) +"auE" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"auF" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"auG" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"auH" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"auI" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"auJ" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"auK" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"auL" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"auM" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"auN" = (/obj/effect/landmark{name = "Nuclear-Code"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership) +"auO" = (/obj/effect/landmark{name = "Nuclear-Bomb"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership) +"auP" = (/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership) +"auQ" = (/obj/machinery/camera/network/ert{c_tag = "Assault Armor South"; dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"auR" = (/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,/obj/item/mecha_parts/mecha_equipment/tool/cable_layer,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"auS" = (/obj/item/mecha_parts/mecha_equipment/tool/extinguisher,/obj/item/mecha_parts/mecha_equipment/tool/rcd,/obj/item/weapon/pickaxe/diamonddrill,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"auT" = (/obj/structure/table/reinforced,/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,/obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,/obj/item/mecha_parts/mecha_equipment/tool/passenger,/obj/item/mecha_parts/mecha_equipment/tool/passenger,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) +"auU" = (/obj/machinery/vending/engivend,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"auV" = (/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"auW" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"auX" = (/obj/machinery/pipedispenser/orderable,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"auY" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_centcom_dock_door"; locked = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) +"auZ" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"ava" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"avb" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"avc" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start) +"avd" = (/obj/structure/table/standard,/obj/machinery/recharger,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ave" = (/obj/machinery/computer/security/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"avf" = (/obj/machinery/computer/shuttle_control/multi/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"avg" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"avh" = (/obj/structure/table/standard,/obj/machinery/button/remote/blast_door{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"avi" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"avj" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"avk" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"avl" = (/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"avm" = (/obj/machinery/vending/engineering,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avn" = (/obj/item/weapon/circuitboard/aiupload,/obj/item/weapon/circuitboard/borgupload,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/aiModule/nanotrasen,/obj/item/weapon/aiModule/reset,/obj/item/weapon/aiModule/freeformcore,/obj/item/weapon/aiModule/protectStation,/obj/item/weapon/aiModule/quarantine,/obj/item/weapon/aiModule/paladin,/obj/item/weapon/aiModule/robocop,/obj/item/weapon/aiModule/safeguard,/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avo" = (/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/item/clothing/glasses/welding/superior,/obj/structure/table/steel_reinforced,/obj/item/clothing/glasses/welding/superior,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avp" = (/obj/machinery/pipedispenser/disposal/orderable,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avq" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avr" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/hud/health{pixel_x = 4; pixel_y = 4},/obj/item/clothing/glasses/hud/health{pixel_x = 2; pixel_y = 2},/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avt" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avu" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 8},/turf/space,/area/shuttle/specops/centcom) +"avv" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/specops/centcom) +"avw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_port_hatch"; locked = 1; name = "Port Docking Hatch"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "dark"},/area/shuttle/specops/centcom) +"avx" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) +"avy" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"avz" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"avA" = (/obj/machinery/door/airlock/freezer,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"avB" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -1; pixel_y = 2},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"avC" = (/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"avD" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"avE" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"avF" = (/obj/item/weapon/folder{pixel_y = 2},/obj/structure/table/glass,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"avG" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_y = 4},/obj/structure/table/glass,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"avH" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"avI" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"avJ" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/green,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/green,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"avK" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/blue,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"avL" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avM" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/obj/item/taperoll/engineering,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avN" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/storage/pill_bottle/dylovene,/obj/item/weapon/storage/pill_bottle/dylovene,/obj/item/weapon/storage/pill_bottle/dylovene,/obj/item/weapon/storage/pill_bottle/dermaline,/obj/item/weapon/storage/pill_bottle/dermaline,/obj/item/weapon/storage/pill_bottle/dermaline,/obj/item/weapon/storage/pill_bottle/spaceacillin,/obj/item/weapon/storage/pill_bottle/dexalin_plus,/obj/item/weapon/storage/pill_bottle/dexalin_plus,/obj/item/weapon/storage/pill_bottle/dexalin_plus,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avO" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/bodybags,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avP" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avQ" = (/obj/structure/closet/crate/medical,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/bonesetter,/obj/item/weapon/scalpel,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/hemostat{pixel_y = 4},/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"avR" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/space,/area/shuttle/specops/centcom) +"avS" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/airless,/area/shuttle/specops/centcom) +"avT" = (/obj/machinery/computer/security/telescreen{desc = ""; name = "Spec. Ops. Monitor"; network = list("ERT"); pixel_y = 30},/obj/machinery/computer/shuttle_control/specops,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"avU" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"avV" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = 25; tag_door = "specops_shuttle_port_hatch"},/obj/structure/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"avW" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"avX" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"avY" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"avZ" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"awa" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/red/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"awb" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 2; pixel_y = 3},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"awc" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"awd" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"awe" = (/obj/structure/bed/chair/comfy/black{dir = 1},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"awf" = (/obj/machinery/vending/cola{name = "hacked Robust Softdrinks"; prices = list()},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"awg" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"awh" = (/obj/structure/reagent_dispensers/beerkeg/fakenuke,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"awi" = (/obj/structure/table/reinforced,/obj/item/weapon/tray{pixel_y = 5},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"awj" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka{pixel_x = 3; pixel_y = 12},/obj/item/weapon/reagent_containers/food/drinks/bottle/wine{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) +"awk" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/med,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/med,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"awl" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/orange,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/orange,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"awm" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awn" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/shuttle/specops/centcom) +"awo" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"awp" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"awq" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "specops_shuttle_fore_hatch"; locked = 1; name = "Forward Docking Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/shuttle/specops/centcom) +"awr" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/mob/living/simple_animal/corgi/puppy{name = "Bockscar"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"aws" = (/obj/structure/table/standard,/obj/item/stack/material/glass{amount = 15},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"awt" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"awu" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"awv" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) +"aww" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"awx" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"awy" = (/obj/machinery/computer/communications,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1443; listening = 1; name = "Spec Ops Intercom"; pixel_y = -28},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"awz" = (/obj/machinery/computer/prisoner{name = "Implant Management"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"awA" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"awB" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) +"awC" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom) +"awD" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"awE" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"awF" = (/turf/unsimulated/wall,/area/centcom/command) +"awG" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; dir = 8; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/command) +"awH" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/syndicate_station/start) +"awI" = (/obj/machinery/door/window/northright{name = "Flight Deck"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"awJ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/syndicate_station/start) +"awK" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"awL" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"awM" = (/obj/machinery/shower{pixel_y = 32},/obj/structure/window/basic{dir = 8},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"awN" = (/obj/machinery/shower{pixel_y = 32},/obj/item/weapon/soap/syndie,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"awO" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"awP" = (/obj/structure/table/rack,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava/tactical,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/obj/item/clothing/mask/balaclava,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"awQ" = (/obj/machinery/shieldgen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awR" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awS" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awT" = (/obj/machinery/portable_atmospherics/canister/air,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awU" = (/obj/machinery/shieldwallgen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awV" = (/obj/machinery/power/emitter,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awW" = (/obj/structure/table/reinforced,/obj/item/roller,/obj/item/roller,/obj/item/roller,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awX" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/fire{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/fire,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awY" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"awZ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/adv{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/adv,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"axa" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/o2,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"axb" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"axc" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"axd" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 8},/turf/space,/area/shuttle/specops/centcom) +"axe" = (/obj/machinery/vending/dinnerware,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"axf" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/computer/arcade/orion_trail,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"axg" = (/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/obj/machinery/computer/arcade,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"axh" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"axi" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/obj/effect/floor_decal/corner/red/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"axj" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command) +"axk" = (/obj/structure/closet/secure_closet/medical_wall{pixel_x = -32; pixel_y = 0; req_access = list(150)},/obj/item/stack/medical/splint,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axl" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axm" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axn" = (/obj/structure/closet/hydrant{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axo" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"axq" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"axr" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"axs" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = 2; pixel_y = 2},/obj/item/clothing/suit/storage/vest/heavy/merc{pixel_x = -2; pixel_y = -2},/obj/item/clothing/suit/storage/vest/heavy/merc,/obj/item/clothing/suit/storage/vest/heavy/merc,/obj/item/clothing/suit/storage/vest/heavy/merc,/obj/item/clothing/suit/storage/vest/heavy/merc,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axt" = (/obj/machinery/shield_gen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"axu" = (/obj/machinery/shield_capacitor,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"axv" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; dir = 8; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/specops) +"axw" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "CREED"; name = "Ready Room"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"axx" = (/obj/machinery/recharger/wallcharger{pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axy" = (/obj/structure/bed/chair{dir = 8},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axz" = (/obj/structure/closet,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axA" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"axB" = (/obj/structure/mirror{dir = 4; pixel_x = -32; pixel_y = 0},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) +"axC" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"axD" = (/obj/machinery/door/airlock/centcom{name = "Suit Storage"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axE" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/centcom/specops) +"axF" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"axG" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/centcom/specops) +"axH" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) +"axI" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) +"axJ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) +"axK" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) +"axL" = (/obj/machinery/recharger/wallcharger{pixel_x = -25},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axM" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/food/snacks/liquidfood,/obj/item/weapon/reagent_containers/food/snacks/liquidfood,/obj/item/weapon/reagent_containers/food/snacks/liquidfood,/obj/item/weapon/reagent_containers/food/snacks/liquidfood,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"axN" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space) +"axO" = (/obj/structure/table/rack,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = 32},/obj/item/weapon/material/hatchet/tacknife/combatknife,/obj/item/weapon/material/hatchet/tacknife/combatknife,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axP" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = 32},/obj/item/weapon/gun/energy/ionrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axQ" = (/obj/structure/table/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axR" = (/obj/structure/table/rack,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axS" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axT" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axU" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axV" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axW" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) +"axX" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) +"axY" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"axZ" = (/obj/machinery/vending/cigarette,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"aya" = (/obj/machinery/microwave,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayb" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle"; pixel_x = -25; pixel_y = 0; req_one_access = list(101); tag_door = "admin_shuttle_hatch"},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) +"ayc" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) +"ayd" = (/obj/item/device/multitool,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"aye" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayf" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"ayg" = (/obj/structure/bed/chair/office/dark{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"ayh" = (/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"ayi" = (/obj/structure/sign/poster{poster_type = "/datum/poster/bay_50"; pixel_x = -32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayj" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/obj/item/weapon/reagent_containers/food/snacks/tastybread,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayk" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/space) +"ayl" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1331; id_tag = "merc_base"; pixel_x = -25; pixel_y = -5},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/syndicate_mothership) +"aym" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/handcuffs{pixel_x = 4; pixel_y = 2},/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayn" = (/obj/structure/table/rack,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayo" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayp" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayq" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/simulated/floor/plating,/area/shuttle/administration/centcom) +"ayr" = (/obj/structure/table/standard,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ays" = (/obj/machinery/cell_charger,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayt" = (/obj/machinery/computer/card/centcom,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"ayu" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) +"ayv" = (/obj/machinery/flasher{id = "syndieflash"; pixel_x = 0; pixel_y = 28},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) +"ayw" = (/obj/item/device/radio/electropack,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) +"ayx" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 0; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayy" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayz" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "merc_shuttle_pump"},/obj/machinery/button/remote/blast_door{id = "smindicate"; name = "ship lockdown control"; pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayA" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "merc_shuttle_sensor"; pixel_x = 8; pixel_y = 25},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayB" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "merc_shuttle_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1331; id_tag = "merc_shuttle"; pixel_x = -8; pixel_y = 25; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayC" = (/obj/machinery/door/airlock/external{density = 1; frequency = 1331; id_tag = "merc_shuttle_outer"; name = "Ship External Access"; req_access = list(150)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "smindicate"; name = "Outer Airlock"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"ayD" = (/obj/machinery/door/airlock/external{frequency = 1331; id_tag = "merc_base_hatch"; req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayE" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayF" = (/obj/machinery/door/airlock/vault{name = "Armory"; req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayG" = (/obj/effect/landmark{name = "Syndicate-Uplink"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayH" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayI" = (/obj/machinery/door/window/northright,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayJ" = (/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayK" = (/obj/item/weapon/flame/lighter/zippo,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayL" = (/obj/item/weapon/storage/fancy/cigarettes,/obj/structure/table/reinforced,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayM" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayN" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayO" = (/obj/item/stack/material/glass{amount = 50},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayP" = (/obj/item/stack/material/steel{amount = 50},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"ayQ" = (/obj/machinery/door/airlock/centcom{name = "Administrative Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"ayR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"ayS" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) +"ayT" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/syndicate_station/start) +"ayU" = (/obj/machinery/door/window{dir = 2; name = "Seating"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayV" = (/obj/machinery/door/window{tag = "icon-right"; name = "Seating"; icon_state = "right"; dir = 2; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayW" = (/obj/structure/flora/pottedplant{tag = "icon-plant-10"; icon_state = "plant-10"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayX" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "merc_shuttle_pump"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayY" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"ayZ" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "merc_shuttle_pump"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aza" = (/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azb" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/weapon/tank/jetpack/oxygen,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azc" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/obj/item/weapon/tank/jetpack/carbondioxide,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azd" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aze" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/administration/centcom) +"azf" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/administration/centcom) +"azg" = (/obj/machinery/vending/snack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azh" = (/obj/item/weapon/stool,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azi" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azj" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azk" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azl" = (/obj/machinery/robotic_fabricator,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azm" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Thunderdome Autolathe"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azn" = (/obj/structure/dispenser,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azo" = (/obj/machinery/door/window{dir = 1; name = "Cell"; req_access = list(150)},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azp" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azq" = (/obj/machinery/vending/assist{contraband = null; name = "AntagCorpVend"; products = list(/obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/signaler = 4, /obj/item/device/assembly/infra = 4, /obj/item/device/assembly/prox_sensor = 4, /obj/item/weapon/handcuffs = 8, /obj/item/device/flash = 4, /obj/item/weapon/cartridge/signal = 4, /obj/item/clothing/glasses/sunglasses = 4)},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"azs" = (/obj/machinery/door/airlock/external{frequency = 1331; id_tag = "merc_shuttle_inner"; name = "Ship External Access"; req_access = list(0)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azt" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/space) +"azu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) +"azv" = (/obj/structure/table/rack,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azw" = (/obj/structure/table/rack,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azx" = (/obj/structure/table/rack,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azy" = (/obj/structure/table/rack,/obj/item/device/binoculars,/obj/item/device/binoculars,/obj/item/device/binoculars,/obj/item/device/binoculars,/obj/item/device/binoculars,/obj/item/device/binoculars,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azz" = (/obj/structure/table/rack,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azA" = (/obj/structure/table/rack,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azB" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azC" = (/obj/structure/table/rack,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/obj/item/weapon/tank/emergency_oxygen/double,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azD" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (WEST)"; icon_state = "propulsion_r"; dir = 8},/turf/space,/area/shuttle/administration/centcom) +"azE" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) +"azF" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/stamp/chameleon,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"azG" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"azH" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/card/id/centcom,/obj/item/weapon/card/id/syndicate,/obj/item/weapon/card/id,/obj/item/weapon/card/id/gold,/obj/item/weapon/card/id/silver,/obj/item/device/pda/captain,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"azI" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azJ" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/button/flasher{id = "syndieflash"; name = "Flasher"; pixel_x = 27; pixel_y = 0; tag = "permflash"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azK" = (/obj/machinery/button/remote/blast_door{id = "smindicate"; name = "ship lockdown control"; pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azL" = (/mob/living/simple_animal/cat/kitten{name = "Enola"},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azM" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4; start_pressure = 740.5},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azN" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azO" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "merc_shuttle"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azP" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azQ" = (/obj/machinery/door/airlock/centcom{name = "Hardsuit Storage"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"azR" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/shuttle/administration/centcom) +"azS" = (/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azT" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"azU" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/simulated/shuttle/plating,/area/shuttle/administration/centcom) +"azV" = (/turf/unsimulated/wall,/area/centcom/suppy) +"azW" = (/obj/structure/table/standard,/obj/item/weapon/material/kitchen/utensil/knife{pixel_x = -6},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = -1},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = 4},/obj/item/weapon/reagent_containers/syringe/drugs{pixel_x = 3; pixel_y = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azX" = (/obj/machinery/door/window{dir = 4; name = "Brig"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azY" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Preparation"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"azZ" = (/obj/structure/closet/syndicate/suit{name = "suit closet"},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAa" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/head/helmet/space/void/merc,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aAb" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"aAc" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/suppy) +"aAd" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/suppy) +"aAe" = (/obj/structure/closet{name = "custodial"},/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/mop,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAf" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Brig"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAg" = (/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "Preparation"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAh" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/syndicate{pixel_x = -1; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAi" = (/obj/machinery/dna_scannernew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aAj" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aAk" = (/obj/machinery/clonepod,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aAl" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aAm" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Administration"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"aAn" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 4},/area/supply/dock) +"aAo" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/supply/dock) +"aAp" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 2},/area/supply/dock) +"aAq" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aAr" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/supply/dock) +"aAs" = (/turf/simulated/shuttle/floor,/area/supply/dock) +"aAt" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aAu" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aAv" = (/obj/structure/sign/nosmoking_1{pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aAw" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aAx" = (/obj/structure/table/standard,/obj/structure/closet/secure_closet/medical_wall{pixel_y = 32; req_access = list(150)},/obj/item/bodybag,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = -4; pixel_y = 8},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 4; pixel_y = 7},/obj/item/weapon/reagent_containers/syringe,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aAy" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAz" = (/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAA" = (/obj/structure/table/standard,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler{pixel_y = 2},/obj/item/clothing/glasses/night,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAB" = (/obj/structure/table/standard,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/signaler{pixel_y = 2},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAC" = (/obj/structure/table/standard,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAD" = (/obj/structure/table/standard,/obj/item/clothing/gloves/yellow,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAE" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/terminal) +"aAF" = (/turf/unsimulated/wall,/area/centcom/terminal) +"aAG" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "CREED"; name = "Ready Room"; p_open = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aAH" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command) +"aAI" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aAJ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "admin_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; tag_door = "admin_shuttle_bay_door"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aAK" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aAL" = (/obj/structure/table/reinforced,/obj/machinery/librarycomp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"aAM" = (/obj/structure/bookcase,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"aAN" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor,/area/supply/dock) +"aAO" = (/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor,/area/supply/dock) +"aAP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aAQ" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aAR" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAS" = (/obj/structure/table/standard,/obj/item/weapon/screwdriver,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aAT" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aAU" = (/obj/structure/table/rack,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aAV" = (/obj/structure/table/rack,/obj/item/weapon/rig/merc/empty,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"aAW" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/terminal) +"aAX" = (/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/terminal) +"aAY" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aAZ" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aBa" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aBb" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aBc" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aBd" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_bay_door"; locked = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command) +"aBe" = (/obj/machinery/door/window/northright{icon_state = "right"; dir = 2},/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aBf" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/surgery,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aBg" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aBh" = (/obj/structure/table/standard,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/reagent_containers/glass/beaker/large,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aBi" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"aBj" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/shuttle/floor,/area/supply/dock) +"aBk" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/supply/dock) +"aBl" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aBm" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBn" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBo" = (/obj/machinery/door/window{dir = 4; name = "Infirmary"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBp" = (/obj/machinery/door/window/westright{name = "Tool Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBq" = (/obj/item/weapon/stool/padded,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBr" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/frags,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBs" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aBt" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/unsimulated/wall,/area/centcom/terminal) +"aBu" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aBv" = (/obj/machinery/light{dir = 8},/obj/structure/bed/padded,/obj/item/weapon/bedsheet/hos,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom) +"aBw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/supply/dock) +"aBx" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aBy" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBz" = (/obj/machinery/door/window{dir = 8; name = "Tool Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBA" = (/obj/structure/table/standard,/obj/item/device/aicard,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBB" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aBC" = (/obj/machinery/vending/medical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aBD" = (/obj/machinery/chem_master,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aBE" = (/obj/machinery/chemical_dispenser/ert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/administration/centcom) +"aBF" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "supply_shuttle"; pixel_x = 25; pixel_y = 0; req_one_access = list(13,31); tag_door = "supply_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/supply/dock) +"aBG" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_infirmary"; name = "remote shutter control"; pixel_x = -25},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBH" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBI" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBJ" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBK" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBL" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_telebay"; name = "remote shutter control"; pixel_x = 0; pixel_y = -25; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBM" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_workshop"; name = "remote shutter control"; pixel_x = 25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBN" = (/turf/unsimulated/wall,/area/centcom/security) +"aBO" = (/obj/machinery/door/airlock/centcom{name = "Administrative Office"; opacity = 1; req_access = list(108)},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aBP" = (/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aBQ" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/captain,/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 9},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aBR" = (/obj/structure/table/standard,/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aBS" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/standard,/obj/item/weapon/surgicaldrill,/obj/item/weapon/cautery,/obj/item/weapon/retractor,/obj/item/stack/nanopaste,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBT" = (/obj/machinery/door/window{dir = 1; name = "Surgery"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBU" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/standard,/obj/item/weapon/circular_saw,/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/weapon/hemostat,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBV" = (/obj/structure/table/standard,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBW" = (/obj/structure/table/standard,/obj/item/roller,/obj/item/roller,/obj/item/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aBX" = (/obj/item/weapon/weldingtool,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBY" = (/obj/structure/sign/securearea{name = "\improper CAUTION"; pixel_x = 32},/obj/machinery/light{dir = 4},/obj/structure/mopbucket,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aBZ" = (/obj/machinery/telecomms/allinone{intercept = 1},/obj/machinery/door/window/northright{name = "Telecoms Mainframe"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aCa" = (/obj/machinery/door/blast/regular{id = "syndieshutters_telebay"; name = "Outer Airlock"},/turf/simulated/shuttle/plating,/area/syndicate_station/start) +"aCb" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/floor_decal/corner/orange/full{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCc" = (/obj/effect/floor_decal/corner/orange{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCd" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/security) +"aCe" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/effect/floor_decal/corner/orange{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCf" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/effect/floor_decal/corner/orange{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCg" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/effect/floor_decal/corner/orange/full{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCh" = (/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aCi" = (/obj/machinery/computer/security/telescreen{name = "Spec. Ops. Monitor"; network = list("ERT")},/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aCj" = (/obj/machinery/computer/card/centcom,/obj/item/weapon/card/id/centcom,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aCk" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aCl" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aCm" = (/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/command) +"aCn" = (/obj/effect/floor_decal/carpet{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aCo" = (/obj/effect/floor_decal/carpet{dir = 4},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aCp" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/shuttle/floor,/area/supply/dock) +"aCq" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "supply_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/plating,/area/supply/dock) +"aCr" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aCs" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = list(150)},/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/gloves/latex,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aCt" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aCu" = (/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aCv" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aCw" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aCx" = (/obj/machinery/door/airlock/external,/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aCy" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aCz" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aCA" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCB" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCC" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCD" = (/obj/machinery/door/airlock/glass{name = "Brig Dormitories"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCE" = (/obj/effect/floor_decal/corner/orange{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCF" = (/obj/machinery/telecomms/relay/preset/centcom,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aCG" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aCH" = (/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 2; pixel_y = 6},/obj/structure/table/standard,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aCI" = (/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/structure/table/standard,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aCJ" = (/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 9},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aCK" = (/obj/structure/bed/chair/comfy/teal,/obj/effect/floor_decal/carpet{dir = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aCL" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aCM" = (/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 10},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aCN" = (/obj/structure/closet/secure_closet/personal,/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aCO" = (/obj/machinery/iv_drip,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aCP" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aCQ" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/structure/table/standard,/obj/item/weapon/scalpel,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/stack/medical/advanced/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start) +"aCR" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/syndicate_station/start) +"aCS" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aCT" = (/obj/machinery/teleport/hub,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start) +"aCU" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCV" = (/obj/structure/table/reinforced,/obj/item/device/taperecorder,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCW" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCX" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCY" = (/obj/effect/floor_decal/corner/orange,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aCZ" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDa" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDb" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/effect/floor_decal/corner/orange/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDc" = (/obj/structure/table/rack,/obj/item/weapon/storage/secure/briefcase,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/backpack/satchel,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aDd" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDe" = (/obj/structure/bed/chair/comfy/teal{dir = 4},/obj/effect/floor_decal/carpet{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aDf" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/bananapeel,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aDg" = (/obj/structure/bed/chair/comfy/teal{dir = 8},/obj/effect/floor_decal/carpet{dir = 4},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aDh" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access = list(105)},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aDi" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/supply/dock) +"aDj" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 2},/area/supply/dock) +"aDk" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 4},/area/supply/dock) +"aDl" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/supply/dock) +"aDm" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_station/start) +"aDn" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/syndicate_station/start) +"aDo" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_station/start) +"aDp" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aDq" = (/obj/structure/device/piano{dir = 4},/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDr" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/command) +"aDs" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/supply/dock) +"aDt" = (/turf/simulated/shuttle/wall{icon_state = "swall15"; dir = 2},/area/supply/dock) +"aDu" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/supply/dock) +"aDv" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 8},/area/supply/dock) +"aDw" = (/obj/structure/table/reinforced,/obj/item/weapon/material/minihoe,/obj/item/device/analyzer/plant_analyzer,/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDx" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDy" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/weapon/deck/cards,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDz" = (/obj/effect/floor_decal/corner/orange{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDA" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/button/remote/blast_door{name = "Spec Ops Ready Room"; pixel_y = 15; req_access = list(11); id = "CREED"},/obj/machinery/button/remote/blast_door{name = "Mech Storage"; icon_state = "doorctrl0"; pixel_y = 0; req_access = list(11); id = "ASSAULT"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aDB" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aDC" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aDD" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/command) +"aDE" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/space,/area/supply/dock) +"aDF" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/supply/dock) +"aDG" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/space,/area/supply/dock) +"aDH" = (/obj/structure/table/reinforced,/obj/item/clothing/head/greenbandana,/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDI" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDJ" = (/obj/structure/closet/secure_closet/hos,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/command) +"aDK" = (/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -6},/obj/structure/table/standard,/obj/effect/floor_decal/corner/yellow/diagonal,/obj/effect/floor_decal/corner/blue/diagonal{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDL" = (/obj/machinery/vending/hydronutrients,/obj/effect/floor_decal/corner/orange/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDM" = (/obj/machinery/vending/hydroseeds,/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDN" = (/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDO" = (/obj/effect/floor_decal/corner/orange{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aDP" = (/turf/unsimulated/wall,/area/centcom/restaurant) +"aDQ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/storage/briefcase,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aDR" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDS" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDT" = (/obj/machinery/computer/med_data,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDU" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDV" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDW" = (/mob/living/silicon/decoy{name = "A.L.I.C.E."},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDX" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aDY" = (/turf/unsimulated/floor{icon_state = "steel"},/area/space) +"aDZ" = (/obj/effect/floor_decal/corner/orange{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEa" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEb" = (/obj/machinery/computer/arcade/orion_trail,/obj/effect/floor_decal/corner/orange{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEc" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) +"aEd" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) +"aEe" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) +"aEf" = (/obj/machinery/vending/dinnerware,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEg" = (/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEh" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_soft/full,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEi" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/glasses/square,/obj/item/weapon/storage/box/glasses/square,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEj" = (/obj/structure/bed/chair/comfy/teal{dir = 1},/obj/effect/floor_decal/carpet,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aEk" = (/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/command) +"aEl" = (/obj/machinery/computer/security,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEm" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1443; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEo" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access = list(109)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEq" = (/obj/structure/closet/wardrobe/orange,/obj/effect/floor_decal/corner/orange/full{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEr" = (/obj/structure/closet/wardrobe/orange,/obj/effect/floor_decal/corner/orange{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEs" = (/obj/effect/floor_decal/corner/orange{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEt" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 30},/obj/effect/floor_decal/corner/orange{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEu" = (/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detectives camera"; pictures_left = 30; pixel_x = 2; pixel_y = 3},/obj/effect/floor_decal/corner/red/full{dir = 8},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEv" = (/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/effect/floor_decal/corner/red{dir = 5},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEw" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/corner/red{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEx" = (/obj/structure/closet{name = "Evidence Closet"},/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEy" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) +"aEz" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEA" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEB" = (/obj/structure/filingcabinet/filingcabinet,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEC" = (/obj/machinery/door/airlock/glass_security{name = "Spaceport Security Airlock"; req_access = list(63)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aED" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/obj/effect/floor_decal/corner/orange{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEE" = (/obj/item/weapon/storage/box/evidence,/obj/item/weapon/folder/red,/obj/effect/floor_decal/corner/red{dir = 9},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEF" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aEG" = (/obj/machinery/door/airlock/freezer,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) +"aEH" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEI" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEJ" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEK" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aEL" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access = list(109)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEM" = (/obj/structure/table/reinforced,/obj/item/device/pda/captain,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEN" = (/obj/structure/table/reinforced,/obj/item/weapon/card/id/captains_spare,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEO" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEP" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aEQ" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "swall_s"},/area/shuttle/transport1/centcom) +"aER" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/shuttle/transport1/centcom) +"aES" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 2},/area/shuttle/transport1/centcom) +"aET" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) +"aEU" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) +"aEV" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) +"aEW" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 1},/area/shuttle/transport1/centcom) +"aEX" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 4},/turf/space,/area/shuttle/transport1/centcom) +"aEY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle_bay"; name = "shuttle bay controller"; pixel_x = -24; pixel_y = 0; tag_door = "centcom_shuttle_bay_door"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aEZ" = (/obj/machinery/computer/arcade/battle,/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFa" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/effect/floor_decal/corner/orange{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFb" = (/obj/structure/table/reinforced,/obj/machinery/newscaster{layer = 3.3; pixel_x = 27; pixel_y = 0},/obj/effect/floor_decal/corner/orange/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFc" = (/obj/item/device/taperecorder,/obj/effect/floor_decal/corner/red/full,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFd" = (/obj/effect/floor_decal/corner/red{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFe" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) +"aFf" = (/obj/structure/table/standard,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aFg" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/food/condiment/enzyme,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aFh" = (/obj/machinery/door/airlock/centcom{name = "Teleporter Bay"; opacity = 1; req_access = list(107)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFi" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFj" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 8},/area/shuttle/transport1/centcom) +"aFk" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Centcom"},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFl" = (/turf/simulated/shuttle/wall{dir = 1; icon_state = "swall_f"},/area/shuttle/transport1/centcom) +"aFm" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/shuttle/transport1/centcom) +"aFn" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFo" = (/obj/structure/bed/chair,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFp" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/airless,/area/shuttle/transport1/centcom) +"aFq" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/space,/area/shuttle/transport1/centcom) +"aFr" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFs" = (/obj/effect/floor_decal/corner/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFt" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFu" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant) +"aFv" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/cash_register/civilian{tag = "icon-register_idle (WEST)"; icon_state = "register_idle"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aFw" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aFx" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFy" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_thunderdome"; name = "Thunderdome Access"; pixel_x = 6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_vip_shuttle"; name = "VIP Shuttle Access"; pixel_x = 6; pixel_y = -34; req_access = list(101)},/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFz" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Centcom"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFA" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFB" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFC" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) +"aFD" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFE" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFF" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFG" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/shuttle/transport1/centcom) +"aFH" = (/obj/machinery/door/airlock/external{frequency = 1380; glass = 1380; icon_state = "door_locked"; id_tag = "centcom_shuttle_bay_door"; locked = 1; name = "Transport Airlock"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aFI" = (/obj/effect/floor_decal/corner/red{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFJ" = (/obj/effect/floor_decal/corner/red{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFK" = (/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFL" = (/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aFM" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aFN" = (/obj/machinery/door/airlock/centcom{name = "Maintenance Access"; opacity = 1; req_access = list(106)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFO" = (/obj/machinery/computer/robotics,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aFP" = (/turf/unsimulated/wall,/area/centcom/main_hall) +"aFQ" = (/turf/unsimulated/wall,/area/centcom/tram) +"aFR" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/shuttle/transport1/centcom) +"aFS" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 2},/area/shuttle/transport1/centcom) +"aFT" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_shuttle"; pixel_x = 0; pixel_y = -25; tag_door = "centcom_shuttle_hatch"},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFU" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 4},/area/shuttle/transport1/centcom) +"aFV" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFW" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom) +"aFX" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/shuttle/transport1/centcom) +"aFY" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 4},/turf/space,/area/shuttle/transport1/centcom) +"aFZ" = (/obj/effect/floor_decal/corner/red{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aGa" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/red{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aGb" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/corner/red/full{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aGc" = (/obj/machinery/telecomms/receiver/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGd" = (/obj/machinery/telecomms/bus/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGe" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGf" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGg" = (/obj/structure/sign/securearea,/turf/unsimulated/wall,/area/centcom/command) +"aGh" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGi" = (/obj/structure/sign/nosmoking_2,/turf/unsimulated/wall,/area/centcom/command) +"aGj" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aGk" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGl" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aGm" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGn" = (/obj/machinery/gateway{dir = 9},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGo" = (/obj/machinery/gateway{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGp" = (/obj/machinery/gateway{dir = 5},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGq" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGr" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aGs" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aGt" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) +"aGu" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 8},/area/shuttle/transport1/centcom) +"aGv" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 2},/area/shuttle/transport1/centcom) +"aGw" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/shuttle/transport1/centcom) +"aGx" = (/obj/machinery/computer/security,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aGy" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aGz" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/main_hall) +"aGA" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aGB" = (/obj/machinery/gateway{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGC" = (/obj/machinery/gateway/centerstation,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGD" = (/obj/machinery/gateway{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGE" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) +"aGF" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aGG" = (/obj/machinery/turretid{pixel_x = -28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aGH" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aGI" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aGJ" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGK" = (/obj/machinery/gateway{dir = 10},/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGL" = (/obj/machinery/gateway,/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGM" = (/obj/machinery/gateway{dir = 6},/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGN" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/centcom/main_hall) +"aGO" = (/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aGP" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aGQ" = (/obj/machinery/telecomms/broadcaster/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGR" = (/obj/machinery/telecomms/hub/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGS" = (/obj/machinery/computer/rdservercontrol{badmin = 1; name = "Master R&D Server Controller"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGT" = (/obj/machinery/r_n_d/server/centcom,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGU" = (/obj/machinery/door/blast/regular{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGV" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aGW" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aGX" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGY" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aGZ" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aHa" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aHb" = (/obj/machinery/door/airlock/external,/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aHc" = (/obj/machinery/door/airlock/glass{name = "Arrivals Processing"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHd" = (/obj/machinery/door/airlock/security{name = "Equipment Storage"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aHe" = (/obj/machinery/account_database{name = "CentComm Accounts database"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) +"aHf" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aHg" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHEAST)"; icon_state = "swall"; dir = 6},/area/centcom/tram) +"aHh" = (/turf/simulated/shuttle/wall{tag = "icon-swall_straight (WEST)"; icon_state = "swall_straight"; dir = 8},/area/centcom/tram) +"aHi" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) +"aHj" = (/turf/simulated/shuttle/wall{tag = "icon-swall (WEST)"; icon_state = "swall"; dir = 8},/area/centcom/tram) +"aHk" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aHl" = (/turf/simulated/shuttle/wall{tag = "icon-swall (EAST)"; icon_state = "swall"; dir = 4},/area/centcom/tram) +"aHm" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHWEST)"; icon_state = "swall"; dir = 10},/area/centcom/tram) +"aHn" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) +"aHo" = (/obj/effect/floor_decal/corner/white/full{tag = "icon-corner_white_full (EAST)"; icon_state = "corner_white_full"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHp" = (/obj/effect/floor_decal/corner/white,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHq" = (/obj/effect/floor_decal/corner/white{dir = 5},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHr" = (/obj/effect/floor_decal/corner/white{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHs" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aHt" = (/obj/structure/closet/secure_closet/security,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aHu" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHWEST)"; icon_state = "swall"; dir = 9},/area/centcom/tram) +"aHv" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aHw" = (/obj/structure/bed/chair,/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = 28},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aHx" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aHy" = (/obj/structure/bed/chair,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 26},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aHz" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHEAST)"; icon_state = "swall"; dir = 5},/area/centcom/tram) +"aHA" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) +"aHB" = (/obj/effect/floor_decal/corner/white{dir = 6; icon_state = "corner_white"; tag = "icon-corner_white (NORTHWEST)"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHC" = (/obj/effect/floor_decal/corner/white/diagonal{tag = "icon-corner_white_diagonal (EAST)"; icon_state = "corner_white_diagonal"; dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHD" = (/obj/effect/floor_decal/corner/white{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHE" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aHF" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aHG" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aHH" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window2"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) +"aHI" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aHJ" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aHK" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) +"aHL" = (/obj/effect/floor_decal/corner/white{tag = "icon-corner_white (NORTH)"; icon_state = "corner_white"; dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aHM" = (/obj/machinery/computer/card,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aHN" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aHO" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/restaurant) +"aHP" = (/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant) +"aHQ" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aHR" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 4},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aHS" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) +"aHT" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 8},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aHU" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aHV" = (/obj/machinery/door/airlock/centcom{name = "Arrivals Processing"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aHW" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window1"},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/tram) +"aHX" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aHY" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aHZ" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIa" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIb" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIc" = (/obj/structure/table/standard,/obj/structure/flora/pottedplant{icon_state = "plant-06"; pixel_y = 8; tag = "icon-plant-06"},/obj/effect/floor_decal/corner/red{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aId" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/obj/effect/floor_decal/corner/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aIe" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aIf" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/brigdoor{dir = 4; name = "Weapons locker"},/obj/structure/table/rack,/obj/item/clothing/suit/armor/riot,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/shield/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/red/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aIg" = (/obj/structure/closet/secure_closet/security,/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aIh" = (/obj/structure/flora/ausbushes/fernybush,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIi" = (/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIj" = (/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIk" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIl" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/ppflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIm" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIn" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIo" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) +"aIp" = (/obj/structure/flora/ausbushes/fernybush,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIq" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIr" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/brflowers,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIs" = (/obj/machinery/turretid{pixel_x = -28; pixel_y = 0; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aIt" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aIu" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aIv" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -30},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aIw" = (/obj/structure/bed/chair{dir = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -30},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/tram) +"aIx" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIy" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aIz" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/red/full{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"aIA" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIB" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIC" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aID" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aIE" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPortEast"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aIF" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aIG" = (/obj/machinery/door/window/northright,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIH" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aII" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIJ" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIK" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIL" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIM" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIN" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIO" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIP" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortWest"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aIQ" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aIR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aIS" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aIT" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aIU" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aIV" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/door/window/southright{name = "Arrivals Processing"; req_access = list(101)},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aIW" = (/obj/machinery/door/airlock/external,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aIX" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIY" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aIZ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJa" = (/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJc" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aJd" = (/obj/effect/floor_decal/spline/plain{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) +"aJe" = (/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aJf" = (/obj/effect/floor_decal/spline/plain{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) +"aJg" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPortEast"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aJh" = (/obj/machinery/door/blast/regular{id = "CentComPortEast"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/tram) +"aJi" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 2; name = "thrower_throwdown"; tiles = 0},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/obj/effect/step_trigger/teleporter/random{affect_ghosts = 1; name = "escapeshuttle_leave"; teleport_x = 25; teleport_x_offset = 245; teleport_y = 25; teleport_y_offset = 245; teleport_z = 6; teleport_z_offset = 6},/turf/space,/area/space) +"aJj" = (/obj/machinery/door/window/eastright,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJk" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aJl" = (/obj/machinery/door/window/westright,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJm" = (/obj/structure/bed/chair/office/light{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJn" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aJo" = (/obj/effect/floor_decal/spline/plain{tag = "icon-spline_plain_full (NORTH)"; icon_state = "spline_plain_full"; dir = 1},/obj/structure/showcase,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) +"aJp" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aJq" = (/obj/structure/bed/chair/office/light,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJs" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJt" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aJu" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aJv" = (/obj/machinery/door/window/southleft,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJx" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJy" = (/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJz" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJA" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJB" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJC" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/spline/plain{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJD" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJE" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aJF" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aJG" = (/obj/structure/window/reinforced,/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aJH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/beach/sand{tag = "icon-seashallow"; icon_state = "seashallow"},/area/centcom/main_hall) +"aJI" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 1},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aJJ" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aJK" = (/turf/unsimulated/wall,/area/centcom/medical) +"aJL" = (/obj/machinery/door/airlock/glass_medical{name = "Arrivals Medbay"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aJM" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/medical) +"aJN" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aJO" = (/obj/structure/flora/grass/brown,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aJP" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (NORTHWEST)"; icon_state = "spline_fancy"; dir = 9},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aJQ" = (/obj/structure/flora/ausbushes/ywflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aJR" = (/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aJS" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aJT" = (/obj/machinery/vending/cola,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aJU" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aJV" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aJW" = (/obj/structure/table/standard,/obj/structure/flora/pottedplant{pixel_y = 8},/obj/effect/floor_decal/corner/green{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aJX" = (/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aJY" = (/obj/effect/floor_decal/corner/green{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aJZ" = (/obj/structure/table/standard,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKa" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKb" = (/obj/effect/floor_decal/corner/green{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKc" = (/obj/effect/floor_decal/corner/green,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKd" = (/obj/structure/table/standard,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/item/stack/material/phoron,/obj/effect/floor_decal/corner/beige/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKe" = (/obj/structure/table/standard,/obj/machinery/reagentgrinder,/obj/effect/floor_decal/corner/beige{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKf" = (/obj/effect/floor_decal/corner/beige{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKg" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKh" = (/obj/structure/flora/ausbushes,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aKi" = (/obj/structure/flora/ausbushes/brflowers,/obj/effect/floor_decal/spline/fancy/wood{tag = "icon-spline_fancy (SOUTHWEST)"; icon_state = "spline_fancy"; dir = 10},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aKj" = (/obj/structure/flora/ausbushes/ppflowers,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aKk" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aKl" = (/obj/structure/flora/bush,/obj/structure/flora/ausbushes/sparsegrass,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/centcom/main_hall) +"aKm" = (/obj/effect/floor_decal/corner/white{dir = 9; icon_state = "corner_white"; tag = "icon-corner_white (NORTHWEST)"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aKn" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKo" = (/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKp" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKq" = (/obj/machinery/chemical_dispenser/ert,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKr" = (/turf/unsimulated/wall,/area/centcom/bar) +"aKs" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/bar) +"aKt" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aKu" = (/obj/effect/floor_decal/spline/plain,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/main_hall) +"aKv" = (/turf/unsimulated/wall,/area/centcom/bathroom) +"aKw" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) +"aKx" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s (EAST)"; icon_state = "swall_s"; dir = 4},/area/shuttle/escape/centcom) +"aKy" = (/obj/structure/window/shuttle{icon_state = "window4"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aKz" = (/obj/structure/window/shuttle{icon_state = "window12"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aKA" = (/obj/structure/window/shuttle{icon_state = "window8"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aKB" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s"; icon_state = "swall_s"},/area/shuttle/escape/centcom) +"aKC" = (/obj/structure/bed/chair{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKD" = (/obj/structure/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKE" = (/obj/structure/closet/secure_closet/chemical,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKF" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKG" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aKH" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aKI" = (/obj/structure/table/steel,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) +"aKJ" = (/obj/structure/closet/secure_closet/personal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) +"aKK" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) +"aKL" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aKM" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aKN" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHWEST)"; icon_state = "swall"; dir = 9},/area/shuttle/escape/centcom) +"aKO" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aKP" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aKQ" = (/obj/machinery/computer/shuttle_control/emergency,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aKR" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aKS" = (/obj/machinery/computer/med_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aKT" = (/turf/simulated/shuttle/wall{tag = "icon-swall (NORTHEAST)"; icon_state = "swall"; dir = 5},/area/shuttle/escape/centcom) +"aKU" = (/obj/effect/floor_decal/corner/green{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKV" = (/obj/structure/closet/secure_closet/medical1,/obj/effect/floor_decal/corner/beige{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aKW" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge West"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aKX" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aKY" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aKZ" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge East"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aLa" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLb" = (/obj/structure/closet/secure_closet/medical1,/obj/effect/floor_decal/corner/beige/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLc" = (/obj/effect/floor_decal/corner/beige{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLd" = (/obj/effect/floor_decal/corner/beige,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLe" = (/obj/machinery/chem_master,/obj/effect/floor_decal/corner/beige/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLf" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLg" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLh" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLi" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLj" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLk" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLl" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) +"aLm" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aLn" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 0; pixel_y = -25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aLo" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aLp" = (/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aLq" = (/obj/effect/floor_decal/corner/beige{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLr" = (/obj/structure/closet/secure_closet/medical_wall{name = "Pill Cabinet"},/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/tramadol,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/inaprovaline,/turf/unsimulated/wall,/area/centcom/medical) +"aLs" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/boiledrice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLt" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/beetsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLu" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stuffing,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLv" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/soylenviridians,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLw" = (/obj/structure/table/standard,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aLx" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aLy" = (/obj/structure/table/standard,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aLz" = (/turf/simulated/shuttle/wall{tag = "icon-swall_straight"; icon_state = "swall_straight"},/area/shuttle/escape/centcom) +"aLA" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aLB" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aLC" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aLD" = (/turf/simulated/shuttle/wall{tag = "icon-swall"; icon_state = "swall"},/area/shuttle/escape/centcom) +"aLE" = (/obj/structure/AIcore/deactivated,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aLF" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aLG" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aLH" = (/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aLI" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLJ" = (/obj/structure/table/standard,/obj/structure/flora/pottedplant{pixel_y = 8},/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLK" = (/obj/machinery/smartfridge/chemistry,/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLL" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLM" = (/obj/machinery/door/airlock/glass_command{name = "Escape Shuttle Cockpit"; req_access = list(19)},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aLN" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHEAST)"; icon_state = "swall"; dir = 6},/area/shuttle/escape/centcom) +"aLO" = (/turf/simulated/shuttle/wall{tag = "icon-swall_t"; icon_state = "swall_t"},/area/shuttle/escape/centcom) +"aLP" = (/turf/simulated/shuttle/wall{tag = "icon-swall_straight (EAST)"; icon_state = "swall_straight"; dir = 4},/area/shuttle/escape/centcom) +"aLQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall (SOUTHWEST)"; icon_state = "swall"; dir = 10},/area/shuttle/escape/centcom) +"aLR" = (/obj/machinery/door/airlock/multi_tile/glass{id_tag = "MedbayFoyerPort"; req_access = newlist()},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLS" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLT" = (/obj/structure/table/glass,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLU" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLV" = (/obj/structure/table/glass,/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLW" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLX" = (/obj/structure/closet/secure_closet/medical3,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aLY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aLZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMa" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMb" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMc" = (/obj/machinery/atm{pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aMd" = (/obj/machinery/atm{pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) +"aMe" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aMf" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Cell"},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aMg" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 30},/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aMh" = (/obj/machinery/computer/crew,/obj/effect/floor_decal/corner/green{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aMi" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aMj" = (/obj/machinery/computer/med_data,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aMk" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aMl" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/spesslaw,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMm" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/candiedapple,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMn" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMo" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/meatsteak,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMp" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMq" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMr" = (/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMs" = (/obj/structure/urinal{pixel_y = 32},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMt" = (/obj/structure/urinal{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMu" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/tram) +"aMv" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aMw" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aMx" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aMy" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aMz" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aMA" = (/obj/structure/window/shuttle{icon_state = "window1"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aMB" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aMC" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aMD" = (/turf/unsimulated/wall,/area/tdome) +"aME" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/tdome) +"aMF" = (/obj/machinery/door/airlock/centcom{name = "Thunderdome"; opacity = 1; req_access = list(101)},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aMG" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMH" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMI" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMJ" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMK" = (/obj/machinery/door/airlock{name = "Unit 5"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aML" = (/obj/machinery/door/airlock{name = "Unit 6"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMM" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/shuttle/escape/centcom) +"aMN" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aMO" = (/turf/simulated/shuttle/wall{icon_state = "swall"; dir = 5},/area/shuttle/escape/centcom) +"aMP" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom) +"aMQ" = (/turf/simulated/shuttle/wall{icon_state = "swall"; dir = 9},/area/shuttle/escape/centcom) +"aMR" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMS" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar) +"aMT" = (/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aMU" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/drinks/glass2/square,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aMV" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/cash_register/civilian,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aMW" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aMX" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aMY" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aMZ" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aNa" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "centcom_dock_airlock"; locked = 1; name = "Arrivals Airlock"; req_access = list(13)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal) +"aNb" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_south_mech"; pixel_y = 19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNc" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNd" = (/obj/machinery/camera/network/crescent{c_tag = "Shuttle Center"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNe" = (/obj/machinery/vending/medical,/turf/unsimulated/wall,/area/centcom/medical) +"aNf" = (/obj/machinery/vending/medical,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNg" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/APlus,/obj/item/weapon/reagent_containers/blood/BMinus,/obj/item/weapon/reagent_containers/blood/BPlus,/obj/item/weapon/reagent_containers/blood/OPlus,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNh" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNi" = (/obj/structure/bed/chair/comfy/brown,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 9},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNj" = (/obj/structure/bed/chair/comfy/brown,/obj/effect/floor_decal/carpet{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNk" = (/obj/structure/bed/chair/comfy/brown,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 1},/obj/effect/floor_decal/carpet{dir = 5},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNl" = (/obj/structure/table/woodentable{dir = 5},/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/wcoat,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aNm" = (/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aNn" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aNo" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aNp" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aNq" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aNr" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_north_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aNs" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNt" = (/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNu" = (/obj/machinery/sleeper{dir = 8},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNv" = (/obj/machinery/sleep_console,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNw" = (/obj/structure/table/standard,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNx" = (/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNy" = (/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNz" = (/obj/effect/floor_decal/carpet{dir = 8},/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = -30},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNA" = (/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNB" = (/obj/effect/floor_decal/carpet{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNC" = (/obj/structure/curtain/open/shower,/obj/machinery/shower,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aND" = (/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aNE" = (/obj/structure/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera/network/crescent{c_tag = "Shuttle West"; dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNF" = (/obj/structure/bed/chair{dir = 8},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/obj/machinery/camera/network/crescent{c_tag = "Shuttle East"; dir = 8},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aNG" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv,/obj/item/weapon/storage/firstaid/adv,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNH" = (/obj/effect/floor_decal/corner/blue{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNI" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/corner/blue{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNJ" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNK" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 10},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNL" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/effect/floor_decal/carpet,/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNM" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/bar) +"aNN" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aNO" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/reagent_containers/glass/rag,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aNP" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_alc/full,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aNQ" = (/obj/structure/table/woodentable{dir = 5},/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/bar) +"aNR" = (/obj/machinery/porta_turret/crescent,/turf/unsimulated/floor{icon_state = "lino"},/area/centcom/tram) +"aNS" = (/obj/structure/window/shuttle{icon_state = "window3"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"aNT" = (/obj/machinery/sleeper{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNU" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNV" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNW" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNX" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNY" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aNZ" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"aOa" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "centcom_dock"; name = "docking port controller"; pixel_x = 25; pixel_y = 0; req_one_access = list(13); tag_door = "centcom_dock_airlock"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/terminal) +"aOb" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOc" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/toxin,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOd" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOe" = (/obj/structure/morgue,/obj/effect/floor_decal/corner/blue/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOf" = (/obj/effect/floor_decal/corner/blue{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOg" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOh" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aOi" = (/obj/structure/bed/roller,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = -32},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOj" = (/obj/machinery/bodyscanner{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOk" = (/obj/machinery/body_scanconsole,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOl" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/o2,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOm" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/wrench,/obj/effect/floor_decal/corner/blue/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOn" = (/obj/effect/floor_decal/corner/blue{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOo" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOp" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOq" = (/obj/structure/morgue,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOr" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOs" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aOt" = (/obj/structure/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aOu" = (/obj/structure/bed/chair{dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aOv" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOw" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Cloning Laboratory"; req_access = list(66)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOx" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"aOy" = (/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"aOz" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"aOA" = (/obj/machinery/door/airlock/command{name = "Thunderdome"},/obj/machinery/door/blast/regular{id = "crescent_thunderdome"; name = "Thunderdome"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome) +"aOB" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOC" = (/obj/machinery/door/airlock/medical{name = "Virology Access"; req_access = list(5)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOD" = (/obj/effect/floor_decal/corner/blue/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOE" = (/obj/effect/floor_decal/corner/blue{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOF" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/effect/floor_decal/corner/blue{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOG" = (/obj/structure/filingcabinet/chestdrawer{desc = "A large drawer filled with autopsy reports."; name = "Autopsy Reports"},/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOH" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aOI" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aOJ" = (/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aOK" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aOL" = (/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aOM" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aON" = (/obj/machinery/status_display{pixel_y = -30},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aOO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "shuttle_dock_south_starboard_mech"; pixel_y = -19},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom) +"aOP" = (/obj/machinery/door/airlock/medical{name = "Observation Room"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOQ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOR" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOS" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access = list(6,5)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOT" = (/obj/machinery/optable,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOU" = (/obj/item/device/camera{name = "Autopsy Camera"; pixel_x = -2; pixel_y = 7},/obj/item/weapon/paper_bin{pixel_y = -6},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = -9},/obj/item/weapon/pen/blue{pixel_x = 3; pixel_y = -5},/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aOV" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"aOW" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"aOX" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aOY" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aOZ" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aPa" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/shuttle/escape/centcom) +"aPb" = (/obj/machinery/door/airlock/glass_mining{name = "Shuttle Cargo"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aPc" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 1},/area/shuttle/escape/centcom) +"aPd" = (/obj/machinery/door/airlock/glass_medical{name = "Escape Shuttle Infirmary"; req_access = list(5)},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPe" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/shuttle/escape/centcom) +"aPf" = (/obj/effect/floor_decal/corner/pink{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPg" = (/obj/effect/floor_decal/corner/pink{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPh" = (/obj/effect/floor_decal/corner/pink{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPi" = (/obj/effect/floor_decal/corner/pink/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPj" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 0; pixel_y = 0},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPk" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPl" = (/obj/machinery/clonepod,/obj/effect/floor_decal/corner/blue/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPm" = (/obj/machinery/computer/cloning,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPn" = (/obj/machinery/dna_scannernew,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPo" = (/obj/structure/closet/wardrobe/white,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPp" = (/obj/structure/table/standard,/obj/item/weapon/book/manual/medical_cloning,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPq" = (/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPr" = (/obj/effect/floor_decal/corner/blue{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPs" = (/obj/item/weapon/autopsy_scanner,/obj/item/weapon/scalpel,/obj/structure/table/standard,/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPt" = (/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"aPu" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"aPv" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "white"},/area/tdome) +"aPw" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aPx" = (/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aPy" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aPz" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aPA" = (/obj/structure/closet/hydrant{pixel_x = 30; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aPB" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPC" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPD" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPE" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPF" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPG" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aPH" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aPI" = (/obj/effect/floor_decal/corner/pink,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPJ" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/pink{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPK" = (/obj/structure/bed/chair,/obj/effect/floor_decal/corner/pink/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPL" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPM" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPN" = (/obj/structure/bed/chair,/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeobserve) +"aPO" = (/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aPP" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Medical"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPQ" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPR" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aPS" = (/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access = list(45)},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPT" = (/obj/machinery/disease2/incubator,/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPU" = (/obj/item/weapon/storage/box/syringes{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/dropper,/obj/structure/table/glass,/obj/structure/reagent_dispensers/virusfood{pixel_x = 0; pixel_y = 28},/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPV" = (/obj/machinery/disease2/isolator,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPW" = (/obj/effect/floor_decal/corner/green/full{dir = 8},/obj/machinery/computer/arcade/orion_trail,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPX" = (/obj/effect/floor_decal/corner/green{dir = 5},/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPY" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/green{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aPZ" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQa" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aQb" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aQc" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/structure/disposalpipe/segment,/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aQd" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aQe" = (/obj/structure/closet/crate/freezer/rations,/obj/machinery/camera/network/crescent{c_tag = "Shuttle West Storage"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aQf" = (/obj/structure/closet/crate/freezer/rations,/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aQg" = (/obj/machinery/iv_drip,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQh" = (/obj/machinery/hologram/holopad,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQi" = (/obj/structure/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQj" = (/obj/structure/bed/roller,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQk" = (/obj/machinery/recharge_station,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aQl" = (/obj/machinery/recharge_station,/obj/machinery/camera/network/crescent{c_tag = "Shuttle East Storage"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/escape/centcom) +"aQm" = (/obj/structure/table/standard,/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/medical/advanced/bruise_pack,/obj/effect/floor_decal/corner/pink{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQn" = (/obj/structure/table/standard,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/scalpel,/obj/effect/floor_decal/corner/pink{dir = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQo" = (/obj/structure/table/standard,/obj/item/weapon/surgicaldrill,/obj/item/weapon/circular_saw,/obj/effect/floor_decal/corner/pink/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQp" = (/obj/machinery/door/blast/regular{id = "thunderdomeaxe"; name = "Axe Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aQq" = (/obj/machinery/igniter,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aQr" = (/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aQs" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aQt" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/shuttle/escape/centcom) +"aQu" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQv" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQw" = (/obj/machinery/sleep_console{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQx" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) +"aQy" = (/obj/structure/table/standard,/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/hemostat{pixel_y = 4},/obj/item/stack/nanopaste,/obj/effect/floor_decal/corner/pink{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQz" = (/obj/effect/floor_decal/corner/pink{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQA" = (/obj/machinery/door/airlock/glass_medical{name = "Virology Laboratory"},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQB" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aQC" = (/obj/machinery/door/blast/regular{id = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aQD" = (/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome2) +"aQE" = (/obj/machinery/door/blast/regular{id = "thunderdome"; name = "Thunderdome Blast Door"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aQF" = (/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) +"aQG" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aQH" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/shuttle/escape/centcom) +"aQI" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/escape/centcom) +"aQJ" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 2},/area/shuttle/escape/centcom) +"aQK" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 8},/area/shuttle/escape/centcom) +"aQL" = (/obj/structure/table/standard,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/effect/floor_decal/corner/pink{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQM" = (/obj/machinery/computer/operating,/obj/effect/floor_decal/corner/pink{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQN" = (/obj/machinery/computer/centrifuge,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQO" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQQ" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome2) +"aQR" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) +"aQS" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 28},/obj/effect/floor_decal/corner/pink{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQT" = (/obj/machinery/smartfridge/chemistry/virology,/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQU" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/corner/green{dir = 9},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQW" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQX" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/corner/green/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQY" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aQZ" = (/obj/machinery/computer/arcade,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRa" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRb" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/green,/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRc" = (/obj/effect/landmark{name = "tdome2"},/obj/machinery/camera/network/thunder{c_tag = "Thunderdome - Red Team"; invisibility = 101},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome2) +"aRd" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRe" = (/obj/effect/landmark{name = "tdome1"},/obj/machinery/camera/network/thunder{c_tag = "Green Team"; invisibility = 101},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) +"aRf" = (/obj/structure/closet/secure_closet/medical2,/obj/effect/floor_decal/corner/pink/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRg" = (/obj/machinery/iv_drip,/obj/effect/floor_decal/corner/pink{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRh" = (/obj/effect/floor_decal/corner/pink{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRi" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = 4; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = 4; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus{pixel_x = -5; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/OMinus{pixel_x = -5; pixel_y = -1},/obj/effect/floor_decal/corner/pink{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRj" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/box/masks,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/effect/floor_decal/corner/pink/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRk" = (/obj/structure/table/glass,/obj/machinery/computer/med_data/laptop,/obj/effect/floor_decal/corner/green/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRl" = (/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks,/obj/structure/table/glass,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRm" = (/obj/machinery/disease2/diseaseanalyser,/obj/effect/floor_decal/corner/green{dir = 10},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRn" = (/obj/machinery/computer/diseasesplicer,/obj/effect/floor_decal/corner/green/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRo" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/green/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical) +"aRp" = (/obj/machinery/atmospherics/pipe/vent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRq" = (/obj/machinery/camera/network/thunder{c_tag = "Thunderdome Arena"; invisibility = 101},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRr" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRs" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRt" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRu" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRv" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aRw" = (/obj/machinery/door/blast/regular{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aRx" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aRy" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRz" = (/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"aRA" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"aRB" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/terminal) +"aRC" = (/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRD" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRE" = (/obj/item/weapon/extinguisher,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRF" = (/obj/machinery/atmospherics/valve,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRG" = (/obj/structure/bed/chair{dir = 1},/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRH" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRI" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/sleeping_agent{pixel_x = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRJ" = (/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRK" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRL" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome) +"aRM" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRN" = (/obj/structure/table/standard,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRO" = (/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRP" = (/obj/machinery/computer/pod{id = "thunderdomeaxe"; name = "Thunderdome Axe Supply"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRQ" = (/obj/machinery/computer/pod{id = "thunderdomegen"; name = "Thunderdome General Supply"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRR" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRS" = (/obj/machinery/computer/pod{id = "thunderdome"; name = "Thunderdome Blast Door Control"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRT" = (/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRU" = (/obj/structure/table/standard,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRV" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRW" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRX" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/electrical,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRY" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin) +"aRZ" = (/turf/unsimulated/beach/sand{density = 1; opacity = 1},/area/beach) +"aSa" = (/turf/unsimulated/beach/sand,/area/beach) +"aSb" = (/obj/structure/signpost,/turf/unsimulated/beach/sand,/area/beach) +"aSc" = (/obj/structure/closet,/turf/unsimulated/beach/sand,/area/beach) +"aSd" = (/obj/effect/overlay/palmtree_l,/turf/unsimulated/beach/sand,/area/beach) +"aSe" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/beach) +"aSf" = (/obj/effect/overlay/coconut,/turf/unsimulated/beach/sand,/area/beach) +"aSg" = (/turf/space,/area/shuttle/cryo/centcom) +"aSh" = (/obj/effect/overlay/palmtree_r,/turf/unsimulated/beach/sand,/area/beach) +"aSi" = (/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach) +"aSj" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "swall_s"},/area/centcom/evac) +"aSk" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; dir = 8; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/evac) +"aSl" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 2},/area/centcom/evac) +"aSm" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/centcom/evac) +"aSn" = (/obj/structure/table/standard,/obj,/obj,/obj,/obj,/obj,/obj,/obj,/turf/unsimulated/beach/sand,/area/beach) +"aSo" = (/obj/structure/table/standard,/obj/item/clothing/under/color/rainbow,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/collectable/petehat{pixel_y = 5},/turf/unsimulated/beach/sand,/area/beach) +"aSp" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s (EAST)"; icon_state = "swall_s"; dir = 4},/area/centcom/evac) +"aSq" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 1},/area/centcom/evac) +"aSr" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/centcom/evac) +"aSs" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/centcom/evac) +"aSt" = (/turf/simulated/shuttle/plating,/area/centcom/evac) +"aSu" = (/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod2/centcom) +"aSv" = (/obj/machinery/clonepod,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSw" = (/obj/machinery/computer/cloning,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSx" = (/obj/machinery/dna_scannernew,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSy" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSz" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSA" = (/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSB" = (/obj/structure/closet/crate/medical,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/obj/item/weapon/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/bonesetter,/obj/item/weapon/scalpel,/obj/item/weapon/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/hemostat{pixel_y = 4},/obj/item/weapon/cautery{pixel_y = 4},/obj/item/weapon/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSC" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/turf/simulated/shuttle/wall{icon_state = "swall_c"; dir = 1},/area/centcom/evac) +"aSD" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/unsimulated/beach/sand,/area/beach) +"aSE" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/beach/sand,/area/beach) +"aSF" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand,/area/beach) +"aSG" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_l"},/turf/space,/area/centcom/evac) +"aSH" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/centcom/evac) +"aSI" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aSJ" = (/obj/machinery/vending/engineering,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aSK" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod1/centcom) +"aSL" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod2/centcom) +"aSM" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/shuttle/cryo/centcom) +"aSN" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/centcom/evac) +"aSO" = (/turf/simulated/shuttle/wall,/area/centcom/evac) +"aSP" = (/obj/machinery/door/airlock/external,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aSQ" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 4},/area/centcom/evac) +"aSR" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSS" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aST" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSU" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSV" = (/obj/machinery/computer/operating,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aSW" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/space,/area/centcom/evac) +"aSX" = (/obj/structure/closet/emcloset,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aSY" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aSZ" = (/obj/machinery/bodyscanner{dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTa" = (/obj/machinery/body_scanconsole,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTb" = (/obj/machinery/optable,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTc" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aTd" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/toxin{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTe" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire{pixel_x = -2; pixel_y = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTf" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 0},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTg" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTh" = (/obj/machinery/sleeper{dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTi" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTj" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTk" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTl" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTm" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTn" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/obj/item/toy/plushie/mouse{desc = "A plushie of a small fuzzy rodent."; name = "Woodrat"},/turf/unsimulated/beach/sand,/area/beach) +"aTo" = (/obj/structure/bed/chair,/obj/effect/landmark{name = "endgame_exit"},/turf/unsimulated/beach/sand,/area/beach) +"aTp" = (/mob/living/simple_animal/crab/Coffee,/turf/unsimulated/beach/sand,/area/beach) +"aTq" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/space,/area/centcom/evac) +"aTr" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 02"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aTs" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTt" = (/obj/item/clothing/head/collectable/paper,/turf/unsimulated/beach/sand,/area/beach) +"aTu" = (/obj/machinery/door/airlock/maintenance_hatch{req_access = list(101)},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aTv" = (/turf/simulated/shuttle/wall{tag = "icon-swall_t"; icon_state = "swall_t"},/area/centcom/evac) +"aTw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 1"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aTx" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 2"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aTy" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cryostorage_shuttle_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock Cryostorage"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aTz" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTA" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "large_escape_pod_2_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "large_escape_pod_2_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTB" = (/obj/structure/bed/roller,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTC" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTD" = (/obj/machinery/iv_drip,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTE" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/bodybags,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor3"},/area/centcom/evac) +"aTF" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 2},/area/centcom/evac) +"aTG" = (/turf/unsimulated/floor{icon_state = "sandwater"},/area/beach) +"aTH" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/evac) +"aTI" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_1_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "escape_pod_1_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTJ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_2_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "escape_pod_2_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTK" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cryostorage_shuttle_recovery"; pixel_x = -25; pixel_y = 25; req_one_access = list(13); tag_door = "cryostorage_shuttle_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTL" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTM" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTN" = (/obj/machinery/vending/cola,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTO" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window4"},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aTP" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window8"},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aTQ" = (/obj/machinery/door/airlock/glass,/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac) +"aTR" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window12"},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aTS" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aTT" = (/obj/structure/table/standard,/obj/item/device/radio/off,/obj/item/weapon/paper_bin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aTU" = (/obj/structure/window/shuttle{icon_state = "window2"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aTV" = (/turf/unsimulated/beach/coastline{density = 1; opacity = 1},/area/beach) +"aTW" = (/turf/unsimulated/beach/coastline,/area/beach) +"aTX" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aTY" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aTZ" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aUa" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUb" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUc" = (/obj/machinery/computer/shuttle,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUd" = (/obj/structure/grille,/obj/structure/window/shuttle{icon_state = "window3"},/turf/simulated/shuttle/plating,/area/centcom/evac) +"aUe" = (/turf/unsimulated/beach/water{density = 1; opacity = 1},/area/beach) +"aUf" = (/turf/unsimulated/beach/water,/area/beach) +"aUg" = (/obj/machinery/door/airlock/glass,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUh" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUi" = (/obj/machinery/door/airlock/hatch{name = "Cockpit"; req_access = list(109)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aUj" = (/obj/structure/table/standard,/obj/item/weapon/storage/lockbox,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUk" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUl" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_6_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_6_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aUm" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_5_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_5_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aUn" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_4_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_4_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aUo" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_pod_3_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "escape_pod_3_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aUp" = (/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUq" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUr" = (/obj/structure/table/standard,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/weapon/stamp/captain,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUs" = (/obj/structure/window/shuttle{icon_state = "window1"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aUt" = (/turf/unsimulated/wall,/area/syndicate_mothership{name = "\improper Raider Base"}) +"aUu" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/centcom/evac) +"aUv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_6_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 6"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_5_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 5"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUx" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_4_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 4"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUy" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_3_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 3"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUz" = (/obj/machinery/door/airlock/maintenance_hatch{req_access = list(101)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aUA" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "large_escape_pod_1_recovery"; pixel_x = -25; pixel_y = -25; req_one_access = list(13); tag_door = "large_escape_pod_1_recovery_hatch"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aUB" = (/obj/machinery/computer/card,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUC" = (/obj/structure/table/rack,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUD" = (/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUE" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUF" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUG" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUH" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 8},/area/centcom/evac) +"aUI" = (/turf/simulated/mineral,/area/syndicate_mothership{name = "\improper Raider Base"}) +"aUJ" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aUK" = (/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aUL" = (/obj/structure/table/standard,/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/cobweb2{icon_state = "spiderling"; name = "dead spider"; tag = "icon-spiderling"},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aUM" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod6/centcom) +"aUN" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/space) +"aUO" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod5/centcom) +"aUP" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod4/centcom) +"aUQ" = (/turf/simulated/shuttle/plating,/area/shuttle/escape_pod3/centcom) +"aUR" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 01"; req_access = list(13)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUS" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUT" = (/obj/structure/closet/secure_closet/personal/patient,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUU" = (/obj/structure/table/standard,/obj/structure/bedsheetbin,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aUV" = (/obj/item/weapon/bedsheet/orange,/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aUW" = (/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod1/centcom) +"aUX" = (/obj/structure/closet{name = "Evidence Closet"},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUY" = (/obj/structure/closet/secure_closet/security,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aUZ" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVa" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aVb" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aVc" = (/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVd" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor2"},/area/centcom/evac) +"aVe" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor4"},/area/centcom/evac) +"aVf" = (/obj/item/weapon/tray{pixel_y = 5},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVg" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVh" = (/obj/machinery/portable_atmospherics/powered/pump,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aVi" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/plating,/area/centcom/evac) +"aVj" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket{amount_per_transfer_from_this = 50},/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aVk" = (/obj/item/weapon/mop,/obj/structure/mopbucket,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aVl" = (/obj/structure/table/rack,/obj/item/weapon/reagent_containers/spray/cleaner{pixel_x = 6; pixel_y = 3},/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon = 'icons/turf/shuttle.dmi'; icon_state = "floor"},/area/centcom/evac) +"aVm" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVn" = (/obj/structure/table/standard,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVo" = (/turf/simulated/shuttle/wall{icon_state = "swall_f"; dir = 4},/area/centcom/evac) +"aVp" = (/obj/item/weapon/bedsheet/orange,/obj/effect/decal/cleanable/cobweb2{tag = "icon-cobweb1"; icon_state = "cobweb1"},/obj/structure/bed/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVq" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVr" = (/obj/structure/table/standard,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVs" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVt" = (/obj/structure/urinal{pixel_y = 32},/obj/item/weapon/soap/syndie,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVu" = (/obj/structure/urinal{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVv" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVw" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVx" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVy" = (/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVz" = (/obj/machinery/gibber,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVA" = (/obj/structure/kitchenspike,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVB" = (/obj/item/clothing/head/xenos,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVC" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -28; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVD" = (/obj/item/clothing/mask/gas/swat{desc = "A close-fitting mask clearly not made for a human face."; name = "\improper alien mask"},/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVE" = (/obj/item/xenos_claw,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVF" = (/obj/structure/table/rack,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVG" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVH" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVI" = (/obj/item/pizzabox/meat,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVJ" = (/obj/structure/reagent_dispensers/beerkeg,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVK" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVL" = (/obj/effect/decal/cleanable/cobweb2,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVM" = (/obj/structure/table/rack,/obj/item/clothing/glasses/thermal/plain/monocle,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVN" = (/obj/effect/landmark{name = "voxstart"},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVO" = (/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVP" = (/obj/item/organ/internal/stack,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVQ" = (/obj/structure/bed/chair,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVU" = (/obj/machinery/computer/station_alert,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVV" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVW" = (/obj/machinery/suit_cycler/syndicate{locked = 0},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVX" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVY" = (/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{tag = "icon-asteroid"; icon_state = "asteroid"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aVZ" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/syndicate_mothership{name = "\improper Raider Base"}) +"aWa" = (/obj/machinery/door/airlock/external{req_access = list(150)},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aWb" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/syndicate_mothership{name = "\improper Raider Base"}) +"aWc" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aWd" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"}) +"aWe" = (/turf/unsimulated/wall{tag = "icon-wall3_wall (SOUTHEAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"; dir = 6},/area/wizard_station) +"aWf" = (/turf/unsimulated/wall{tag = "icon-wall3_t (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_t"; dir = 1},/area/wizard_station) +"aWg" = (/turf/unsimulated/wall{tag = "icon-wall3_straight (WEST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_straight"; dir = 8},/area/wizard_station) +"aWh" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"aWi" = (/turf/unsimulated/wall{tag = "icon-wall3_wall (SOUTHWEST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"; dir = 10},/area/wizard_station) +"aWj" = (/turf/unsimulated/wall{tag = "icon-wall3_wall (NORTHWEST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"; dir = 9},/area/wizard_station) +"aWk" = (/turf/unsimulated/wall{tag = "icon-wall3_straight (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_straight"; dir = 1},/area/wizard_station) +"aWl" = (/obj/machinery/chemical_dispenser/bar_soft/full,/obj/structure/table/marble,/turf/unsimulated/floor{icon_state = "white"},/area/wizard_station) +"aWm" = (/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine{pixel_x = -4; pixel_y = 10},/obj/structure/table/marble,/turf/unsimulated/floor{icon_state = "white"},/area/wizard_station) +"aWn" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/wizard_station) +"aWo" = (/turf/unsimulated/wall{tag = "icon-wall3_wall (NORTHEAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"; dir = 5},/area/wizard_station) +"aWp" = (/turf/space,/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/skipjack_station/start) +"aWq" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/skipjack_station/start) +"aWr" = (/obj/machinery/computer/arcade/battle,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aWs" = (/obj/machinery/computer/arcade/orion_trail,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aWt" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/marble,/turf/unsimulated/floor{icon_state = "white"},/area/wizard_station) +"aWu" = (/turf/unsimulated/floor{icon_state = "white"},/area/wizard_station) +"aWv" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/obj/item/toy/figure/ninja,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) +"aWw" = (/obj/structure/bed,/obj/item/weapon/bedsheet/rd,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) +"aWx" = (/turf/simulated/wall/skipjack,/area/skipjack_station/start) +"aWy" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_west_control"; req_one_access = list(150)},/turf/simulated/wall/skipjack,/area/skipjack_station/start) +"aWz" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_northwest_lock"; locked = 0; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWD" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_northeast_lock"; locked = 0; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWE" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1331; master_tag = "vox_east_control"; req_access = list(150)},/turf/simulated/wall/skipjack,/area/skipjack_station/start) +"aWF" = (/obj/structure/bed/chair/wood/wings,/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = 30},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aWG" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aWH" = (/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aWI" = (/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/structure/table/marble,/turf/unsimulated/floor{icon_state = "white"},/area/wizard_station) +"aWJ" = (/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) +"aWK" = (/obj/structure/table/woodentable,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/weapon/ore/slag{desc = "Well at least Arthur doesn't have to share now..."; name = "pet rock"},/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) +"aWL" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = 30},/obj/structure/bedsheetbin,/obj/structure/table/woodentable,/turf/unsimulated/floor{icon_state = "lino"},/area/wizard_station) +"aWM" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_west_vent"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWN" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_west_sensor"; pixel_x = 25},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWO" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aWP" = (/obj/machinery/computer/shuttle_control/multi/skipjack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aWQ" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aWR" = (/obj/machinery/button/remote/blast_door{id = "skipjackshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/wall/skipjack,/area/skipjack_station/start) +"aWS" = (/obj/machinery/airlock_sensor{frequency = 1331; id_tag = "vox_east_sensor"; pixel_x = -25},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWT" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{frequency = 1331; id_tag = "vox_east_vent"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aWU" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aWV" = (/obj/structure/table/woodentable,/obj/item/device/radio/headset,/obj/item/weapon/spacecash/c500,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aWW" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aWX" = (/turf/unsimulated/wall{tag = "icon-wall3_wall (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"; dir = 1},/area/wizard_station) +"aWY" = (/obj/item/weapon/reagent_containers/food/snacks/spellburger{pixel_y = 8},/obj/structure/table/marble,/turf/unsimulated/floor{icon_state = "white"},/area/wizard_station) +"aWZ" = (/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aXa" = (/obj/structure/undies_wardrobe,/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aXb" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXc" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_west_vent"; tag_exterior_door = "vox_northwest_lock"; frequency = 1331; id_tag = "vox_west_control"; tag_interior_door = "vox_southwest_lock"; pixel_x = 24; req_access = list(150); tag_chamber_sensor = "vox_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1331; id_tag = "vox_west_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXd" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXe" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXf" = (/obj/structure/bed/chair{dir = 1},/obj/item/clothing/glasses/thermal/plain/monocle,/obj/item/clothing/head/pirate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXg" = (/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXh" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "vox_east_vent"; tag_exterior_door = "vox_northeast_lock"; frequency = 1331; id_tag = "vox_east_control"; tag_interior_door = "vox_southeast_lock"; pixel_x = -24; req_access = list(150); tag_chamber_sensor = "vox_east_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1331; id_tag = "vox_east_vent"},/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXi" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 4},/obj/machinery/meter,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXj" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aXk" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aXl" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aXm" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aXn" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aXo" = (/obj/structure/table/woodentable,/obj/item/clothing/shoes/workboots,/obj/item/clothing/under/technomancer,/obj/item/clothing/head/technomancer,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aXp" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southwest_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXq" = (/obj/structure/table/rack,/obj/item/weapon/rig/industrial,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXr" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXs" = (/obj/structure/table/rack,/obj/item/weapon/rig/light/hacker,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXt" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_closed"; id_tag = "vox_southeast_lock"; locked = 0; req_access = list(150)},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXu" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aXv" = (/turf/unsimulated/wall{tag = "icon-wall3_wall"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"},/area/wizard_station) +"aXw" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) +"aXx" = (/obj/machinery/vending/hydroseeds,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) +"aXy" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aXz" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aXA" = (/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aXB" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_west_control"; pixel_x = -22; req_one_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXC" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/weapon/material/harpoon,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/head/helmet/space/void/merc,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/rig/light/stealth,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXD" = (/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXE" = (/obj/item/seeds/potatoseed,/obj/item/seeds/potatoseed,/obj/item/seeds/ambrosiavulgarisseed,/obj/item/weapon/material/minihoe,/obj/item/weapon/beartrap,/obj/structure/table/steel,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXF" = (/obj/machinery/vending/hydroseeds,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXG" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/clothing/suit/space/pirate,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXH" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/clothing/shoes/magboots,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXI" = (/obj/machinery/washing_machine,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXJ" = (/obj/structure/table/standard,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter/zippo,/obj/item/clothing/gloves/yellow,/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/weapon/card/emag,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXK" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/clothing/suit/space/void/mining,/obj/item/clothing/head/helmet/space/void/mining,/obj/item/clothing/head/helmet/space/void/atmos,/obj/item/clothing/suit/space/void/atmos,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXL" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1331; master_tag = "vox_east_control"; pixel_x = 22; req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXM" = (/obj/structure/table/woodentable,/obj/machinery/librarycomp{pixel_y = 6},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aXN" = (/obj/machinery/media/jukebox,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aXO" = (/obj/machinery/vending/hydronutrients,/turf/unsimulated/floor{icon_state = "grass0"; name = "grass"},/area/wizard_station) +"aXP" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/under/psysuit,/obj/item/clothing/suit/wizrobe/psypurple,/obj/item/clothing/head/wizard/amp,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aXQ" = (/mob/living/simple_animal/mouse/gray{desc = "He looks kingly."; name = "Arthur"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aXR" = (/obj/structure/flora/pottedplant{tag = "icon-plant-24"; icon_state = "plant-24"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aXS" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXT" = (/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXU" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXV" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aXW" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/syndicate/black/engie,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/syndicate/black/engie,/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXX" = (/obj/item/robot_parts/head,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aXY" = (/turf/unsimulated/wall{icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_t"},/area/wizard_station) +"aXZ" = (/obj/machinery/photocopier,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aYa" = (/obj/structure/bookcase,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aYb" = (/obj/structure/flora/pottedplant{tag = "icon-plant-08"; icon_state = "plant-08"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station) +"aYc" = (/turf/unsimulated/wall{tag = "icon-wall3_wall (WEST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"; dir = 8},/area/wizard_station) +"aYd" = (/turf/unsimulated/wall{tag = "icon-wall3_wall (EAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"; dir = 4},/area/wizard_station) +"aYe" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/shoes/sandal/marisa{desc = "A set of fancy shoes that are as functional as they are comfortable."; name = "Gentlemans Shoes"},/obj/item/clothing/under/gentlesuit,/obj/item/clothing/suit/wizrobe/gentlecoat,/obj/item/clothing/head/wizard/cap,/obj/item/weapon/staff/gentcane,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYf" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYg" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYh" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/clothing/suit/wizrobe/red,/obj/item/clothing/shoes/sandal,/obj/item/clothing/head/wizard/red,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYj" = (/obj/item/robot_parts/l_leg,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYk" = (/turf/unsimulated/wall{tag = "icon-wall3_t (EAST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_t"; dir = 4},/area/wizard_station) +"aYl" = (/obj/machinery/the_singularitygen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYm" = (/obj/machinery/crystal,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aYn" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYo" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/arrow/quill,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aYp" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/stock_parts/matter_bin/super,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYq" = (/turf/unsimulated/wall{tag = "icon-wall3_t (WEST)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_t"; dir = 8},/area/wizard_station) +"aYr" = (/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"aYs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYt" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYu" = (/obj/machinery/floodlight,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYv" = (/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYw" = (/obj/structure/table/rack,/obj/item/weapon/gun/launcher/crossbow,/obj/item/stack/rods{amount = 10},/obj/machinery/light/small{dir = 8},/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/obj/item/weapon/beartrap,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aYx" = (/obj/structure/table/rack,/obj/item/weapon/grenade/empgrenade,/obj/item/weapon/grenade/flashbang,/obj/item/weapon/grenade/spawnergrenade/manhacks,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aYy" = (/obj/structure/table/steel,/obj/machinery/recharger,/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aYz" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYA" = (/obj/item/robot_parts/robot_suit,/obj/item/robot_parts/r_leg,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYB" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aYC" = (/obj/structure/sign/double/map/left{pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYD" = (/obj/structure/sign/double/map/right{pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYE" = (/obj/machinery/computer/message_monitor,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYF" = (/obj/machinery/computer/security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYG" = (/obj/structure/table/steel_reinforced,/obj/item/stack/telecrystal,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aYH" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYI" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/head/philosopher_wig,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aYJ" = (/obj/structure/flora/pottedplant{tag = "icon-plant-04"; icon_state = "plant-04"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aYK" = (/obj/structure/sign/electricshock,/turf/unsimulated/wall{tag = "icon-wall3_wall (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3_wall"; dir = 1},/area/wizard_station) +"aYL" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"aYM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{id = "skipjackshutters"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYN" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYO" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aYP" = (/obj/structure/table/steel,/obj/item/clothing/glasses/regular,/obj/item/clothing/glasses/regular,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aYQ" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aYR" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYS" = (/obj/item/weapon/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYT" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/crowbar,/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYU" = (/obj/machinery/computer/shuttle,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aYV" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aYW" = (/turf/unsimulated/wall{tag = "icon-wall3"; icon = 'icons/turf/shuttle.dmi'; icon_state = "wall3"},/area/wizard_station) +"aYX" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"aYY" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aYZ" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aZa" = (/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) +"aZb" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) +"aZc" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aZd" = (/obj/structure/table/steel,/obj/item/weapon/deck/cards,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aZe" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aZf" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"aZg" = (/obj/machinery/light/small{dir = 1},/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"aZh" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"aZi" = (/obj/structure/toilet{dir = 4},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aZj" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aZk" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 740},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aZl" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aZm" = (/obj/machinery/computer/power_monitor,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZn" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/obj/machinery/computer/station_alert/all,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZo" = (/obj/structure/table/steel_reinforced,/obj/item/device/mmi/radio_enabled,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aZp" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/material/knife/ritual,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aZq" = (/obj/structure/flora/pottedplant{tag = "icon-plant-03"; icon_state = "plant-03"},/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZr" = (/obj/structure/reagent_dispensers/watertank,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"aZs" = (/obj/machinery/power/port_gen/pacman,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"aZt" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "diagonalWall3"},/area/skipjack_station/start) +"aZu" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/skipjack_station/start) +"aZv" = (/obj/structure/table/steel,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aZw" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"aZx" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/skipjack_station/start) +"aZy" = (/obj/structure/table/steel_reinforced,/obj/item/xenos_claw,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZz" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/coin/diamond,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aZA" = (/obj/structure/table/steel_reinforced,/obj/item/broken_device,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aZB" = (/obj/structure/table/steel_reinforced,/obj/item/organ/internal/stack,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZC" = (/obj/machinery/floodlight,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"aZD" = (/obj/structure/shuttle/engine/propulsion,/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/skipjack_station/start) +"aZE" = (/obj/structure/table/standard,/obj/item/weapon/legcuffs,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) +"aZF" = (/obj/structure/table/standard,/obj/item/weapon/deck/cards,/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) +"aZG" = (/obj/machinery/light/small,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"aZH" = (/obj/structure/table/standard,/obj/item/weapon/circular_saw{pixel_y = 8},/obj/item/weapon/hemostat,/obj/item/weapon/scalpel,/obj/item/stack/medical/advanced/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"aZI" = (/obj/machinery/mecha_part_fabricator,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZJ" = (/obj/structure/table/steel_reinforced,/obj/machinery/cell_charger,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZK" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/book/manual/ripley_build_and_repair,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZL" = (/obj/item/device/suit_cooling_unit,/obj/structure/table/steel_reinforced,/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = 30},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZM" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = 30},/obj/item/target,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZN" = (/obj/item/target/syndicate,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZO" = (/obj/structure/table/steel_reinforced,/obj/item/toy/sword,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZP" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/table/steel_reinforced,/obj/item/weapon/gun/energy/laser/practice,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZQ" = (/obj/machinery/optable,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"aZR" = (/obj/structure/table/standard,/obj/item/weapon/cautery,/obj/item/weapon/retractor,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/syringe,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"aZS" = (/obj/machinery/recharge_station,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aZT" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/book/manual/engineering_hacking,/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZU" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZV" = (/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"aZW" = (/obj/effect/floor_decal/industrial/warning/corner{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZX" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/obj/item/target,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"aZY" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) +"aZZ" = (/obj/item/weapon/bedsheet/rainbow,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"baa" = (/obj/item/weapon/bedsheet/hos,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"bab" = (/obj/structure/table/standard,/obj/item/weapon/bonesetter,/obj/item/weapon/bonegel,/obj/item/weapon/FixOVein,/obj/item/stack/nanopaste,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"bac" = (/obj/item/robot_parts/r_arm,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bad" = (/obj/item/robot_parts/l_leg,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bae" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/book/manual/robotics_cyborgs,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"baf" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"bag" = (/obj/machinery/power/emitter{anchored = 1; desc = "It is a heavy duty industrial laser used in a very non-industrial way."; name = "teleport defender"},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"bah" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"bai" = (/obj/effect/floor_decal/industrial/warning{dir = 9},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"baj" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bak" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 5},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bal" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"bam" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor7"},/area/skipjack_station/start) +"ban" = (/obj/item/weapon/bedsheet/orange,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"bao" = (/obj/item/weapon/bedsheet/green,/obj/machinery/light/small{dir = 4},/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"bap" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"baq" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/adv{pixel_x = 1},/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/machinery/light/small{dir = 4},/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = list(150)},/obj/item/weapon/storage/firstaid/fire{pixel_x = 1},/obj/item/weapon/storage/firstaid/o2{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/skipjack_station/start) +"bar" = (/obj/item/robot_parts/r_leg,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bas" = (/obj/item/robot_parts/chest,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bat" = (/obj/item/robot_parts/l_arm,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bau" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"bav" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"baw" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bax" = (/obj/structure/target_stake,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"bay" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"baz" = (/obj/item/weapon/bedsheet/rd,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"baA" = (/obj/item/pizzabox/meat,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"baB" = (/obj/item/weapon/bedsheet/clown,/obj/structure/bed/padded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/skipjack_station/start) +"baC" = (/obj/structure/AIcore,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"baD" = (/obj/structure/flora/pottedplant{icon_state = "plant-20"; tag = "icon-plant-22"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"baE" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"baF" = (/obj/effect/floor_decal/industrial/warning,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"baG" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"baH" = (/obj/effect/decal/mecha_wreckage/phazon,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"baI" = (/obj/item/robot_parts/head,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station) +"baJ" = (/obj/item/weapon/firstaid_arm_assembly,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"baK" = (/obj/item/weapon/bucket_sensor,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"baL" = (/obj/item/weapon/farmbot_arm_assembly,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"baM" = (/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/wizard_station) +"baN" = (/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"baO" = (/obj/machinery/computer/teleporter,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"baP" = (/obj/machinery/teleport/station,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) +"baQ" = (/obj/machinery/teleport/hub,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station) + (1,1,1) = {" -aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoalahajapaqarasatauavawaxayaaabacadaeafagahaaaiajakalamanaoagafajacadahakazaAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaAaBaCaDaEaFaGaHaIaJazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaQaQaQaQaQaQaQaQaQaQaQaQaQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaRaSaSaSaSaSaSaSaSaSaSaR -ajaTaUaVaWaXaYaZbabbbcbdbebfbgbhaYaXbcaUaVaZbdaWbfbbbhbeaZbcabauavawbibjbkblbmbeaXbfaZbcbbbhbeaXbfaZbcbbbhbhbeaXbfaZbcbbbhbhbmazaEbnbobpaqarasatauavawbibjbkblbqbnbobpaqarasatauaNazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaQbrbsaQbrbsaQbrbsaQbrbsaQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbubububvbububububububwbxbybxbybxbxbybxbybxbwbzbAbAbAbAbAbAbAbAbAbwbBbCbDbDbDbDbDbDbDbDbwbEbEbEbEbEbEbEbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIbJbKbKbKbKbKbLbM -amaWbbbeaZbgaUaYbcaXbfbabhaVbdaTaUbgbfbbbeaYbaaZaVaXaTbhaYbfaearasatauavawbibNbhbgaVaYbfaXaTbhbgaVaYbfaXaTaTbhbgaVaYbfaXaTaTbNazaBbkblbqbnbobpaqarasasatauavbibjbkblbqbnbobpaqaraKazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaQaQaQaQaQaQaQaQaQaQaQaQaQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbububububububububObubwbPbQbPbQbPbQbPbQbPbQbwbRbRbRbRbRbRbRbRbRbRbwbBbSbTbTbTbTbTbTbTbTbwbEbUbEbEbEbEbEbEbUbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIbVbWbWbWbWbWbXbM -adaZaXbhaYbdbbaUbfaUaVbcaTbebaaWbbbdaVaXbhaUbcaYbebgaWaTaUaVahbibjbkblbqbnbobYaTbdbeaUaVbgaWaTbdbeaUaVbgaWaWaTbdbeaUaVbgaWaWbYazaHaqarasatauavawbibjawbibjbkbobpaqarasatauavawbiaBazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaQbrbsaQbrbsaQbrbsaQbrbsaQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbubObububububububububwbQbPbZcacbcacbccbQbPbwbRbRbRbRbRbRbRbRbRbRbwbBcdbTbDcebDbTcfcgchbwbEbEbEbEbEbEbEbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbGcibVbWbWbWbWbWbXbM -alaYbgaTaUbaaXbbaVbbbebfaWbhbcaZaXbabebgaTbbbfaUbhbdaZaWbbbeagbobpaqarasataucjbfaUbaaTbdaYaVbfaUbaaTbdaYaVaVaWaUbaaTbdaYaVaVcjazaNawbibjbkblbqbnbobpatauavawauavawbibjbkblbqbnboaHazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaQaQaQaQaQaQaQaQaQaQaQaQaQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbubububububvbububububwbQbPckclcmcmcncocbcabwcpcpcpcpcpcpcpcpcpcqbwbBcdcrcsctcucvcwcxcybwbEbEbEbUbEbEbUbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIbVbWbWbWbWbWbXbM -aoaUbdaWbbbcbgaXbeaXbhczcAcBcCbYcDcEcFcGaWaXaVbbaTbaaYaZaXbhacbibjbkblbqbnbocHbeaXbfaZbcbbbhaVbbbcaWbaaUbebeaVbbbcaWbaaUbebecHazaHaqarasatauavawbibjbkblbqbnbobpaqarasatauavawbiaBazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbububvbubububvbubububwbPbQcJcncIcIcncncncnbwcKcKcLcMcMcMcMcNcKcObwbBcdcPcQcQcQcRcwcScTbwbEbEbEbEbEbEbEbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIbVbWbWbWbWbWbXbM -abbbbaaZaXbfbdbgbhbgcCcUcVcVcVcVcVcVcVcFcEaWbeaXaWbcaUaYbgaTaiasatauavawbibjbmbhbgaVaYbfaXaTbeaXbfaZbcbbbhbhbeaXbfaZbcbbbhbhbmazaCblbqbnbocWcXcXcYcZcWcXcYcWcXcYcYcYbnbobpaqarasaLazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbububububububububububwbPbQcJcncIcIcncncncnbwcKcKdadbdbdbdbdccKcObwbBcddddedfdedgcwcScTbwbEbEbEbEbEbEbEbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIdhbWbWbWbWbWdibM -aeaXbcaYbgaVbabdaTdjdkcVcVcVcVcVcVcVcVcVcDdlbhbgaZbfbbaUbdaWafbqbnbobpaqarasbNaTbdbeaUaVbgaWaWbeaXbfaZbcbbbhbhaXbfaZbcbbbhbhbNazaLauavawbidmdndndodpdqdrdsdtdudvdvcYdmbibjbkblbqaFazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbubububububObubububvbwbQbPckclcmcmcndydxdwbwcKcKdadbdbdbdbdccKcObwbBcddzdAdfdAdBcwcScTbwbEbEbEbUbEbEbUbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIdhbWbWbWbWbWdibM -ahbgbfaUbdbebcbaaWczcVcVcVcVcVcVcVcVcVcVcVbmaTbdaYaVaXbbbaaZanbpaqarasatauavbYbfaUbaaTbdaYaVdCdDdEdFdGdHdIdJdKbgaVaYbfaXaTaTbYazaObibjbkbldLdMdMdNdOdOdndodpdrdsdsdsdmblbqbnbobpaIazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbububObubububububububwbQbPdPdwdxdwdxdQbQbPbwcKcKdadbdbdbdbdccKcObwbBdRdSdfdfdfdTcwcScTbwbEbEbEbEbEbEbEbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbGdUdhbWbWbWbWbWdibM -agbdaVbbbabhbfbcaZcUcVcVcVcVcVcVcVcVcVcVcVcGaWbaaUbebgaXbcaYakbkblbqbnbobpaqcjaVbbbcaWbaaUbedVdWdXdYdZeaebebdKbdbeaUaVbgaWaWcjazaJasatauavdmdqdqdrdsdqdrdsdtecedededeeavawbibjbkaDazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbububububububububububwbPbQbPbQbPbQbPbQbQbPbwcKcKefegegegegehcKeibwbBcddzdAdAdAdBcwejekbwbEbUbEbEbEbEbEbEbUbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIdhbWbWbWbWbWdibM -acbabeaXbcaTaVbfaYcCcVcVcVcVcVcVcVcVcVcVcVaxaZbcbbbhbdbgbfaUaaatauavawbibjbkcHaUaVaZbdaWbfeldJemeneodXdWepepdHelaVaZbdaWbfbbcHazaDbqbnbobpeqerereceddndodpdqdodpdpdpesbpaqarasataMazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtbvbubububObububububObwbxbybxbybxbxbybxbybxbwetcKcKcKcKcKcKcKcKeubwbBbCevewewewexcwbDbDbwbEbEbEbEbEbEbEbEbEbEbwbFbFbFbFbFbFbFbFbFbFbwbGbHbIeyezezezezezeAbM -aibcbhbgbfaWbeaVaUdkcVcVcVcVcVcVcVcVcVcVcVcEaYbfaXaTbabdaVbbajbjbkblbqbnbobpbNbbbeaYbaaZaVeBeneadZeCeDeEeFeFeneBbeaYbaaZaVaXaxazaIarasataueGdqdqdrdsdtdudverecededcYeHauavawbibjaCazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaReIeIeIeIeIeIeIeIeIeIaReIeIeIeIeIeIeIeIeIeIaReIeIeIeIeIeIeIeIeIeIaReJeJeJeJeJeJeJeJeJeJaReJeJeJeJeJeJeJeJeJeJaReJeJeJeJeJeJeJeJeJeJaReJeJeJeJeJeJeJeJeJeJaR -afbfaTbdaVaZbhbebbeKcVcVcVcVcVcVcVcVcVcVcVeLaUaVbgaWbcbabeaXamarasatauavawbibYaXbhaUbcaYbeeMdYepeaeoebdWdZebeFeMbhaUbcaYbebgbmazaBbkblbqbneNeqeqeOcWcXcYeqeOcWcXcXcXbqbnbobpaqaraKazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePePePePePePePePePePbweQeQeQeQeQeQeQeQeQeQbweReReReReReReReReReSbweTeUeVeWeXeWeYeZeXeZbwfafafafafafafafafafabwfbfcfdfefffffffffffgbwfhfhfifififififififibM -anaVaWbabeaYaTbhfjfkcVcVcVcVcVcVcVcVcVcVcVflcHbebdaZbfbcbhbgadavawbibjbkblbqcjbgaTbbbfaUbhfmeneadZeCeDeEeFepebfmaTbbbfaUbhbdbNazaFbobpaqarasatauavasbkblbqbnbibnbobpaqarasatauavaOazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePePePfnePePePePfnePbweQfoeQeQeQeQfoeQeQeQbweReRfpfqfqfqfreReReRbweTeUeVfsftfsftfuftfubwfafafvfafafafafafafabwfbfcfdfwfxfxfxfxfxfybwfififififzfzfzfififibM -akbeaZbcbhaUaWaTdjcVcVcVcVcVcVcVcVcVcVcVcVcVaybhbaaYaTaVaWbaaoblbqbnbobpaqarcHbdaWaXaVbbaTfAeFdWdXdYdZeaebeCepfAaWaXaVbbaTbabYazaKatauavbqcXcXcXcYcZcWcXcYcWcXcYcYcZavawbibjbkblaEazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePePePePePePePePePePbweQeQeQeQeQeQeQeQfBeQbweReRfCfCfCfCfCeReReRbweTeTfDfsfteXeXeXftfubwfafafafafafafEfFfafabwfbfbfGfwfxfxfxfxfxfybwfifififHfIfIfIfififibM -aabhaYbfaTbbaZaWfJcVcVcVcVcVcVcVcVcVcVcVcVcVcDaTbcaUbebeaZbcabbnbobpaqarasataxbaaZbgbeaXaWfKebemeneodXdWependXfKaZbgbeaXaWbcaxazaMavawbidmcWfLfLfMfNfOfPfQfRfSfTfTdmbibjbkblbqbnaGazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePfnePePePePfnePePePbweQeQfUeQfBeQeQeQeQeQbwfVfVfVfVfVfVfVfVfVfWbweTeUeVfsftftftftftfubwfafafafafXfafafafafabwfbfcfdfwfxfxfxfxfxfybwfifzfYfZgagagbgcfzfibM -ajaTaUaVaWaXaYaZczcVcVcVcVcVcVcVcVcVcVcVcVcVcGaWbfbbbhbhaYbfaeawbibjbkblbqbnbmbcaYbdbhbgaZgdepgeeFeEenemeCeFengdaYbdbhbgaZbfbmazaGbpaqardLgfgfgfggghghfLfMfNfPfQfQdmarasatauavawaAazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePePePePePePePePePePbweQeQeQgieQeQeQeQgieQbwgjgkglglglglglgmfVfWbweTeUeVgngogogpgogogqbwfafafafafafafagrfafabwfbfcfdgsgtgtgtgtgtgubwfifzfYgvgwgxgygcfzfibM -amaWbbbeaZbgaUaYcUcVcVcVcVcVcVcVcVcVcVcVcVcVaxaZaVaXaTaTaUaVahbqbnbobpaqarasbNbfaUbaaTbdaYgzeCeDebeaeFgedYebeFgzaUbaaTbdaYaVbNazaLauavawdmfOfOfOfPfQfOfPfQfRgAgBgBeeawbibjbkblbqaFazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePePePePePePePePePePbweQeQeQeQeQeQeQeQeQeQbwgjgCgDgDgDgDgDgEfVfWbweTeUeVgFgGgGgGgGgGgHbwfafafafafafafafafafabwfbfcfdgIgJgJgJgJgJgKbwfifzfYgvgLgMgygcfzfibM -adaZaXbhaYbdbbaUcCcVcVcVcVcVcVcVcVcVcVcVcVcVcEaYbebgaWaWbbbeagasatauavawbibjbYaVbbbcaWbaaUdHdCdDdEdFdGdHdIdJdKdHbbbcaWbaaUbebYazaCblbqbneqgNgNgNgAgBfLfMfNfOfMfNfNesbnbobpaqarasaLazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePePePfnePePePePfnePbweQeQeQeQfoeQfUeQeQfobwfVgCgDgDgDgDgDgEfVfWbweTeUeVgOftftftftftgPbwfafafafafafafafafafabwfbfcfdgQfxfxfxfxfxgRbwfifzfYgbgSgSgTgcfzfibM -alaYbgaTaUbaaXbbdkcVcVcVcVcVcVcVcVcVcVcVcVcVeLaUbhbdaZaZaXbhacbkblbqbnbobpaqcjbeaXbfaZbcbbbhbhbeaXbfaZbcbbbhbebeaXbfaZbcbbbhcjazaJasataueGeNfOfOfPfQfRfSfTgNgAgBgBeHauavawbibjbkaDazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePePePePePePePePePePbwgUeQeQeQeQgUeQeQeQeQbwfVgCgDgDgDgDgDgVfVfWbweTeTgWgOftgXgXgXftgPbwgYgYgYgYgYgYgYgYgYgYbwfbfbgZgQfxfxfxfxfxgRbwfififihahahahbfififibM -aoaUbdaWbbbcbgaXeKcVcVcVcVcVcVcVcVcVcVcVcVcVflbbaTbaaYaYbgaTaiauavawbibjbkblcHbhbgaVaYbfaXaTaTbhbgaVaYbfaXaTbhbhbgaVaYbfaXaTcHazaEbnbobpbqeqeqeqeOcWcXcYeqeOcWcXcXcYbpaqarasatauaNazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePfnePePePePfnePePePbweQgieQfUeQeQgieQfUeQbwfVhchdhdhdhdhdhefVfWbweTeUeVgOftgOftgPftgPbwhfhfhfhfhfhfhfhfhfhfbwfbfcfdgQfxfxfxfxfxgRbwfifififzfzfzfifififibM -abbbbaaZaXbfbdbgfkcVcVcVcVcVcVcVcVcVcVcVcVcVhgaXaWbcaUaUbdaWafbpaqarasatauavbmaTbdbeaUaVbgaWaWaTbdbeaUaVbgaWaTaTbdbeaUaVbgaWbmazaObibjbkblbqbnbobpaqarasatauavawbibjbkblbqbnbobpaIazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPbtePePePePePePePePePePbweQeQeQeQgUeQeQeQeQgUbwfVfVfVfVfVfVfVfVfVfWbweTeUeVhhgXhhhihjgXhjbwhfhfhfhfhfhfhfhfhfhfbwfbfcfdhkhlhlhlhlhlhmbwfifififififififihnhnbM -aeaXbcaYbgaVbabdcBcVcVcVcVcVcVcVcVcVcVcVcVcVcFbgaZbfbbbbbaaZanbnbobpaqarasatbNaWbabhbbbebdaZaVbfaUbaaTbdaYaVbfaWbabhbbbebdaZbNazaMavawbibjbkblbqbnbobpaqarasatauavawbibjbkblbqbnaGazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRhohohohohohohohohohoaRhohohohohohohohohohoaRhohohohohohohohohohoaRhohohohohohohohohohoaRhohohohohohohohohohoaRhohohohohohohohohohoaRhohohohohohohohohohoaR -ahbgbfaUbdbebcbahpcVcVcVcVcVcVcVcVcVcVcVcVcVhqbdaYaVaXaVaWbaapavawbibjbkblbqbYaZbcaTaXbhbaaYbeaVbbbcaWbaaUbeaVaZbcaTaXbhbaaYbYazaFbobpaqarasatauavawbibjbkblbqbnbobpaqarasatauavaOazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -agbdaVbbbabhbfbccAcVcVcVcVcVcVcVcVcVcVcVcVcVbmbaaUbebgaVaWbaaobjbkblbqbnbobpcjaYbfaWbgaTbcaUbhbeaXbfaZbcbbbhbeaYbfaWbgaTbcaUcjazaIarasatauavawbibjbkblbqbnbobpaqarasatauavawbibjaCazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -acbabeaXbcaTaVbfhrcVcVcVcVcVcVcVcVcVcVcVcVcVbNbcbbbhbdbeaZbcabatauavawbibjbkayayaaabacadaeafagahaaaiajakalamanaoagafajacadahakazaDaEaFaGaHaIaJaKaLaMaNaOaAaBaCaDaEaFaGaHaIaJaKaLaMazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aibcbhbgbfaWbeaVhrcVcVcVcVcVcVcVcVcVcVcVcVcVbNbfaXaTbabhaYbfaeazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -afbfaTbdaVaZbhbehrcVcVcVcVcVcVcVcVcVcVcVcVcVbNaVbgaWbcaTaUaVahaTaaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoaTbdazhshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -anaVaWbabeaYaTbhhtcVcVcVcVcVcVcVcVcVcVcVcVcVbYbebdaZbfaWbbbeagaWajaTaUaVaWaXaYaZbabbbcbdbebfbgbhaYaXbcaUaVaZbdaWbfbbabaWbaazhsbbaTbabbbabbaTbabbaTbabbaTbabbaTbabbaTbabbbabbaTbabbaTbabbaTbabbaTbabbbbhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -akbeaZbcbhaUaWaThucVcVcVcVcVcVcVcVcVcVcVcVcVcjbhbaaYaVaZaXbhacaZamaWbbbeaZbgaUaYbcaXbfbabhaVbdaTaUbgbfbbbeaYbaaZaVaXaeaZbcazhsaXaWbcaXbcaXaWbcaXaWbcaXaWbcaXaWbcaXaWbcaXbcaXaWbcaXaWbcaXaWbcaXaWbcaPaXhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aabhaYbfaTbbaZaWhucVcVcVhvcVcVcVcVcVhvcVcVcVcjaTbcaUbeaYbgaTaiaYadaZaXbhaYbdbbaUbfbgaVbcaTbebaaWbbbdaVaXbhaUbcaYbebgahaYbfazhsbgaZbfbgbgaZbfbgaZbfbgaZbfbgaZbfbgbgaZbfbgaZbfbgaZbfbgaZbfbgaZbfbgbgaZaPhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -ajaTaUaVaWaXaYaZayaxaxcEeLhvhwhxhyhzcGcFhqaxcHaWbfbbbhaUbdaWafaUalaYbgaTaUbaaXbbaVbdbebfaWbhbcaZaXbabebgaTbbbfaUbhbdagaUaVazhsbgaYaYbebgaYbebgaYbebgaYbebgaYbebgbgaYaYbebgaYbebgaYbebgaYbebgaYbebgaYaYhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhAhBhBhBhBhBhCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -amaWbbbeaZbgaUaYbdaUbabgflcEayhgbNcHaxaYbfaWbgaZaVaXaTbbbaaZanbbaoaUbdaWbbbcbgaXbebabhaVaZaTbfaYbgbcbhbdaWaXaVbbaTbaacbbbeazhsbdaUaUbhbdaUbhbdaUbhbdaUbhbdaUbhbdbdaUaUbhbdaUbhbdaUbhbdaUbhbdaUbhbdaUaUhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhDhEhFhGhHhCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -adaZaXbhaYbdbbaUbfbgaVbcaTbebaaWbbbdaVaXbhaUbcaYbebgaWaXbcaYakaXabbbbaaZaXbfbdbgbhbcaTbeaYaWaVaUbdbfaTbaaZbgbeaXaWbcaiaXbhazhsbhbcbcbbbhbcbbbhbcbbbhbcbbbhbcbbbhbhbcbcbbbhbcbbbhbcbbbhbcbbbhbcbbbhaVbchsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhIhJhJhJhIhChChChCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -alaYbgaTaUbaaXbbaVbdbebfaWbhbcaZaXbabebgaTbbbfaUbhbdaZbgbfaUaabgaeaXbcaYbgaVbabdaTdCdDdEdFdGdHdIdJdKaWbcaYbdbhbgaZbfafbgaTazhsaTbfbfaXaTbfaXaTbfaXaTbfaXaTbfaXaTaTbfbfaXaTbfaXaTbfaXaTbfaXaTbfaXaTbfbfhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhIhKhKhKhIhChLhMhCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aoaUbdaWbbbcbgaXbebabhaVaZaTbfaYbgbcbhbdaWaXaVbbaTbaaYbdaVbbajbdahbgbfaUbdbebcbahNhOhPhQhRhShThUhVdHelbfaUbaaTbdaYaVanbdaWazhsaWaVaVbgaWaVbgaWaVbgaWaVbgaWaVbgaWaWaVaVbgaWaVbgaWaVbgaWaVbgaWaVbgaWaVaVhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhIhWhXhYhIhChChChChChChChChChChChCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -abbbbaaZaXbfbdbgbhbcaTbeaYaWaVaUbdbfaTbaaZbgbeaXaWbcaUbabeaXambaagbdaVbbbabhbfbcelhShZhRhViaibicidieeBaVbbbcaWbaaUbeakbaaZazhsaZbebebdaZbbfmfmfmfmfmfmbbfmfmfmbbbbbbfmfmfmbbfmfmifgdelifbdaZbebdaZbebehsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhIhWhXhYhIigihiiijikilihiminioiohCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aeanamacakalajaaaeadahabaiagaoafajalahamacaaabakagadafamabakipbcacbabeaXbcaTaVbfeBicidhUiqhPhVhRhTireMbeaXbfaZbcbbbhaabcaYazhsaYbhbhbaaYbbfmivfmfmivfmbbfmivfmfmfmfmfmivfmbbfmivititjEitbaaYbhbaaYbhbhhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhIhWhXhYhIiuihililikilihilioioiohCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -ahbfaUbaaTbdaYaVbdbfaUbaaTbdaYaVbdaYaVbfaUbaaTbdaYaVaVanaPaPaPbfaibcbhbgbfaWbeaVeMhRhTiehZhSiqhUhQibfmbhbgaVaYbfaXaTajbfaUazhsaUaTaTbcaUbbfmivivivivfmfmfmiviviviwixixjvfmfmfmiwixixjvitbcaUaTbcaUaTaThsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhIhXhXhXiyiziAililikilihiminioiohCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -agaVbbbcaWbaaUbecGiBiCiDflbcayiEiFdIaxaVbbbcaWbaaUbebeakaPaPaPaVafbfaTbdaVaZbhbefmhUhQiridichZieiahVfAaTbdbeaUaVbgaWamaVbbazhsbbaWaWbfbbbbfmivivivivfmfmiviviviviGiHiHiIivfmfmiGiHiHiIitbfbbaWbfbbaWaWhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhIhXhXhXiyiziAililililiJilioioiohCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -acbeaXbfaZbcbbbhhqiKiLiMcjaZhgiNiOiPbmbeaXbfaZbcbbbhbhaaaPaPaPbeanaVaWbabeaYaTbhfAieiaibhThRidirhPiqfKaWbabhbbbebdaZadbebgazhsaXaZaZaVaXbbfmivivivivfmfmiviviviviQiRiRiSivfmfmiQiRiRiSitaVaXaZaVaXaZaZhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBhIiThXiUhIiuihililikilihiminioiohCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aibhbgaVaYbfaXaThqiKiLiMcjaZhgiNiOiPbmbhbgaVaYbfaXaTaTajaPaPaPbhakbeaZbcbhaUaWaTfKdVhPhVhQhUhTibhSdKgdaZbcaTaXbhbaaYalbhbdazhsbgaYaYbebgbbfmiviviwixixjviviviviviviViWiviviviviviViWivitbebgaYbebgaYaYhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBiXhIiYhIiZigihililikilihilioioiohCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -afaTbdbeaUaVbgaWbmjajbjccHaYcFjdjejfbNaTbdbeaUaVbgaWaWamaPaPaPaTaabhaYbfaTbbaZaWdVdJiaieiaiehQiaiedHgzaYbfaWbgaTbcaUaoaTbaazhsbdaUaUbhbdbbfmiviviGiHiHiIiviviviviwjgjhiwiviviviwjgjhiwitbhbdaUbhbdaUaUhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhBjiiXjjiZjiigihililikilihiminioiohCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -ahbfaUbaaTbdaYaVbNjkjliLayaUhqjmjnjobYbfaUbaaTbdaYaVaVanaPaPaPaWajaTaUaVaZiDdFjpjqiahSibhSibhPhSibhUdHdHifjpbaaWbfbbabaWbcazhsbbaTbabbbabbfmiviviQiRiRiSiviviviviGixjriGiviviwiGixjriGitaTbabbaTbabbbbhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPhChChChChChChChChChChChChChChChChChCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -agaVbbbcaWbaaUbebYiMjsjbcDbbbmjtiPjucjaVbbbcaWbaaUbebeakaPaPaPaZamaWbbbeaYgdhUiciqhSibhTiaiehSidieiahZhUhUdFbcaZaVaXaeaZbfazhsaXaWbcaXbcbbfmiwixixjviWiviviviviviviviviviviviGiHiHiIjEitaWbcaXaWbcaPaXhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -acbeaXbfaZbcbbbhcjhqcHbYcGaXbNaxhgbmcHbeaXbfaZbcbbbhbhaaaPaPaPaYadaZaXbhaUgzhUhRhZidiehQhSibichThUhPidiehQdIbfaYbebgahaYaVazhsbgaZbfbgbfbbfmiGiHiHiIjhiwiwixixjvixixjviviviviQiRiRiSjEitaZbfbgaZbfaPbghsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aibhbgaVaYbfaXaTbfbhbgaVaYbfaXaTbfaXaTbhbgaVaYbfaXaTaTajaPaPaPaUalaYbgaTbbjxiehUidhTiriahUhZhRhQibhShTiriajyaVaUbhbdagaUbeazhsbgaZbfbgbffmfmiQiRiRiSjriGiGiHiHiIiHiHiIiviviviviViWivjEitelbfbgaZbfaPbghsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzjzjzjzjzjAjzjzjzjBjCjzjzjzjBjzjzjzjzjzjzjBjzjzjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -afaTbdbeaUaVbgaWaVaTbdbeaUaVbgaWaVbgaWaTbdbeaUaVbgaWaWamaPaPaPbbaoaUbdaWaXjDiriehThQibhPieidhUiahVichQibhPiDbebbaTbaacbbbhazhsbgaZbfbgbffmiviviViWiviviviQiRiRiSiRiRiSiviviviwjgjhiwjEjEelbfbgaZbfaPbghsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjAjzjzjzjzjzjzjzjzjzjzjzjBjzjzjzjzjzjBjzjzjzjzjzjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -ahbfaUbaaTbdaYaVbdbfaUbaaTbdaYaVbdaYaVbfaUbaaTbdaYaVaVanaPaPaPaXabbbbaaZbgdKibirhQiahVhSirhTiehPiqhRiahVhSdVbhaXaWbcaibgaTazhsbdaYaVbdaVfmiviwjgjhiwiwixixjviWiviViWiviviviviGixjriGjEjEeBaVbdaYaVaPbdhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzjzjzjFjzjzjzjzjzjAjzjzjCjBjzjzjBjzjzjBjCjzjBjzjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -ahbfaUbaaTbdaYaVbdbfaUbaaTbdaYaVbdaYaVbfaUbaaTbdaYaVaVanaPaPaPbgaeaXbcaYbddHhVibiahPiqicibhQirhShZhUhPiqicdJaTbgaZbfafaPaWazhsbhbcbcbbbhfmfmiGixjriGiGiHiHiIjhiwjgjhiwivivivivivjEjEjEitfmbhbcbbbhaVbchsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjAjzjzjBjCjzjzjBjzjCjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -agaVbbbcaWbaaUbebaaVbbbcaWbaaUbebaaUbeaVbbbcaWbaaUbebeakaPaPaPbdahbgbfaUgzdEiqhVhPhShZhRhViaibicidiehShZhRjqhNbdaYaVanbdaZazhsaTbfbfaXaTbbfmfmfmfmfmiQiRiRiSjriGixjriGivivivivfmititititaXaTbfaXaTbfbfhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjAjzjzjzjzjzjCjzjBjCjzjBjzjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -acbeaXbfaZbcbbbhbcbeaXbfaZbcbbbhbcbbbhbeaXbfaZbcbbbhbhaaaPaPaPbaagbdaVbbjxhQhZiqhSicidhUiqhPhVhRhTiricidhUiqelbaaUbeakbaaYazhsaWaVaVbgaWbbbbbbbbbbfmiviViWivivivivivivivivivivfmaPaPaPaPbgaWaVbgaWaVaVhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzjzjGjGjGjGjGjGjGjzjzjzjzjzjzjzjBjzjzjFjCjzjzjzjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aibhbgaVaYbfaXaTbfbhbgaVaYbfaXaTbfaXaTbhbgaVaYbfaXaTaTajaPaPaPbcacbabeaXjHiaidhZichRhTiehZhSiqhUhQibhRhTiehZeBbcbbbhaabcaUazhsaZbebebdaZbbbbbbbbbbfmiwjgjhiwivivivivivivivivivfmaPaPaPaPbdaZbebdaZbebehsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzjIhCjJjKjKjKjLhCjMjzjzjzjzjFjzjzjAjzjAjzjBjzjBjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -afaTcGiBiCiDflaXayiEiFdIaxaXaXcGiBiCiDflbcayiEiFdIaxaWamaPaPaPbfaibcbhbgjNhPhTidhRhUhQiridichZieiahVhUhQirideMbfaXaTajbfbbazhsaYbhbhbaaYbbbbbbbbbbfmiGixjriGivivivivivivivivivfmaPaPaPaPbaaYbhbaaYbhbhhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzhCjOjOjOjOjOjOjOhCjPjzjzjGjGjGjGjGjGjGjGjQjRjGjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aobfhqjSjTjUcjbghgjVjWjXbmbgbghqjYjZkacjaZhgkbkckdbmbaacaPaPaPaVafbfaTbdifhShQhThUieiaibhThRidirhPiqieiaibhTfmaVbgaWamaVbgazhsaUaTaTbcaUbbbbbbbbbbfmfmfmivivivivivivivivivfmfmfmaPaPaPaPbcaUaTbcaUaTaThsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzhCjOjOjOjOjOjOjOhCjPjzkekfkgkgkhjwjwjwjwjwjwjwjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -abaThqjSjTjUcjbghgjVjWjXbmbgbghqjYjZkacjaZhgkbkckdbmbcaiaPaPaPbeanaVaWbakiiciahQiehSirhUiqibhRhZiaicirhPhVhQfAbebdaZadbebdazhsbbaWaWbfbbaWaPaPaPaPaPaPititjEjEjEjEjEjEjEititaPaPaPaPaPaPbfbbaWbfbbaWaWhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzhCjOjOjOjOjOjOjOhCjPjFkekjioioiokkkljwisknkojwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aebcbmkpkqkrcHbdcFksktkubNbdbdbmkvkwkxcHaYcFkykzkAbNbfafaPaPaPbhakbeaZbckBhRhPiairicibiehZhVhUidhPhRibhSiqiafKbhbaaYalbhbaazhsaXaZaZaVaXaZaVaXaZaVaXaZaVfAeljNfAfAeleljNfAaZaVaXaZaVaXaZaVaXaZaVaXaZaZhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzkChChChCjOhChChCkDjzjzkEkjioiokFioiokGioioiojwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -ahaUbNkHkIjTaybahqkJkKkLbYbababNkMkNjZayaUhqkOkPkQbYaVanaPaPaPaTaabhaYbfhphUhShPibhRhViridiqiehThShUhVichZhPfJaTbcaUaoaTbcazhsbgaYaYbebgaYbebgaYbebgaYbebgaYbebgbgaYaYbebgaYbebgaYbebgaYbebgaYbebgaYaYhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzjzjzhCjOjOjOhCkRjGjGjGkSkTiokUkVkWiojwiokXkXjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -agbbbYjUkYkqcDbcbmkZjXlacjbcbcbYkalbkwcDbbbmlckdldcjbeakaPaPaPaWajaTaUaVdGieichShVhUiqibhThZirhQicieiqhRidhSdJaWbfbbabaWbfazhsbdaUaUbhbdaUbhbdaUbhbdaUbhbdaUbhbdbdaUaUbhbdaUbhbdaUbhbdaUbhbdaUbhbdaUaUhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjzjzjzjzjzhCjOjOjOhCkfkgkgkgkhjwiokUlekWiojwjwjwjwaRaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -acaXcjhqcHbYcGbfbNaxhgbmcHbfbfcjhqcHbYcGaXbNaxhgbmcHbhaaaPaPaPaZamaWbbbejpirhRiciqiedKhVhQidibiadIirhZhUhTicjqaZaVbgaeaZaVazhsbbaTbabbbabbaTbabbaTbabbaTbabbaTbabbaTbabbbabbaTbabbaTbabbaTbabbaTbabbbbhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzjIhChChChChCjOjOjOhCkjioioioiolfioioioioiolglhlhlijwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aibgbgaVaYbfaXaTbfbgbgaVaYbfaXaTbfaXaTbgbgaVaYbfaXaTaTajaPaPaPaYadaZaXbhdFibhUhRhZirdHiqiahThVhPjyibidiehQhRdCaYbebgahaYbeazhsaXaWbcaXbcaXaWbcaXaWbcaXaWbcaXaWbcaXaWbcaXbcaXaWbcaXaWbcaXaWbcaXaWbcaPaXhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzhCjOjOjOjOhCjOjOjOhCkTioljkgkhjwioioioioiojwlililkjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -afbdbdbeaUaVbgaWaVbdbdbeaUaVbgaWaVbgaWbdbdbeaUaVbgaWaWamaPaPaPaUalaYbgaTdIhViehUidibdEdKdGlldCjpiDhVhTiriahUdKaUbhbdagaUbhazhsbgaYaYbebgaYbebgaYbebgaYbebgaYbebgbgaYaYbebgaYbebgaYbebgaYbebgaYbebgaYaYhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzhCjOjOjOjOhCjOjOjOhChClmhClnlojwjwjwjwjwlpjwlqlilkjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -analahajaoacaeabanagakafamaahshshshshsahajabafaoaaagagadaPaPaPbbaoaUbdaWjydCdViDdEjqllbeaYaWaVaUdVdClldJdGiDdHbbaTbaacbbaTazhsbdaUaUbhbdaUbhbdaUbhbdaUbhbdaUbhbdbdaUaUbhbdaUbhbdaUbhbdaUbhbdaUbhbdaUaUhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwlrjzhCjOjOjOjOhChCjOhChCjOjOjOhClsltlojwlulvlvjwjwjwjwjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -bfaXbhaUbcaYaUbcaYaXbhaUbcaYaXbhaUbcaYaXbhaUbcaYbebgaWaPaPaPaPaXaeaXbcaYbgaVbabdaTbfaWbhaUaZbebbbaaVaWbcaYbdbhbgaZbfafaXaZazhsbbaTbabbbabbaTbabbaTbabbaTbabbaTbabbaTbabbbabbaTbabbaTbabbaTbabbaTbabbbbhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzhCjOjOjOjOjOjOjOjOjOjOjOjOhCjPjzkelwlulvlvjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aVbgaTbbbfaUbbbfaUbgaTbbbfaUbgaTbbbfaUbgaTbbbfaUbhbdaZaPaPaPaPbgahakadaiaaaoamajahalagaeafacabanamaoagadacaiaeaaacalanbgaYazhsaXaWbcaXbcaXaWbcaXaWbcaXaWbcaXaWbcaXaWbcaXbcaXaWbcaXaWbcaXaWbcaXaWbcaPaXhsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjzhCjOjOjOjOjOjOjOjOjOjOjOjOhClxjzkekjlulvlvjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -bebdaWaXaVbbaXaVbbbdaWaXaVbbbdaWaXaVbbbdaWaXaVbbaTbaaYaPaPaPaPazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazhshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshsazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjzjIhChChChChChCjOjOjOhChChChChChCjMkekTlulvlvjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -azazazazazazazazazazazazazazazazazazazazazazazazazazazaPaPaPaPazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazazaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlylylylylylylylyaPaPjwjzhClzlzlzlzlzhCjOjOjOhCjOjOjOjOjOhClAjwlulvlvjwaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlylBlBlBlylBlBlyaPaPjwjzhClzlzlzlzlzlzjOjOjOjOjOjOjOjOjOhClAjwjwjwjwjwaPaPaPaPaPaPaPaPaPlClDlElDlFaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlylBlGlBlHlBlBlyaPaPjwjzhClzlzlzlzlzlzjOjOjOjOjOjOjOjOjOhCjPjzjwaPaPaPaPaPaPaPaPaPaPaPaPlDlInmlKlDaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlylLlLlLlylBlBlyaPaPjwjzhClzlzlzlzlzhClzlzlzhCjOhCjOhChChClMjzjwaPaPaPaPaPaPaPaPaPaPaPaPlNlJlOlJlNaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlPlPlPlPlylylylylylylBlBlyaPaPjwjzhClzlzlzhChChClzlzlzhChChCjOjOjOhCjPjzjwaPaPaPaPaPaPaPaPaPaPaPaPlQlJlJlJlQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlPlPlPlPlHlBlHlBlBlBlBlBlyaPaPjwjzhClzlzlzhCjzhClRlRlRhCjzhCjOjOjOhCjPjzjwaPaPaPaPaPaPaPaPaPaPaPaPlQlJlJlJlQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlPlPlPlPlylylylylBlBlBlSlyaPaPjwjzhClRlRlRhCjzkClTlUlVkDjzhClRlRlRhCjPjzjwaPaPaPaPaPaPaPaPaPaPaPaPlWlJlJlJlWaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlylLlBlBlSlyaPaPjwjzkClTlUlVkDjzjzjzjzjzjzjzkClTlUlVkDjzjzjwaPaPaPaPaPaPaPaPaPaPaPaPlDlXkmlYlDaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlylLlBlBlSlyaPaPjwjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjzjwaPaPaPaPaPaPaPaPaPaPaPaPlDmbmbmblDaPaPaPaPaPaPaPaPaPaPaPaPmcmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmd -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPlylylylylylyaPaPjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwjwaPaPaPaPaPaPaPaPaPaPaPaPmemfmgmhmiaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmj -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmlmmmmmmmnaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmj -mamamamamamamamkmamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmoTBmOlZmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmj -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmompmpmpmoaPaPaPaPmlmmmmmnaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPmjmjmjmjmjmjaPaPaPaPaPaPaPmjmjmjaPaPaPaPaPmjmjmjmjmjmjmj -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmlmmmmmmmmmmmmmmmmmmmqmmmmmmmrmpmpmpmoaPaPaPaPmompmpmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjaPaPaPmjmjmjmjmjmjmjmjmjaPmjmjmjmjmjmjmjmj -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmlmmmmmqmmmmmqmmmmmrmsmtmumvmwmxmymzmAmomJmKmLnJnPmVnRnKmmmmmmmqmCmDmDmWmnaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPozmEmFozmGmGozmHmIozmpmpmpmpmpmpmpmpmpmompmpmpmMmNmpnFmMmPmQoYmompmpmpmpmBmmmmmmmnaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjaPaPaPaPaPaPmSaPmTmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmlmmmmmmmmnPmUmVmVmUmVmVmUmVmVmUmpmpmpmpmpmpmpmpmpmoQhmpmpnhmpmpmppimpmpmXmompmpmpmpozmYmZnamoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjaPaPaPaPaPaPmSmTmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -mamamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPoznnnnELnonnpbmpmpmpmpmpmpmpmpmVmpmpnbncndnempmpnfmompmpmpnhmpmpmppimpmpngmompmpmpmpFdmYmYnimoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjaPaPaPaPaPaPmSaPmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -njmamamamamamamamamamamamamamaaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnknknknknknknknknknkmUnlENnnnnnnmompmpmpmpmpmpmpmpmVmpmpnpnqnrnsmpmpnfmontnunvmMmpmpmpmMnwnxnymompmpmpmppbnznAnBmoaPaPaPaPmlmmmmmmmnaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjaPaPaPaPaPaPnCmTmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnDnnnnnnnnnEnnnnnnnnnnnEnWnnnnnnnGozmpmpmpmpmpmpmpmpmVmpmpmpmpmpmpmpmpnHnJnPmMmMmUmpmpmpmUmMmMnRmrmpmpmpmpmBmmmmmmnKmmmqmmmmmrnLnMnNmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjaPaPaPaPaPaPnOaPmTmjmjjwjwjwjwjwmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnknknknknknknknknknkmUnRnPnQnRnPmUmVmVmUmVmVmUmVmVmUmpmpmpmpmpmpmpmpnSmMmRnUnVojmpmpmpojnXnYnYoympmpmpmpoznZoaoaoaobmoocodmonLoenNmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPjwjwEOogohjwjwmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnknknknknknknknknknkmUnloinnnnoHpbokolpbomonpboooppboqorosotouovmpmpowmMoxmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmYmYoAoAoAmYoznMnMozoBnMoCmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPlwoDoEoFoEoDjwmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnDnnnnnnnnoGnnnnnnnnnnoGoVnnnnnnoHnJmmmmnKmmmmnKmmmmnImMmMmMmMmMmUFeFenRnPofmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmYmYoJoJoJmYoKnMnMnMnMnMnMmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPkjoDoEoFoEoDjwmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnknknknknknknknknknkmUnloLnnnnnnoMmpmpmpmpmpmpmpmpmpmpmpmpmpmpoNmpmpoNoOmpmpmpoPoQoYoSoTmpmpmpmpmpmpmpmpmYmYoJoJoJmYoKnMnMnMnMnMnMmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPkToDoEoFoEoDjwmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnDnnnnnnnnoUnnnnnnnnnnoUpqnnnnnnnnoMmpmpoWmpmpoWmpmpmpmpmpmpmpmpoXmpmpoXmpmpmpmpoPpjoYoYoTmpmpmpmpmpmpmpmpmYmYoAoAoAmYpbpcnMpbpdpbpemoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwjwoFoFoFjwjwmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnknknknknknknknknknkmUnlpgnnnnphpbmMmMmUnTnTmUmMmMpbmMmMmMmMmMmUTLTLnRnPmpmpmpoPTMTNpkoTmpmpoZpampmpmpmppbpmoaoaoapnmopcnMmopomopomoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPmjmjmjmjmjaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPjwoIoFpfjwmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnDnnnnnnnnppnnnnnnnnnnppqCnnnnnnprmopsmpmpmpmpmpptpumopvpwpxpypzpAmpmppBmMpCmpmpmpmpmpmpmpmpmpplmompmpmpmpnJmmmmmmmmmmnKmqmmnKmmpDmmnIaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPpEpFpFpGjwjwpHjwjwjwjwjwjwjwmjmjmjjwjwjwjwjwjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnknknknknknknknknknkmUnnnnnnnnpImopJmpmpmpmpmpmppKmompmpmpmppLmpmpmppMmMpNpPpOpQmpmpmppOpPpNpCmompmpmpmpmMpRpSpSpTpUpVmopWnMpXmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPpYpZqaqaqaqbqcaPaPqdqeqfqgqeqeqeqhjwqiqjqkqljwmjmjmjjwqmioqnqojwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPpbnnqpqqqrqsmoqtmpmpquqvmpmpqwmompmpmpmpmpmpmpmpmlmmnPmMmMmUqxqxnRmmmmmmmmmrmpmpmpmpmMqyqyqyqyqyqymoqznMqAmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPmjmjmjmjmjaPaPaPaPaPaPaPaPaPpYqBqKqDqEqFqGqBqcaPqdqeqHqHqeqeqeqeqIqJqJqJrajwmjmjmjjwjwjwjwjwjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnJmmmmmmmmmmmrqLmpmpqMqNmpmpqOmompmpqPqQqRmpmpqSmoqTqUqUqUqUqVqVqUqUqUqWaPmompmpmpmpmUqyqXqYqYqYqYnJnPqZnRmraPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPqBrwrbrbrcrbrbqFqBaPqdrdrerfrgqeqeqejwqJqJqJrhjwmjmjmjjwriioiorjjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmompmpmprkrlmpmpmpmompmprmrnrompmprpmorqrrrsrtrurvrvrvsFrxqUqWmompmpmpmpryqyrzrzrzrzrzqyqyqyqYmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPqBrArbrbrbrbrBrCqBaPqdqerDrDqeqeqerEjwrFRurGrHjwmjmjmjjwrIioiorJjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmompmpmpmpmpmpmpmpmompmpmpmpmpmpmprKmorqrLrMrvrvrvrvrvrvrvrNrOmompmpmpmpryqyqyqyrPqyqyqyqyqyqYmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBrQrbrbrRrbrbrSqBaPqdqeqeqeqeqeqerTjwjwjwjwjwjwmjmjmjjwrUioiorVjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmompmpmpmpmpmpmpmpmompmpmpmpmpmpmpmpmorqrLrWrXrYrYrYrYrYrZqUsamompmpmpmppbqyqysbsbqyqyscqyqyqYmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsesesesesesesesesesesesesesesesesesesesesesesdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsfqBsgqBqBqBqBqBshaPsipFpFsjjwqoqoqojwlhlhsksljwmjmjmjjwsmioiosnjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmompmpsospsqsrssstmosusvswsxsyszmpsAmosBqUqUqUqUqUqUqUqUqUsaaPmompmpmpmpmosCqyTUsDqyqysEqyqysTmoaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBwQsIsJsKsLqBaPaPaPaPaPaPsMqoqoqosNlilisOsOjwmjmjmjjwsmioiosHjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmosPsQsospsqsrssstmBmmmmmmmmmmmmmmmmnIsRsRsRsRsRsRsRsRsRsRsRsRozmUsSsSmUnJmmmmmmmmmmmmmmmmmmmmnIaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBthsUrBrbsVqBaPaPaPaPaPaPsWqoqoqojwsXlijwjwjwjwjwjwjwsYsZsZsYjwjwjwjwmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnJmmmmmmmmmmmmmmmmnIaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPtamUtbtbmUtcaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGsGsGsGtdtetetetetftftetetetetgsGsGsGsGsGsdsdsdsdsdsdsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPpYqBtksIrBrbtiqBqcaPaPnOnCtjjwqoqoqojwjwjwjwtFtrvxuhuIunioioioiotltltmjwjwmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmMtntnmMaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGsGsGtdtotptquktetstttetutvtetetetgsGsGsGsdwIxdxaxaxasdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPpYqBqBqBqBtwsIrBrbtxqBqBqBqBqctytyjwtzqoqoqojwuFuGioioioioioioioioioioioioiotCjwmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmMtntnmMaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGsGtdtetDtDtDtDtetEtEtetDtDuutGtetetgsGsGsdzjxaxaxaxasdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBtHtItJqBtKrbrbtLqBqBwXtNtOtPtQtRtQqoqoqoqotSioioioioioioqoiotTioioioioioiotUjwmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmMtntnmMaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGtdtetetVtWtXtYtetZtDuatDtDtDtDubuctesGsGCuxaxaxaxaxasdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPudueufueqBqBugxsqBqBxLtMuiujtPtQQbtQqoqoqoqojwulumioioioioioioioioioioioioiovWjwmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmMtntnmMaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGuoupuqtDurururtetDtDteusutuwuvuHuxtesGsGsdxaxaxaxaxasdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPmjmjmjaPaPaPaPqBqBuduyqBqBuzrbuAqBqBuBuCuBqBuDuDjwuEpFsjjwjwjwjwtAtBFxKGKNKMioioioiovmvmvXjwjwmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPnktntnnkaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGuJuptDtDtDtDtDuatDtDteteteteteteteuKsGsGsdCvxXxaxXCwsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPqBuLrbrbuMqBQRuNrbqBuOuPuQuRqBmTaPmTaPaPaPaPmjmjjwjwjwjwjwjwjwsYuSuSsYjwjwjwjwmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmMtntnmMaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGuTtetDtDtDuUtDtetDtDtDuVuWsGsGsGsGsGsGsGuXuXuXuXuXuXuXuXuXuXuXaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPqBuYrbrbrbuZrbrbrbvarbrbrbvbqBnCnCnCnCaPaPaPaPmjmjmjmjmjmjmjjwvcioiovcjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmMtntnmMaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGsGtetetetetetetetZtDvdtDuWsGsGsGsGsGsGsGuXvevevevevevevevevevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPmjmjmjmjmjaPaPaPaPqBvgrbrbrbvhrbrbrbvirbrbrbvjqBaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjjwvcioiovcjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmMtntnmMaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsGsGtdtevkvlvvvkvntetDtDtDvouWsGsGsGsGsGsGsGuXvevpvqvqvqvqvqvrvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPpYqBqBqBqBqBqBrbrbrbqBqBqBqBqBqBqcaPaPaPaPaPmSaPmTmjmjmjmjmjmjjwvcioiovcjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmMtntnmMaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPsdsdsdsdsdsGsGuoupvsvsvsvsvsuatDtDtetetetetetetetgsGsGuXvevtvuvuvuvuvuvtvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPqBwlvwCQvyvzqBvArbvBqBvCvDvDvEvFqBaPaPaPaPaPmSmTmjmjmjmjmjmjmjjwvcioiovcjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGvGvGvHvHvHvHvGvGvGvGvHvIvIvHsdvJvJsdsdvJvJsdsdvJvJvJvJsdsdsdsdvJvJvJvJsdsdsdsdvJvJsdsdsdsdsdsdvKvKvLsdsGsGuJupvMvsvsvsvstetDtDtDtDtDtetDvNvOtesGsGuXvevtvPvuvuvuvQvtvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPmjmjmjaPaPaPaPaPvRvSvSvSvSvSqBrbrbrbqBvTrbrbrbvUvVaPaPaPaPaPnOaPmjmjmjmjmjmjmjjwjwwWwYjwjwmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvYvZvYvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvYvYvYvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGwawbwbwbwbwbwbwbwbwbwbwbwbwbwbwcvJvKvKvKvKvKvKvJvKvKvKvKvKvKwdvKvKvKvKvKvKvKvKwdvKvKvKwevKvKvKvKvKvKvKvKwfsGsGuTtetewgwhwiwjtetZwkwkwktDuatDtDtDtesGsGuXvevtvuvuwmwmwmwovevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPwnxpwpvSvSvSwqrbrbrbwrrbrbrbwswtwuaPaPaPaPaPmSmTmTmjmjmjmjmjmjmjjwjwjwjwmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPwvvGvGvGwvaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPwvvGvGvGwvvHvHvHvHwvaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwwvKvKvKvKvKvKwwvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKwevKvKvKvKvKvKvKvKwfsGsGsGuTtevsvsvsvstetDwkwkwktDtewxteteuKsGsGuXvevtvuvuvuvuvuwyvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPwzvSvSvSvSvSwArbrbrbwBrbrbrbrbwCwDaPaPaPaPaPmSaPaPmTmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTmTmTmTaPaPaPaPaPaPaPaPaPmTmTmTmTvHwbwbwbvHmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTaPvGwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwwvKvKvKvKvKvKwwvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKsdsdsdsdsdsdsdsdsdsdsGsGsGsGuTtewEwFwGtetDtDtDtDtDteteteuKsGsGsGuXvevtvuvuvuvuwHvtvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBCRvSvSvSwJqBuBwKuBqBwLwMwNrbwOqBaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPmTmTmTmTmTmTmTmTmTmTmTaPaPaPvHwbwbwbvHmTaPaPaPaPaPaPaPaPaPaPaPaPaPaPmTmTvHwbwbwbwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPvJvJDivJvJsdvJvJvJvJvJwRwRvJvJsdsdvJvJvJvJsdsdvKvKsdoRwSsdoRwSsdoRwSsdsGsGsGsGsGuTteteteteteteteteteteuKsGsGsGsGsGuXvevtvuvuvuvuvuwyvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBwUwVxrAGxJqBwZrbDjqBxbqBqBxcqBqBaPaPaPaPaPaPaPmSaPmTmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbwPxhxfxfxfxfxfxfxfxfxfxgxiyixzwPxjxjxjxlxksdwRwRwRwRwRwRwRxmxnsdxBxBxBxBxBxBsdvKvKsdwTxosdwTxosdwTxosdsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGuXvevtvuvuxqxqxqxNvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBBcvSBiqBqBqBDkrbxtqBqBqBxurbxvqBaPaPaPaPaPaPaPmSmTmTmjmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbwPyyxexexexAxAxexexexexCxexeyzwPxDxjxjxjxjsdwRxExFxGxEwRwRwRwRsdxBxIxHxHxWxBvJvKvKsdxZyasdxZyasdxZyasdsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGsGuXvevtvPvuvuvuvQvtvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBBHxKBWqBaPqBxMxMxMqBaPqBqFzDxOqBaPaPaPaPaPaPaPmSaPmTaPmjmjmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxywbwbwbwPyyxexexQxPxSylxexeyDxgyEyHyGwPxRxjxjxjxjsdwRxExVxVxEwRwRwRwRsdxBykxXxYyTxBvJvKvKsdzbsdsdzbsdsdzbsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsduXveybycvuvuvuydyevevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPqBxMxMxMqBaPsfyfygyhshaPqBxMxMxMqBaPaPaPaPaPaPaPmSmTmTmTmTmTmjmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbwPyyxexexQxSxSylxexeyzwPwPwPwPwPxUxUxUxjxjsdwRwRwRwRwRwRwRynxEsdxBykxXxXyTxBsdvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKyosGsGyovfveypyqyryryryqysvevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPsfyfygyhshaPaPaPaPaPaPaPsfyfygyhshaPaPaPaPaPaPaPmSaPmTaPmTaPaPmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTaPaPaPaPaPaPaPaPaPaPaPaPaPaPmTmTvHwbwbwbwPzhxexexQyjxTylxexezixgxiyixzwPymyuytxjxjsdwRxExVxGxEwRwRwRwRsdxBykxXxXyTxBywvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKvKyosGsGyovfveveyAyByByByCvevevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTvHwbwbwbvHmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTaPvGwbwbwbwPzkxexexeyvyvxexexexexCxexeyzwPyxxjxjxjxjsdwRxExVyFxEwRwRwRwRsdxBykxXxXyTxBsdvKvKsdvJvJvJvJvJvJvJvJvJsdsdsdsdsdsdsdsdsdsdsdsdvKvKsdsdsdsdsdsdsdsduXvevevevevevevevevevfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHvHvHvHvHwvaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwPzmzlztzsxexexeyDztztxgyEyHyGyIyIyIyIyIyIyIyIyIyIyIyIyIyIyIyIsdxBykxXyJyTxBvJvKvKsdvKyKyLyMyNvKyOyPyQsdyRyRyRyRyRyRyRyRyRyRsdvKvKsdaPaPaPaPaPaPaPuXuXuXuXuXuXuXuXuXuXuXaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvHmTaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbwPwPwPwPzNxexeySzOwPwPwPwPwPwPyIyUyVyWyIyXyYyYyYyYyYyYyYyYyZzasdxBxZTOTOTPxBvJvKvKvJvKyKzczdyNvKzezfzgsdyRyRyRyRyRyRyRyRyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbvHmTaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwPzQzPxgAexexexeAfwPAgAHVlVlBXyIyUyVznyIyYyYyYyYzozpyYyYyYyYyYsdxBxBxBxBxBxBsdvKvKvJvKvKvKvKvKvKvKvKzqsdsdsdsdsdsdsdsdsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbvHvHvHvHvHwvmTmTmTmTmTmTmTmTmTmTmTaPvGwbwbwbwPzNxezrxexexeySzSwPCtxQxSylCKyIyVyVyVzuyYyYzvyYzozpyYzwzxzyyYsdsdvJvJvJvJsdsdvKvKzzvKvKvKvKzAzBzCvKvKsdvKvKvKvKvKvKBwsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvHmTaPaPzEzFzGzEzFzFzHzIzJzFzKzLmTmTvHzMwbwbwPAexezryDztCMDlDhwPFFGmxSxeCKyIyVyVzRyIBByYzTyYzozpyYzwzxzyyYyIvKvKvKvKvKvKvKvKvKvJvKvKvKvKzCzCBwvKvKzUvKzVvKvKzVvKzCsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvGaPaPzEzWzXzYzZAaAbAaAaAaAbAcAdvGvGvGwbwbwbwPzrzrxgxgxgxgxgxgwPxgGnxeGwGuyIAhyVzRyIBByYyYyYTezpyYzwRpzyyYyIvKvKvKvKvKvKvKvKvKvJAiyNvKvKvKvKvKAjvKsdzcAkAlzCAmvKzqsdyRyRsdvKvKsdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvGaPaPAnAoApAoAqAoAoAoAoAoAoAoArAsxxAswbwbwbwPGmxeGKGxGxGxGxGxGLxgxgAtxgxgyIyIyIyIyIzozozozozozpyYzwRBzyyYyIvJvJAuvJvJsdwdvKvKsdAvyNvKvKvKvKvKsdsdsdsdvJvJvJvJvJsdsdAwAwsdvKvKsdaPaPaPaPAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTmTmTaPaPaPaPaPaPaPaPaPaPaPmTmTmTvHwbwbwbvGaPaPAyAzAAABzZACADACACACADAEAFvGvGvGwbwbwbwPGnxexexexexexexeGKGxHaxeGKHFHGyIyYyYyYzpzpzpzpzpyYyYyYyYyYyYyIAIAJvKAKALsdAMANAOAwAwBkAwsdvJAPvJsdAQAQAQARASATAUAVAQAQAQAwwdvKvKsdaPaPaPAxAxAWAWAWAWAWAWAXAXAXAWAWAWAWAXAXAXAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGaPaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPaPvGwbwbwbvHmTaPaPAyzFAZAyzFzFzHzIzJzFBaBbmTmTvHwbwbwbwPGnxexeySySySySySxexexexexeySHSyIBdyYyYyYyYyYyYyYyYyYyYyYyYBdyIvKvKvKvKvKsdvKvKvKEaAQAQBlsdvKvKvKsdAQAQAQARBeBfBgAVAQAQAQAwvKvKvKsdaPaPaPAxAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPBhaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGaPaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPaPvGwbwbwbvHvHvHvHvHwvmTmTmTmTmTmTmTmTmTmTmTaPvGwbwbwbwPGnxexeBjBjBjBjBjxexexexexexeCKyIzxyYzwzxzxzyyYyYzwzxzxzyyYzxyIvKvKvKvKvKsdvKvKvKEaBmBzBysdvKvKvKsdAQAQAQBnBoBpBqBrAQAQAQAwvKvKvKsdaPaPaPAxAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGaPaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPaPvGwbwbwbvHmTaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwPGnxexeyjxexexeyjxeGwHZGmxexeCKyIBsyYzwRBRpzyyYyYzwRBRpzyyYBsyIvKBtBuBvBCsdvJBxvJAwTzTAAwsdBAHQCksdAQAQAQAQAQAQAQAQAQAQAQAwvKvKvKsdaPaPaPAxAWAWAWBDAxAxAxAYAYAYAxBEBEAxAYAYAYAxAxAxAxAYAYAYAxAxAYAYAYAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHBFBFBFvHvHaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPvHvHBFBFBFvHvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHvHBFBFBFwPGnxeGwGmxexeGwHZGmCKwPwPBGBGwPyIBdyYyYyYyYyYyYyYyYyYyYyYyYBdyIBIsdsdsdsdsdAQAQAQAwEaEaAwsdsdsdsdsdAQAQAQAQAQAQAQAQAQAQAQAwvKvKvKsdaPaPaPAxBJAWAWAxAxBKBLBMBLBMBNBOBOBPBMBLBMBLBQBRBRBRBRBRBRBRBRBRBRAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPmj -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbBSwbwbvHvHmTaPaPaPaPaPaPaPaPaPaPaPmTvHvHwbBTBUBVwbvHvHaPaPaPaPaPaPaPaPaPaPaPaPaPvHvHwbwbBUBVwPHaxeCKwPAtAtwPwPGnCKwPIaxexeIjyIzxyYzwzxzxzyyYyYzwzxzxzyyYzxyIsdsdAQAQAQAQAQAQAQAQAQAQAQAwAwsdsdAwAQAQAQAQAQAQAQAQAQAQAQAwvKvKvKsdaPaPaPAxBJAWAWAxBKBZCaCaCaCaCbCcCcCdCaCaCaCbCeBQCfCfCfCfCfCfCfCfCfAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbCgwbwbwavHvHaPaPaPaPaPaPaPaPaPaPaPvHvHwawbwbChwbwbwavHvHaPaPaPaPaPaPaPaPaPaPaPvHvHwawbwbCiBVzrxexeCKwPGmxeCKwPGnCKwPKXxexeIjyIBsyYzwRBRpzyyYyYzwRBRpzyyYBsyIsdClAQAQAQAQAQAQAQAQAQAQAQClAwAwsdAwCmAQAQAQAQAQAQAQAQAQCmAwwdvKvKAxAxAxAxAxBJAWAWAYCnCoCcCcCcCcCcCcCcCcCcCcCcCcCpCnCqCqCqCqCqCqCqCqCqAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGwbCiwbwbwbwbvHvHvHvHvGvGvGvGvGvHvHvHvHwbwbwbCiBUCrwbwbwbvHvHvHvHvGvGvGvGvGvHvHvHvHwbwbwbwbBUwbzrxexeCKwPGnxeMYwPGnCKwPQSxexeIjyIyIDmDmDmDmyICxCxyIDmDmDmDmyIyIAQAQAQAQCyCzCACACACBCCAQAQAQAQAwAwAwAwAwAwAwAQAQAQAwAwAwAwAwsdvKvKCDAWAWAWAxBJAWAWAYCECoCcCcCcCcCcCcCcCcCcCcCcCcCpCECfCfCfCfCfCfCfCfCfAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwbwbwbwbCFxxCGCFxxCHCICJxxCGCFxxCGwbwbwbwbwbwbwbwbwbCFxxCGCFxxCHCICJxxCGCFxxCGwbwbwbwbwbwbwPQTxeGKxgGnRdTKxgHaGKwPTQHZHZUrwPCNCOCPCOCPEaAQAQEaCOCSCOCOCTAwAQAQAQCUCVCWCWCWCWCWCXCYAQAQAQAwCOCPCOCNCPEaAQAQAQEaCPCOCOCZsdvKvKAxDaAWDbAYBJAWAWAxCeBQDcDcDcDcDdCcCcDeDcDcDcDdBKBZCqCqCqCqCqCqCqCqCqAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwbwbwbwbCFxxCGCFxxCHDfCJxxCGCFxxCGwbwbwbwbwbwbwbwbwbCFxxCGCFxxCHDfCJxxCGCFxxCGwbwbwbwbwbwbwPwPzrzrxgUWUVxgxgzrzrwPwPwPwPwPwPEaEaEaEaEaEaAQAQEaEaEaEaEaEaAwAQAQDnDoCWCWCWCWCWCWCWDpCCAQAQAwEaEaEaEaEaEaAQAQAQEaEaEaEaEaAwTRTRAxAWDrDsAYBJAWAWAxAxCeBLBMBLBMBNBOBOBPBMBLBMBLBZBRBRBRBRBRBRBRBRBRBRAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGDtDuvGwbwbwbwbDvDwDxDvDwDyDzDADwDxDvDwDxwbwbvGDBDtDuvGwbwbDvDwDxDvDwDyDzDADwDxDvDwDxwbwbwbwbwbwbwbwbwbwbAQAQAQAQDCAQAQDCAQAQAQClAwClAQAQAQAQAQAQAQAQAQAQAQAQClAwAQAQDDCWCWCWDEDFDGCWCWCWDDAQAQAwCmAQAQAQAQAQAQAQAQAQAQAQAQCmAwAQAQAYDHDIAYAxAWAWAWBDAxAxAxAYAYAYAxDJDJAxAYAYAYAxAxAxAxAYAYAYAxAxAYAYAYAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGDKxxDLwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbDMDNDKxxDOwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbAQAQAQAQDCAQAQDCAQAQAQAQDPAQAQAQAQAQAQAQAQAQAQAQAQAQAQDPAQAQDQCWCWDEDRDRDRDGCWCWDSAQAQDPAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDTAWAWAWDUAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPDVmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdBhmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmd -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGxxxxDWwbwbwbwbwbwbwbwbwbwbDXwbwbwbwbwbwbwbwbDYDZvHxxDWwbwbwbwbwbwbwbwbDXwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbEaAQAQAQAwAQAQAwAQAQAQAQDPAQAQAQAQAQAQAQAQAQAQAQAQAQAQDPAQAQDQCWCWEbDREcDREdCWCWDSAQAQDPAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAYAWAWAWAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGEexxEfwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbEgxxEexxEfwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbAQAQAQAQDCAQAQDCAQAQAQAQDPAQAQAQAQAQAQAQAQAQAQAQAQAQAQDPAQAQDQCWCWEhDRDRDREiCWCWDSAQAQDPAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQAQDTAWAWAWDUAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGEjEkvGwbwbwbwbElEmEnElEmEoEpEqEmEnElEmEnwbwbvGErEjEsvGwbwbElEmEnElEmEoEpEqEmEnElEmEnwbwbwbwbwbwbwbwbwbwbAQAQAQAQDCAQAQDCAQAQAQClAwClAQAQAQAQAQAQAQAQAQAQAQAQClAwAQAQEtCWCWCWEhEuEvCWCWCWEwAQAQAwCmAQAQAQAQAQAQAQAQAQAQAQAQCmAxBYBYAxAxAxAxAxAWAWAWBDAxAxAxAYAYAYAxBEBEAxAYAYAYAxAxAxAxAYAYAYAxAxAYAYAYAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwbwbwbwbCFxxCGCFxxCHDfCJxxCGCFxxCGwbwbwbwbwbwbwbwbwbCFxxCGCFxxCHDfCJxxCGCFxxCGwbwbwbwbwbwbEyEyEzEzEyEAEAEAEyEzEzEyEyEAEAEyEyEaEaEaEaEaEaAQAQEaEaEaEaEaEaAwAQAQEDEECWCWCWCWCWCWCWEFEGAQAQAwEaEaEaEaEaEaAQAQEaEaEaEaEaEaAxDqDqPfOUSmPsAYBJAWAWAxAxBKBLBMBLBMBNBOBOBPBMBLBMBLBQBRBRBRBRBRBRBRBRBRBRAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwbwbwbwbCFxxCGCFxxCHCICJxxCGCFxxCGwbwbwbwbwbwbwbwbwbCFxxCGCFxxCHCICJxxCGCFxxCGwbwbwbwbwbwbEyEREMEMFaFpFoFoFqEMFrEyUXUZUYVaEyCSCNCOCPCPEaAQAQEaCZETCPCOCOAwAQAQAQEUEVCWCWCWCWCWEFCVAQAQAQAwEWCOCNCOCPEaAQAQEaCOCPCOEXETAxDqDqDqDqDqDqAYBJAWAWAxBKBZCaCaCaCaCbCcCcCdCaCaCaCbCeBQCfCfCfCfCfCfCfCfCfAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGwbEYEYwbwbwbvHvHvHvHvGvGvGvGvGvHvHvHvHwbwbwbCgBUCrwbwbwbvHvHvHvHvGvGvGvGvGvHvHvHvHwbwbwbBTBUwbEzEMEMEMEMEMEMEMEMEMGvEyVbEMEZVcEyFbEBEBEBEBFbFfFfFbEBEBEBEBFbFbAQAQAQAQEDCzFgFgFgCBEGAQAQAQAQFhFhFhFhFhFhFhFiFiFhFhFhFhFhFhAxDqDqDqDqDqDqAxBJAWAWAYCnCoCcCcCcCcCcCcCcCcCcCcCcCcCpCnCqCqCqCqCqCqCqCqCqAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbBUEYwbwavHvHaPaPaPaPaPaPaPaPaPaPaPvHvHwawbCiBUBVwbwavHvHaPaPFjFkFlFlFlFmFnaPaPvHvHwawbCgBUBVEzEMEMGIGyEMEMGIGyEMGvEyVdEMEMVeEyFsFtFtFtFtFtFtFtFtFtFtFtFtFsFbAwClAQAQAQAQAQAQAQAQAQAQAQClAwFhFuFvFvFvFvFwFwFwFwFvFvFvFvFuAxDqDqCsCjDqCsAYBJAWAWAYCECoCcCcCcCcCcCcCcCcCcCcCcCcCpCECfCfCfCfCfCfCfCfCfAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbCrwbvHvHmTaPaPaPaPaPaPaPaPaPaPaPmTvHvHwbCiBUwbwbvHvHmTaPFjFyFzFAFBFCFDFEFnaPmTvHvHwbwbBUwbEyJkEMGIGyEMEMGIGyEMGvEyVfEMEZVcEyFtFtFtFtFtFtFtFtFtFtFtFtFtFtFbAwAwAQAQAQAQAQAQAQAQAQAQAQAwAwFhFwFwFwFwFwFwFwFwFwFwFwFwFwFwAxDqDqCsCjDqCsAYBJAWAWAxCeBQDcDcDcDcDdCcCcDeDcDcDcDdBKBZCqCqCqCqCqCqCqCqCqAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHBFBFBFvHvHaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPvHvHBFBFBFvHvHaPmTFjFyFGFHFIFHFIFHFJFEFnmTaPvHvHBFBFBFEyHEEMGIGyEMEMGIGyEMGvEyVgViVhVjEyFtFtFKFLFMFNFtFtFKFOFPFNFtFtFbaPAwAwAwAwAwAQAwAQAwAwAwAwAwaPFhFwFQFQFQFQFwFwFwFwFQFQFQFQFwAxDqDqCsCjDqCsAxBJAWAWAxAxCeBLBMBLBMBNBOBOBPBMBLBMBLBZBRBRBRBRBRBRBRBRBRBRAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGaPaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPaPvGwbwbwbvGaPaPmTFRFIFIFIFSFTFUFIFIFIFRmTaPaPvGwbwbwbEyHEEMEMEMEMEMEMEMEMGvEyEyVbVkFVEyFtFtFKFWFXFNFtFtFKFYFZFNFtFtFbaPaPAwECGbAQAQCWAQAQGbEPAwaPaPFhFwFwFwFwFwFwFwFwFwFwFwFwFwFwAxDqDqCsCjDqCsAYAWAWAWBDAxAxAxAYAYAYAxDJDJAxAYAYAYAxAxAxAxAYAYAYAxAxAYAYAYAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGaPaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPaPvGwbwbwbvGaPaPmTGdGeGfGgGhGiGhGjGkGlGdmTaPaPvGwbwbwbEyHEEMEMFrImImImImImIpEyIrFqFaIsEyFtFtFtFtFtFtFtFtFtFtFtFtFtFtFbaPaPAwECGbAQAQCWAQAQGbEPAwaPaPFhFuFvFvFvFvFwFwFwFwFvFvFvFvFuAxDqDqCsCjDqCsAYAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGaPaPmTaPaPaPaPaPaPaPaPaPaPaPmTaPaPvGwbwbwbvGaPaPmTGdGoFRGpGqGrGqGsFRGoGdmTaPaPvGwbwbwbEyEAGtEMEyIxIuIzIyIuIDEyHEEMEMIKEyFtFtFKGzGAFNFtFtFKGBGCFNFtFtFbaPaPAwGDAQAQAQCWAQAQAQGEAwaPaPFhFhFhFhFhFhFhFiFiFhFhFhFhFhFhAxDqDqCsCjDqCsAxAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAWAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTmTmTaPaPaPaPaPaPaPaPaPaPaPmTmTmTvHwbwbwbvHmTmTmTGdFIGkGdGFGGGHGdGfFIGdmTmTmTvHwbwbwbEyHEEMEMILFqGJEMEMGJFaIVFqEMEMIWEyFtFtFKGMGNFNFtFtFKGOGPFNFtFtFbaPaPAwECGbAQAQCWAQAQGbEPAwaPaPFhGQGRGRGRGRGQGQGQGQGSGTGTGTGUAxDqDqCsCjDqCsAxAxAWAWAWAWAWAWGVGVGVAWAWAWAWGVGVGVAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPFRFIGkGWGXGYGZGWGfFIFRaPaPaPvHwbwbwbEyHEEMEMEMEMEMEMEMEMEMEMEMEMEMIZEyFtFtFtFtFtFtFtFtFtFtFtFtFtFtFbaPaPAwECGbAQAQCWAQAQGbEPAwaPaPFhGQGQGQGQGQGQGQGQGQGQGQGQGQGQAxDqDqDqDqDqDqAxAxAxAYAYAYAxAYAYAYAxAYAYAYAxAYAYAYAxaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPFjFyGeGkHbGXHcGZHbGfGlFEFnaPaPvHwbwbwbEyHEEMEMEMEMEMEMEMEMEMEMEMEMEMIWEyFtFtFtFtFtFtHdHdHdHdHdHdHdHdFbaPaPHeHeHeHfHfHgHfHfHeHeHeaPaPFhHhFhHiFhHjFhGQGQFhHkFhHlFhHmAxDqDqDqDqDqDqAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGvGvGHnHoFIGkHpFRHqFRHrGfFIHoHnvGvGvGwbwbwbEyHEEMFrImImImJkFrImImJkEMEMEMIZEyHsHtHtFtFtHuHvHvHvTSHvHvHvHvFbaPaPHeHwHxHfHxHxHxHfHxHwHeaPaPFhHyFhHyFhHyFhGQGQFhHyFhHyFhHyAxDqDqCLCLCLCLAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbHzxxHzHAFIFIFIHBHCFIFIHBFIFIFIHAHzxxHzwbwbwbEyEAEMGvEAEAEAHEGvHDFVHEFrJmJlJnEyHHHIHJFtFtHuHKHLHLHLHLHLHLHLFbaPaPHeHxHMHNHxHxHxHNHOHxHeaPaPFhFhFhFhFhFhFhGQGQFhFhFhFhFhFhAxDqDqDgDgDgDgAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbHzxxHzHPFIFIFIFIFIFIFIFIFIFIFIHPHzxxHzwbwbwbEyJoEMFaJpIvJqFqFaJHEyJPJOEyEyEyEyEQHTHUFtFtHuHLHLHLHLHLHLHLHLFbaPaPHeHfHxHfHxHxHxHfHxHfHeaPaPFhHVGQHVGQHVGSGQGQHWHVGQHVGQHVAxDqDqDqDqDqDqAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGvGvGHnHXFIGkGWGfFIGkGWGfFIHYHnvGvGvGwbwbwbEyJoEMEMEMEMEMEMEMJQEyJPJRKeKeKfEyIbIcIdFtFtHLHLHLIeIfIhIgHLHLFbaPaPHeHxHxHxHxHxHxHxHxHxHeaPaPFhGQGQGQGQGQGQGQGQGQGQGQGQGQGQAxSpDqDqDqDqAYAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPGWGfFIGkIiGfFIGkIiGfFIGkGWaPaPvHwbwbwbEyJoEMEMEMJrHREMEMKgEyJPEMIkIlKqEyFbFbFbFbFbFbFbFbFbFbFbFbFbFbFbHeHeHeHxHxHxHxHxHxHxHxHxHeHeHeFhInGQInGQInGSGQGQHWInGQInGQInAxAYAYAYAYAYAYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTmTvHwbwbIovHaPaPIiGfFIGkIiGfFTGkIiGfFIGkIiaPaPvHwbwbwbEyKCEMEMEMEMEMEMEMKDEyJPEMEMIqKqEyKFKEKEKEKJHeHxHxHxHxHxHxHxHxHxHxHxHeHeItHeHeHxHeHeItHeHeHxHxHeHeHeFhFhFhFhFhFhFhFhFhFhFhFhFhaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPHbGfFIGkIiGfFIGkIiGfFIGkHbaPaPvHwbwbwbEyKKEMEMEMJtIwEMEMKLEyKPKOEMKQKUEyKVEMEMEMKWHeHxHeHeHeHeIAHeHeHeHxHxHxHxHxHxHeHxHeHxHxHxHxHxHxHxHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGvGvGHnIBFIGkHbGfFIGkHbGfFIICHnvGvGvGwbwbwbEyHEEMEMEMFrImJkEMExEyEyEyIEEyEyEyKVEMEMEMKWHeHxHeIFIGIGIGIGIHHeHeHeHeHeHeHeHeIIHeHeHeHeHeHeHeHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbHzxxHzHAFIFIFIFIFIFIFIFIFIFIFIHAHzxxHzwbwbwbEyHEEMFrImKYEyEyIJEyEyLaKZEMJRLbEyKZEMEMEMOQHeHxHeIFIGIGIGIGIHHeIMINIOINIPIQIQIQIQIQIPIQIPIQIRHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbxwxxxyaPaPaPaPaPaPaPaPaPaPaPaPaPxyxxxwwbwbwbHzxxHzHPFIFIISFIFIFIFIFIISFIFIITHzxxHzwbwbwbEyEyIUEyHDEyEyOTEMPiEyJPEMEMEMEMIXEMEMIYEMRWHeHxHeJaIGIGIGIGJbHeIQJcJcJcJcJcIQIQIQJcJcJcJcJdJeHeHxHeHeHeHeHeHeHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGwbwbwbvGvGvGJfFRJgJhFkFmJiFkFmJhJgFRJjvGvGvGwbwbwbEyTVEMTXTWTYEyTZEMUaEyKcUbUeUdUfEyUhUgUgUgUiHeHxHeJaJsKdKdIGIGJuIQIQJvJwJvIQIQIQIQIQJvJwJvJxIQHeHxHxHxHxHxHxHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHaPaPaPmTmTmTmTmTmTmTmTmTmTmTaPaPaPvHwbwbwbvHaPaPHnJyJzHnJAJBJCJDJEHnJFJGHnaPaPvHvIvIvIEyTVEMUkUjUlEyUmEMUnEyEyEyEyEyEyEyEyEyEyEyHeHeHxHeHeHeHeHeHeHeHeIQJcJcJcJcJcIQIQIQJcJcJcJcJIIQHeHeHeHeHeHeHeHxHeHeHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbwbvHmTmTmTmTaPaPaPaPaPaPaPaPaPmTmTmTmTvHwbwbwbvHmTmTHnJJJJHnJKJLJCJCJMHnJJJJHnmTmTvHwbwbwbEyEyJNEyEAEAEyEyIJEyEyUpUoUqEAFcESJpUsUsUtHeHxHxHeHeJSJSJSJSJSHeJTJTJTJTJTJTJTJTJTJTJTJTJTJUJTHeJVJVJVJVJVHeHxHxHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPwvvGvGvGwvaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPwvvGvGvGwvaPaPHnJWJXHnJYJCJZKaKbHnKHKpHnaPaPwvwbwbwbEyUuEMTXUvUwEyHEEMFaJpFqEMFaEAFqEMEMEMEMGvHeHxHeHeHeKhKhKhKhKhHeKiKjKjKjKjKjKjKjKjKjKjKjKjKkKiHeKhKhKhKhKhHeHeHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvYvZvYvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvYvYvYvGaPaPJfKlKlHnKIKnJCKoLAHnKlKlJjaPaPvGwbwbwbEyUxEMEMEMUyEyHEEMEMFrImEMEMKrEMEMEMEMEMGvHeHxHeKsKtKuKuKuKuKuKvKjKjKjKjKjKjKjKjKjKjKjKjKjKkKjKvKwKwKwKwKwKtKxHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGvGvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGvGvGaPaPKyKzKzKAJhKlKlKlJhKAKzKzKBaPaPvGwbwbwbEyUzEMEMIYUAEyUBEMEMGvUCEMEHEAJkEMEZEMEMGvHeHxHeKsKtKuMiKuMiKuKvKjKjKjKjKjKjKjKjKjKjKjKjKjKkKjKvKwMMKwMMKwKtKxHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPKyKzKzKzKBaPaPaPaPaPaPvHwbwbwbEyTVEMEMEMUDEyUEEMEMUFEIEMEJEAUHUGUJUIUIUKHeHxHeKsKtKuKuKRKuKuKvKjKjKjKjKjKjKjKSKjKjKjKjKjKkKjKvKwKwKTKwKwKtKxHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbEyUMULUOUNUPEyURUQUTUSUUImKYEyEyEyEyEyEyEyHeHxHeKsKtKuKuKuKuKuKvKjKjKjKjKjKjLcLdLcKjKjKjKjKkKjKvKwKwKwKwKwKtKxHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbEyEyEyEyEyEyEyEyEyEyEyEyEyEyEyaPaPaPaPaPaPHeHxHeKsKtKuMiKuMiKuKvKjKjKjKjKjKjLeLfLgKjKjKjKjKkKjKvKwMMKwMMKwKtKxHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbvHaPaPaPaPaPaPHeHxHeHxKtKuKuKuKuKuKvKjKjKjKjKjKjKjLhKjKjKjKjKjKkKjKvKwKwKwKwKwKtHxHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbwbvHaPaPaPaPaPaPHeHxHeLiHeLjLjLjLjLjHeKiKjKjKjKjKjKjLhKjKjKjKjKjKkKiHeLjLjLjLjLjHeLiHeHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGwcwbwbwbwbwbwbwbwbwbwbwbwbwbwbwcvHaPaPaPaPaPaPHeHxHxHxHeLkLkLkLkLkHeJTJTJTJTJTJTLlLmLlJTJTJTJTJUJTHeLnLnLnLnLnHeHxHxHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGvGvGvGvGvHvHvHvHvGvGvGvGvHLoLovHvHaPaPaPaPaPaPHeHeHeHxHeHeHeHeHeHeHeLpLqLqLqLqLqLrLsLpLqLqLqLqLtLpHeHeHeHeHeHeHeHxHeHeHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHvIvIvHaPaPaPaPaPaPaPaPaPHeHxHxHxHxHxHxHxHeLpLpLuLpLuLpLpLvLwLpLuLpLuLxLpHeHxHxHxHxHxHxHxHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbvGaPaPaPaPaPaPaPaPaPHeHeHeHeHeHeHeHxLyLpLpLpLzLzLzLpLpLpLzLzLzLzLzLpLyHxHeHeHeHeHeHeHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPHeHeHeMUMUMULBLCLDLELpLFLGLHLILJLKLLHeHeHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLMLMLMLMLMLMLMLMLMLMLMLMLMLMLMLMLMLMLMLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPHeHeHeHeHeHeHeHeHeHeHeHeHeHeHeHeHeaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLOLNLNLNLPLPLPLNLNLPLPLPLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLQLNLNLNLNLNLNLNLNLNLNLNLNLNLNLNLNLNLRLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvHwbwbvHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNLNLNLNLNLNLNLNLNLNLNLSLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNLNLNLNLNLNLNLNLNLNLNLQLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPLTLTLTLTLTLTLTaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNLNLULSLNLNLNLNLNLNLNLNLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPLTLTLTLTLTLTLTaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPvGwbwbvGaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNLNLNLVLVLNLNLNLNLNLNLNLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPLTLTLTLTLTLTLTLTLTaPLWLXLXLXLXLXLXLXLXLXLXLXLXLYvGwbwbvGLWLZLZLZLZLZLZLZLZLYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNLNLVMaMbLVLNLNLNLNLNLNLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPMcLZLZLZLZMdLXLXLXMdLXLXLXMdMeLTLTLTLTLTLTLTLTLTMeMfMgMhMhMhMhMhMhMhMhMhMhMhMfvHvIvIvHMfQFMjMkMlMlMmMnMoMpLYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNLNLVMqMrLVLNLNLULNMsLNLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPMtMuMgMvMwMfMxMxMxMfMyMyMyMfMeMzMzMzMzMzMzMzMzMzMeMfMhMhMhMhMhMhMhMhMhMhMhMhMAMBMCMCMBMDMEMEMEMFMGMHMEMEMIMfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNLNLNLVLVLNLNLNLNLNLNLNLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPMJMuMgMgMgMfMxMxMxMfMyMyMyMfMeMzMzMzMzMzMzMzMzMzMeMfMhMhMhMhMhMhMhMhMhMhMhMhMfMKMLMLMKMfQKMNMEMEMEMEMEMEMOMfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLSLNLNLNLNLNLNLNLNLNLNLNLNLNLQLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPMJMuMgMgMgMfMxMxMxMfMyMyMyMfMeMzMzMzMzMzMzMzMzMzMeMfMhMhMhMhMhMhMhMhMhMhMhMhMfMLMPMPMLMfMEMEMEMQMRMSMEMEMTMBLZLZLYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLULSLNLNLNLNLNLNLNLNLNLNLNLNLSLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPMJMuMgMgMgMfMxMxMxMfMyMyMyMfMeMzMzMzMzMzMzMzMzMzMeMfMgMhMhMhMhMhMhMhMhMhMhMhMfMLMPMPMLMfReMVMEMWMXGaMEMEMEMEMEMZMfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNLNLNLNLNNaLNNbLNNbLNNcLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPNdMuMgMgMgMfMxMxMxMfMyMyMyMfMeMzMzMzMzMzMzMzMzMzMeMALZLZLZLZMBNeNeMBLZLZLZLZMDMLMPMPMLMfNfMEMEMEMEMEMEMEMEMEMEMZMfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMLNLNLNNgLNLNLNLNLNLNLNLNLNLNLNLNLNLNLNLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPMcLZLZMBNhMBNiMBNjMBNiMBNkMBNiMBMeMBNiMBNlMBNiMBMeMBMDNmMLMLMLMLNnMLMLMLMLMLMKMfMLMPMPMLMfReMVMEMENoNoNpNqNqNrMBLZNsLZLYaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRLMNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtNtLMaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPNuMKMLMLMLMLMLMLNvMLMLMLNwMLMLMLMLMLMLMLNxMLMLNyNzNAMBMLMPMPMPMPMPMPMPMPMPMPMLMBMLMPMPMLMBNBNCNDNDNBNENCMBLZLZMDNFMPNGNHaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNINJNJNJNJNJNJNJNJNJNJNJNJNJNJNJNJNJNJNJNIaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPNuMLMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMLNKMLMPNLNLNLNLNLNLNLNLMPMLNKMLMPMPMLNKMLMLMLMLMLMLMLMLMLMLNMNNNONPNQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPNuMLMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPNTMPMPNUNUNUNUNUNUNUNUMPMPNTMPMPMPMPNTMPMPMPMPMPMPMPMPMPMLNVMLMPNWNQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPNuMLMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMPMLNKMLMPNNNNNNNNNNNNNNNNMPMLNKMLMPMPMLNKMLMLMLMLMLMLMLMLMLMLNMNLNONXNQaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -mdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdaPaPaPaPaPaPaPaPaPaPNuMKMLMLMLMLMLMLNYMLMLMLNZMLMLMLOaMLMLMLObMLMLMLMLMKMBMLMPMPMPMPMPMPMPMPMPMPMLMBMLMPMPMLMBNBNCOcNBNCMdNBNCNTNTMDOdMPOeOfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRaRaRaRaRaRaRaRaRaRaROgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgOgaRaRaRaRaRaRaRmdaPaPaPaPaPaPaPaPaPaPOhLZLZMBNhMBMdMBOiMBMdMBOjMBMdMBOkMBMdMBOlMBMdMBOmMBMDMLMLMLMLMLOnMLMLMLMLMLMKMfMLMPMPMLMfOoOpOqOrOsMfOtMPMPMPMBLZMdLZOuaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjmjmjmjmjmjmjmjOvOvOvOvOvOgOwOxOyOgOvOvOvOvOvOvOvOvOvOvOvmjmjaRmjmjmjmjmdaPaPaPaPaPaPaPaPaPaPaPMtMuMgMgMgMfOzOzOzOAOBOBOBOAOCOCOCOAODODODMfMPMPMPMALZLZLZLZMBOEOEMBLZLZLZLZMDMLMPMPMLMfOFOqOqOqOFMfOGMPMPMPMPOHMfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjmjmjmjmjmjmjmjOvOvOvOvOvOgOIOxOxOgOvOvOvOvOvOvOvOvOvOvOvmjmjaRmjmjmjmjmdaPaPaPaPaPaPaPaPaPaPaPMJMuMgMgMgMfOzOzOzOAOBOBOBOAOCOCOCOAODODODMfMPMPMPMfOJOJOJOJOJOJOJOJOJOJOJMgMfMLMPMPMLMfOKOLOqOqOqMfOtMPMPOtMPOtMfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjmjmjmjOvOvOvOgOgOgOgOvOgOgOgOgOMOgOgOgOgOgOgOgOvOvOvOvOvmjmjaRmjmjmjmjmdaPaPaPaPaPaPaPaPaPaPaPMJMuMgMgMgMfOzOzOzOAOBOBOBOAOCOCOCOAODODODMfMPMPMPMfOJOJOJOJOJOJOJOJOJOJOJOJMfONNLNLONMfNBNCOONBNCMfOGMPOtMBLZLZOuaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjOvOvOvOvOPOxOxOxOxOxOxOxOxOxOxOxOxOxOxOxOxOxOgOvOvOvOvOvmjmjaRmjmjmjmjmdaPaPaPaPaPaPaPaPaPaPaPMJMuMgMgMgMfOzOzOzOAOBOBOBOAOCOCOCOAODODODMfMPMPMPMfOJOJOJOJOJOJOJOJOJOJOJOJMfORORORORMfOSOqOqOqOSMfOtMPOGMfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjOvOvOxOPOPOPOxOxOxOxOxOxOxOxOxOxOxOxOxOxOxOxOgSyOVOvOvOvmjmjaRmjmjmjmjmdaPaPaPaPaPaPaPaPaPaPaPNdMuMgOWOXMfOzOzOzOAOBOBOBOAOCOCOCOAODODODMfOYOZPaMfOJOJOJOJOJOJOJOJOJOJOJOJMAMBNBNCMBMDOqOqOqOqOqMfOGMPOtMfaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjOvOvOPOPOPOvOvOvOgOgOgOgOMOgOgOgOgOMOgOxOxOxOMPbPcOvOvOvmjmjaRmjmjmjmjmdaPaPaPaPaPaPaPaPaPaPaPOhLZLZLZLZNiLXLXLXNiLXLXLXNiLXLXLXNiLXLXLXNiMeMeMeMfOJOJOJOJOJOJOJOJOJOJOJMgMfaPaPaPaPMfOSOqOSOqOSMfOtMPPdOuaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjOvOPOPOvOvOvOvOvOvOvOvOgOxOxOIOgPeOxOgOxOxOxOMPbRwOvOvOgmjmjaRmjmjmjmjmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPOhLXLXLXLXLXLXLXLXLXLXLXLXOuaPaPaPaPOhLZLZLZLZLZNiLZLZOuaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjOvOPOvOvOvmjmjOvOgOgOgOgPgOxOwOgPgOwOgOxOxOxOgPbPbPbPhOgmjmjaRmjmjmjaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjmjmjOvOPOPOvmjmjmjOvPjPkPkOgOgOgOgOgOgOgOgOxOxOxOgPbPbPbPlOgmjmjaRmjmjmjaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNSNRaR -aRmjOvOPOPOPOPOvOvmjmjOvPmPnPmOMOxOxOxOxOxOxOxOxOxOxOgPoPpPqOgOgmjmjaRmjmjmjaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRaR -aRmjPrOPOPOPOPOPOvmjmjOgPyPmPmOMOxOxOxOxOxOxOxOxOxOxOgOvOvOvOvOvmjmjaRmjmjmjaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaRaR -aRmjPuPvPwOPPtOPOPmjmjOgPyPzOgOgOgOgOgOgOgOgOgOgOMOgOgOgOgOgOgOgOgOgOgmjmjaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjPAOPPwOPPwOPOPmjmjOvOvOvOgOxOxOxOxOxOxOgPCPDPDPDPEOgOxOxOxOxOxOxOgmjaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjOvOPPwOPPxOPOPmjmjaPaPmjOgOxOwOxOxOxOxOgPDPDPHPDPDOgOxOxOxOxOwOxOgmjaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjOvPIOPOPOPPKOPmjmjaPaPmjOgOxOxOxOxOxOxOMPDPDPLPDPDOMOxOxOxOxOxOxOgmjaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjOvOvOPOPOPOPOvmjmjmSaPaPOgOxOxOgPMPNPOOgPDPPPBPDKmOgPMPNPOOgOxOxOgaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjOvOvOvOvPRPSOvmjmTmSaPaPOgOxOxOgaPaPaPOgOgPMPNPOOgOgaPaPaPOgOxOxOgaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjOvOvOvOvOvOvmjaPaPaPaPaPPTPUPUPVaPaPaPaPaPaPaPaPaPaPaPaPaPPTPUPUPVaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjmjmjmjmjaPaPaPaPPTPWPXPVaPaPaPaPaPaPaPaPaPaPaPaPaPPTPWPXPVaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjmjmjmjaPaPaPaPaPPTPWPXPVaPaPaPaPaPaPaPaPaPaPaPaPaPPTPWPXPVaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjmjmjmjaPaPaPaPaPPYPUPUPZaPaPaPPYaPaPaPaPaPPZaPaPaPPYPUPUPZaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPaPaPaPaPPFPGQcPFaPaPaPPFQdQeQeQeQfPFaPaPaPPFQgPJPFaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPaPaPaPaPPFQiQjPFaPaPPYPFPFQkPQQmQaPFPZaPaPPFQoQpPFaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPaPaPaPaPPFQqQrPFaPaPPFPFQsQtQuQtQvPFPFaPaPPFQwQxPFaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPaPaPaPaPPFQyPFPFPFPFPFQzQAQAQAQAQAQBPFPFPFPFPFQCPFaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPaPaPaPaPPFQDQESUQGQHPFQIQAQAQAQAQAQIPFQJTCQLQMQNPFaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjaPaPaPaPaPaPaPaPaPaPaPPFQOQPQPQPQQPFQdQeQfQUQdQeQfPFQVQPQPQWQOPFaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjaPaPaPaPaPaPaPaPaPaPaPQXQOQPQPQPQPQUQAQAQAQAQAQAQAQUQPQPQYQPQOQXaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPaPaPaPaPaPaPQZRaQPRbRPQPPFRcGcQAQAQAQATDPFQPRfQPRgQOQZaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPaPaPaPaPaPaPRhRaQPQPPFRiPFPFPFRjTERlPFPFPFRiPFRmRnRoRhaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPaPaPaPaPaPPYPFTFRqRqPFRrRsRrQXRtQlRvQXUcRxRyPFRzRATGPFPZaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRCRCRCRCRCRCRCRCRCRCRCRCRDRCRCRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPmjmjaPaPaPREPFRFRFPFPFRrRrRrQZRtRkRvQZRyRyRGPFPFRFRFPFRHaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRIRJRKRLRMRNRCROTHRQRCRRRSRSRTRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPmjmjaPaPaPaPRERURURHPFRVQnRrRhRXQARXRhRyRyRYPFRERURURHaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKRKRKRKRKRKRZSaSbSaScRSRSRSSdRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPmjmjaPaPaPaPaPaPaPaPPFRrRrRrPFPFQUPFPFSeRySfPFaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCSgSgRKRKRKShRCSaSaSiRCRCRCRCRCRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPPFRrRrSjPFSkQASlPFRyRyTIPFaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKRKRKRKRKSnRCSoSoEKRCSqSrSsStRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPPFPFSuRrPFSvQASwPFSxTJPFPFaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCSzSzRKRKRKSARCSoSoSoSBSoSoSoSCRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPREPFPFPFPFSDSESFPFPFPFPFRHaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKRKRKRKRKSGRCSHSISJRCSKSLSMStRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPmjmjaPaPaPaPaPaPaPaPREPFRFRFRFRFRFPFRHaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKRKRKRKRKShRCRCRCRCRCRCRCRCRCRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPRERURURURURURHaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNSOSPSQRKSRSSSTSRTkSVSWSWSVRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNSXSYSQRKSZSZSZSZTaSaSaSaSaRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNTbTcSQRKSZSZSZSZSZSZSZSZSZRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPaPaPaPaPaPaPmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKSNTdTTSQRKSZSZSZSZSZSZTfTgThRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRKRKRKRKRKRKSZSZSZSZSZSZSZSZSZRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjmjmjaPaPaPaPaPaPaPmjmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCTiTjTjTjTjTjTjTjTjTjTjTjTjTjTlRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjaPaPaPaPaPaPaPaPaPaPmjmjmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCTmTnTnTkToTpToTkTqTqTrTkTsTtRSRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aRmjaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCTnTuTmTaToToToTaTvTwTqTaTxRSTyRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -mdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdmdaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPRCRCRCRCRCRCRCRCRCRCRCRCRCRCRCRCRCaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP -aPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaPaP +aaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaaeaamaaiaaoaalaahaajaapaaqaaraasaataauaavaawaaxaayaaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaazaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaR +aajaaTaaUaaVaaWaaXaaYaaZabaabbabcabdabeabfabgabhaaYaaXabcaaUaaVaaZabdaaWabfabbabhabeaaZabcaabaauaavaawabiabjabkablabmabeaaXabfaaZabcabbabhabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabhabmaazaaEabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaaNaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQabrabsaaQabrabsaaQabrabsaaQabrabsaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabvabuabuabuabuabuabuabwabxabyabxabyabxabxabyabxabyabxabwabzabAabAabAabAabAabAabAabAabAabwabBabCabDabDabDabDabDabDabDabDabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabJabKabKabKabKabKabLabM +aamaaWabbabeaaZabgaaUaaYabcaaXabfabaabhaaVabdaaTaaUabgabfabbabeaaYabaaaZaaVaaXaaTabhaaYabfaaeaaraasaataauaavaawabiabNabhabgaaVaaYabfaaXaaTabhabgaaVaaYabfaaXaaTaaTabhabgaaVaaYabfaaXaaTaaTabNaazaaBabkablabqabnaboabpaaqaaraasaasaataauaavabiabjabkablabqabnaboabpaaqaaraaKaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabOabuabwabPabQabPabQabPabQabPabQabPabQabwabRabRabRabRabRabRabRabRabRabRabwabBabSabTabTabTabTabTabTabTabTabwabEabUabEabEabEabEabEabEabUabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM +aadaaZaaXabhaaYabdabbaaUabfaaUaaVabcaaTabeabaaaWabbabdaaVaaXabhaaUabcaaYabeabgaaWaaTaaUaaVaahabiabjabkablabqabnaboabYaaTabdabeaaUaaVabgaaWaaTabdabeaaUaaVabgaaWaaWaaTabdabeaaUaaVabgaaWaaWabYaazaaHaaqaaraasaataauaavaawabiabjaawabiabjabkaboabpaaqaaraasaataauaavaawabiaaBaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQabrabsaaQabrabsaaQabrabsaaQabrabsaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabOabuabuabuabuabuabuabuabuabwabQabPabZacaacbacaacbaccabQabPabwabRabRabRabRabRabRabRabRabRabRabwabBacdabTabDaceabDabTacfacgachabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabGaciabVabWabWabWabWabWabXabM +aalaaYabgaaTaaUabaaaXabbaaVabbabeabfaaWabhabcaaZaaXabaabeabgaaTabbabfaaUabhabdaaZaaWabbabeaagaboabpaaqaaraasaataauacjabfaaUabaaaTabdaaYaaVabfaaUabaaaTabdaaYaaVaaVaaWaaUabaaaTabdaaYaaVaaVacjaazaaNaawabiabjabkablabqabnaboabpaataauaavaawaauaavaawabiabjabkablabqabnaboaaHaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabvabuabuabuabuabwabQabPackaclacmacmacnacoacbacaabwacpacpacpacpacpacpacpacpacpacqabwabBacdacracsactacuacvacwacxacyabwabEabEabEabUabEabEabUabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM +aaoaaUabdaaWabbabcabgaaXabeaaXabhaczacAacBacCabYacDacEacFacGaaWaaXaaVabbaaTabaaaYaaZaaXabhaacabiabjabkablabqabnaboacHabeaaXabfaaZabcabbabhaaVabbabcaaWabaaaUabeabeaaVabbabcaaWabaaaUabeabeacHaazaaHaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiaaBaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabvabuabuabuabvabuabuabuabwabPabQacIacnacJacJacnacnacnacnabwacKacKacLacMacMacMacMacNacKacOabwabBacdacPacQacQacQacRacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIabVabWabWabWabWabWabXabM +aababbabaaaZaaXabfabdabgabhabgacCacUacVacVacVacVacVacVacVacFacEaaWabeaaXaaWabcaaUaaYabgaaTaaiaasaataauaavaawabiabjabmabhabgaaVaaYabfaaXaaTabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabhabmaazaaCablabqabnaboacWacXacXacYacZacWacXacYacWacXacYacYacYabnaboabpaaqaaraasaaLaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabuabuabwabPabQacIacnacJacJacnacnacnacnabwacKacKadaadbadbadbadbadcacKacOabwabBacdaddadeadfadeadgacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM +aaeaaXabcaaYabgaaVabaabdaaTadjadkacVacVacVacVacVacVacVacVacVacDadlabhabgaaZabfabbaaUabdaaWaafabqabnaboabpaaqaaraasabNaaTabdabeaaUaaVabgaaWaaWabeaaXabfaaZabcabbabhabhaaXabfaaZabcabbabhabhabNaazaaLaauaavaawabiadmadnadnadoadpadqadradsadtaduadvadvacYadmabiabjabkablabqaaFaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabOabuabuabuabvabwabQabPackaclacmacmacnadwadxadyabwacKacKadaadbadbadbadbadcacKacOabwabBacdadzadAadfadAadBacwacSacTabwabEabEabEabUabEabEabUabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM +aahabgabfaaUabdabeabcabaaaWaczacVacVacVacVacVacVacVacVacVacVacVabmaaTabdaaYaaVaaXabbabaaaZaanabpaaqaaraasaataauaavabYabfaaUabaaaTabdaaYaaVadCadDadEadFadGadHadIadJadKabgaaVaaYabfaaXaaTaaTabYaazaaOabiabjabkabladLadMadMadNadOadOadnadoadpadradsadsadsadmablabqabnaboabpaaIaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabOabuabuabuabuabuabuabuabwabQabPadPadyadxadyadxadQabQabPabwacKacKadaadbadbadbadbadcacKacOabwabBadRadSadfadfadfadTacwacSacTabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabGadUadhabWabWabWabWabWadiabM +aagabdaaVabbabaabhabfabcaaZacUacVacVacVacVacVacVacVacVacVacVacVacGaaWabaaaUabeabgaaXabcaaYaakabkablabqabnaboabpaaqacjaaVabbabcaaWabaaaUabeadVadWadXadYadZaeaaebaebadKabdabeaaUaaVabgaaWaaWacjaazaaJaasaataauaavadmadqadqadradsadqadradsadtaecaedaedaedaeeaavaawabiabjabkaaDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabuabuabuabuabuabuabuabuabuabuabwabPabQabPabQabPabQabPabQabQabPabwacKacKaefaegaegaegaegaehacKaeiabwabBacdadzadAadAadAadBacwaejaekabwabEabUabEabEabEabEabEabEabUabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIadhabWabWabWabWabWadiabM +aacabaabeaaXabcaaTaaVabfaaYacCacVacVacVacVacVacVacVacVacVacVacVaaxaaZabcabbabhabdabgabfaaUaaaaataauaavaawabiabjabkacHaaUaaVaaZabdaaWabfaeladJaemaenaeoadXadWaepaepadHaelaaVaaZabdaaWabfabbacHaazaaDabqabnaboabpaeqaeraeraecaedadnadoadpadqadoadpadpadpaesabpaaqaaraasaataaMaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtabvabuabuabuabOabuabuabuabuabOabwabxabyabxabyabxabxabyabxabyabxabwaetacKacKacKacKacKacKacKacKaeuabwabBabCaevaewaewaewaexacwabDabDabwabEabEabEabEabEabEabEabEabEabEabwabFabFabFabFabFabFabFabFabFabFabwabGabHabIaeyaezaezaezaezaezaeAabM +aaiabcabhabgabfaaWabeaaVaaUadkacVacVacVacVacVacVacVacVacVacVacVacEaaYabfaaXaaTabaabdaaVabbaajabjabkablabqabnaboabpabNabbabeaaYabaaaZaaVaeBaenaeaadZaeCaeDaeEaeFaeFaenaeBabeaaYabaaaZaaVaaXaaxaazaaIaaraasaataauaeGadqadqadradsadtaduadvaeraecaedaedacYaeHaauaavaawabiabjaaCaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeIaeIaeIaeIaeIaeIaeIaeIaeIaeIaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaRaeJaeJaeJaeJaeJaeJaeJaeJaeJaeJaaR +aafabfaaTabdaaVaaZabhabeabbaeKacVacVacVacVacVacVacVacVacVacVacVaeLaaUaaVabgaaWabcabaabeaaXaamaaraasaataauaavaawabiabYaaXabhaaUabcaaYabeaeMadYaepaeaaeoaebadWadZaebaeFaeMabhaaUabcaaYabeabgabmaazaaBabkablabqabnaeNaeqaeqaeOacWacXacYaeqaeOacWacXacXacXabqabnaboabpaaqaaraaKaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQaeQaeQabwaeRaeRaeRaeRaeRaeRaeRaeRaeRaeSabwaeTaeUaeVaeWaeXaeWaeYaeZaeXaeZabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdafeaffaffaffaffaffafgabwafhafhafiafiafiafiafiafiafiafiabM +aanaaVaaWabaabeaaYaaTabhafjafkacVacVacVacVacVacVacVacVacVacVacVaflacHabeabdaaZabfabcabhabgaadaavaawabiabjabkablabqacjabgaaTabbabfaaUabhafmaenaeaadZaeCaeDaeEaeFaepaebafmaaTabbabfaaUabhabdabNaazaaFaboabpaaqaaraasaataauaavaasabkablabqabnabiabnaboabpaaqaaraasaataauaavaaOaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePafnaePaePaePaePafnaePabwaeQafoaeQaeQaeQaeQafoaeQaeQaeQabwaeRaeRafpafqafqafqafraeRaeRaeRabwaeTaeUaeVafsaftafsaftafuaftafuabwafaafaafvafaafaafaafaafaafaafaabwafbafcafdafwafxafxafxafxafxafyabwafiafiafiafiafzafzafzafiafiafiabM +aakabeaaZabcabhaaUaaWaaTadjacVacVacVacVacVacVacVacVacVacVacVacVacVaayabhabaaaYaaTaaVaaWabaaaoablabqabnaboabpaaqaaracHabdaaWaaXaaVabbaaTafAaeFadWadXadYadZaeaaebaeCaepafAaaWaaXaaVabbaaTabaabYaazaaKaataauaavabqacXacXacXacYacZacWacXacYacWacXacYacYacZaavaawabiabjabkablaaEaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQafBaeQabwaeRaeRafCafCafCafCafCaeRaeRaeRabwaeTaeTafDafsaftaeXaeXaeXaftafuabwafaafaafaafaafaafaafEafFafaafaabwafbafbafGafwafxafxafxafxafxafyabwafiafiafiafHafIafIafIafiafiafiabM +aaaabhaaYabfaaTabbaaZaaWafJacVacVacVacVacVacVacVacVacVacVacVacVacVacDaaTabcaaUabeabeaaZabcaababnaboabpaaqaaraasaataaxabaaaZabgabeaaXaaWafKaebaemaenaeoadXadWaepaenadXafKaaZabgabeaaXaaWabcaaxaazaaMaavaawabiadmacWafLafLafMafNafOafPafQafRafSafTafTadmabiabjabkablabqabnaaGaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePafnaePaePaePaePafnaePaePaePabwaeQaeQafUaeQafBaeQaeQaeQaeQaeQabwafVafVafVafVafVafVafVafVafVafWabwaeTaeUaeVafsaftaftaftaftaftafuabwafaafaafaafaafXafaafaafaafaafaabwafbafcafdafwafxafxafxafxafxafyabwafiafzafYafZagaagaagbagcafzafiabM +aajaaTaaUaaVaaWaaXaaYaaZaczacVacVacVacVacVacVacVacVacVacVacVacVacVacGaaWabfabbabhabhaaYabfaaeaawabiabjabkablabqabnabmabcaaYabdabhabgaaZagdaepageaeFaeEaenaemaeCaeFaenagdaaYabdabhabgaaZabfabmaazaaGabpaaqaaradLagfagfagfaggaghaghafLafMafNafPafQafQadmaaraasaataauaavaawaaAaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQagiaeQaeQaeQaeQagiaeQabwagjagkaglaglaglaglaglagmafVafWabwaeTaeUaeVagnagoagoagpagoagoagqabwafaafaafaafaafaafaafaagrafaafaabwafbafcafdagsagtagtagtagtagtaguabwafiafzafYagvagwagxagyagcafzafiabM +aamaaWabbabeaaZabgaaUaaYacUacVacVacVacVacVacVacVacVacVacVacVacVacVaaxaaZaaVaaXaaTaaTaaUaaVaahabqabnaboabpaaqaaraasabNabfaaUabaaaTabdaaYagzaeCaeDaebaeaaeFageadYaebaeFagzaaUabaaaTabdaaYaaVabNaazaaLaauaavaawadmafOafOafOafPafQafOafPafQafRagAagBagBaeeaawabiabjabkablabqaaFaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQaeQaeQaeQaeQaeQaeQabwagjagCagDagDagDagDagDagEafVafWabwaeTaeUaeVagFagGagGagGagGagGagHabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdagIagJagJagJagJagJagKabwafiafzafYagvagLagMagyagcafzafiabM +aadaaZaaXabhaaYabdabbaaUacCacVacVacVacVacVacVacVacVacVacVacVacVacVacEaaYabeabgaaWaaWabbabeaagaasaataauaavaawabiabjabYaaVabbabcaaWabaaaUadHadCadDadEadFadGadHadIadJadKadHabbabcaaWabaaaUabeabYaazaaCablabqabnaeqagNagNagNagAagBafLafMafNafOafMafNafNaesabnaboabpaaqaaraasaaLaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePafnaePaePaePaePafnaePabwaeQaeQaeQaeQafoaeQafUaeQaeQafoabwafVagCagDagDagDagDagDagEafVafWabwaeTaeUaeVagOaftaftaftaftaftagPabwafaafaafaafaafaafaafaafaafaafaabwafbafcafdagQafxafxafxafxafxagRabwafiafzafYagbagSagSagTagcafzafiabM +aalaaYabgaaTaaUabaaaXabbadkacVacVacVacVacVacVacVacVacVacVacVacVacVaeLaaUabhabdaaZaaZaaXabhaacabkablabqabnaboabpaaqacjabeaaXabfaaZabcabbabhabhabeaaXabfaaZabcabbabhabeabeaaXabfaaZabcabbabhacjaazaaJaasaataauaeGaeNafOafOafPafQafRafSafTagNagAagBagBaeHaauaavaawabiabjabkaaDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwagUaeQaeQaeQaeQagUaeQaeQaeQaeQabwafVagCagDagDagDagDagDagVafVafWabwaeTaeTagWagOaftagXagXagXaftagPabwagYagYagYagYagYagYagYagYagYagYabwafbafbagZagQafxafxafxafxafxagRabwafiafiafiahaahaahaahbafiafiafiabM +aaoaaUabdaaWabbabcabgaaXaeKacVacVacVacVacVacVacVacVacVacVacVacVacVaflabbaaTabaaaYaaYabgaaTaaiaauaavaawabiabjabkablacHabhabgaaVaaYabfaaXaaTaaTabhabgaaVaaYabfaaXaaTabhabhabgaaVaaYabfaaXaaTacHaazaaEabnaboabpabqaeqaeqaeqaeOacWacXacYaeqaeOacWacXacXacYabpaaqaaraasaataauaaNaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePafnaePaePaePaePafnaePaePaePabwaeQagiaeQafUaeQaeQagiaeQafUaeQabwafVahcahdahdahdahdahdaheafVafWabwaeTaeUaeVagOaftagOaftagPaftagPabwahfahfahfahfahfahfahfahfahfahfabwafbafcafdagQafxafxafxafxafxagRabwafiafiafiafzafzafzafiafiafiafiabM +aababbabaaaZaaXabfabdabgafkacVacVacVacVacVacVacVacVacVacVacVacVacVahgaaXaaWabcaaUaaUabdaaWaafabpaaqaaraasaataauaavabmaaTabdabeaaUaaVabgaaWaaWaaTabdabeaaUaaVabgaaWaaTaaTabdabeaaUaaVabgaaWabmaazaaOabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaIaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPabtaePaePaePaePaePaePaePaePaePaePabwaeQaeQaeQaeQagUaeQaeQaeQaeQagUabwafVafVafVafVafVafVafVafVafVafWabwaeTaeUaeVahhagXahhahiahjagXahjabwahfahfahfahfahfahfahfahfahfahfabwafbafcafdahkahlahlahlahlahlahmabwafiafiafiafiafiafiafiafiahnahnabM +aaeaaXabcaaYabgaaVabaabdacBacVacVacVacVacVacVacVacVacVacVacVacVacVacFabgaaZabfabbabbabaaaZaanabnaboabpaaqaaraasaatabNaaWabaabhabbabeabdaaZaaVabfaaUabaaaTabdaaYaaVabfaaWabaabhabbabeabdaaZabNaazaaMaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaaGaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaRahoahoahoahoahoahoahoahoahoahoaaR +aahabgabfaaUabdabeabcabaahpacVacVacVacVacVacVacVacVacVacVacVacVacVahqabdaaYaaVaaXaaVaaWabaaapaavaawabiabjabkablabqabYaaZabcaaTaaXabhabaaaYabeaaVabbabcaaWabaaaUabeaaVaaZabcaaTaaXabhabaaaYabYaazaaFaboabpaaqaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaaOaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aagabdaaVabbabaabhabfabcacAacVacVacVacVacVacVacVacVacVacVacVacVacVabmabaaaUabeabgaaVaaWabaaaoabjabkablabqabnaboabpacjaaYabfaaWabgaaTabcaaUabhabeaaXabfaaZabcabbabhabeaaYabfaaWabgaaTabcaaUacjaazaaIaaraasaataauaavaawabiabjabkablabqabnaboabpaaqaaraasaataauaavaawabiabjaaCaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aacabaabeaaXabcaaTaaVabfahracVacVacVacVacVacVacVacVacVacVacVacVacVabNabcabbabhabdabeaaZabcaabaataauaavaawabiabjabkaayaayaaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaazaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaaNaaOaaAaaBaaCaaDaaEaaFaaGaaHaaIaaJaaKaaLaaMaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaiabcabhabgabfaaWabeaaVahracVacVacVacVacVacVacVacVacVacVacVacVacVabNabfaaXaaTabaabhaaYabfaaeaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahtahuahvahwahxahyahsahzahAahAahAahAahAahsahBahCahBahCahBahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aafabfaaTabdaaVaaZabhabeahracVacVacVacVacVacVacVacVacVacVacVacVacVabNaaVabgaaWabcaaTaaUaaVaahaaTaaaaabaacaadaaeaafaagaahaaaaaiaajaakaalaamaanaaoaagaafaajaacaadaahaakaaeaamaaiaaoaaTabdaazahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahtahAahAahAahAahEahsahFahCahCahCahGahAahsahHahCahHahCahHahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aanaaVaaWabaabeaaYaaTabhahIacVacVacVacVacVacVacVacVacVacVacVacVacVabYabeabdaaZabfaaWabbabeaagaaWaajaaTaaUaaVaaWaaXaaYaaZabaabbabcabdabeabfabgabhaaYaaXabcaaUaaVaaZabdaaWabfabbaabaaWabaaazahDabbaaTabaabbabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbabbahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahtahAahAahJahAahKahsahLahCahMahMahGahAahsahCahCahCahCahCahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aakabeaaZabcabhaaUaaWaaTahNacVacVacVacVacVacVacVacVacVacVacVacVacVacjabhabaaaYaaVaaZaaXabhaacaaZaamaaWabbabeaaZabgaaUaaYabcaaXabfabaabhaaVabdaaTaaUabgabfabbabeaaYabaaaZaaVaaXaaeaaZabcaazahDaaXaaWabcaaXabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaXabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaPaaXahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahsahsahAahJahAahAahAahAahCahMahMahCahAahOahCahCahCahCahCahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaaabhaaYabfaaTabbaaZaaWahNacVacVacVahPacVacVacVacVacVahPacVacVacVacjaaTabcaaUabeaaYabgaaTaaiaaYaadaaZaaXabhaaYabdabbaaUabfabgaaVabcaaTabeabaaaWabbabdaaVaaXabhaaUabcaaYabeabgaahaaYabfaazahDabgaaZabfabgabgaaZabfabgaaZabfabgaaZabfabgaaZabfabgabgaaZabfabgaaZabfabgaaZabfabgaaZabfabgaaZabfabgabgaaZaaPahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahQahRahAahAahAahAahAahAahCahMahMahCahAahOahCahCahCahCahCahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aajaaTaaUaaVaaWaaXaaYaaZaayaaxaaxacEaeLahPahSahTahUahVacGacFahqaaxacHaaWabfabbabhaaUabdaaWaafaaUaalaaYabgaaTaaUabaaaXabbaaVabdabeabfaaWabhabcaaZaaXabaabeabgaaTabbabfaaUabhabdaagaaUaaVaazahDabgaaYaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYabeabgabgaaYaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYaaYahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahWahXahXahXahXahXahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahsahsahZaiaahsahsahsahAahCahMahMahGahAahsahCahCahCahCahCahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aamaaWabbabeaaZabgaaUaaYabdaaUabaabgaflacEaayahgabNacHaaxaaYabfaaWabgaaZaaVaaXaaTabbabaaaZaanabbaaoaaUabdaaWabbabcabgaaXabeabaabhaaVaaZaaTabfaaYabgabcabhabdaaWaaXaaVabbaaTabaaacabbabeaazahDabdaaUaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUabhabdabdaaUaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUaaUahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaibaicaidaieaifahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsaigaiaaiaaiaaiaaihahsahAahCahCahCahGahAahsahHahCahBahCahHahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aadaaZaaXabhaaYabdabbaaUabfabgaaVabcaaTabeabaaaWabbabdaaVaaXabhaaUabcaaYabeabgaaWaaXabcaaYaakaaXaababbabaaaZaaXabfabdabgabhabcaaTabeaaYaaWaaVaaUabdabfaaTabaaaZabgabeaaXaaWabcaaiaaXabhaazahDabhabcabcabbabhabcabbabhabcabbabhabcabbabhabcabbabhabhabcabcabbabhabcabbabhabcabbabhabcabbabhabcabbabhaaVabcahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaiiaijaijaijaiiahYahYahYahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsaigaiaaikailaiaaihahsahAahAahAahAahAahAahsahBahCahBahCahBahCahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aalaaYabgaaTaaUabaaaXabbaaVabdabeabfaaWabhabcaaZaaXabaabeabgaaTabbabfaaUabhabdaaZabgabfaaUaaaabgaaeaaXabcaaYabgaaVabaabdaaTadCadDadEadFadGadHadIadJadKaaWabcaaYabdabhabgaaZabfaafabgaaTaazahDaaTabfabfaaXaaTabfaaXaaTabfaaXaaTabfaaXaaTabfaaXaaTaaTabfabfaaXaaTabfaaXaaTabfaaXaaTabfaaXaaTabfaaXaaTabfabfahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaiiaimaimaimaiiahYainaioahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahsahsahsahsahsahsahsahsahsahAahAahsahsahsahsahsahsahsahsahsahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaoaaUabdaaWabbabcabgaaXabeabaabhaaVaaZaaTabfaaYabgabcabhabdaaWaaXaaVabbaaTabaaaYabdaaVabbaajabdaahabgabfaaUabdabeabcabaaipaiqairaisaitaiuaivaiwaixadHaelabfaaUabaaaTabdaaYaaVaanabdaaWaazahDaaWaaVaaVabgaaWaaVabgaaWaaVabgaaWaaVabgaaWaaVabgaaWaaWaaVaaVabgaaWaaVabgaaWaaVabgaaWaaVabgaaWaaVabgaaWaaVaaVahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaiiaiyaizaiAaiiahYahYahYahYahYahYahYahYahYahYahYahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahAaiBahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aababbabaaaZaaXabfabdabgabhabcaaTabeaaYaaWaaVaaUabdabfaaTabaaaZabgabeaaXaaWabcaaUabaabeaaXaamabaaagabdaaVabbabaabhabfabcaelaiuaiCaitaixaiDaiEaiFaiGaiHaeBaaVabbabcaaWabaaaUabeaakabaaaZaazahDaaZabeabeabdaaZabbafmafmafmafmafmafmabbafmafmafmabbabbabbafmafmafmabbafmafmaiIagdaelaiIabdaaZabeabdaaZabeabeahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaiiaiyaizaiAaiiaiJaiKaiLaiMaiNaiOaiKaiPaiQaiRaiRahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsahAahAahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaeaanaamaacaakaalaajaaaaaeaadaahaabaaiaagaaoaafaajaalaahaamaacaaaaabaakaagaadaafaamaabaakaiSabcaacabaabeaaXabcaaTaaVabfaeBaiFaiGaiwaiTairaixaitaivaiUaeMabeaaXabfaaZabcabbabhaaaabcaaYaazahDaaYabhabhabaaaYabbafmaiVafmafmaiVafmabbafmaiVafmafmafmafmafmaiVafmabbafmaiVaiWaiWaiXaiWabaaaYabhabaaaYabhabhahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaiiaiyaizaiAaiiaiYaiKaiOaiOaiNaiOaiKaiOaiRaiRaiRahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahsaiZaiZahsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aahabfaaUabaaaTabdaaYaaVabdabfaaUabaaaTabdaaYaaVabdaaYaaVabfaaUabaaaTabdaaYaaVaaVaanaaPaaPaaPabfaaiabcabhabgabfaaWabeaaVaeMaitaivaiHaiCaiuaiTaiwaisaiEafmabhabgaaVaaYabfaaXaaTaajabfaaUaazahDaaUaaTaaTabcaaUabbafmaiVaiVaiVaiVafmafmafmaiVaiVaiVajaajbajbajcafmafmafmajaajbajbajcaiWabcaaUaaTabcaaUaaTaaTahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaiiaizaizaizajdajeajfaiOaiOaiNaiOaiKaiPaiQaiRaiRahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPajgajhajhajgaaPaaPaaPaaPajiajgajgajgajjaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aagaaVabbabcaaWabaaaUabeacGajkajlajmaflabcaayajnajoadIaaxaaVabbabcaaWabaaaUabeabeaakaaPaaPaaPaaVaafabfaaTabdaaVaaZabhabeafmaiwaisaiUaiGaiFaiCaiHaiDaixafAaaTabdabeaaUaaVabgaaWaamaaVabbaazahDabbaaWaaWabfabbabbafmaiVaiVaiVaiVafmafmaiVaiVaiVaiVajpajqajqajraiVafmafmajpajqajqajraiWabfabbaaWabfabbaaWaaWahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaiiaizaizaizajdajeajfaiOaiOaiOaiOajsaiOaiRaiRaiRahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPajiajgajgajgajgajgajtajuajvajjaaPaaPaaPaaPaaPajiajgajwajxajgajjaaPaaPajiajgajgajgajyajzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aacabeaaXabfaaZabcabbabhahqajAajBajCacjaaZahgajDajEajFabmabeaaXabfaaZabcabbabhabhaaaaaPaaPaaPabeaanaaVaaWabaabeaaYaaTabhafAaiHaiDaiEaivaitaiGaiUairaiTafKaaWabaabhabbabeabdaaZaadabeabgaazahDaaXaaZaaZaaVaaXabbafmaiVaiVaiVaiVafmafmaiVaiVaiVaiVajGajHajHajIaiVafmafmajGajHajHajIaiWaaVaaXaaZaaVaaXaaZaaZahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXaiiajJaizajKaiiaiYaiKaiOaiOaiNaiOaiKaiPaiQaiRaiRahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPajiajgajLajMajgajNajOajPajQajRajgajjaaPaaPaaPajiajgajgajhajhajgajgajtajvajgajSajTajgajyajUaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaiabhabgaaVaaYabfaaXaaTahqajAajBajCacjaaZahgajDajEajFabmabhabgaaVaaYabfaaXaaTaaTaajaaPaaPaaPabhaakabeaaZabcabhaaUaaWaaTafKadVairaixaisaiwaivaiEaiuadKagdaaZabcaaTaaXabhabaaaYaalabhabdaazahDabgaaYaaYabeabgabbafmaiVaiVajaajbajbajcaiVaiVaiVaiVaiVajVajWaiVaiVaiVaiVaiVajVajWaiVaiWabeabgaaYabeabgaaYaaYahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXajXaiiajYaiiajZaiJaiKaiOaiOaiNaiOaiKaiOaiRaiRaiRahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPakaakbakcakcakdakcakcakeakfakgajgajgajtajuajvajgajgakhakcakcakiajgakjakkaklakcakmajgajyajUaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aafaaTabdabeaaUaaVabgaaWabmaknakoakpacHaaYacFakqakraksabNaaTabdabeaaUaaVabgaaWaaWaamaaPaaPaaPaaTaaaabhaaYabfaaTabbaaZaaWadVadJaiDaiHaiDaiHaisaiDaiHadHagzaaYabfaaWabgaaTabcaaUaaoaaTabaaazahDabdaaUaaUabhabdabbafmaiVaiVajpajqajqajraiVaiVaiVaiVajaaktakuajaaiVaiVaiVajaaktakuajaaiWabhabdaaUabhabdaaUaaUahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahXakvajXakwajZakvaiJaiKaiOaiOaiNaiOaiKaiPaiQaiRaiRahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPakxakyakzakAajgakcakcakBakCakDajgakEakFakGakHakIakJakKakLakLakcakMakcakcakcakcakNajgajyakOaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aahabfaaUabaaaTabdaaYaaVabNakPakQajBaayaaUahqakRakSakTabYabfaaUabaaaTabdaaYaaVaaVaanaaPaaPaaPaaWaajaaTaaUaaVaaZajmadFakUakVaiDaiuaiEaiuaiEairaiuaiEaiwadHadHaiIakUabaaaWabfabbaabaaWabcaazahDabbaaTabaabbabaabbafmaiVaiVajGajHajHajIaiVaiVaiVaiVajpajbakWajpaiVaiVajaajpajbakWajpaiWaaTabaabbaaTabaabbabbahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPahYahYahYahYahYahYahYahYahYahYahYahYahYahYahYahYahYahYaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPakXajgajgajgajgakYakZakcakcalaajgalbalcaldalealfalgalhakLakLakcakMakcalialjakcakcajgajgalkaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aagaaVabbabcaaWabaaaUabeabYajCallakoacDabbabmalmajFalnacjaaVabbabcaaWabaaaUabeabeaakaaPaaPaaPaaZaamaaWabbabeaaYagdaiwaiFaiTaiuaiEaivaiDaiHaiuaiGaiHaiDaiCaiwaiwadFabcaaZaaVaaXaaeaaZabfaazahDaaXaaWabcaaXabcabbafmajaajbajbajcajWaiVaiVaiVaiVaiVaiVaiVaiVaiVaiVaiVajpajqajqajraiXaiWaaWabcaaXaaWabcaaPaaXahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPakXajgajgaloakcajgajgalpalqalralsaltalualhakLakcakZajgajgajgajgalvalwajgalkaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aacabeaaXabfaaZabcabbabhacjahqacHabYacGaaXabNaaxahgabmacHabeaaXabfaaZabcabbabhabhaaaaaPaaPaaPaaYaadaaZaaXabhaaUagzaiwaitaiCaiGaiHaisaiuaiEaiFaivaiwairaiGaiHaisadIabfaaYabeabgaahaaYaaVaazahDabgaaZabfabgabfabbafmajpajqajqajrakuajaajaajbajbajcajbajbajcaiVaiVaiVajGajHajHajIaiXaiWaaZabfabgaaZabfaaPabgahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPajialyalzajgajgajgajgajgajgajgajgalAakcakcakcakcalBakcakcakcakcalCajgalDakcajgalEalFalFalCajgajgajgaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaiabhabgaaVaaYabfaaXaaTabfabhabgaaVaaYabfaaXaaTabfaaXaaTabhabgaaVaaYabfaaXaaTaaTaajaaPaaPaaPaaUaalaaYabgaaTabbalGaiHaiwaiGaivaiUaiDaiwaiCaitaisaiEaiuaivaiUaiDalHaaVaaUabhabdaagaaUabeaazahDabgaaZabfabgabfafmafmajGajHajHajIakWajpajpajqajqajrajqajqajraiVaiVaiVaiVajVajWaiVaiXaiWaelabfabgaaZabfaaPabgahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIalIalIalIalIalJalIalIalIalKalLalIalIalIalKalIalIalIalIalIalIalKalIalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPajialEalMalNajgalOajgalPalQalRajgajgalSakcakLakLakLakLakLakLakLakLakLakcakLakcalTalUakLakLakcajgajyajzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aafaaTabdabeaaUaaVabgaaWaaVaaTabdabeaaUaaVabgaaWaaVabgaaWaaTabdabeaaUaaVabgaaWaaWaamaaPaaPaaPabbaaoaaUabdaaWaaXalVaiUaiHaivaisaiEairaiHaiGaiwaiDaixaiFaisaiEairajmabeabbaaTabaaacabbabhaazahDabgaaZabfabgabfafmaiVaiVajVajWaiVaiVaiVajGajHajHajIajHajHajIaiVaiVaiVajaaktakuajaaiXaiXaelabfabgaaZabfaaPabgahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalJalIalIalIalIalIalIalIalIalIalIalIalKalIalIalIalIalIalKalIalIalIalIalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalWalXakLalYajgalZajgajgamaajgambajgamcakLakLamdameamfamgamhamiamjakLakLakLakLamkamlakLakLakcajgajyajUaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aahabfaaUabaaaTabdaaYaaVabdabfaaUabaaaTabdaaYaaVabdaaYaaVabfaaUabaaaTabdaaYaaVaaVaanaaPaaPaaPaaXaababbabaaaZabgadKaiEaiUaisaiDaixaiuaiUaivaiHairaiTaitaiDaixaiuadVabhaaXaaWabcaaiabgaaTaazahDabdaaYaaVabdaaVafmaiVajaaktakuajaajaajbajbajcajWaiVajVajWaiVaiVaiVaiVajpajbakWajpaiXaiXaeBaaVabdaaYaaVaaPabdahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIalIalIammalIalIalIalIalIalJalIalIalLalKalIalIalKalIalIalKalLalIalKalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPamnamoampakLamqakcakcakcakcamrakcakcakcakLakLamsamtamuamvamwamxamyakLakLakLakLamzakLakLakLakcajgajyajUaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aahabfaaUabaaaTabdaaYaaVabdabfaaUabaaaTabdaaYaaVabdaaYaaVabfaaUabaaaTabdaaYaaVaaVaanaaPaaPaaPabgaaeaaXabcaaYabdadHaixaiEaiDairaiTaiFaiEaisaiUaiuaiCaiwairaiTaiFadJaaTabgaaZabfaafaaPaaWaazahDabhabcabcabbabhafmafmajpajbakWajpajpajqajqajrakuajaaktakuajaaiVaiVaiVaiVaiVaiXaiXaiXaiWafmabhabcabbabhaaVabcahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalJalIalIalKalLalIalIalKalIalLalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPakXakYamAamBajgamCamDamEamFamGakcamHakcakcakLakLakLakLakLakLakLakLakLakcakLakcamIakcamJamKakmajgajyakOaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aagaaVabbabcaaWabaaaUabeabaaaVabbabcaaWabaaaUabeabaaaUabeaaVabbabcaaWabaaaUabeabeaakaaPaaPaaPabdaahabgabfaaUagzadEaiTaixairaiuaiCaitaixaiDaiEaiFaiGaiHaiuaiCaitakVaipabdaaYaaVaanabdaaZaazahDaaTabfabfaaXaaTabbafmafmafmafmafmajGajHajHajIakWajpajbakWajpaiVaiVaiVaiVafmaiWaiWaiWaiWaaXaaTabfaaXaaTabfabfahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalJalIalIalIalIalIalLalIalKalLalIalKalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPakXamLamMajgajgajgajgajgajgajgajgamNakcakcakcakcaliakcakcakcakcamOajgalDakcajgakYamPamQamOajgajgajgaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aacabeaaXabfaaZabcabbabhabcabeaaXabfaaZabcabbabhabcabbabhabeaaXabfaaZabcabbabhabhaaaaaPaaPaaPabaaagabdaaVabbalGaisaiCaiTaiuaiFaiGaiwaiTairaixaitaivaiUaiFaiGaiwaiTaelabaaaUabeaakabaaaYaazahDaaWaaVaaVabgaaWabbabbabbabbabbafmaiVajVajWaiVaiVaiVaiVaiVaiVaiVaiVaiVaiVafmaaPaaPaaPaaPabgaaWaaVabgaaWaaVaaVahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIalIamRamRamRamRamRamRamRalIalIalIalIalIalIalIalKalIalIammalLalIalIalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPajiajgajgaloakcajgajgamSamTamUamVamWakJamXakLakcamYajgajgajgajgakcamZajgajjaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaiabhabgaaVaaYabfaaXaaTabfabhabgaaVaaYabfaaXaaTabfaaXaaTabhabgaaVaaYabfaaXaaTaaTaajaaPaaPaaPabcaacabaabeaaXanaaiDaiGaiCaiFaitaivaiHaiCaiuaiTaiwaisaiEaitaivaiHaiCaeBabcabbabhaaaabcaaUaazahDaaZabeabeabdaaZabbabbabbabbabbafmajaaktakuajaaiVaiVaiVaiVaiVaiVaiVaiVaiVafmaaPaaPaaPaaPabdaaZabeabdaaZabeabeahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIanbahYancandandandaneahYanfalIalIalIalIammalIalIalJalIalJalIalKalIalKalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPajiajgajgajgajgalEamYakcakcangajganhanianjankanlalganmakLakLakcannakcalBakcakcakcajgajgajjaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aafaaTacGajkajlajmaflaaXaayajnajoadIaaxaaXaaXacGajkajlajmaflabcaayajnajoadIaaxaaWaamaaPaaPaaPabfaaiabcabhabganoairaivaiGaitaiwaisaiUaiGaiFaiCaiHaiDaixaiwaisaiUaiGaeMabfaaXaaTaajabfabbaazahDaaYabhabhabaaaYabbabbabbabbabbafmajpajbakWajpaiVaiVaiVaiVaiVaiVaiVaiVaiVafmaaPaaPaaPaaPabaaaYabhabaaaYabhabhahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIahYanpanpanpanpanpanpanpahYanqalIalIamRamRamRamRamRamRamRamRanransamRalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPantanuanvanwajgakcakcakeanxanyajganzanAanBanCanDaluanEakLakLakcannakcakcakcakcakcajgajyajzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaoabfahqanFanGanHacjabgahganIanJanKabmabgabgahqanLanManNacjaaZahganOanPanQabmabaaacaaPaaPaaPaaVaafabfaaTabdaiIaiuaisaivaiwaiHaiDaiEaivaitaiGaiUairaiTaiHaiDaiEaivafmaaVabgaaWaamaaVabgaazahDaaUaaTaaTabcaaUabbabbabbabbabbafmafmafmaiVaiVaiVaiVaiVaiVaiVaiVaiVafmafmafmaaPaaPaaPaaPabcaaUaaTabcaaUaaTaaTahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIahYanpanpanpanpanpanpanpahYanqalIanRanSanTanTanUalxalxalxalxalxalxalxalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPanVakcakcakcanWakcakcanXanYanZajgajgaoaaobaocajgajgaodaoeaofakcajgaogaohaoiaojakmajgajyajUaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aabaaTahqanFanGanHacjabgahganIanJanKabmabgabgahqanLanManNacjaaZahganOanPanQabmabcaaiaaPaaPaaPabeaanaaVaaWabaaokaiFaiDaisaiHaiuaiUaiwaiTaiEaitaiCaiDaiFaiUairaixaisafAabeabdaaZaadabeabdaazahDabbaaWaaWabfabbaaWaaPaaPaaPaaPaaPaaPaiWaiWaiXaiXaiXaiXaiXaiXaiXaiWaiWaaPaaPaaPaaPaaPaaPabfabbaaWabfabbaaWaaWahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIahYanpanpanpanpanpanpanpahYanqammanRaolaiRaiRaiRaomaonalxaooaopaoqalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPakXajgaoraosajgaotakcaouaovaowajgalkaaPaaPaaPakXajgajgaoxaoyajgajgaoaaocajgaozaoAajgajyajUaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaeabcabmaoBaoCaoDacHabdacFaoEaoFaoGabNabdabdabmaoHaoIaoJacHaaYacFaoKaoLaoMabNabfaafaaPaaPaaPabhaakabeaaZabcaoNaitairaiDaiUaiFaiEaiHaiCaixaiwaiGairaitaiEaiuaiTaiDafKabhabaaaYaalabhabaaazahDaaXaaZaaZaaVaaXaaZaaVaaXaaZaaVaaXaaZaaVafAaelanoafAafAaelaelanoafAaaZaaVaaXaaZaaVaaXaaZaaVaaXaaZaaVaaXaaZaaZahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIaoOahYahYahYanpahYahYahYaoPalIalIaoQaolaiRaiRaoRaiRaiRaoSaiRaiRaiRalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPakXajgajgajgajgajgaoaaobaocalkaaPaaPaaPaaPaaPakXajgaoTaoUajgalkaaPaaPakXajgajgajgajyakOaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aahaaUabNaoVaoWanGaayabaahqaoXaoYaoZabYabaabaabNapaapbanMaayaaUahqapcapdapeabYaaVaanaaPaaPaaPaaTaaaabhaaYabfahpaiwaiuairaiEaitaixaiUaiGaiTaiHaivaiuaiwaixaiFaiCairafJaaTabcaaUaaoaaTabcaazahDabgaaYaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYabeabgabgaaYaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYaaYahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIalIalIahYanpanpanpahYapfamRamRamRapgaphaiRapiapjapkaiRalxaiRaplaplalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPajgapmapnajgaaPaaPaaPaaPakXajgajgajgalkaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aagabbabYanHapoaoCacDabcabmappanKapqacjabcabcabYanNapraoIacDabbabmapsanQaptacjabeaakaaPaaPaaPaaWaajaaTaaUaaVadGaiHaiFaiuaixaiwaiTaiEaivaiCaiUaisaiFaiHaiTaitaiGaiuadJaaWabfabbaabaaWabfaazahDabdaaUaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUabhabdabdaaUaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUaaUahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIalIalIalIalIalIahYanpanpanpahYanSanTanTanTanUalxaiRapiapuapkaiRalxalxalxalxaaRaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aacaaXacjahqacHabYacGabfabNaaxahgabmacHabfabfacjahqacHabYacGaaXabNaaxahgabmacHabhaaaaaPaaPaaPaaZaamaaWabbabeakUaiUaitaiFaiTaiHadKaixaisaiGaiEaiDadIaiUaiCaiwaivaiFakVaaZaaVabgaaeaaZaaVaazahDabbaaTabaabbabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbabbahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIanbahYahYahYahYahYanpanpanpahYaolaiRaiRaiRaiRapvaiRaiRaiRaiRaiRapwapxapxapyalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaiabgabgaaVaaYabfaaXaaTabfabgabgaaVaaYabfaaXaaTabfaaXaaTabgabgaaVaaYabfaaXaaTaaTaajaaPaaPaaPaaYaadaaZaaXabhadFaiEaiwaitaiCaiUadHaiTaiDaivaixairalHaiEaiGaiHaisaitadCaaYabeabgaahaaYabeaazahDaaXaaWabcaaXabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaXabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaPaaXahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIahYanpanpanpanpahYanpanpanpahYaphaiRapzanTanUalxaiRaiRaiRaiRaiRalxapyapyapAalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aafabdabdabeaaUaaVabgaaWaaVabdabdabeaaUaaVabgaaWaaVabgaaWabdabdabeaaUaaVabgaaWaaWaamaaPaaPaaPaaUaalaaYabgaaTadIaixaiHaiwaiGaiEadEadKadGapBadCakUajmaixaivaiUaiDaiwadKaaUabhabdaagaaUabhaazahDabgaaYaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYabeabgabgaaYaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYabeabgaaYaaYahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIahYanpanpanpanpahYanpanpanpahYahYapCahYapDapEalxalxalxalxalxapFalxapGapyapAalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aanaalaahaajaaoaacaaeaabaanaagaakaafaamaaaahDahDahDahDahDaahaajaabaafaaoaaaaagaagaadaaPaaPaaPabbaaoaaUabdaaWalHadCadVajmadEakVapBabeaaYaaWaaVaaUadVadCapBadJadGajmadHabbaaTabaaacabbaaTaazahDabdaaUaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUabhabdabdaaUaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUabhabdaaUaaUahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxapHalIahYanpanpanpanpahYahYanpahYahYanpanpanpahYapIapJapEalxapKapLapLalxalxalxalxalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +abfaaXabhaaUabcaaYaaUabcaaYaaXabhaaUabcaaYaaXabhaaUabcaaYaaXabhaaUabcaaYabeabgaaWaaPaaPaaPaaPaaXaaeaaXabcaaYabgaaVabaabdaaTabfaaWabhaaUaaZabeabbabaaaVaaWabcaaYabdabhabgaaZabfaafaaXaaZaazahDabbaaTabaabbabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbabaabbaaTabaabbaaTabaabbaaTabaabbaaTabaabbabbahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIahYanpanpanpanpanpanpanpanpanpanpanpanpahYanqalIanRapMapKapLapLalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaVabgaaTabbabfaaUabbabfaaUabgaaTabbabfaaUabgaaTabbabfaaUabgaaTabbabfaaUabhabdaaZaaPaaPaaPaaPabgaahaakaadaaiaaaaaoaamaajaahaalaagaaeaafaacaabaanaamaaoaagaadaacaaiaaeaaaaacaalaanabgaaYaazahDaaXaaWabcaaXabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaXabcaaXaaWabcaaXaaWabcaaXaaWabcaaXaaWabcaaPaaXahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIalIahYanpanpanpanpanpanpanpanpanpanpanpanpahYapNalIanRaolapKapLapLalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +abeabdaaWaaXaaVabbaaXaaVabbabdaaWaaXaaVabbabdaaWaaXaaVabbabdaaWaaXaaVabbaaTabaaaYaaPaaPaaPaaPaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDahDaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalIanbahYahYahYahYahYahYanpanpanpahYahYahYahYahYahYanfanRaphapKapLapLalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaaPaaPaaPaaPaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaazaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapOapOapOapOapOapOapOapOaaPaaPalxalIahYapPapPapPapPapPahYanpanpanpahYanpanpanpanpanpahYapQalxapKapLapLalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapOapRapRapRapOapRapRapOaaPaaPalxalIahYapPapPapPapPapPapPanpanpanpanpanpanpanpanpanpahYapQalxalxalxalxalxaaPaaPaaPaaPaaPaaPaaPaaPaaPapSapTapUapTapVaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapOapRapWapRapXapRapRapOaaPaaPalxalIahYapPapPapPapPapPapPanpanpanpanpanpanpanpanpanpahYanqalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapTapYapZaqaapTaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapOaqbaqbaqbapOapRapRapOaaPaaPalxalIahYapPapPapPapPapPahYapPapPapPahYanpahYanpahYahYahYaqcalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqdaqeaqfaqeaqdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqgaqgaqgaqgapOapOapOapOapOapOapRapRapOaaPaaPalxalIahYapPapPapPahYahYahYapPapPapPahYahYahYanpanpanpahYanqalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqhaqeaqeaqeaqhaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqgaqgaqgaqgapXapRapXapRapRapRapRapRapOaaPaaPalxalIahYapPapPapPahYalIahYaqiaqiaqiahYalIahYanpanpanpahYanqalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqhaqeaqeaqeaqhaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqgaqgaqgaqgapOapOapOapOapRapRapRaqjapOaaPaaPalxalIahYaqiaqiaqiahYalIaoOaqkaqlaqmaoPalIahYaqiaqiaqiahYanqalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqnaqeaqeaqeaqnaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapOaqbapRapRaqjapOaaPaaPalxalIaoOaqkaqlaqmaoPalIalIalIalIalIalIalIaoOaqkaqlaqmaoPalIalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapTaqoaqpaqqapTaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapOaqbapRapRaqjapOaaPaaPalxalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalIalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapTaqsaqsaqsapTaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqtaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaqu +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapOapOapOapOapOapOaaPaaPalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxalxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqvaqwaqxaqyaqzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqA +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqBaqCaqCaqCaqDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqA +aqraqraqraqraqraqraqraqEaqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaqGaqHaqIaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqA +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaqJaqJaqJaqFaaPaaPaaPaaPaqBaqCaqCaqDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqA +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqBaqCaqCaqCaqCaqCaqCaqCaqCaqCaqKaqCaqCaqCaqLaqJaqJaqJaqFaaPaaPaaPaaPaqFaqJaqJaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaaPaqAaqAaqAaqAaqAaqAaqAaqA +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqBaqCaqCaqKaqCaqCaqKaqCaqCaqLaqMaqNaqOaqPaqQaqRaqSaqTaqUaqFaqVaqWaqXaqYaqZaraarbarcaqCaqCaqCaqKardarearearfaqDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPargarhariargarjarjargarkarlargaqJaqJaqJaqJaqJaqJaqJaqJaqJaqFaqJaqJaqJarmarnaqJaroarmarparqarraqFaqJaqJaqJaqJarsaqCaqCaqCaqDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPartaaParuaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqBaqCaqCaqCaqCaqZarvaraaraarvaraaraarvaraaraarvaqJaqJaqJaqJaqJaqJaqJaqJaqJaqFarwaqJaqJarxaqJaqJaqJaryaqJaqJarzaqFaqJaqJaqJaqJargarAarBarCaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPartaruaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aqraqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPargarDarDarEarFarDarGaqJaqJaqJaqJaqJaqJaqJaqJaraaqJaqJarHarIarJarKaqJaqJarLaqFaqJaqJaqJarxaqJaqJaqJaryaqJaqJarMaqFaqJaqJaqJaqJarNarAarAarOaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPartaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +arPaqraqraqraqraqraqraqraqraqraqraqraqraqraqraaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParQarQarQarQarQarQarQarQarQarQarvarRarSarDarDarDaqFaqJaqJaqJaqJaqJaqJaqJaqJaraaqJaqJarTarUarVarWaqJaqJarLaqFarXarYarZarmaqJaqJaqJarmasaasbascaqFaqJaqJaqJaqJarGasdaseasfaqFaaPaaPaaPaaPaqBaqCaqCaqCaqDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPasgaruaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPasharDarDarDarDasiarDarDarDarDarDasiasjarDarDarDaskargaqJaqJaqJaqJaqJaqJaqJaqJaraaqJaqJaqJaqJaqJaqJaqJaqJaslaqYaqZarmarmarvaqJaqJaqJarvarmarmarbaqLaqJaqJaqJaqJarsaqCaqCaqCarcaqCaqKaqCaqCaqLasmasnasoaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaspaaParuaqAaqAalxalxalxalxalxaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParQarQarQarQarQarQarQarQarQarQarvarbaqZasqarbaqZarvaraaraarvaraaraarvaraaraarvaqJaqJaqJaqJaqJaqJaqJaqJasrarmassastasuasvaqJaqJaqJasvaswasxasxasyaqJaqJaqJaqJargaszasAasAasAasBaqFasCasDaqFasmasEasoaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalxasFasGasHalxalxaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParQarQarQarQarQarQarQarQarQarQarvarRasIarDarDasJarGasKasLarGasMasNarGasOasParGasQasRasSasTasUasVaqJaqJasWarmasXaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJarAarAasYasYasYarAargasnasnargasZasnataaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPapMatbatcatdatcatbalxaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPasharDarDarDarDatearDarDarDarDarDateatfarDarDarDasJaqYaqCaqCarcaqCaqCarcaqCaqCatgarmarmarmarmarmarvathatharbaqZatiaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJarAarAatjatjatjarAatkasnasnasnasnasnasnaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaolatbatcatdatcatbalxaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParQarQarQarQarQarQarQarQarQarQarvarRatlarDarDarDatmaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJaqJatnaqJaqJatnatoaqJaqJaqJatpatqarratratsaqJaqJaqJaqJaqJaqJaqJaqJarAarAatjatjatjarAatkasnasnasnasnasnasnaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaphatbatcatdatcatbalxaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPasharDarDarDarDattarDarDarDarDarDattatuarDarDarDarDatmaqJaqJatvaqJaqJatvaqJaqJaqJaqJaqJaqJaqJaqJatwaqJaqJatwaqJaqJaqJaqJatpatxarrarratsaqJaqJaqJaqJaqJaqJaqJaqJarAarAasYasYasYarAarGatyasnarGatzarGatAaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxalxatdatdatdalxalxaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParQarQarQarQarQarQarQarQarQarQarvarRatBarDarDatCarGarmarmarvatDatDarvarmarmarGarmarmarmarmarmarvatEatEarbaqZaqJaqJaqJatpatFatGatHatsaqJaqJatIatJaqJaqJaqJaqJarGatKasAasAasAatLaqFatyasnaqFatMaqFatMaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPalxatNatdatOalxaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPasharDarDarDarDatParDarDarDarDarDatPatQarDarDarDatRaqFatSaqJaqJaqJaqJaqJatTatUaqFatVatWatXatYatZauaaqJaqJaubarmaucaqJaqJaqJaqJaqJaqJaqJaqJaqJaudaqFaqJaqJaqJaqJaqYaqCaqCaqCaqCaqCarcaqKaqCarcaqCaueaqCatgaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaufaugaugauhalxalxauialxalxalxalxalxalxalxaqAaqAaqAalxalxalxalxalxalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParQarQarQarQarQarQarQarQarQarQarvarDarDarDarDaujaqFaukaqJaqJaqJaqJaqJaqJaulaqFaqJaqJaqJaqJaumaqJaqJaqJaunarmauoaupauqauraqJaqJaqJauqaupauoaucaqFaqJaqJaqJaqJarmausautautauuauvauwaqFauxasnauyaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPauzauAauBauBauBauCauDaaPaaPauEauFauGauHauFauFauFauIalxauJauKauLauMalxaqAaqAaqAalxauNaiRauOauPalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParGarDauQauRauSauTaqFauUaqJaqJauVauWaqJaqJauXaqFaqJaqJaqJaqJaqJaqJaqJaqJaqBaqCaqZarmarmarvauYauYarbaqCaqCaqCaqCaqLaqJaqJaqJaqJarmauZauZauZauZauZauZaqFavaasnavbaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPauzavcavdaveavfavgavhavcauDaaPauEauFaviaviauFauFauFauFavjavkavkavkavlalxaqAaqAaqAalxalxalxalxalxalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqYaqCaqCaqCaqCaqCaqLavmaqJaqJavnavoaqJaqJavpaqFaqJaqJavqavravsaqJaqJavtaqFavuavvavvavvavvavwavwavvavvavvavxaaPaqFaqJaqJaqJaqJarvauZavyavzavzavzavzaqYaqZavAarbaqLaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPavcavBavCavCavDavCavCavgavcaaPauEavEavFavGavHauFauFauFalxavkavkavkavIalxaqAaqAaqAalxavJaiRaiRavKalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaqJaqJaqJavLavMaqJaqJaqJaqFaqJaqJavNavOavPaqJaqJavQaqFavRavSavTavUavVavWavWavWavXavYavvavxaqFaqJaqJaqJaqJavZauZawaawaawaawaawaauZauZauZavzaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcawbavCavCavCavCawcawdavcaaPauEauFaweaweauFauFauFawfalxawgawhawiawjalxaqAaqAaqAalxawkaiRaiRawlalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaqJaqJaqJaqJaqJaqJaqJaqJaqFaqJaqJaqJaqJaqJaqJaqJawmaqFavRawnawoavWavWavWavWavWavWavWawpawqaqFaqJaqJaqJaqJavZauZauZauZawrauZauZauZauZauZavzaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcawsavCavCawtavCavCawuavcaaPauEauFauFauFauFauFauFawvalxalxalxalxalxalxaqAaqAaqAalxawwaiRaiRawxalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaqJaqJaqJaqJaqJaqJaqJaqJaqFaqJaqJaqJaqJaqJaqJaqJaqJaqFavRawnawyawzawAawAawAawAawAawBavvawCaqFaqJaqJaqJaqJarGauZauZawDawDauZauZawEauZauZavzaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFawGawGawGawGawGawGawGawGawGawGawGawGawGawGawGawGawGawGawGawGawGawGawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawHavcawIavcavcavcavcavcawJaaPawKaugaugawLalxauPauPauPalxapxapxawMawNalxaqAaqAaqAalxawOaiRaiRawPalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaqJaqJawQawRawSawTawUawVaqFawWawXawYawZaxaaxbaqJaxcaqFaxdavvavvavvavvavvavvavvavvavvawCaaPaqFaqJaqJaqJaqJaqFaxeauZaxfaxgauZauZaxhauZauZaxiaqFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcaxkaxlaxmaxnaxoavcaaPaaPaaPaaPaaPaaPaxpauPauPauPaxqapyapyaxraxralxaqAaqAaqAalxawOaiRaiRaxsalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqFaxtaxuawQawRawSawTawUawVarsaqCaqCaqCaqCaqCaqCaqCaqCatgaxvaxvaxvaxvaxvaxvaxvaxvaxvaxvaxvaxvargarvaxwaxwarvaqYaqCaqCaqCaqCaqCaqCaqCaqCaqCaqCatgaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcaxxaxyawcavCaxzavcaaPaaPaaPaaPaaPaaPaxAauPauPauPalxaxBapyalxalxalxalxalxalxalxaxCaxDaxDaxCalxalxalxalxaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqYaqCaqCaqCaqCaqCaqCaqCaqCatgaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaxEarvaxFaxFarvaxGaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjaxjaxjaxjaxHaxIaxIaxIaxIaxJaxJaxIaxIaxIaxIaxKaxjaxjaxjaxjaxjawFawFawFawFawFawFawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPauzavcaxLaxlawcavCaxMavcauDaaPaaPaspasgaxNalxauPauPauPalxalxalxalxaxOaxPaxQaxRaxSaxTaiRaiRaiRaiRaxUaxUaxValxalxaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxWaxWarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjaxjaxjaxHaxXaxYaxZayaaxIaybaycaxIaydayeaxIaxIaxIaxKaxjaxjaxjawFayfaygayhayhayhawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPauzavcavcavcavcayiaxlawcavCayjavcavcavcavcauDaykaykalxaylauPauPauPalxaymaynaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRayoalxaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxWaxWarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjaxjaxHaxIaypaypaypaypaxIayqayqaxIaypaypayraysaxIaxIaxKaxjaxjawFaytayhayhayhayhawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcayuayvaywavcayxavCavCayyavcavcayzayAayBayCayDayEayDauPauPauPauPayFaiRaiRaiRaiRaiRaiRauPaiRayGaiRaiRaiRaiRaiRaiRayHalxaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxWaxWarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjaxHaxIaxIayIayJayKayLaxIayMaypayNaypaypaypaypayOayPaxIaxjaxjayQayhayhayhayhayhawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPayRaySayTaySavcavcayUayVavcavcayWayXayYayZayCayDazaayDauPauPauPauPalxazbazcaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRaiRazdalxaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxWaxWarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjazeazfazgaypazhazhazhaxIaypaypaxIaziazjazkazlazmaznaxIaxjaxjawFayhayhayhayhayhawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPavcavcayRazoavcavcazpavCazqavcavcazrazsazravcaztaztalxazuaugawLalxalxalxalxazvazwazxazyazzazAaiRaiRaiRaiRazBazBazCalxalxaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParQaxWaxWarQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjazDazfaypaypaypaypaypayNaypaypaxIaxIaxIaxIaxIaxIaxIazEaxjaxjawFazFazGayhazGazHawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavcazIavCavCazJavcazKazLavCavcazMazNazOazPavcaruaaParuaaPaaPaaPaaPaqAaqAalxalxalxalxalxalxalxaxCazQazQaxCalxalxalxalxaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxWaxWarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjazRaxIaypaypaypazSaypaxIaypaypaypazTazUaxjaxjaxjaxjaxjaxjaxjazVazVazVazVazVazVazVazVazVazVazVaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavcazWavCavCavCazXavCavCavCazYavCavCavCazZavcasgasgasgasgaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAalxaAaaiRaiRaAaalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxWaxWarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjaxjaxIaxIaxIaxIaxIaxIaxIayMaypaAbaypazUaxjaxjaxjaxjaxjaxjaxjazVaAcaAcaAcaAcaAcaAcaAcaAcaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaaPaaPaaPaaPavcaAeavCavCavCaAfavCavCavCaAgavCavCavCaAhavcaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAalxaAaaiRaiRaAaalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxWaxWarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFaxjaxjaxHaxIaAiaAjaAkaAiaAlaxIaypaypaypaAmazUaxjaxjaxjaxjaxjaxjaxjazVaAcaAnaAoaAoaAoaAoaAoaApaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPauzavcavcavcavcavcavcavCavCavCavcavcavcavcavcavcauDaaPaaPaaPaaPaaPartaaParuaqAaqAaqAaqAaqAaqAalxaAaaiRaiRaAaalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParmaxWaxWarmaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPawFawFawFawFawFaxjaxjazeazfaAqaAqaAqaAqaAqayNaypaypaxIaxIaxIaxIaxIaxIaxIaxKaxjaxjazVaAcaAraAsaAsaAsaAsaAsaAraAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPavcaAtaAuaAvaAwaAxavcaAyavCaAzavcaAAaABaABaACaADavcaaPaaPaaPaaPaaPartaruaqAaqAaqAaqAaqAaqAaqAalxaAaaiRaiRaAaalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAEaAEaAFaAFaAFaAFaAEaAEaAEaAEaAFaAGaAGaAFawFaAHaAHawFawFaAHaAHawFawFaAHaAHaAHaAHawFawFawFawFaAHaAHaAHaAHawFawFawFawFaAHaAHawFawFawFawFawFawFaAIaAIaAJawFaxjaxjazDazfaAKaAqaAqaAqaAqaxIaypaypaypaypaypaxIaypaALaAMaxIaxjaxjazVaAcaAraANaAsaAsaAsaAOaAraAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaAPaAQaAQaAQaAQaAQavcavCavCavCavcaARavCavCavCaASaATaaPaaPaaPaaPaaPaspaaPaqAaqAaqAaqAaqAaqAaqAalxalxaAUaAValxalxaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAWaAXaAWaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAWaAWaAWaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAYaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaBaaAHaAIaAIaAIaAIaAIaAIaAHaAIaAIaAIaAIaAIaAIaBbaAIaAIaAIaAIaAIaAIaAIaAIaBbaAIaAIaAIaBcaAIaAIaAIaAIaAIaAIaAIaAIaBdaxjaxjazRaxIaxIaBeaBfaBgaBhaxIayMaBiaBiaBiaypayNaypaypaypaxIaxjaxjazVaAcaAraAsaAsaBjaBjaBjaBkaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaBlaBmaBnaAQaAQaAQaBoavCavCavCaBpavCavCavCaBqaBraBsaaPaaPaaPaaPaaPartaruaruaqAaqAaqAaqAaqAaqAaqAalxalxalxalxaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBtaAEaAEaAEaBtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBtaAEaAEaAEaBtaAFaAFaAFaAFaBtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaBuaAIaAIaAIaAIaAIaAIaBuaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaBcaAIaAIaAIaAIaAIaAIaAIaAIaBdaxjaxjaxjazRaxIaAqaAqaAqaAqaxIaypaBiaBiaBiaypaxIaBvaxIaxIazEaxjaxjazVaAcaAraAsaAsaAsaAsaAsaBwaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBxaAQaAQaAQaAQaAQaByavCavCavCaBzavCavCavCavCaBAaBBaaPaaPaaPaaPaaPartaaPaaParuaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaruaruaruaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaruaruaAFaAZaAZaAZaAFaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaaPaAEaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaBuaAIaAIaAIaAIaAIaAIaBuaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIawFawFawFawFawFawFawFawFawFawFaxjaxjaxjaxjazRaxIaBCaBDaBEaxIaypaypaypaypaypaxIaxIaxIazEaxjaxjaxjazVaAcaAraAsaAsaAsaAsaBFaAraAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcaBGaAQaAQaAQaBHavcazraBIazravcaBJaBKaBLavCaBMavcaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaParuaruaruaruaruaruaruaruaruaruaruaaPaaPaaPaAFaAZaAZaAZaAFaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaAFaAZaAZaAZaBNaBNaBNaBNaBNaBNaBNaBNaBNaBNaBNaBNaBNaBNaBNaBNaAHaAHaBOaAHaAHawFaAHaAHaAHaAHaAHaBPaBPaAHaAHawFawFaAHaAHaAHaAHawFawFaAIaAIawFaBQaBRawFaBQaBRawFaBQaBRawFaxjaxjaxjaxjaxjazRaxIaxIaxIaxIaxIaxIaxIaxIaxIaxIazEaxjaxjaxjaxjaxjazVaAcaAraAsaAsaAsaAsaAsaBwaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcaBSaBTaBUaBVaBWavcaBXavCaBYavcaBZavcavcaCaavcavcaaPaaPaaPaaPaaPaaPaaPartaaParuaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaBNaCbaCcaCcaCcaCcaCcaCcaCcaCcaCcaCdaCeaCfaCgaBNaChaChaChaCiaCjawFaBPaBPaBPaBPaBPaBPaBPaCkaClawFaCmaCmaCmaCmaCmaCmawFaAIaAIawFaCnaCoawFaCnaCoawFaCnaCoawFaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjazVaAcaAraAsaAsaCpaCpaCpaCqaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcaCraAQaCsavcavcavcaCtavCaCuavcavcavcaCvavCaCwavcaaPaaPaaPaaPaaPaaPaaPartaruaruaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaBNaCAaCBaCBaCBaCCaCCaCBaCBaCBaCBaCDaCBaCBaCEaBNaCFaChaChaChaChawFaBPaCGaCHaCIaCGaBPaBPaBPaBPawFaCmaCJaCKaCKaCLaCmaAHaAIaAIawFaCMaCNawFaCMaCNawFaCMaCNawFaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjaxjazVaAcaAraANaAsaAsaAsaAOaAraAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcaCOaCPaCQavcaaPavcaCRaCRaCRavcaaPavcavgaCSaCTavcaaPaaPaaPaaPaaPaaPaaPartaaParuaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCzaAZaAZaAZaBNaCAaCBaCBaCUaCVaCWaCXaCBaCBaCYaCdaCZaDaaDbaBNaDcaChaChaChaChawFaBPaCGaDdaDdaCGaBPaBPaBPaBPawFaCmaDeazGaDfaDgaCmaAHaAIaAIawFaDhawFawFaDhawFawFaDhawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFawFazVaAcaDiaDjaAsaAsaAsaDkaDlaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPavcaCRaCRaCRavcaaPawHaDmaDnaDoawJaaPavcaCRaCRaCRavcaaPaaPaaPaaPaaPaaPaaPartaruaruaruaruaruaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaBNaCAaCBaCBaCUaCWaCWaCXaCBaCBaCEaBNaBNaBNaBNaBNaDpaDpaDpaChaChawFaBPaBPaBPaBPaBPaBPaBPaDqaCGawFaCmaDeazGazGaDgaCmawFaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaDraxjaxjaDraAdaAcaDsaDtaDuaDuaDuaDtaDvaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPawHaDmaDnaDoawJaaPaaPaaPaaPaaPaaPaaPawHaDmaDnaDoawJaaPaaPaaPaaPaaPaaPaaPartaaParuaaParuaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaAFaAZaAZaAZaBNaDwaCBaCBaCUaDxaDyaCXaCBaCBaDzaCdaCeaCfaCgaBNaDAaDBaDCaChaChawFaBPaCGaDdaCIaCGaBPaBPaBPaBPawFaCmaDeazGazGaDgaCmaDDaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaAIaDraxjaxjaDraAdaAcaAcaDEaDFaDFaDFaDGaAcaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaAFaAZaAZaAZaAFaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaaPaAEaAZaAZaAZaBNaDHaCBaCBaCBaDIaDIaCBaCBaCBaCBaCDaCBaCBaCEaBNaDJaChaChaChaChawFaBPaCGaDdaDKaCGaBPaBPaBPaBPawFaCmaDeazGazGaDgaCmawFaAIaAIawFaAHaAHaAHaAHaAHaAHaAHaAHaAHawFawFawFawFawFawFawFawFawFawFawFawFaAIaAIawFawFawFawFawFawFawFawFazVaAcaAcaAcaAcaAcaAcaAcaAcaAcaAdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaAFaAFaAFaAFaBtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaBNaDLaDMaDNaDOaCBaCBaCBaCYaDNaDNaCdaCZaDaaDbaDPaDPaDPaDPaDPaDPaDPaDPaDPaDPaDPaDPaDPaDPaDPaDPawFaCmaDeazGaDQaDgaCmaAHaAIaAIawFaAIaDRaDSaDTaDUaAIaDVaDWaDXawFaDYaDYaDYaDYaDYaDYaDYaDYaDYaDYawFaAIaAIawFaaPaaPaaPaaPaaPaaPaaPazVazVazVazVazVazVazVazVazVazVazVaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAFaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaBNaBNaBNaBNaDZaCBaCBaEaaEbaBNaBNaBNaBNaBNaBNaDPaEcaEdaEeaDPaEfaEgaEgaEgaEgaEgaEgaEgaEgaEhaEiawFaCmaCMaEjaEjaEkaCmaAHaAIaAIaAHaAIaDRaElaEmaDUaAIaEnaEoaEpawFaDYaDYaDYaDYaDYaDYaDYaDYaDYaDYawFaAIaAIawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaAFaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaBNaEqaEraCdaEsaCBaCBaCBaEtaBNaEuaEvaEwaEwaExaDPaEcaEdaEyaDPaEgaEgaEgaEgaEzaEAaEgaEgaEgaEgaEgawFaCmaCmaCmaCmaCmaCmawFaAIaAIaAHaAIaAIaAIaAIaAIaAIaAIaAIaEBawFawFawFawFawFawFawFawFawFaDYaDYawFaAIaAIawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaAFaAFaAFaAFaAFaBtaruaruaruaruaruaruaruaruaruaruaruaaPaAEaAZaAZaAZaBNaDZaCBaECaCBaCBaCBaEaaEDaBNaEEaCUaCWaCXaEFaDPaEdaEdaEdaEGaEgaEgaEHaEgaEzaEAaEgaEIaEJaEKaEgawFawFaAHaAHaAHaAHawFawFaAIaAIaELaAIaAIaAIaAIaEMaENaEOaAIaAIawFaAIaAIaAIaAIaAIaAIaEPawFaDYaDYawFaAIaAIawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAFaruaaPaaPaEQaERaESaEQaERaERaETaEUaEVaERaEWaEXaruaruaAFaEYaAZaAZaBNaEsaCBaECaCYaDNaEZaFaaFbaBNaFcaFdaCWaCBaEFaDPaEdaEdaFeaDPaFfaEgaFgaEgaEzaEAaEgaEIaEJaEKaEgaDPaAIaAIaAIaAIaAIaAIaAIaAIaAIaAHaAIaAIaAIaAIaEOaEOaEPaAIaAIaFhaAIaFiaAIaAIaFiaAIaEOawFaDYaDYawFaAIaAIawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAEaaPaaPaEQaFjaFkaFlaFmaFnaFoaFnaFnaFnaFoaFpaFqaAEaAEaAEaAZaAZaAZaBNaECaECaCdaCdaCdaCdaCdaCdaBNaCdaFraCBaFsaFtaDPaFuaEdaFeaDPaFfaEgaEgaEgaFvaEAaEgaEIaFwaEKaEgaDPaAIaAIaAIaAIaAIaAIaAIaAIaAIaAHaFxaDUaAIaAIaAIaAIaAIaFyaAIawFaElaFzaFAaEOaFBaAIaEBawFaDYaDYawFaAIaAIawFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAEaaPaaPaFCaFDaFEaFDaFFaFDaFDaFDaFDaFDaFDaFDaFGaFHaCyaFHaAZaAZaAZaBNaFdaCBaFIaFJaFJaFJaFJaFJaFKaCdaCdaFLaCdaCdaDPaDPaDPaDPaDPaEzaEzaEzaEzaEzaEAaEgaEIaFMaEKaEgaDPaAHaAHaFNaAHaAHawFaBbaAIaAIawFaFOaDUaAIaAIaAIaAIaAIawFawFawFawFaAHaAHaAHaAHaAHawFawFaFPaFPawFaAIaAIawFaaPaaPaaPaaPaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaruaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaruaAFaAZaAZaAZaAEaaPaaPaFRaFSaFTaFUaFmaFVaFWaFVaFVaFVaFWaFXaFYaAEaAEaAEaAZaAZaAZaBNaFraCBaCBaCBaCBaCBaCBaCBaFIaFJaFZaCBaFIaGaaGbaDPaEgaEgaEgaEAaEAaEAaEAaEAaEgaEgaEgaEgaEgaEgaDPaGcaGdaAIaGeaGfawFaGgaGhaGiaFPaFPaGjaFPawFaAHaGkaAHawFaGlaGlaGlaGmaGnaGoaGpaGqaGlaGlaGlaFPaBbaAIaAIawFaaPaaPaaPaFQaFQaGraGraGraGraGraGraGsaGsaGsaGraGraGraGraGsaGsaGsaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaaPaaParuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaaPaaPaAEaAZaAZaAZaAFaruaaPaaPaFRaERaGuaFRaERaERaETaEUaEVaERaGvaGwaruaruaAFaAZaAZaAZaBNaFraCBaCBaEaaEaaEaaEaaEaaCBaCBaCBaCBaCBaEaaGxaDPaGyaEgaEgaEgaEgaEgaEgaEgaEgaEgaEgaEgaEgaGyaDPaAIaAIaAIaAIaAIawFaAIaAIaAIaGzaGlaGlaGAawFaAIaAIaAIawFaGlaGlaGlaGmaGBaGCaGDaGqaGlaGlaGlaFPaAIaAIaAIawFaaPaaPaaPaFQaGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaGEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaaPaaParuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaaPaaPaAEaAZaAZaAZaAFaAFaAFaAFaAFaBtaruaruaruaruaruaruaruaruaruaruaruaaPaAEaAZaAZaAZaBNaFraCBaCBaGFaGFaGFaGFaGFaCBaCBaCBaCBaCBaCBaEFaDPaEJaEgaEIaEJaEJaEKaEgaEgaEIaEJaEJaEKaEgaEJaDPaAIaAIaAIaAIaAIawFaAIaAIaAIaGzaGGaGHaGIawFaAIaAIaAIawFaGlaGlaGlaGJaGKaGLaGMaGNaGlaGlaGlaFPaAIaAIaAIawFaaPaaPaaPaFQaGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaaPaaParuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaaPaaPaAEaAZaAZaAZaAFaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaBNaFraCBaCBaDxaCBaCBaCBaDxaCBaFsaGOaFdaCBaCBaEFaDPaGPaEgaEIaFMaFwaEKaEgaEgaEIaFMaFwaEKaEgaGPaDPaAIaGQaGRaGSaGTawFaAHaGUaAHaFPaGVaGWaFPawFaGXaGYaGZawFaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaFPaAIaAIaAIawFaaPaaPaaPaFQaGraGraGraHaaFQaFQaFQaGtaGtaGtaFQaHbaHbaFQaGtaGtaGtaFQaFQaFQaFQaGtaGtaGtaFQaFQaGtaGtaGtaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaHcaHcaHcaAFaAFaaParuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaaPaAFaAFaHcaHcaHcaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaHcaHcaHcaBNaFraCBaFsaFdaCBaCBaFsaGOaFdaEFaBNaBNaHdaHdaBNaDPaGyaEgaEgaEgaEgaEgaEgaEgaEgaEgaEgaEgaEgaGyaDPaHeawFawFawFawFawFaGlaGlaGlaFPaGzaGzaFPawFawFawFawFawFaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaFPaAIaAIaAIawFaaPaaPaaPaFQaHfaGraGraFQaFQaHgaHhaHiaHhaHiaHjaHkaHkaHlaHiaHhaHiaHhaHmaHnaHnaHnaHnaHnaHnaHnaHnaHnaHnaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqA +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaHoaAZaAZaAFaAFaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaAFaAFaAZaHpaHqaHraAZaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAZaAZaHqaHraBNaFZaCBaEFaBNaFLaFLaBNaBNaFraEFaBNaHsaCBaCBaHtaDPaEJaEgaEIaEJaEJaEKaEgaEgaEIaEJaEJaEKaEgaEJaDPawFawFaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaFPaFPawFawFaFPaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaFPaAIaAIaAIawFaaPaaPaaPaFQaHfaGraGraFQaHgaHuaHvaHvaHvaHvaHwaHxaHxaHyaHvaHvaHvaHwaHzaHmaHAaHAaHAaHAaHAaHAaHAaHAaHAaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaHBaAZaAZaAYaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAYaAZaAZaHCaAZaAZaAYaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAYaAZaAZaHDaHraECaCBaCBaEFaBNaFdaCBaEFaBNaFraEFaBNaHEaCBaCBaHtaDPaGPaEgaEIaFMaFwaEKaEgaEgaEIaFMaFwaEKaEgaGPaDPawFaHFaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaHFaFPaFPawFaFPaHGaGlaGlaGlaGlaGlaGlaGlaGlaGlaHGaFPaBbaAIaAIaFQaFQaFQaFQaFQaHfaGraGraGtaHHaHIaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHJaHHaHKaHKaHKaHKaHKaHKaHKaHKaHKaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAZaHDaAZaAZaAZaAZaAFaAFaAFaAFaAEaAEaAEaAEaAEaAFaAFaAFaAFaAZaAZaAZaHDaHqaHLaAZaAZaAZaAFaAFaAFaAFaAEaAEaAEaAEaAEaAFaAFaAFaAFaAZaAZaAZaAZaHqaAZaECaCBaCBaEFaBNaFraCBaHMaBNaFraEFaBNaHNaCBaCBaHtaDPaDPaHOaHOaHOaHOaDPaHPaHPaDPaHOaHOaHOaHOaDPaDPaGlaGlaGlaGlaHQaHRaHSaHSaHSaHTaHUaGlaGlaGlaGlaFPaFPaFPaFPaFPaFPaFPaGlaGlaGlaFPaFPaFPaFPaFPawFaAIaAIaHVaGraGraGraFQaHfaGraGraGtaHWaHIaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHJaHWaHAaHAaHAaHAaHAaHAaHAaHAaHAaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAZaAZaAZaAZaHXaCyaHYaHXaCyaHZaIaaIbaCyaHYaHXaCyaHYaAZaAZaAZaAZaAZaAZaAZaAZaAZaHXaCyaHYaHXaCyaHZaIaaIbaCyaHYaHXaCyaHYaAZaAZaAZaAZaAZaAZaBNaIcaCBaFIaCdaFraIdaIeaCdaFZaFIaBNaIfaGOaGOaIgaBNaIhaIiaIjaIiaIjaGzaGlaGlaGzaIiaIkaIiaIiaIlaFPaGlaGlaGlaImaInaIoaIoaIoaIoaIoaIpaIqaGlaGlaGlaFPaIiaIjaIiaIhaIjaGzaGlaGlaGlaGzaIjaIiaIiaIrawFaAIaAIaFQaIsaGraItaGtaHfaGraGraFQaHzaHmaIuaIuaIuaIuaIvaHxaHxaIwaIuaIuaIuaIvaHgaHuaHKaHKaHKaHKaHKaHKaHKaHKaHKaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAZaAZaAZaAZaHXaCyaHYaHXaCyaHZaIxaIbaCyaHYaHXaCyaHYaAZaAZaAZaAZaAZaAZaAZaAZaAZaHXaCyaHYaHXaCyaHZaIxaIbaCyaHYaHXaCyaHYaAZaAZaAZaAZaAZaAZaBNaBNaECaECaCdaIyaIzaCdaCdaECaECaBNaBNaBNaBNaBNaBNaGzaGzaGzaGzaGzaGzaGlaGlaGzaGzaGzaGzaGzaGzaFPaGlaGlaIAaIBaIoaIoaIoaIoaIoaIoaIoaICaHUaGlaGlaFPaGzaGzaGzaGzaGzaGzaGlaGlaGlaGzaGzaGzaGzaGzaFPaIDaIDaFQaGraIEaIFaGtaHfaGraGraFQaFQaHzaHhaHiaHhaHiaHjaHkaHkaHlaHiaHhaHiaHhaHuaHnaHnaHnaHnaHnaHnaHnaHnaHnaHnaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaIGaIHaAEaAZaAZaAZaAZaIIaIJaIKaIIaIJaILaIMaINaIJaIKaIIaIJaIKaAZaAZaAEaIOaIGaIHaAEaAZaAZaIIaIJaIKaIIaIJaILaIMaINaIJaIKaIIaIJaIKaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaGlaGlaGlaGlaIPaGlaGlaIPaGlaGlaGlaHFaFPaHFaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaHFaFPaGlaGlaIQaIoaIoaIoaIRaISaITaIoaIoaIoaIQaGlaGlaFPaHGaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaHGaFPaGlaGlaGtaIUaIVaGtaFQaGraGraGraHaaFQaFQaFQaGtaGtaGtaFQaIWaIWaFQaGtaGtaGtaFQaFQaFQaFQaGtaGtaGtaFQaFQaGtaGtaGtaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaIXaCyaIYaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaIZaJaaIXaCyaJbaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaGlaGlaGlaGlaIPaGlaGlaIPaGlaGlaGlaGlaJcaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaJcaGlaGlaJdaIoaIoaIRaJeaJeaJeaITaIoaIoaJfaGlaGlaJcaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaJgaGraGraGraJhaGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaJiaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaGEaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaqu +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaCyaCyaJjaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaJkaAZaAZaAZaAZaAZaAZaAZaAZaJlaJmaAFaCyaJjaAZaAZaAZaAZaAZaAZaAZaAZaJkaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaGzaGlaGlaGlaFPaGlaGlaFPaGlaGlaGlaGlaJcaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaJcaGlaGlaJdaIoaIoaJnaJeaJoaJeaJpaIoaIoaJfaGlaGlaJcaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGtaGraGraGraGtaGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaJqaCyaJraAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaJsaCyaJqaCyaJraAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaGlaGlaGlaGlaIPaGlaGlaIPaGlaGlaGlaGlaJcaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaJcaGlaGlaJdaIoaIoaJtaJeaJeaJeaJuaIoaIoaJfaGlaGlaJcaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaJgaGraGraGraJhaGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaJvaJwaAEaAZaAZaAZaAZaJxaJyaJzaJxaJyaJAaJBaJCaJyaJzaJxaJyaJzaAZaAZaAEaJDaJvaJEaAEaAZaAZaJxaJyaJzaJxaJyaJAaJBaJCaJyaJzaJxaJyaJzaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaGlaGlaGlaGlaIPaGlaGlaIPaGlaGlaGlaHFaFPaHFaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaHFaFPaGlaGlaJFaIoaIoaIoaJtaJGaJHaIoaIoaIoaJIaGlaGlaFPaHGaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaHGaFQaJJaJJaFQaFQaFQaFQaFQaGraGraGraHaaFQaFQaFQaGtaGtaGtaFQaHbaHbaFQaGtaGtaGtaFQaFQaFQaFQaGtaGtaGtaFQaFQaGtaGtaGtaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAZaAZaAZaAZaHXaCyaHYaHXaCyaHZaIxaIbaCyaHYaHXaCyaHYaAZaAZaAZaAZaAZaAZaAZaAZaAZaHXaCyaHYaHXaCyaHZaIxaIbaCyaHYaHXaCyaHYaAZaAZaAZaAZaAZaAZaJKaJKaJLaJLaJKaJMaJMaJMaJKaJLaJLaJKaJKaJMaJMaJKaJKaGzaGzaGzaGzaGzaGzaGlaGlaGzaGzaGzaGzaGzaGzaFPaGlaGlaJNaJOaIoaIoaIoaIoaIoaIoaIoaJPaJQaGlaGlaFPaGzaGzaGzaGzaGzaGzaGlaGlaGzaGzaGzaGzaGzaGzaFQaJRaJRaJSaJTaJUaJVaGtaHfaGraGraFQaFQaHgaHhaHiaHhaHiaHjaHkaHkaHlaHiaHhaHiaHhaHmaHnaHnaHnaHnaHnaHnaHnaHnaHnaHnaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAZaAZaAZaAZaHXaCyaHYaHXaCyaHZaIaaIbaCyaHYaHXaCyaHYaAZaAZaAZaAZaAZaAZaAZaAZaAZaHXaCyaHYaHXaCyaHZaIaaIbaCyaHYaHXaCyaHYaAZaAZaAZaAZaAZaAZaJKaJWaJXaJXaJYaJZaKaaKaaKbaJXaKcaJKaKdaKeaKfaKgaJKaIkaIhaIiaIjaIjaGzaGlaGlaGzaIraKhaIjaIiaIiaFPaGlaGlaGlaKiaKjaIoaIoaIoaIoaIoaJPaInaGlaGlaGlaFPaKkaIiaIhaIiaIjaGzaGlaGlaGzaIiaIjaIiaKlaKhaFQaJRaJRaJRaJRaJRaJRaGtaHfaGraGraFQaHgaHuaHvaHvaHvaHvaHwaHxaHxaHyaHvaHvaHvaHwaHzaHmaHAaHAaHAaHAaHAaHAaHAaHAaHAaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAZaKmaKmaAZaAZaAZaAFaAFaAFaAFaAEaAEaAEaAEaAEaAFaAFaAFaAFaAZaAZaAZaHBaHqaHLaAZaAZaAZaAFaAFaAFaAFaAEaAEaAEaAEaAEaAFaAFaAFaAFaAZaAZaAZaHpaHqaAZaJLaJXaJXaJXaJXaJXaJXaJXaJXaJXaKnaJKaKoaJXaKpaKqaJKaKraKsaKsaKsaKsaKraKtaKtaKraKsaKsaKsaKsaKraKraGlaGlaGlaGlaJNaHRaKuaKuaKuaHTaJQaGlaGlaGlaGlaKvaKvaKvaKvaKvaKvaKvaKwaKwaKvaKvaKvaKvaKvaKvaFQaJRaJRaJRaJRaJRaJRaFQaHfaGraGraGtaHHaHIaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHJaHHaHKaHKaHKaHKaHKaHKaHKaHKaHKaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaHqaKmaAZaAYaAFaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAFaAYaAZaHDaHqaHraAZaAYaAFaAFaaPaaPaKxaKyaKzaKzaKzaKAaKBaaPaaPaAFaAFaAYaAZaHBaHqaHraJLaJXaJXaKCaKDaJXaJXaKCaKDaJXaKnaJKaKEaJXaJXaKFaJKaKGaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKGaKraFPaHFaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaHFaFPaKvaKIaKJaKJaKJaKJaKKaKKaKKaKKaKJaKJaKJaKJaKIaFQaJRaJRaKLaKMaJRaKLaGtaHfaGraGraGtaHWaHIaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHxaHJaHWaHAaHAaHAaHAaHAaHAaHAaHAaHAaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaHLaAZaAFaAFaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaAFaAFaAZaHDaHqaAZaAZaAFaAFaruaaPaKxaKNaKOaKPaKQaKRaKSaKTaKBaaParuaAFaAFaAZaAZaHqaAZaJKaKUaJXaKCaKDaJXaJXaKCaKDaJXaKnaJKaKVaJXaKpaKqaJKaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKraFPaFPaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaGlaFPaFPaKvaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaFQaJRaJRaKLaKMaJRaKLaGtaHfaGraGraFQaHzaHmaIuaIuaIuaIuaIvaHxaHxaIwaIuaIuaIuaIvaHgaHuaHKaHKaHKaHKaHKaHKaHKaHKaHKaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaHcaHcaHcaAFaAFaaParuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaaPaAFaAFaHcaHcaHcaAFaAFaaParuaKxaKNaKWaKXaKYaKXaKYaKXaKZaKTaKBaruaaPaAFaAFaHcaHcaHcaJKaLaaJXaKCaKDaJXaJXaKCaKDaJXaKnaJKaLbaLcaLdaLeaJKaKHaKHaLfaLgaLhaLiaKHaKHaLfaLjaLkaLiaKHaKHaKraaPaFPaFPaFPaFPaFPaGlaFPaGlaFPaFPaFPaFPaFPaaPaKvaKKaLlaLlaLlaLlaKKaKKaKKaKKaLlaLlaLlaLlaKKaFQaJRaJRaKLaKMaJRaKLaFQaHfaGraGraFQaFQaHzaHhaHiaHhaHiaHjaHkaHkaHlaHiaHhaHiaHhaHuaHnaHnaHnaHnaHnaHnaHnaHnaHnaHnaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaaPaaParuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaaPaaPaAEaAZaAZaAZaAEaaPaaParuaLmaKYaKYaKYaLnaLoaLpaKYaKYaKYaLmaruaaPaaPaAEaAZaAZaAZaJKaLaaJXaJXaJXaJXaJXaJXaJXaJXaKnaJKaJKaKoaLqaLraJKaKHaKHaLfaLsaLtaLiaKHaKHaLfaLuaLvaLiaKHaKHaKraaPaaPaFPaLwaLxaGlaGlaIoaGlaGlaLxaLyaFPaaPaaPaKvaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaKKaFQaJRaJRaKLaKMaJRaKLaGtaGraGraGraHaaFQaFQaFQaGtaGtaGtaFQaIWaIWaFQaGtaGtaGtaFQaFQaFQaFQaGtaGtaGtaFQaFQaGtaGtaGtaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaaPaaParuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaaPaaPaAEaAZaAZaAZaAEaaPaaParuaLzaLAaLBaLCaLDaLEaLDaLFaLGaLHaLzaruaaPaaPaAEaAZaAZaAZaJKaLaaJXaJXaKcaLIaLIaLIaLIaLIaLJaJKaLKaKbaJYaLLaJKaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKraaPaaPaFPaLwaLxaGlaGlaIoaGlaGlaLxaLyaFPaaPaaPaKvaKIaKJaKJaKJaKJaKKaKKaKKaKKaKJaKJaKJaKJaKIaFQaJRaJRaKLaKMaJRaKLaGtaGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaaPaaParuaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaaPaaPaAEaAZaAZaAZaAEaaPaaParuaLzaLMaLmaLNaLOaLPaLOaLQaLmaLMaLzaruaaPaaPaAEaAZaAZaAZaJKaJMaLRaJXaJKaLSaLTaLUaLVaLTaLWaJKaLaaJXaJXaLXaJKaKHaKHaLfaLYaLZaLiaKHaKHaLfaMaaMbaLiaKHaKHaKraaPaaPaFPaMcaGlaGlaGlaIoaGlaGlaGlaMdaFPaaPaaPaKvaKvaKvaKvaKvaKvaKvaKwaKwaKvaKvaKvaKvaKvaKvaFQaJRaJRaKLaKMaJRaKLaFQaGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGraGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaruaruaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaruaAFaAZaAZaAZaAFaruaruaruaLzaKYaLGaLzaMeaMfaMgaLzaLBaKYaLzaruaruaruaAFaAZaAZaAZaJKaLaaJXaJXaMhaKbaMiaJXaJXaMiaJYaMjaKbaJXaJXaMkaJKaKHaKHaLfaMlaMmaLiaKHaKHaLfaMnaMoaLiaKHaKHaKraaPaaPaFPaLwaLxaGlaGlaIoaGlaGlaLxaLyaFPaaPaaPaKvaMpaMqaMqaMqaMqaMpaMpaMpaMpaMraMsaMsaMsaMtaFQaJRaJRaKLaKMaJRaKLaFQaFQaGraGraGraGraGraGraMuaMuaMuaGraGraGraGraMuaMuaMuaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaLmaKYaLGaMvaMwaMxaMyaMvaLBaKYaLmaaPaaPaaPaAFaAZaAZaAZaJKaLaaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaMzaJKaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKHaKraaPaaPaFPaLwaLxaGlaGlaIoaGlaGlaLxaLyaFPaaPaaPaKvaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaFQaJRaJRaJRaJRaJRaJRaFQaFQaFQaGtaGtaGtaFQaGtaGtaGtaFQaGtaGtaGtaFQaGtaGtaGtaFQaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaKxaKNaLAaLGaMAaMwaMBaMyaMAaLBaLHaKTaKBaaPaaPaAFaAZaAZaAZaJKaLaaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaJXaMkaJKaKHaKHaKHaKHaKHaKHaMCaMCaMCaMCaMCaMCaMCaMCaKraaPaaPaMDaMDaMDaMEaMEaMFaMEaMEaMDaMDaMDaaPaaPaKvaMGaKvaMHaKvaMIaKvaMpaMpaKvaMJaKvaMKaKvaMLaFQaJRaJRaJRaJRaJRaJRaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaAEaAEaMMaMNaKYaLGaMOaLmaMPaLmaMQaLBaKYaMNaMMaAEaAEaAEaAZaAZaAZaJKaLaaJXaKcaLIaLIaLIaKUaKcaLIaLIaKUaJXaJXaJXaMzaJKaMRaMSaMSaKHaKHaMTaMUaMUaMUaMVaMUaMUaMUaMUaKraaPaaPaMDaMWaMXaMEaMXaMXaMXaMEaMXaMWaMDaaPaaPaKvaMYaKvaMYaKvaMYaKvaMpaMpaKvaMYaKvaMYaKvaMYaFQaJRaJRaMZaMZaMZaMZaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNbaKYaKYaKYaNcaNdaKYaKYaNcaKYaKYaKYaNbaNaaCyaNaaAZaAZaAZaJKaJMaJXaKnaJMaJMaJMaLaaKnaNeaLraLaaKcaNfaNgaNhaJKaNiaNjaNkaKHaKHaMTaNlaNmaNmaNmaNmaNmaNmaNmaKraaPaaPaMDaMXaNnaNoaMXaMXaMXaNoaNpaMXaMDaaPaaPaKvaKvaKvaKvaKvaKvaKvaMpaMpaKvaKvaKvaKvaKvaKvaFQaJRaJRaNqaNqaNqaNqaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNraKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaNraNaaCyaNaaAZaAZaAZaJKaNsaJXaJYaNtaNuaNvaKbaJYaNwaJKaNxaNyaJKaJKaJKaJKaNzaNAaNBaKHaKHaMTaNmaNmaNmaNmaNmaNmaNmaNmaKraaPaaPaMDaMEaMXaMEaMXaMXaMXaMEaMXaMEaMDaaPaaPaKvaNCaMpaNCaMpaNCaMraMpaMpaNDaNCaMpaNCaMpaNCaFQaJRaJRaJRaJRaJRaJRaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaAEaAEaMMaNEaKYaLGaMvaLBaKYaLGaMvaLBaKYaNFaMMaAEaAEaAEaAZaAZaAZaJKaNsaJXaJXaJXaJXaJXaJXaJXaNGaJKaNxaNHaNIaNIaNJaJKaNKaNLaNMaKHaKHaNmaNmaNmaNNaNOaNPaNQaNmaNmaKraaPaaPaMDaMXaMXaMXaMXaMXaMXaMXaMXaMXaMDaaPaaPaKvaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaMpaFQaNRaJRaJRaJRaJRaGtaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaMvaLBaKYaLGaNSaLBaKYaLGaNSaLBaKYaLGaMvaaPaaPaAFaAZaAZaAZaJKaNsaJXaJXaJXaNTaNUaJXaJXaNVaJKaNxaJXaNWaNXaNYaJKaKraKraKraKraKraKraKraKraKraKraKraKraKraKraKraMDaMDaMDaMXaMXaMXaMXaMXaMXaMXaMXaMXaMDaMDaMDaKvaNZaMpaNZaMpaNZaMraMpaMpaNDaNZaMpaNZaMpaNZaFQaGtaGtaGtaGtaGtaGtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaruaAFaAZaAZaOaaAFaaPaaPaNSaLBaKYaLGaNSaLBaLoaLGaNSaLBaKYaLGaNSaaPaaPaAFaAZaAZaAZaJKaObaJXaJXaJXaJXaJXaJXaJXaOcaJKaNxaJXaJXaOdaNYaJKaOeaOfaOfaOfaOgaMDaMXaMXaMXaMXaMXaMXaMXaMXaMXaMXaMXaMDaMDaOhaMDaMDaMXaMDaMDaOhaMDaMDaMXaMXaMDaMDaMDaKvaKvaKvaKvaKvaKvaKvaKvaKvaKvaKvaKvaKvaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaMAaLBaKYaLGaNSaLBaKYaLGaNSaLBaKYaLGaMAaaPaaPaAFaAZaAZaAZaJKaOiaJXaJXaJXaOjaOkaJXaJXaOlaJKaOmaOnaJXaOoaOpaJKaOqaJXaJXaJXaOraMDaMXaMDaMDaMDaMDaOsaMDaMDaMDaMXaMXaMXaMXaMXaMXaMDaMXaMDaMXaMXaMXaMXaMXaMXaMXaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaAEaAEaMMaOtaKYaLGaMAaLBaKYaLGaMAaLBaKYaOuaMMaAEaAEaAEaAZaAZaAZaJKaLaaJXaJXaJXaKcaLIaKUaJXaOvaJKaJKaJKaOwaJKaJKaJKaOqaJXaJXaJXaOraMDaMXaMDaOxaOyaOyaOyaOyaOzaMDaMDaMDaMDaMDaMDaMDaMDaOAaMDaMDaMDaMDaMDaMDaMDaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNbaKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaKYaNbaNaaCyaNaaAZaAZaAZaJKaLaaJXaKcaLIaOBaJKaJKaOCaJKaJKaODaOEaJXaNHaOFaJKaOEaJXaJXaJXaOGaMDaMXaMDaOxaOyaOyaOyaOyaOzaMDaOHaOIaOJaOIaOKaOLaOLaOLaOLaOLaOKaOLaOKaOLaOMaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaCxaCyaCzaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaCzaCyaCxaAZaAZaAZaNaaCyaNaaNraKYaKYaONaKYaKYaKYaKYaKYaONaKYaKYaOOaNaaCyaNaaAZaAZaAZaJKaJKaOPaJKaNeaJKaJKaOQaJXaORaJKaNxaJXaJXaJXaJXaOSaJXaJXaOTaJXaOUaMDaMXaMDaOVaOyaOyaOyaOyaOWaMDaOLaOXaOXaOXaOXaOXaOLaOLaOLaOXaOXaOXaOXaOYaOZaMDaMXaMDaMDaMDaMDaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAZaAZaAZaAEaAEaAEaPaaLmaPbaPcaKyaKAaPdaKyaKAaPcaPbaLmaPeaAEaAEaAEaAZaAZaAZaJKaPfaJXaPgaPhaPiaJKaPjaJXaPkaJKaPlaPmaPnaPoaPpaJKaPqaPraPraPraPsaMDaMXaMDaOVaPtaPuaPuaOyaOyaPvaOLaOLaPwaPxaPwaOLaOLaOLaOLaOLaPwaPxaPwaPyaOLaMDaMXaMXaMXaMXaMXaMXaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaaParuaruaruaruaruaruaruaruaruaruaruaaPaaPaaPaAFaAZaAZaAZaAFaaPaaPaMMaPzaPAaMMaPBaPCaPDaPEaPFaMMaPGaPHaMMaaPaaPaAFaAGaAGaAGaJKaPfaJXaPIaPJaPKaJKaPLaJXaPMaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaMDaMDaMXaMDaMDaMDaMDaMDaMDaMDaMDaOLaOXaOXaOXaOXaOXaOLaOLaOLaOXaOXaOXaOXaPNaOLaMDaMDaMDaMDaMDaMDaMDaMXaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaAFaruaruaruaruaaPaaPaaPaaPaaPaaPaaPaaPaaParuaruaruaruaAFaAZaAZaAZaAFaruaruaMMaPOaPOaMMaPPaPQaPDaPDaPRaMMaPOaPOaMMaruaruaAFaAZaAZaAZaJKaJKaPSaJKaJMaJMaJKaJKaOCaJKaJKaPTaPUaPVaJMaPWaPXaNtaPYaPYaPZaMDaMXaMXaMDaMDaQaaQaaQaaQaaQaaMDaQbaQbaQbaQbaQbaQbaQbaQbaQbaQbaQbaQbaQbaQcaQbaMDaQdaQdaQdaQdaQdaMDaMXaMXaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBtaAEaAEaAEaBtaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaBtaAEaAEaAEaBtaaPaaPaMMaQeaQfaMMaQgaPDaQhaQiaQjaMMaQkaQlaMMaaPaaPaBtaAZaAZaAZaJKaQmaJXaPgaQnaQoaJKaLaaJXaJYaNtaKbaJXaJYaJMaKbaJXaJXaJXaJXaKnaMDaMXaMDaMDaMDaQpaQpaQpaQpaQpaMDaQqaQraQraQraQraQraQraQraQraQraQraQraQraQsaQqaMDaQpaQpaQpaQpaQpaMDaMDaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAWaAXaAWaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAWaAWaAWaAEaaPaaPaPaaQtaQtaMMaQuaQvaPDaQwaQxaMMaQtaQtaPeaaPaaPaAEaAZaAZaAZaJKaQyaJXaJXaJXaQzaJKaLaaJXaJXaKcaLIaJXaJXaQAaJXaJXaJXaJXaJXaKnaMDaMXaMDaQBaQCaQDaQDaQDaQDaQDaQEaQraQraQraQraQraQraQraQraQraQraQraQraQraQsaQraQEaQFaQFaQFaQFaQFaQCaQGaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAEaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAEaAEaaPaaPaQHaQIaQIaQJaPcaQtaQtaQtaPcaQJaQIaQIaQKaaPaaPaAEaAZaAZaAZaJKaQLaJXaJXaOTaQMaJKaQNaJXaJXaKnaQOaJXaQPaJMaKUaJXaKpaJXaJXaKnaMDaMXaMDaQBaQCaQDaQQaQDaQQaQDaQEaQraQraQraQraQraQraQraQraQraQraQraQraQraQsaQraQEaQFaQRaQFaQRaQFaQCaQGaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaQHaQIaQIaQIaQKaaPaaPaaPaaPaaPaaPaAFaAZaAZaAZaJKaPfaJXaJXaJXaQSaJKaQTaJXaJXaQUaQVaJXaQWaJMaQXaQYaQZaRaaRaaRbaMDaMXaMDaQBaQCaQDaQDaRcaQDaQDaQEaQraQraQraQraQraQraQraRdaQraQraQraQraQraQsaQraQEaQFaQFaReaQFaQFaQCaQGaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaJKaRfaRgaRhaRiaRjaJKaRkaRlaRmaRnaRoaLIaOBaJKaJKaJKaJKaJKaJKaJKaMDaMXaMDaQBaQCaQDaQDaQDaQDaQDaQEaQraQraQraQraQraQraRpaRqaRpaQraQraQraQraQsaQraQEaQFaQFaQFaQFaQFaQCaQGaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaaPaaPaaPaaPaaPaaPaMDaMXaMDaQBaQCaQDaQQaQDaQQaQDaQEaQraQraQraQraQraQraRraRsaRtaQraQraQraQraQsaQraQEaQFaQRaQFaQRaQFaQCaQGaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaMDaMXaMDaMXaQCaQDaQDaQDaQDaQDaQEaQraQraQraQraQraQraQraRuaQraQraQraQraQraQsaQraQEaQFaQFaQFaQFaQFaQCaMXaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAFaaPaaPaaPaaPaaPaaPaMDaMXaMDaRvaMDaRwaRwaRwaRwaRwaMDaQqaQraQraQraQraQraQraRuaQraQraQraQraQraQsaQqaMDaRwaRwaRwaRwaRwaMDaRvaMDaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaBaaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaAZaBaaAFaaPaaPaaPaaPaaPaaPaMDaMXaMXaMXaMDaRxaRxaRxaRxaRxaMDaQbaQbaQbaQbaQbaQbaRyaRzaRyaQbaQbaQbaQbaQcaQbaMDaRAaRAaRAaRAaRAaMDaMXaMXaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAEaAEaAEaAEaAFaAFaAFaAFaAEaAEaAEaAEaAFaRBaRBaAFaAFaaPaaPaaPaaPaaPaaPaMDaMDaMDaMXaMDaMDaMDaMDaMDaMDaMDaRCaRDaRDaRDaRDaRDaREaRFaRCaRDaRDaRDaRDaRGaRCaMDaMDaMDaMDaMDaMDaMDaMXaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAGaAGaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaMDaMXaMXaMXaMXaMXaMXaMXaMDaRCaRCaRHaRCaRHaRCaRCaRIaRJaRCaRHaRCaRHaRKaRCaMDaMXaMXaMXaMXaMXaMXaMXaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaMDaMDaMDaMDaMDaMDaMDaMXaRLaRCaRCaRCaRMaRMaRMaRCaRCaRCaRMaRMaRMaRMaRMaRCaRLaMXaMDaMDaMDaMDaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaMDaMDaMDaRNaRNaRNaROaRPaRQaRRaRCaRSaRTaRUaRVaRWaRXaRYaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaMDaMDaMDaMDaMDaMDaMDaMDaMDaMDaMDaMDaMDaMDaMDaMDaMDaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSbaSaaSaaSaaScaScaScaSaaSaaScaScaScaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSdaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSeaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAFaAZaAZaAFaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSfaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSdaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSgaSgaSgaSgaSgaSgaSgaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaSaaShaSfaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSgaSgaSgaSgaSgaSgaSgaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaAEaAZaAZaAEaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaSaaSaaSiaSiaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSgaSgaSgaSgaSgaSgaSgaSgaSgaaPaSjaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSlaAEaAZaAZaAEaSjaSmaSmaSmaSmaSmaSmaSmaSmaSlaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaSaaSiaSnaSoaSiaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSpaSmaSmaSmaSmaSqaSkaSkaSkaSqaSkaSkaSkaSqaSraSgaSgaSgaSgaSgaSgaSgaSgaSgaSraSsaStaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSsaAFaAGaAGaAFaSsaSvaSwaSxaSyaSyaSzaSAaSBaSCaSlaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaSaaSiaSDaSEaSiaSaaSaaShaSaaSFaSaaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSGaSHaStaSIaSJaSsaSKaSKaSKaSsaSLaSLaSLaSsaSraSMaSMaSMaSMaSMaSMaSMaSMaSMaSraSsaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSNaSOaSPaSPaSOaSQaSRaSRaSRaSSaSTaSUaSRaSRaSVaSsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaSaaSaaSiaSiaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSWaSHaStaStaStaSsaSKaSKaSKaSsaSLaSLaSLaSsaSraSMaSMaSMaSMaSMaSMaSMaSMaSMaSraSsaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSsaSXaSYaSYaSXaSsaSZaTaaSRaSRaSRaSRaSRaSRaTbaSsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSfaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSdaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSWaSHaStaStaStaSsaSKaSKaSKaSsaSLaSLaSLaSsaSraSMaSMaSMaSMaSMaSMaSMaSMaSMaSraSsaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSsaSYaTcaTcaSYaSsaSRaSRaSRaTdaTeaTfaSRaSRaTgaSOaSmaSmaSlaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaShaSfaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSfaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSWaSHaStaStaStaSsaSKaSKaSKaSsaSLaSLaSLaSsaSraSMaSMaSMaSMaSMaSMaSMaSMaSMaSraSsaStaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSuaSsaSYaTcaTcaSYaSsaThaTiaSRaTjaTkaTlaSRaSRaSRaSRaSRaTmaSsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaSaaSaaSaaSaaTnaSaaToaSaaToaSaaTpaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaTqaSHaStaStaStaSsaSKaSKaSKaSsaSLaSLaSLaSsaSraSMaSMaSMaSMaSMaSMaSMaSMaSMaSraSNaSmaSmaSmaSmaSOaTraTraSOaSmaSmaSmaSmaSQaSYaTcaTcaSYaSsaTsaSRaSRaSRaSRaSRaSRaSRaSRaSRaSRaTmaSsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaSaaSaaSaaTtaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaSaaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSpaSmaSmaSOaTuaSOaTvaSOaTwaSOaTvaSOaTxaSOaTvaSOaSraSOaTvaSOaTyaSOaTvaSOaSraSOaSQaTzaSYaSYaSYaSYaTAaSYaSYaSYaSYaSYaSXaSsaSYaTcaTcaSYaSsaThaTiaSRaSRaTBaTBaTCaTDaTDaTEaSOaSmaTFaSmaSlaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaRZaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaTGaRZaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaTHaSXaSYaSYaSYaSYaSYaSYaTIaSYaSYaSYaTJaSYaSYaSYaSYaSYaSYaSYaTKaSYaSYaTLaTMaTNaSOaSYaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaSYaSOaSYaTcaTcaSYaSOaTOaTPaTQaTQaTOaTRaTPaSOaSmaSmaSQaTSaTcaTTaTUaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaTVaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTWaTVaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaTHaSYaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaSYaTXaSYaTcaTYaTYaTYaTYaTYaTYaTYaTYaTcaSYaTXaSYaTcaTcaSYaTXaSYaSYaSYaSYaSYaSYaSYaSYaSYaSYaTZaUaaUbaUcaUdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaTHaSYaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaUgaTcaTcaUhaUhaUhaUhaUhaUhaUhaUhaTcaTcaUgaTcaTcaTcaTcaUgaTcaTcaTcaTcaTcaTcaTcaTcaTcaSYaUiaSYaTcaUjaUdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaTHaSYaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaSYaTXaSYaTcaUaaUaaUaaUaaUaaUaaUaaUaaTcaSYaTXaSYaTcaTcaSYaTXaSYaSYaSYaSYaSYaSYaSYaSYaSYaSYaTZaTYaUbaUkaUdaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaTHaSXaSYaSYaSYaSYaSYaSYaUlaSYaSYaSYaUmaSYaSYaSYaUnaSYaSYaSYaUoaSYaSYaSYaSYaSXaSOaSYaTcaTcaTcaTcaTcaTcaTcaTcaTcaTcaSYaSOaSYaTcaTcaSYaSOaTOaTPaUpaTOaTPaSqaTOaTPaUgaUgaSQaUqaTcaUraUsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaaRaaRaaRaaRaaRaaRaaRaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaUuaSmaSmaSOaTuaSOaSqaSOaUvaSOaSqaSOaUwaSOaSqaSOaUxaSOaSqaSOaUyaSOaSqaSOaUzaSOaSQaSYaSYaSYaSYaSYaUAaSYaSYaSYaSYaSYaSXaSsaSYaTcaTcaSYaSsaUBaUCaUDaUEaUFaSsaUGaTcaTcaTcaSOaSmaSqaSmaUHaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaUIaUIaUIaUIaUIaUtaUJaUKaULaUtaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaqAaqAaaRaqAaqAaqAaqAaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSGaSHaStaStaStaSsaUMaUMaUMaUNaUOaUOaUOaUNaUPaUPaUPaUNaUQaUQaUQaSsaTcaTcaTcaSNaSmaSmaSmaSmaSOaURaURaSOaSmaSmaSmaSmaSQaSYaTcaTcaSYaSsaUSaUDaUDaUDaUSaSsaUTaTcaTcaTcaTcaUUaSsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaqAaqAaqAaqAaqAaqAaqAaUIaUIaUIaUIaUIaUtaUVaUKaUKaUtaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaqAaqAaaRaqAaqAaqAaqAaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSWaSHaStaStaStaSsaUMaUMaUMaUNaUOaUOaUOaUNaUPaUPaUPaUNaUQaUQaUQaSsaTcaTcaTcaSsaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaStaSsaSYaTcaTcaSYaSsaUXaUYaUDaUDaUDaSsaUGaTcaTcaUGaTcaUGaSsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaqAaqAaqAaUIaUIaUIaUtaUtaUtaUtaUIaUtaUtaUtaUtaUZaUtaUtaUtaUtaUtaUtaUtaUIaUIaUIaUIaUIaqAaqAaaRaqAaqAaqAaqAaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSWaSHaStaStaStaSsaUMaUMaUMaUNaUOaUOaUOaUNaUPaUPaUPaUNaUQaUQaUQaSsaTcaTcaTcaSsaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaSsaVaaTYaTYaVaaSsaTOaTPaVbaTOaTPaSsaUTaTcaUGaSOaSmaSmaUHaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaUIaUIaUIaUIaVcaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUtaUIaUIaUIaUIaUIaqAaqAaaRaqAaqAaqAaqAaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaSWaSHaStaStaStaSsaUMaUMaUMaUNaUOaUOaUOaUNaUPaUPaUPaUNaUQaUQaUQaSsaTcaTcaTcaSsaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaSsaVdaVdaVdaVdaSsaVeaUDaUDaUDaVeaSsaUGaTcaUTaSsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaUIaUIaUKaVcaVcaVcaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUtaVfaVgaUIaUIaUIaqAaqAaaRaqAaqAaqAaqAaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaTqaSHaStaVhaViaSsaUMaUMaUMaUNaUOaUOaUOaUNaUPaUPaUPaUNaUQaUQaUQaSsaVjaVkaVlaSsaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaSNaSOaTOaTPaSOaSQaUDaUDaUDaUDaUDaSsaUTaTcaUGaSsaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaUIaUIaVcaVcaVcaUIaUIaUIaUtaUtaUtaUtaUZaUtaUtaUtaUtaUZaUtaUKaUKaUKaUZaVmaVnaUIaUIaUIaqAaqAaaRaqAaqAaqAaqAaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaUuaSmaSmaSmaSmaTvaSkaSkaSkaTvaSkaSkaSkaTvaSkaSkaSkaTvaSkaSkaSkaTvaSraSraSraSsaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaUWaStaSsaaPaaPaaPaaPaSsaVeaUDaVeaUDaVeaSsaUGaTcaVoaUHaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaUIaVcaVcaUIaUIaUIaUIaUIaUIaUIaUIaUtaUKaUKaUVaUtaVpaUKaUtaUKaUKaUKaUZaVmaVqaUIaUIaUtaqAaqAaaRaqAaqAaqAaqAaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaUuaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaSkaUHaaPaaPaaPaaPaUuaSmaSmaSmaSmaSmaTvaSmaSmaUHaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaUIaVcaUIaUIaUIaqAaqAaUIaUtaUtaUtaUtaVraUKaUJaUtaVraUJaUtaUKaUKaUKaUtaVmaVmaVmaVsaUtaqAaqAaaRaqAaqAaqAaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaqAaqAaUIaVcaVcaUIaqAaqAaqAaUIaVtaVuaVuaUtaUtaUtaUtaUtaUtaUtaUtaUKaUKaUKaUtaVmaVmaVmaVvaUtaqAaqAaaRaqAaqAaqAaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUfaUeaaR +aaRaqAaUIaVcaVcaVcaVcaUIaUIaqAaqAaUIaVwaVxaVwaUZaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUtaVyaVzaVAaUtaUtaqAaqAaaRaqAaqAaqAaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaUeaaR +aaRaqAaVBaVcaVcaVcaVcaVcaUIaqAaqAaUtaVCaVwaVwaUZaUKaUKaUKaUKaUKaUKaUKaUKaUKaUKaUtaUIaUIaUIaUIaUIaqAaqAaaRaqAaqAaqAaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaRaaR +aaRaqAaVDaVEaVFaVcaVGaVcaVcaqAaqAaUtaVCaVHaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaUZaUtaUtaUtaUtaUtaUtaUtaUtaUtaUtaqAaqAaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaVIaVcaVFaVcaVFaVcaVcaqAaqAaUIaUIaUIaUtaUKaUKaUKaUKaUKaUKaUtaVJaVKaVKaVKaVLaUtaUKaUKaUKaUKaUKaUKaUtaqAaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaUIaVcaVFaVcaVMaVcaVcaqAaqAaaPaaPaqAaUtaUKaUJaUKaUKaUKaUKaUtaVKaVKaVNaVKaVKaUtaUKaUKaUKaUKaUJaUKaUtaqAaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaUIaVOaVcaVcaVcaVPaVcaqAaqAaaPaaPaqAaUtaUKaUKaUKaUKaUKaUKaUZaVKaVKaVQaVKaVKaUZaUKaUKaUKaUKaUKaUKaUtaqAaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaUIaUIaVcaVcaVcaVcaUIaqAaqAartaaPaaPaUtaUKaUKaUtaVRaVSaVTaUtaVKaVUaVVaVKaVWaUtaVRaVSaVTaUtaUKaUKaUtaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaUIaUIaUIaUIaVXaVYaUIaqAaruartaaPaaPaUtaUKaUKaUtaaPaaPaaPaUtaUtaVRaVSaVTaUtaUtaaPaaPaaPaUtaUKaUKaUtaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaUIaUIaUIaUIaUIaUIaqAaaPaaPaaPaaPaaPaVZaWaaWaaWbaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaVZaWaaWaaWbaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaVZaWcaWdaWbaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaVZaWcaWdaWbaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaWeaWfaWgaWhaWgaWfaWiaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaVZaWcaWdaWbaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaVZaWcaWdaWbaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaWeaWhaWjaWkaWlaWmaWnaWkaWoaWhaWiaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaWpaWaaWaaWqaaPaaPaaPaWpaaPaaPaaPaaPaaPaWqaaPaaPaaPaWpaWaaWaaWqaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaWeaWgaWjaWraWsaWkaWtaWuaWuaWkaWvaWwaWoaWgaWiaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaWyaWzaWxaaPaaPaaPaWxaWAaWBaWBaWBaWCaWxaaPaaPaaPaWxaWDaWEaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaWeaWjaWFaWGaWHaWHaWkaWIaWuaWuaWkaWJaWJaWKaWLaWoaWiaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaWMaWNaWxaaPaaPaWpaWxaWxaWOaWPaWQaWRaWxaWqaaPaaPaWxaWSaWTaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaWeaWjaWUaWVaWWaWHaWHaWXaWYaWuaWuaWXaWZaWZaWZaWZaXaaWoaWiaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaXbaXcaWxaaPaaPaWxaWxaXdaXeaXfaXeaXgaWxaWxaaPaaPaWxaXhaXiaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaWkaXjaXkaXlaWWaWHaWHaXmaWZaWZaWZaXnaWZaWZaWZaWZaWZaXoaWkaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaXpaWxaWxaWxaWxaWxaXqaXraXraXraXraXraXsaWxaWxaWxaWxaWxaXtaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaWeaWjaWHaXuaXuaWHaWHaWHaXvaXwaWZaXxaXvaXyaWZaXzaWZaWZaXAaWoaWiaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaXBaXCaXDaXEaXFaWxaXGaXraXraXraXraXraXGaWxaXHaXIaXJaXKaXLaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaWhaXMaWHaWHaWHaWHaWHaXNaWkaXwaWZaXOaWkaXPaWZaWZaXQaWZaWZaXRaWhaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaWxaXSaXTaXTaXTaXUaWxaWAaWBaWCaXVaWAaWBaWCaWxaXWaXTaXTaXXaXSaWxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaWeaXYaWiaXZaYaaWHaYbaYaaWeaXYaYcaXnaYdaXYaWiaYeaYfaWZaYgaYhaWeaXYaWiaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaYiaXSaXTaXTaXTaXTaXVaXraXraXraXraXraXraXraXVaXTaXTaYjaXTaXSaYiaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaWkaWZaWoaWgaYcaXmaYdaWgaYkaYlaYmaYnaYoaYpaYqaWgaYcaXnaYdaWfaWjaYraWkaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaYsaYtaXTaYuaYvaXTaWxaYwaYxaXraXraXraXraYyaWxaXTaYzaXTaYAaXSaYsaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaWhaYBaWZaYCaYDaWZaYEaYFaWXaYGaYnaWZaYHaYIaWXaYJaYnaWZaYnaYKaYLaYraWhaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaYMaYtaXTaXTaWxaYNaWxaWxaWxaYOaYPaYQaWxaWxaWxaYNaWxaYRaYSaYTaYMaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaWhaYUaWZaYVaWZaWZaWZaWZaXnaYnaWZaYWaWZaYnaXnaWZaWZaWZaWZaYXaYraYraWhaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaWpaWxaYYaYZaYZaWxaZaaZbaZaaYiaZcaZdaZeaYiaZfaZgaZhaWxaZiaZjaZkaWxaWqaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaWhaZlaWZaYnaYnaWZaZmaZnaXvaZoaYnaWZaYnaZpaXvaZqaYnaWZaYnaXvaZraZsaWhaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaqAaqAaaPaaPaaPaZtaWxaZuaZuaWxaWxaZaaZaaZaaYsaZcaZvaZeaYsaZhaZhaZwaWxaWxaZuaZuaWxaZxaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaWkaWZaWeaWgaYcaXnaYdaWgaYkaZyaZzaYnaZAaZBaYqaWgaYcaXnaYdaXYaWiaZCaWkaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaZtaZDaZDaZxaWxaZEaZFaZaaYMaZGaXraZGaYMaZhaZhaZHaWxaZtaZDaZDaZxaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaWoaWfaWjaZIaZJaWZaZKaZLaWoaWfaYcaXnaYdaWfaWjaZMaZNaWZaZOaZPaWoaWfaWjaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaWxaZaaZaaZaaWxaWxaXVaWxaWxaZQaZhaZRaWxaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaWhaZSaWZaWZaWZaWZaWZaZTaWkaZUaZVaZWaWkaZXaWZaWZaWZaWZaWZaWZaWhaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaWxaZaaZaaZYaWxaZZaXrbaaaWxaZhaZhbabaWxaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaWoaWiaYrbacaYrbadaWZbaeaWXbafbagbahaWXaZNaWZbaibajbakbalaWeaWjaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaWxaWxbamaZaaWxbanaXrbaoaWxbapbaqaWxaWxaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaWkaYrbarbasbataWZaWZaXnbauaWZbavaXnaWZaWZbawbaxbaybalaWkaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaZtaWxaWxaWxaWxbazbaAbaBaWxaWxaWxaWxaZxaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaWoaWibaCaYraYraWZbaDaXvbafaWZbahaXvaYnaWZbaEbaFbaGaWeaWjaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaZtaWxaZuaZuaZuaZuaZuaWxaZxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaWoaWibaHbaIaWZbaJaYqaYcaXnaYdaYkaYnaWZbalbalaWeaWjaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaZtaZDaZDaZDaZDaZDaZxaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaWoaWgaWibaKbaLaWkaWZaWZaWZaWkbaMbaNaWeaWgaWjaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaWoaWhaWiaWkbaObaPbaQaWkaWeaWhaWjaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaWoaXYaWgaWhaWgaXYaWjaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaiWaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaqAaqAaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaRaqAaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaquaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP +aaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaPaaP "} diff --git a/maps/polaris-4.dmm b/maps/polaris-4.dmm index 1eca616230a..95291cf44a6 100644 --- a/maps/polaris-4.dmm +++ b/maps/polaris-4.dmm @@ -15,289 +15,301 @@ "ao" = (/obj/structure/door_assembly/door_assembly_med,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) "ap" = (/obj/machinery/optable,/turf/simulated/floor/tiled/white/airless,/area/mine/explored) "aq" = (/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"ar" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"as" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"at" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"au" = (/obj/machinery/light,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"av" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_main_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = -25; req_access = list(10)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"aw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"ax" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(10)},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"ay" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"az" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_outer"; locked = 1; name = "Engineering Outpost"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"aA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"aB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"aC" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/storage) -"aD" = (/obj/machinery/cell_charger,/obj/structure/table/steel,/obj/structure/cable,/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"aE" = (/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/table/steel,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"aF" = (/obj/machinery/autolathe,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"aG" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/hallway) -"aH" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_main_sensor"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"aI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"aJ" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"aK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"aL" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/atmospherics) -"aM" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/outpost/engineering/telecomms) -"aN" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) -"aO" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_main_airlock"; pixel_x = -25; pixel_y = 0; req_access = list(10); tag_airpump = "eoutpost_main_pump"; tag_chamber_sensor = "eoutpost_main_sensor"; tag_exterior_door = "eoutpost_main_outer"; tag_interior_door = "eoutpost_main_inner"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"aP" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"aQ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Airlock"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"aR" = (/obj/machinery/pipedispenser/disposal,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"aS" = (/obj/machinery/pipedispenser,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"aT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/storage) +"ar" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/unexplored) +"as" = (/obj/item/weapon/ore,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/unexplored) +"at" = (/obj/structure/girder,/turf/simulated/floor/airless,/area/wreck/main) +"au" = (/turf/simulated/wall/skipjack,/area/wreck/main) +"av" = (/turf/simulated/floor/airless,/area/wreck/main) +"aw" = (/obj/effect/floor_decal/asteroid,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/unexplored) +"ax" = (/obj/item/stack/material/steel,/turf/simulated/floor/airless,/area/wreck/main) +"ay" = (/obj/item/stack/rods,/turf/simulated/floor/airless,/area/wreck/main) +"az" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/stack/rods,/turf/simulated/floor/airless,/area/wreck/main) +"aA" = (/obj/structure/frame{anchored = 1; frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/floor/tiled/airless,/area/wreck/main) +"aB" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/scalpel/laser3,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"aC" = (/obj/structure/table/steel_reinforced,/turf/simulated/floor/airless,/area/wreck/main) +"aD" = (/obj/structure/table/steel_reinforced,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"aE" = (/obj/effect/decal/mecha_wreckage/phazon,/turf/simulated/floor/airless,/area/wreck/main) +"aF" = (/obj/item/weapon/ore,/turf/simulated/floor/airless,/area/wreck/main) +"aG" = (/obj/item/weapon/circular_saw,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"aH" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/airless,/area/wreck/main) +"aI" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"aJ" = (/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"aK" = (/turf/simulated/floor/tiled/airless,/area/wreck/main) +"aL" = (/obj/effect/floor_decal/asteroid,/obj/effect/decal/cleanable/molten_item,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/unexplored) +"aM" = (/obj/effect/decal/mecha_wreckage/gygax/dark,/turf/simulated/floor/airless,/area/wreck/main) +"aN" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/airless,/area/wreck/main) +"aO" = (/obj/structure/table/rack,/turf/simulated/floor/airless,/area/wreck/main) +"aP" = (/obj/structure/table/rack,/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/airless,/area/wreck/main) +"aQ" = (/obj/effect/decal/cleanable/blood/gibs/robot/down,/turf/simulated/floor/airless,/area/wreck/main) +"aR" = (/obj/machinery/optable,/obj/effect/decal/remains/xeno,/obj/effect/decal/cleanable/blood/xeno,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"aS" = (/obj/item/weapon/material/shard/shrapnel,/turf/simulated/floor/airless,/area/wreck/main) +"aT" = (/obj/structure/table/rack,/turf/simulated/floor/tiled/airless,/area/wreck/main) "aU" = (/obj/machinery/door/airlock/glass_medical{name = "Medbay"; req_one_access = list(65,5)},/turf/simulated/floor/tiled/white/airless,/area/mine/explored) -"aV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) -"aW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/dark,/area/outpost/engineering/telecomms) -"aX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost TeleCommunications"; dir = 1},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) -"aY" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_inner"; locked = 1; name = "Engineering Outpost"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"aZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"ba" = (/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bb" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bc" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"aV" = (/obj/effect/decal/cleanable/blood/xeno,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"aW" = (/obj/item/weapon/ore,/obj/item/stack/rods,/turf/simulated/floor/airless,/area/wreck/main) +"aX" = (/obj/effect/overlay/wallrot,/turf/simulated/wall/skipjack,/area/wreck/main) +"aY" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"aZ" = (/obj/structure/window/phoronreinforced,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"ba" = (/obj/item/device/flashlight/flare,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bb" = (/obj/item/stack/material/wood,/obj/item/stack/material/wood,/obj/structure/ore_box,/obj/item/weapon/ore/iron,/obj/item/weapon/ore/iron,/obj/item/weapon/ore/iron,/turf/simulated/floor/airless,/area/wreck/main) +"bc" = (/obj/item/clothing/head/helmet/space/deathsquad,/obj/structure/table/rack,/obj/effect/decal/cleanable/molten_item,/turf/simulated/floor/tiled/airless,/area/wreck/main) "bd" = (/obj/structure/grille,/turf/simulated/floor/airless{icon_state = "white"},/area/mine/explored) -"be" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_engineering{name = "Telecommunications"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/outpost/engineering/telecomms) -"bg" = (/obj/structure/sign/vacuum{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bh" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_main_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access = list(10)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bi" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bj" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bk" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bl" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bm" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bn" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bo" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/binary/pump/on{dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bp" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bq" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (NORTHEAST)"; icon_state = "intact-scrubbers"; dir = 5},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"br" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bs" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Atmospherics"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4},/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics) -"bt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bu" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bv" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bw" = (/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bx" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"by" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bz" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bA" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bB" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bC" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bD" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bE" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bF" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bH" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bJ" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/clothing/gloves/yellow,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bK" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/cable_coil/yellow,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bL" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bM" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"bN" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bO" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bP" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bQ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bR" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bU" = (/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/wood{amount = 30},/obj/item/stack/material/plastic{amount = 10},/obj/structure/table/steel,/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bV" = (/obj/structure/table/rack,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/clothing/shoes/magboots,/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/obj/item/weapon/storage/briefcase/inflatable,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"bW" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"bX" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics) -"bY" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"bZ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"ca" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cb" = (/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/structure/table/steel,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"cc" = (/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/structure/table/steel,/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Storage"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"cd" = (/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"ce" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_o2_sensor"},/turf/simulated/floor/reinforced/oxygen,/area/outpost/engineering/atmospherics) -"cf" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{dir = 4; frequency = 1441; id_tag = "outpost_o2_out"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/oxygen,/area/outpost/engineering/atmospherics) -"cg" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"ch" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"ci" = (/obj/machinery/atmospherics/omni/mixer{tag_east = 0; tag_east_con = null; tag_north = 2; tag_south = 1; tag_south_con = 0.79; tag_west = 1; tag_west_con = 0.21},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cj" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"ck" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cl" = (/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cm" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cn" = (/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) -"co" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/power/emitter,/turf/simulated/floor/tiled/dark,/area/outpost/engineering/hallway) -"cp" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/solars) -"cq" = (/turf/simulated/floor/reinforced/oxygen,/area/outpost/engineering/atmospherics) -"cr" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "outpost_o2_in"; pixel_y = 1; use_power = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/oxygen,/area/outpost/engineering/atmospherics) -"cs" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"ct" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 10},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cu" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cv" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cw" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/wall/r_wall,/area/outpost/engineering/atmospherics) -"cy" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -20},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cz" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cA" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cB" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cC" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cD" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"cE" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"cF" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Power Supply"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"cG" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 1.5e+007; cur_coils = 3; input_attempt = 1; input_level = 750000; input_level_max = 750000; output_level = 750000; output_level_max = 750000; RCon_tag = "Outpost - Main"},/turf/simulated/floor,/area/outpost/engineering/solars) -"cH" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"cI" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"cJ" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/wall/r_wall,/area/outpost/engineering/atmospherics) -"cK" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cL" = (/obj/machinery/atmospherics/omni/filter{power_rating = 15000; tag_east = 1; tag_north = 3; tag_south = 4; tag_west = 2},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cM" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cN" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"cO" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Atmospherics"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics) -"cP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"cW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Outpost Solars"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"cX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"cY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"cZ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"da" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"db" = (/obj/structure/table/reinforced,/obj/item/stack/material/phoron{amount = 10},/obj/random/powercell,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/material/phoron{amount = 10},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dc" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/atmospherics) -"dd" = (/turf/simulated/floor/reinforced/nitrogen,/area/outpost/engineering/atmospherics) -"de" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "outpost_n2_in"; pixel_y = 1; use_power = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/engineering/atmospherics) -"df" = (/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Atmospherics"; dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'COMPRESSED GAS'."; name = "COMPRESSED GAS"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"dg" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"dh" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"di" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"dj" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"dk" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"dl" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"dm" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"dn" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"do" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Hallway East"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"dp" = (/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dq" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"ds" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dt" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"du" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_n2_sensor"},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/engineering/atmospherics) -"dv" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{dir = 4; frequency = 1441; id_tag = "outpost_n2_out"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/engineering/atmospherics) -"dw" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"dx" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Atmospherics"; dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"dy" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/machinery/light,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"dz" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"dA" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Hallway Central"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"dB" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/rest) -"dC" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Airlock"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dD" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/outpost/engineering/hallway) -"dE" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dG" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow,/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dH" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/kitchen) -"dI" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dJ" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dK" = (/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dL" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dM" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -20},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dN" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"dO" = (/obj/machinery/door/airlock/engineering{name = "Restrooms"; req_access = list(10)},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"dP" = (/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"dQ" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"dR" = (/obj/machinery/light{dir = 1},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Kitchen"; dir = 9},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"dS" = (/obj/machinery/computer/atmos_alert,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dT" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dU" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dV" = (/obj/structure/closet,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"dW" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dX" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dY" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"dZ" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"ea" = (/obj/structure/table/standard,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"eb" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"ec" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"ed" = (/obj/machinery/computer/shuttle_control/engineering,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"ee" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"ef" = (/obj/structure/flora/pottedplant{tag = "icon-plant-21"; icon_state = "plant-21"},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Break Room"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"eg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"eh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"ei" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/kitchen) -"ej" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"be" = (/obj/machinery/crystal,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced,/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel,/turf/simulated/floor/reinforced/phoron,/area/wreck/main) +"bf" = (/obj/machinery/compressor{dir = 4},/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/turf/simulated/floor/reinforced/phoron,/area/wreck/main) +"bg" = (/obj/item/device/gps,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bh" = (/obj/structure/ore_box,/turf/simulated/floor/airless,/area/wreck/main) +"bi" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bj" = (/obj/structure/closet/acloset,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bk" = (/obj/item/weapon/ore,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"bl" = (/obj/structure/bed,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"bm" = (/obj/item/clothing/under/color/pink,/obj/structure/table/steel_reinforced,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"bn" = (/obj/structure/table/rack,/obj/item/weapon/tank/jetpack/void,/obj/item/clothing/suit/space/syndicate/green,/obj/item/clothing/head/helmet/space/syndicate/green,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bo" = (/obj/effect/wingrille_spawn/phoron,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bp" = (/obj/structure/table/rack,/obj/item/weapon/material/shard/shrapnel,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bq" = (/obj/item/broken_device,/obj/structure/bed/chair{dir = 8},/obj/effect/decal/remains/robot,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"br" = (/obj/effect/decal/cleanable/blood/oil/streak,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bs" = (/obj/item/weapon/tank/oxygen/yellow,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bt" = (/obj/effect/decal/cleanable/blood/gibs/robot/down,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bu" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bv" = (/obj/effect/decal/cleanable/vomit,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bw" = (/obj/structure/AIcore,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bx" = (/obj/item/frame/apc,/obj/item/weapon/module/power_control,/obj/item/weapon/material/shard/shrapnel,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"by" = (/obj/item/device/flashlight/glowstick,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bz" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bA" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bB" = (/obj/item/robot_parts/head,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bC" = (/obj/item/stack/material/steel,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bD" = (/obj/item/clothing/under/color/lightblue,/obj/structure/bed,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"bE" = (/obj/structure/table/steel_reinforced,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"bF" = (/obj/item/clothing/under/color/lightpurple,/obj/structure/bed,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"bG" = (/obj/structure/dispenser{oxygentanks = 0; phorontanks = 0},/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bH" = (/obj/item/stack/material/glass{amount = 50; pixel_x = -2; pixel_y = 2},/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bI" = (/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/airless,/area/wreck/main) +"bJ" = (/obj/machinery/crystal,/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel,/turf/simulated/floor/reinforced/phoron,/area/wreck/main) +"bK" = (/obj/machinery/compressor{dir = 4},/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8},/obj/structure/window/phoronreinforced,/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/turf/simulated/floor/reinforced/phoron,/area/wreck/main) +"bL" = (/obj/structure/largecrate,/turf/simulated/floor/airless,/area/wreck/main) +"bM" = (/obj/effect/decal/cleanable/molten_item,/turf/simulated/floor/airless,/area/wreck/main) +"bN" = (/obj/structure/window/phoronreinforced{tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1},/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bO" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 4},/area/wreck/main) +"bP" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 4},/area/wreck/main) +"bQ" = (/turf/simulated/shuttle/wall{icon_state = "swall_straight"; dir = 1},/area/wreck/main) +"bR" = (/obj/structure/largecrate/hoverpod,/turf/simulated/floor/airless,/area/wreck/main) +"bS" = (/obj/item/stack/material/wood,/obj/item/stack/material/wood,/obj/item/stack/material/wood,/obj/effect/decal/mecha_wreckage/hoverpod,/turf/simulated/floor/airless,/area/wreck/main) +"bT" = (/obj/item/stack/material/steel,/obj/item/stack/material/steel,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bU" = (/obj/structure/table/rack,/obj/item/clothing/glasses/welding,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"bV" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/airless,/area/wreck/main) +"bW" = (/obj/item/frame/light,/turf/simulated/floor/airless,/area/wreck/main) +"bX" = (/obj/effect/decal/mecha_wreckage/mauler,/obj/item/weapon/material/shard/shrapnel,/turf/simulated/floor/airless,/area/wreck/main) +"bY" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/airless,/area/wreck/main) +"bZ" = (/obj/item/stack/material/steel,/obj/item/stack/rods,/turf/simulated/floor/airless,/area/wreck/main) +"ca" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/airless,/area/wreck/main) +"cb" = (/obj/item/weapon/circuitboard/teleporter,/turf/simulated/floor/tiled/white/airless,/area/wreck/main) +"cc" = (/obj/machinery/teleport/station,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"cd" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/floor/tiled/airless,/area/wreck/main) +"ce" = (/obj/machinery/teleport/hub,/turf/simulated/floor/tiled/airless,/area/wreck/main) +"cf" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/airless,/area/wreck/main) +"cg" = (/turf/simulated/shuttle/wall{icon_state = "swall_t"; dir = 8},/area/wreck/main) +"ch" = (/turf/simulated/floor/airless,/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall_c"},/area/wreck/main) +"ci" = (/turf/simulated/floor/airless,/turf/simulated/shuttle/wall{dir = 4; icon_state = "swall_c"},/area/wreck/main) +"cj" = (/turf/simulated/shuttle/wall{icon_state = "swall_s"; dir = 1},/area/wreck/main) +"ck" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/wreck/main) +"cl" = (/turf/simulated/shuttle/wall{icon_state = "swall15"; dir = 2},/area/wreck/main) +"cm" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/wreck/main) +"cn" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/space,/area/wreck/main) +"co" = (/turf/space,/area/mine/unexplored) +"cp" = (/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/abandoned) +"cq" = (/turf/simulated/wall/r_wall,/area/outpost/abandoned) +"cr" = (/turf/simulated/floor/airless,/area/outpost/abandoned) +"cs" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/material/shard,/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/airless,/area/outpost/abandoned) +"ct" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"cu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"cv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"cw" = (/turf/simulated/floor,/area/outpost/abandoned) +"cx" = (/obj/item/weapon/material/shard/shrapnel,/turf/simulated/floor/airless,/area/outpost/abandoned) +"cy" = (/turf/simulated/floor/tiled,/area/outpost/abandoned) +"cz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"cA" = (/obj/machinery/door/airlock/external,/turf/simulated/floor,/area/outpost/abandoned) +"cB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"cC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"cD" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/outpost/abandoned) +"cE" = (/obj/machinery/door/firedoor/border_only,/obj/structure/door_assembly/door_assembly_eng,/turf/simulated/floor,/area/outpost/abandoned) +"cF" = (/obj/structure/sign/vacuum{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"cG" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"cH" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor,/area/outpost/abandoned) +"cI" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/turf/simulated/floor,/area/outpost/abandoned) +"cJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/frame,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"cK" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/abandoned) +"cL" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/binary/pump/on{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"cM" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor,/area/outpost/abandoned) +"cN" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (NORTHEAST)"; icon_state = "intact-scrubbers"; dir = 5},/turf/simulated/floor,/area/outpost/abandoned) +"cO" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/outpost/abandoned) +"cP" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Atmospherics"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4},/turf/simulated/floor/plating,/area/outpost/abandoned) +"cQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{dir = 1},/turf/simulated/floor,/area/outpost/abandoned) +"cR" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"cS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"cT" = (/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"cU" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"cV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/outpost/abandoned) +"cW" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"cX" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"cY" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/outpost/abandoned) +"cZ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/outpost/abandoned) +"da" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/outpost/abandoned) +"db" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/outpost/abandoned) +"dc" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/abandoned) +"dd" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"de" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"df" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/outpost/abandoned) +"dg" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/turf/simulated/floor,/area/outpost/abandoned) +"dh" = (/obj/structure/table/rack,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"di" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/item/stack/cable_coil/yellow,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dj" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/outpost/abandoned) +"dk" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/outpost/abandoned) +"dl" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/abandoned) +"dm" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8},/turf/simulated/floor,/area/outpost/abandoned) +"dn" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1},/turf/simulated/floor,/area/outpost/abandoned) +"do" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dp" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dr" = (/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ds" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/outpost/abandoned) +"dt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"du" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dv" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dw" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_o2_sensor"},/turf/simulated/floor/reinforced/oxygen,/area/outpost/abandoned) +"dx" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/outpost/abandoned) +"dy" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{dir = 4; frequency = 1441; id_tag = "outpost_o2_out"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/oxygen,/area/outpost/abandoned) +"dz" = (/obj/machinery/atmospherics/omni/mixer{tag_east = 0; tag_east_con = null; tag_north = 2; tag_south = 1; tag_south_con = 0.79; tag_west = 1; tag_west_con = 0.21},/turf/simulated/floor,/area/outpost/abandoned) +"dA" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"dB" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dC" = (/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dD" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/dark,/area/outpost/abandoned) +"dE" = (/turf/simulated/floor/reinforced/oxygen,/area/outpost/abandoned) +"dF" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"dG" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "outpost_o2_in"; pixel_y = 1; use_power = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/oxygen,/area/outpost/abandoned) +"dH" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/turf/simulated/floor,/area/outpost/abandoned) +"dI" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 10},/turf/simulated/floor,/area/outpost/abandoned) +"dJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/outpost/abandoned) +"dK" = (/obj/structure/girder/displaced,/turf/simulated/floor,/area/outpost/abandoned) +"dL" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dM" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dN" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dO" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dP" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"dQ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/outpost/abandoned) +"dR" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor,/area/outpost/abandoned) +"dS" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable,/turf/simulated/floor,/area/outpost/abandoned) +"dT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'COMPRESSED GAS'."; name = "COMPRESSED GAS"; pixel_x = -32; pixel_y = 0},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor,/area/outpost/abandoned) +"dU" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"dV" = (/obj/machinery/atmospherics/omni/filter{power_rating = 15000; tag_east = 1; tag_north = 3; tag_south = 4; tag_west = 2},/turf/simulated/floor,/area/outpost/abandoned) +"dW" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"dX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/outpost/abandoned) +"dY" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Atmospherics"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/outpost/abandoned) +"dZ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ea" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eb" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ec" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ed" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ee" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ef" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Outpost Solars"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eg" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/outpost/abandoned) +"eh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ei" = (/obj/structure/table/reinforced,/obj/item/stack/material/phoron{amount = 10},/obj/random/powercell,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/material/phoron{amount = 10},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ej" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/outpost/abandoned) "ek" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"el" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/outpost/engineering/kitchen) -"em" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/vacuum{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"en" = (/obj/structure/table/standard,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"eo" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"ep" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"eq" = (/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"er" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"es" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"et" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Airlock"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"eu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"ev" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"ew" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"ex" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"ey" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access = list(10)},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"ez" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"eA" = (/obj/machinery/power/solar_control,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) -"eB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"eC" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"eD" = (/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"eE" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "edock_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = -25; req_access = list(10)},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"eF" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"eG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"eH" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"eI" = (/obj/machinery/vending/cigarette,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"eJ" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_inner"; locked = 1; name = "Solar Access"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/outpost/engineering/solars) -"eK" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) -"eL" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) -"eM" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"eN" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"eO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"eP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"eQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_inner"; locked = 1; name = "Engineering Dock Airlock"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"eR" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"eS" = (/obj/machinery/computer/crew,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"eT" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) -"eU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/engineering/solars) -"eV" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_solar_airlock"; pixel_x = 30; pixel_y = 0; req_access = list(10); tag_airpump = "eoutpost_solar_pump"; tag_chamber_sensor = "eoutpost_solar_sensor"; tag_exterior_door = "eoutpost_solar_outer"; tag_interior_door = "eoutpost_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_solar_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Solar Access"},/turf/simulated/floor,/area/outpost/engineering/solars) -"eW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) -"eX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/kitchen) -"eY" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"eZ" = (/obj/machinery/vending/coffee,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) -"fa" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"fb" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"fc" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "eoutpost_solar_sensor"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"fe" = (/obj/machinery/sleep_console,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) -"ff" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/rest) -"fg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/outpost/engineering/solars) -"fh" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor,/area/outpost/engineering/solars) -"fi" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "edock_pump"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"fj" = (/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Elevator"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "edock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "edock_airlock"; pixel_x = 30; pixel_y = 0; req_access = list(10); tag_airpump = "edock_pump"; tag_chamber_sensor = "edock_sensor"; tag_exterior_door = "edock_outer"; tag_interior_door = "edock_inner"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"fk" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) -"fl" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_outer"; locked = 1; name = "Solar Access"},/turf/simulated/floor,/area/outpost/engineering/solars) -"fm" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) -"fn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"fo" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_outer"; locked = 1; name = "Engineering Dock Airlock"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "edock_airlock"; name = "exterior access button"; pixel_x = -26; pixel_y = 0; req_access = list(10)},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"fp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"fq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) -"fr" = (/obj/machinery/light{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) -"fs" = (/obj/machinery/light{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) -"fu" = (/turf/simulated/wall,/area/outpost/engineering/hallway) -"fv" = (/turf/space,/area/shuttle/constructionsite/site) -"fw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) -"fx" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/outpost/engineering/solarsoutside/aft) +"el" = (/turf/simulated/floor/reinforced/nitrogen,/area/outpost/abandoned) +"em" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "outpost_n2_in"; pixel_y = 1; use_power = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/abandoned) +"en" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/meter,/turf/simulated/floor,/area/outpost/abandoned) +"eo" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 9},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/abandoned) +"ep" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/outpost/abandoned) +"eq" = (/obj/structure/girder/reinforced,/turf/simulated/floor,/area/outpost/abandoned) +"er" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"es" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"et" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ev" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ew" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ex" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/outpost/abandoned) +"ey" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ez" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eA" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/outpost/abandoned) +"eB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eC" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_n2_sensor"},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/abandoned) +"eD" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"eE" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{dir = 4; frequency = 1441; id_tag = "outpost_n2_out"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/abandoned) +"eF" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/machinery/light,/turf/simulated/floor,/area/outpost/abandoned) +"eG" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eH" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eI" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eJ" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Airlock"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eK" = (/obj/structure/cable,/turf/simulated/floor,/area/outpost/abandoned) +"eL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eM" = (/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eN" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eO" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eP" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eR" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eS" = (/obj/structure/closet,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eT" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eU" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eV" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eW" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eX" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eY" = (/obj/structure/table/standard,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"eZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fc" = (/obj/structure/disposalpipe/broken{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"fd" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/vacuum{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/outpost/abandoned) +"ff" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fg" = (/obj/structure/table/standard,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fh" = (/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"fi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"fj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"fk" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Airlock"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/abandoned) +"fl" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor,/area/outpost/abandoned) +"fm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fo" = (/obj/structure/table/standard,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fp" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/outpost/abandoned) +"fq" = (/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/frame{frame_type = "computer"; icon_state = "computer_0"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fr" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fs" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"ft" = (/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/outpost/abandoned) +"fu" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/outpost/abandoned) +"fv" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external,/turf/simulated/floor,/area/outpost/abandoned) +"fx" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) "fy" = (/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) -"fz" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) -"fA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) -"fB" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) -"fC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) -"fD" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) -"fE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) -"fF" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/outpost/engineering/solarsoutside/aft) -"fG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) +"fz" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"fA" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/motor,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fB" = (/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"fD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"fE" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/regular,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fF" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/abandoned) +"fG" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"fH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) "fI" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) +"fJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/material/shard{icon_state = "medium"},/turf/simulated/floor/airless,/area/outpost/abandoned) +"fK" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/outpost/abandoned) "fL" = (/obj/structure/grille,/turf/space,/area/space) "fM" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) "fN" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"fO" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) -"fP" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) -"fQ" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 9},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"fR" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; icon_state = "intact"; tag = "icon-intact (NORTHEAST)"},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) -"fS" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/o2{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/item/roller,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"fO" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"fP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"fQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/outpost/abandoned) +"fR" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/outpost/abandoned) +"fS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/outpost/abandoned) +"fT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/abandoned) +"fU" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/abandoned) +"fV" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/abandoned) +"fW" = (/turf/simulated/wall,/area/outpost/abandoned) +"fX" = (/obj/item/stack/flag/yellow,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) +"fY" = (/obj/machinery/light{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/outpost/abandoned) +"fZ" = (/obj/machinery/light{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/outpost/abandoned) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -438,43 +450,43 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahabababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababahahahahafaiafacacacajababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababahahahahahafafafafafafafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababahahahabahahahahafafafafahafafafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababahahahahahabahahahahahajafahafafafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahahahahahahahahababababahahahabahahahabahahahahahahafafahafahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahababababahahahahahahahahahahahahabababahahajahahahahahafafafafafahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababahahahahahahahahahababababababahahahahahababahafakalamafacahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababahahahahahababahacacajajajacahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababahahahahahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababababababahahahahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababananananabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahabababababababababababababahahabananananabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahabababababababababababahaoahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahabababababababababahahahabananananahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahabababababahahahabababananananajababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahahahabababababanapananajababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababajababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababarararararabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababararararasarararaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababatatauauauauavavarararawawarararaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababavayaxatazaBaAaDaCauavavavawasarararawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaEaFavavavaHaGaJaIaJaKaHavavavavavaLararaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaMaNaFaOaOauaJaJaJaJaJauaPaOavavavavasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaQaFavauauauaJaJaRaJaJauauauavavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaSavavavauauaTauaJaJaVaJaJauaTauauavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaWavavauauaKaKauaKaJaJaJaKaHaKaKauauavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaxauauaKaKaKauauaYaXaKaZaubaaKaKauaubbavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaFaubcaKaJaJaJaJaJaubfbeaubgaKaKaKaubhbhavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababauauauauauauaKaJaKaKaKaKauauauauauauaKaKauauauauauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababahahahahafaiafacacacajababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababauaCbiaKbjauauaYauauaJbkaJbmblaDblauaKaKaKbobnbpauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababahahahahahafafafafafafafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababataAbqbraKaKaKaJaAauaJaKaKaKaJaKaJauaKaKaKbobsaKauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababahahahabahahahahafafafafahafafafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababataAbtaKbubvaKaJbwaubxaKauaKaJaJaJauaKbyaKbzaKaKaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababahahahahahabahahahahahajafahafafafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababauaAbAbBaKaKaKaJaAauaJaKaKaKaJaKaJauaKaKaKboaKaKauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahahahahahahahahababababahahahabahahahabahahahahahahafafahafahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaybCbjauauaYauauaJaJaJbEbDaDbFauaKaKaKbobGaKauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahababababahahahahahahahahahahahahabababahahajahahahahahafafafafafahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababataubHaJaKaKaKaKauauauauauauaKaKauauauauauaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababahahahahahahahahahababababababahahahahahababahafakalamafacahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbIayaJaJaJaJaJaubKbJauaKaKaKaKaubLavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababahahahahahababahacacajajajacahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbMaKaKauauaYaubNbNauaKaKaKauaubLavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObPbPbPababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababahahahahahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababataKaKauaKaJaJaJaKaHaKaKauaubLavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQavbRbSavabababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababababababahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababataubTauaJaJaJaJaJaubUauauavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQbVavavavbWbQababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbXauauauaJaJaJaJaJauauauavbMavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQavavavavavbYababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababbZaOaOauaJaJaJaJaJaucaaOavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQavavavavavbYababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababavavaHaKcbaJaJaKaHavavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQavavavavavbQababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaybMauaCcdccceaCauavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQavavavavavbYababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababavauauauauauauauavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQavavavavavbYababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQbVavavavcfbQababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgchavavavciabababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjclckckckclabababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahababababababababababababababababananananabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacncmcmcmabababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahabababababababababababababahahabananananabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoararababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahabababababababababababahaoahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaararabababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahabababababababababahahahabananananahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaararabababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahabababababahahahabababananananajababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaararababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahahahahahahabababababanapananajababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababajababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -483,52 +495,52 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababahahabababababababababababababababahahahahahahahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababahahahahababababababababahahahahahahahacajaoajajacacahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababahahahahahahabababababababahahahahahananananananananacahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababaqarasasasataqahahahabababababahahahahajanananahahahananananahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababauaqavaqauaqawaqaqahahahababababahahahahahananananananananananahahahahahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaGayazaAaBaCaDaEaqaqahahahahajajahahanahanananananananananananahahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababaGaGaGaGaHaIaJaKaCaCaCaqaqaqaqahahananananahanahananananananananananacahahahahahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababaLaLaGaMaNaGaOaPaQaKaRaSaCaTaCaqaqaqahaUananahananananananahahanananananajahahahabababahahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaLaLaLaVaWaXaGayaYaAaZbababbbcaCaCaqaqaqbdananananananananananahanananananajahahahabababahahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababaLaLbeaLaGbfaGaGbgbhbiaCbjbkbabaaFaCaCaqahajajacahanahanananananananananananacahahahabababababababahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababaLbPbnbobpbqbrbsbtbubvbwbxbybabababzaCaqabababahahahahacananananananananahahahahahahabababababababahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaLaLbAbBbmbnbCbDaLbEbFbGaCbHbIbJbKbabLaCaCabababahahahahacajajahahahahahahahahahahababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaLblbNbOcKbQbQbQaLbRbSbTaCbUbabababababVaCabababahahahahahahahahahahahahahahabababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababaLaLaLaLbWbXaLaLaLaLbYbZcaaCaCcbccbabacdaCaCaCababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababaLcecfcgchcicjcjaLckclbFbGcmaCaCaCcncnaCaCcocpcpcpcpcpcpabababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababaqaqaLcqcrcsctcucvcwcxcycAczcPbibYclcBclclcCclclcpcDcEcFcGcpcpababababababababababababababababababababababahahabababababaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababcHcIcIcIcIcIcIcIcJcJcJdfcLcMbOcNcOeGcQaGcRcScTbtbtbtbtcUbtcVcWcXcYcZdadbcpababababababababababababababababababababababahahahaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcababababababaqaLdddecsfQdgfRdhcxdidjdkdldmbYdnclclcldoclaIcpdpdqdrdsdtcpabababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaLdudvdwdxdydzdzaLckclfPbGdAdBdBdBdCdCdBdBdDcpcpcpdEdFdGcpabababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababdHdHdHdHdHdHdHdHdHdHbYbZcadBdBdIdJdKdKdLdBdBdBabcpdMdFdpcpababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababdHdNdOdPdPdQdPdRdHbRbSbTdBdSdTdUdKdKdKdVdBababcpdWdXdYcpababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabahahababababdHdHdHdPdZeaebecdHedbFeedBefdKegdKdKdLdBdBababcpehdXdYcpababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeiejejejejejejekelemdPdZeneoepeqbtereseteuevewdKdKexdBabababcpeyezeAcpabababababababababahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahabdHdHeBdPeCdPdPeDcleEeFdCdKdKeHdKeIdBdBababahcpeJeKeLcpabababababababababahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahdHdHbMeNdPdPeOePeQaAaBdKdKfSeSdBdBabababaheTeUeVeWabababababababahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahdHeXdHeYeZaKfafbfcaKeMfedBffdBabababahaheWfgfheWababababababahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahdHdHdHaKficlfjaKdBdBdBaqaqahahahahahfkfleKfmahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahaGfnePfofpfqaGaqaqaqahahahahahaheRaxaqahahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahfufvfvfvfvfvfuahahahahahahahahahahfwahahahahahahahadahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahaheRfvfvfvfvfveRahahadahfxfxfxfxfxahfwahfxfxfxfxfxahadahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahaqfvfvfvfvfvaqahahadfyfzfAfAfAfAfBfCfBfDfDfDfDfEfyadahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahaqfvfvfvfvfvaqahahadahfFfFfFfFfFahfGahfFfFfFfFfFahadahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahaafvfvfvfvfvaqahahadahahahahahahahfGahahahahfyahahfIahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahaaaafvfvfvfvfvaqahahadahfxfxfxfxfxahfGahfxfxfxfxfxahadahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahfracfvfvfvfvfvacfsahfyfyfzfAfAfAfAfBfCfBfDfDfDfDfEfyadahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahfyacaqaqaqacfyahahadahfFfFfFfFfFahfGahfFfFfFfFfFahadahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahadahahahahahahahfGahahahahfyahahfyahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahadahfxfxfxfxfxahfGahfxfxfxfxfxahadahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahadfyfzfAfAfAfAfBfCfBfDfDfDfDfEfyadahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahfIahfFfFfFfFfFahfGahfFfFfFfFfFahadahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahadahahahahahahahfGahahahahahahahadahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahadahfxfxfxfxfxahfGahfxfxfxfxfxahadahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfyfzfAfAfAfAfBfCfBfDfDfDfDfEfyadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafLaefFfFfFfFfFahfGahfFfFfFfFfFaafLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafMaaaaaaaaaaahahfGahahahahahaaaafMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafLfLfLfLaeaefMaafGaaaefNfNfNfNfLfLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNaefOaefNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNaaaeaafNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafNfNfNfNfNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababaqaqaqaqaqaqaqahahahabababababahahahahajanananahahahananananahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababcpaqaqaqcpaqaqaqaqahahahababababahahahahahananananananananananahahahahahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababcqcscrcuctcqaqaqaqaqahahahahajajahahanahanananananananananananahahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababcqcqcqcqcrcrcrcvcqcqcqaqaqaqaqahahananananahanahananananananananananacahahahahahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababcqcqcqcwcwcqcrcxcrcvcycycqczcqaqaqaqahaUananahananananananahahanananananajahahahabababahahahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababcqcqcqcwcwcwcqcBcAcucCcycycycycqcqaqaqaqbdananananananananananahanananananajahahahabababahahahahahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababcqcqcDcqcqcEcqcqcFcwcGcqcIcHcycycJcqcqaqahajajacahanahanananananananananananacahahahabababababababahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababcqcKcMcLcOcNcQcPcScRcUcTcWcVcycycycXcqaqabababahahahahacananananananananahahahahahahabababababababahahahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababcqcqcYdacZcMdbdccqcydddecqdgdfdidhcycycqcqabababahahahahacajajahahahahahahahahahahababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababcqdkdjdmdldndndncqdpdodqcqdrcycycycycydhcqabababahahahahahahahahahahahahahahabababababababababababababahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababcqcqcqcqcwdscqcqcqcqdudtdvcqcqdrdrcycycycqcqcqababababababababababababababababababababababababababababahahahabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababcqdwdydxdAdzcwcwcqcwcydddedBcqcqcqdCdCcqcqdDcqcqcqcqcqcqabababababababababababababababababababababababahahababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababcqdEdGdFdIdHcwcwdKdJdMdLdqcGducydNcycydOcycycqdPdRdQdScqcqababababababababababababababababababababababahahabababababaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababcqcqcqdTdVdUdmdWdYdXdZcqebeaeccScScScSedcSeeefcSehegejeicqababababababababababababababababababababababahahahaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababcqelemdFeoencwcweqepesereuetduevcycycyewcyexcqcyezeyeBeAcqabababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababcqeCeEeDdAeFcwcwcqeGcyeHdeeIcqcqcqeJeJcqcqeKcqcqcqeteLcwcqabababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababcqcqcqcqcqcqcqcqcqcqdudtdvcqcqeMeNcycyeOcqcqcqabcqcyeLcycqababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababcqePcwcycycGcycycqdpdoeQcqcyeRcGcycycyeScqababcqeTeVeUcqababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabahabababababcqcqcqcyeWeYeXcwcqeMddeZcqcIcyfacycyeOcqcqababcqfbeVeUcqababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahabababfcekfefdcyeWfgfffifhfjcRflfkcWfmfncycyfocqabababcqfpfrfqcqabababababababababahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahabcqcqfscyetcycwftcwfueweJcycyetcyfvcqcqababahcqfwfzfxcqabababababababababahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahcqcqfAfBcycyfCfDcAcuctcycyfEcycqcqabababahfGfFcwfHabababababababahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahcqfJcqcycycvcwcwcwcvcwcwcqcBcqabababahahfHfFcwfHababababababahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahcqcqcqcvfKcycwcvcqcqcqaqaqahahahahahfOfwfzfPahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahcqfQfDfRfTfScqaqaqaqahahahahahahfVfUcpahahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahfWahahahahahfWahahahahahahahahahfXaqahahahahahahahadahahahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahfVahahahahahfVahahadahaqaqaqaqaqahaqahaqaqaqaqaqahadahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahaqahahahahahaqahahadfyaqaqaqaqaqaqaqaqaqaqaqaqaqfyadahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahaqahahahahahaqahahadahaqaqaqahahahaqahaqaqaqaqaqahadahahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahaqahahadahahahahahahahahahahahahfyahahfIahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahahadahaqaqaqaqaqahaqahaqaqaqaqaqahadahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahfYfWahahahahahfWfZahfyfyaqaqaqaqaqaqaqaqaqaqaqaqaqfyadahahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahfyfWaqaqaqfWfyahahadahaqahahaqaqahaqahaqaqaqaqaqahadahahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahahahadahahahahahahahaqahahahahfyahahfyahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahahadahahahaqaqaqahaqahaqaqahahaqahadahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahahadfyaqaqaqaqaqahahaqaqahahahaqfyadahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahahfIahaqaqaqaqaqahahahahahahaqaqahadahahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahahahadahahahahahahahaqahahahahahahahadahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahahahadahaqaqaqaqaqahaqahaqahahaqaqahadahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfyaaaqaqaqaqaqaqaqaqaqahahaqfyadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafLaeaaaaaaaqaqahaqahaqaqaqaaaaaafLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafMaaaaaaaaaaahahaqahahahahahaaaafMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefNfNfNfNfLfLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/polaris-5.dmm b/maps/polaris-5.dmm index 284c6cf9c13..c4ad365ec22 100644 --- a/maps/polaris-5.dmm +++ b/maps/polaris-5.dmm @@ -129,6 +129,7 @@ "cy" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "tox_airlock_pump"; tag_exterior_door = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; tag_interior_door = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; tag_chamber_sensor = "tox_airlock_sensor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/tvalve/bypass{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing) "cz" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing) "cA" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/outpost/research/mixing) +"cB" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_outer"; locked = 1; name = "Research Dock Airlock"; req_access = list(10,13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "research_outpost_dock"; name = "exterior access button"; pixel_x = -6; pixel_y = -26; req_one_access = list(13,65)},/turf/simulated/floor/tiled,/area/outpost/research/dock) "cC" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/purple{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway) "cD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/floor_decal/corner/purple,/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway) "cE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/floor_decal/corner/purple{dir = 10},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway) @@ -601,7 +602,7 @@ "lD" = (/obj/structure/sign/greencross,/turf/simulated/wall/r_wall,/area/outpost/research/medical) "lE" = (/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/effect/floor_decal/corner/purple{dir = 9},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) "lF" = (/obj/effect/floor_decal/corner/purple,/turf/simulated/floor/tiled/white,/area/outpost/research/dock) -"lG" = (/obj/structure/reagent_dispensers/water_cooler{bottle = 1},/turf/simulated/floor/wood,/area/outpost/research/dorms) +"lG" = (/obj/structure/reagent_dispensers/water_cooler/full,/turf/simulated/floor/wood,/area/outpost/research/dorms) "lH" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/wood,/area/outpost/research/dorms) "lI" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/outpost/research/dorms) "lJ" = (/obj/structure/table/glass,/obj/item/weapon/tape_roll,/turf/simulated/floor/wood,/area/outpost/research/dorms) @@ -734,11 +735,11 @@ "og" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/hallway/starboard) "oh" = (/obj/effect/floor_decal/industrial/warning/dust/corner{tag = "icon-warningcorner_dust (WEST)"; icon_state = "warningcorner_dust"; dir = 8},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) "oi" = (/obj/machinery/light/small{dir = 1},/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) -"oj" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_outer"; locked = 1; name = "Research Dock Airlock"; req_access = list(10,13)},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "research_outpost_airlock"; name = "exterior access button"; pixel_x = -6; pixel_y = -26; req_one_access = list(13,65)},/turf/simulated/floor/tiled,/area/outpost/research/dock) +"oj" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "research_outpost_dock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_one_access = list(13,65)},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) "ok" = (/turf/simulated/floor/tiled,/area/outpost/research/dock) "ol" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/outpost/research/dock) "om" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_inner"; locked = 1; name = "Research Outpost Dock"},/turf/simulated/floor/tiled,/area/outpost/research/dock) -"on" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1380; master_tag = "research_outpost_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 26; req_one_access = list(13,65)},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) +"on" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) "oo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) "op" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) "oq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) @@ -901,7 +902,7 @@ "rr" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/outpost/research/anomaly) "rs" = (/obj/machinery/atmospherics/omni/filter{tag_east = 1; tag_south = 2; tag_west = 3},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) "rt" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/outpost/research/anomaly) -"ru" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/landmark{name = "bluespacerift"},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) +"ru" = (/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/outpost/research/dock) "rv" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly) "rw" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) "rx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) @@ -1006,9 +1007,9 @@ "ts" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/outpost/research/anomaly) "tt" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/outpost/research/anomaly) "tu" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) -"tv" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/airlock/research{name = "Isolation Room 1"; req_access = list(65)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/research/anomaly) -"tw" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 2"; req_access = list(65)},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) -"tx" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 3"; req_access = list(65)},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) +"tv" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/airlock/research{name = "Isolation Room 1"; req_access = list(65)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/research/isolation_a) +"tw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/isolation_a) +"tx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/isolation_a) "ty" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) "tz" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor,/area/outpost/research/anomaly) "tA" = (/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/outpost/research/power) @@ -1024,23 +1025,23 @@ "tK" = (/obj/structure/cable/blue,/obj/machinery/power/smes/buildable/outpost_substation{charge = 500000; input_attempt = 1; input_level = 150000; output_level = 150000; RCon_tag = "Outpost - Research"},/turf/simulated/floor/plating,/area/outpost/research/power) "tL" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/outpost/research/power) "tM" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/plating,/area/outpost/research/power) -"tN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 1"; dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) -"tO" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) -"tP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) -"tQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 2"; dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) +"tN" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 2"; req_access = list(65)},/turf/simulated/floor/tiled,/area/outpost/research/isolation_b) +"tO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/isolation_b) +"tP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/isolation_b) +"tQ" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Isolation Room 3"; req_access = list(65)},/turf/simulated/floor/tiled,/area/outpost/research/isolation_c) "tR" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) -"tS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 3"; dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) -"tT" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_three"; dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) +"tS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/isolation_c) +"tT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/isolation_c) "tU" = (/turf/simulated/wall/r_wall,/area/outpost/research/power) "tV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/power) "tW" = (/obj/machinery/light/small{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) -"tX" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) +"tX" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_a) "tY" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) -"tZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/outpost/research/anomaly) +"tZ" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_a) "ua" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) -"ub" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) -"uc" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) -"ud" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) +"ub" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_a) +"uc" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_b) +"ud" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_b) "ue" = (/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) "uf" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) "ug" = (/turf/simulated/wall,/area/outpost/mining_main/north_hall) @@ -1227,7 +1228,7 @@ "xF" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/mining_main/refinery) "xG" = (/obj/machinery/floodlight,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/unexplored) "xH" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) -"xI" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/outpost/research/anomaly) +"xI" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_b) "xJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) "xK" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) "xL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "meoutpost_main_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = 25; req_access = newlist(); req_one_access = list(10,48,65)},/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) @@ -1249,9 +1250,9 @@ "yb" = (/turf/simulated/wall/r_wall,/area/outpost/mining_main/refinery) "yc" = (/turf/simulated/wall,/area/outpost/mining_main/refinery) "yd" = (/obj/machinery/space_heater,/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) -"ye" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_two"; dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) +"ye" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_c) "yf" = (/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) -"yg" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) +"yg" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_c) "yh" = (/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) "yi" = (/obj/machinery/door/airlock/atmos{req_one_access = list(10,48,65)},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/turf/simulated/floor/plating,/area/outpost/engineering/mining/atmospherics) "yj" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{tag = "icon-intact-supply (NORTHWEST)"; icon_state = "intact-supply"; dir = 9},/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{dir = 1},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/outpost/engineering/mining/atmospherics) @@ -1285,7 +1286,7 @@ "yL" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) "yM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) "yN" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/crowbar,/obj/machinery/newscaster{layer = 3.3; pixel_x = -30; pixel_y = 0},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly) -"yO" = (/obj/machinery/artifact_analyser,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) +"yO" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/outpost/research/isolation_c) "yP" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plating,/area/outpost/engineering/mining/atmospherics) "yQ" = (/obj/machinery/reagentgrinder,/obj/structure/table/glass,/obj/structure/window/reinforced,/obj/effect/floor_decal/corner/beige/full{dir = 4},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Sample Preparation"; dir = 8},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/outpost/research/analysis) "yR" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/outpost/engineering/mining/atmospherics) @@ -1566,7 +1567,7 @@ "Eg" = (/obj/machinery/atmospherics/binary/pump/on{dir = 4},/turf/simulated/floor/tiled,/area/outpost/mining_main/eva) "Eh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/mining_main/eva) "Ei" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/mining_main/eva) -"Ej" = (/obj/structure/bed,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/anomaly) +"Ej" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_a) "Ek" = (/obj/machinery/shieldwallgen,/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) "El" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) "Em" = (/obj/machinery/shieldwallgen,/obj/structure/extinguisher_cabinet{pixel_x = 7; pixel_y = -32},/turf/simulated/floor/tiled,/area/outpost/engineering/mining/hallway) @@ -1590,7 +1591,325 @@ "EE" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "EF" = (/obj/machinery/recharger/wallcharger{pixel_x = 32},/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) "EG" = (/obj/machinery/light{dir = 1},/obj/machinery/vending/hydronutrients,/turf/simulated/floor/tiled,/area/outpost/research/xenobiology) - +"EH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 1"; dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_a) +"EI" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_one"; dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_a) +"EJ" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_b) +"EK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 2"; dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_b) +"EL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_two"; dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_b) +"EM" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_c) +"EN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; use_power = 0},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Isolation Cell 3"; dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_c) +"EO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8},/obj/machinery/alarm/monitor/isolation{alarm_id = "isolation_three"; dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_c) +"EP" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_a) +"EQ" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_a) +"ER" = (/obj/machinery/artifact_analyser,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_a) +"ES" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_b) +"ET" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_b) +"EU" = (/obj/machinery/artifact_analyser,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_b) +"EV" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_c) +"EW" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_c) +"EX" = (/obj/structure/bed,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled/dark,/area/outpost/research/isolation_c) +"EY" = (/turf/simulated/wall,/area/mine/unexplored) +"EZ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Fa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Fb" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Fc" = (/obj/machinery/light,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/kitchen) +"Fd" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_main_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = -25; req_access = list(10)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) +"Fe" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTHWEST)"; icon_state = "warning_dust"; dir = 9},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) +"Ff" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Fg" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"Fh" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/hallway) +"Fi" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_outer"; locked = 1; name = "Engineering Outpost"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Fj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"Fk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"Fl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"Fm" = (/obj/machinery/cell_charger,/obj/structure/table/steel,/obj/structure/cable,/obj/item/frame/apc,/obj/item/weapon/module/power_control,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Fn" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/storage) +"Fo" = (/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/table/steel,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Fp" = (/obj/structure/table/steel,/obj/effect/floor_decal/industrial/warning/dust,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) +"Fq" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/kitchen) +"Fr" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"Fs" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"Ft" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Fu" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_main_sensor"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Fv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"Fw" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1379; id_tag = "eoutpost_main_pump"},/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Fx" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (EAST)"; icon_state = "warning_dust"; dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"Fy" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (WEST)"; icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"Fz" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/atmospherics) +"FA" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/outpost/engineering/telecomms) +"FB" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) +"FC" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"FD" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_main_airlock"; pixel_x = -25; pixel_y = 0; req_access = list(10); tag_airpump = "eoutpost_main_pump"; tag_chamber_sensor = "eoutpost_main_sensor"; tag_exterior_door = "eoutpost_main_outer"; tag_interior_door = "eoutpost_main_inner"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"FE" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Airlock"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"FF" = (/obj/machinery/pipedispenser,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"FG" = (/obj/machinery/pipedispenser/disposal,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"FH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/storage) +"FI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/dark,/area/outpost/engineering/telecomms) +"FJ" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) +"FK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost TeleCommunications"; dir = 1},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 82.1472; oxygen = 21.8366; temperature = 293.15},/area/outpost/engineering/telecomms) +"FL" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_main_inner"; locked = 1; name = "Engineering Outpost"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"FM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"FN" = (/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"FO" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"FP" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"FQ" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"FR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_engineering{name = "Telecommunications"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/outpost/engineering/telecomms) +"FS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_main_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = 25; req_access = list(10)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"FT" = (/obj/structure/sign/vacuum{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"FU" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"FV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"FW" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"FX" = (/obj/machinery/autolathe,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"FY" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"FZ" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/binary/pump/on{dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Ga" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Gb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (NORTHEAST)"; icon_state = "intact-scrubbers"; dir = 5},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Gc" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Gd" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Atmospherics"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4},/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics) +"Ge" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Gf" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Gg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Gh" = (/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gi" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Gj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gk" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gl" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gm" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Gn" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Go" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Gp" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Gq" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Gr" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Gs" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Gt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Gu" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gv" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gw" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/cable_coil/yellow,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gx" = (/obj/structure/table/rack,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/cable_coil/yellow,/obj/item/stack/cable_coil,/obj/item/weapon/module/power_control,/obj/item/weapon/module/power_control,/obj/item/clothing/gloves/yellow,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gy" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Gz" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (EAST)"; icon_state = "warning_dust"; dir = 4},/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"GA" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (WEST)"; icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"GB" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GC" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GD" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GE" = (/obj/machinery/atmospherics/binary/pump/on{dir = 8},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GF" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GG" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"GH" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"GI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"GJ" = (/obj/item/stack/material/plasteel{amount = 10},/obj/item/stack/material/wood{amount = 30},/obj/item/stack/material/plastic{amount = 10},/obj/structure/table/steel,/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"GK" = (/obj/structure/table/rack,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/suit/space/void/engineering,/obj/item/clothing/shoes/magboots,/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/obj/item/weapon/storage/briefcase/inflatable,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"GL" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics) +"GM" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GN" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"GO" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"GP" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"GQ" = (/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/structure/table/steel,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"GR" = (/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/structure/table/steel,/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Storage"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"GS" = (/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"GT" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_o2_sensor"},/turf/simulated/floor/reinforced/oxygen,/area/outpost/engineering/atmospherics) +"GU" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GV" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{dir = 4; frequency = 1441; id_tag = "outpost_o2_out"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/oxygen,/area/outpost/engineering/atmospherics) +"GW" = (/obj/machinery/atmospherics/omni/mixer{tag_east = 0; tag_east_con = null; tag_north = 2; tag_south = 1; tag_south_con = 0.79; tag_west = 1; tag_west_con = 0.21},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GX" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GY" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"GZ" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Ha" = (/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Hb" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Hc" = (/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/engineering/storage) +"Hd" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/power/emitter,/turf/simulated/floor/tiled/dark,/area/outpost/engineering/hallway) +"He" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/solars) +"Hf" = (/turf/simulated/floor/reinforced/oxygen,/area/outpost/engineering/atmospherics) +"Hg" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Hh" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "outpost_o2_in"; pixel_y = 1; use_power = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/oxygen,/area/outpost/engineering/atmospherics) +"Hi" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Hj" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 10},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Hk" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Hl" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Hm" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -20},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Hn" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/wall/r_wall,/area/outpost/engineering/atmospherics) +"Ho" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Hp" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1; icon_state = "map"; tag = "icon-manifold-f (NORTH)"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Hq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Hr" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Hs" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Ht" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Hu" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Power Supply"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Hv" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Hw" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes/buildable{charge = 1.5e+007; cur_coils = 3; input_attempt = 1; input_level = 750000; input_level_max = 750000; output_level = 750000; output_level_max = 750000; RCon_tag = "Outpost - Main"},/turf/simulated/floor,/area/outpost/engineering/solars) +"Hx" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (WEST)"; icon_state = "warning_dust"; dir = 8},/obj/effect/floor_decal/industrial/warning/dust,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) +"Hy" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/obj/effect/floor_decal/industrial/warning/dust,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) +"Hz" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (SOUTHEAST)"; icon_state = "warning_dust"; dir = 6},/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) +"HA" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTHWEST)"; icon_state = "warning_dust"; dir = 9},/obj/effect/floor_decal/industrial/warning/dust,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) +"HB" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"HC" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/wall/r_wall,/area/outpost/engineering/atmospherics) +"HD" = (/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Atmospherics"; dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'COMPRESSED GAS'."; name = "COMPRESSED GAS"; pixel_x = -32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"HE" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"HF" = (/obj/machinery/atmospherics/omni/filter{power_rating = 15000; tag_east = 1; tag_north = 3; tag_south = 4; tag_west = 2},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"HG" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"HH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"HI" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Atmospherics"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/outpost/engineering/atmospherics) +"HJ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"HK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"HL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"HM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"HN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"HO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"HP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"HQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Outpost Solars"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"HR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"HS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"HT" = (/obj/structure/table/reinforced,/obj/item/stack/material/phoron{amount = 10},/obj/random/powercell,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/stack/material/phoron{amount = 10},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"HU" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"HV" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"HW" = (/turf/simulated/floor/reinforced/nitrogen,/area/outpost/engineering/atmospherics) +"HX" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 4; frequency = 1441; icon_state = "map_injector"; id = "outpost_n2_in"; pixel_y = 1; use_power = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/engineering/atmospherics) +"HY" = (/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"HZ" = (/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 9},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Ia" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Ib" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; icon_state = "intact"; tag = "icon-intact (NORTHEAST)"},/obj/machinery/meter,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Ic" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Id" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Ie" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"If" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Ig" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Ih" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Ii" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Hallway East"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Ij" = (/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Ik" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Il" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Im" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"In" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Io" = (/obj/machinery/air_sensor{frequency = 1441; id_tag = "outpost_n2_sensor"},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/engineering/atmospherics) +"Ip" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Iq" = (/obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{dir = 4; frequency = 1441; id_tag = "outpost_n2_out"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/reinforced/nitrogen,/area/outpost/engineering/atmospherics) +"Ir" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/obj/machinery/light,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Is" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Atmospherics"; dir = 1},/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"It" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/outpost/engineering/atmospherics) +"Iu" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/landmark{name = "bluespacerift"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Iv" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Hallway Central"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Iw" = (/turf/simulated/wall/r_wall,/area/outpost/engineering/rest) +"Ix" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Airlock"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"Iy" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/outpost/engineering/hallway) +"Iz" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"IA" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable/yellow,/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"IB" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"IC" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/mine/explored) +"ID" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"IE" = (/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"IF" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"IG" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"IH" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -20},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"II" = (/obj/machinery/door/airlock/engineering{name = "Restrooms"; req_access = list(10)},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IJ" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IK" = (/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IL" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 22},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IM" = (/obj/machinery/light{dir = 1},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Kitchen"; dir = 9},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IN" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"IO" = (/obj/machinery/computer/atmos_alert,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"IP" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"IQ" = (/obj/structure/closet,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"IR" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"IS" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"IT" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"IU" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IV" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IW" = (/obj/structure/table/standard,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IX" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"IY" = (/obj/machinery/computer/shuttle_control/engineering,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"IZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Ja" = (/obj/structure/flora/pottedplant{tag = "icon-plant-21"; icon_state = "plant-21"},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/camera/network/engineering_outpost{c_tag = "Engineering Outpost Break Room"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"Jb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"Jc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Jd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Je" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Jf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/vacuum{pixel_x = -32; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"Jg" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/outpost/engineering/kitchen) +"Jh" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"Ji" = (/obj/structure/table/standard,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"Jj" = (/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"Jk" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"Jl" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Jm" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Airlock"},/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"Jn" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Jo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"Jp" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"Jq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"Jr" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"Js" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = -25; req_access = list(10)},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Jt" = (/obj/machinery/power/solar_control,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Ju" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/outpost/engineering/solars) +"Jv" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Jw" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{dir = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"Jx" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"Jy" = (/obj/machinery/door/airlock/glass_engineering{name = "Break Room"; req_access = list(10)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"Jz" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "edock_airlock"; name = "interior access button"; pixel_x = -26; pixel_y = -25; req_access = list(10)},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"JA" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"JB" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"JC" = (/obj/machinery/vending/cigarette,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"JD" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_inner"; locked = 1; name = "Solar Access"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/turf/simulated/floor,/area/outpost/engineering/solars) +"JE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) +"JF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) +"JG" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"JH" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/donkpockets,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"JI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"JJ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_inner"; locked = 1; name = "Engineering Dock Airlock"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"JK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"JL" = (/obj/machinery/computer/crew,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"JM" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/o2{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -28},/obj/item/roller,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"JN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/outpost/engineering/solars) +"JO" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) +"JP" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) +"JQ" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eoutpost_solar_airlock"; pixel_x = 30; pixel_y = 0; req_access = list(10); tag_airpump = "eoutpost_solar_pump"; tag_chamber_sensor = "eoutpost_solar_sensor"; tag_exterior_door = "eoutpost_solar_outer"; tag_interior_door = "eoutpost_solar_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eoutpost_solar_sensor"; pixel_x = 0; pixel_y = 25},/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Solar Access"},/turf/simulated/floor,/area/outpost/engineering/solars) +"JR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/kitchen) +"JS" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"JT" = (/obj/machinery/vending/coffee,/turf/simulated/floor/tiled,/area/outpost/engineering/kitchen) +"JU" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"JV" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"JW" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "eoutpost_solar_sensor"; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"JX" = (/obj/machinery/sleep_console,/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"JY" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor/tiled,/area/outpost/engineering/rest) +"JZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/rest) +"Ka" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/outpost/engineering/solars) +"Kb" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "eoutpost_solar_pump"},/obj/machinery/light/small{dir = 4; pixel_y = 8},/turf/simulated/floor,/area/outpost/engineering/solars) +"Kc" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/obj/effect/floor_decal/industrial/warning/dust,/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"Kd" = (/obj/effect/floor_decal/industrial/warning/dust{tag = "icon-warning_dust (NORTH)"; icon_state = "warning_dust"; dir = 1},/obj/effect/floor_decal/industrial/warning/dust,/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/engineering/kitchen) +"Ke" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "edock_pump"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Kf" = (/obj/machinery/camera/network/engineering_outpost{c_tag = "ENG - Outpost Elevator"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "edock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "edock_airlock"; pixel_x = 30; pixel_y = 0; req_access = list(10); tag_airpump = "edock_pump"; tag_chamber_sensor = "edock_sensor"; tag_exterior_door = "edock_outer"; tag_interior_door = "edock_inner"},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Kg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eoutpost_solar_outer"; locked = 1; name = "Solar Access"},/turf/simulated/floor,/area/outpost/engineering/solars) +"Kh" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) +"Ki" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/solars) +"Kj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"Kk" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "edock_outer"; locked = 1; name = "Engineering Dock Airlock"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "edock_airlock"; name = "exterior access button"; pixel_x = -26; pixel_y = 0; req_access = list(10)},/turf/simulated/floor/tiled,/area/outpost/engineering/hallway) +"Kl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"Km" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/engineering/hallway) +"Kn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eoutpost_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(10)},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/kitchen) +"Ko" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/kitchen) +"Kp" = (/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/kitchen) +"Kq" = (/turf/space,/area/shuttle/constructionsite/site) +"Kr" = (/turf/simulated/wall,/area/outpost/engineering/hallway) +"Ks" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/mine/explored) +"Kt" = (/obj/structure/grille,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) +"Ku" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/outpost/engineering/solarsoutside/aft) +"Kv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) +"Kw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) +"Kx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) +"Ky" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) +"Kz" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) +"KA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) +"KB" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space) +"KC" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/kitchen) +"KD" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/outpost/engineering/solarsoutside/aft) +"KE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) +"KF" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/airless,/area/outpost/engineering/atmospherics) +"KG" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored) +"KH" = (/obj/machinery/light{dir = 4},/turf/simulated/mineral/floor/ignore_mapgen,/area/outpost/engineering/kitchen) +"KI" = (/obj/machinery/light{dir = 8},/turf/simulated/mineral/floor/ignore_mapgen,/area/outpost/engineering/kitchen) +"KJ" = (/obj/structure/grille,/turf/space,/area/space) +"KK" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space) +"KL" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) +"KM" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft) + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1714,7 +2033,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamcmEmEmEmEmEjrmemFmgmgmgmGjrjrjzjAmHjrjtqclImJmKlLjPjCmLmMjCmLmMjCmNmOjtmPmQmRmSmPjvqomUmVmWmYmXjvmZnakZkZmbdldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanbmEmEmEmEmEncndnenfmgmgjrjrngnhninjnkjtjtjtjCkhkikjjCjtjtjCjCjCjCjtjtjtnlnmnnnonpjvjvjvnqnrnsntnumPnvnwkZmbdldldldldldldldldldldldldldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagNmEmEmEmEmEnxnynznxnAmgqFqEnBlFnCnDnEmgnFnGnHnInJnKnLnMnNqKnPnQqppXnFnTnUnVnWnXnTnTnYrqoamRobocodoeofogohmbdldldldldldldldldldldldldldldldldldldldldldldldldldldldldloidldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagNmEmEmEmEmEojokolomonooopopoqrujrosotouovowoxoyoyozoyoAoBoCoDoDoEoDoFoGoHoImPoJoKoGoLCMoMoNoOoPoQoRoSoToUmboVoVoVoVoVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagNmEmEmEmEmEcBokolomojoooponoqrujrosotouovowoxoyoyozoyoAoBoCoDoDoEoDoFoGoHoImPoJoKoGoLCMoMoNoOoPoQoRoSoToUmboVoVoVoVoVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagNmEmEmEmEmEoWoXoYoWoZpapbpcpbpdpepfpgmgnFphpisKpkpkplnMpmpnpopppqprpstnpupvpwpxpyptpzpApBpCpDEdodpFpGpHpImboVoVoVoVoVdloVoVoVoVdldloVdldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlpJmEmEmEmEmEpKndndpLpMpNpMpMpOpPmglFpQpRpRpRpSpSpTpUpVpRpWqBpWpSpSpRpRpRpYpZqaqbvNqdqdqdqeqeqfqgnumPnvqhqiqjoVoVdldldloVoVoVdloVoVoVdloVoVdldldloVdldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlmcmEmEmEmEmEpMqkqlqlqmqnvRpMjrqWqqqrjrpRqsqtquqvqwqxqyqzqArbqCqDxYxWqDpRmPqGqHqImPqdqJyuqLqLqMqNqdqOoVoVoVoVoVdldldldldldldldldldldldloVoVoVdloVoVdldldldldloVdldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1723,10 +2042,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldlrLrMrNrOrPrQrRrSrTrUrVpWrWrXrXrXrYrZsasbscsdtcrZsfrZrtsgshsisjskslsmsnsospqLsqsrssoVoVoVdldldlrKacacacacacacacacacacacacacacacjWdldldldldldldldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldlstsusvswsxsyszsAsBrXsCsDrXrXrYsfsEsFsFsFDGsFtdsFsEsHrtsIsJpWzfsLsMsNsOqLsPsqsQsRsSoVoVacacdldljWacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldloidldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldlpMpMsTsUsVszsAsWsXsXsYrXrXsZtatbtftethtgtItytRtJtYtisIzLtjtjtktltjtmsqAitoqdqdoVoVtpacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldlpMpMpMtqszsAtrtsttpWtutupRpWtvtZpRpWtwtZpRpWtxtZpRuatztjtAtBtCtjtDtEqdqdqdoVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldlpMpMpMsAtFtGtHpSpRpRpRuducxIpRuducxIpRuducxIpRpRpRtjtKtLtMtjqdqdqdoVoVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldldlpMpMpRpWpRpRpRdlpRtNtOtPpRtQtOyepRtStOtTpRdlpRtUtUtVtUtUqdoVoVoVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWtWdldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldlaaaaaaaaaaaaaaaaaaaaaaaaaadlaadldldldldldldldldldldldldlpRtXygyOpRtXygyOpRubtXEjpRdldldldlueufoVoVoVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldlpMpMpMtqszsAtrtsttpWtutupRtwtvtxpRtOtNtPpRtStQtTpRuatztjtAtBtCtjtDtEqdqdqdoVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldlpMpMpMsAtFtGtHpSpRpRpRtZtXubpRuducxIpRygyeyOpRpRpRtjtKtLtMtjqdqdqdoVoVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldldlpMpMpRpWpRpRpRdlpREHEjEIpREKEJELpRENEMEOpRdlpRtUtUtVtUtUqdoVoVoVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWtWdldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldlaaaaaaaaaaaaaaaaaaaaaaaaaadlaadldldldldldldldldldldldldlpREQEPERpRETESEUpREWEVEXpRdldldldlueufoVoVoVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagNuguhgNdlgNuhuggNdlaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldldldldldldldlpRpRpRpRpRpRpRpRpRpRpRpRpRdldldldlueoVoVoVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadlugujujujujujujujugdldlaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlueoVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldlwaujujujujujujujwadldldldlaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldldldldldldldldldldldldldldldldldldldldldldlukuloVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1761,65 +2080,65 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacBSBSDfDgCf aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacBSBSBSDnDoDhDpDpCkBPDqDrBOBOBOdldldloVoVoVacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacBSBSBSDhDsDtDuBPBOBOBOdldldldldloVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacBSBSDvDwDxBOBOacdldldldldldloVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacoVoVDyoVacacdldldldldldloVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacoVoVDzoVacacdldldldldldloVoVdlDHjWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacoVDBacacacacdldldldldloVoVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacoVacacacacacdldldldldloVoVdldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWdldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldloVoVoVoVdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloidldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldldldloVdldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacdldldldloVdloVoVoVdldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacdldldldldldldldldloVoVoVdldldldldldldldldldldldldloidlacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCaaaaDCaaaaaaDCaaaaaaaaaaDCaaaaaaDCaaaaDCaaaaaaaaaaaaaaaaacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacjWdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaaaDCDCDCDCDCDCDCaaaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacdldldlrKdldldldloVdldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacoidldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaDCDCDCDCDCDCDCDCDCaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacjWdldldldldldldldldldldloVdldldldldldldldldldldldldldldldldldlacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaDCDCDCDCDCDCDCDCDCaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlrKdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldlrKdldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWdldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacoVoVDyoVacacdldldldldldloVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacoVoVDzoVacacdldldldldldloVoVdlDHjWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloidldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacoVDBacacacacdldldldldloVoVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldlacacdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacoVacacacacacdldldldldloVoVdldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldlacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldloVoVoVoVdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldlacacacdldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldldldloVdldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacdldldldloVdloVoVoVdldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacEYdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacdldldldldldldldldloVoVoVdldldldldldldldldldldldldloidlacacacacacacacacacdldlacacacacacacacacacoidldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacdldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCaaaaDCaaaaaaDCaaaaaaaaaaDCaaaaaaDCaaaaDCaaaaaaaaaaaaaaaaacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacdldldlacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaaaDCDCDCDCDCDCDCaaaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacdldldlrKdldldldloVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlrKdldlacacacacacacacacacacacacacacacacacacacacacacdldlacdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaDCDCDCDCDCDCDCDCDCaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacjWdldldldldldldldldldldloVdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldljWacacacacacacacacacacacacacacacacacacacacacacacacacacacdldlacdldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCaaaaDCDCDCDCDCDCDCDCDCaaaaDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldlacacacdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacoVoVoVacacacacacacdldldlacacacacacacacacacacacacacacacacacacacacacacoVoVoVoVEZFaFaFaFboVdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdldldldldldldldldldldldldldlrKdldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVFcFeFdkvFcoVFfoVoVdldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacjWacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVoVFeFgktktktktktktktktktktktktktktktktktFgkvoVoVoVoVoVoVoVoVoVoVoVoVoVFhFjFiFlFkFnFmFooVoVdldldldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFqFpFpqiqiqiqiqiFrFqFsqiqiqiqiqiFpFpFqmboVacacacacoVoVoVoVoVFhFhFhFhFuFtFwFvFnFnFnoVoVoVoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFxaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFymboVacacacacoVoVoVFzFzFhFAFBFhFDFCFEFvFGFFFnFHFnoVoVoVdlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacacoVoVoVFzFzFzFJFIFKFhFjFLFlFMFNFNFPFOFnFnoVdldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacacoVoVFzFzFQFzFhFRFhFhFTFSFUFnFWFVFNFNFXFnFndldlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacoVoVoVFzFYGaFZGcGbGeGdGgGfGiGhGkGjFNFNFNGlFndlacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVacacoVoVFzFzGmGoGnGaGpGqFzGsGrGtFnGvGuGxGwFNGyFnFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVGzaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaGAmboVdloVoVoVFzGCGBGEGDGFGFGFFzGHGGGIFnGJFNFNFNFNFNGKFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFqaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFqmboVdloVoVFzFzFzFzGMGLFzFzFzFzGOGNGPFnFnGQGRFNFNGSFnFnFnacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFxaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFymboVdloVoVFzGTGVGUGXGWGYGYFzGZHaGrGtHbFnFnFnHcHcFnFnHdHeHeHeHeHeHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVmbaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaavVmboVdloVoVFzHfHhHgHjHiHlHkHnHmHpHoHqFUGOHaHrHaHaHsHaHaHeHtHvHuHwHeHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDCDCDCDCDCDCDCaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVHxqiHyHzaaaaaaaaaaaaaaaaaaaaaaaaaaHAHyqiqjoVdloVHBHCHCHCHDHFHEGEHGHIHHHJFhHLHKHMGgGgGgGgHNGgHOHQHPHSHRHUHTHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVoVoVoVoVaaaaaaaaaaaaaaaaaaaaaaaaaaoVoVoVoVoVdloVHVFzHWHXHgHZHYIbIaHnIcIeIdIgIfGOIhHaHaHaIiHaFtHeIjIlIkInImHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVoVoVoVoVaaaaaaaaaaaaaaaaaaaaaaaaaaoVoVoVoVoVacacHVFzIoIqIpIsIrItItFzGZHaIuGtIvIwIwIwIxIxIwIwIyHeHeHeIzIBIAHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVFektICHzaaaaaaaaaaaaaaaaaaaaaaaaaaHAHyktkvoVacacHVFqFqFqFqFqFqFqFqFqFqGOGNGPIwIwIDIFIEIEIGIwIwIwacHeIHIBIjHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVGzaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaGAmboVacacHVacFqIJIIIKIKILIKIMFqGHGGGIIwIOINIPIEIEIEIQIwacacHeIRITISHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFqaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFqmboVacacHVacFqFqFqIKIUIWIVIXFqIYGrIZIwJaIEJbIEIEIGIwIwacacHeJcITISHeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVvVFxaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaFymboVdldlHVJeJdJgJfIKIUJiJhJkJjGgJlJnJmJpJoJqIEIEJrIwacacacHeJsJuJtHeacacacacacacacacacacdldlacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacoVHxqiHyHzaaaaaaaaaaaaaaaaaaaaaaaaaaHAHyqiqjoVdldlHVJvacFqFqJwIKJxIKIKJyHaJzJAIxIEIEJBIEJCIwIwacacdlHeJDJFJEHeacacacacacacacacacdldldldlacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloVoVoVoVoVaaaaaaaaaaaaaaaaaaaaaaaaaaoVoVoVoVoVdldlHVJvdldlFqFqJGJHIKIKJIJKJJFlFkIEIEJMJLIwIwacacacdlJOJNJQJPacacacacacacacdldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacdloVoVoVoVoVaaaaaaaaaaaaaaaaaaaaaaaaaaoVoVoVoVoVdldlHVJvdldldlFqJRFqJSJTFvJVJUJWFvJYJXIwJZIwacacacdldlJPKaKbJPacacacacacacdldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacHAKcFqKdHzaaaaaaaaaaaaaaaaaaaaaaaaaaHAKcFqKdHzdldlHVJvdldldldldlFqFqFqFvKeHaKfFvIwIwIwoVoVdldldldldlKhKgJFKidldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacgPgPaaaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaaaagNdldldlHVJvdldldldldldldlFhKjJKKkKmKlFhoVoVoVdldldldldldlKoKnKpdldldldldldldldldldldldldldlacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaagPgPaagPaaaaaaaaaaaaaaaaaaaaaaaaaagPaagPgPdldldlHVJvdldldldldldldlKrKqKqKqKqKqKrdldldldldldldldldldlKsdldldldldldldlKtdldldldldldldlacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaagPgPgPaaaaaaaaaaaaaaaaaaaaaaaaaagPgPgPaaaadldlHVJvdldldldldldldlKoKqKqKqKqKqKodldlKtdlKuKuKuKuKudlKsdlKuKuKuKuKudlKtdldldldldlaaacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaagPgPgPgPgPgPgPgPgPgPgPgPgPgPgPaaaaaaaaaadlHVJvdldldldldldldloVKqKqKqKqKqoVdldlKtgNKvKwKwKwKwKyKxKyKzKzKzKzKAgNKtdldldldldlaaacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagPKBKCdldldldldldldloVKqKqKqKqKqoVdldlKtdlKDKDKDKDKDdlKEdlKDKDKDKDKDdlKtdldldldldlaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagPKFgPaadldldldldldlaaKqKqKqKqKqoVdldlKtdldldldldldldlKEdldldldlgNdldlKGdldldldlaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagPgPgPaaaadldldldlaaaaKqKqKqKqKqoVdldlKtdlKuKuKuKuKudlKEdlKuKuKuKuKudlKtdldldldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldlKHjWKqKqKqKqKqjWKIdlgNgNKvKwKwKwKwKyKxKyKzKzKzKzKAgNKtdldldldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldlgNjWoVoVoVjWgNdldlKtdlKDKDKDKDKDdlKEdlKDKDKDKDKDdlKtdldldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldldldldlKtdldldldldldldlKEdldldldlgNdldlgNdldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldldlKtdlKuKuKuKuKudlKEdlKuKuKuKuKudlKtdldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldldlKtgNKvKwKwKwKwKyKxKyKzKzKzKzKAgNKtdldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldldlKGdlKDKDKDKDKDdlKEdlKDKDKDKDKDdlKtdldlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldldldlKtdldldldldldldlKEdldldldldldldlKtdlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadldldlKtdlKuKuKuKuKudlKEdlKuKuKuKuKudlKtdlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKtgNKvKwKwKwKwKyKxKyKzKzKzKzKAgNKtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKJgPKDKDKDKDKDdlKEdlKDKDKDKDKDaaKJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKKaaaaaaaaaadldlKEdldldldldlaaaaKKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKJKJKJKJgPgPKKaaKEaagPKLKLKLKLKJKJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKLgPKMgPKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKLaagPaaKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKLKLKLKLKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/nano/css/icons.css b/nano/css/icons.css index a6bec0f0d03..b2eacc0ab89 100644 --- a/nano/css/icons.css +++ b/nano/css/icons.css @@ -245,6 +245,32 @@ .uiIcon16.icon-note64 { background-image: url(uiIcons64.png); background-position: -64px -64px; width: 64px; height: 64px; } .uiIcon16.icon-close64 { background-image: url(uiIcons64.png); background-position: -128px -64px; width: 64px; height: 64px; } +.uiIcon16.icon-pill { background-image: url(pills32.png); width: 32px; height: 32px;} +.uiIcon16.icon-pill.pill1 { background-position: 0 0; } +.uiIcon16.icon-pill.pill2 { background-position: -32px 0; } +.uiIcon16.icon-pill.pill3 { background-position: -64px 0; } +.uiIcon16.icon-pill.pill4 { background-position: -96px 0; } +.uiIcon16.icon-pill.pill5 { background-position: -128px 0; } +.uiIcon16.icon-pill.pill6 { background-position: 0 -32px; } +.uiIcon16.icon-pill.pill7 { background-position: -32px -32px; } +.uiIcon16.icon-pill.pill8 { background-position: -64px -32px; } +.uiIcon16.icon-pill.pill9 { background-position: -96px -32px; } +.uiIcon16.icon-pill.pill10 { background-position: -128px -32px; } +.uiIcon16.icon-pill.pill11 { background-position: 0 -64px; } +.uiIcon16.icon-pill.pill12 { background-position: -32px -64px; } +.uiIcon16.icon-pill.pill13 { background-position: -64px -64px; } +.uiIcon16.icon-pill.pill14 { background-position: -96px -64px; } +.uiIcon16.icon-pill.pill15 { background-position: -128px -64px; } +.uiIcon16.icon-pill.pill16 { background-position: 0 -96px; } +.uiIcon16.icon-pill.pill17 { background-position: -32px -96px; } +.uiIcon16.icon-pill.pill18 { background-position: -64px -96px; } +.uiIcon16.icon-pill.pill19 { background-position: -96px -96px; } +.uiIcon16.icon-pill.pill20 { background-position: -128px -96px; } +.uiIcon16.icon-pill.bottle1 { background-position: 0 -128px; } +.uiIcon16.icon-pill.bottle2 { background-position: -32px -128px; } +.uiIcon16.icon-pill.bottle3 { background-position: -64px -128px; } +.uiIcon16.icon-pill.bottle4 { background-position: -96px -128px; } + .mapIcon16 { position: absolute; width: 16px; diff --git a/nano/css/shared.css b/nano/css/shared.css index a50f96a3c7d..8728102b085 100644 --- a/nano/css/shared.css +++ b/nano/css/shared.css @@ -45,6 +45,19 @@ hr { white-space: nowrap; } +.link32 { + float: left; + min-width: 15px; + max-width: 31px; + height: 31px; + text-align: center; + text-decoration: none; + background: #40628a; + border: 1px solid #161616; + margin: 0 2px 2px 0; + cursor: default; +} + .hasIcon { padding: 0px 4px 4px 0px; } @@ -249,7 +262,7 @@ div.notice { overflow: auto; } -.itemContentNarrow, .itemContent { +.itemContentNarrow, .itemContent, .itemContentWide, .itemContentSmall, .itemContentMedium { float: left; } @@ -287,17 +300,14 @@ div.notice { } .itemContentWide { - float: left; width: 79%; } .itemContentSmall { - float: left; width: 33%; } .itemContentMedium { - float: left; width: 55%; } @@ -649,7 +659,7 @@ th.misc { } .oxyloss { - color: blue; + color: #4444FF; } /* 75px width used in power monitoring console buttons */ diff --git a/nano/images/pills32.png b/nano/images/pills32.png new file mode 100644 index 00000000000..61459093c1c Binary files /dev/null and b/nano/images/pills32.png differ diff --git a/nano/templates/adv_med.tmpl b/nano/templates/adv_med.tmpl new file mode 100644 index 00000000000..7f7e931caf6 --- /dev/null +++ b/nano/templates/adv_med.tmpl @@ -0,0 +1,244 @@ + +{{if !data.occupied}} +

      No occupant detected.

      +{{else}} +

      Occupant Data:

      +
      +
      + Name: +
      +
      + {{:data.occupant.name}} +
      +
      +
      +
      + Health: +
      + {{:helper.displayBar(data.occupant.health, 0, 100, (data.occupant.health >= 50) ? 'good' : (data.occupant.health >= 25) ? 'average' : 'bad')}} +
      + {{:helper.round(data.occupant.health*10)/10}}% +
      +
      +
      + Status: +
      +
      + {{if data.occupant.stat==0}} + Stable + {{else data.occupant.stat==1}} + Non-Responsive + {{else}} + Dead + {{/if}} +
      +
      + {{:helper.link('Print', 'document', {'print_p' : 1, 'name' : data.occupant.name})}} +

      Damage:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Brute:{{:data.occupant.bruteLoss}}Brain:{{:data.occupant.brainLoss}}
      Burn:{{:data.occupant.fireLoss}}Radiation:{{:data.occupant.radLoss}}
      Oxygen:{{:data.occupant.oxyLoss}}Genetic:{{:data.occupant.cloneLoss}}
      Toxins:{{:data.occupant.toxLoss}}Paralysis:{{:data.occupant.paralysis}}% ({{:data.occupant.paralysisSeconds}} seconds left!)
      Body Temperature:{{:helper.round(data.occupant.bodyTempC*10)/10}}°C, {{:helper.round(data.occupant.bodyTempF*10)/10}}°F
      +
      + {{if data.occupant.hasVirus}} +
      + Viral pathogen detected in blood stream. +
      + {{/if}} + {{if data.occupant.hasBorer}} +
      + Large growth detected in frontal lobe, possibly cancerous. Surgical removal is recommended. +
      + {{/if}} + {{if data.occupant.blind}} +
      Pupils unresponsive.
      + {{/if}} + {{if data.occupant.nearsighted}} +
      Retinal Misalignment Detected
      + {{/if}} +

      Blood

      + + + + + + + +
      Volume:{{:data.occupant.blood.volume}}Percent:{{:data.occupant.blood.percent}}%
      +

      Reagents

      + {{if data.occupant.reagents}} + + {{for data.occupant.reagents}} + + + + + {{/for}} +
      {{:value.name}}:{{:value.amount}}
      + {{else}} +
      No reagents detected.
      + {{/if}} +

      External Organs

      +
      + {{for data.occupant.extOrgan}} +
      + {{if value.status.destroyed}} +
      + {{:value.name}} - DESTROYED +
      + {{else}} +
      +
      + {{:value.name}} +
      +
      +
      + {{if value.status.broken}} + {{:value.status.broken}} + {{else value.status.splinted}} + Splinted + {{else value.status.robotic}} + Robotic + {{/if}} +
      +
      +  Brute/Burn +
      +
      + {{:value.bruteLoss}}/{{:value.fireLoss}} +
      +
      +  Injuries +
      +
      + {{if !value.status.bleeding}} + {{if !value.status.internalBleeding}} + No Injuries Detected + {{else}} + Internal Bleeding Detected + {{/if}} + {{else}} + {{if value.status.internalBleeding}} +
      Internal Bleeding Detected. External Bleeding Detected.
      + {{else}} + External Bleeding Detected + {{/if}} + {{/if}} +
      + {{if value.germ_level > 100}} +
      +  Infection +
      +
      + {{if value.germ_level < 300}} + Mild Infection + {{else value.germ_level < 400}} + Mild Infection+ + {{else value.germ_level < 500}} + Mild Infection++ + {{else value.germ_level < 700}} + Acute Infection + {{else value.germ_level < 800}} + Acute Infection+ + {{else value.germ_level < 900}} + Acute Infection++ + {{else value.germ_level >= 900}} + Septic + {{/if}} +
      + {{/if}} + {{if value.open}} +
      +  Operation Status +
      +
      + Open Incision +
      + {{/if}} + {{if value.implants_len}} +
      +  Implants +
      + {{for value.implants :impValue:impindex}} +
      +   {{:impValue.known ? impValue.name : "Unknown"}} +
      + {{/for}} + {{/if}} + {{/if}} +
      + {{/for}} +
      +

      Internal Organs

      +
      + {{for data.occupant.intOrgan}} +
      +
      + {{:value.name}} +
      +
      + {{:value.desc != null ? value.desc : ""}} +
      +
      +
      + {{if value.germ_level > 100}} +
      +  Infection +
      +
      + {{if value.germ_level < 300}} + Mild Infection + {{else value.germ_level < 400}} + Mild Infection+ + {{else value.germ_level < 500}} + Mild Infection++ + {{else value.germ_level < 700}} + Acute Infection + {{else value.germ_level < 800}} + Acute Infection+ + {{else value.germ_level < 900}} + Acute Infection++ + {{else value.germ_level >= 900}} + Septic + {{/if}} +
      + {{/if}} +
      +  Damage +
      +
      + {{:value.damage}} +
      +
      + {{/for}} +
      +{{/if}} \ No newline at end of file diff --git a/nano/templates/arcade_battle.tmpl b/nano/templates/arcade_battle.tmpl new file mode 100644 index 00000000000..77256986348 --- /dev/null +++ b/nano/templates/arcade_battle.tmpl @@ -0,0 +1,30 @@ + + +

      {{:data.enemyName}}

      +{{if data.gameOver}} +
      {{:data.temp}}
      +{{else}} +
      {{:data.temp}}
      +
      {{:data.enemyAction}}
      +{{/if}} +
      +
      Health:
      +
      {{:data.playerHP}}
      +
      Magic:
      +
      {{:data.playerMP}}
      +
      Enemy Health:
      +
      {{:data.enemyHP}}
      +
      + +{{if data.gameOver}} +
      {{:helper.link('New Game', null, {'newgame' : 1})}}
      +{{else}} +
      + {{:helper.link('Attack', null, {'attack' : 1})}} + {{:helper.link('Heal', null, {'heal' : 1})}} + {{:helper.link('Recharge Power', null, {'charge' : 1})}} +
      +{{/if}} \ No newline at end of file diff --git a/nano/templates/atmo_control.tmpl b/nano/templates/atmo_control.tmpl new file mode 100644 index 00000000000..5e68b8cd66a --- /dev/null +++ b/nano/templates/atmo_control.tmpl @@ -0,0 +1,224 @@ + +{{if data.sensors}} + {{for data.sensors}} + {{if value.sensor_data}} +
      +
      {{:value.long_name}}
      + {{if value.sensor_data.pressure}} +
      +
      Pressure:
      +
      {{:value.sensor_data.pressure}} kPa
      +
      + {{/if}} + {{if value.sensor_data.temperature}} +
      +
      Temperature:
      +
      {{:value.sensor_data.temperature}} kPa
      +
      + {{/if}} + {{if value.sensor_data.oxygen || value.sensor_data.nitrogen || value.sensor_data.carbon_dioxide || value.sensor_data.phoron}} +
      +
      Gas Composition:
      + {{if value.sensor_data.oxygen}} +
      {{:value.sensor_data.oxygen}}% O2
      + {{/if}} + {{if value.sensor_data.nitrogen}} +
      {{:value.sensor_data.nitrogen}}% N
      + {{/if}} + {{if value.sensor_data.carbon_dioxide}} +
      {{:value.sensor_data.carbon_dioxide}}% CO2
      + {{/if}} + {{if value.sensor_data.phoron}} +
      {{:value.sensor_data.phoron}}% TX
      + {{/if}} +
      + {{/if}} +
      + {{else}} +
      +
      {{:value.long_name}} can not be found!
      +
      + {{/if}} + {{/for}} +{{else}} +
      + No sensors connected. +
      +{{/if}} + +{{if data.tanks || data.core}} +

      + {{if data.tanks}} + Tank Control System + {{else data.core}} + Core Cooling Control System + {{/if}} +

      + + {{if data.input_info}} +
      +
      + {{if data.tanks}} + Input: + {{else data.core}} + Coolant Input: + {{/if}} +
      +
      + {{if data.input_info.power}} + Injecting + {{else}} + On Hold + {{/if}} +
      +
      +
      +
      Flow Rate Limit:
      +
      {{:data.input_info.volume_rate}} L/s
      +
      +
      +
      Command:
      + {{:helper.link('Toggle Power', 'power', {'in_toggle_injector' : 1})}} + {{:helper.link('Set Flow Rate', 'pencil', {'in_set_flowrate' : 1})}} + {{:helper.link('Refresh', 'refresh', {'in_refresh_status' : 1})}} +
      + {{else}} +
      +
      ERROR: Can not find input port
      + {{:helper.link('Search', 'search', {'in_refresh_status' : 1})}} +
      + {{/if}} +
      +
      + Flow Rate Limit: +
      +
      + {{:helper.link('100', 'minus', {'adj_input_flow_rate' : -100})}} + {{:helper.link('10', 'minus', {'adj_input_flow_rate' : -10})}} + {{:helper.link('1', 'minus', {'adj_input_flow_rate' : -1})}} + {{:helper.link('0.1', 'minus', {'adj_input_flow_rate' : -0.1})}} +
       {{:data.input_flow_setting}} L/s 
      + {{:helper.link('0.1', 'plus', {'adj_input_flow_rate' : 0.1})}} + {{:helper.link('1', 'plus', {'adj_input_flow_rate' : 1})}} + {{:helper.link('10', 'plus', {'adj_input_flow_rate' : 10})}} + {{:helper.link('100', 'plus', {'adj_input_flow_rate' : 100})}} +
      +
      + + {{if data.output_info}} +
      +
      + {{if data.tanks}} + Output: + {{else data.core}} + Core Outpump: + {{/if}} +
      +
      + {{if data.output_info.power}} + Open + {{else}} + On Hold + {{/if}} +
      +
      +
      + {{if data.tanks}} +
      Max Output Pressure:
      +
      {{:data.output_info.output_pressure}} kPa
      + {{else data.core}} +
      Min Core Pressure:
      +
      {{:data.output_info.pressure_limit}} kPa
      + {{/if}} +
      +
      +
      Command:
      + {{:helper.link('Toggle Power', 'power', {'out_toggle_power' : 1})}} + {{:helper.link('Set Pressure', 'pencil', {'out_set_pressure' : 1})}} + {{:helper.link('Refresh', 'refresh', {'out_refresh_status' : 1})}} +
      + {{else}} +
      +
      ERROR: Can not find output port
      + {{:helper.link('Search', 'search', {'out_refresh_status' : 1})}} +
      + {{/if}} + +
      + {{if data.tanks}} +
      + Max Output Pressure Set: +
      +
      + {{:helper.link('1000', 'minus', {'adj_pressure' : -1000})}} + {{:helper.link('100', 'minus', {'adj_pressure' : -100})}} + {{:helper.link('10', 'minus', {'adj_pressure' : -10})}} + {{:helper.link('1', 'minus', {'adj_pressure' : -1})}} +
       {{:data.pressure_setting}} kPa 
      + {{:helper.link('1', 'plus', {'adj_pressure' : 1})}} + {{:helper.link('10', 'plus', {'adj_pressure' : 10})}} + {{:helper.link('100', 'plus', {'adj_pressure' : 100})}} + {{:helper.link('1000', 'plus', {'adj_pressure' : 1000})}} +
      + {{else data.core}} +
      + Min Core Pressure Set: +
      +
      + {{:helper.link('100', 'minus', {'adj_pressure' : -100})}} + {{:helper.link('50', 'minus', {'adj_pressure' : -50})}} + {{:helper.link('10', 'minus', {'adj_pressure' : -10})}} + {{:helper.link('1', 'minus', {'adj_pressure' : -1})}} +
       {{:data.pressure_setting}} kPa 
      + {{:helper.link('1', 'plus', {'adj_pressure' : 1})}} + {{:helper.link('10', 'plus', {'adj_pressure' : 10})}} + {{:helper.link('50', 'plus', {'adj_pressure' : 50})}} + {{:helper.link('100', 'plus', {'adj_pressure' : 100})}} +
      + {{/if}} +
      +{{/if}} + +{{if data.fuel}} +

      Fuel Injection System

      + + {{if data.device_info}} +
      +
      + Status: +
      +
      + {{if data.device_info.power}} + Injecting + {{else}} + On Hold + {{/if}} +
      {{:helper.link('Refresh', 'refresh', {'refresh_status' : 1})}}
      +
      +
      +
      +
      Rate:
      +
      {{:data.device_info.volume_rate}} L/s
      +
      +
      +
      Automated Fuel Injection:
      + {{if data.automation}} + {{:helper.link('Engaged', 'check', {'toggle_automation' : 1})}} +
      Injector Controls Locked Out
      + {{else}} + {{:helper.link('Disengaged', 'close', {'toggle_automation' : 1})}} +
      Injector:
      + {{:helper.link('Toggle Power', 'power', {'toggle_injector' : 1})}} + {{:helper.link('Inject (1 Cycle)', 'syringe', {'injection' : 1})}} + {{/if}} +
      + {{else}} +
      +
      ERROR: Can not find device
      + {{:helper.link('Search', 'search', {'refresh_status' : 1})}} +
      + {{/if}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/chem_master.tmpl b/nano/templates/chem_master.tmpl new file mode 100644 index 00000000000..1b8315154ab --- /dev/null +++ b/nano/templates/chem_master.tmpl @@ -0,0 +1,116 @@ + +{{if data.tab == 'home'}} +
      +
      {{:helper.link(data.pillBottle ? 'Eject Pill Bottle' : 'No pill bottle inserted', 'eject', {'ejectp' : 1}, data.pillBottle ? null : 'linkOff')}}
      + + {{if data.pillBottle}} +
      {{:data.pillBottle.total}} / {{:data.pillBottle.max}}
      + {{/if}} +
      +
      {{:helper.link(data.beaker ? 'Eject Beaker and Clear Buffer' : 'Please insert beaker', 'eject', {'eject' : 1}, data.beaker ? null : 'linkOff')}}
      + + {{if data.beaker}} + {{if data.beaker.total_volume}} + Add to buffer: + {{for data.beaker.reagent_list}} +
      +
      {{:value.name}}
      +
      {{:value.volume}} Units
      +
      +
      + {{:helper.link('Analyze', 'signal-diag', {'tab_select' : 'analyze', 'desc' : value.description, 'name' : value.name})}} + {{:helper.link('1', 'plus', {'add' : value.id, 'amount' : 1})}} + {{:helper.link('5', 'plus', {'add' : value.id, 'amount' : 5})}} + {{:helper.link('10', 'plus', {'add' : value.id, 'amount' : 10})}} + {{:helper.link('30', 'plus', {'add' : value.id, 'amount' : 30})}} + {{:helper.link('60', 'plus', {'add' : value.id, 'amount' : 60})}} + {{:helper.link('All', 'plus', {'add' : value.id, 'amount' : value.volume})}} + {{:helper.link('Custom', 'plus', {'addcustom' : value.id})}} +
      + {{/for}} + {{else}} + Beaker is empty. + {{/if}} +
      +
      +
      Transfer to
      + {{:helper.link(!data.mode ? 'disposal' : 'beaker', null, {'toggle' : 1})}} +
      + {{if data.reagents}} + {{if data.reagents.total_volume}} + {{for data.reagents.reagent_list}} +
      +
      {{:value.name}}
      +
      {{:value.volume}} Units
      +
      +
      + {{:helper.link('Analyze', 'signal-diag', {'tab_select' : 'analyze', 'desc' : value.description, 'name' : value.name})}} + {{:helper.link('1', 'minus', {'remove' : value.id, 'amount' : 1})}} + {{:helper.link('5', 'minus', {'remove' : value.id, 'amount' : 5})}} + {{:helper.link('10', 'minus', {'remove' : value.id, 'amount' : 10})}} + {{:helper.link('30', 'minus', {'remove' : value.id, 'amount' : 30})}} + {{:helper.link('60', 'minus', {'remove' : value.id, 'amount' : 60})}} + {{:helper.link('All', 'minus', {'remove' : value.id, 'amount' : value.volume})}} + {{:helper.link('Custom', 'minus', {'removecustom' : value.id})}} +
      + {{/for}} + {{/if}} + {{else}} + Empty + {{/if}} + {{if !data.condi}} +
      +
      + {{:helper.link('Create pill (60 units max)', null, {'createpill' : 1})}} + {{:helper.link('Create multiple pills', null, {'createpill_multiple' : 1})}} + {{:helper.link('Create bottle (60 units max)', null, {'createbottle' : 1})}} +
      +
      + {{:helper.link('', 'pill pill' + data.pillSprite, {'tab_select' : 'pill'}, null, 'link32')}} + {{:helper.link('', 'pill bottle' + data.bottleSprite, {'tab_select' : 'bottle'}, null, 'link32')}} +
      + {{/if}} + {{/if}} + +{{else data.tab == 'analyze'}} + {{if !data.condi}} +

      Chemical Info:

      + {{else}} +

      Condiment Info:

      + {{/if}} +
      +
      Name:
      +
      {{:data.analyzeData.name}}
      +
      + {{if data.analyzeData.name == 'Blood'}} +
      +
      Blood Type:
      +
      {{:data.analyzeData.blood_type}}
      +
      +
      +
      DNA:
      +
      {{:data.analyzeData.blood_DNA}}
      +
      + {{else}} +
      +
      Description:
      +
      {{:data.analyzeData.desc}}
      +
      + {{/if}} + {{:helper.link('Back', 'arrowreturn-1-w', {'tab_select' : 'home'})}} + +{{else data.tab == 'pill'}} + {{for data.pillSpritesAmount}} + {{:helper.link('', 'pill pill' + value, {'pill_sprite' : value}, null, data.pillSprite == value ? 'linkOn link32' : 'link32')}} + {{/for}} +

      {{:helper.link('Return', 'arrowreturn-1-w', {'tab_select' : 'home'})}}
      + +{{else data.tab == 'bottle'}} + {{for data.bottleSpritesAmount}} + {{:helper.link('', 'pill bottle' + value, {'bottle_sprite' : value}, null, data.bottleSprite == value ? 'linkOn link32' : 'link32')}} + {{/for}} +

      {{:helper.link('Return', 'arrowreturn-1-w', {'tab_select' : 'home'})}}
      +{{/if}} \ No newline at end of file diff --git a/nano/templates/cloning.tmpl b/nano/templates/cloning.tmpl new file mode 100644 index 00000000000..a927fcc4d9c --- /dev/null +++ b/nano/templates/cloning.tmpl @@ -0,0 +1,104 @@ + + +{{:data.temp}} + +{{if data.menu == 1}} + +

      Modules

      +
      + {{if data.connected}} + DNA scanner found. + {{else}} + DNA scanner not found. + {{/if}} +
      +
      + {{if data.podsLen > 0}} + {{:data.podsLen}} cloning vat\s found. + {{else}} + No cloning vats found. + {{/if}} +
      + + +

      Scanner Functions

      +
      + {{if data.loading}} + Scanning... + {{else}} + {{:data.scantemp}} + {{/if}} +
      +
      + {{if data.connected}} +
      + {{:helper.link(data.occupant ? 'Scan - ' + data.occupant : 'Scanner unoccupied', 'play', {'scan' : 1}, data.occupant ? null : 'linkOff')}} +
      +
      + {{:helper.link(data.locked ? 'Unlock' : 'Lock', data.locked ? 'locked' : 'unlocked', {'lock' : 1}, null, data.locked ? 'redButton' : null)}} +
      +
      + {{:helper.link('Eject', 'eject', {'eject' : 1}, data.occupant ? null : 'linkOff')}} +
      + {{else}} + No scanner connected! + {{/if}} +
      + + {{if data.podsLen}} + {{for data.pods}} +
      {{:value.pod}}, biomass: {{:value.biomass}}
      + {{/for}} + {{/if}} + + +

      Database Functions

      +
      + {{:helper.link('View Records', 'list', {'menu' : 2})}} + {{:helper.link('Eject Disk', 'eject', {'disk' : 'eject'}, data.diskette ? null : 'linkOff')}} +
      + +{{else data.menu == 2}} +

      Current records

      + {{:helper.link('Back', 'arrowreturn-1-w', {'menu' : 1})}} +
      + {{for data.records}} + {{:helper.link(value.name, 'document', {'view_rec' : value.ckey})}} + {{/for}} +
      + +{{else data.menu == 3}} +

      Selected Record

      +
      {{:helper.link('Back', 'arrowreturn-1-w', {'menu' : 2})}}
      + + {{if data.activeRecord}} + {{:helper.link('Delete Record', 'trash', {'del_rec' : 1}, null, 'redButton')}} +
      +
      Name:
      +
      {{:data.activeRecord.real_name}}
      +
      + + {{:helper.link('Load from disk', 'transfer-e-w', {'disk' : 'load'}, data.disk ? null : 'linkOff')}} + +
      +
      Save:
      + {{:helper.link('UI + UE', 'disk', {'save_disk' : 'ue'}, data.disk ? null : 'linkOff')}} + {{:helper.link('UI', 'disk', {'save_disk' : 'ui'}, data.disk ? null : 'linkOff')}} + {{:helper.link('SE', 'disk', {'save_disk' : 'se'}, data.disk ? null : 'linkOff')}} +
      + + {{:helper.link('Clone', 'play', {'clone' : data.activeRecord.ckey}, data.podsLen ? null : 'linkOff')}} + + {{else}} +
      ERROR: Record not found.
      + {{/if}} + +{{else data.menu == 4}} + {{:data.temp}} +

      Confirm Record Deletion

      +
      Scan card to confirm.
      + {{:helper.link('Cancel', 'cancel', {'menu' : 3})}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/communicator.tmpl b/nano/templates/communicator.tmpl index bb0a26842f5..58b86a30d7e 100644 --- a/nano/templates/communicator.tmpl +++ b/nano/templates/communicator.tmpl @@ -103,7 +103,12 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm {{:value.name}}
    -
    {{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}}
    + {{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}} + {{if data.video_comm == null}} + {{:helper.link('Start Video', 'signal-diag', {'startvideo' : value.ref})}} + {{else data.video_comm == value.ref}} + {{:helper.link('End Video', 'signal-diag', {'endvideo' : value.true_name}, null, 'redButton')}} + {{/if}}
    {{/for}} @@ -114,7 +119,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm {{:value.name}}
    -
    {{:value.address}}
    {{:helper.link('Dial', 'signal-diag', {'dial' : value.address})}} +
    {{:value.address}}
    {{:helper.link('Accept', 'signal-diag', {'dial' : value.address})}}{{:helper.link('Decline', 'close', {'decline' : value.ref})}}
    {{/for}} diff --git a/nano/templates/fax.tmpl b/nano/templates/fax.tmpl new file mode 100644 index 00000000000..4745a7aeb39 --- /dev/null +++ b/nano/templates/fax.tmpl @@ -0,0 +1,55 @@ + + +
    +
    + Confirm Identity: +
    + {{:helper.link(data.scanName ? data.scanName : 'Insert Card', 'check', {'scan' : 1})}} + {{if data.authenticated}} + {{:helper.link('Log Out', 'eject', {'logout' : 1}, null, 'redButton')}} + {{else}} + {{:helper.link('Log In', 'person', {'auth' : 1}, data.scanName ? null : 'linkOff')}} + {{/if}} +
    +{{if data.authenticated}} + +
    + +
    +
    + Logged in to: +
    +
    + {{:data.bossName}} Quantum Entanglement Network +
    +
    + {{if data.copyItem}} + {{if data.cooldown}} +
    Transmitter arrays realigning. Please stand by.
    + {{else}} +
    +
    Currently sending:
    +
    {{:data.copyItemName}}
    +
    +
    +
    Sending to:
    + {{:helper.link(data.destination, 'tag', {'dept' : 1})}} +
    +
    {{:helper.link('Send', 'signal-diag', {'send' : 1})}}
    + {{/if}} + {{else}} +
    Please insert paper to send via secure connection.
    + {{if data.cooldown}} +
    Transmitter arrays realigning. Please stand by.
    + {{/if}} + {{/if}} +{{else}} +
    Proper authentication is required to use this device.
    +{{/if}} +{{if data.copyItem}} +
    {{:helper.link('Remove Item', 'eject', {'remove' : 1})}}
    +{{/if}} + diff --git a/nano/templates/guest_pass.tmpl b/nano/templates/guest_pass.tmpl new file mode 100644 index 00000000000..80525f5331e --- /dev/null +++ b/nano/templates/guest_pass.tmpl @@ -0,0 +1,59 @@ + + +{{if data.mode == 1}} +
    +
    + Activity Log +
    + {{:helper.link('Print', 'print', {'print' : 1})}} {{:helper.link('Back', 'arrowreturn-1-w', {'mode' : 0})}} +
    +
    + {{for data.log}} +
    + {{:value}} +
    + {{/for}} +{{else}} +

    Guest pass terminal #{{:data.uid}}

    +
    + {{:helper.link('View activity log', 'list', {'mode' : 1})}} {{:helper.link('Issure Pass', 'eject', {'action' : 'issue'})}} +
    +
    +
    +
    + Issuing ID: +
    + {{:helper.link(data.giver ? data.giver : 'Insert ID', 'person', {'action' : 'id'})}} +
    +
    +
    + Issued to: +
    + {{:helper.link(data.giveName, 'pencil', {'choice' : 'giv_name'})}} +
    +
    +
    + Reason: +
    + {{:helper.link(data.reason, 'pencil', {'choice' : 'reason'})}} +
    +
    +
    + Duration (minutes): +
    + {{:helper.link(data.duration, 'clock', {'choice' : 'duration'})}} +
    +
    +
    + Access to areas: +
    +
    + {{for data.area}} +
    + {{:helper.link(value.area_name, value.on ? 'check' : 'close', {'choice' : 'access', 'access' : value.area}, null, value.on ? 'linkOn' : null)}} +
    + {{/for}} +{{/if}} \ No newline at end of file diff --git a/nano/templates/holodeck.tmpl b/nano/templates/holodeck.tmpl new file mode 100644 index 00000000000..71d4ad56056 --- /dev/null +++ b/nano/templates/holodeck.tmpl @@ -0,0 +1,36 @@ + + +

    Current Loaded Programs:

    +{{for data.supportedPrograms}} +
    {{:helper.link(value.name, data.currentProgram == value.program ? 'check' : 'close', {'program' : value.program}, null, data.currentProgram == value.program ? 'linkOn' : null)}}
    +{{/for}} +
    Please ensure that only holographic weapons are used in the holodeck if a combat simulation has been loaded.
    +{{if data.isSilicon}} + {{if data.safetyDisabled}} + {{if data.emagged}} +
    ERROR: Cannot re-enable Safety Protocols.
    + {{else}} +
    {{:helper.link('Re-Enable Safety Protocols?', 'help', {'AIoverride' : 1}, null, 'linkOn')}}
    + {{/if}} + {{else}} +
    {{:helper.link('Re-Enable Safety Protocols?', 'help', {'AIoverride' : 1}, null, 'redButton')}}
    + {{/if}} +{{/if}} + +{{if data.safetyDisabled}} + {{for data.restrictedPrograms}} +
    {{:helper.link('Begin ' + value.name, data.currentProgram == value.program ? 'check' : 'close', {'program' : value.program}, null, data.currentProgram == value.program ? 'linkOn' : null)}}
    + {{/for}} +
    Ensure the holodeck is empty before testing.
    +
    Safety Protocols are DISABLED
    +{{else}} +
    Safety Protocols are ENABLED
    +{{/if}} + +
    +
    Gravity:
    + {{:helper.link(data.gravity ? 'On ' : 'Off', data.gravity ? 'check' : 'close', {'gravity' : 1}, null, data.gravity ? 'linkOn' : 'redButton')}} +
    \ No newline at end of file diff --git a/nano/templates/laptop_vendor.tmpl b/nano/templates/laptop_vendor.tmpl new file mode 100644 index 00000000000..e0de4f7272f --- /dev/null +++ b/nano/templates/laptop_vendor.tmpl @@ -0,0 +1,173 @@ + + +{{if data.mode == 0}} +
    + Please choose your laptop customization options.
    + Your comptuer will automatically be loaded with any programs you can use after the transaction is complete.
    + Some programs will require additional components to be installed! +
    + +
    + +
    +
    HDD (Required):
    +
    Added
    +
    + +
    +
    + Card Reader: +
    + {{:helper.link('Single (50)', data.cardreader == 1 ? 'check' : 'plus', {'choice' : 'single_add'}, data.cardreader == 1 ? 'selected' : null)}} + {{:helper.link('Dual (125)', data.cardreader == 2 ? 'check' : 'plus', {'choice' : 'dual_add'}, data.cardreader == 2 ? 'selected' : null)}} + {{:helper.link('None', 'close', {'choice' : 'cardreader_rem'}, data.cardreader == 0 ? 'redButton' : null)}} +
    + +
    +
    + Floppy Drive: +
    + {{:helper.link('Add (50)', data.floppy == 1 ? 'check' : 'plus', {'choice' : 'floppy_add'}, data.floppy == 1 ? 'selected' : null)}} + {{:helper.link('None', 'close', {'choice' : 'floppy_rem'}, data.floppy == 0 ? 'redButton' : null)}} +
    + +
    +
    + Radio card: +
    + {{:helper.link('Add (50)', data.radionet == 1 ? 'check' : 'plus', {'choice' : 'radio_add'}, data.radionet == 1 ? 'selected' : null)}} + {{:helper.link('None', 'close', {'choice' : 'radio_rem'}, data.radionet == 0 ? 'redButton' : null)}} +
    + +
    +
    + Camera Card: +
    + {{:helper.link('Add (100)', data.camera == 1 ? 'check' : 'plus', {'choice' : 'camnet_add'}, data.camera == 1 ? 'selected' : null)}} + {{:helper.link('None', 'close', {'choice' : 'camnet_rem'}, data.camera == 0 ? 'redButton' : null)}} +
    + +
    +
    + Network card: +
    +
    + {{:helper.link('Area (75)', data.network == 1 ? 'check' : 'plus', {'choice' : 'area_add'}, data.network == 1 ? 'selected' : null)}} + {{:helper.link('Adjacent (50)', data.network == 2 ? 'check' : 'plus', {'choice' : 'prox_add'}, data.network == 2 ? 'selected' : null)}} + {{:helper.link('Powernet (25)', data.network == 3 ? 'check' : 'plus', {'choice' : 'cable_add'}, data.network == 3 ? 'selected' : null)}} + {{:helper.link('None', 'close', {'choice' : 'network_rem'}, data.network == 0 ? 'redButton' : null)}} +
    +
    + +
    + +
    +
    + Power Source: +
    + {{:helper.link('Extended (175)', data.power == 1 ? 'check' : 'plus', {'choice' : 'high_add'}, data.power == 1 ? 'selected' : null)}} + {{:helper.link('Unreal (250)', data.power == 2 ? 'check' : 'plus', {'choice' : 'super_add'}, data.power == 2 ? 'selected' : null)}} + {{:helper.link('Default', data.power == 0 ? 'check' : 'plus', {'choice' : 'power_rem'}, data.power == 0 ? 'selected' : null)}} +
    + +
    +
    +
    Total:
    +
    {{:data.total}}
    + {{:helper.link('Vend Laptop', 'cart', {'choice' : 'vend'})}} +
    + +{{else data.mode == 1}} +

    Cart

    + +
    + +
    +
    Total:
    +
    {{:data.total}}
    +
    + +
    +
    Card Reader:
    + {{if data.cardreader == 1}} + {{:helper.link('(single) (50)', 'close', {'choice' : 'cardreader_rem'})}} + {{else data.cardreader == 2}} + {{:helper.link('(double) (125)', 'close', {'choice' : 'cardreader_rem'})}} + {{else}} +
    None
    + {{/if}} +
    + +
    +
    Floppy Drive:
    + {{if data.floppy == 1}} + {{:helper.link('Added (50)', 'close', {'choice' : 'floppy_rem'})}} + {{else}} +
    None
    + {{/if}} +
    + +
    +
    Radio Card:
    + {{if data.radionet == 1}} + {{:helper.link('Added (50)', 'close', {'choice' : 'radio_rem'})}} + {{else}} +
    None
    + {{/if}} +
    + +
    +
    Camera Card:
    + {{if data.camera == 1}} + {{:helper.link('Added (100)', 'close', {'choice' : 'camnet_rem'})}} + {{else}} +
    None
    + {{/if}} +
    + +
    +
    Network Card:
    + {{if data.network == 1}} + {{:helper.link('Area (75)', 'close', {'choice' : 'network_rem'})}} + {{else data.network == 2}} + {{:helper.link('Adjacent (50)', 'close', {'choice' : 'network_rem'})}} + {{else data.network == 3}} + {{:helper.link('Powernet (25)', 'close', {'choice' : 'network_rem'})}} + {{else}} +
    None
    + {{/if}} +
    + +
    +
    Power Source:
    + {{if data.power == 1}} + {{:helper.link('Unreal (250)', 'close', {'choice' : 'power_rem'})}} + {{else data.power == 2}} + {{:helper.link('Extended (175)', 'close', {'choice' : 'power_rem'})}} + {{else}} +
    Regular
    + {{/if}} +
    + +
    + +
    +
    Please swipe your card and enter your PIN to complete the transaction
    +
    + +
    + + {{:helper.link('Cancel', 'close', {'choice' : 'cancel'}, null, 'redButton')}} + +{{else data.mode == 2}} +
    + Please swipe your card and enter your PIN to finish returning your computer. + +
    + + {{:helper.link('Cancel', 'close', {'choice' : 'cancel'}, null, 'redButton')}} +
    +{{/if}} \ No newline at end of file diff --git a/nano/templates/operating.tmpl b/nano/templates/operating.tmpl new file mode 100644 index 00000000000..c53bd94c651 --- /dev/null +++ b/nano/templates/operating.tmpl @@ -0,0 +1,47 @@ + + +{{if data.table}} +

    Patient Information:

    + {{if data.victim}} +
    +
    Name:
    +
    {{:data.victim.real_name}}
    + +
    Age:
    +
    {{:data.victim.age}}
    + +
    Blood Type:
    +
    {{:data.victim.b_type}}
    +
    +
    +
    +
    Health:
    +
    {{:data.victim.health}}
    + +
    Brute Damage:
    +
    {{:data.victim.brute}}
    + +
    Toxins Damage:
    +
    {{:data.victim.tox}}
    + +
    Fire Damage:
    +
    {{:data.victim.burn}}
    + +
    Suffocation Damage:
    +
    {{:data.victim.oxy}}
    + +
    Patient Status:
    +
    {{:data.victim.stat}}
    + +
    Heartbeat Rate:
    +
    {{:data.victim.pulse}}
    +
    + {{else}} + No Patient Detected + {{/if}} +{{else}} + No Table Detected +{{/if}} diff --git a/nano/templates/photocopier.tmpl b/nano/templates/photocopier.tmpl new file mode 100644 index 00000000000..9c9910e969b --- /dev/null +++ b/nano/templates/photocopier.tmpl @@ -0,0 +1,47 @@ + + +{{if data.copyItem}} +
    + {{:helper.link('Remove Item', 'eject', {'remove' : 1})}} + {{if data.toner}} + {{:helper.link('Copy', 'copy', {'copy' : 1})}}
    +
    +
    +
    + Printing: +
    +
    +
    + {{:helper.link('-', null, {'min' : 1}, data.copies == 1 ? 'linkOff' : null)}} +
    {{:data.copies}}
    + {{:helper.link('+', null, {'add' : 1}, data.copies == data.maxCopies ? 'linkOff' : null)}} +
    +
    +
    +
    +
    +
    Current toner level:
    +
    {{:data.toner}}u
    +
    + {{else}} +
    + Please insert a new toner cartridge! +
    + {{/if}} +{{else data.toner}} +

    Please insert something to copy.

    + {{if data.isSilicon}} + {{:helper.link('Print photo from database', 'image', {'aipic' : 1})}} + {{/if}} +
    +
    Current toner level:
    +
    {{:data.toner}}u
    +
    +{{else}} +
    + Please insert a new toner cartridge! +
    +{{/if}} \ No newline at end of file diff --git a/nano/templates/robot_control.tmpl b/nano/templates/robot_control.tmpl index 57bbebd490b..9e3a8769974 100644 --- a/nano/templates/robot_control.tmpl +++ b/nano/templates/robot_control.tmpl @@ -1,20 +1,4 @@ -{{if !data.is_ai}} -
    -
    - Emergency Self-Destruct: -
    -
    - {{if data.safety}} - {{:helper.link('ARM', 'unlocked', {'arm' : 1})}} - {{:helper.link('DETONATE', 'radiation', {'nuke' : 1}, 'disabled')}} - {{else}} - {{:helper.link('DISARM', 'locked', {'arm' : 1})}} - {{:helper.link('DETONATE', 'radiation', {'nuke' : 1}, null, 'redButton')}} - {{/if}} -
    -
    -
    -{{/if}} + {{for data.robots}}
    @@ -75,7 +59,6 @@ {{else}} {{:helper.link('Unlock', 'unlocked', {'lockdown' : value.name})}} {{/if}} - {{:helper.link('Self-Destruct', 'radiation', {'detonate' : value.name}, null, 'redButton')}} {{if value.hackable}} {{:helper.link('Hack', 'calculator', {'hack' : value.name}, null, 'redButton')}} {{/if}} diff --git a/nano/templates/uplink.tmpl b/nano/templates/uplink.tmpl index ed799677bc0..470f27064cb 100644 --- a/nano/templates/uplink.tmpl +++ b/nano/templates/uplink.tmpl @@ -77,16 +77,17 @@ Used In File(s): \code\game\objects\items\devices\uplinks.dm
    {{if data.exploit_exists == 1}} - Name: {{:data.exploit.name}}
    - Sex: {{:data.exploit.sex}}
    - Species: {{:data.exploit.species}}
    - Age: {{:data.exploit.age}}
    - Rank: {{:data.exploit.rank}}
    - Home System: {{:data.exploit.home_system}}
    - Citizenship: {{:data.exploit.citizenship}}
    - Faction: {{:data.exploit.faction}}
    - Religion: {{:data.exploit.religion}}
    - Fingerprint: {{:data.exploit.fingerprint}}
    + Name: {{:data.exploit.name}}
    + Sex: {{:data.exploit.sex}}
    + Species: {{:data.exploit.species}}
    + Age: {{:data.exploit.age}}
    + Rank: {{:data.exploit.rank}}
    + Home System: {{:data.exploit.home_system}}
    + Citizenship: {{:data.exploit.citizenship}}
    + Faction: {{:data.exploit.faction}}
    + Religion: {{:data.exploit.religion}}
    + Fingerprint: {{:data.exploit.fingerprint}}
    + Other Affiliation: {{:data.exploit.antagfaction}}

    Acquired Information:
    Notes:
    {{:data.exploit.nanoui_exploit_record}}

    diff --git a/polaris.dme b/polaris.dme index fd5b2e63e43..52cb45c0a40 100644 --- a/polaris.dme +++ b/polaris.dme @@ -63,6 +63,7 @@ #include "code\_helpers\type2type.dm" #include "code\_helpers\unsorted.dm" #include "code\_helpers\vector.dm" +#include "code\_onclick\_defines.dm" #include "code\_onclick\adjacent.dm" #include "code\_onclick\ai.dm" #include "code\_onclick\click.dm" @@ -74,9 +75,11 @@ #include "code\_onclick\rig.dm" #include "code\_onclick\telekinesis.dm" #include "code\_onclick\hud\_defines.dm" +#include "code\_onclick\hud\ability_screen_objects.dm" #include "code\_onclick\hud\action.dm" #include "code\_onclick\hud\ai.dm" #include "code\_onclick\hud\alien_larva.dm" +#include "code\_onclick\hud\fullscreen.dm" #include "code\_onclick\hud\gun_mode.dm" #include "code\_onclick\hud\hud.dm" #include "code\_onclick\hud\human.dm" @@ -159,6 +162,7 @@ #include "code\datums\computerfiles.dm" #include "code\datums\datacore.dm" #include "code\datums\EPv2.dm" +#include "code\datums\hierarchy.dm" #include "code\datums\mind.dm" #include "code\datums\mixed.dm" #include "code\datums\modules.dm" @@ -166,6 +170,13 @@ #include "code\datums\progressbar.dm" #include "code\datums\recipe.dm" #include "code\datums\sun.dm" +#include "code\datums\autolathe\arms.dm" +#include "code\datums\autolathe\autolathe.dm" +#include "code\datums\autolathe\devices.dm" +#include "code\datums\autolathe\engineering.dm" +#include "code\datums\autolathe\general.dm" +#include "code\datums\autolathe\medical.dm" +#include "code\datums\autolathe\tools.dm" #include "code\datums\helper_datums\construction_datum.dm" #include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\getrev.dm" @@ -197,16 +208,21 @@ #include "code\datums\repositories\repository.dm" #include "code\datums\supplypacks\atmospherics.dm" #include "code\datums\supplypacks\contraband.dm" +#include "code\datums\supplypacks\costumes.dm" #include "code\datums\supplypacks\engineering.dm" #include "code\datums\supplypacks\hospitality.dm" #include "code\datums\supplypacks\hydroponics.dm" +#include "code\datums\supplypacks\materials.dm" #include "code\datums\supplypacks\medical.dm" #include "code\datums\supplypacks\misc.dm" -#include "code\datums\supplypacks\operations.dm" +#include "code\datums\supplypacks\munitions.dm" +#include "code\datums\supplypacks\recreation.dm" +#include "code\datums\supplypacks\robotics.dm" #include "code\datums\supplypacks\science.dm" #include "code\datums\supplypacks\security.dm" #include "code\datums\supplypacks\supply.dm" #include "code\datums\supplypacks\supplypacks.dm" +#include "code\datums\supplypacks\voidsuits.dm" #include "code\datums\underwear\bottom.dm" #include "code\datums\underwear\socks.dm" #include "code\datums\underwear\top.dm" @@ -222,6 +238,7 @@ #include "code\datums\uplink\medical.dm" #include "code\datums\uplink\stealth_items.dm" #include "code\datums\uplink\stealthy_weapons.dm" +#include "code\datums\uplink\telecrystals.dm" #include "code\datums\uplink\tools.dm" #include "code\datums\uplink\uplink_categories.dm" #include "code\datums\uplink\uplink_items.dm" @@ -261,6 +278,7 @@ #include "code\game\skincmd.dm" #include "code\game\sound.dm" #include "code\game\supplyshuttle.dm" +#include "code\game\trader_visit.dm" #include "code\game\antagonist\_antagonist_setup.dm" #include "code\game\antagonist\antagonist.dm" #include "code\game\antagonist\antagonist_add.dm" @@ -280,6 +298,8 @@ #include "code\game\antagonist\outsider\mercenary.dm" #include "code\game\antagonist\outsider\ninja.dm" #include "code\game\antagonist\outsider\raider.dm" +#include "code\game\antagonist\outsider\technomancer.dm" +#include "code\game\antagonist\outsider\trader.dm" #include "code\game\antagonist\outsider\wizard.dm" #include "code\game\antagonist\station\changeling.dm" #include "code\game\antagonist\station\cultist.dm" @@ -394,6 +414,78 @@ #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\nuclear\pinpointer.dm" #include "code\game\gamemodes\revolution\revolution.dm" +#include "code\game\gamemodes\technomancer\catalog.dm" +#include "code\game\gamemodes\technomancer\clothing.dm" +#include "code\game\gamemodes\technomancer\core_obj.dm" +#include "code\game\gamemodes\technomancer\equipment.dm" +#include "code\game\gamemodes\technomancer\instability.dm" +#include "code\game\gamemodes\technomancer\presets.dm" +#include "code\game\gamemodes\technomancer\spell_objs.dm" +#include "code\game\gamemodes\technomancer\spell_objs_helpers.dm" +#include "code\game\gamemodes\technomancer\technomancer.dm" +#include "code\game\gamemodes\technomancer\assistance\assistance.dm" +#include "code\game\gamemodes\technomancer\assistance\golem.dm" +#include "code\game\gamemodes\technomancer\devices\boots_of_speed.dm" +#include "code\game\gamemodes\technomancer\devices\disposable_teleporter.dm" +#include "code\game\gamemodes\technomancer\devices\gloves_of_regen.dm" +#include "code\game\gamemodes\technomancer\devices\hypos.dm" +#include "code\game\gamemodes\technomancer\devices\implants.dm" +#include "code\game\gamemodes\technomancer\devices\shield_armor.dm" +#include "code\game\gamemodes\technomancer\devices\tesla_armor.dm" +#include "code\game\gamemodes\technomancer\spells\abjuration.dm" +#include "code\game\gamemodes\technomancer\spells\apportation.dm" +#include "code\game\gamemodes\technomancer\spells\audible_deception.dm" +#include "code\game\gamemodes\technomancer\spells\blink.dm" +#include "code\game\gamemodes\technomancer\spells\chroma.dm" +#include "code\game\gamemodes\technomancer\spells\condensation.dm" +#include "code\game\gamemodes\technomancer\spells\control.dm" +#include "code\game\gamemodes\technomancer\spells\dispel.dm" +#include "code\game\gamemodes\technomancer\spells\energy_siphon.dm" +#include "code\game\gamemodes\technomancer\spells\flame_tongue.dm" +#include "code\game\gamemodes\technomancer\spells\gambit.dm" +#include "code\game\gamemodes\technomancer\spells\illusion.dm" +#include "code\game\gamemodes\technomancer\spells\instability_tap.dm" +#include "code\game\gamemodes\technomancer\spells\mark_recall.dm" +#include "code\game\gamemodes\technomancer\spells\oxygenate.dm" +#include "code\game\gamemodes\technomancer\spells\passwall.dm" +#include "code\game\gamemodes\technomancer\spells\phase_shift.dm" +#include "code\game\gamemodes\technomancer\spells\radiance.dm" +#include "code\game\gamemodes\technomancer\spells\reflect.dm" +#include "code\game\gamemodes\technomancer\spells\resurrect.dm" +#include "code\game\gamemodes\technomancer\spells\shared_burden.dm" +#include "code\game\gamemodes\technomancer\spells\shield.dm" +#include "code\game\gamemodes\technomancer\spells\targeting_matrix.dm" +#include "code\game\gamemodes\technomancer\spells\track.dm" +#include "code\game\gamemodes\technomancer\spells\warp_strike.dm" +#include "code\game\gamemodes\technomancer\spells\aura\aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\biomed_aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\fire_aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\frost_aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\shock_aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\unstable_aura.dm" +#include "code\game\gamemodes\technomancer\spells\insert\corona.dm" +#include "code\game\gamemodes\technomancer\spells\insert\haste.dm" +#include "code\game\gamemodes\technomancer\spells\insert\insert.dm" +#include "code\game\gamemodes\technomancer\spells\insert\mend_burns.dm" +#include "code\game\gamemodes\technomancer\spells\insert\mend_metal.dm" +#include "code\game\gamemodes\technomancer\spells\insert\mend_organs.dm" +#include "code\game\gamemodes\technomancer\spells\insert\mend_wires.dm" +#include "code\game\gamemodes\technomancer\spells\insert\mend_wounds.dm" +#include "code\game\gamemodes\technomancer\spells\insert\purify.dm" +#include "code\game\gamemodes\technomancer\spells\insert\repel_missiles.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\beam.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\chain_lightning.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\force_missile.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\lightning.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\overload.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\projectile.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\darkness.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\fire_blast.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\pulsar.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\spawner.dm" +#include "code\game\gamemodes\technomancer\spells\summon\summon.dm" +#include "code\game\gamemodes\technomancer\spells\summon\summon_creature.dm" +#include "code\game\gamemodes\technomancer\spells\summon\summon_ward.dm" #include "code\game\gamemodes\traitor\traitor.dm" #include "code\game\gamemodes\wizard\wizard.dm" #include "code\game\jobs\_access_defs.dm" @@ -417,7 +509,6 @@ #include "code\game\machinery\alarm.dm" #include "code\game\machinery\atmo_control.dm" #include "code\game\machinery\autolathe.dm" -#include "code\game\machinery\autolathe_datums.dm" #include "code\game\machinery\Beacon.dm" #include "code\game\machinery\biogenerator.dm" #include "code\game\machinery\bioprinter.dm" @@ -563,8 +654,16 @@ #include "code\game\machinery\embedded_controller\embedded_program_base.dm" #include "code\game\machinery\embedded_controller\simple_docking_controller.dm" #include "code\game\machinery\kitchen\gibber.dm" +#include "code\game\machinery\kitchen\icecream.dm" #include "code\game\machinery\kitchen\microwave.dm" #include "code\game\machinery\kitchen\smartfridge.dm" +#include "code\game\machinery\kitchen\cooking_machines\_cooker.dm" +#include "code\game\machinery\kitchen\cooking_machines\_cooker_output.dm" +#include "code\game\machinery\kitchen\cooking_machines\candy.dm" +#include "code\game\machinery\kitchen\cooking_machines\cereal.dm" +#include "code\game\machinery\kitchen\cooking_machines\fryer.dm" +#include "code\game\machinery\kitchen\cooking_machines\grill.dm" +#include "code\game\machinery\kitchen\cooking_machines\oven.dm" #include "code\game\machinery\pipe\construction.dm" #include "code\game\machinery\pipe\pipe_dispenser.dm" #include "code\game\machinery\pipe\pipelayer.dm" @@ -671,7 +770,6 @@ #include "code\game\objects\items\devices\suit_cooling.dm" #include "code\game\objects\items\devices\t_scanner.dm" #include "code\game\objects\items\devices\taperecorder.dm" -#include "code\game\objects\items\devices\telecrystal.dm" #include "code\game\objects\items\devices\traitordevices.dm" #include "code\game\objects\items\devices\transfer_valve.dm" #include "code\game\objects\items\devices\uplink.dm" @@ -697,6 +795,7 @@ #include "code\game\objects\items\stacks\nanopaste.dm" #include "code\game\objects\items\stacks\rods.dm" #include "code\game\objects\items\stacks\stack.dm" +#include "code\game\objects\items\stacks\telecrystal.dm" #include "code\game\objects\items\stacks\sheets\leather.dm" #include "code\game\objects\items\stacks\tiles\tile_types.dm" #include "code\game\objects\items\weapons\AI_modules.dm" @@ -729,6 +828,7 @@ #include "code\game\objects\items\weapons\stunbaton.dm" #include "code\game\objects\items\weapons\surgery_tools.dm" #include "code\game\objects\items\weapons\swords_axes_etc.dm" +#include "code\game\objects\items\weapons\syndie.dm" #include "code\game\objects\items\weapons\tape.dm" #include "code\game\objects\items\weapons\teleportation.dm" #include "code\game\objects\items\weapons\tools.dm" @@ -893,11 +993,14 @@ #include "code\game\turfs\simulated\wall_icon.dm" #include "code\game\turfs\simulated\wall_types.dm" #include "code\game\turfs\simulated\walls.dm" +#include "code\game\turfs\snow\snow.dm" #include "code\game\turfs\space\space.dm" #include "code\game\turfs\space\transit.dm" #include "code\game\turfs\unsimulated\beach.dm" #include "code\game\turfs\unsimulated\floor.dm" +#include "code\game\turfs\unsimulated\planetary.dm" #include "code\game\turfs\unsimulated\walls.dm" +#include "code\game\verbs\advanced_who.dm" #include "code\game\verbs\ignore.dm" #include "code\game\verbs\ooc.dm" #include "code\game\verbs\suicide.dm" @@ -1032,6 +1135,7 @@ #include "code\modules\client\preferences_spawnpoints.dm" #include "code\modules\client\preferences_toggle_procs.dm" #include "code\modules\client\ui_style.dm" +#include "code\modules\client\preference_setup\_defines.dm" #include "code\modules\client\preference_setup\preference_setup.dm" #include "code\modules\client\preference_setup\antagonism\01_basic.dm" #include "code\modules\client\preference_setup\antagonism\02_candidacy.dm" @@ -1068,12 +1172,13 @@ #include "code\modules\clothing\chameleon.dm" #include "code\modules\clothing\clothing.dm" #include "code\modules\clothing\clothing_accessories.dm" -#include "code\modules\clothing\ears\skrell.dm" +#include "code\modules\clothing\ears\ears.dm" #include "code\modules\clothing\glasses\glasses.dm" #include "code\modules\clothing\glasses\hud.dm" #include "code\modules\clothing\gloves\arm_guards.dm" #include "code\modules\clothing\gloves\boxing.dm" #include "code\modules\clothing\gloves\color.dm" +#include "code\modules\clothing\gloves\gauntlets.dm" #include "code\modules\clothing\gloves\miscellaneous.dm" #include "code\modules\clothing\head\collectable.dm" #include "code\modules\clothing\head\hardhat.dm" @@ -1095,7 +1200,6 @@ #include "code\modules\clothing\shoes\miscellaneous.dm" #include "code\modules\clothing\spacesuits\alien.dm" #include "code\modules\clothing\spacesuits\breaches.dm" -#include "code\modules\clothing\spacesuits\captain.dm" #include "code\modules\clothing\spacesuits\miscellaneous.dm" #include "code\modules\clothing\spacesuits\spacesuits.dm" #include "code\modules\clothing\spacesuits\syndi.dm" @@ -1197,6 +1301,7 @@ #include "code\modules\events\radiation_storm.dm" #include "code\modules\events\random_antagonist.dm" #include "code\modules\events\rogue_drones.dm" +#include "code\modules\events\solar_storm.dm" #include "code\modules\events\space_ninja.dm" #include "code\modules\events\spacevine.dm" #include "code\modules\events\spider_infestation.dm" @@ -1208,6 +1313,7 @@ #include "code\modules\examine\descriptions\atmospherics.dm" #include "code\modules\examine\descriptions\devices.dm" #include "code\modules\examine\descriptions\engineering.dm" +#include "code\modules\examine\descriptions\machines.dm" #include "code\modules\examine\descriptions\medical.dm" #include "code\modules\examine\descriptions\mobs.dm" #include "code\modules\examine\descriptions\paperwork.dm" @@ -1337,6 +1443,7 @@ #include "code\modules\mob\language\synthetic.dm" #include "code\modules\mob\living\autohiss.dm" #include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\death.dm" #include "code\modules\mob\living\default_language.dm" #include "code\modules\mob\living\inventory.dm" #include "code\modules\mob\living\life.dm" @@ -1574,11 +1681,17 @@ #include "code\modules\organs\organ.dm" #include "code\modules\organs\organ_external.dm" #include "code\modules\organs\organ_icon.dm" -#include "code\modules\organs\organ_internal.dm" #include "code\modules\organs\organ_stump.dm" #include "code\modules\organs\pain.dm" #include "code\modules\organs\robolimbs.dm" #include "code\modules\organs\wound.dm" +#include "code\modules\organs\internal\appendix.dm" +#include "code\modules\organs\internal\eyes.dm" +#include "code\modules\organs\internal\heart.dm" +#include "code\modules\organs\internal\kidneys.dm" +#include "code\modules\organs\internal\liver.dm" +#include "code\modules\organs\internal\lungs.dm" +#include "code\modules\organs\internal\organ_internal.dm" #include "code\modules\organs\subtypes\diona.dm" #include "code\modules\organs\subtypes\machine.dm" #include "code\modules\organs\subtypes\seromi.dm" @@ -1817,7 +1930,6 @@ #include "code\modules\research\xenoarchaeology\machinery\geosample_scanner.dm" #include "code\modules\research\xenoarchaeology\tools\ano_device_battery.dm" #include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" -#include "code\modules\research\xenoarchaeology\tools\gearbelt.dm" #include "code\modules\research\xenoarchaeology\tools\suspension_generator.dm" #include "code\modules\research\xenoarchaeology\tools\tools.dm" #include "code\modules\research\xenoarchaeology\tools\tools_anoscanner.dm" @@ -1909,6 +2021,7 @@ #include "code\modules\surgery\slimes.dm" #include "code\modules\surgery\surgery.dm" #include "code\modules\surgery\~defines.dm" +#include "code\modules\tables\bench.dm" #include "code\modules\tables\flipping.dm" #include "code\modules\tables\interactions.dm" #include "code\modules\tables\presets.dm" diff --git a/sound/effects/ding.ogg b/sound/effects/ding.ogg new file mode 100644 index 00000000000..33516f793f3 Binary files /dev/null and b/sound/effects/ding.ogg differ diff --git a/sound/effects/printer.ogg b/sound/effects/printer.ogg new file mode 100644 index 00000000000..c9546490f17 Binary files /dev/null and b/sound/effects/printer.ogg differ diff --git a/sound/voice/ManUp1.ogg b/sound/voice/ManUp1.ogg index 9239a02e177..6fe58b52701 100644 Binary files a/sound/voice/ManUp1.ogg and b/sound/voice/ManUp1.ogg differ