diff --git a/.travis.yml b/.travis.yml index bfb37118dd..432d409314 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ sudo: false env: BYOND_MAJOR="510" BYOND_MINOR="1346" - MACRO_COUNT=987 + MACRO_COUNT=986 cache: directories: diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 31f0233b23..2207ffb075 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 fc2d16ea63..8115790c50 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/misc.dm b/code/__defines/misc.dm index 0a06743993..68954b0dc5 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 b10463b458..c3ce40e657 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 9f4ece96f8..8a1df2059b 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 1e14d39183..d8623fa3eb 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)) diff --git a/code/_macros.dm b/code/_macros.dm index 801498d915..06376205d1 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/hud/_defines.dm b/code/_onclick/hud/_defines.dm index a66957254f..f2df817366 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 0000000000..0192713aff --- /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/hud.dm b/code/_onclick/hud/hud.dm index 16c601ecb7..45c6f7e277 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 diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index d38b3acc5f..709117de8c 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -303,6 +303,17 @@ mymob.ling_chem_display.icon_state = "ling_chems" hud_elements |= mymob.ling_chem_display + 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.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.pain = new /obj/screen( null ) mymob.zone_sel = new /obj/screen/zone_sel( null ) @@ -371,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/item_attack.dm b/code/_onclick/item_attack.dm index 8c55b0d850..411d25befb 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). */ @@ -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 b249db9a47..ae0d5a2544 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 bd3d82247c..9463986f8b 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/datums/EPv2.dm b/code/datums/EPv2.dm index d5b85475db..a4e57d346d 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 0000000000..f1dbc75192 --- /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 0000000000..4adeb85760 --- /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 0000000000..9c6ab5bb97 --- /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 0000000000..ce6b5f07b5 --- /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 0000000000..f354583318 --- /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 0000000000..40211f9a8f --- /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 0000000000..50361e94d2 --- /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 cc603aa2df..2043febdb6 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 0000000000..ab009e03c3 --- /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 91c85f8ac2..fdbb4cafc3 100644 --- a/code/datums/supplypacks/atmospherics.dm +++ b/code/datums/supplypacks/atmospherics.dm @@ -52,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 @@ -60,7 +60,7 @@ /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 @@ -69,7 +69,7 @@ /datum/supply_packs/atmos/air_dispenser contains = list(/obj/machinery/pipedispenser/orderable) name = "Pipe Dispenser" - cost = 35 + cost = 25 containertype = /obj/structure/closet/crate/secure/large containername = "Pipe Dispenser Crate" access = access_atmospherics @@ -77,7 +77,32 @@ /datum/supply_packs/atmos/disposals_dispenser contains = list(/obj/machinery/pipedispenser/disposal/orderable) name = "Disposals Pipe Dispenser" - cost = 35 + cost = 25 containertype = /obj/structure/closet/crate/secure/large containername = "Disposal Dispenser Crate" - access = access_atmospherics \ No newline at end of file + access = access_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 = 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 fa8c237fe8..c33b2b120c 100644 --- a/code/datums/supplypacks/contraband.dm +++ b/code/datums/supplypacks/contraband.dm @@ -14,7 +14,7 @@ ) name = "Contraband crate" - cost = 30 + cost = 25 containertype = /obj/structure/closet/crate containername = "Unlabeled crate" contraband = 1 @@ -28,10 +28,10 @@ /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" @@ -40,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 index b5a494321a..cb5a950bfe 100644 --- a/code/datums/supplypacks/costumes.dm +++ b/code/datums/supplypacks/costumes.dm @@ -124,7 +124,7 @@ datum/supply_packs/costumes/witch /datum/supply_packs/randomised/costumes/costume_hats name = "Costume hats" containername = "Actor hats crate" - containertype = /obj/structure/closet + containertype = /obj/structure/closet/crate cost = 10 num_contained = 3 contains = list( diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index 900419d0d3..e42b1d1794 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -29,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" @@ -48,7 +48,7 @@ /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" @@ -72,7 +72,7 @@ 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 @@ -110,7 +110,7 @@ /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 @@ -118,7 +118,7 @@ /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 @@ -126,7 +126,7 @@ /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 @@ -142,7 +142,7 @@ /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 @@ -150,7 +150,7 @@ /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 @@ -167,7 +167,7 @@ /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 @@ -180,7 +180,7 @@ /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 diff --git a/code/datums/supplypacks/hospitality.dm b/code/datums/supplypacks/hospitality.dm index 6dd421b243..0e245f1921 100644 --- a/code/datums/supplypacks/hospitality.dm +++ b/code/datums/supplypacks/hospitality.dm @@ -22,7 +22,7 @@ /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" diff --git a/code/datums/supplypacks/hydroponics.dm b/code/datums/supplypacks/hydroponics.dm index a9a26fd561..25f06143d0 100644 --- a/code/datums/supplypacks/hydroponics.dm +++ b/code/datums/supplypacks/hydroponics.dm @@ -17,21 +17,21 @@ /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" @@ -55,14 +55,14 @@ /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 @@ -76,7 +76,7 @@ /datum/supply_packs/hydro/chicken name = "Chicken crate" - cost = 20 + cost = 25 containertype = /obj/structure/largecrate/animal/chick containername = "Chicken crate" access = access_hydroponics @@ -123,7 +123,7 @@ /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" @@ -142,7 +142,7 @@ /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 index b25565ae0f..cf73f052d5 100644 --- a/code/datums/supplypacks/materials.dm +++ b/code/datums/supplypacks/materials.dm @@ -9,40 +9,35 @@ /datum/supply_packs/materials/metal50 name = "50 metal sheets" - contains = list(/obj/item/stack/material/steel) - amount = 50 + 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) - amount = 50 + 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) - amount = 50 + 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) - amount = 50 + 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) + contains = list(/obj/item/stack/material/cardboard/fifty) name = "50 cardboard sheets" - amount = 50 cost = 10 containertype = /obj/structure/closet/crate containername = "Cardboard sheets crate" @@ -53,10 +48,9 @@ containername = "Imported carpet crate" cost = 15 contains = list( - /obj/item/stack/tile/carpet, - /obj/item/stack/tile/carpet/blue + /obj/item/stack/tile/carpet/fifty, + /obj/item/stack/tile/carpet/blue/fifty ) - amount = 50 /datum/supply_packs/misc/linoleum @@ -64,5 +58,4 @@ containertype = /obj/structure/closet/crate containername = "Linoleum crate" cost = 15 - contains = list(/obj/item/stack/tile/linoleum) - amount = 50 \ No newline at end of file + 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 c7cc7dc575..3972114440 100644 --- a/code/datums/supplypacks/medical.dm +++ b/code/datums/supplypacks/medical.dm @@ -42,7 +42,7 @@ /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" @@ -75,7 +75,7 @@ /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" @@ -87,7 +87,7 @@ /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 @@ -111,7 +111,7 @@ /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 @@ -157,7 +157,7 @@ /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 @@ -204,7 +204,7 @@ /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 @@ -225,7 +225,7 @@ /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 @@ -269,7 +269,7 @@ /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 diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm index 80c25b48a3..4fa22ddc50 100644 --- a/code/datums/supplypacks/misc.dm +++ b/code/datums/supplypacks/misc.dm @@ -67,31 +67,6 @@ /obj/item/clothing/accessory/storage/white_drop_pouches, /obj/item/clothing/accessory/storage/webbing ) - cost = 15 + cost = 10 containertype = "/obj/structure/closet/crate" containername = "Webbing crate" - -/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" \ No newline at end of file diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm index a33c9accac..8edee72239 100644 --- a/code/datums/supplypacks/munitions.dm +++ b/code/datums/supplypacks/munitions.dm @@ -40,7 +40,7 @@ contains = list( /obj/item/weapon/gun/energy/xray = 2, /obj/item/weapon/shield/energy = 2) - cost = 125 + cost = 100 containertype = /obj/structure/closet/crate/secure/weapon containername = "Experimental weapons crate" access = access_armory @@ -60,7 +60,7 @@ /obj/item/weapon/storage/box/shotgunshells, /obj/item/weapon/gun/projectile/shotgun/pump/combat = 2 ) - cost = 65 + cost = 50 containertype = /obj/structure/closet/crate/secure containername = "Shotgun crate" access = access_armory @@ -68,7 +68,7 @@ /datum/supply_packs/munitions/erifle name = "Energy marksman crate" contains = list(/obj/item/weapon/gun/energy/sniperrifle = 2) - cost = 90 + cost = 100 containertype = /obj/structure/closet/crate/secure containername = "Energy marksman crate" access = access_armory @@ -91,7 +91,7 @@ /obj/item/weapon/gun/projectile/automatic/wt550, /obj/item/weapon/gun/projectile/automatic/z8 ) - cost = 90 + cost = 100 containertype = /obj/structure/closet/crate/secure containername = "Automatic weapon crate" access = access_armory @@ -119,12 +119,12 @@ containername = "Weapons crate" /datum/supply_packs/munitions/shotgunammo - name = "Ballistic ammunition crate" + name = "Shotgun ammunition crate" contains = list( /obj/item/weapon/storage/box/shotgunammo = 2, /obj/item/weapon/storage/box/shotgunshells = 2 ) - cost = 60 + cost = 25 containertype = /obj/structure/closet/crate/secure containername = "ballistic ammunition crate" access = access_armory @@ -137,7 +137,7 @@ /obj/item/ammo_magazine/mc9mmt/rubber, /obj/item/ammo_magazine/a556 ) - cost = 20 + cost = 25 containertype = /obj/structure/closet/crate/secure containername = "Automatic weapon ammunition crate" access = access_armory @@ -145,7 +145,7 @@ /datum/supply_packs/munitions/beanbagammo name = "Beanbag shells" contains = list(/obj/item/weapon/storage/box/beanbags = 3) - cost = 30 + cost = 25 containertype = /obj/structure/closet/crate containername = "Beanbag shells" access = null diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm index 18895b48f4..7bfdaaeeb6 100644 --- a/code/datums/supplypacks/recreation.dm +++ b/code/datums/supplypacks/recreation.dm @@ -19,7 +19,7 @@ /obj/item/weapon/material/twohanded/spear/foam = 2, /obj/item/weapon/material/twohanded/fireaxe/foam = 2 ) - cost = 80 + cost = 50 containertype = /obj/structure/closet/crate containername = "foam weapon crate" @@ -33,7 +33,7 @@ ) containertype = /obj/structure/closet containername = "Lasertag Closet" - cost = 20 + cost = 10 /datum/supply_packs/recreation/artscrafts name = "Arts and Crafts supplies" diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm index 090f3d2078..80d315af10 100644 --- a/code/datums/supplypacks/robotics.dm +++ b/code/datums/supplypacks/robotics.dm @@ -11,7 +11,7 @@ group = "Robotics" access = access_robotics -/datum/supply_packs/eng/robotics +/datum/supply_packs/robotics/robotics_assembly name = "Robotics assembly crate" contains = list( /obj/item/device/assembly/prox_sensor = 3, @@ -58,7 +58,7 @@ /obj/item/weapon/circuitboard/mecha/ripley/main, /obj/item/weapon/circuitboard/mecha/ripley/peripherals ) - cost = 30 + cost = 25 containertype = /obj/structure/closet/crate/secure containername = "APLU \"Ripley\" Circuit Crate" access = access_robotics diff --git a/code/datums/supplypacks/science.dm b/code/datums/supplypacks/science.dm index e95cb2d9cf..3beae30ddc 100644 --- a/code/datums/supplypacks/science.dm +++ b/code/datums/supplypacks/science.dm @@ -8,17 +8,20 @@ /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/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 diff --git a/code/datums/supplypacks/security.dm b/code/datums/supplypacks/security.dm index 483d8e0c12..3099d8d955 100644 --- a/code/datums/supplypacks/security.dm +++ b/code/datums/supplypacks/security.dm @@ -82,7 +82,7 @@ /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 @@ -104,7 +104,7 @@ 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, @@ -162,7 +162,7 @@ /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 @@ -189,7 +189,7 @@ /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 @@ -210,7 +210,7 @@ /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 @@ -240,7 +240,7 @@ /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 @@ -251,8 +251,8 @@ /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, @@ -268,7 +268,7 @@ /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 @@ -279,7 +279,7 @@ /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, @@ -294,7 +294,7 @@ /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 @@ -309,12 +309,11 @@ /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" @@ -335,7 +334,7 @@ /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" @@ -355,21 +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" diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm index e9832b3657..a73ebc91ed 100644 --- a/code/datums/supplypacks/supply.dm +++ b/code/datums/supplypacks/supply.dm @@ -50,12 +50,19 @@ 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( @@ -103,7 +110,7 @@ /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 @@ -118,7 +125,7 @@ /datum/supply_packs/supply/cargotrain name = "Cargo Train Tug" contains = list(/obj/vehicle/train/cargo/engine) - cost = 45 + cost = 35 containertype = /obj/structure/largecrate containername = "Cargo Train Tug Crate" diff --git a/code/datums/supplypacks/supplypacks.dm b/code/datums/supplypacks/supplypacks.dm index c62231285c..77004ec21f 100644 --- a/code/datums/supplypacks/supplypacks.dm +++ b/code/datums/supplypacks/supplypacks.dm @@ -28,7 +28,6 @@ var/list/all_supply_groups = list("Atmospherics", 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 index 3d37bd171a..6bf5c0f5b3 100644 --- a/code/datums/supplypacks/voidsuits.dm +++ b/code/datums/supplypacks/voidsuits.dm @@ -16,7 +16,7 @@ /obj/item/clothing/shoes/magboots = 2, /obj/item/weapon/tank/oxygen = 2, ) - cost = 45 + cost = 40 containertype = "/obj/structure/closet/crate/secure" containername = "Atmospheric voidsuit crate" access = access_atmospherics @@ -58,7 +58,7 @@ /obj/item/clothing/shoes/magboots = 2, /obj/item/weapon/tank/oxygen = 2 ) - cost = 55 + cost = 40 containertype = "/obj/structure/closet/crate/secure" containername = "Security voidsuit crate" @@ -70,7 +70,7 @@ /obj/item/clothing/mask/breath = 2, /obj/item/weapon/tank/oxygen = 2 ) - cost = 35 + 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 8308cfc319..8569308543 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" @@ -41,7 +42,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 +52,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 +64,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 +89,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)" diff --git a/code/datums/uplink/announcements.dm b/code/datums/uplink/announcements.dm index 1b3cf75462..58baa14e8e 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 30a41d8edb..20367f3989 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 b837625c8a..2cfd2f7203 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 = 360 + +/datum/uplink_item/item/badassery/surplus/merc4 + name = "Surplus Crate - 480 TC" + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 4 + item_worth = 720 + +/datum/uplink_item/item/badassery/surplus/merc6 + name = "Surplus Crate - 720 TC" + item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 6 + item_worth = 1440 + /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 f7c6d1a072..851a9043a6 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 66ecfb6bf9..c58ae6c19f 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 c4302464b6..7e3e2f3005 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 d14ca10a07..381221127d 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 31364a0953..1da0381390 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 = 30 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 = 30 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 ead34c5646..7a60e42e13 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 = 15 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 = 15 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 0000000000..f814b55232 --- /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 fb1b52c068..7a02e16990 100644 --- a/code/datums/uplink/tools.dm +++ b/code/datums/uplink/tools.dm @@ -4,82 +4,82 @@ /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 + item_cost = 20 path = /obj/item/weapon/plastique /datum/uplink_item/item/tools/encryptionkey_radio name = "Encrypted Radio Channel Key" - item_cost = 2 + item_cost = 20 path = /obj/item/device/encryptionkey/syndicate +/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/encryptionkey_binary name = "Binary Translator Key" - item_cost = 3 + item_cost = 20 path = /obj/item/device/encryptionkey/binary /datum/uplink_item/item/tools/emag name = "Cryptographic Sequencer" - item_cost = 3 + item_cost = 30 path = /obj/item/weapon/card/emag /datum/uplink_item/item/tools/clerical name = "Morphic Clerical Kit" - item_cost = 3 + item_cost = 15 path = /obj/item/weapon/storage/box/syndie_kit/clerical +/datum/uplink_item/item/tools/money + name = "Operations Funding" + item_cost = 15 + 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/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/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 = 50 path = /obj/item/device/powersink /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 6e222b764b..7c65747f0b 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 32a7d0cffb..0cb7ce1d1d 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 c0e8d3aaca..58b054b849 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 = 30 + 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 3300da0ceb..291cef4682 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 77779bafcf..bcf0573367 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 78fdb6dc7b..4f0aed0d35 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 d91242ea8b..9bf83d2d6d 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 0000000000..817c18873a --- /dev/null +++ b/code/game/antagonist/outsider/technomancer.dm @@ -0,0 +1,79 @@ +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) + technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/technomancer_core(technomancer_mob), slot_back) + 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) + technomancer_mob.equip_to_slot_or_del(new /obj/item/weapon/technomancer_core(technomancer_mob), slot_back) + 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 0000000000..aaf573cd20 --- /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 bba83cd42a..8905d5fd9a 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 109eeaf501..33f0635015 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 a89fe95d95..a60faeb830 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 c0330fb080..41f66fb4ec 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 e75020fc59..a9219e8746 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 7ab1cdda3b..d50f4a967a 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 87de25135a..b27b0ef523 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 = "ling_space_suit" 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 = "ling_armor" genomecost = 3 verbpath = /mob/proc/changeling_spacearmor @@ -70,7 +71,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 +91,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 0e8d061a4e..c23e6721b0 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 6dd22efab9..bfe97bf19e 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 6b5fcf01fb..ceb6e00ae1 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 55d51bda06..65cdc00ca2 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 7fae4c1601..ee11371dac 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 8f07460bf2..0bf5d0f326 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 d143bad484..705c1269a3 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 8f7998f67a..c1152e8364 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 207d9ec68a..0dbee6b09d 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 40c4b372a0..dd77debc97 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 94699995ff..240cac473d 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 8878747d0c..9c28fcadc4 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 a761a5335c..c4f5aca088 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 0bf73474eb..f106d9167f 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 ac7080301b..dee603fc4a 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 5a157cdbb7..0502a35f28 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 8a469f9f27..c8e5f11604 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 93c0ad619f..ae95317683 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 ca200a5091..09c026aadb 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 6f2d43e5da..1688c81f31 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 b7a2469dea..9b42ee68e0 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 79fd2dcf74..72dfd6ec5c 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/shriek.dm b/code/game/gamemodes/changeling/powers/shriek.dm index 71814f1a2e..24d024467a 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 ffa02942c2..c16d74ff59 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 57a55e2e21..236af69f5f 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 f88fbaca89..b96b87288a 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 06133ef7f8..99bb7762fa 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 3cd2a496cb..20b49bb7f8 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -2,7 +2,6 @@ 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 @@ -72,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) @@ -84,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 @@ -107,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 83dfc857be..d7c0cff5ec 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/game_mode.dm b/code/game/gamemodes/game_mode.dm index 2aa1d2b024..60d968bba0 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 0e9513bbab..abf9fb2e2a 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 3323db503b..2aa0cd46b6 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 af3629bfef..93869f3845 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 853e5039d4..601d4ccc17 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 0000000000..786a7f0b85 --- /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 0000000000..8bb6ef2ea0 --- /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 0000000000..80f77ac75f --- /dev/null +++ b/code/game/gamemodes/technomancer/catalog.dm @@ -0,0 +1,271 @@ +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]." + new desired_object.obj_path(get_turf(H)) + + 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 0000000000..ef243aa484 --- /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 0000000000..945102053e --- /dev/null +++ b/code/game/gamemodes/technomancer/core_obj.dm @@ -0,0 +1,287 @@ +//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() + +/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 0000000000..f5acf80f49 --- /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 0000000000..43f0f2737a --- /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 0000000000..9c18e774ed --- /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 0000000000..b54ce5e35c --- /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/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm new file mode 100644 index 0000000000..7bcd52babe --- /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 0000000000..1446afcba7 --- /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 0000000000..efec413e30 --- /dev/null +++ b/code/game/gamemodes/technomancer/equipment.dm @@ -0,0 +1,156 @@ +/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 = "emsbelt" + item_state = "emsbelt" + 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 0000000000..9297f18a17 --- /dev/null +++ b/code/game/gamemodes/technomancer/instability.dm @@ -0,0 +1,210 @@ +/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) ) + 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 0000000000..6222f39a12 --- /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 0000000000..e00c8d123e --- /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 0000000000..9b638e8c12 --- /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 0000000000..6e4f7d73b3 --- /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 0000000000..ad4fcdc9ef --- /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 0000000000..36b2a7c344 --- /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 0000000000..38b55c1342 --- /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 0000000000..8ccdc89d0a --- /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 0000000000..a1c0940f14 --- /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 0000000000..83ab173762 --- /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 0000000000..caec6ff3a2 --- /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 = "#FF6A00" + +/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 0000000000..a270ef16e3 --- /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 0000000000..d7e2d2a7b6 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/aura/unstable_aura.dm @@ -0,0 +1,41 @@ +/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(500)) + 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) + + 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 0000000000..43ca683fd5 --- /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 0000000000..fb459620c0 --- /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 0000000000..9425b920a5 --- /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 0000000000..566f3d7ceb --- /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 0000000000..e0de7920c1 --- /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 0000000000..0657111f15 --- /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 0000000000..772ee579cc --- /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 0000000000..6a0b29d117 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/gambit.dm @@ -0,0 +1,29 @@ +/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/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/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 0000000000..62cda729e9 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/illusion.dm @@ -0,0 +1,177 @@ +/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/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) + if(what_to_say) + illusion.say(what_to_say) + +/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 0000000000..555ff9f559 --- /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 0000000000..fbeb255517 --- /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 0000000000..a378d98b87 --- /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 0000000000..d74e570d3f --- /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 0000000000..37a9be3b18 --- /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 0000000000..3d621dc5ed --- /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 0000000000..cdc319dd73 --- /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 0000000000..6f24704d4a --- /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 0000000000..5ae40915d0 --- /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 0000000000..0f5d404c4e --- /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 0000000000..9ebeda9676 --- /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 0000000000..07f7db42fe --- /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 0000000000..0fe6be7808 --- /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 0000000000..9acda5227a --- /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 0000000000..faffe94972 --- /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 0000000000..cd6a87df1f --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/phase_shift.dm @@ -0,0 +1,47 @@ +/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/item/weapon/spell/phase_shift/on_use_cast(mob/user) + if(isturf(user.loc)) //Check if we're not already in a rift. + 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) + else //We're already in a rift, time to get out. + if(istype(loc, /obj/effect/phase_shift)) + var/obj/effect/phase_shift/PS = user.loc + qdel(PS) //Ejecting is handled in Destory() + visible_message("[user] reappears from the rift as it collapses.") + qdel(src) 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 0000000000..bfee4ec3f1 --- /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 0000000000..5d4da458a0 --- /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 0000000000..c13d2363d8 --- /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 0000000000..3c77f89b0f --- /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 0000000000..a96e2f70ab --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/projectile/overload.dm @@ -0,0 +1,42 @@ +/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 + +/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 0000000000..d4e8474aed --- /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 0000000000..b8eb1401f1 --- /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 0000000000..6944bd49bc --- /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 0000000000..2aee98bc1e --- /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 0000000000..c7e8e35107 --- /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 0000000000..807ea698a2 --- /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 0000000000..627be97e36 --- /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 0000000000..7cf519ddbd --- /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 0000000000..4704cda8b9 --- /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 0000000000..e748145e42 --- /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 0000000000..4565dcd816 --- /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 0000000000..eac1c67b40 --- /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 0000000000..a9be662cf3 --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/summon/summon_ward.dm @@ -0,0 +1,110 @@ +/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!" + +/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 0000000000..a74aab2ff5 --- /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 0000000000..a6249c5eed --- /dev/null +++ b/code/game/gamemodes/technomancer/spells/track.dm @@ -0,0 +1,74 @@ +/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 + 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,tracked)) + + switch(get_dist(src,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 0000000000..ffb9749899 --- /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 0000000000..a7131fb54c --- /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 9da98075f3..4e28c4e577 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 e371ff8367..b76638fe3b 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 d95c555e0f..de305db26c 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 718026450c..bf027d93a2 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 0551df6c3c..514d3cf047 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -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 diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 6940cd57c9..1a9351496e 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 32fd340755..08faeff78b 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 adf5e2ab45..14d772437d 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -342,7 +342,7 @@ 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])) permitted = 0 if(!permitted) diff --git a/code/game/jobs/whitelist.dm b/code/game/jobs/whitelist.dm index 440cf2e22e..4d7106d213 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)) + return 1 + return 0 #undef WHITELISTFILE diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 5901148603..236079f8e3 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 fe495a67be..0000000000 --- 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 c6b6fabe1b..986d20e3b9 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/presets.dm b/code/game/machinery/camera/presets.dm index 883d9611c1..136bafa90e 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -17,8 +17,7 @@ var/global/list/station_networks = list( NETWORK_RESEARCH_OUTPOST, NETWORK_ROBOTS, NETWORK_PRISON, - NETWORK_SECURITY, - NETWORK_COMMUNICATORS + NETWORK_SECURITY ) var/global/list/engineering_networks = list( NETWORK_ENGINE, diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 82834df896..ca56ce168d 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 224e201628..bb78fa00d5 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 48e0c48ff0..e093f4d5f6 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/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 6873cbf005..517b9c7fee 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -737,6 +737,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)) @@ -810,22 +813,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 9647befd6e..72b878a49a 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/firedoor.dm b/code/game/machinery/doors/firedoor.dm index b2b619e342..44a9dedae0 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/kitchen/cooking_machines/_cooker.dm b/code/game/machinery/kitchen/cooking_machines/_cooker.dm new file mode 100644 index 0000000000..a6af0f13f2 --- /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 0000000000..cb4dcd15ed --- /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 0000000000..21fd506911 --- /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 0000000000..3a7b19c9b1 --- /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 0000000000..1fc0e75ef1 --- /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 0000000000..312189c588 --- /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 0000000000..ec941af223 --- /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 0000000000..448b252fd4 --- /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 3a08a681d2..9c5fc61332 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 6e20801680..7aa7d495e8 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/status_display_ai.dm b/code/game/machinery/status_display_ai.dm index 51fcfb4f51..97f022ef55 100644 --- a/code/game/machinery/status_display_ai.dm +++ b/code/game/machinery/status_display_ai.dm @@ -23,6 +23,12 @@ var/list/ai_status_emotions = list( "Dorfy" = new /datum/ai_emotion("ai_urist"), "Facepalm" = new /datum/ai_emotion("ai_facepalm"), "Friend Computer" = new /datum/ai_emotion("ai_friend"), + "Your Best Friend" = new /datum/ai_emotion("ai_flowey"), + "Your Best Nightmare" = new /datum/ai_emotion("ai_floweymalf"), + "Soviet Union" = new /datum/ai_emotion("ai_soviet"), + "Holly" = new /datum/ai_emotion("ai_holly"), + "Hilly" = new /datum/ai_emotion("ai_hilly"), + "Fish" = new /datum/ai_emotion("ai_fishtank"), "Tribunal" = new /datum/ai_emotion("ai_tribunal", "serithi"), "Tribunal Malfunctioning" = new /datum/ai_emotion("ai_tribunal_malf", "serithi") ) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 0f3ff025b9..d28cb2444c 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -870,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 ad8976e121..93d161f2ea 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 98a49af28a..fdf4a16b00 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 65ed711f2f..967c03252f 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/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 88b513e06e..b154cd0468 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 5ba52f104f..f608ea01de 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -222,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 @@ -305,6 +306,10 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(comm.exonet) 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) im_list_ui[++im_list_ui.len] = list("address" = I["address"], "to_address" = I["to_address"], "im" = I["im"]) @@ -411,6 +416,7 @@ 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"] @@ -493,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 @@ -508,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() @@ -732,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 @@ -915,6 +925,71 @@ 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." +// 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 diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index d143220935..e2430bb5d9 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) - M.flash_eyes() + + 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 diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 6a68d555b0..dc042b2a6b 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 @@ -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 92515407d0..6cf3545524 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 567e296348..d7fb37050f 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 ccba1fc168..7dc64a8898 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 5b769ed803..f945fd89e6 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 9b5dffdd37..fe288b470b 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 ad9b9e8f8c..ce7eba21d8 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 e1332dda1e..93353ca1ed 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 8c9452ea49..7b70216330 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 diff --git a/code/game/objects/items/devices/telecrystal.dm b/code/game/objects/items/devices/telecrystal.dm deleted file mode 100644 index aa7b633590..0000000000 --- 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 571b0462df..faa17586c2 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 00860eb30c..f3533c5a01 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 6d195bd2bd..683c74bd02 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 a37352c7d3..009248dec1 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 a13df854cb..330bde967f 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/rods.dm b/code/game/objects/items/stacks/rods.dm index a0496b367d..87ada4fa4e 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 5d1e7eb144..96b35e13e7 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 83ce6d3f49..ee1cc1b078 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 0000000000..2682361d2c --- /dev/null +++ b/code/game/objects/items/stacks/telecrystal.dm @@ -0,0 +1,29 @@ +/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 + flags = NOBLUDGEON + origin_tech = list(TECH_MATERIAL = 6, TECH_BLUESPACE = 4) + +/obj/item/stack/telecrystal/afterattack(var/obj/item/I as obj, mob/user as mob, proximity) + if(!proximity) + return + if(istype(I, /obj/item)) + if(I.hidden_uplink && I.hidden_uplink.active) //No metagaming by using this on every PDA around just to see if it gets used up. + I.hidden_uplink.uses += amount + I.hidden_uplink.update_nano_data() + nanomanager.update_uis(I.hidden_uplink) + use(amount) + user << "You slot \the [src] into \the [I] and charge its internal uplink." + +/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 669c32955f..20cfb07864 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 63a88dadbb..7710cec5f6 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/candle.dm b/code/game/objects/items/weapons/candle.dm index 421bb55a6a..740b5e5a12 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 1cdda278a8..1d6269468b 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -69,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) @@ -89,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) @@ -353,4 +358,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) diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 4772063b4c..b2c9e82e27 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 882e2714f6..5924e19ac0 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 d92ad00bab..c23af3192b 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 074543296f..86310d2b78 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 8cd4c373e9..37018e8576 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 4a05109925..2e16eb4106 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 91b2d8f7e1..43b954c76a 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 ee1342d1cc..e3e2ecdd75 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() @@ -31,7 +30,7 @@ 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 diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index c44c3e1688..60e02feab6 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 69f14d7c2b..4bddb29a06 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 5131961060..3913ebf1b2 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 f38daa4085..785fc64f75 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 d622cc2f28..484ce5c903 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 0421161cd6..a16d81920f 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 6672d488de..7b70013a0d 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 0ddf3fa894..f49d16c034 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 fc9ac7eb32..73f8b57320 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 91d97274f6..0d88c2b3aa 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 a8b0ea19a3..e73bcc8f9c 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 2e36eead75..5299ce2a99 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 deed1aa219..ae8250dd02 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 7f7c75e817..2903c7f971 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 9eebc7b3f0..97fea878ea 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 = "medicalpack", slot_l_hand_str = "medicalpack") /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 = "medicalpack", slot_l_hand_str = "medicalpack") /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 = "medicalpack", slot_l_hand_str = "medicalpack") /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 = "medicalpack", slot_l_hand_str = "medicalpack") /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 476bf1a67e..12eca53626 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 c0469cd9f8..d2556917a4 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -3,7 +3,6 @@ desc = "Can hold various things." icon = 'icons/obj/clothing/belts.dmi' icon_state = "utilitybelt" - item_state = "utility" storage_slots = 7 max_storage_space = 28 //This should ensure belts always have enough room to store whatever. max_w_class = 3 @@ -33,7 +32,6 @@ 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" can_hold = list( ///obj/item/weapon/combitool, /obj/item/weapon/crowbar, @@ -50,14 +48,15 @@ /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, ) @@ -86,7 +85,6 @@ name = "medical belt" desc = "Can hold various medical equipment." icon_state = "medicalbelt" - item_state = "medical" can_hold = list( /obj/item/device/healthanalyzer, /obj/item/weapon/dnainjector, @@ -101,6 +99,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, @@ -117,13 +116,11 @@ name = "EMT utility belt" desc = "A sturdy black webbing belt with attached pouches." icon_state = "emsbelt" - item_state = "emsbelt" /obj/item/weapon/storage/belt/security name = "security belt" desc = "Can hold security gear like handcuffs and flashes." icon_state = "securitybelt" - item_state = "security" max_w_class = 3 can_hold = list( /obj/item/weapon/grenade, @@ -146,7 +143,7 @@ /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 ) @@ -154,7 +151,6 @@ name = "forensic utility belt" desc = "A belt for holding forensics equipment." icon_state = "securitybelt" - item_state = "security" storage_slots = 7 max_w_class = 3 can_hold = list( @@ -181,7 +177,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, @@ -195,7 +191,6 @@ 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" storage_slots = 6 can_hold = list( /obj/item/device/soulstone @@ -215,7 +210,6 @@ name = "championship belt" desc = "Proves to the world that you are the strongest!" icon_state = "championbelt" - item_state = "champion" storage_slots = 1 can_hold = list( "/obj/item/clothing/mask/luchador" @@ -225,7 +219,6 @@ name = "combat belt" desc = "Can hold security gear like handcuffs and flashes, with more pouches for more storage." icon_state = "swatbelt" - item_state = "swatbelt" storage_slots = 9 max_w_class = 3 max_storage_space = 28 @@ -234,13 +227,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" storage_slots = 7 max_w_class = 3 can_hold = list( @@ -256,6 +247,7 @@ /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 ) \ 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 a1b6e17b5a..8f904972de 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 ff3d60aec8..d80ce0bb9c 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 758ac8dc39..6fac98f0e8 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 4bd5592704..adbb4c2ca8 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 ffb4867ca6..b8c0cd3a0f 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 7288d2d038..4a589ed76e 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 cf1af1ea79..4bd34c52c7 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 3950ea8909..4727ef61bb 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 2df9701436..06327b27ac 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 13cbc06dc7..c890377475 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 = 5 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 = 7.0 @@ -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/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 5e01c43e55..d92fcf1336 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) @@ -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 b289e79257..2341df50ce 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 a5d5db02ad..56cbda16ff 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,7 +18,7 @@ /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" @@ -52,7 +52,7 @@ /obj/item/weapon/syndie/c4detonator icon_state = "c-4detonator_0" - item_state = "c-4detonator" + item_state = "zippo" name = "\improper Zippo lighter" /*Sneaky, thanks Dreyfus.*/ desc = "The zippo." w_class = 1 diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 003e4b2ac9..12a048ee07 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 c10e83511f..85d1352703 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 0eea22ea52..80b0dc5964 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 b7868cf7e0..33a9f46ed1 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 = 5.0 throwforce = 7.0 + pry = 1 item_state = "crowbar" w_class = 2.0 origin_tech = list(TECH_ENGINEERING = 1) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 0f5cebc44d..0075b6cdfd 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 bc10bc4359..a3f77757f2 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 fc6615fcf0..c891c7af25 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 375c6727ea..964afb0527 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 35a9b55438..787e0adb3b 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 95d4fd3d06..fdd1ed5c80 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 6aa1ee66f6..a60b9c0c1c 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) @@ -150,8 +150,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 2e342e55cf..489cedc160 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 d3e795edc3..d6034bbb8a 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/flora.dm b/code/game/objects/structures/flora.dm index 71a87b18b4..d868ebfa51 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 9c103a8ed2..aa961f4c10 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() diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 4ac596267d..959f8f807a 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/weapons.dm b/code/game/objects/weapons.dm index b62efa1c04..92d1cc3661 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 fd7fbe1b9b..60a17a1ff2 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 9496413be7..1217916312 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 0000000000..b589e0b8cc --- /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/simulated.dm b/code/game/turfs/simulated.dm index 62b8f3699d..67a429b2d0 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/turf.dm b/code/game/turfs/turf.dm index 3392140565..8bfb4ebf59 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 0000000000..17cd62ffbb --- /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 0000000000..41b45760f9 --- /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/who.dm b/code/game/verbs/who.dm index c8dfc8dedd..8b50dfb095 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 767ff8510f..a9d8b0c7d7 100644 --- a/code/hub.dm +++ b/code/hub.dm @@ -1,8 +1,8 @@ /world hub = "Exadv1.spacestation13" - hub_password = "kMZy3U5jJHSiBQjr" - //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. @@ -12,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 e045c19f1e..dc1cbf1c8c 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 f049424b02..1cb76cef8d 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/verbs/custom_event.dm b/code/modules/admin/verbs/custom_event.dm index 265c16a868..35931f8e54 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/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 170f9302f9..d4b0509147 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/asset_cache.dm b/code/modules/client/asset_cache.dm index 750ac88a3b..b4a42b0a96 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -201,6 +201,7 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE) "large_stamp-cent.png" = 'icons/paper_icons/large_stamp-cent.png', "talisman.png" = 'icons/paper_icons/talisman.png', "ntlogo.png" = 'icons/paper_icons/ntlogo.png' + "sglogo.png" = 'icons/paper_icons/sglogo.png' ) /datum/asset/nanoui diff --git a/code/modules/client/preference_setup/_defines.dm b/code/modules/client/preference_setup/_defines.dm new file mode 100644 index 0000000000..0c4dbb6004 --- /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 5b0be7bb71..e0a60b6313 100644 --- a/code/modules/client/preference_setup/antagonism/01_basic.dm +++ b/code/modules/client/preference_setup/antagonism/01_basic.dm @@ -7,19 +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:
    " @@ -34,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 24f7e327f1..050ec31638 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) @@ -75,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)) @@ -108,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 7e9a803766..5d4a73c64a 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 8bd528cb5d..3c11e5ce31 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" @@ -121,6 +121,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O 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) @@ -197,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) @@ -219,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
    " @@ -324,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 @@ -549,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 @@ -560,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"]) @@ -567,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 ..() @@ -629,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/05_background.dm b/code/modules/client/preference_setup/general/05_background.dm index e3076629a8..c36ce85834 100644 --- a/code/modules/client/preference_setup/general/05_background.dm +++ b/code/modules/client/preference_setup/general/05_background.dm @@ -115,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/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index dd494b03bc..31b510ef1a 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -55,7 +55,7 @@ var/list/gear_datums = list() var/list/valid_gear_choices = list() 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 diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index 4a79d5c26b..ba3cb42d89 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 b659f8db13..a97d5776fc 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 244977334f..91d20d8371 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 a2635ef79c..4ad804dccd 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 40bd1d767b..5134f48b3f 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 @@ -208,7 +212,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 +271,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 a6665d0bb5..fe8017b6aa 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/occupation/occupation.dm b/code/modules/client/preference_setup/occupation/occupation.dm index b3704bfb0c..cfc3ff781a 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 6344d538e7..832d529d7c 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 @@ -252,3 +256,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/preferences.dm b/code/modules/client/preferences.dm index 38e64e34cc..f018636f50 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 diff --git a/code/modules/client/preferences_factions.dm b/code/modules/client/preferences_factions.dm index 61d6810224..030c8d08a3 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 3dfc09201c..40071651c6 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 6b2e8e6e4f..b78d78f3ff 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 e8bc3e8534..151b581f5c 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 8692fc9bc7..27fb0e0fa4 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 30e5bc3773..edd2db2168 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 ada10f274a..fa9036e2cd 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 2ad12aa2bf..b901862e42 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 870fcc487f..55b562cc93 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 0000000000..94956ec714 --- /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 0a91d596f7..9d53f8cdb0 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 680250c7c7..2253fe6d47 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 1fa8af24e4..4548b41a24 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 4075a6d4b3..9d4ec828b1 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 @@ -37,7 +32,7 @@ /obj/item/clothing/head/chaplain_hood name = "chaplain's hood" desc = "It's hood that covers the head. It keeps you warm during the space winters." - icon_state = "chaplain_hood" + icon_state = "beret_black" flags_inv = BLOCKHAIR body_parts_covered = HEAD @@ -46,6 +41,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 +57,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 e9143b4bca..09cc0356ad 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -1,12 +1,6 @@ - - /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 @@ -37,25 +31,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 +57,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,22 +66,20 @@ 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 /obj/item/clothing/head/nursehat name = "nurse's hat" desc = "It allows quick identification of trained medical personnel." - icon_state = "nursehat" + item_state_slots = list(slot_r_hand_str = "nursehat", slot_l_hand_str = "nursehat") siemens_coefficient = 0.9 body_parts_covered = 0 /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 +90,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 +97,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 +104,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 @@ -135,7 +125,7 @@ /obj/item/clothing/head/justice/pink icon_state = "justicepink" - + /obj/item/clothing/head/rabbitears name = "rabbit ears" desc = "Wearing these makes you looks useless, and only good for your sex appeal." @@ -146,11 +136,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 +149,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,41 +170,43 @@ /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 name = "fez" 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 +220,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 +228,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 +245,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 +260,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 +274,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 a15a6aeb55..1ea5376d6a 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 fe8ed1451b..0a5a494ecb 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 1ef6db4337..3dabeb99d6 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 38e86e5dc9..7568d53b74 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 7ea68f0a8d..ad7c9928d2 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 ad83edfbc4..fe0cfdebaa 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 669047d80a..f79b7ca4f0 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 768595c2ae..63d4dc192a 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 5dd8b0d5fc..b063e2b50a 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 b94cb78da5..0f862f4c53 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 26459605a5..f6423106a5 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 d5c49babff..9d940c9e30 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 e99dc6d8ce..0000000000 --- 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 ce8f89dc56..c8d73b0f3e 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 c8a2296680..ccfc307993 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 5f6ce6249c..cb269daa2e 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 4d90082708..ae064dd2a8 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 62c0f21761..dd7c473215 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 3c4975f7d3..f81110013e 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 350d2aea4a..270d21cfeb 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 b5669b6746..f06e839ae3 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 9922483f2c..20ee7ddc04 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 0fe4a7457a..9e1e3513cc 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 f8e6f03611..dde178e33d 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 c0d9e58a2c..d1b4a06d23 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 846d0466eb..4c2318355f 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 54141e9994..896b5eed29 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 b856f8a8bb..3476ea183a 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 415f8a6da6..227414b0e4 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 0c5f09e5af..cb3f20749b 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 e6b9c0c69f..2035a86d41 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 413685df45..c93bb20760 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,70 @@ 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/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 +111,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 +168,150 @@ 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" - -//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 - + item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket") + +/* + * 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 +323,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 +333,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 +357,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 +365,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 +375,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 +383,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 +391,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 +399,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 +407,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 +415,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 +423,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 +431,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 +439,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 +447,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 +463,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 +475,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 +484,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 +496,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 +526,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 d9aa9bbd3d..9bd162dc7f 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 d7b4e87bb0..e732a1318e 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 361bce66aa..ba04d4ca36 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 c9ac0fb4f4..1d6c610cea 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 9ba4ffa5e3..de7ac20c9a 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 2aaa6750e5..43fb495669 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 9ab1a5fdbf..b3461b82c2 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 9267b96cc1..7452b35aab 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 5f16483bb2..6e922f5744 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 0c820c6e7a..b1131b100b 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 a80cd626c3..31ba7389a1 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 564a962125..bf768c561e 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 4753580272..e3c1d6b45d 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -2,60 +2,49 @@ 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/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 +52,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 +105,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 +119,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 +230,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 +243,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" + icon_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 +334,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 +365,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 c0f3157c65..3cfc550e43 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 b04621bdfe..0690b49565 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 66edeaaf09..0560d49e30 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 e4cc060502..16eb2c47fe 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 8b12203b21..8d4e3cf8e6 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 6aa4bdf99f..9e2c490300 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 8301043c09..3d4589469b 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 4eae167a65..4d20431039 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 f1ea3593f2..42952f081e 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 0000000000..971e0418bc --- /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 0000000000..f6557152b4 --- /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 4eb60cc706..611a611296 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 1b353e3407..3fcf07713b 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/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm index f9536420e2..69077aad84 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 01fd8764d8..1c823ef61b 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 6e88aabee5..eb1eeb40ca 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 fe0a178919..89dc65b147 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 ba2013812a..1ab73542b0 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 aebcacc91b..4fba3b5025 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 9daa14d1fa..aab806aa7c 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 920b751117..809fa76a3a 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 diff --git a/code/modules/mining/alloys.dm b/code/modules/mining/alloys.dm index 19d11fc9c0..ed1b88636e 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 1c93444aad..6d460dd850 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 diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index a69a66a210..7fb5807ba1 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 2119896c3f..d4a967dc7b 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 c867e642b4..9fe7f221e1 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -74,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/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm index 3c50432025..ec4278c967 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 ea80efca7e..0cd58d330a 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/diona/progression.dm b/code/modules/mob/living/carbon/alien/diona/progression.dm index 588acea5ad..de9bc72bda 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/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 6e1d4bce9c..11e3b1197a 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/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 4488f65388..6a9952ef07 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 53d12e8b7d..89db40f75d 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 e884dbcd5d..c1926cb71a 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 ..() @@ -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) @@ -1326,13 +1328,11 @@ var/obj/item/organ/external/current_limb = organs_by_name[limb] 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/choice = input(usr,"Which joint do you wish to relocate?") as null|anything in limbs + 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 @@ -1340,7 +1340,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 d8d40ab660..62d469cb0e 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()? diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 6edefd2951..df851dfa25 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -40,6 +40,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 +154,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]!") diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 13f4f2f25a..99bbe8ffcf 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 77fe986857..ae9dd9a506 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/life.dm b/code/modules/mob/living/carbon/human/life.dm index 697ae06cf3..93706ccdb4 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1022,9 +1022,7 @@ 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, global_hud.whitense) @@ -1032,37 +1030,38 @@ var/obj/machinery/camera/cam = client.eye client.screen |= cam.client_huds - if(stat == UNCONSCIOUS && health <= 0) - //Critical damage passage overlay - var/severity = 0 - switch(health) - 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) + if(stat != DEAD) + if(stat == UNCONSCIOUS && health <= 0) + //Critical damage passage overlay 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) + switch(health) + 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("oxy") + 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 @@ -1138,19 +1137,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) @@ -1307,7 +1324,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 @@ -1495,10 +1512,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)) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index def9ae59f2..5a8fcba715 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. 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 6074934cec..738284dd38 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 2ada0dd7c7..5eae3da61e 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 27541c2773..93dfcb6244 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 a903433fda..bcd204e499 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,6 +98,7 @@ num_alternate_languages = 2 secondary_langs = list("Siik'tajr") name_language = "Siik'tajr" + health_hud_intensity = 2.5 min_age = 17 max_age = 80 @@ -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 8b6f722718..ebb16683a8 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/living.dm b/code/modules/mob/living/living.dm index be397a6def..ba5b8fd24c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -814,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 9c37468554..76be73da6d 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 c547211ecf..e6b7f2979d 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 5a5f9f3ec4..d84dfe28a8 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 ..() diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index 7c60bb75e4..6383e55e34 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/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 2ba3d40a17..bd757f9ab6 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 19c44d2e53..9881948b1b 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 8c0ec04900..89f7942cc4 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 3fd496f179..84547eba18 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/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ad3445483d..5350ba68c0 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 ee25aebe24..e5b8ff3de2 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 cd02dd71f4..03fa56387a 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 8a8bd0a274..ef6b1c7872 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -364,4 +364,19 @@ /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 ..() \ No newline at end of file + 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 f023df1617..7f04be9c3b 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 6e827565f7..868bafd7cc 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 ae172d7b71..1b5cd7e37e 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 394dd742ac..cffa215a00 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 e7228e578c..3971b90df5 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() diff --git a/code/modules/mob/living/simple_animal/worm.dm b/code/modules/mob/living/simple_animal/worm.dm index 9775a68c9c..e8663339c1 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/mob_defines.dm b/code/modules/mob/mob_defines.dm index 5b937a57e2..ce79b49904 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -31,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. diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 6d9d3c3bda..46cead5a3b 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -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" diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 527ad8b70b..a10049a644 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 b9bfba7adb..7c68dc5972 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/internal/appendix.dm b/code/modules/organs/internal/appendix.dm new file mode 100644 index 0000000000..b3fdc28bc2 --- /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 0000000000..ddde872662 --- /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 0000000000..99b7386403 --- /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 0000000000..5d3875ccf5 --- /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 0000000000..ef989b7a55 --- /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 0000000000..fae4bc5ee6 --- /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 0000000000..100666caaa --- /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 d8533239e7..e1cf0cad9e 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() @@ -100,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))) @@ -259,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 d3b309fd84..d50d5009e7 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -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() diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index 035a0692c3..0fd12ad9ef 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 e1dac6efe9..b0f16372ee 100644 --- a/code/modules/organs/robolimbs.dm +++ b/code/modules/organs/robolimbs.dm @@ -42,6 +42,7 @@ 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" diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm index 0776e318b4..7f371066bb 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 diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index df74367d0d..df692c4a97 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 e33a319f69..f54945b51d 100644 --- a/code/modules/organs/subtypes/standard.dm +++ b/code/modules/organs/subtypes/standard.dm @@ -48,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 @@ -69,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 @@ -92,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 @@ -121,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 diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index ea5488152d..4f2c6d59ba 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 ba124e9b54..5e296531f4 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -267,6 +267,7 @@ t = replacetext(t, "\[row\]", "") t = replacetext(t, "\[cell\]", "") 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! @@ -281,6 +282,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 8a438e8e90..a2a1273ced 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/photography.dm b/code/modules/paperwork/photography.dm index 5787ff2d02..0df6b30432 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 f37cdce706..feb740ba73 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 c464779d29..0880d05505 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 a423e4ced4..4d75a99cf7 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 f3596a5d9a..2d736804d5 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 51093296b2..b2277c74cf 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 dd1c2a56b6..cbb974e2e6 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/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 001753e81a..993db0f27c 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 7874eeb383..2235f188e7 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 2db78ccd86..8c3169b682 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 9d0ba4e736..5d2fe06fa4 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 ef3a74666e..0c3822cced 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 15471da2a2..08442fcb8c 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 diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index d69a97f2f4..f91054b2c7 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 ff561b5250..ee46b5f42e 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 f564b399ad..1049f5f70d 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 a670ff47e8..80112690b3 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -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 4787a53bf4..87d9c699d0 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-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 741ba588e4..38f558721e 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -22,8 +22,8 @@ var/condi = 0 var/useramount = 15 // Last used amount var/pillamount = 10 - var/bottlesprite = 1 - var/pillsprite = 1 + var/bottlesprite = "1" + var/pillsprite = "1" var/max_pill_count = 20 var/tab = "home" var/analyze_data[0] @@ -249,7 +249,7 @@ P.name = "[name] bottle" P.pixel_x = rand(-7, 7) //random position P.pixel_y = rand(-7, 7) - P.icon_state = "bottle"+bottlesprite + P.icon_state = "bottle-"+bottlesprite reagents.trans_to_obj(P,60) P.update_icon() else diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index 842814bca2..f051e8307f 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 55a50bc925..5d40077635 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 c81a94927c..db573995b6 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 884ee830f0..ac054b224f 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 a2938bb56d..081be5d54a 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -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 c367d8b09c..8d19e49330 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 feec8bf16e..a0d484ddab 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/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index ce26cdda50..7257ac65b1 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 f2770d9823..c1a585cbaa 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -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 45b0eb97b8..a5dff3868d 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 d131cdf9c9..1347a182fc 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -255,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/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index def1ac7f81..150a774309 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 efc8d9c2b8..c3b48691c0 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_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 495a248c53..39004b3e95 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 9629bb31f1..d59c2af609 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 67ac1bd867..f6bbeed769 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 index d12446382b..fa92fa1624 100644 --- a/code/modules/research/xenoarchaeology/tools/gearbelt.dm +++ b/code/modules/research/xenoarchaeology/tools/gearbelt.dm @@ -3,7 +3,6 @@ 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, diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index bc9d0ca21f..bf320f0cd3 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/surgery/robotics.dm b/code/modules/surgery/robotics.dm index bede5263e2..ff5682fedd 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -164,20 +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 == 2 && affected.burn_dam > 0 && target_zone != "mouth") - - if(!limb_can_operate) - return 0 - - if(istype(C)) + if(istype(tool,/obj/item/stack/cable_coil/)) + var/obj/item/stack/cable_coil/C = tool if(!C.can_use(10)) 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(10) - return 1 + 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/tables/bench.dm b/code/modules/tables/bench.dm new file mode 100644 index 0000000000..88c2b61526 --- /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 05cc2eac20..954ab8156b 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 12b9e26b48..72cc6dbf8b 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 94da479f5a..f4c0f31781 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 e72f6a4f2b..6783823d6a 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/world.dm b/code/world.dm index a6d27a8850..1d439428d2 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 ae99ec3d19..3839b63bac 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 d47e0634cf..0d63159fdb 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,180 @@ -->
    +

    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:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 9be7a417f6..b438a4a75c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -2440,3 +2440,164 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - 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. diff --git a/html/changelogs/Sin4_UIs.yml b/html/changelogs/Sin4_UIs.yml deleted file mode 100644 index 87c1907c43..0000000000 --- a/html/changelogs/Sin4_UIs.yml +++ /dev/null @@ -1,37 +0,0 @@ -################################ -# 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: - - 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." \ No newline at end of file diff --git a/html/changelogs/JerTheAce_HoPLoyalty.yml b/html/changelogs/Yoshax - ItemFixes.yml similarity index 90% rename from html/changelogs/JerTheAce_HoPLoyalty.yml rename to html/changelogs/Yoshax - ItemFixes.yml index e9daa351da..6022263c44 100644 --- a/html/changelogs/JerTheAce_HoPLoyalty.yml +++ b/html/changelogs/Yoshax - ItemFixes.yml @@ -22,7 +22,7 @@ ################################# # Your name. -author: JerTheAce +author: Yoshax # 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: - - rscadd: "Head of Personnel now has a loyalty implant." + - bugfix: "Certain items such as pills and suchlike will once again be usable on someone who is on a surgical table/table." diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index 521aea66d4..5580e9a5da 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 416f2b5d6c..4e08b08c8d 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 703d8f8c3d..5598cf6f84 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 4caa0d10d7..036cc7d71f 100644 Binary files a/icons/misc/beach.dmi and b/icons/misc/beach.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index daba63e2e9..971ed98d1a 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 ce61c817f5..0441606e95 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/critter.dmi b/icons/mob/critter.dmi index f63949af79..d118b9ec2a 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 0fbebc0d3d..b9fbe70b5e 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 788fed60d8..f26dd77bf4 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 1d4385103b..b6d4ba748d 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 0000000000..752829fba2 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 ececc9ef9a..99f9bfd2e7 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi index bab98652cc..0188ec65f2 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 74da58f2da..0000000000 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 0000000000..0c12bda3d5 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 7d495b376d..73ce626bf4 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 2cae6e7e96..96c7bd9dc2 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 0000000000..316661dd36 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 0000000000..70127575ee 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 0000000000..93ac77c655 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 0000000000..cfdfddc815 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 0000000000..bb1b3b0b6c 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 0000000000..21c6653e3f 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 0000000000..04f62b1266 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 149d44fd8b..64a18812f7 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 e52cd632b0..2f0182a1dd 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 77ac28ea05..0000000000 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 0000000000..25b41e25ec 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 fe2bb9e62f..4d0f637511 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 ffaa950b55..727dcebfe9 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 0000000000..e69f1594d0 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 0000000000..db11ee211f 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 0000000000..ce37a0997e 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 0000000000..83600b934a 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 0000000000..9bd305bd00 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 0000000000..215ae85788 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 0000000000..6b5e8a511b 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 c014bdc35e..5b16babfbb 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 6e5777e4bf..bb8e6b9461 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 077b0e8040..9a326ac8a4 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 0000000000..6905268a13 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 ad0ac4fd77..ef3965f8ee 100644 Binary files a/icons/mob/screen1_robot.dmi and b/icons/mob/screen1_robot.dmi differ diff --git a/icons/mob/screen_spells.dmi b/icons/mob/screen_spells.dmi index db693428d0..a1a480a50a 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 66455ffb3c..e69e3858e2 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 7ff6c97e69..1eaab4f913 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 7305a6e216..57c4f11713 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 693565171c..f74326df98 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 0000000000..de7bc664e8 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 86cea78d38..360c765aea 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 93a38573cd..554cad55b4 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 33f7790f88..67898604e3 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 6a313ae90d..6f3bd865e6 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 ba63e4189f..6e36b86b00 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 0000000000..fb8c2123b3 Binary files /dev/null and b/icons/obj/bench.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index f8b7e566d3..a033aad43a 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index fa521d772d..a5a4767b91 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 26a6110e38..d0c44e3fd1 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 a61e838636..3c65628900 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 9ea8f949ad..2fe02d970e 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 f3ef480e1a..c97eff9aa4 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 e9256fa849..a1725f7f8a 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 0000000000..666a31b9d0 Binary files /dev/null and b/icons/obj/cooking_machines.dmi differ diff --git a/icons/obj/dice.dmi b/icons/obj/dice.dmi index 669ad215c5..f6a209b468 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 7354bd311b..9f5106f0ae 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 0000000000..39491d65f5 Binary files /dev/null and b/icons/obj/food_custom.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 53836c99c5..37be87b1ef 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 1a9d80bb13..c3d5491a7c 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 5b453fbfb4..dbaf4a5890 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 ca4663df18..0d5ca3e4e7 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 80d768dfe5..14878d4dd0 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 7f3468a363..2e254cc5cb 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 0000000000..3f4572f61c Binary files /dev/null and b/icons/obj/spells.dmi differ diff --git a/icons/obj/status_display.dmi b/icons/obj/status_display.dmi index 864310b6ab..37e000bfb1 100644 Binary files a/icons/obj/status_display.dmi and b/icons/obj/status_display.dmi differ diff --git a/icons/obj/technomancer.dmi b/icons/obj/technomancer.dmi new file mode 100644 index 0000000000..b8b1972269 Binary files /dev/null and b/icons/obj/technomancer.dmi differ diff --git a/icons/obj/turrets.dmi b/icons/obj/turrets.dmi index b3a2036742..775fe03b61 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 e4157037b9..5671731aab 100755 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/icons/paper_icons/sglogo.png b/icons/paper_icons/sglogo.png new file mode 100644 index 0000000000..930a0c4a5e Binary files /dev/null and b/icons/paper_icons/sglogo.png differ diff --git a/interface/skin.dmf b/interface/skin.dmf index 4852d1e4eb..8bd32e9ddd 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 9409c47a3b..831195010e 100644 --- a/maps/polaris-1.dmm +++ b/maps/polaris-1.dmm @@ -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,8 +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/doublebrown,/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/doublebrown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_6) +"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) @@ -1353,7 +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/doublebrown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_11) +"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) @@ -1379,7 +1379,7 @@ "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/doublebrown,/turf/simulated/floor/wood,/area/crew_quarters/sleep/vistor_room_12) +"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) @@ -1437,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) @@ -1646,9 +1646,9 @@ "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) @@ -1700,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) @@ -1708,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) @@ -1966,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) @@ -1985,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) @@ -2019,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) @@ -2084,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) @@ -2120,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) @@ -2136,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) @@ -2211,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) @@ -2253,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) @@ -2503,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) @@ -2736,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) @@ -2800,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) @@ -2891,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) @@ -2929,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) @@ -2942,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) @@ -2968,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) @@ -3012,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) @@ -3055,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) @@ -3140,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) @@ -3263,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) @@ -3282,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) @@ -3336,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) @@ -3401,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) @@ -3412,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) @@ -3445,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) @@ -3485,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) @@ -3536,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) @@ -3576,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) @@ -3592,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) @@ -3647,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) @@ -3668,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) @@ -3717,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) @@ -3734,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) @@ -3766,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) @@ -3804,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) @@ -3850,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) @@ -4169,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) @@ -4260,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) @@ -4307,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) @@ -4393,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) @@ -4434,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) @@ -4473,7 +4515,6 @@ "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) "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) @@ -4609,7 +4650,6 @@ "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) "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) @@ -4720,7 +4760,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) @@ -4822,7 +4861,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) @@ -4868,7 +4906,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) @@ -5977,7 +6014,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) @@ -6453,8 +6489,6 @@ "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) @@ -8542,7 +8576,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) @@ -8584,14 +8617,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) @@ -8634,14 +8664,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) @@ -8705,7 +8732,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) @@ -8728,7 +8754,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) @@ -8859,14 +8884,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) @@ -8910,14 +8931,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) @@ -8972,7 +8989,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) @@ -9174,7 +9190,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) @@ -9208,7 +9223,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) @@ -9246,7 +9260,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) @@ -9283,8 +9296,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) @@ -9316,8 +9327,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) @@ -9521,11 +9530,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) @@ -9655,7 +9662,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) @@ -9795,33 +9801,33 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdaaaaaabbdaaaaaaaaabbdaaaaaaaaaaaaaaabbdaaaaaaaaabbdaaaaaabbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobbebbfdGNaZoaahaahaahaahaYPbbhbacbbibbjbbkbagbblaYPbbmbbnbbobbpbbqbbrbamahyahyahyaahaahaahaahaahaZCbbsbbtbbubbvbbwbbxbbybbzbbAbbBbbCaZFaahaZdaZdaZHaZdahyahybaybbDbbEbMcbfMbdCbdCdCqbbGbbHbbGbgHccSblCdCpbbLbbEbbMbaMahyahybbNbbObbPbbQbbRbbabaYbbTbbSbbTbbUbbWbbVbbWbcabcIbbXbbYbbZbcJaZRaahaahaahaahaZmaZWbcbaZmaahaahdEodEBamdamcamgameamAamhamCamBamDamadEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdbbdbbdbbdaaaaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZobccbcdbceaZoaahaahaahaahaYPbcfbcgbchbchbchbcibfvbcjbckbclbclbcmbcnbcobamahyahyaahaahaahaahaahaahaZCbcpbcqbcraZDbcsbctbcuaZDbcvbcwbcxaZFaahaahaZdaZHaZdahyaZIbcybbEbbFbfMdCqbbGbbGbczbcAbcBbcCbcDbbGbbGbgHdCrbbLbbEbcyaZIahyaTobcEbcFbcGbcHbcLbcKbcNbcMbcNbcQbdzbdybdzdCsbdDbcObaZdCtbdEaZRbcRbcRbcRbcRaZmbcSbcTaZmaahaahdEodEBamFamEamWamVanaamZdEodEodEodEodEoaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaZoaZpbcUaZoaZoaahaahaahaahaYPbcVbcWbcXbcYbcZbdabdbbdcbddbdebdebdfbdgbdhbaiahyahyaahaahaahaahaahaahaZCbdibdjbdkbdlbdlbdmbdlbdlbdnbdobdpaZFaahaahaZdaZHaZdahybdqbaJbbFbfMdCqbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbgHdCrbdsbaKbdqahyaTobdubdvaUwbdwbaLbdFbfkbdGbLZbdIbWObNGbiVbYuaZRccRcsWdCucwuaZRbdJbdKbdLbcRbdMbdNbdOaZmaahaahaZmaZmaZmanbaZmaZmaZmaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbdPbdPbdPbdPbdQbdRbdSbdTaahaahaahaahaYPaRtbdVbdWbdXbdYbdXbdZbeabebbecbecaZzbcnbedbeebefbefbefbefbefaahaahaahaZCaZCaZCaZCbdlbegbehbeibdlaZFaZFaZFaZFaahaahaZdaZHaZdahybejbiHbfMdCqbbGbelbbGbembenbbGbbGbbGbeobepbbGbelbbGbgHdCvbiFbejahyaZPbesbetaUwaToaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRbkjbevbuJbcRbdMbdNbdOaZmaahaZmaZmbexbeyaZWantbdObezbeAaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbeBbeCbeDbdPbeEbeFbeGbdTaahaahaahaahaYPaYPbeHbeIbeJbeKbeLaYPaYPbbmbbnbbobeMbcnbeNbeebeObePbeQbeRbefaahaahaahaahaahbdlbdlbeSbeTbeUbeTbeSbdlbdlaahaahaahaahaZdaZHaZdahybcybiHdCwbeqbbGbbGbeVbeWbbGbbGbbGbbGbbGbeXbepbbGbbGbbGdCxbiFbcyahybaNbbObetbeYaToaahaahbeZbeZbfaaFLbeZbfcbfdbfedGObfgbfhbfibfjbcRbkhbevbevbflbdMbdNbfmaZmaZmaZmbfnbfobfodGGbfobfobfobfobfpaZmaZmaZmaZmaZmaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbfqbfrbfsbdPbftbfucxEbdTaahaahaahaahaahaYPaYPbfwbfxbfyaYPaYPahyahyahybfzbfAbcnbfBbeebfCbfDbfEbfFbefbefaahaahaahaahbdlbfGbeTbfHbfIbfJbeTbfKbdlaahaahaahaahaZdaZHaZdahyaZIbfLdCybbJbbGbeVbfNbfObbGdCzdCzdCzbbGbjlbfPbfQbbGbbGdCAbfSaZIahybbNaYGbetaUwaToaahaahbeZbfTbfUbfVbfWbfXbfYbfZbfZbgabgbbgcbgdbgebgfbggbghbcRbdMbgibfobfobfobfobgjbgkbgkbgkbgkbgkbgkbgkbglbfobfobfobfobfobfpaZmaZmaahaahaahaahaahaahbgmbgmbgmbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbgnbfrbgobdPbgpbgqbgrbdTaahaahaahaahahyahyahyahyahyahyahyahyahyahybbobbobgsbcnbgtbeebefbgubgvbgwbgxbefaahaahaahaahbdlbgybeTbeibgzbeibeTbgAbdlaahaahaahaZdaZdaZHaZdahyaZIbgBdCBbfRbbGbgCbbGbbGdCCbgDbgEbgFdCDbbGbbGbgCbbGbgGbgHdCEaZIaZfaTobgIbgJbgKaToaToaahbeZbgLbgMbgNbgObgPbgQbgRbgSbgTbgUbgVbgWbgXbgYbgYbgYbgYbgYbgYbgZbgZbgZbgZbgZbgkbhabhbbmzbhdbhebgkbhfbhfbhfbhfbhfbhfbglbfpaZmaahaahaahaahaahbgmbgmbhgbhhbhibhhbhjbgmbgmaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbhkbhlbhkbdPbhmbfubhnbhobhobhobhoaahaahaahahyahyahyahyahyahyahyahyaZycrkbajbhqbhrbhsbefbhtbgvbgwbhubefaahaahaahaahbdlbhvbeTbhwbhxbhwbeTbhybdlaahaahaahaZdaZGaZHaZdahybdqbaUdCFbbGbbGbbGbbGdCGbgDbhAbhAbhAbgFdCFbbGbbGbbGbhBbbGbhCbhDbhEbhFbhGbetaUwbhHaToaahbeZbhIbhJbgNbhKbhLbhLbhLbhLbhMbhNbgVbhObhPbgYbhQbhRbhSbhTbgYbhUbhVbhVbhWbgZbhXbhYbhYbhZbhZbhYbiabhfbibbicbidbiebhfbdOaZWaZmaahaahaahaahaahbgmbifbigbihbiibijbikbifbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahyaahaahaahaahaahaahaahaahaahaahaahaahbilbilbilbilbilbilbilbilbilbimbinbiobipbeEbfubinbhobiqbirbhobhobhoaahaahahyahyahyahyahyahyahybambisaZzbitbiubdebivbiwbixbgwbhubefaahaahaahaahbdlbiybeTbizbiAbiBbeTbiCbdlaahaahaahaZdbiDaZHaZdahybejbdrdCFbbGbbGbbGbbGdCGbiFbhAbdtbhAbiHdCFbbGbbGbbGbiIbiJbiJbiKbiLbiMbiNbiObiPbiQaToaahbeZbfTbiRbiSbeZbiTbiUblObiWbxjbfhbzjbhObiYbgYbiZbjabjbbjcbgYbSjbjebjfbjgbgZbjhbjibjjbjkbpybjmbjnbhfbibbjobjpbjqbhfbjrbjsaZmaahaahaahaahaahbgmbjtbjubjvbjwbjvbjubjxbgmaahaahbgmbgmbgmbgmbgmaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaabbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbdPbdPbdPbdPbdQbdRbdSbdTaahaahaahaahaYPaRtbdVbdWbdXbdYbdXbdZbeabebbecbecaZzbcnbedbeebefbefbefbefbefaahaahaahaZCaZCaZCaZCbdlbeibeUbeibdlaZFaZFaZFaZFaahaahaZdaZHaZdahybejbiHbfMdCqbbGbelbbGbembenbbGbbGbbGbeobepbbGbelbbGbgHdCvbiFbejahyaZPbesbetaUwaToaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRaZRbkjbevbuJbcRbdMbdNbdOaZmaahaZmaZmbexbeyaZWantbdObezbeAaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbeBbeCbeDbdPbeEbeFbeGbdTaahaahaahaahaYPaYPbeHbeIbeJbeKbeLaYPaYPbbmbbnbbobeMbcnbeNbeebeObePbeQbeRbefaahaahaahbegbegbdlbdlbehbeTbeUbeTbeSbdlbdlbegbegaahaahaZdaZHaZdahybcybiHdCwbeqbbGbbGbeVbeWbbGbbGbbGbbGbbGbeXbepbbGbbGbbGdCxbiFbcyahybaNbbObetbeYaToaahaahbeZbeZbfaaFLbeZbfcbfdbfedGObfgbfhbfibfjbcRbkhbevbevbflbdMbdNbfmaZmaZmaZmbfnbfobfodGGbfobfobfobfobfpaZmaZmaZmaZmaZmaZmaZmaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdbbdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbdPbfqbfrbfsbdPbftbfucxEbdTaahaahaahaahaahaYPaYPbfwbfxbfyaYPaYPahyahyahybfzbfAbcnbfBbeebfCbfDbfEbfFbefbefaahaahbegbegbdlbfGbeTbfHbfIbfJbeTbfKbdlbegbegaahaahaZdaZHaZdahyaZIbfLdCybbJbbGbeVbfNbfObbGdCzdCzdCzbbGbjlbfPbfQbbGbbGdCAbfSaZIahybbNaYGbetaUwaToaahaahbeZbfTbfUbfVbfWbfXbfYbfZbfZbgabgbbgcbgdbgebgfbggbghbcRbdMbgibfobfobfobfobgjbgkbgkbgkbgkbgkbgkbgkbglbfobfobfobfobfobfpaZmaZmaahaahaahaahaahaahbgmbgmbgmbgmbgmbgmbgmaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +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 @@ -9840,106 +9846,106 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcjgcjOcjPcjgbVScjQbVQcjRbVScjQbVQbZUchYapCcjTchYcjUchYcjVcjWcjXcjqaahaahamYamYamYamYapFamYamYamYamYaahaahaahaahaahaahaahbZXbZXcjucjYbZXcjZbYlbZXaahahyahyahyahycjzcjzckbckcckdckeckfcjzcjzahyahyahyahyahybbobbockgblnccHbbobboahyahyahyckEahyahyahyahyahyahyahyahyahyahyahyahyckEahyahyahyciFciFckicfQcfRciFciFaahaahaahahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyahyciFciFckjckjckkciFciFahyahyahyahyapGapAapGahyahyahyaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcbccbccbccbccbccbccbccbccbccbccbccbcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjgcjgcklckmcknckockpckqckrckscktckuckvckwckxapHckzchYckAchYckBckCckDcjqaahaahamYaqwapIapRapQapSanCaqwamYaahaahaahaahaahaahaahaahbZXcjubZXbZXbZXbZXbZXahyahyckKckFckFckGckHckIckIckIckIckIckIcjzahyahyahyahybbobbodETcimbcnbecbDObboclmckLckMciFclmckLckLckLckLckLckLckLckLckLckLckMciFclmckLckMciFckNckOckPcfRckQciFciFciFciFciFclmckLckLckLckLckLckLckLckLckLckLckRciFclmckLckRciFckScfRcfRckTckUciFciFahyahOahOahOapXahOahOahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcjgckVckmcknckWckXckYckZclaclbchVclccldclecleclfclgclhcjUchYclicljclkcjqaahaahamYaqwaoDaoDaqlaqnaqmaucamYaahaahaahaahaahaahaahaahbZXcjubZXaahaahaahaahahyahyclYclncloclpclqclrclscltcluclvclwcjzahyahyahyahyaZycrkbecclyclzclAclAclBclCclCclCclDclCclEclCclCclFcfRcfRcfRcfRclGclHclIclJclIclIclIclKclLclMclNclIclIclKclIclOclIclPclIclQclIclIclIclIclIclQclRclIclSclIclTclIclQclIclKclIclUclUclVclWbKGcmpahyahOaqoaieaqsaqpaqtahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMciVbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcsTcknckncmacmbcmcbZUbZUcmdbZUbZUchYcmeclecmfcmgcmhcmichYcjqcjqcjqcjqaahaahamYaqvaoDaqwaqxaqwaoDaqyamYcmjcmjcmjcmjaahaahaahbZXbZXcjubZXdEldEldEldElahyahycmRcmqcmrcmscmtcmtcmucmvcmwcmtcmxcjzahyahyahyahybambisbeccimcsUbecbeccmzcfRcfRcfRcfRcmAcmBcmBcmBcmCcmDcmDcmDcmEcmDcmFcmDcmGcmDcmDcsVcmHcmIcmJcmKcmDcmDcmHcsZcmDcmDcmLcmDcmDcmDcmMcmDcmDcmDcmDcmGcmDcmDcmDcmEcmDcmDcmDcmHcmNcmBctacmOcmPcmQcncahyahOaieaieaqzaieaqAahOaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahbZMbZMciVbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcjgcmScmTcmUcmVcmWcjgcmXbObcmZcnacnbcnScndcnecnfcngcnhcmichYaahaahaahaahaahaahamYartaoDaqwaqBaqwaoDanFamYcnicnjcnkcmjaahaahaahbZXcnocjubZXbWTckJccqdEldElahyclYcnpcnqcnrcnsckIcntcnucnvckIcnwcjzahyahyahyahybaibjQbeccimbDMbDNbeccmzcfRcnxcfRcnycnzcnAcnBcfRcnCcnxcfRcfRcnDcnxcnEcfRcnFcfRcnxcfRcjKcnGchicnHcevcevcnIcevcnJcevcnKcnMcevcnLcxCcevcnJcevcevcevcevcnJcevcnNcevcevcevcnIcnOcnQcnPcnRcfRbKGcodahyahOaqDaqCaqZaqEaraahOaahaahaahaahaahaahbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcnTciVcgnbZMbZMbZMbZMbZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahahyahyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbLjaahaahcjgcnUckXcnVcnWcnXcnYcnZcoacobcoacoccoocoecleclecofchYbRKchYaahaahaahaahaahaahamYanBarbardarcaoDaoDaqwamYcogcohcoicmjaahaahaahbZXconcjubZXclxcrlcmycrqdElahycowckFckFcopcoqckIckIcorckIckIcoscjzahyahyahyahybbobbocotcimbcnbeccoAbboclmckLckMciFclmckMciFcovcoGcoxcoycozcoScoxcoBcovciFclmckLckMciFcoCckicoDcmBcoEciFclmckLckMciFciFclmckLckMczAclmckLckMciFciFdCQckMciFclmckLckMciFcoFckickicfRcoXciFciFaahahOareaiearfaieargahOaahaahaahaahaahbZMbZMcoHcoIcoJcoJcoJcoJcoJcoJcoJcoJcoKcoLcoLcoLcoMcoNcoObZMbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadbLjaahaahcjgcoPckncoQcmacoRcpqcoTcoUcoVcoacoWcpPcoYcoZcpacpbchYcpcchYaahaahaahaahaahaahamYariarharkarjarmarlarnamYcpdcohcpecmjaahaahaahcpjbZXarqbZXcpjcvVcrrcvWdElahyahyahyahycjzcplcpmcpncpocppcpTcprcjzahyahyahyahyahybbobbocpscptcmzbbobboahyahyahyahyahyahycovawtcpvcpwcpxcpycpzcpAcpBawucovahyahyahyciFciFcpDcpEckjciFciFahyahyahyczZcEVcEVcEVcEvcEvcEvcEVcEVcEWczZahyahyahyahyahyahyciFciFcjIcjIcjKciFciFaahaahahOahOaiaarraidahOahOaahaahaahaahaahbZMcpFcpGcpHbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMbZMcpIcoMcpJbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaahaahaahcjgcpKcpLcpMcpNcpOcqecpQcoacpRcoacpSchYcqzcpUcqzcpVcpWchZchYcpXcpXcpXcpXcpXcpXamYamYarsauQaruauRarvamYamYcmjcpYcmjcmjcpXcpXcpjcpjcFucFrcqdcpjdElcxWcyjdElcrIcqfcqfcqgcjzcjzcjzcjzcqhcjzcjzcjzcjzcrIcqfcqfcqfcqgcpjcqicqjcqkcqlcqmcpjcpjahyahyahyahyahycovcqncqocqpcqqcqrcqscrJcpBcqucovahyahyahyahycqvcqwcqxcqycqvahyahyahyahyczZcuIarwcxUcEvcEvcEVcEVcEVcIFczZahyahyahyahyahyahyahycrNckicqAcqBciFaahaahaahaahahOahOahOahOahOaahaahaahaahaahaahbZMcqCcgnbZMbZMaahaahaahaahaahaahaahaahaahaahaahbZMbZMcgncqDbZMaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaahaahaahcjgctxckncqFcqGcqHcqIcqJcqJcqKcqLcqMcqNcqOcqOcqPcqQcqRcqScqTcqUcqVcqWcqXcqYcqYcqZcqOarxcracqYcqYcqYcqYarycqOcrdarzcrfcrgcrhcricrjcMIcMjcrmcrncrocOZcrudBNcrscrtcrucrucrvcrucricrwcrxcrycrzcrAcrBcrAcrCcrAcrDcrAcrzcrAcrEcrFcrGcrucrHcrRahyahyahyahyahycrWcqtcrKcrLcrLcrMcrLcrLcpBcqtcrWahyahyahyahycsKcrOcrPcqycsKahyahyahyahycIHcEVcEVcEVcEVcEVcEVcEVcEVcJKcrQcrQcrQcsLcrScrTcrUcrQcrQctccsNctccrQcrQcrQcrQaahaahaahaahaahaahaahcrXcrXcrXcrXcrXbZMcrYcrZcrZcrZcrZcrZaahaahaahaahaahaahaahcsacsacsacsacsacsbbZMcsccsccsccsccscaahaahaahaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaahaahcjgcsdcknckncsecsfcsgcshcshcsicshcsjcskcslcsmcsncsncsncsocspcsqcsrcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsqcsscsqcsqcsqcstcsqcsqcsucsvcswcsxcsycswcswcsvdBPcswcswcszcsAcsBcrucrucrucricrucsCcswcsDcswcsEcswcswcswcsFcswcsvcswcsGcsHcsIcrucsJcsRahyahyahyahyahyctmcqtcrKcrLcsMcsMcsMcrLcpBcqtctmahyahyahyctucsOcrOcsPcsQcumcsSahyahyahycMYcEVcEVcDncEVcEVcEVcEVcFecrQcrQcwtctdcsXcwtcwvcsXcsYcwwctbcsYctbctecxOcwxcrQcrQaahaahcrXcrXcrXcrXcrXctfctgayocrXctictjcrZayqctlcurcrZcrZcrZcrZcrZcsacsacsacsactnctoayscsactqctrcscayvcttcuTcsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaabLjbLjcjgctvctwcALctycmacjgbRMctActBctCctDctEctFctGctHcrfcrfcrfctIctJctKcrfctLctMctNcrfctFctOcrfcrfctPctQctRctSctTctQctQctUctVctWcrocrpctXctYctZcuacubdCbcuadCfcuacuccudcuacuacuacubcuecufcuacubcuacugcuacuhcuicuacuacubcuacujcrucukcruculcuYahyahyahyahyahyctmcuncuocrLcsMcupcsMcrLcuqcunctmahyahyahycvacqycrOcrPcqycqycvaahyahyahycMYcJacEVcLvcEVcQdcEVcEVcEVcrQcxScsYcwrcwscwscwscwscwscwsczmczlczoczncPbcPbcBjcrQaahaahcrXcuuazEcuucrXcNfcuxdGMcrXcuzcuAcrZcuNcuCcuDcrZcuEazFcuEcrZcuGaAdcuGcsacOScuJdHccsacuLcuMcsccwEcuOcuPcsccuQaADcuQcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaadaadaadcuScuScvgcuUcuScuVcuWcuScuScuScuXcvocuZcuXcvrcvbcuXcvccvdcvecvfcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpXcpjcvNcvhcrFcvicvjcpjcpjcpjcpjcrIcqfcqfcqfcqfcqgcpjbRRcvlcqdcpjcrIcqfcqgcpjcrIcqfcqgcpjcvmcrucrucrGcvncpjcpjahyahyahyahyahycwjcvpcuocrLcrLcrLcrLcrLcuqcvqcwjahyahyahycqvcwqcrOcrPcqycvscqvahyahyahycRUcWRcEVcEVcEVcEVcEVcEVcWRcrQcBkcsYcsYcsYcvucvucvucvucvuctbcDpcwzcsYcsYcsYcducrQaahaahcrXaAEcvxaAEcrXcrXcvycrXcrXcwFcwGcrZcrZcvBcrZcrZaAFcvDaAFcrZaAGcvFaAGcsacsacvGcsacsacvHcvIcsccsccvJcsccscaAHcvLaAHcscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxfcvOcvPcvQcvRcvScvTcvUdEKdEJcvXcvYcvZcwacwbcwccuXcpXcpXcpXcpXcpXaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahaahcpjcwdcwecwfcwgcwdcpjdELdELdELahyahyahyahyahyahycpjcwhcwicwhcpjahyahyahyahyahyahyahycxAcqicqicqicwkcqicxAahyahyahyahyahyahycovcuncwlcwmcwncwocuncuncuqcwpcovahyahyahycsKcqycrOcrPcqycqycsKahyahyahyczZcPicEVcEVcEvcPocEVcEVcEVcrQcvucvucsYcsYcBicDqdBUcxPbdUctbcxRcsYcFdcFdcFdcFdcrQaahaahcrXcwBcwCcwDcPvcwDcwJcwHcwLcwKcwUcwTcwXcwVcwMcwNcwMcwOcwPcrZcwQcwRcwScPBcwScyacyecybcyqcyfcwYcwZcxacxbcxccxbcxdcxecscaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMaadaaacxNcxgcxgcxgcxgcvScvTcxhcxhcxicuXcxjcxkcxlcxmcxncuXcxocxpcxqcxraahaahaahaahaahcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxrcxscxtcxucxvcxwcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcwhcxxcxycwhahyahyahyahyahyahyahyahycxzcyBcxBczkcxDcyBcxzahyahyahyahyahyahycovcovdHdcxFcxGcxHcxIcxJdHecovcovahyahyahycumcsScxLcxMcqyctucsOahyahyahyczZczZcEVcTdcQncUncEVcEVddacrQcEFcxPcsYcsYcxQcxQcxQcxQcxQctbcxRcsYcFdcFdcFdcFbcrQaahaahcrXcxVaAKaAIcxYcxZcytcyrcrXcyccydcrZcAkcyucygcyhcyidENcykcrZcyldEPcyncyocypcAqcAucsacyscAxcBocBncyvcywcyxcyydEQcyAcscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczTcyCcyDcyEcyFcxgcxgcvScyGcyHcyIcyJcyKcyLcyMaGXcyOcyPcuXcxqcxqcxqcxrcxrcxrcxrcxrcxrcxrcyQcyRcyScyScyScyScyScyScyScyScyScyScyScyTcyScyUcyVcyWcyXcyYcyVcyZczaczbczaczaczaczaczaczaczaczaczaczccwhahyahyahyahyahycxzcxzcxzcxzczdczebTgczgczhcxzcxzcxzcxzahyahyahyahycovcovcovcziczjczicovcovcovahyahyahyahyahycvacrOcrPcqycvaahyahyahyahyahyczZczZczZczZddeczZczZczZcrQcxQcxQcDocwycwycwycFccHvcHrcJzcHxcsYcFdcFdcFdcFdcrQaahaahcrXcrXcrXcrXcrXcrXcBqcrXcrXczpcuAcrZcrZcBrcrZcrZcrZcrZcrZcrZcsacsacsacsacsacBucsacsacuLcBvcsccsccsccsccsccsccsccsccscaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMczrczsczrczscztczuczvczwczxczyczzcxgcArczBczCczDczEcuXcuXczFczGczGczGczGczGczGczGczGczGczGczHcxqcxrcxrcxrcxrcxrczIczIczJcxrcOHczKcxqcxrczLczMczNczOczPcwhczQczQddgddmddkczQczQcwhcwhcwhcwhczRcwhahyahyahyahyahycxzczSczScABczUczVczWczXczYcAIcAacAacxzaahahyahyahyahyaahaahczicAbcziaahaahaahahyahyahyahyahycqvcAccAdcAecqvahyahyahyahyahyahyahyahycBgcWQcBgahyaahcrQcJNcxTcKMcxTcxTcFacFacKNcxTcxTcMecDrcFdcFdcFdcmYcrQaahaahcAicCbaEJcCbcAicAjcBxaywcAicAmcAncAoayEcCccBbcAocCfaFxcCfcAocCkaFzcCkcAscAtcClazxcAscAwcCmcAyazycAAcBAcAycCoaFRcCocAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcACcADcACcAEcAFcxgcxgcvScvTcAGczzcAHcBTcAJcAKcMdbWMcuXcxqcANcxqcxqcxrcxrcxrcxrcxrcxrcxrcxrcAOcxrcxraahaahaahcxrcAPcAPcAPcxrcxrcxrcxrcwdcwdcAQcARcAScwdcwdcwhcwhcwhcwhcwhczQcwhcwhaahaahcwhczRcwhaahahyahyahyahycxzcATczecAUcAVczeczeczgcAWcAXczecAYcxzaahahyahyaahaahaahaahczicAZcziaahaahaahcBacCScBccBacqvcqvcBdcBecBfcqvcBgcBgcBgcBgcBgahyahyahycBgcWQcBgaahaahcrQcvucvucMXcGzcGAcGAcGAcNJcGAcGzcNMcsYcNVcNVcNWcNXcrQaahaahcAiaGxaHMaGxcAicBmcDydHfcAiczpcBpcAocDDcDCcBscAoaJaaHOaJacAoaKbaJIaKbcAscBtcDMdHgcAscBwcBvcAycFkcBycBzcAyaKnaKpaKncAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcvMcvMcvMcvMcvMcvMcvMcEBcyCcBBcBCcxgcxgcxgcBDcvTcAGczzcBEcuXcvrcvbcuXcuXcuXcxrcANcBFcxrcxraahaahaahaahaahaahcxrcBGcBHcxraahaahaahcBIcBIcBJcBIcBIaahaahaahaahcwdcBKcxucxvcwdaahaahaahaahaahcwhczQcwhaahaahaahcwhczRcwhaahaahaahahyahycxzcxzcxzcxzcBLcBMcBNcBOcbocxzcxzcxzcxzaahaahaahaahaahaahaahczicAbczicziczicBacBacymcBRcBacBScEIcrOcrPcqycBUcBgcBVcBWcBXcBgcBgahyahycBgcWQcBgaTWaahcrQcNRcxPcMXcGzcHscHtcHucNUdFccGzcNMcsYcPccPccPccOVcrQaahaahcAiaKqaKFaHMcAicAicFlcAicAicCdcvAcAocFmcCecAocAoaHOaKGaKHcAoaLuaLtaJIcAscAscFncAscAscvHcFycAycAycCncAycAyaKpaLxaLvcAyaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -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 91f9006b6b..a9f68d2953 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-5.dmm b/maps/polaris-5.dmm index 284c6cf9c1..e76b033e4e 100644 --- a/maps/polaris-5.dmm +++ b/maps/polaris-5.dmm @@ -601,7 +601,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) @@ -1590,7 +1590,7 @@ "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) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/nano/templates/atmo_control.tmpl b/nano/templates/atmo_control.tmpl index 378bd3b0c8..063f5eb6e4 100644 --- a/nano/templates/atmo_control.tmpl +++ b/nano/templates/atmo_control.tmpl @@ -23,16 +23,16 @@
      Gas Composition:
      {{if value.sensor_data.oxygen}} -
      {{:value.sensor_data.pressure}}% O2
      +
      {{:value.sensor_data.oxygen}}% O2
      {{/if}} {{if value.sensor_data.nitrogen}} -
      {{:value.sensor_data.pressure}}% N
      +
      {{:value.sensor_data.nitrogen}}% N
      {{/if}} {{if value.sensor_data.carbon_dioxide}} -
      {{:value.sensor_data.pressure}}% CO2
      +
      {{:value.sensor_data.carbon_dioxide}}% CO2
      {{/if}} {{if value.sensor_data.phoron}} -
      {{:value.sensor_data.pressure}}% TX
      +
      {{:value.sensor_data.phoron}}% TX
      {{/if}}
      {{/if}} diff --git a/nano/templates/uplink.tmpl b/nano/templates/uplink.tmpl index 70d6ec3254..9fb819faf7 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 f8b2503635..a4ddbfd5a7 100644 --- a/polaris.dme +++ b/polaris.dme @@ -75,6 +75,7 @@ #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" @@ -161,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" @@ -168,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" @@ -229,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" @@ -268,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" @@ -287,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" @@ -401,6 +414,77 @@ #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\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" @@ -424,7 +508,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" @@ -570,8 +653,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" @@ -678,7 +769,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" @@ -704,6 +794,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" @@ -905,7 +996,9 @@ #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" @@ -1041,6 +1134,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" @@ -1077,12 +1171,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" @@ -1104,7 +1199,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" @@ -1206,6 +1300,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" @@ -1217,6 +1312,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" @@ -1584,11 +1680,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" @@ -1919,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"