diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 5d414f7674..3ee9cb364a 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -46,6 +46,10 @@ #define CLIENT_FROM_VAR(I) (ismob(I) ? I:client : (isclient(I) ? I : null)) + +//Persistence +#define AREA_FLAG_IS_NOT_PERSISTENT 8 // SSpersistence will not track values from this area. + // Shuttles. // These define the time taken for the shuttle to get to the space station, and the time before it leaves again. @@ -343,3 +347,28 @@ var/global/list/##LIST_NAME = list();\ #define JOB_SILICON 0x6 // 2|4, probably don't set jobs to this, but good for checking #define DEFAULT_OVERMAP_RANGE 0 // Makes general computers and devices be able to connect to other overmap z-levels on the same tile. + + +//Various stuff used in Persistence + +#define send_output(target, msg, control) target << output(msg, control) + +#define send_link(target, url) target << link(url) + +#define SPAN_NOTICE(X) "[X]" + +#define SPAN_WARNING(X) "[X]" + +#define SPAN_DANGER(X) "[X]" + +#define SPAN_OCCULT(X) "[X]" + +#define FONT_SMALL(X) "[X]" + +#define FONT_NORMAL(X) "[X]" + +#define FONT_LARGE(X) "[X]" + +#define FONT_HUGE(X) "[X]" + +#define FONT_GIANT(X) "[X]" \ No newline at end of file diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 0fa2532bf9..f84028d629 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -77,6 +77,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define INIT_ORDER_AI -22 #define INIT_ORDER_AI_FAST -23 #define INIT_ORDER_GAME_MASTER -24 +#define INIT_ORDER_PERSISTENCE -25 #define INIT_ORDER_TICKER -50 #define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init. diff --git a/code/_macros.dm b/code/_macros.dm index 5b7fb379d3..4796f93b47 100644 --- a/code/_macros.dm +++ b/code/_macros.dm @@ -37,4 +37,4 @@ #define random_id(key,min_id,max_id) uniqueness_repository.Generate(/datum/uniqueness_generator/id_random, key, min_id, max_id) -#define ARGS_DEBUG log_debug("[__FILE__] - [__LINE__]") ; for(var/arg in args) { log_debug("\t[log_info_line(arg)]") } +#define ARGS_DEBUG log_debug("[__FILE__] - [__LINE__]") ; for(var/arg in args) { log_debug("\t[log_info_line(arg)]") } \ No newline at end of file diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index f930f4f462..699a1cd70e 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -470,7 +470,6 @@ var/mob/living/silicon/robot/R = usr if(R.module) R.uneq_active() - R.hud_used.update_robot_modules_display() else to_chat(R, "You haven't selected a module yet.") diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index ec35af2752..eda54240ec 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -232,6 +232,8 @@ var/list/gamemode_cache = list() var/dooc_allowed = 1 var/dsay_allowed = 1 + var/persistence_enabled = 1 + var/allow_byond_links = 0 var/allow_discord_links = 0 var/allow_url_links = 0 // honestly if I were you i'd leave this one off, only use in dire situations @@ -427,15 +429,15 @@ var/list/gamemode_cache = list() if ("allow_admin_spawning") config.allow_admin_spawning = 1 - + if ("allow_byond_links") allow_byond_links = 1 if ("allow_discord_links") - allow_discord_links = 1 + allow_discord_links = 1 if ("allow_url_links") - allow_url_links = 1 + allow_url_links = 1 if ("no_dead_vote") config.vote_no_dead = 1 @@ -563,6 +565,9 @@ var/list/gamemode_cache = list() if("protect_roles_from_antagonist") config.protect_roles_from_antagonist = 1 + if ("persistence_enabled") + config.persistence_enabled = 1 + if ("probability") var/prob_pos = findtext(value, " ") var/prob_name = null diff --git a/code/controllers/subsystems/persistence.dm b/code/controllers/subsystems/persistence.dm new file mode 100644 index 0000000000..49f3d601fe --- /dev/null +++ b/code/controllers/subsystems/persistence.dm @@ -0,0 +1,59 @@ +SUBSYSTEM_DEF(persistence) + name = "Persistence" + init_order = INIT_ORDER_PERSISTENCE + flags = SS_NO_FIRE + var/list/tracking_values = list() + var/list/persistence_datums = list() + +/datum/controller/subsystem/persistence/Initialize() + . = ..() + for(var/thing in subtypesof(/datum/persistent)) + var/datum/persistent/P = new thing + persistence_datums[thing] = P + P.Initialize() + +/datum/controller/subsystem/persistence/Shutdown() + for(var/thing in persistence_datums) + var/datum/persistent/P = persistence_datums[thing] + P.Shutdown() + +/datum/controller/subsystem/persistence/proc/track_value(var/atom/value, var/track_type) + + if(config.persistence_enabled == 0) //if the config is not set to persistent nothing will save or load. + return + + var/turf/T = get_turf(value) + if(!T) + return + + var/area/A = get_area(T) + if(!A || (A.flags & AREA_FLAG_IS_NOT_PERSISTENT)) + return + +// if((!T.z in GLOB.using_map.station_levels) || !initialized) + if(!T.z in using_map.station_levels) + return + + if(!tracking_values[track_type]) + tracking_values[track_type] = list() + tracking_values[track_type] += value + +/datum/controller/subsystem/persistence/proc/forget_value(var/atom/value, var/track_type) + if(tracking_values[track_type]) + tracking_values[track_type] -= value + + +/datum/controller/subsystem/persistence/proc/show_info(var/mob/user) + if(!user.client.holder) + return + + var/list/dat = list("") + var/can_modify = check_rights(R_ADMIN, 0, user) + for(var/thing in persistence_datums) + var/datum/persistent/P = persistence_datums[thing] + if(P.has_admin_data) + dat += P.GetAdminSummary(user, can_modify) + dat += "
" + var/datum/browser/popup = new(user, "admin_persistence", "Persistence Data") + popup.set_content(jointext(dat, null)) + popup.open() \ No newline at end of file diff --git a/code/datums/supplypacks/atmospherics.dm b/code/datums/supplypacks/atmospherics.dm index cf102f129d..fb5d4a0e59 100644 --- a/code/datums/supplypacks/atmospherics.dm +++ b/code/datums/supplypacks/atmospherics.dm @@ -11,42 +11,42 @@ name = "Inflatable barriers" contains = list(/obj/item/weapon/storage/briefcase/inflatable = 3) cost = 20 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/aether containername = "Inflatable Barrier Crate" /datum/supply_pack/atmos/canister_empty name = "Empty gas canister" cost = 7 containername = "Empty gas canister crate" - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/aether contains = list(/obj/machinery/portable_atmospherics/canister) /datum/supply_pack/atmos/canister_air name = "Air canister" cost = 10 containername = "Air canister crate" - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/aether contains = list(/obj/machinery/portable_atmospherics/canister/air) /datum/supply_pack/atmos/canister_oxygen name = "Oxygen canister" cost = 15 containername = "Oxygen canister crate" - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/aether contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) /datum/supply_pack/atmos/canister_nitrogen name = "Nitrogen canister" cost = 10 containername = "Nitrogen canister crate" - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/aether contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) /datum/supply_pack/atmos/canister_phoron name = "Phoron gas canister" cost = 60 containername = "Phoron gas canister crate" - containertype = /obj/structure/closet/crate/secure/large + containertype = /obj/structure/closet/crate/secure/large/aether access = access_atmospherics contains = list(/obj/machinery/portable_atmospherics/canister/phoron) @@ -54,7 +54,7 @@ name = "N2O gas canister" cost = 15 containername = "N2O gas canister crate" - containertype = /obj/structure/closet/crate/secure/large + containertype = /obj/structure/closet/crate/secure/large/aether access = access_atmospherics contains = list(/obj/machinery/portable_atmospherics/canister/sleeping_agent) @@ -62,7 +62,7 @@ name = "Carbon dioxide gas canister" cost = 15 containername = "CO2 canister crate" - containertype = /obj/structure/closet/crate/secure/large + containertype = /obj/structure/closet/crate/secure/large/aether access = access_atmospherics contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) @@ -70,7 +70,7 @@ contains = list(/obj/machinery/pipedispenser/orderable) name = "Pipe Dispenser" cost = 25 - containertype = /obj/structure/closet/crate/secure/large + containertype = /obj/structure/closet/crate/secure/large/aether containername = "Pipe Dispenser Crate" access = access_atmospherics @@ -78,7 +78,7 @@ contains = list(/obj/machinery/pipedispenser/disposal/orderable) name = "Disposals Pipe Dispenser" cost = 25 - containertype = /obj/structure/closet/crate/secure/large + containertype = /obj/structure/closet/crate/secure/large/aether containername = "Disposal Dispenser Crate" access = access_atmospherics @@ -89,7 +89,7 @@ /obj/item/weapon/tank/air = 3 ) cost = 10 - containertype = /obj/structure/closet/crate/internals + containertype = /obj/structure/closet/crate/aether containername = "Internals crate" /datum/supply_pack/atmos/evacuation @@ -104,5 +104,5 @@ /obj/item/clothing/mask/gas = 4 ) cost = 35 - containertype = /obj/structure/closet/crate/internals + containertype = /obj/structure/closet/crate/aether containername = "Emergency crate" diff --git a/code/datums/supplypacks/contraband.dm b/code/datums/supplypacks/contraband.dm index 7b266b2a76..7d8616a8ad 100644 --- a/code/datums/supplypacks/contraband.dm +++ b/code/datums/supplypacks/contraband.dm @@ -28,7 +28,7 @@ /obj/item/weapon/grenade/chem_grenade/incendiary ) cost = 25 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/weapon containername = "Special Ops crate" contraband = 1 @@ -39,7 +39,7 @@ /obj/item/weapon/reagent_containers/food/snacks/unajerky = 4 ) cost = 25 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/unathi containername = "Moghes imports crate" contraband = 1 @@ -51,7 +51,7 @@ ) cost = 50 contraband = 1 - containertype = /obj/structure/closet/crate/secure/weapon + containertype = /obj/structure/closet/crate/hedberg containername = "Ballistic weapons crate" /datum/supply_pack/randomised/misc/telecrate //you get something awesome, a couple of decent things, and a few weak/filler things @@ -103,5 +103,5 @@ ) cost = 250 //more than a hat crate!, contraband = 1 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "Suspicious crate" diff --git a/code/datums/supplypacks/costumes.dm b/code/datums/supplypacks/costumes.dm index 879d5accd0..f9b61d9572 100644 --- a/code/datums/supplypacks/costumes.dm +++ b/code/datums/supplypacks/costumes.dm @@ -1,6 +1,6 @@ /* * Here is where any supply packs -* related to weapons live. +* related to costumes live. */ @@ -19,7 +19,7 @@ /obj/item/clothing/head/wizard/fake ) cost = 20 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/nanothreads containername = "Wizard costume crate" /datum/supply_pack/randomised/costumes/hats @@ -48,8 +48,8 @@ ) name = "Collectable hat crate!" cost = 200 - containertype = /obj/structure/closet/crate - containername = "Collectable hats crate! Brought to you by Bass.inc!" + containertype = /obj/structure/closet/crate/nanothreads + containername = "Collectable hats crate" /datum/supply_pack/randomised/costumes/costume num_contained = 3 @@ -84,7 +84,7 @@ ) name = "Costumes crate" cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/nanothreads containername = "Actor Costumes" /datum/supply_pack/costumes/formal_wear @@ -104,15 +104,15 @@ /obj/item/clothing/shoes/leather, /obj/item/clothing/accessory/wcoat ) - name = "Formalwear closet" + name = "Formalwear (Suits)" cost = 30 - containertype = /obj/structure/closet - containername = "Formalwear for the best occasions." + containertype = /obj/structure/closet/crate/gilthari + containername = "Formal suit crate" datum/supply_pack/costumes/witch name = "Witch costume" containername = "Witch costume" - containertype = /obj/structure/closet + containertype = /obj/structure/closet/crate/nanothreads cost = 20 contains = list( /obj/item/clothing/suit/wizrobe/marisa/fake, @@ -124,7 +124,7 @@ datum/supply_pack/costumes/witch /datum/supply_pack/randomised/costumes/costume_hats name = "Costume hats" containername = "Actor hats crate" - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/nanothreads cost = 10 num_contained = 3 contains = list( @@ -147,9 +147,9 @@ datum/supply_pack/costumes/witch ) /datum/supply_pack/randomised/costumes/dresses - name = "Womens formal dress locker" - containername = "Pretty dress locker" - containertype = /obj/structure/closet + name = "Formalwear (Dresses)" + containername = "Formal dress crate" + containertype = /obj/structure/closet/crate/gilthari cost = 15 num_contained = 3 contains = list( diff --git a/code/datums/supplypacks/engineering.dm b/code/datums/supplypacks/engineering.dm index e387309da7..5d2bc99089 100644 --- a/code/datums/supplypacks/engineering.dm +++ b/code/datums/supplypacks/engineering.dm @@ -11,70 +11,70 @@ name = "Replacement lights" contains = list(/obj/item/weapon/storage/box/lights/mixed = 3) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/galaksi containername = "Replacement lights" /datum/supply_pack/eng/smescoil name = "Superconducting Magnetic Coil" contains = list(/obj/item/weapon/smes_coil) cost = 75 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/focalpoint containername = "Superconducting Magnetic Coil crate" /datum/supply_pack/eng/smescoil/super_capacity name = "Superconducting Capacitance Coil" contains = list(/obj/item/weapon/smes_coil/super_capacity) cost = 90 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/focalpoint containername = "Superconducting Capacitance Coil crate" /datum/supply_pack/eng/smescoil/super_io name = "Superconducting Transmission Coil" contains = list(/obj/item/weapon/smes_coil/super_io) cost = 90 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/focalpoint containername = "Superconducting Transmission Coil crate" /datum/supply_pack/eng/shield_capacitor name = "Shield Capacitor" contains = list(/obj/machinery/shield_capacitor) cost = 20 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/focalpoint containername = "shield capacitor crate" /datum/supply_pack/eng/shield_capacitor/advanced name = "Advanced Shield Capacitor" contains = list(/obj/machinery/shield_capacitor/advanced) cost = 30 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/focalpoint containername = "advanced shield capacitor crate" /datum/supply_pack/eng/bubble_shield name = "Bubble Shield Generator" contains = list(/obj/machinery/shield_gen) cost = 40 - containertype = /obj/structure/closet/crate/engineering + containertype =/obj/structure/closet/crate/focalpoint containername = "shield bubble generator crate" /datum/supply_pack/eng/bubble_shield/advanced name = "Advanced Bubble Shield Generator" contains = list(/obj/machinery/shield_gen/advanced) cost = 60 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/focalpoint containername = "advanced bubble shield generator crate" /datum/supply_pack/eng/hull_shield name = "Hull Shield Generator" contains = list(/obj/machinery/shield_gen/external) cost = 80 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/focalpoint containername = "shield hull generator crate" /datum/supply_pack/eng/hull_shield/advanced name = "Advanced Hull Shield Generator" contains = list(/obj/machinery/shield_gen/external/advanced) cost = 120 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/focalpoint containername = "advanced hull shield generator crate" /datum/supply_pack/eng/electrical @@ -86,7 +86,7 @@ /obj/item/weapon/cell/high = 2 ) cost = 10 - containertype = /obj/structure/closet/crate/engineering/electrical + containertype = /obj/structure/closet/crate/ward containername = "Electrical maintenance crate" /datum/supply_pack/eng/e_welders @@ -95,7 +95,7 @@ /obj/item/weapon/weldingtool/electric = 3 ) cost = 15 - containertype = /obj/structure/closet/crate/engineering/electrical + containertype = /obj/structure/closet/crate/ward containername = "Electric welder crate" /datum/supply_pack/eng/mechanical @@ -107,14 +107,14 @@ /obj/item/clothing/head/hardhat ) cost = 10 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/xion containername = "Mechanical maintenance crate" /datum/supply_pack/eng/fueltank name = "Fuel tank crate" contains = list(/obj/structure/reagent_dispensers/fueltank) cost = 10 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/nanotrasen containername = "fuel tank crate" /datum/supply_pack/eng/solar @@ -126,35 +126,35 @@ /obj/item/weapon/paper/solar ) cost = 20 - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/einstein containername = "Solar pack crate" /datum/supply_pack/eng/engine name = "Emitter crate" contains = list(/obj/machinery/power/emitter = 2) cost = 10 - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/einstein containername = "Emitter crate" access = access_ce /datum/supply_pack/eng/engine/field_gen name = "Field Generator crate" contains = list(/obj/machinery/field_generator = 2) - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/xion containername = "Field Generator crate" access = access_ce /datum/supply_pack/eng/engine/sing_gen name = "Singularity Generator crate" contains = list(/obj/machinery/the_singularitygen) - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/einstein containername = "Singularity Generator crate" access = access_ce /datum/supply_pack/eng/engine/collector name = "Collector crate" contains = list(/obj/machinery/power/rad_collector = 3) - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/einstein containername = "Collector crate" /datum/supply_pack/eng/engine/PA @@ -169,7 +169,7 @@ /obj/structure/particle_accelerator/power_box, /obj/structure/particle_accelerator/end_cap ) - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/einstein containername = "Particle Accelerator crate" access = access_ce @@ -177,7 +177,7 @@ contains = list(/obj/item/weapon/circuitboard/shield_gen) name = "Bubble shield generator circuitry" cost = 30 - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/focalpoint containername = "bubble shield generator circuitry crate" access = access_ce @@ -185,7 +185,7 @@ contains = list(/obj/item/weapon/circuitboard/shield_gen_ex) name = "Hull shield generator circuitry" cost = 30 - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/focalpoint containername = "hull shield generator circuitry crate" access = access_ce @@ -193,7 +193,7 @@ contains = list(/obj/item/weapon/circuitboard/shield_cap) name = "Bubble shield capacitor circuitry" cost = 30 - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/focalpoint containername = "shield capacitor circuitry crate" access = access_ce @@ -209,7 +209,7 @@ contains = list(/obj/machinery/power/generator) name = "Mark I Thermoelectric Generator" cost = 40 - containertype = /obj/structure/closet/crate/secure/large + containertype = /obj/structure/closet/crate/secure/large/einstein containername = "Mk1 TEG crate" access = access_engine @@ -217,7 +217,7 @@ contains = list(/obj/machinery/atmospherics/binary/circulator) name = "Binary atmospheric circulator" cost = 20 - containertype = /obj/structure/closet/crate/secure/large + containertype = /obj/structure/closet/crate/secure/large/einstein containername = "Atmospheric circulator crate" access = access_engine @@ -235,7 +235,7 @@ name = "P.A.C.M.A.N. portable generator parts" cost = 25 containername = "P.A.C.M.A.N. Portable Generator Construction Kit" - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/focalpoint access = access_tech_storage contains = list( /obj/item/weapon/stock_parts/micro_laser, @@ -248,7 +248,7 @@ name = "Super P.A.C.M.A.N. portable generator parts" cost = 35 containername = "Super P.A.C.M.A.N. portable generator construction kit" - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/focalpoint access = access_tech_storage contains = list( /obj/item/weapon/stock_parts/micro_laser, @@ -261,7 +261,7 @@ name = "R-UST Mk. 8 Tokamak fusion core crate" cost = 50 containername = "R-UST Mk. 8 Tokamak Fusion Core crate" - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/einstein access = access_engine contains = list( /obj/item/weapon/book/manual/rust_engine, @@ -273,7 +273,7 @@ name = "R-UST Mk. 8 fuel injector crate" cost = 30 containername = "R-UST Mk. 8 fuel injector crate" - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/einstein access = access_engine contains = list( /obj/machinery/fusion_fuel_injector, @@ -285,7 +285,7 @@ name = "Gyrotron crate" cost = 15 containername = "Gyrotron Crate" - containertype = /obj/structure/closet/crate/secure/engineering + containertype = /obj/structure/closet/crate/secure/einstein access = access_engine contains = list( /obj/machinery/power/emitter/gyrotron, @@ -296,12 +296,12 @@ name = "Fusion Fuel Compressor circuitry crate" cost = 10 containername = "Fusion Fuel Compressor circuitry crate" - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/einstein contains = list(/obj/item/weapon/circuitboard/fusion_fuel_compressor) /datum/supply_pack/eng/tritium name = "Tritium crate" cost = 75 containername = "Tritium crate" - containertype = /obj/structure/closet/crate/engineering + containertype = /obj/structure/closet/crate/einstein contains = list(/obj/fiftyspawner/tritium) diff --git a/code/datums/supplypacks/hospitality.dm b/code/datums/supplypacks/hospitality.dm index 6547b25e70..70e4d3ef2a 100644 --- a/code/datums/supplypacks/hospitality.dm +++ b/code/datums/supplypacks/hospitality.dm @@ -23,7 +23,7 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer = 4, ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/gilthari containername = "Party equipment" /datum/supply_pack/hospitality/barsupplies @@ -43,7 +43,7 @@ /obj/item/weapon/storage/box/glass_extras/sticks ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/gilthari containername = "crate of bar supplies" /datum/supply_pack/randomised/hospitality/ @@ -60,7 +60,7 @@ ) name = "Surprise pack of five pizzas" cost = 15 - containertype = /obj/structure/closet/crate/freezer + containertype = /obj/structure/closet/crate/freezer/centauri containername = "Pizza crate" /datum/supply_pack/hospitality/gifts @@ -74,5 +74,5 @@ /obj/item/weapon/paper/card/flower ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/allico containername = "crate of gifts" \ No newline at end of file diff --git a/code/datums/supplypacks/hydroponics.dm b/code/datums/supplypacks/hydroponics.dm index 4341a696ad..069911606e 100644 --- a/code/datums/supplypacks/hydroponics.dm +++ b/code/datums/supplypacks/hydroponics.dm @@ -11,7 +11,7 @@ name = "Monkey crate" contains = list (/obj/item/weapon/storage/box/monkeycubes) cost = 20 - containertype = /obj/structure/closet/crate/freezer + containertype = /obj/structure/closet/crate/freezer/nanotrasen containername = "Monkey crate" /datum/supply_pack/hydro/farwa @@ -110,7 +110,7 @@ /obj/item/seeds/sugarcaneseed ) cost = 10 - containertype = /obj/structure/closet/crate/hydroponics + containertype = /obj/structure/closet/crate/carp containername = "Seeds crate" access = access_hydroponics @@ -124,7 +124,7 @@ /obj/item/weapon/material/twohanded/fireaxe/scythe ) cost = 45 - containertype = /obj/structure/closet/crate/hydroponics + containertype = /obj/structure/closet/crate/grayson containername = "Weed control crate" access = access_hydroponics @@ -132,7 +132,7 @@ name = "Water tank crate" contains = list(/obj/structure/reagent_dispensers/watertank) cost = 10 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/aether containername = "water tank crate" /datum/supply_pack/hydro/bee_keeper @@ -144,14 +144,14 @@ /obj/item/bee_pack ) cost = 40 - containertype = /obj/structure/closet/crate/hydroponics + containertype = /obj/structure/closet/crate/carp containername = "Beekeeping crate" access = access_hydroponics /datum/supply_pack/hydro/tray name = "Empty hydroponics trays" cost = 50 - containertype = /obj/structure/closet/crate/hydroponics + containertype = /obj/structure/closet/crate/aether containername = "Hydroponics tray crate" contains = list(/obj/machinery/portable_atmospherics/hydroponics{anchored = 0} = 3) access = access_hydroponics diff --git a/code/datums/supplypacks/materials.dm b/code/datums/supplypacks/materials.dm index cd799a235b..95f15caa6d 100644 --- a/code/datums/supplypacks/materials.dm +++ b/code/datums/supplypacks/materials.dm @@ -11,40 +11,40 @@ name = "50 metal sheets" contains = list(/obj/fiftyspawner/steel) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/grayson containername = "Metal sheets crate" /datum/supply_pack/materials/glass50 name = "50 glass sheets" contains = list(/obj/fiftyspawner/glass) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/grayson containername = "Glass sheets crate" /datum/supply_pack/materials/wood50 name = "50 wooden planks" contains = list(/obj/fiftyspawner/wood) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/grayson containername = "Wooden planks crate" /datum/supply_pack/materials/plastic50 name = "50 plastic sheets" contains = list(/obj/fiftyspawner/plastic) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/grayson containername = "Plastic sheets crate" /datum/supply_pack/materials/cardboard_sheets contains = list(/obj/fiftyspawner/cardboard) name = "50 cardboard sheets" cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/grayson containername = "Cardboard sheets crate" /datum/supply_pack/materials/carpet name = "Imported carpet" - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/grayson containername = "Imported carpet crate" cost = 15 contains = list( @@ -55,7 +55,7 @@ /datum/supply_pack/misc/linoleum name = "Linoleum" - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/grayson containername = "Linoleum crate" cost = 15 contains = list(/obj/fiftyspawner/linoleum) \ No newline at end of file diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm index 1b164a2cdf..3edcbed200 100644 --- a/code/datums/supplypacks/medical.dm +++ b/code/datums/supplypacks/medical.dm @@ -22,28 +22,28 @@ /obj/item/weapon/storage/box/autoinjectors ) cost = 10 - containertype = /obj/structure/closet/crate/medical + containertype = /obj/structure/closet/crate/zenghu containername = "Medical crate" /datum/supply_pack/med/bloodpack name = "BloodPack crate" contains = list(/obj/item/weapon/storage/box/bloodpacks = 3) cost = 10 - containertype = /obj/structure/closet/crate/medical + containertype = /obj/structure/closet/crate/nanocare containername = "BloodPack crate" /datum/supply_pack/med/bodybag name = "Body bag crate" contains = list(/obj/item/weapon/storage/box/bodybags = 3) cost = 10 - containertype = /obj/structure/closet/crate/medical + containertype = /obj/structure/closet/crate/nanocare containername = "Body bag crate" /datum/supply_pack/med/cryobag name = "Stasis bag crate" contains = list(/obj/item/bodybag/cryobag = 3) cost = 40 - containertype = /obj/structure/closet/crate/medical + containertype = /obj/structure/closet/crate/nanocare containername = "Stasis bag crate" /datum/supply_pack/med/surgery @@ -62,7 +62,7 @@ /obj/item/weapon/surgical/circular_saw ) cost = 25 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/veymed containername = "Surgery crate" access = access_medical @@ -73,7 +73,7 @@ /obj/item/weapon/storage/box/cdeathalarm_kit ) cost = 40 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/ward containername = "Death Alarm crate" access = access_medical @@ -83,7 +83,7 @@ /obj/item/weapon/storage/firstaid/clotting ) cost = 100 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/zenghu containername = "Clotting Medicine crate" access = access_medical @@ -97,7 +97,7 @@ /obj/item/weapon/storage/belt/medical = 3 ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/veymed containername = "Sterile equipment crate" /datum/supply_pack/med/extragear @@ -109,7 +109,7 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/medical = 3 ) cost = 10 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Medical surplus equipment" access = access_medical @@ -133,7 +133,7 @@ /obj/item/weapon/reagent_containers/syringe ) cost = 50 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Chief medical officer equipment" access = access_cmo @@ -156,7 +156,7 @@ /obj/item/weapon/reagent_containers/syringe ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Medical Doctor equipment" access = access_medical_equip @@ -179,7 +179,7 @@ /obj/item/weapon/reagent_containers/syringe ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Chemist equipment" access = access_chemistry @@ -207,7 +207,7 @@ /obj/item/clothing/accessory/storage/white_vest ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Paramedic equipment" access = access_medical_equip @@ -226,7 +226,7 @@ /obj/item/weapon/cartridge/medical ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Psychiatrist equipment" access = access_psychiatrist @@ -247,7 +247,7 @@ /obj/item/weapon/storage/box/gloves ) cost = 10 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Medical scrubs crate" access = access_medical_equip @@ -264,7 +264,7 @@ /obj/item/weapon/pen ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/veymed containername = "Autopsy equipment crate" access = access_morgue @@ -291,7 +291,7 @@ /obj/item/weapon/storage/box/gloves ) cost = 10 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Medical uniform crate" access = access_medical_equip @@ -309,7 +309,7 @@ /obj/item/weapon/storage/box/gloves ) cost = 50 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Medical biohazard equipment" access = access_medical_equip @@ -317,7 +317,7 @@ name = "Portable freezers crate" contains = list(/obj/item/weapon/storage/box/freezer = 7) cost = 25 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/veymed containername = "Portable freezers" access = access_medical_equip @@ -325,7 +325,7 @@ name = "Virus sample crate" contains = list(/obj/item/weapon/virusdish/random = 4) cost = 25 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/zenghu containername = "Virus sample crate" access = access_cmo @@ -333,40 +333,40 @@ name = "Defibrillator crate" contains = list(/obj/item/device/defib_kit = 2) cost = 30 - containertype = /obj/structure/closet/crate/medical + containertype = /obj/structure/closet/crate/veymed containername = "Defibrillator crate" /datum/supply_pack/med/distillery name = "Chemical distiller crate" contains = list(/obj/machinery/portable_atmospherics/powered/reagent_distillery = 1) cost = 50 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/nanotrasen containername = "Chemical distiller crate" /datum/supply_pack/med/advdistillery name = "Industrial Chemical distiller crate" contains = list(/obj/machinery/portable_atmospherics/powered/reagent_distillery/industrial = 1) cost = 150 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/xion containername = "Industrial Chemical distiller crate" /datum/supply_pack/med/oxypump name = "Oxygen pump crate" contains = list(/obj/machinery/oxygen_pump/mobile = 1) cost = 125 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/xion containername = "Oxygen pump crate" /datum/supply_pack/med/anestheticpump name = "Anesthetic pump crate" contains = list(/obj/machinery/oxygen_pump/mobile/anesthetic = 1) cost = 130 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/nanotrasen containername = "Anesthetic pump crate" /datum/supply_pack/med/stablepump name = "Portable stabilizer crate" contains = list(/obj/machinery/oxygen_pump/mobile/stabilizer = 1) cost = 175 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/nanotrasen containername = "Portable stabilizer crate" diff --git a/code/datums/supplypacks/misc.dm b/code/datums/supplypacks/misc.dm index 7f4f0362db..40b8c33670 100644 --- a/code/datums/supplypacks/misc.dm +++ b/code/datums/supplypacks/misc.dm @@ -20,7 +20,7 @@ ) name = "Trading Card Crate" cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/oculum containername = "cards crate" /datum/supply_pack/randomised/misc/dnd @@ -36,7 +36,7 @@ ) name = "Miniatures Crate" cost = 200 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/oculum containername = "Miniature Crate" /datum/supply_pack/randomised/misc/plushies @@ -78,14 +78,14 @@ ) name = "Plushies Crate" cost = 15 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/allico containername = "Plushies Crate" /datum/supply_pack/misc/eftpos contains = list(/obj/item/device/eftpos) name = "EFTPOS scanner" cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/nanotrasen containername = "EFTPOS crate" /datum/supply_pack/misc/chaplaingear @@ -103,7 +103,7 @@ /obj/item/weapon/storage/fancy/candle_box = 3 ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/gilthari containername = "Chaplain equipment crate" /datum/supply_pack/misc/hoverpod @@ -126,14 +126,14 @@ /obj/item/clothing/accessory/storage/webbing ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/nanothreads containername = "Webbing crate" /datum/supply_pack/misc/holoplant name = "Holoplant Pot" contains = list(/obj/machinery/holoplant/shipped) cost = 15 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/thinktronic containername = "Holoplant crate" /datum/supply_pack/misc/glucose_hypos @@ -142,7 +142,7 @@ /obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 5 ) cost = 25 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/zenghu containername = "Glucose Hypo Crate" /datum/supply_pack/misc/mre_rations @@ -159,7 +159,7 @@ /obj/item/weapon/storage/mre/menu9, /obj/item/weapon/storage/mre/menu10) cost = 50 - containertype = /obj/structure/closet/crate/freezer + containertype = /obj/structure/closet/crate/centauri containername = "ready to eat rations" /datum/supply_pack/misc/paste_rations @@ -168,7 +168,7 @@ /obj/item/weapon/storage/mre/menu11 = 2 ) cost = 25 - containertype = /obj/structure/closet/crate/freezer + containertype = /obj/structure/closet/crate/freezer/centauri containername = "emergency rations" /datum/supply_pack/misc/medical_rations @@ -177,5 +177,5 @@ /obj/item/weapon/storage/mre/menu13 = 2 ) cost = 40 - containertype = /obj/structure/closet/crate/freezer + containertype = /obj/structure/closet/crate/zenghu containername = "emergency rations" diff --git a/code/datums/supplypacks/recreation.dm b/code/datums/supplypacks/recreation.dm index 134ae76e30..9bb6b1a442 100644 --- a/code/datums/supplypacks/recreation.dm +++ b/code/datums/supplypacks/recreation.dm @@ -20,7 +20,7 @@ /obj/item/weapon/material/twohanded/fireaxe/foam = 2 ) cost = 50 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/allico containername = "foam weapon crate" /datum/supply_pack/recreation/lasertag @@ -31,8 +31,8 @@ /obj/item/weapon/gun/energy/lasertag/blue, /obj/item/clothing/suit/bluetag ) - containertype = /obj/structure/closet - containername = "Lasertag Closet" + containertype = /obj/structure/closet/crate/ward + containername = "Lasertag Supplies" cost = 10 /datum/supply_pack/recreation/artscrafts @@ -55,14 +55,14 @@ /obj/item/weapon/wrapping_paper = 3 ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/allico containername = "Arts and Crafts crate" /datum/supply_pack/recreation/painters name = "Station Painting Supplies" cost = 10 containername = "station painting supplies crate" - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/grayson contains = list( /obj/item/device/pipe_painter = 2, /obj/item/device/floor_painter = 2, @@ -82,7 +82,7 @@ name = "Deluxe Fishing Bait" cost = 40 containername = "deluxe bait crate" - containertype = /obj/structure/closet/crate/freezer + containertype = /obj/structure/closet/crate/carp num_contained = 8 contains = list( /obj/item/weapon/storage/box/wormcan, @@ -93,7 +93,7 @@ name = "Laser Tag Turrets" cost = 40 containername = "laser tag turret crate" - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/ward contains = list( /obj/machinery/porta_turret/lasertag/blue, /obj/machinery/porta_turret/lasertag/red diff --git a/code/datums/supplypacks/robotics.dm b/code/datums/supplypacks/robotics.dm index 757d38b953..5f8cf6337c 100644 --- a/code/datums/supplypacks/robotics.dm +++ b/code/datums/supplypacks/robotics.dm @@ -20,7 +20,7 @@ /obj/item/weapon/cell/high = 2 ) cost = 10 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Robotics assembly" access = access_robotics @@ -56,7 +56,7 @@ name = "Morpheus robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/morpheus) cost = 20 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/morpheus containername = "Robolimb blueprints (Morpheus)" access = access_robotics @@ -64,7 +64,7 @@ name = "Cyber Solutions robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/cybersolutions) cost = 20 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/cybersolutions containername = "Robolimb blueprints (Cyber Solutions)" access = access_robotics @@ -72,7 +72,7 @@ name = "Xion robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/xion) cost = 20 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/xion containername = "Robolimb blueprints (Xion)" access = access_robotics @@ -80,7 +80,7 @@ name = "Grayson robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/grayson) cost = 30 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/grayson containername = "Robolimb blueprints (Grayson)" access = access_robotics @@ -88,7 +88,7 @@ name = "Hephaestus robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/hephaestus) cost = 35 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/heph containername = "Robolimb blueprints (Hephaestus)" access = access_robotics @@ -96,7 +96,7 @@ name = "Ward-Takahashi robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/wardtakahashi) cost = 35 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/ward containername = "Robolimb blueprints (Ward-Takahashi)" access = access_robotics @@ -104,7 +104,7 @@ name = "Zeng Hu robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/zenghu) cost = 35 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/zenghu containername = "Robolimb blueprints (Zeng Hu)" access = access_robotics @@ -112,7 +112,7 @@ name = "Bishop robolimb blueprints" contains = list(/obj/item/weapon/disk/limb/bishop) cost = 70 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/bishop containername = "Robolimb blueprints (Bishop)" access = access_robotics @@ -133,7 +133,7 @@ /obj/item/weapon/circuitboard/mecha/ripley/peripherals ) cost = 25 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/xion containername = "APLU \"Ripley\" Circuit Crate" access = access_robotics @@ -144,7 +144,7 @@ /obj/item/weapon/circuitboard/mecha/odysseus/main ) cost = 25 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/veymed containername = "\"Odysseus\" Circuit Crate" access = access_robotics @@ -158,7 +158,7 @@ ) name = "Random APLU modkit" cost = 200 - containertype = /obj/structure/closet/crate/science + containertype = /obj/structure/closet/crate/xion containername = "heavy crate" /datum/supply_pack/randomised/robotics/exosuit_mod/durand @@ -168,6 +168,7 @@ /obj/item/device/kit/paint/durand/phazon ) name = "Random Durand exosuit modkit" + containertype = /obj/structure/closet/crate/heph /datum/supply_pack/randomised/robotics/exosuit_mod/gygax contains = list( @@ -176,6 +177,7 @@ /obj/item/device/kit/paint/gygax/recitence ) name = "Random Gygax exosuit modkit" + containertype = /obj/structure/closet/crate/heph /datum/supply_pack/robotics/jumper_cables name = "Jumper kit crate" @@ -183,7 +185,7 @@ /obj/item/device/defib_kit/jumper_kit = 2 ) cost = 30 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/einstein containername = "Jumper kit crate" access = access_robotics diff --git a/code/datums/supplypacks/science.dm b/code/datums/supplypacks/science.dm index ab55b8571e..c4c03ffd04 100644 --- a/code/datums/supplypacks/science.dm +++ b/code/datums/supplypacks/science.dm @@ -9,7 +9,7 @@ name = "Coolant tank crate" contains = list(/obj/structure/reagent_dispensers/coolanttank) cost = 15 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/aether containername = "coolant tank crate" /datum/supply_pack/sci/phoron @@ -39,7 +39,7 @@ /obj/item/seeds/kudzuseed ) cost = 15 - containertype = /obj/structure/closet/crate/hydroponics + containertype = /obj/structure/closet/crate/carp containername = "Exotic Seeds crate" access = access_hydroponics @@ -47,14 +47,14 @@ name = "Integrated circuit printer" contains = list(/obj/item/device/integrated_circuit_printer = 2) cost = 15 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/ward containername = "Integrated circuit crate" /datum/supply_pack/sci/integrated_circuit_printer_upgrade name = "Integrated circuit printer upgrade - advanced designs" contains = list(/obj/item/weapon/disk/integrated_circuit/upgrade/advanced) cost = 30 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/ward containername = "Integrated circuit crate" /datum/supply_pack/sci/xenoarch @@ -75,6 +75,6 @@ /obj/item/weapon/storage/bag/fossils, /obj/item/weapon/hand_labeler) cost = 100 - containertype = /obj/structure/closet/crate/secure/science + containertype = /obj/structure/closet/crate/secure/xion containername = "Xenoarchaeology Tech crate" access = access_research \ No newline at end of file diff --git a/code/datums/supplypacks/security.dm b/code/datums/supplypacks/security.dm index b958a35663..b4bad53657 100644 --- a/code/datums/supplypacks/security.dm +++ b/code/datums/supplypacks/security.dm @@ -53,11 +53,11 @@ /obj/item/clothing/accessory/storage/pouches/blue, ) cost = 30 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/heph containername = "Plate Carrier crate" /datum/supply_pack/security/carriersgreen - name = "Armor - Blue modular armor" + name = "Armor - Green modular armor" contains = list( /obj/item/clothing/suit/armor/pcarrier/green, /obj/item/clothing/accessory/armor/armguards/green, @@ -65,7 +65,7 @@ /obj/item/clothing/accessory/storage/pouches/green, ) cost = 30 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/heph containername = "Plate Carrier crate" /datum/supply_pack/security/carriersnavy @@ -77,7 +77,7 @@ /obj/item/clothing/accessory/storage/pouches/navy, ) cost = 30 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/heph containername = "Plate Carrier crate" /datum/supply_pack/security/carrierstan @@ -89,7 +89,7 @@ /obj/item/clothing/accessory/storage/pouches/tan, ) cost = 30 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/heph containername = "Plate Carrier crate" /datum/supply_pack/security/armorplate @@ -98,7 +98,7 @@ /obj/item/clothing/accessory/armor/armorplate, ) cost = 5 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/lawson containername = "Armor plate crate" /datum/supply_pack/security/armorplatestab @@ -107,7 +107,7 @@ /obj/item/clothing/accessory/armor/armorplate/stab, ) cost = 10 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/lawson containername = "Armor plate crate" /datum/supply_pack/security/armorplatemedium @@ -116,7 +116,7 @@ /obj/item/clothing/accessory/armor/armorplate/medium, ) cost = 10 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/lawson containername = "Armor plate crate" /datum/supply_pack/security/armorplatetac @@ -125,7 +125,7 @@ /obj/item/clothing/accessory/armor/armorplate/tactical, ) cost = 15 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/heph containername = "Armor plate crate" /datum/supply_pack/randomised/security/carriers @@ -140,7 +140,7 @@ /obj/item/clothing/suit/armor/pcarrier/press ) cost = 10 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/scg containername = "Plate Carrier crate" /datum/supply_pack/security/carriertags @@ -158,7 +158,7 @@ /obj/item/clothing/accessory/armor/tag/abneg ) cost = 20 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/scg containername = "Plate Carrier crate" /datum/supply_pack/security/helmcovers @@ -174,7 +174,7 @@ /obj/item/clothing/accessory/armor/helmcover/tan ) cost = 20 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/scg containername = "Helmet Covers crate" /datum/supply_pack/randomised/security/armorplates @@ -193,7 +193,7 @@ /obj/item/clothing/accessory/armor/armorplate/bulletproof ) cost = 40 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/scg containername = "Armor plate crate" /datum/supply_pack/randomised/security/carrierarms @@ -210,7 +210,7 @@ /obj/item/clothing/accessory/armor/armguards/bulletproof ) cost = 40 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/scg containername = "Armor plate crate" /datum/supply_pack/randomised/security/carrierlegs @@ -227,7 +227,7 @@ /obj/item/clothing/accessory/armor/legguards/bulletproof ) cost = 40 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/scg containername = "Armor plate crate" /datum/supply_pack/randomised/security/carrierbags @@ -246,7 +246,7 @@ /obj/item/clothing/accessory/storage/pouches/large/tan ) cost = 50 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/scg containername = "Armor plate crate" /datum/supply_pack/security/riot_gear @@ -260,7 +260,7 @@ /obj/item/weapon/storage/box/handcuffs ) cost = 40 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/lawson containername = "Riot gear crate" access = access_armory @@ -273,7 +273,7 @@ /obj/item/clothing/shoes/leg_guard/riot ) cost = 30 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/lawson containername = "Riot armor crate" access = access_armory @@ -287,7 +287,7 @@ /obj/item/clothing/accessory/armor/legguards/riot ) cost = 40 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/lawson containername = "Riot armor crate" access = access_armory @@ -300,7 +300,7 @@ /obj/item/clothing/shoes/leg_guard/laserproof ) cost = 40 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/lawson containername = "Ablative armor crate" access = access_armory @@ -314,7 +314,7 @@ /obj/item/clothing/accessory/armor/legguards/laserproof ) cost = 50 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/lawson containername = "Ablative armor crate" access = access_armory @@ -327,7 +327,7 @@ /obj/item/clothing/shoes/leg_guard/bulletproof ) cost = 40 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/heph containername = "Ballistic armor crate" access = access_armory @@ -341,7 +341,7 @@ /obj/item/clothing/accessory/armor/legguards/bulletproof ) cost = 50 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/heph containername = "Ballistic armor crate" access = access_armory @@ -354,13 +354,13 @@ /obj/item/clothing/shoes/leg_guard/combat ) cost = 40 - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/saare containername = "Combat armor crate" access = access_armory /datum/supply_pack/security/tactical name = "Armor - Tactical" - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/saare containername = "Tactical armor crate" cost = 40 access = access_armory @@ -385,7 +385,7 @@ /datum/supply_pack/security/flexitac name = "Armor - Tactical Light" - containertype = /obj/structure/closet/crate/secure/gear + containertype = /obj/structure/closet/crate/secure/saare containername = "Tactical Light armor crate" cost = 75 access = access_armory @@ -410,15 +410,14 @@ name = "Misc - Security Barriers" contains = list(/obj/machinery/deployable/barrier = 4) cost = 20 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/secure/heph containername = "Security barrier crate" - access = null /datum/supply_pack/security/securityshieldgen name = "Misc - Wall shield generators" contains = list(/obj/machinery/shieldwallgen = 4) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/heph containername = "Wall shield generators crate" access = access_teleporter @@ -432,7 +431,7 @@ /obj/item/clothing/accessory/holster/hip ) cost = 15 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/hedberg containername = "Holster crate" /datum/supply_pack/security/extragear @@ -444,7 +443,7 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/security = 3 ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/nanothreads containername = "Security surplus equipment" /datum/supply_pack/security/detectivegear @@ -471,7 +470,7 @@ /obj/item/weapon/storage/bag/detective ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Forensic equipment" access = access_forensics_lockers @@ -484,7 +483,7 @@ /obj/item/device/detective_scanner ) cost = 60 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/ward containername = "Forensic equipment" access = access_forensics_lockers @@ -506,7 +505,7 @@ /obj/item/clothing/gloves/black = 2 ) cost = 10 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Investigation clothing" access = access_forensics_lockers @@ -536,7 +535,7 @@ /obj/item/device/flashlight/maglight ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Officer equipment" access = access_brig @@ -564,7 +563,7 @@ /obj/item/device/flashlight/maglight ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Warden equipment" access = access_armory @@ -590,7 +589,7 @@ /obj/item/device/flashlight/maglight ) cost = 50 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Head of security equipment" access = access_hos @@ -609,7 +608,7 @@ /obj/item/weapon/storage/box/holobadge ) cost = 10 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Security uniform crate" /datum/supply_pack/security/navybluesecurityclothing @@ -630,7 +629,7 @@ /obj/item/weapon/storage/box/holobadge ) cost = 10 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Navy blue security uniform crate" /datum/supply_pack/security/corporatesecurityclothing @@ -650,7 +649,7 @@ /obj/item/weapon/storage/box/holobadge ) cost = 10 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Corporate security uniform crate" /datum/supply_pack/security/biosuit @@ -666,7 +665,7 @@ /obj/item/weapon/storage/box/gloves ) cost = 25 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Security biohazard gear" access = access_security @@ -676,6 +675,6 @@ /obj/item/weapon/contraband/poster/nanotrasen = 6 ) cost = 20 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanotrasen containername = "Morale Posters" access = access_maint_tunnels diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm index 25864ee549..303c75c9c4 100644 --- a/code/datums/supplypacks/supply.dm +++ b/code/datums/supplypacks/supply.dm @@ -18,14 +18,14 @@ /obj/item/weapon/reagent_containers/food/condiment/yeast = 3 ) cost = 10 - containertype = /obj/structure/closet/crate/freezer + containertype = /obj/structure/closet/crate/freezer/centauri containername = "Food crate" /datum/supply_pack/supply/toner name = "Toner cartridges" contains = list(/obj/item/device/toner = 6) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/ummarcar containername = "Toner cartridges" /datum/supply_pack/supply/janitor @@ -48,7 +48,7 @@ /obj/structure/mopbucket ) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/galaksi containername = "Janitorial supplies" /datum/supply_pack/supply/shipping @@ -62,7 +62,7 @@ /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tape_roll = 2) cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/ummarcar containername = "Shipping supplies crate" /datum/supply_pack/supply/bureaucracy @@ -82,13 +82,19 @@ ) name = "Office supplies" cost = 15 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/ummarcar containername = "Office supplies crate" +/datum/supply_pack/supply/sticky_notes + name = "Stationery - sticky notes (50)" + contains = list(/obj/item/sticky_pad/random) + cost = 10 + containername = "\improper Sticky notes crate" + /datum/supply_pack/supply/spare_pda name = "Spare PDAs" cost = 10 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/thinktronic containername = "Spare PDA crate" contains = list(/obj/item/device/pda = 3) @@ -112,7 +118,7 @@ /obj/item/clothing/glasses/meson ) cost = 10 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/xion containername = "Shaft miner equipment" access = access_mining @@ -127,12 +133,12 @@ name = "Cargo Train Tug" contains = list(/obj/vehicle/train/engine) cost = 35 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/xion containername = "Cargo Train Tug Crate" /datum/supply_pack/supply/cargotrailer name = "Cargo Train Trolley" contains = list(/obj/vehicle/train/trolley) cost = 15 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large/xion containername = "Cargo Train Trolley Crate" \ No newline at end of file diff --git a/code/datums/supplypacks/voidsuits.dm b/code/datums/supplypacks/voidsuits.dm index 6ab3fa9d85..a867b20255 100644 --- a/code/datums/supplypacks/voidsuits.dm +++ b/code/datums/supplypacks/voidsuits.dm @@ -17,7 +17,7 @@ /obj/item/weapon/tank/oxygen = 2, ) cost = 40 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/aether containername = "Atmospheric voidsuit crate" access = access_atmospherics @@ -31,7 +31,7 @@ /obj/item/weapon/tank/oxygen = 2, ) cost = 50 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/aether containername = "Heavy Duty Atmospheric voidsuit crate" access = access_atmospherics @@ -45,7 +45,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 40 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/xion containername = "Engineering voidsuit crate" access = access_engine_equip @@ -59,7 +59,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 40 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/xion containername = "Engineering Construction voidsuit crate" access = access_engine_equip @@ -73,7 +73,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 45 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/xion containername = "Engineering Hazmat voidsuit crate" access = access_engine_equip @@ -87,7 +87,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 50 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/xion containername = "Reinforced Engineering voidsuit crate" access = access_engine_equip @@ -101,7 +101,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 40 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/veymed containername = "Medical voidsuit crate" access = access_medical_equip @@ -115,7 +115,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 40 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/veymed containername = "Medical EMT voidsuit crate" access = access_medical_equip @@ -129,7 +129,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 45 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/nanocare containername = "Medical Biohazard voidsuit crate" access = access_medical_equip @@ -143,7 +143,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 60 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/veymed containername = "Vey-Med Autoadaptive voidsuit (humanoid) crate" access = access_medical_equip @@ -168,7 +168,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 40 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/heph containername = "Security voidsuit crate" /datum/supply_pack/voidsuits/security/crowd @@ -181,7 +181,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 60 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/heph containername = "Security Crowd Control voidsuit crate" access = access_armory @@ -195,7 +195,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 60 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/heph containername = "Security EVA voidsuit crate" access = access_armory @@ -208,7 +208,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 40 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/xion containername = "Mining voidsuit crate" access = access_mining @@ -221,7 +221,7 @@ /obj/item/weapon/tank/oxygen = 2 ) cost = 50 - containertype = /obj/structure/closet/crate/secure + containertype = /obj/structure/closet/crate/secure/grayson containername = "Frontier Mining voidsuit crate" access = access_mining @@ -232,6 +232,6 @@ /obj/item/clothing/mask/gas/zaddat = 1 ) cost = 30 - containertype = /obj/structure/closet/crate + containertype = /obj/structure/closet/crate/nanotrasen containername = "Zaddat Shroud crate" access = null \ 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 f0996f226f..20262fbcca 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -31,6 +31,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station power_environ = 0 base_turf = /turf/space ambience = AMBIENCE_SPACE + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/space/atmosalert() return @@ -68,7 +69,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/shuttle requires_power = 0 - flags = RAD_SHIELDED + flags = RAD_SHIELDED | AREA_FLAG_IS_NOT_PERSISTENT sound_env = SMALL_ENCLOSED base_turf = /turf/space forbid_events = TRUE @@ -201,6 +202,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Alien base" icon_state = "yellow" requires_power = 0 + flags = AREA_FLAG_IS_NOT_PERSISTENT // CENTCOM @@ -209,6 +211,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "centcom" requires_power = 0 dynamic_lighting = 0 + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/centcom/control name = "\improper CentCom Control" @@ -286,6 +289,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station requires_power = 0 dynamic_lighting = 0 ambience = AMBIENCE_HIGHSEC + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/syndicate_mothership/control name = "\improper Mercenary Control Room" @@ -302,6 +306,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "asteroid" requires_power = 0 sound_env = ASTEROID + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/asteroid/cave // -- TLE name = "\improper Moon - Underground" @@ -325,6 +330,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station requires_power = 0 dynamic_lighting = 0 sound_env = ARENA + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/tdome/tdome1 name = "\improper Thunderdome (Team 1)" @@ -352,6 +358,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station flags = RAD_SHIELDED base_turf = /turf/space ambience = AMBIENCE_HIGHSEC + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/syndicate_station/start name = "\improper Mercenary Forward Operating Base" @@ -407,6 +414,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station requires_power = 0 dynamic_lighting = 0 ambience = AMBIENCE_OTHERWORLDLY + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/skipjack_station name = "\improper Skipjack" @@ -414,6 +422,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station requires_power = 0 base_turf = /turf/space ambience = AMBIENCE_HIGHSEC + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/skipjack_station/start name = "\improper Skipjack" @@ -448,6 +457,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Prison Station" icon_state = "brig" ambience = AMBIENCE_HIGHSEC + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/prison/arrival_airlock name = "\improper Prison Station Airlock" @@ -633,6 +643,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/maintenance/disposal name = "Waste Disposal" icon_state = "disposal" + flags = AREA_FLAG_IS_NOT_PERSISTENT //If trash items got this far, they can be safely deleted. /area/maintenance/engineering name = "Engineering Maintenance" @@ -946,10 +957,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/heads/hop name = "\improper Command - HoP's Office" icon_state = "head_quarters" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/crew_quarters/heads/hor name = "\improper Research - RD's Office" icon_state = "head_quarters" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/crew_quarters/heads/chief name = "\improper Engineering - CE's Office" @@ -962,6 +975,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/heads/cmo name = "\improper Medbay - CMO's Office" icon_state = "head_quarters" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/crew_quarters/courtroom name = "\improper Courtroom" @@ -1287,6 +1301,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station dynamic_lighting = 0 sound_env = LARGE_ENCLOSED forbid_events = TRUE + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/holodeck/alphadeck name = "\improper Holodeck Alpha" @@ -1647,10 +1662,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/medical/surgery name = "\improper Operating Theatre 1" icon_state = "surgery" + flags = AREA_FLAG_IS_NOT_PERSISTENT //This WOULD become a filth pit /area/medical/surgery2 name = "\improper Operating Theatre 2" icon_state = "surgery" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/medical/surgeryobs name = "\improper Operation Observation Room" @@ -1687,6 +1704,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/medical/sleeper name = "\improper Emergency Treatment Centre" icon_state = "exam_room" + flags = AREA_FLAG_IS_NOT_PERSISTENT //Trust me. /area/medical/first_aid_station_starboard name = "\improper Starboard First-Aid Station" @@ -1901,6 +1919,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/quartermaster/delivery name = "\improper Cargo - Delivery Office" icon_state = "quart" + flags = AREA_FLAG_IS_NOT_PERSISTENT //So trash doesn't pile up too hard. /area/quartermaster/miningdock name = "\improper Cargo Mining Dock" @@ -1940,6 +1959,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/rnd/rdoffice name = "\improper Research Director's Office" icon_state = "head_quarters" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/rnd/supermatter name = "\improper Supermatter Lab" @@ -2062,6 +2082,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Derelict Station" icon_state = "storage" ambience = AMBIENCE_RUINS + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/derelict/hallway/primary name = "\improper Derelict Primary Hallway" @@ -2162,6 +2183,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/constructionsite name = "\improper Construction Site" icon_state = "storage" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/constructionsite/storage name = "\improper Construction Site Storage Area" @@ -2347,6 +2369,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/wreck ambience = AMBIENCE_RUINS + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/wreck/ai name = "\improper AI Chamber" @@ -2423,6 +2446,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Strange Location" icon_state = "away" ambience = AMBIENCE_FOREBODING + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/awaymission/example name = "\improper Strange Station" diff --git a/code/game/area/asteroid_areas.dm b/code/game/area/asteroid_areas.dm index e5f22a77d7..85f3bffd2f 100644 --- a/code/game/area/asteroid_areas.dm +++ b/code/game/area/asteroid_areas.dm @@ -3,6 +3,7 @@ /area/mine icon_state = "mining" sound_env = ASTEROID + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/mine/explored name = "Mine" @@ -27,18 +28,22 @@ /area/outpost/mining_north name = "North Mining Outpost" icon_state = "outpost_mine_north" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/outpost/mining_west name = "West Mining Outpost" icon_state = "outpost_mine_west" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/outpost/abandoned name = "Abandoned Outpost" icon_state = "dark" + flags = AREA_FLAG_IS_NOT_PERSISTENT // Main mining outpost /area/outpost/mining_main icon_state = "outpost_mine_main" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/outpost/mining_main/airlock name = "Mining Outpost Airlock" @@ -90,6 +95,7 @@ // Engineering Outpost /area/outpost/engineering icon_state = "outpost_engine" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/outpost/engineering/hallway name = "Engineering Outpost Hallway" @@ -163,6 +169,7 @@ // Research Outpost /area/outpost/research icon_state = "outpost_research" + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/outpost/research/hallway name = "Research Outpost Hallway" diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 56244b75f8..baead3b720 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -470,7 +470,7 @@ announce.autosay("[to_despawn.real_name], [to_despawn.mind.role_alt_title], [on_store_message]", "[on_store_name]", announce_channel, using_map.get_map_levels(z, TRUE, om_range = DEFAULT_OVERMAP_RANGE)) //visible_message("\The [initial(name)] hums and hisses as it moves [to_despawn.real_name] into storage.", 3) - visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2].", 3) + visible_message("\The [initial(name)] [on_store_visible_message_1] [to_despawn.real_name] [on_store_visible_message_2]", 3) //This should guarantee that ghosts don't spawn. to_despawn.ckey = null diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 0aaa6a5c00..105266c86a 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -165,6 +165,8 @@ var/datum/action/innate/mecha/mech_switch_damtype/switch_damtype_action = new var/datum/action/innate/mecha/mech_toggle_phasing/phasing_action = new + var/weapons_only_cycle = FALSE //So combat mechs don't switch to their equipment at times. + diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 0d2034d790..33307c77d3 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -185,12 +185,15 @@ var/list/available_equipment = list() available_equipment = chassis.equipment + if(chassis.weapons_only_cycle) + available_equipment = chassis.weapon_equipment + if(available_equipment.len == 0) chassis.occupant_message("No equipment available.") return if(!chassis.selected) chassis.selected = available_equipment[1] - chassis.occupant_message("You select [chassis.selected]") + chassis.occupant_message("You select [chassis.selected]") send_byjax(chassis.occupant,"exosuit.browser","eq_list",chassis.get_equipment_list()) button_icon_state = "mech_cycle_equip_on" button.UpdateIcon() @@ -419,3 +422,17 @@ return +/obj/mecha/verb/toggle_weapons_only_cycle() + set category = "Exosuit Interface" + set name = "Toggle weapons only cycling" + set src = usr.loc + set popup_menu = 0 + set_weapons_only_cycle() + +/obj/mecha/proc/set_weapons_only_cycle() + if(usr!=src.occupant) + return + weapons_only_cycle = !weapons_only_cycle + src.occupant_message("En":"#f00\">Dis"]abled weapons only cycling.") + return + diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index ce0f117e5a..ee02464c1e 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -20,6 +20,8 @@ var/global/list/image/splatter_cache=list() var/synthblood = 0 var/list/datum/disease2/disease/virus2 = list() var/amount = 5 + generic_filth = TRUE + persistent = FALSE /obj/effect/decal/cleanable/blood/reveal_blood() if(!fluorescent) diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index 1f49fc9f66..bdc5c9237a 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -5,6 +5,8 @@ icon_state = "gib1" basecolor = SYNTH_BLOOD_COLOUR random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7") + generic_filth = FALSE + persistent = FALSE /obj/effect/decal/cleanable/blood/gibs/robot/update_icon() color = "#FFFFFF" @@ -39,6 +41,8 @@ /obj/effect/decal/cleanable/blood/oil basecolor = SYNTH_BLOOD_COLOUR + generic_filth = FALSE + persistent = FALSE /obj/effect/decal/cleanable/blood/oil/dry() return diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index f7965e092d..179b996df9 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -1,7 +1,22 @@ /obj/effect/decal/cleanable plane = DIRTY_PLANE + var/persistent = FALSE + var/generic_filth = FALSE + var/age = 0 var/list/random_icon_states = list() +/obj/effect/decal/cleanable/Initialize(var/ml, var/_age) + if(!isnull(_age)) + age = _age + if(random_icon_states && length(src.random_icon_states) > 0) + src.icon_state = pick(src.random_icon_states) + SSpersistence.track_value(src, /datum/persistent/filth) + . = ..() + +/obj/effect/decal/cleanable/Destroy() + SSpersistence.forget_value(src, /datum/persistent/filth) + . = ..() + /obj/effect/decal/cleanable/clean_blood(var/ignore = 0) if(!ignore) qdel(src) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index d6f42bee8f..09cee5bb4c 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -10,7 +10,7 @@ origin_tech = list(TECH_ILLEGAL = 4, TECH_MAGNET = 4) var/can_use = 1 var/obj/effect/dummy/chameleon/active_dummy = null - var/saved_item = /obj/item/weapon/cigbutt + var/saved_item = /obj/item/trash/cigbutt var/saved_icon = 'icons/obj/clothing/masks.dmi' var/saved_icon_state = "cigbutt" var/saved_overlays diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index b72a73f34e..0759b43028 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -7,6 +7,20 @@ w_class = ITEMSIZE_SMALL desc = "This is rubbish." drop_sound = 'sound/items/drop/wrapper.ogg' + var/age = 0 + +/obj/item/trash/New(var/newloc, var/_age) + ..(newloc) + if(!isnull(_age)) + age = _age + +/obj/item/trash/Initialize() + SSpersistence.track_value(src, /datum/persistent/filth/trash) + . = ..() + +/obj/item/trash/Destroy() + SSpersistence.forget_value(src, /datum/persistent/filth/trash) + . = ..() /obj/item/trash/raisins name = "\improper 4no raisins" diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 46f9a34f4d..1109e7028e 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -150,7 +150,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/smokable/examine(mob/user) . = ..() - + if(!is_pipe) var/smoke_percent = round((smoketime / max_smoketime) * 100) switch(smoke_percent) @@ -283,7 +283,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM w_class = ITEMSIZE_TINY slot_flags = SLOT_EARS | SLOT_MASK attack_verb = list("burnt", "singed") - type_butt = /obj/item/weapon/cigbutt + type_butt = /obj/item/trash/cigbutt chem_volume = 15 max_smoketime = 300 smoketime = 300 @@ -347,7 +347,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM name = "premium cigar" desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!" icon_state = "cigar2" - type_butt = /obj/item/weapon/cigbutt/cigarbutt + type_butt = /obj/item/trash/cigbutt/cigarbutt throw_speed = 0.5 item_state = "cigar" max_smoketime = 1500 @@ -375,7 +375,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM chem_volume = 30 nicotine_amt = 10 -/obj/item/weapon/cigbutt +/obj/item/trash/cigbutt name = "cigarette butt" desc = "A manky old cigarette butt." icon = 'icons/obj/clothing/masks.dmi' @@ -385,12 +385,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM slot_flags = SLOT_EARS throwforce = 1 -/obj/item/weapon/cigbutt/Initialize() +/obj/item/trash/cigbutt/Initialize() . = ..() randpixel_xy() transform = turn(transform,rand(0,360)) -/obj/item/weapon/cigbutt/cigarbutt +/obj/item/trash/cigbutt/cigarbutt name = "cigar butt" desc = "A manky old cigar butt." icon_state = "cigarbutt" diff --git a/code/game/objects/items/weapons/material/ashtray.dm b/code/game/objects/items/weapons/material/ashtray.dm index 5cd017f005..95e558b36a 100644 --- a/code/game/objects/items/weapons/material/ashtray.dm +++ b/code/game/objects/items/weapons/material/ashtray.dm @@ -46,7 +46,7 @@ var/global/list/ashtray_cache = list() /obj/item/weapon/material/ashtray/attackby(obj/item/weapon/W as obj, mob/user as mob) if (health <= 0) return - if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/smokable/cigarette) || istype(W, /obj/item/weapon/flame/match)) + if (istype(W,/obj/item/trash/cigbutt) || istype(W,/obj/item/clothing/mask/smokable/cigarette) || istype(W, /obj/item/weapon/flame/match)) if (contents.len >= max_butts) to_chat(user, "\The [src] is full.") return diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 4f9e5667c4..7b00d3e395 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -209,7 +209,7 @@ throwforce = 2 slot_flags = SLOT_BELT storage_slots = 6 - can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter, /obj/item/weapon/cigbutt) + can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter, /obj/item/trash/cigbutt) icon_type = "cigarette" starts_with = list(/obj/item/clothing/mask/smokable/cigarette = 6) var/brand = "\improper Trans-Stellar Duty-free" @@ -317,7 +317,7 @@ throwforce = 2 slot_flags = SLOT_BELT storage_slots = 7 - can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/weapon/cigbutt/cigarbutt) + can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/trash/cigbutt/cigarbutt) icon_type = "cigar" starts_with = list(/obj/item/clothing/mask/smokable/cigarette/cigar = 7) diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm index 62153d440b..90b62ed07b 100644 --- a/code/game/objects/items/weapons/tape.dm +++ b/code/game/objects/items/weapons/tape.dm @@ -126,7 +126,7 @@ return 1 /obj/item/weapon/tape_roll/proc/stick(var/obj/item/weapon/W, mob/user) - if(!istype(W, /obj/item/weapon/paper)) + if(!istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/paper/sticky) || !user.unEquip(W)) return user.drop_from_inventory(W) var/obj/item/weapon/ducttape/tape = new(get_turf(src)) diff --git a/code/game/objects/random/_random.dm b/code/game/objects/random/_random.dm index 8b616c83f5..67f82ea155 100644 --- a/code/game/objects/random/_random.dm +++ b/code/game/objects/random/_random.dm @@ -48,7 +48,6 @@ var/list/random_useful_ if(prob(70)) // Misc. junk if(!random_junk_) random_junk_ = subtypesof(/obj/item/trash) - random_junk_ += typesof(/obj/item/weapon/cigbutt) random_junk_ += /obj/effect/decal/cleanable/spiderling_remains random_junk_ += /obj/effect/decal/remains/mouse random_junk_ += /obj/effect/decal/remains/robot diff --git a/code/game/objects/random/mapping.dm b/code/game/objects/random/mapping.dm index bc6d29a5a5..230b4ff3d2 100644 --- a/code/game/objects/random/mapping.dm +++ b/code/game/objects/random/mapping.dm @@ -34,6 +34,36 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/remains/robot) +/obj/random/crate //Random 'standard' crates for variety in maintenance spawns. + name = "random crate" + desc = "This is a random crate" + icon = 'icons/obj/closets/bases/crate.dmi' + icon_state = "base" + +/obj/random/crate/item_to_spawn() //General crates, excludes some more high-grade and medical brands + return pick (/obj/structure/closet/crate/plastic, + /obj/structure/closet/crate/aether, + /obj/structure/closet/crate/centauri, + /obj/structure/closet/crate/einstein, + /obj/structure/closet/crate/focalpoint, + /obj/structure/closet/crate/gilthari, + /obj/structure/closet/crate/grayson, + /obj/structure/closet/crate/nanotrasen, + /obj/structure/closet/crate/nanothreads, + /obj/structure/closet/crate/oculum, + /obj/structure/closet/crate/ward, + /obj/structure/closet/crate/xion, + /obj/structure/closet/crate/zenghu, + /obj/structure/closet/crate/allico, + /obj/structure/closet/crate/carp, + /obj/structure/closet/crate/galaksi, + /obj/structure/closet/crate/thinktronic, + /obj/structure/closet/crate/ummarcar, + /obj/structure/closet/crate/unathi, + /obj/structure/closet/crate/hydroponics, + /obj/structure/closet/crate/engineering, + /obj/structure/closet/crate) + /obj/random/obstruction //Large objects to block things off in maintenance name = "random obstruction" desc = "This is a random obstruction." diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 1e5f4345a0..0c8223a5bc 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -530,8 +530,8 @@ /obj/item/device/assembly/mousetrap/armed, /obj/effect/decal/cleanable/spiderling_remains, /obj/effect/decal/cleanable/ash, - /obj/item/weapon/cigbutt, - /obj/item/weapon/cigbutt/cigarbutt, + /obj/item/trash/cigbutt, + /obj/item/trash/cigbutt/cigarbutt, /obj/effect/decal/remains/mouse) /obj/random/janusmodule diff --git a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm index c158ea0b83..b90a7961e2 100644 --- a/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm +++ b/code/game/objects/structures/crates_lockers/_closets_appearance_definitions.dm @@ -761,8 +761,210 @@ "lid_stripes" = COLOR_NT_RED ) +// Freezers + /decl/closet_appearance/crate/freezer + color = COLOR_OFF_WHITE + +/decl/closet_appearance/crate/freezer/centauri color = COLOR_BABY_BLUE + extra_decals = list( + "centauri" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/freezer/nanotrasen + color = COLOR_BABY_BLUE + extra_decals = list( + "nano" = COLOR_OFF_WHITE + ) + +// Corporate Branding + +/decl/closet_appearance/crate/aether + color = COLOR_YELLOW_GRAY + decals = list( + "crate_stripes" = COLOR_BLUE_LIGHT, + "aether" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/allico + color = COLOR_LIGHT_VIOLET + decals = list( + "crate_stripe" = COLOR_AMBER + ) + +/decl/closet_appearance/crate/carp + color = COLOR_PURPLE + decals = list( + "toptext" = COLOR_OFF_WHITE, + "crate_reticle" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/centauri + color = COLOR_BABY_BLUE + decals = list( + "crate_stripe" = COLOR_LUMINOL + ) + extra_decals = list( + "centauri" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/cybersolutions + color = COLOR_ALUMINIUM + extra_decals = list( + "hazard" = COLOR_DARK_GOLD, + "toptext" = COLOR_DARK_GOLD + ) + +/decl/closet_appearance/crate/einstein + color = COLOR_DARK_BLUE_GRAY + extra_decals = list( + "crate_stripe_left" = COLOR_BEIGE, + "crate_stripe_right" = COLOR_BEIGE, + "einstein" = COLOR_OFF_WHITE, + "hazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/focalpoint + color = COLOR_GOLD + extra_decals = list( + "crate_stripe_left" = COLOR_NAVY_BLUE, + "crate_stripe_right" = COLOR_NAVY_BLUE, + "focal" = COLOR_OFF_WHITE, + "hazard" = COLOR_NAVY_BLUE + ) + +/decl/closet_appearance/crate/galaksi + color = COLOR_OFF_WHITE + decals = list( + "lid_stripes" = COLOR_HULL, + "galaksi" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/gilthari + color = COLOR_GRAY20 + extra_decals = list( + "crate_stripe_left" = COLOR_GOLD, + "crate_stripe_right" = COLOR_GOLD, + "gilthari" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/grayson + color = COLOR_STEEL + extra_decals = list( + "crate_stripe_left" = COLOR_MAROON, + "crate_stripe_right" = COLOR_MAROON, + "grayson" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/heph + color = COLOR_GRAY20 + extra_decals = list( + "crate_stripe_left" = COLOR_NT_RED, + "crate_stripe_right" = COLOR_NT_RED, + "heph" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/morpheus + color = COLOR_ALUMINIUM + extra_decals = list( + "hazard" = COLOR_GUNMETAL, + "toptext" = COLOR_GUNMETAL + ) + +/decl/closet_appearance/crate/nanotrasen + color = COLOR_NT_RED + extra_decals = list( + "crate_stripe_left" = COLOR_OFF_WHITE, + "crate_stripe_right" = COLOR_OFF_WHITE, + "nano" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/nanotrasenclothing + color = COLOR_NT_RED + extra_decals = list( + "crate_stripe_left" = COLOR_SEDONA, + "crate_stripe_right" = COLOR_SEDONA, + "nano" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/nanotrasenmedical + color = COLOR_OFF_WHITE + extra_decals = list( + "crate_stripe" = COLOR_NT_RED, + "nano" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/oculum + color = COLOR_SURGERY_BLUE + decals = list( + "crate_stripe_left" = COLOR_OFF_WHITE, + "crate_stripe_right" = COLOR_OFF_WHITE, + "oculum" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/saare + color = COLOR_ALUMINIUM + extra_decals = list( + "hazard" = COLOR_RED, + "xion" = COLOR_GRAY40 + ) + +/decl/closet_appearance/crate/thinktronic + color = COLOR_PALE_PURPLE_GRAY + decals = list( + "toptext" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/ummarcar + color = COLOR_BEIGE + decals = list( + "crate_stripes" = COLOR_OFF_WHITE, + "toptext" = COLOR_GRAY20 + ) + +/decl/closet_appearance/crate/unathiimport + color = COLOR_SILVER + decals = list( + "crate_stripe" = COLOR_RED, + "crate_reticle" = COLOR_RED_GRAY + ) + +/decl/closet_appearance/crate/veymed + color = COLOR_OFF_WHITE + decals = list( + "crate_stripe" = COLOR_PALE_BTL_GREEN + ) + extra_decals = list( + "lid_stripes" = COLOR_RED, + "crate_cross" = COLOR_GREEN + ) + +/decl/closet_appearance/crate/ward + color = COLOR_OFF_WHITE + extra_decals = list( + "crate_stripe_left" = COLOR_COMMAND_BLUE, + "crate_stripe_right" = COLOR_COMMAND_BLUE, + "hazard" = COLOR_OFF_WHITE, + "wt" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/xion + color = COLOR_ORANGE + extra_decals = list( + "crate_stripes" = COLOR_OFF_WHITE, + "xion" = COLOR_OFF_WHITE, + "hazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/zenghu + color = COLOR_OFF_WHITE + extra_decals = list( + "crate_stripes" = COLOR_RED, + "zenghu" = COLOR_OFF_WHITE + ) + +// Secure Crates /decl/closet_appearance/crate/secure can_lock = TRUE @@ -775,7 +977,8 @@ extra_decals = list( "crate_stripe_left" = COLOR_OFF_WHITE, "crate_stripe_right" = COLOR_OFF_WHITE, - "toxin" = COLOR_OFF_WHITE + "toxin" = COLOR_OFF_WHITE, + "nano" = COLOR_OFF_WHITE ) /decl/closet_appearance/crate/secure/weapon @@ -789,16 +992,61 @@ "hazard" = COLOR_OFF_WHITE ) -/decl/closet_appearance/crate/secure/heph - color = COLOR_GRAY20 +// Secure corporate branding + +/decl/closet_appearance/crate/secure/aether + color = COLOR_YELLOW_GRAY decals = list( "crate_bracing" ) extra_decals = list( - "crate_stripe_left" = COLOR_NT_RED, - "crate_stripe_right" = COLOR_NT_RED, - "hazard" = COLOR_OFF_WHITE, - "heph" = COLOR_OFF_WHITE + "crate_stripes" = COLOR_BLUE_LIGHT, + "aether" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/bishop + color = COLOR_OFF_WHITE + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_SKY_BLUE, + "crate_stripe_right" = COLOR_SKY_BLUE, + "bishop" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/cybersolutions + color = COLOR_ALUMINIUM + decals = list( + "crate_bracing" + ) + extra_decals = list( + "hazard" = COLOR_DARK_GOLD, + "toptext" = COLOR_DARK_GOLD + ) + +/decl/closet_appearance/crate/secure/einstein + color = COLOR_DARK_BLUE_GRAY + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_BEIGE, + "crate_stripe_right" = COLOR_BEIGE, + "einstein" = COLOR_OFF_WHITE, + "hazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/focalpoint + color = COLOR_GOLD + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_NAVY_BLUE, + "crate_stripe_right" = COLOR_NAVY_BLUE, + "focal" = COLOR_OFF_WHITE, + "hazard" = COLOR_NAVY_BLUE ) /decl/closet_appearance/crate/secure/gilthari @@ -813,16 +1061,15 @@ "gilthari" = COLOR_OFF_WHITE ) -/decl/closet_appearance/crate/secure/ward - color = COLOR_OFF_WHITE +/decl/closet_appearance/crate/secure/grayson + color = COLOR_STEEL decals = list( "crate_bracing" ) extra_decals = list( - "crate_stripe_left" = COLOR_COMMAND_BLUE, - "crate_stripe_right" = COLOR_COMMAND_BLUE, - "hazard" = COLOR_OFF_WHITE, - "wt" = COLOR_OFF_WHITE + "crate_stripe_left" = COLOR_MAROON, + "crate_stripe_right" = COLOR_MAROON, + "grayson" = COLOR_OFF_WHITE ) /decl/closet_appearance/crate/secure/hedberg @@ -837,6 +1084,18 @@ "hedberg" = COLOR_OFF_WHITE ) +/decl/closet_appearance/crate/secure/heph + color = COLOR_GRAY20 + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_NT_RED, + "crate_stripe_right" = COLOR_NT_RED, + "hazard" = COLOR_OFF_WHITE, + "heph" = COLOR_OFF_WHITE + ) + /decl/closet_appearance/crate/secure/lawson color = COLOR_SAN_MARINO_BLUE decals = list( @@ -849,6 +1108,103 @@ "lawson" = COLOR_OFF_WHITE ) +/decl/closet_appearance/crate/secure/morpheus + color = COLOR_ALUMINIUM + decals = list( + "crate_bracing" + ) + extra_decals = list( + "hazard" = COLOR_GUNMETAL, + "toptext" = COLOR_GUNMETAL + ) + +/decl/closet_appearance/crate/secure/nanotrasen + color = COLOR_NT_RED + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_OFF_WHITE, + "crate_stripe_right" = COLOR_OFF_WHITE, + "nano" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/nanotrasenmedical + color = COLOR_OFF_WHITE + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe" = COLOR_NT_RED, + "nano" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/saare + color = COLOR_ALUMINIUM + decals = list( + "crate_bracing" + ) + extra_decals = list( + "hazard" = COLOR_RED, + "xion" = COLOR_GRAY40 + ) + +/decl/closet_appearance/crate/secure/solgov + color = COLOR_SAN_MARINO_BLUE + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_OFF_WHITE, + "crate_stripes" = COLOR_OFF_WHITE, + "hazard" = COLOR_OFF_WHITE, + "scg" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/veymed + color = COLOR_OFF_WHITE + decals = list( + "crate_bracing", + "crate_stripe" = COLOR_PALE_BTL_GREEN + ) + extra_decals = list( + "lid_stripes" = COLOR_RED, + "crate_cross" = COLOR_GREEN + ) + +/decl/closet_appearance/crate/secure/ward + color = COLOR_OFF_WHITE + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripe_left" = COLOR_COMMAND_BLUE, + "crate_stripe_right" = COLOR_COMMAND_BLUE, + "hazard" = COLOR_OFF_WHITE, + "wt" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/xion + color = COLOR_ORANGE + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripes" = COLOR_OFF_WHITE, + "xion" = COLOR_OFF_WHITE, + "hazard" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/crate/secure/zenghu + color = COLOR_OFF_WHITE + decals = list( + "crate_bracing" + ) + extra_decals = list( + "crate_stripes" = COLOR_RED, + "zenghu" = COLOR_OFF_WHITE + ) + /decl/closet_appearance/crate/secure/hydroponics extra_decals = list( "crate_stripe_left" = COLOR_GREEN_GRAY, @@ -869,6 +1225,7 @@ extra_decals = null /decl/closet_appearance/large_crate/critter + color = COLOR_BEIGE decals = list( "airholes" ) @@ -882,6 +1239,42 @@ "text" = COLOR_GREEN_GRAY ) +/decl/closet_appearance/large_crate/aether + color = COLOR_YELLOW_GRAY + decals = list( + "crate_bracing" + ) + extra_decals = list( + "text" = COLOR_BLUE_LIGHT + ) + +/decl/closet_appearance/large_crate/einstein + color = COLOR_DARK_BLUE_GRAY + decals = list( + "crate_bracing" + ) + extra_decals = list( + "text" = COLOR_BEIGE + ) + +/decl/closet_appearance/large_crate/nanotrasen + color = COLOR_NT_RED + decals = list( + "crate_bracing" + ) + extra_decals = list( + "text" = COLOR_OFF_WHITE + ) + +/decl/closet_appearance/large_crate/xion + color = COLOR_ORANGE + decals = list( + "crate_bracing" + ) + extra_decals = list( + "text" = COLOR_OFF_WHITE + ) + /decl/closet_appearance/large_crate/secure can_lock = TRUE @@ -895,6 +1288,46 @@ "text_upper" = COLOR_OFF_WHITE ) +/decl/closet_appearance/large_crate/secure/aether + color = COLOR_YELLOW_GRAY + decals = list( + "crate_bracing" + ) + extra_decals = list( + "marking" = COLOR_OFF_WHITE, + "text_upper" = COLOR_BLUE_LIGHT + ) + +/decl/closet_appearance/large_crate/secure/einstein + color = COLOR_DARK_BLUE_GRAY + decals = list( + "crate_bracing" + ) + extra_decals = list( + "marking" = COLOR_OFF_WHITE, + "text_upper" = COLOR_BEIGE + ) + +/decl/closet_appearance/large_crate/secure/heph + color = COLOR_GRAY20 + decals = list( + "crate_bracing" + ) + extra_decals = list( + "marking" = COLOR_NT_RED, + "text_upper" = COLOR_NT_RED + ) + +/decl/closet_appearance/large_crate/secure/xion + color = COLOR_ORANGE + decals = list( + "crate_bracing" + ) + extra_decals = list( + "marking" = COLOR_OFF_WHITE, + "text_upper" = COLOR_OFF_WHITE + ) + // Cabinets. /decl/closet_appearance/cabinet base_icon = 'icons/obj/closets/bases/cabinet.dmi' diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index bd81b8ab76..6223061ed8 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/closets/bases/crate.dmi' closet_appearance = /decl/closet_appearance/crate climbable = 1 + dir = 4 //Spawn facing 'forward' by default. var/points_per_crate = 5 var/rigged = 0 @@ -65,6 +66,26 @@ update_icon() return 1 +/obj/structure/closet/crate/verb/rotate_clockwise() + set name = "Rotate Crate Clockwise" + set category = "Object" + set src in oview(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.set_dir(turn(src.dir, 270)) + +/obj/structure/closet/crate/verb/rotate_counterclockwise() + set category = "Object" + set name = "Rotate Crate Counterclockwise" + set src in view(1) + + if (usr.stat || usr.restrained() || anchored) + return + + src.set_dir(turn(src.dir, 90)) + /obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob) if(opened) if(isrobot(user)) @@ -274,6 +295,14 @@ var/target_temp = T0C - 40 var/cooling_power = 40 +/obj/structure/closet/crate/freezer/centauri + desc = "A freezer stamped with the logo of Centauri Provisions." + closet_appearance = /decl/closet_appearance/crate/freezer/centauri + +/obj/structure/closet/crate/freezer/nanotrasen + desc = "A freezer stamped with the logo of NanoTrasen." + closet_appearance = /decl/closet_appearance/crate/freezer/nanotrasen + /obj/structure/closet/crate/freezer/return_air() var/datum/gas_mixture/gas = (..()) if(!gas) return null @@ -303,6 +332,11 @@ organ.preserved = 0 ..() +/obj/structure/closet/crate/weapon + name = "weapons crate" + desc = "A barely secured weapons crate." + closet_appearance = /decl/closet_appearance/crate/secure/weapon + /obj/structure/closet/crate/freezer/rations //Fpr use in the escape shuttle name = "emergency rations" desc = "A crate of emergency rations." @@ -310,14 +344,12 @@ starts_with = list( /obj/random/mre = 6) - /obj/structure/closet/crate/bin name = "large bin" desc = "A large bin." closet_appearance = null icon = 'icons/obj/closets/largebin.dmi' - /obj/structure/closet/crate/radiation name = "radioactive gear crate" desc = "A crate with a radiation sign on it." @@ -327,27 +359,145 @@ /obj/item/clothing/suit/radiation = 4, /obj/item/clothing/head/radiation = 4) +//TSCs + +/obj/structure/closet/crate/aether + desc = "A crate painted in the colours of Aether Atmospherics and Recycling." + closet_appearance = /decl/closet_appearance/crate/aether + +/obj/structure/closet/crate/centauri + desc = "A crate decorated with the logo of Centauri Provisions." + closet_appearance = /decl/closet_appearance/crate/centauri + +/obj/structure/closet/crate/einstein + desc = "A crate labelled with an Einstein Engines sticker." + closet_appearance = /decl/closet_appearance/crate/einstein + +/obj/structure/closet/crate/focalpoint + desc = "A crate marked with the decal of Focal Point Energistics." + closet_appearance = /decl/closet_appearance/crate/focalpoint + +/obj/structure/closet/crate/gilthari + desc = "A crate embossed with the logo of Gilthari Exports." + closet_appearance = /decl/closet_appearance/crate/gilthari + +/obj/structure/closet/crate/grayson + desc = "A bare metal crate spraypainted with Grayson Manufactories decals." + closet_appearance = /decl/closet_appearance/crate/grayson + +/obj/structure/closet/crate/heph + desc = "A sturdy crate marked with the logo of Hephaestus Industries." + closet_appearance = /decl/closet_appearance/crate/heph + +/obj/structure/closet/crate/morpheus + desc = "A crate crudely imprinted with 'MORPHEUS CYBERKINETICS'." + closet_appearance = /decl/closet_appearance/crate/morpheus + +/obj/structure/closet/crate/nanotrasen + desc = "A crate emblazoned with the standard NanoTrasen livery." + closet_appearance = /decl/closet_appearance/crate/nanotrasen + +/obj/structure/closet/crate/nanothreads + desc = "A crate emblazoned with the NanoThreads Garments livery, a subsidary of the NanoTrasen Corporation." + closet_appearance = /decl/closet_appearance/crate/nanotrasenclothing + +/obj/structure/closet/crate/nanocare + desc = "A crate emblazoned with the NanoCare Medical livery, a subsidary of the NanoTrasen Corporation." + closet_appearance = /decl/closet_appearance/crate/nanotrasenmedical + +/obj/structure/closet/crate/oculum + desc = "A crate minimally decorated with the logo of media giant Oculum Broadcast." + closet_appearance = /decl/closet_appearance/crate/oculum + +/obj/structure/closet/crate/veymed + desc = "A sterile crate extensively detailed in Veymed colours." + closet_appearance = /decl/closet_appearance/crate/veymed + +/obj/structure/closet/crate/ward + desc = "A crate decaled with the logo of Ward-Takahashi." + closet_appearance = /decl/closet_appearance/crate/ward + +/obj/structure/closet/crate/xion + desc = "A crate painted in Xion Manufacturing Group orange." + closet_appearance = /decl/closet_appearance/crate/xion + +/obj/structure/closet/crate/zenghu + desc = "A sterile crate marked with the logo of Zeng-Hu Pharmaceuticals." + closet_appearance = /decl/closet_appearance/crate/zenghu + +// Brands/subsidiaries + +/obj/structure/closet/crate/allico + desc = "A crate painted in the distinctive cheerful colours of AlliCo. Ltd." + closet_appearance = /decl/closet_appearance/crate/allico + +/obj/structure/closet/crate/carp + desc = "A crate painted with the garish livery of Consolidated Agricultural Resources Plc." + closet_appearance = /decl/closet_appearance/crate/carp + +/obj/structure/closet/crate/hedberg + name = "weapons crate" + desc = "A weapons crate stamped with the logo of Hedberg-Hammarstrom and the lock conspicuously absent." + closet_appearance = /decl/closet_appearance/crate/secure/hedberg + +/obj/structure/closet/crate/galaksi + desc = "A crate printed with the markings of Ward-Takahashi's Galaksi Appliance branding." + closet_appearance = /decl/closet_appearance/crate/galaksi + +/obj/structure/closet/crate/thinktronic + desc = "A crate printed with the markings of Thinktronic Systems." + closet_appearance = /decl/closet_appearance/crate/thinktronic + +/obj/structure/closet/crate/ummarcar + desc = "A flimsy crate marked labelled 'UmMarcar Office Supply'." + closet_appearance = /decl/closet_appearance/crate/ummarcar + +/obj/structure/closet/crate/unathi + name = "import crate" + desc = "A crate painted with the markings of Moghes Imported Sissalik Jerky." + closet_appearance = /decl/closet_appearance/crate/unathiimport + + +// Secure Crates /obj/structure/closet/crate/secure/weapon name = "weapons crate" desc = "A secure weapons crate." closet_appearance = /decl/closet_appearance/crate/secure/weapon +/obj/structure/closet/crate/secure/aether + desc = "A secure crate painted in the colours of Aether Atmospherics and Recycling." + closet_appearance = /decl/closet_appearance/crate/secure/aether + +/obj/structure/closet/crate/secure/bishop + desc = "A secure crate finely decorated with the emblem of Bishop Cybernetics." + closet_appearance = /decl/closet_appearance/crate/secure/bishop + +/obj/structure/closet/crate/secure/cybersolutions + desc = "An unadorned secure metal crate labelled 'Cyber Solutions'." + closet_appearance = /decl/closet_appearance/crate/secure/cybersolutions + +/obj/structure/closet/crate/secure/einstein + desc = "A secure crate labelled with an Einstein Engines sticker." + closet_appearance = /decl/closet_appearance/crate/secure/einstein + +/obj/structure/closet/crate/secure/focalpoint + desc = "A secure crate marked with the decal of Focal Point Energistics." + closet_appearance = /decl/closet_appearance/crate/secure/focalpoint + +/obj/structure/closet/crate/secure/gilthari + desc = "A secure crate embossed with the logo of Gilthari Exports." + closet_appearance = /decl/closet_appearance/crate/secure/gilthari + +/obj/structure/closet/crate/secure/grayson + desc = "A secure bare metal crate spraypainted with Grayson Manufactories decals." + closet_appearance = /decl/closet_appearance/crate/secure/grayson + /obj/structure/closet/crate/secure/hedberg name = "weapons crate" desc = "A secure weapons crate stamped with the logo of Hedberg-Hammarstrom." closet_appearance = /decl/closet_appearance/crate/secure/hedberg -/obj/structure/closet/crate/secure/gilthari - name = "weapons crate" - desc = "A secure weapons crate embossed with the logo of Gilthari Exports." - closet_appearance = /decl/closet_appearance/crate/secure/gilthari - -/obj/structure/closet/crate/secure/ward - name = "weapons crate" - desc = "A secure weapons crate decaled with the logo of Ward-Takahashi." - closet_appearance = /decl/closet_appearance/crate/secure/ward - /obj/structure/closet/crate/secure/heph name = "weapons crate" desc = "A secure weapons crate marked with the logo of Hephaestus Industries." @@ -358,9 +508,47 @@ desc = "A secure weapons crate marked with the logo of Lawson Arms." closet_appearance = /decl/closet_appearance/crate/secure/lawson +/obj/structure/closet/crate/secure/morpheus + desc = "A secure crate crudely imprinted with 'MORPHEUS CYBERKINETICS'." + closet_appearance = /decl/closet_appearance/crate/secure/morpheus + +/obj/structure/closet/crate/secure/nanotrasen + desc = "A secure crate emblazoned with the standard NanoTrasen livery." + closet_appearance = /decl/closet_appearance/crate/secure/nanotrasen + +/obj/structure/closet/crate/secure/nanocare + desc = "A secure crate emblazoned with the NanoCare Medical livery, a subsidary of the NanoTrasen Corporation." + closet_appearance = /decl/closet_appearance/crate/secure/nanotrasenmedical + +/obj/structure/closet/crate/secure/scg + name = "weapons crate" + desc = "A secure crate in the official colours of the Solar Confederate Government." + closet_appearance = /decl/closet_appearance/crate/secure/solgov + +/obj/structure/closet/crate/secure/saare + name = "weapons crate" + desc = "A secure weapons crate plainly stamped with the logo of Stealth Assault Enterprises." + closet_appearance = /decl/closet_appearance/crate/secure/saare + +/obj/structure/closet/crate/secure/veymed + desc = "A secure sterile crate extensively detailed in Veymed colours." + closet_appearance = /decl/closet_appearance/crate/secure/veymed + +/obj/structure/closet/crate/secure/ward + desc = "A secure crate decaled with the logo of Ward-Takahashi." + closet_appearance = /decl/closet_appearance/crate/secure/ward + +/obj/structure/closet/crate/secure/xion + desc = "A secure crate painted in Xion Manufacturing Group orange." + closet_appearance = /decl/closet_appearance/crate/secure/xion + +/obj/structure/closet/crate/secure/zenghu + desc = "A secure sterile crate marked with the logo of Zeng-Hu Pharmaceuticals." + closet_appearance = /decl/closet_appearance/crate/secure/zenghu + /obj/structure/closet/crate/secure/phoron name = "phoron crate" - desc = "A secure phoron crate." + desc = "A secure phoron crate painted in standard NanoTrasen livery." closet_appearance = /decl/closet_appearance/crate/secure/hazard /obj/structure/closet/crate/secure/gear @@ -368,27 +556,24 @@ desc = "A secure gear crate." closet_appearance = /decl/closet_appearance/crate/secure/weapon - /obj/structure/closet/crate/secure/hydrosec name = "secure hydroponics crate" desc = "A crate with a lock on it, painted in the scheme of the station's botanists." closet_appearance = /decl/closet_appearance/crate/secure/hydroponics - /obj/structure/closet/crate/secure/engineering desc = "A crate with a lock on it, painted in the scheme of the station's engineers." name = "secure engineering crate" - /obj/structure/closet/crate/secure/science name = "secure science crate" desc = "A crate with a lock on it, painted in the scheme of the station's scientists." - /obj/structure/closet/crate/secure/bin name = "secure bin" desc = "A secure bin." +// Large crates /obj/structure/closet/crate/large name = "large crate" @@ -414,6 +599,30 @@ break return +/obj/structure/closet/crate/large/critter + name = "animal crate" + desc = "A hefty crate for hauling animals." + closet_appearance = /decl/closet_appearance/large_crate/critter + +/obj/structure/closet/crate/large/aether + name = "large atmospherics crate" + desc = "A hefty metal crate, painted in Aether Atmospherics and Recycling colours." + closet_appearance = /decl/closet_appearance/large_crate/aether + +/obj/structure/closet/crate/large/einstein + name = "large crate" + desc = "A hefty metal crate, painted in Einstein Engines colours." + closet_appearance = /decl/closet_appearance/large_crate/einstein + +/obj/structure/closet/crate/large/nanotrasen + name = "large crate" + desc = "A hefty metal crate, painted in standard NanoTrasen livery." + closet_appearance = /decl/closet_appearance/large_crate/nanotrasen + +/obj/structure/closet/crate/large/xion + name = "large crate" + desc = "A hefty metal crate, painted in Xion Manufacturing Group orange." + closet_appearance = /decl/closet_appearance/large_crate/xion /obj/structure/closet/crate/secure/large name = "large crate" @@ -441,10 +650,30 @@ return -//fluff variant /obj/structure/closet/crate/secure/large/reinforced desc = "A hefty, reinforced metal crate with an electronic locking system." +/obj/structure/closet/crate/secure/large/aether + name = "secure atmospherics crate" + desc = "A hefty metal crate with an electronic locking system, painted in Aether Atmospherics and Recycling colours." + closet_appearance = /decl/closet_appearance/large_crate/secure/aether + +/obj/structure/closet/crate/secure/large/einstein + desc = "A hefty metal crate with an electronic locking system, painted in Einstein Engines colours." + closet_appearance = /decl/closet_appearance/large_crate/secure/einstein + +/obj/structure/closet/crate/large/secure/heph + desc = "A hefty metal crate with an electronic locking system, marked with Hephaestus Industries colours." + closet_appearance = /decl/closet_appearance/large_crate/secure/heph + +/obj/structure/closet/crate/secure/large/nanotrasen + desc = "A hefty metal crate with an electronic locking system, painted in standard NanoTrasen livery." + closet_appearance = /decl/closet_appearance/large_crate/secure/hazard + +/obj/structure/closet/crate/large/secure/xion + desc = "A hefty metal crate with an electronic locking system, painted in Xion Manufacturing Group orange." + closet_appearance = /decl/closet_appearance/large_crate/secure/xion + /obj/structure/closet/crate/engineering name = "engineering crate" diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index e9af3ce4b2..c9909656f4 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -44,8 +44,8 @@ /obj/structure/largecrate/hoverpod name = "\improper Hoverpod assembly crate" - desc = "It comes in a box for the fabricator's sake. Where does the wood come from? ... And why is it lighter?" - icon_state = "mulecrate" + desc = "You aren't sure how this crate is so light, but the Wulf Aeronautics logo might be a hint." + icon_state = "vehiclecrate" /obj/structure/largecrate/hoverpod/attackby(obj/item/weapon/W as obj, mob/user as mob) if(W.is_crowbar()) @@ -60,7 +60,7 @@ /obj/structure/largecrate/vehicle name = "vehicle crate" - desc = "It comes in a box for the consumer's sake. ..How is this lighter?" + desc = "Wulf Aeronautics says it comes in a box for the consumer's sake... How is this so light?" icon_state = "vehiclecrate" /obj/structure/largecrate/vehicle/Initialize() @@ -74,17 +74,22 @@ /obj/structure/largecrate/vehicle/quadbike name = "\improper ATV crate" + desc = "A hefty wooden crate proudly displaying the logo of Ward-Takahashi's automotive division." starts_with = list(/obj/structure/vehiclecage/quadbike) /obj/structure/largecrate/vehicle/quadtrailer name = "\improper ATV trailer crate" + desc = "A hefty wooden crate proudly displaying the logo of Ward-Takahashi's automotive division." starts_with = list(/obj/structure/vehiclecage/quadtrailer) /obj/structure/largecrate/animal - icon_state = "mulecrate" + icon_state = "crittercrate" + desc = "A hefty wooden crate with air holes. It is marked with the logo of NanoTrasen Pastures and the slogan, '90% less cloning defects* than competing brands**, or your money back***!'" /obj/structure/largecrate/animal/mulebot name = "Mulebot crate" + desc = "A hefty wooden crate labelled 'Proud Product of the Xion Manufacturing Group'" + icon_state = "mulecrate" starts_with = list(/mob/living/bot/mulebot) /obj/structure/largecrate/animal/corgi diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm deleted file mode 100644 index 629bc1c41e..0000000000 --- a/code/game/objects/structures/noticeboard.dm +++ /dev/null @@ -1,98 +0,0 @@ -/obj/structure/noticeboard - name = "notice board" - desc = "A board for pinning important notices upon." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "nboard00" - density = 0 - anchored = 1 - var/notices = 0 - -/obj/structure/noticeboard/New(var/loc, var/dir, var/building = 0) - ..() - - if(building) - if(loc) - src.loc = loc - - pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32) - pixel_y = (dir & 3)? (dir ==1 ? -27 : 27) : 0 - update_icon() - return - -/obj/structure/noticeboard/Initialize() - for(var/obj/item/I in loc) - if(notices > 4) break - if(istype(I, /obj/item/weapon/paper)) - I.loc = src - notices++ - icon_state = "nboard0[notices]" - . = ..() - -//attaching papers!! -/obj/structure/noticeboard/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob) - if(istype(O, /obj/item/weapon/paper)) - if(notices < 5) - O.add_fingerprint(user) - add_fingerprint(user) - user.drop_from_inventory(O) - O.loc = src - notices++ - icon_state = "nboard0[notices]" //update sprite - to_chat(user, "You pin the paper to the noticeboard.") - else - to_chat(user, "You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached.") - if(O.is_wrench()) - to_chat(user, "You start to unwrench the noticeboard.") - playsound(src, O.usesound, 50, 1) - if(do_after(user, 15 * O.toolspeed)) - to_chat(user, "You unwrench the noticeboard.") - new /obj/item/frame/noticeboard( src.loc ) - qdel(src) - return - -/obj/structure/noticeboard/attack_hand(var/mob/user) - user.examinate(src) - -// Since Topic() never seems to interact with usr on more than a superficial -// level, it should be fine to let anyone mess with the board other than ghosts. -/obj/structure/noticeboard/examine(var/mob/user) - . = ..() - if(Adjacent(user)) - var/dat = "Noticeboard
" - for(var/obj/item/weapon/paper/P in src) - dat += "[P.name] Write Remove
" - user << browse("Notices[dat]","window=noticeboard") - onclose(user, "noticeboard") - -/obj/structure/noticeboard/Topic(href, href_list) - ..() - usr.set_machine(src) - if(href_list["remove"]) - if((usr.stat || usr.restrained())) //For when a player is handcuffed while they have the notice window open - return - var/obj/item/P = locate(href_list["remove"]) - if(P && P.loc == src) - P.loc = get_turf(src) //dump paper on the floor because you're a clumsy fuck - P.add_fingerprint(usr) - add_fingerprint(usr) - notices-- - icon_state = "nboard0[notices]" - if(href_list["write"]) - if((usr.stat || usr.restrained())) //For when a player is handcuffed while they have the notice window open - return - var/obj/item/P = locate(href_list["write"]) - if((P && P.loc == src)) //ifthe paper's on the board - var/mob/living/M = usr - if(istype(M)) - var/obj/item/weapon/pen/E = M.get_type_in_hands(/obj/item/weapon/pen) - if(E) - add_fingerprint(M) - P.attackby(E, usr) - else - to_chat(M, "You'll need something to write with!") - if(href_list["read"]) - var/obj/item/weapon/paper/P = locate(href_list["read"]) - if((P && P.loc == src)) - usr << browse("[P.name][P.info]", "window=[P.name]") - onclose(usr, "[P.name]") - return diff --git a/code/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index 9eca71ed9c..7cb7b9b201 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -43,6 +43,7 @@ var/list/flooring_types var/descriptor = "tiles" var/flags var/can_paint + var/can_engrave = FALSE var/list/footstep_sounds = list() // key=species name, value = list of sounds, // For instance, footstep_sounds = list("key" = list(sound.ogg)) var/is_plating = FALSE @@ -320,6 +321,7 @@ var/list/flooring_types flags = TURF_REMOVE_CROWBAR | TURF_CAN_BREAK | TURF_CAN_BURN build_type = /obj/item/stack/tile/floor can_paint = 1 + can_engrave = TRUE footstep_sounds = list("human" = list( 'sound/effects/footstep/floor1.ogg', 'sound/effects/footstep/floor2.ogg', diff --git a/code/game/turfs/initialization/maintenance.dm b/code/game/turfs/initialization/maintenance.dm index 7347ec47db..9f1ed6dc86 100644 --- a/code/game/turfs/initialization/maintenance.dm +++ b/code/game/turfs/initialization/maintenance.dm @@ -28,7 +28,7 @@ var/global/list/random_junk return /obj/effect/decal/cleanable/generic if(!random_junk) random_junk = subtypesof(/obj/item/trash) - random_junk += typesof(/obj/item/weapon/cigbutt) + random_junk += typesof(/obj/item/trash/cigbutt) random_junk += /obj/effect/decal/cleanable/spiderling_remains random_junk += /obj/effect/decal/remains/mouse random_junk += /obj/effect/decal/remains/robot diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index e18cf118bd..7deb4c8958 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -73,6 +73,9 @@ /turf/simulated/floor/proc/make_plating(var/place_product, var/defer_icon_update) cut_overlays() + for(var/obj/effect/decal/writing/W in src) + qdel(W) + name = base_name desc = base_desc icon = base_icon @@ -103,6 +106,9 @@ for(var/obj/O in src) O.hide(O.hides_under_flooring() && floored_over) +/turf/simulated/floor/can_engrave() + return (!flooring || flooring.can_engrave) + /turf/simulated/floor/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_FLOORWALL) diff --git a/code/game/turfs/simulated/floor_attackby.dm b/code/game/turfs/simulated/floor_attackby.dm index df13c2162c..9aa7ecce6d 100644 --- a/code/game/turfs/simulated/floor_attackby.dm +++ b/code/game/turfs/simulated/floor_attackby.dm @@ -1,4 +1,4 @@ -/turf/simulated/floor/attackby(obj/item/C as obj, mob/user as mob) +/turf/simulated/floor/attackby(var/obj/item/C, var/mob/user) if(!C || !user) return 0 @@ -9,6 +9,9 @@ attack_tile(C, L) // Be on help intent if you want to decon something. return + if(!(C.is_screwdriver() && flooring && (flooring.flags & TURF_REMOVE_SCREWDRIVER)) && try_graffiti(user, C)) + return + if(istype(C, /obj/item/stack/tile/roofing)) var/expended_tile = FALSE // To track the case. If a ceiling is built in a multiz zlevel, it also necessarily roofs it against weather var/turf/T = GetAbove(src) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 1ef11c40de..20267696f3 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -135,9 +135,13 @@ return success_smash(user) return fail_smash(user) -/turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob) +/turf/simulated/wall/attackby(var/obj/item/weapon/W, var/mob/user) user.setClickCooldown(user.get_attack_speed(W)) + + if(!construction_stage && try_graffiti(user, W)) + return + if (!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index add0b3b11d..5ee76fb98c 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -302,6 +302,9 @@ for(var/obj/machinery/door/airlock/phoron/D in range(3,src)) D.ignite(temperature/4) +/turf/simulated/wall/can_engrave() + return (material && material.hardness >= 10 && material.hardness <= 100) + /turf/simulated/wall/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) if(material.integrity > 1000) // Don't decon things like elevatorium. return FALSE diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index e93380d791..626ee68c71 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -42,7 +42,7 @@ //Lighting related luminosity = !(dynamic_lighting) has_opaque_atom |= (opacity) - + //Pathfinding related if(movement_cost && pathweight == 1) // This updates pathweight automatically. pathweight = movement_cost @@ -285,6 +285,47 @@ turf/attackby(obj/item/weapon/W as obj, mob/user as mob) /turf/AllowDrop() return TRUE +/turf/proc/can_engrave() + return FALSE + +/turf/proc/try_graffiti(var/mob/vandal, var/obj/item/tool) + + if(!tool.sharp || !can_engrave()) + return FALSE + + if(jobban_isbanned(vandal, "Graffiti")) + to_chat(vandal, SPAN_WARNING("You are banned from leaving persistent information across rounds.")) + return + + var/too_much_graffiti = 0 + for(var/obj/effect/decal/writing/W in src) + too_much_graffiti++ + if(too_much_graffiti >= 5) + to_chat(vandal, "There's too much graffiti here to add more.") + return FALSE + + var/message = sanitize(input("Enter a message to engrave.", "Graffiti") as null|text, trim = TRUE) + if(!message) + return FALSE + + if(!vandal || vandal.incapacitated() || !Adjacent(vandal) || !tool.loc == vandal) + return FALSE + + vandal.visible_message("\The [vandal] begins carving something into \the [src].") + + if(!do_after(vandal, max(20, length(message)), src)) + return FALSE + + vandal.visible_message("\The [vandal] carves some graffiti into \the [src].") + var/obj/effect/decal/writing/graffiti = new(src) + graffiti.message = message + graffiti.author = vandal.ckey + + if(lowertext(message) == "elbereth") + to_chat(vandal, "You feel much safer.") + + return TRUE + // Returns false if stepping into a tile would cause harm (e.g. open space while unable to fly, water tile while a slime, lava, etc). /turf/proc/is_safe_to_enter(mob/living/L) if(LAZYLEN(dangerous_objects)) diff --git a/code/game/world.dm b/code/game/world.dm index e7d0a8bd31..abc115abb5 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -94,6 +94,7 @@ var/world_topic_spam_protect_time = world.timeofday s["version"] = game_version s["mode"] = master_mode s["respawn"] = config.abandon_allowed + s["persistance"] = config.persistence_enabled s["enter"] = config.enter_allowed s["vote"] = config.allow_vote_mode s["ai"] = config.allow_ai @@ -168,12 +169,12 @@ var/world_topic_spam_protect_time = world.timeofday if(!positions["misc"]) positions["misc"] = list() positions["misc"][name] = rank - + for(var/datum/data/record/t in data_core.hidden_general) var/name = t.fields["name"] var/rank = t.fields["rank"] var/real_rank = make_list_rank(t.fields["real_rank"]) - + var/datum/job/J = SSjob.get_job(real_rank) if(J?.offmap_spawn) if(!positions["off"]) @@ -393,8 +394,8 @@ var/world_topic_spam_protect_time = world.timeofday else to_world("Rebooting world immediately due to host request") else - processScheduler.stop() Master.Shutdown() //run SS shutdowns + processScheduler.stop() for(var/client/C in GLOB.clients) if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite C << link("byond://[config.server]") @@ -511,6 +512,8 @@ var/world_topic_spam_protect_time = world.timeofday features += config.abandon_allowed ? "respawn" : "no respawn" + features += config.persistence_enabled ? "persistence enabled" : "persistence disabled" + if (config && config.allow_vote_mode) features += "vote" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 66dd05289b..7c2b26a5fc 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -930,6 +930,20 @@ proc/admin_notice(var/message, var/rights) world.update_status() feedback_add_details("admin_verb","TR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/datum/admins/proc/togglepersistence() + set category = "Server" + set desc="Whether persistent data will be saved from now on." + set name="Toggle Persistent Data" + config.persistence_enabled = !(config.persistence_enabled) + if(config.persistence_enabled) + to_world("Persistence is now enabled..") + else + to_world("Persistence is no longer enabled.") + message_admins("[key_name_admin(usr)] toggled persistence to [config.persistence_enabled ? "On" : "Off"].", 1) + log_admin("[key_name(usr)] toggled persistence to [config.persistence_enabled ? "On" : "Off"].") + world.update_status() + feedback_add_details("admin_verb","TPD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /datum/admins/proc/toggle_aliens() set category = "Server" set desc="Toggle alien mobs" diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm index 04092ddd3f..3fa8903f72 100644 --- a/code/modules/admin/admin_verb_lists.dm +++ b/code/modules/admin/admin_verb_lists.dm @@ -163,6 +163,7 @@ var/list/admin_verbs_server = list( /datum/admins/proc/restart, /datum/admins/proc/delay, /datum/admins/proc/toggleaban, + /datum/admins/proc/togglepersistence, /client/proc/cmd_mod_say, /client/proc/toggle_log_hrefs, /datum/admins/proc/immreboot, @@ -351,6 +352,7 @@ var/list/admin_verbs_mod = list( /client/proc/allow_character_respawn, // Allows a ghost to respawn , /datum/admins/proc/sendFax, /client/proc/getserverlog, //allows us to fetch server logs (diary) for other days, + /datum/admins/proc/view_persistent_data, /datum/admins/proc/view_txt_log, //shows the server log (diary) for today, /datum/admins/proc/view_atk_log //shows the server combat-log, doesn't do anything presently, ) diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 1a3781b0c5..0bfa4e516a 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -26,14 +26,18 @@ var/jobban_keylist[0] //to store the keys & ranks if(config.usewhitelist && !check_whitelist(M)) return "Whitelisted Job" - for (var/s in jobban_keylist) - if( findtext(s,"[M.ckey] - [rank]") == 1 ) - var/startpos = findtext(s, "## ")+3 - if(startpos && startpos You Cannot issue temporary job-bans!") + to_chat(usr, " You cannot issue temporary job-bans!") return if(config.ban_legacy_system) to_chat(usr, "Your server is using the legacy banning system, which does not support temporary job bans. Consider upgrading. Aborting ban.") diff --git a/code/modules/client/preference_setup/loadout/loadout_mask.dm b/code/modules/client/preference_setup/loadout/loadout_mask.dm index 5ae0b96e2b..716cdb4268 100644 --- a/code/modules/client/preference_setup/loadout/loadout_mask.dm +++ b/code/modules/client/preference_setup/loadout/loadout_mask.dm @@ -20,4 +20,8 @@ /datum/gear/mask/sterile display_name = "sterile mask" path = /obj/item/clothing/mask/surgical - cost = 2 \ No newline at end of file + cost = 2 + +/datum/gear/mask/veil + display_name = "black veil" + path = /obj/item/clothing/mask/veil \ 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 a40bc0998f..72365c6211 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -552,4 +552,28 @@ /datum/gear/uniform/haltertop display_name = "halter top" - path = /obj/item/clothing/under/haltertop \ No newline at end of file + path = /obj/item/clothing/under/haltertop + +/datum/gear/uniform/revealingdress + display_name = "revealing dress" + path = /obj/item/clothing/under/dress/revealingdress + +/datum/gear/uniform/rippedpunk + display_name = "ripped punk jeans" + path = /obj/item/clothing/under/rippedpunk + +/datum/gear/uniform/gothic + display_name = "gothic dress" + path = /obj/item/clothing/under/dress/gothic + +/datum/gear/uniform/formalred + display_name = "formal red dress" + path = /obj/item/clothing/under/dress/formalred + +/datum/gear/uniform/pentagram + display_name = "pentagram dress" + path = /obj/item/clothing/under/dress/pentagram + +/datum/gear/uniform/yellowswoop + display_name = "yellow swooped dress" + path = /obj/item/clothing/under/dress/yellowswoop \ No newline at end of file diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index eab03a3c2e..d972cf82cc 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -288,3 +288,10 @@ desc = "A fine black bandana with nanotech lining and a skull emblem. Can be worn on the head or face." icon_state = "bandskull" item_state_slots = list(slot_r_hand_str = "bandskull", slot_l_hand_str = "bandskull") + +/obj/item/clothing/mask/veil + name = "black veil" + desc = "A black veil, typically worn at funerals or by goths." + w_class = ITEMSIZE_TINY + body_parts_covered = FACE + icon_state = "veil" \ No newline at end of file diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 800ba8e3ec..1fcddc2b77 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -535,6 +535,37 @@ desc = "A red and white dress themed after some winter holidays. Tastefully festive!" icon_state = "festivedress" +/obj/item/clothing/under/dress/revealingdress + name = "revealing dress" + desc = "A very revealing black and blue dress. Is this work appropriate?" + icon_state = "revealingdress" + index = 1 + +/obj/item/clothing/under/dress/gothic + name = "gothic dress" + desc = "A black dress with a sheer mesh over it, tastefully old school goth." + icon_state = "gothic" + index = 1 + +/obj/item/clothing/under/dress/formalred + name = "formal red dress" + desc = "A very formal red dress, for those fancy galas." + icon_state = "formalred" + flags_inv = HIDESHOES + index = 1 + +/obj/item/clothing/under/dress/pentagram + name = "pentagram dress" + desc = "A black dress with straps over the chest in the shape of a pentagram." + icon_state = "pentagram" + index = 1 + +obj/item/clothing/under/dress/yellowswoop + name = "yellow swooped dress" + desc = "A yellow dress that swoops to the side." + icon_state = "yellowswoop" + index = 1 + /* * wedding stuff */ @@ -767,6 +798,12 @@ Uniforms and such desc = "Jean shorts and a black halter top. Perfect for casual Fridays!" icon_state = "haltertop" +/obj/item/clothing/under/rippedpunk + name = "ripped punk jeans" + desc = "Black ripped jeans and a fishnet top. How punk." + icon_state = "rippedpunk" + index = 1 + /* * swimsuit */ diff --git a/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm b/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm index 6467646f1b..f21c341057 100644 --- a/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm +++ b/code/modules/gamemaster/event2/events/everyone/electrical_fault.dm @@ -77,7 +77,7 @@ // This will actually protect it from further damage. if(prob(25)) A.energy_fail(rand(60, 120)) - log_debug("ELECTRICAL EVENT: Disabled \the [A]'s power for a temporary amount of time.") +// log_debug("ELECTRICAL EVENT: Disabled \the [A]'s power for a temporary amount of time.") playsound(A, 'sound/machines/defib_success.ogg', 50, 1) apcs_disabled++ return @@ -85,7 +85,7 @@ // Decent chance to overload lighting circuit. if(prob(30)) A.overload_lighting() - log_debug("ELECTRICAL EVENT: Overloaded \the [A]'s lighting.") +// log_debug("ELECTRICAL EVENT: Overloaded \the [A]'s lighting.") playsound(A, 'sound/effects/lightningshock.ogg', 50, 1) apcs_overloaded++ @@ -93,7 +93,7 @@ if(prob(5)) A.emagged = TRUE A.update_icon() - log_debug("ELECTRICAL EVENT: Emagged \the [A].") +// log_debug("ELECTRICAL EVENT: Emagged \the [A].") playsound(A, 'sound/machines/chime.ogg', 50, 1) apcs_emagged++ diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index be8e3b9944..1221c5f1fd 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -157,6 +157,7 @@ recipes += new/datum/stack_recipe("wooden bucket", /obj/item/weapon/reagent_containers/glass/bucket/wood, 2, time = 4, one_per_turf = 0, on_floor = 0, pass_stack_color = TRUE) recipes += new/datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5, pass_stack_color = TRUE) recipes += new/datum/stack_recipe("crude fishing rod", /obj/item/weapon/material/fishing_rod/built, 8, time = 10 SECONDS, pass_stack_color = TRUE) + recipes += new/datum/stack_recipe("noticeboard", /obj/structure/noticeboard, 1) /material/wood/log/generate_recipes() recipes = list() diff --git a/code/modules/metric/activity.dm b/code/modules/metric/activity.dm index 5bdc33f47a..c33c88adca 100644 --- a/code/modules/metric/activity.dm +++ b/code/modules/metric/activity.dm @@ -40,13 +40,13 @@ var/list/activity = list() for(var/department in departments) activity[department] = assess_department(department) - log_debug("Assessing department [department]. They have activity of [activity[department]].") +// log_debug("Assessing department [department]. They have activity of [activity[department]].") var/list/most_active_departments = list() // List of winners. var/highest_activity = null // Department who is leading in activity, if one exists. var/highest_number = 0 // Activity score needed to beat to be the most active department. for(var/i = 1, i <= cutoff_number, i++) - log_debug("Doing [i]\th round of counting.") +// log_debug("Doing [i]\th round of counting.") for(var/department in activity) if(department in department_blacklist) // Blacklisted? continue @@ -57,7 +57,7 @@ if(highest_activity) // Someone's a winner. most_active_departments.Add(highest_activity) // Add to the list of most active. activity.Remove(highest_activity) // Remove them from the other list so they don't win more than once. - log_debug("[highest_activity] has won the [i]\th round of activity counting.") +// log_debug("[highest_activity] has won the [i]\th round of activity counting.") highest_activity = null // Now reset for the next round. highest_number = 0 //todo: finish diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm index a67440e013..6114cc6b66 100644 --- a/code/modules/mob/living/bot/medbot.dm +++ b/code/modules/mob/living/bot/medbot.dm @@ -1,3 +1,13 @@ +// Medbot Info + +#define MEDBOT_PANIC_NONE 0 +#define MEDBOT_PANIC_LOW 15 +#define MEDBOT_PANIC_MED 35 +#define MEDBOT_PANIC_HIGH 55 +#define MEDBOT_PANIC_FUCK 70 +#define MEDBOT_PANIC_ENDING 90 +#define MEDBOT_PANIC_END 100 + /mob/living/bot/medbot name = "Medibot" desc = "A little medical robot. He looks somewhat underwhelmed." @@ -24,6 +34,15 @@ var/treatment_emag = "toxin" var/declare_treatment = 0 //When attempting to treat a patient, should it notify everyone wearing medhuds? + // Are we tipped over? + var/is_tipped = FALSE + //How panicked we are about being tipped over (why would you do this?) + var/tipped_status = MEDBOT_PANIC_NONE + //The name we got when we were tipped + var/tipper_name + //The last time we were tipped/righted and said a voice line, to avoid spam + var/last_tipping_action_voice = 0 + /mob/living/bot/medbot/mysterious name = "\improper Mysterious Medibot" desc = "International Medibot of mystery." @@ -34,6 +53,9 @@ treatment_tox = "anti_toxin" /mob/living/bot/medbot/handleIdle() + if(is_tipped) // Don't handle idle things if we're incapacitated! + return + if(vocal && prob(1)) var/message_options = list( "Radar, put a mask on!" = 'sound/voice/medbot/mradar.ogg', @@ -47,6 +69,9 @@ playsound(src, message_options[message], 50, 0) /mob/living/bot/medbot/handleAdjacentTarget() + if(is_tipped) // Don't handle targets if we're incapacitated! + return + UnarmedAttack(target) /mob/living/bot/medbot/handlePanic() // Speed modification based on alert level. @@ -76,6 +101,9 @@ return . /mob/living/bot/medbot/lookForTargets() + if(is_tipped) // Don't look for targets if we're incapacitated! + return + for(var/mob/living/carbon/human/H in view(7, src)) // Time to find a patient! if(confirmTarget(H)) target = H @@ -162,7 +190,28 @@ else icon_state = "medibot[on]" -/mob/living/bot/medbot/attack_hand(var/mob/user) +/mob/living/bot/medbot/attack_hand(mob/living/carbon/human/H) + if(H.a_intent == I_DISARM && !is_tipped) + H.visible_message("[H] begins tipping over [src].", "You begin tipping over [src]...") + + if(world.time > last_tipping_action_voice + 15 SECONDS) + last_tipping_action_voice = world.time // message for tipping happens when we start interacting, message for righting comes after finishing + var/list/messagevoice = list("Hey, wait..." = 'sound/voice/medbot/hey_wait.ogg',"Please don't..." = 'sound/voice/medbot/please_dont.ogg',"I trusted you..." = 'sound/voice/medbot/i_trusted_you.ogg', "Nooo..." = 'sound/voice/medbot/nooo.ogg', "Oh fuck-" = 'sound/voice/medbot/oh_fuck.ogg') + var/message = pick(messagevoice) + say(message) + playsound(src, messagevoice[message], 70, FALSE) + + if(do_after(H, 3 SECONDS, target=src)) + tip_over(H) + + else if(H.a_intent == I_HELP && is_tipped) + H.visible_message("[H] begins righting [src].", "You begin righting [src]...") + if(do_after(H, 3 SECONDS, target=src)) + set_right(H) + else + interact(H) + +/mob/living/bot/medbot/proc/interact(mob/user) var/dat dat += "Automatic Medical Unit v1.0

" dat += "Status: [on ? "On" : "Off"]
" @@ -301,6 +350,89 @@ qdel(src) return +/mob/living/bot/medbot/handleRegular() + . = ..() + + if(is_tipped) + handle_panic() + return + +/mob/living/bot/medbot/proc/tip_over(mob/user) + playsound(src, 'sound/machines/warning-buzzer.ogg', 50) + user.visible_message("[user] tips over [src]!", "You tip [src] over!") + is_tipped = TRUE + tipper_name = user.name + var/matrix/mat = transform + transform = mat.Turn(180) + +/mob/living/bot/medbot/proc/set_right(mob/user) + var/list/messagevoice + if(user) + user.visible_message("[user] sets [src] right-side up!", "You set [src] right-side up!") + if(user.name == tipper_name) + messagevoice = list("I forgive you." = 'sound/voice/medbot/forgive.ogg') + else + messagevoice = list("Thank you!" = 'sound/voice/medbot/thank_you.ogg', "You are a good person." = 'sound/voice/medbot/youre_good.ogg') + else + visible_message("[src] manages to [pick("writhe", "wriggle", "wiggle")] enough to right itself.") + messagevoice = list("Fuck you." = 'sound/voice/medbot/fuck_you.ogg', "Your behavior has been reported, have a nice day." = 'sound/voice/medbot/reported.ogg') + + tipper_name = null + if(world.time > last_tipping_action_voice + 15 SECONDS) + last_tipping_action_voice = world.time + var/message = pick(messagevoice) + say(message) + playsound(src, messagevoice[message], 70) + tipped_status = MEDBOT_PANIC_NONE + is_tipped = FALSE + transform = matrix() + +// if someone tipped us over, check whether we should ask for help or just right ourselves eventually +/mob/living/bot/medbot/proc/handle_panic() + tipped_status++ + var/list/messagevoice + switch(tipped_status) + if(MEDBOT_PANIC_LOW) + messagevoice = list("I require assistance." = 'sound/voice/medbot/i_require_asst.ogg') + if(MEDBOT_PANIC_MED) + messagevoice = list("Please put me back." = 'sound/voice/medbot/please_put_me_back.ogg') + if(MEDBOT_PANIC_HIGH) + messagevoice = list("Please, I am scared!" = 'sound/voice/medbot/please_im_scared.ogg') + if(MEDBOT_PANIC_FUCK) + messagevoice = list("I don't like this, I need help!" = 'sound/voice/medbot/dont_like.ogg', "This hurts, my pain is real!" = 'sound/voice/medbot/pain_is_real.ogg') + if(MEDBOT_PANIC_ENDING) + messagevoice = list("Is this the end?" = 'sound/voice/medbot/is_this_the_end.ogg', "Nooo!" = 'sound/voice/medbot/nooo.ogg') + if(MEDBOT_PANIC_END) + global_announcer.autosay("PSYCH ALERT: Crewmember [tipper_name] recorded displaying antisocial tendencies torturing bots in [get_area(src)]. Please schedule psych evaluation.", "[src]", "Medical") + set_right() // strong independent medbot + + // if(prob(tipped_status)) // Commented out pending introduction of jitter stuff from /tg/ + // do_jitter_animation(tipped_status * 0.1) + + if(messagevoice) + var/message = pick(messagevoice) + say(message) + playsound(src, messagevoice[message], 70) + else if(prob(tipped_status * 0.2)) + playsound(src, 'sound/machines/warning-buzzer.ogg', 30, extrarange=-2) + +/mob/living/bot/medbot/examine(mob/user) + . = ..() + if(tipped_status == MEDBOT_PANIC_NONE) + return + + switch(tipped_status) + if(MEDBOT_PANIC_NONE to MEDBOT_PANIC_LOW) + . += "It appears to be tipped over, and is quietly waiting for someone to set it right." + if(MEDBOT_PANIC_LOW to MEDBOT_PANIC_MED) + . += "It is tipped over and requesting help." + if(MEDBOT_PANIC_MED to MEDBOT_PANIC_HIGH) + . += "They are tipped over and appear visibly distressed." // now we humanize the medbot as a they, not an it + if(MEDBOT_PANIC_HIGH to MEDBOT_PANIC_FUCK) + . += "They are tipped over and visibly panicking!" + if(MEDBOT_PANIC_FUCK to INFINITY) + . += "They are freaking out from being tipped over!" + /mob/living/bot/medbot/confirmTarget(var/mob/living/carbon/human/H) if(!..()) return 0 @@ -430,3 +562,12 @@ S.name = created_name user.drop_from_inventory(src) qdel(src) + +// Undefine these. +#undef MEDBOT_PANIC_NONE +#undef MEDBOT_PANIC_LOW +#undef MEDBOT_PANIC_MED +#undef MEDBOT_PANIC_HIGH +#undef MEDBOT_PANIC_FUCK +#undef MEDBOT_PANIC_ENDING +#undef MEDBOT_PANIC_END diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 3950e55841..fe1c6ca632 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -48,6 +48,21 @@ update_hair() return 1 + +/mob/living/carbon/human/proc/change_hair_gradient(var/hair_gradient) + if(!hair_gradient) + return + + if(grad_style == hair_gradient) + return + + if(!(hair_gradient in GLOB.hair_gradients)) + return + + grad_style = hair_gradient + + update_hair() + return 1 /mob/living/carbon/human/proc/change_facial_hair(var/facial_hair_style) if(!facial_hair_style) @@ -104,6 +119,17 @@ update_hair() return 1 + +/mob/living/carbon/human/proc/change_grad_color(var/red, var/green, var/blue) + if(red == r_grad && green == g_grad && blue == b_grad) + return + + r_grad = red + g_grad = green + b_grad = blue + + update_hair() + return 1 /mob/living/carbon/human/proc/change_facial_hair_color(var/red, var/green, var/blue) if(red == r_facial && green == g_facial && blue == b_facial) diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm index 581055efb4..79d19b66db 100644 --- a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm +++ b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm @@ -88,6 +88,7 @@ var/list/wrapped_species_by_ref = list() var/list/valid_hairstyles = list() var/list/valid_facialhairstyles = list() + var/list/valid_gradstyles = GLOB.hair_gradients for(var/hairstyle in hair_styles_list) var/datum/sprite_accessory/S = hair_styles_list[hairstyle] if(gender == MALE && S.gender == FEMALE) @@ -112,6 +113,9 @@ var/list/wrapped_species_by_ref = list() if(valid_hairstyles.len) var/new_hair = input("Select a hairstyle.", "Shapeshifter Hair") as null|anything in valid_hairstyles change_hair(new_hair ? new_hair : "Bald") + if(valid_gradstyles.len) + var/new_hair = input("Select a hair gradient style.", "Shapeshifter Hair") as null|anything in valid_gradstyles + change_hair_gradient(new_hair ? new_hair : "None") if(valid_facialhairstyles.len) var/new_hair = input("Select a facial hair style.", "Shapeshifter Hair") as null|anything in valid_facialhairstyles change_facial_hair(new_hair ? new_hair : "Shaved") @@ -215,6 +219,10 @@ var/list/wrapped_species_by_ref = list() if(!new_hair) return shapeshifter_set_hair_color(new_hair) + var/new_grad = input("Please select a new hair gradient color.", "Hair Gradient Colour") as color + if(!new_grad) + return + shapeshifter_set_grad_color(new_grad) var/new_fhair = input("Please select a new facial hair color.", "Facial Hair Color") as color if(!new_fhair) return @@ -224,6 +232,10 @@ var/list/wrapped_species_by_ref = list() change_hair_color(hex2num(copytext(new_hair, 2, 4)), hex2num(copytext(new_hair, 4, 6)), hex2num(copytext(new_hair, 6, 8))) +/mob/living/carbon/human/proc/shapeshifter_set_grad_color(var/new_grad) + + change_grad_color(hex2num(copytext(new_grad, 2, 4)), hex2num(copytext(new_grad, 4, 6)), hex2num(copytext(new_grad, 6, 8))) + /mob/living/carbon/human/proc/shapeshifter_set_facial_color(var/new_fhair) change_facial_hair_color(hex2num(copytext(new_fhair, 2, 4)), hex2num(copytext(new_fhair, 4, 6)), hex2num(copytext(new_fhair, 6, 8))) 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 4347255fd8..3a11f3ae7c 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -466,7 +466,7 @@ for(var/obj/W in T) //Different classes of items give different commodities. - if(istype(W,/obj/item/weapon/cigbutt)) + if(istype(W,/obj/item/trash/cigbutt)) if(plastic) plastic.add_charge(500) else if(istype(W,/obj/effect/spider/spiderling)) diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index c8b623e517..96daaf9af7 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -52,6 +52,7 @@ module_state_3 = null inv3.icon_state = "inv3" updateicon() + hud_used.update_robot_modules_display() /mob/living/silicon/robot/proc/uneq_all() module_active = null diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm index 78d741b012..41a47b0e7e 100644 --- a/code/modules/mob/living/silicon/robot/robot_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_items.dm @@ -296,7 +296,7 @@ // Copied over from paper's rename verb // see code\modules\paperwork\paper.dm line 62 -/obj/item/weapon/pen/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj) +/obj/item/weapon/pen/robopen/proc/RenamePaper(mob/user, obj/item/weapon/paper/paper) if ( !user || !paper ) return var/n_name = sanitizeSafe(input(user, "What would you like to label the paper?", "Paper Labelling", null) as text, 32) @@ -306,6 +306,7 @@ //n_name = copytext(n_name, 1, 32) if(( get_dist(user,paper) <= 1 && user.stat == 0)) paper.name = "paper[(n_name ? text("- '[n_name]'") : null)]" + paper.last_modified_ckey = user.ckey add_fingerprint(user) return diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dmglass.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/phazon.dmglass.dm new file mode 100644 index 0000000000..e69de29bb2 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 8366ed94a7..c92ec998f8 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -32,6 +32,8 @@ var/list/offset_y[0] //usage by the photocopier var/rigged = 0 var/spam_flag = 0 + var/age = 0 + var/last_modified_ckey var/const/deffont = "Verdana" var/const/signfont = "Times New Roman" @@ -225,6 +227,15 @@ H.lip_style = null H.update_icons_body() +/obj/item/weapon/paper/proc/set_content(text,title) + if(title) + name = title + info = html_encode(text) + info = parsepencode(text) + update_icon() + update_space(info) + updateinfolinks() + /obj/item/weapon/paper/proc/addtofield(var/id, var/text, var/links = 0) var/locid = 0 var/laststart = 1 @@ -459,6 +470,8 @@ info += t // Oh, he wants to edit to the end of the file, let him. updateinfolinks() + last_modified_ckey = usr.ckey + update_space(t) usr << browse("[name][info_links][stamps]", "window=[name]") // Update the window diff --git a/code/modules/paperwork/paper_sticky.dm b/code/modules/paperwork/paper_sticky.dm new file mode 100644 index 0000000000..e2904aba37 --- /dev/null +++ b/code/modules/paperwork/paper_sticky.dm @@ -0,0 +1,137 @@ +/obj/item/sticky_pad + name = "sticky note pad" + desc = "A pad of densely packed sticky notes." + color = COLOR_YELLOW + icon = 'icons/obj/stickynotes.dmi' + icon_state = "pad_full" + item_state = "paper" + w_class = ITEMSIZE_SMALL + + var/papers = 50 + var/written_text + var/written_by + var/paper_type = /obj/item/weapon/paper/sticky + +/obj/item/sticky_pad/update_icon() + if(papers <= 15) + icon_state = "pad_empty" + else if(papers <= 50) + icon_state = "pad_used" + else + icon_state = "pad_full" + if(written_text) + icon_state = "[icon_state]_writing" + +/obj/item/sticky_pad/attackby(var/obj/item/weapon/thing, var/mob/user) + if(istype(thing, /obj/item/weapon/pen)) + + if(jobban_isbanned(user, "Graffiti")) + to_chat(user, SPAN_WARNING("You are banned from leaving persistent information across rounds.")) + return + + var/writing_space = MAX_MESSAGE_LEN - length(written_text) + if(writing_space <= 0) + to_chat(user, SPAN_WARNING("There is no room left on \the [src].")) + return + var/text = sanitizeSafe(input("What would you like to write?") as text, writing_space) + if(!text || thing.loc != user || (!Adjacent(user) && loc != user) || user.incapacitated()) + return + user.visible_message(SPAN_NOTICE("\The [user] jots a note down on \the [src].")) + written_by = user.ckey + if(written_text) + written_text = "[written_text] [text]" + else + written_text = text + update_icon() + return + ..() + +/obj/item/sticky_pad/examine(var/mob/user) + . = ..() + if(.) + to_chat(user, SPAN_NOTICE("It has [papers] sticky note\s left.")) + to_chat(user, SPAN_NOTICE("You can click it on grab intent to pick it up.")) + +/obj/item/sticky_pad/attack_hand(var/mob/user) + if(user.a_intent == I_GRAB) + ..() + else + var/obj/item/weapon/paper/paper = new paper_type(get_turf(src)) + paper.set_content(written_text, "sticky note") + paper.last_modified_ckey = written_by + paper.color = color + written_text = null + user.put_in_hands(paper) + to_chat(user, SPAN_NOTICE("You pull \the [paper] off \the [src].")) + papers-- + if(papers <= 0) + qdel(src) + else + update_icon() + +/obj/item/sticky_pad/random/Initialize() + . = ..() + color = pick(COLOR_YELLOW, COLOR_LIME, COLOR_CYAN, COLOR_ORANGE, COLOR_PINK) + +/obj/item/weapon/paper/sticky + name = "sticky note" + desc = "Note to self: buy more sticky notes." + icon = 'icons/obj/stickynotes.dmi' + color = COLOR_YELLOW + slot_flags = 0 + +/obj/item/weapon/paper/sticky/Initialize() + . = ..() + GLOB.moved_event.register(src, src, /obj/item/weapon/paper/sticky/proc/reset_persistence_tracking) + +/obj/item/weapon/paper/sticky/proc/reset_persistence_tracking() + SSpersistence.forget_value(src, /datum/persistent/paper/sticky) + pixel_x = 0 + pixel_y = 0 + +/obj/item/weapon/paper/sticky/Destroy() + reset_persistence_tracking() + GLOB.moved_event.unregister(src, src) + . = ..() + +/obj/item/weapon/paper/sticky/update_icon() + if(icon_state != "scrap") + icon_state = info ? "paper_words" : "paper" + +// Copied from duct tape. +/obj/item/weapon/paper/sticky/attack_hand() + . = ..() + if(!istype(loc, /turf)) + reset_persistence_tracking() + +/obj/item/weapon/paper/sticky/afterattack(var/A, var/mob/user, var/flag, var/params) + + if(!in_range(user, A) || istype(A, /obj/machinery/door) || icon_state == "scrap") + return + + var/turf/target_turf = get_turf(A) + var/turf/source_turf = get_turf(user) + + var/dir_offset = 0 + if(target_turf != source_turf) + dir_offset = get_dir(source_turf, target_turf) + if(!(dir_offset in GLOB.cardinal)) + to_chat(user, SPAN_WARNING("You cannot reach that from here.")) + return + + if(user.unEquip(src, source_turf)) + SSpersistence.track_value(src, /datum/persistent/paper/sticky) + if(params) + var/list/mouse_control = params2list(params) + if(mouse_control["icon-x"]) + pixel_x = text2num(mouse_control["icon-x"]) - 16 + if(dir_offset & EAST) + pixel_x += 32 + else if(dir_offset & WEST) + pixel_x -= 32 + if(mouse_control["icon-y"]) + pixel_y = text2num(mouse_control["icon-y"]) - 16 + if(dir_offset & NORTH) + pixel_y += 32 + else if(dir_offset & SOUTH) + pixel_y -= 32 \ No newline at end of file diff --git a/code/modules/persistence/datum/datum_filth.dm b/code/modules/persistence/datum/datum_filth.dm new file mode 100644 index 0000000000..f41fffcfb7 --- /dev/null +++ b/code/modules/persistence/datum/datum_filth.dm @@ -0,0 +1,35 @@ +/datum/persistent/filth + name = "filth" + tokens_per_line = 5 + entries_expire_at = 5 + +/datum/persistent/filth/LabelTokens(var/list/tokens) + var/list/labelled_tokens = ..() + labelled_tokens["path"] = text2path(tokens[LAZYLEN(labelled_tokens)+1]) + return labelled_tokens + +/datum/persistent/filth/IsValidEntry(var/atom/entry) + . = ..() && entry.invisibility == 0 + +/datum/persistent/filth/CheckTokenSanity(var/list/tokens) + return ..() && ispath(tokens["path"]) + +/datum/persistent/filth/CheckTurfContents(var/turf/T, var/list/tokens) + var/_path = tokens["path"] + return (locate(_path) in T) ? FALSE : TRUE + +/datum/persistent/filth/CreateEntryInstance(var/turf/creating, var/list/tokens) + var/_path = tokens["path"] + new _path(creating, tokens["age"]+1) + +/datum/persistent/filth/GetEntryAge(var/atom/entry) + var/obj/effect/decal/cleanable/filth = entry + return filth.age + +/datum/persistent/filth/proc/GetEntryPath(var/atom/entry) + var/obj/effect/decal/cleanable/filth = entry + return filth.generic_filth ? /obj/effect/decal/cleanable/filth : filth.type + +/datum/persistent/filth/CompileEntry(var/atom/entry) + . = ..() + LAZYADD(., "[GetEntryPath(entry)]") \ No newline at end of file diff --git a/code/modules/persistence/datum/datum_graffiti.dm b/code/modules/persistence/datum/datum_graffiti.dm new file mode 100644 index 0000000000..b70b7f9475 --- /dev/null +++ b/code/modules/persistence/datum/datum_graffiti.dm @@ -0,0 +1,51 @@ +/datum/persistent/graffiti + name = "graffiti" + tokens_per_line = 6 + entries_expire_at = 50 + has_admin_data = TRUE + +/datum/persistent/graffiti/LabelTokens(var/list/tokens) + var/list/labelled_tokens = ..() + var/entries = LAZYLEN(labelled_tokens) + labelled_tokens["author"] = tokens[entries+1] + labelled_tokens["message"] = tokens[entries+2] + return labelled_tokens + +/datum/persistent/graffiti/GetValidTurf(var/turf/T, var/list/tokens) + var/turf/checking_turf = ..() + if(istype(checking_turf) && checking_turf.can_engrave()) + return checking_turf + +/datum/persistent/graffiti/CheckTurfContents(var/turf/T, var/list/tokens) + var/too_much_graffiti = 0 + for(var/obj/effect/decal/writing/W in .) + too_much_graffiti++ + if(too_much_graffiti >= 5) + return FALSE + return TRUE + +/datum/persistent/graffiti/CreateEntryInstance(var/turf/creating, var/list/tokens) + new /obj/effect/decal/writing(creating, tokens["age"]+1, tokens["message"], tokens["author"]) + +/datum/persistent/graffiti/IsValidEntry(var/atom/entry) + . = ..() + if(.) + var/turf/T = entry.loc + . = T.can_engrave() + +/datum/persistent/graffiti/GetEntryAge(var/atom/entry) + var/obj/effect/decal/writing/save_graffiti = entry + return save_graffiti.graffiti_age + +/datum/persistent/graffiti/CompileEntry(var/atom/entry, var/write_file) + . = ..() + var/obj/effect/decal/writing/save_graffiti = entry + LAZYADD(., "[save_graffiti.author ? save_graffiti.author : "unknown"]") + LAZYADD(., "[save_graffiti.message]") + +/datum/persistent/graffiti/GetAdminDataStringFor(var/thing, var/can_modify, var/mob/user) + var/obj/effect/decal/writing/save_graffiti = thing + if(can_modify) + . = "[save_graffiti.message][save_graffiti.author]Destroy" + else + . = "[save_graffiti.message][save_graffiti.author]" \ No newline at end of file diff --git a/code/modules/persistence/datum/datum_paper.dm b/code/modules/persistence/datum/datum_paper.dm new file mode 100644 index 0000000000..e572faea01 --- /dev/null +++ b/code/modules/persistence/datum/datum_paper.dm @@ -0,0 +1,56 @@ +/datum/persistent/paper + name = "paper" + tokens_per_line = 7 + entries_expire_at = 50 + has_admin_data = TRUE + var/paper_type = /obj/item/weapon/paper + var/requires_noticeboard = TRUE + +/datum/persistent/paper/LabelTokens(var/list/tokens) + var/list/labelled_tokens = ..() + var/entries = LAZYLEN(labelled_tokens) + labelled_tokens["author"] = tokens[entries+1] + labelled_tokens["message"] = tokens[entries+2] + labelled_tokens["title"] = tokens[entries+3] + return labelled_tokens + +/datum/persistent/paper/CheckTurfContents(var/turf/T, var/list/tokens) + if(requires_noticeboard && !(locate(/obj/structure/noticeboard) in T)) + new /obj/structure/noticeboard(T) + . = ..() + +/datum/persistent/paper/CreateEntryInstance(var/turf/creating, var/list/tokens) + var/obj/structure/noticeboard/board = locate() in creating + if(requires_noticeboard && LAZYLEN(board.notices) >= board.max_notices) + return + var/obj/item/weapon/paper/paper = new paper_type(creating) + paper.set_content(tokens["message"], tokens["title"]) + paper.last_modified_ckey = tokens["author"] + if(requires_noticeboard) + board.add_paper(paper) + SSpersistence.track_value(paper, type) + return paper + +/datum/persistent/paper/GetEntryAge(var/atom/entry) + var/obj/item/weapon/paper/paper = entry + return paper.age + +/datum/persistent/paper/CompileEntry(var/atom/entry, var/write_file) + . = ..() + var/obj/item/weapon/paper/paper = entry + LAZYADD(., "[paper.last_modified_ckey ? paper.last_modified_ckey : "unknown"]") + LAZYADD(., "[paper.info]") + LAZYADD(., "[paper.name]") + +/datum/persistent/paper/GetAdminDataStringFor(var/thing, var/can_modify, var/mob/user) + var/obj/item/weapon/paper/paper = thing + if(can_modify) + . = "[paper.info][paper.name][paper.last_modified_ckey]Destroy" + else + . = "[paper.info][paper.name][paper.last_modified_ckey]" + +/datum/persistent/paper/RemoveValue(var/atom/value) + var/obj/structure/noticeboard/board = value.loc + if(istype(board)) + board.remove_paper(value) + qdel(value) \ No newline at end of file diff --git a/code/modules/persistence/datum/datum_paper_sticky.dm b/code/modules/persistence/datum/datum_paper_sticky.dm new file mode 100644 index 0000000000..1871eb4a03 --- /dev/null +++ b/code/modules/persistence/datum/datum_paper_sticky.dm @@ -0,0 +1,28 @@ +/datum/persistent/paper/sticky + name = "stickynotes" + paper_type = /obj/item/weapon/paper/sticky + requires_noticeboard = FALSE + tokens_per_line = 10 + +/datum/persistent/paper/sticky/LabelTokens(var/list/tokens) + var/list/labelled_tokens = ..() + var/entries = LAZYLEN(labelled_tokens) + labelled_tokens["offset_x"] = tokens[entries+1] + labelled_tokens["offset_y"] = tokens[entries+2] + labelled_tokens["color"] = tokens[entries+3] + return labelled_tokens + +/datum/persistent/paper/sticky/CreateEntryInstance(var/turf/creating, var/list/tokens) + var/atom/paper = ..() + if(paper) + paper.pixel_x = text2num(tokens["offset_x"]) + paper.pixel_y = text2num(tokens["offset_y"]) + paper.color = tokens["color"] + return paper + +/datum/persistent/paper/sticky/CompileEntry(var/atom/entry, var/write_file) + . = ..() + var/obj/item/weapon/paper/sticky/paper = entry + LAZYADD(., "[paper.pixel_x]") + LAZYADD(., "[paper.pixel_y]") + LAZYADD(., "[paper.color]") \ No newline at end of file diff --git a/code/modules/persistence/datum/datum_trash.dm b/code/modules/persistence/datum/datum_trash.dm new file mode 100644 index 0000000000..951e9858af --- /dev/null +++ b/code/modules/persistence/datum/datum_trash.dm @@ -0,0 +1,17 @@ +/datum/persistent/filth/trash + name = "trash" + +/datum/persistent/filth/trash/CheckTurfContents(var/turf/T, var/list/tokens) + var/too_much_trash = 0 + for(var/obj/item/trash/trash in T) + too_much_trash++ + if(too_much_trash >= 5) + return FALSE + return TRUE + +/datum/persistent/filth/trash/GetEntryAge(var/atom/entry) + var/obj/item/trash/trash = entry + return trash.age + +/datum/persistent/filth/trash/GetEntryPath(var/atom/entry) + return entry.type \ No newline at end of file diff --git a/code/modules/persistence/datum/persistence_datum.dm b/code/modules/persistence/datum/persistence_datum.dm new file mode 100644 index 0000000000..8a409404cd --- /dev/null +++ b/code/modules/persistence/datum/persistence_datum.dm @@ -0,0 +1,160 @@ +// This is a set of datums instantiated by SSpersistence. +// They basically just handle loading, processing and saving specific forms +// of persistent data like graffiti and round to round filth. + +/datum/persistent + var/name + var/filename + var/tokens_per_line + var/entries_expire_at + var/entries_decay_at + var/entry_decay_weight = 0.5 + var/file_entry_split_character = "\t" + var/file_entry_substitute_character = " " + var/file_line_split_character = "\n" + var/has_admin_data + +/datum/persistent/New() + SetFilename() + ..() + +/datum/persistent/proc/SetFilename() + if(name) + filename = "data/persistent/[lowertext(using_map.name)]-[lowertext(name)].txt" + if(!isnull(entries_decay_at) && !isnull(entries_expire_at)) + entries_decay_at = round(entries_expire_at * entries_decay_at) + +/datum/persistent/proc/LabelTokens(var/list/tokens) + var/list/labelled_tokens = list() + labelled_tokens["x"] = text2num(tokens[1]) + labelled_tokens["y"] = text2num(tokens[2]) + labelled_tokens["z"] = text2num(tokens[3]) + labelled_tokens["age"] = text2num(tokens[4]) + return labelled_tokens + +/datum/persistent/proc/GetValidTurf(var/turf/T, var/list/tokens) + if(T && CheckTurfContents(T, tokens)) + return T + +/datum/persistent/proc/CheckTurfContents(var/turf/T, var/list/tokens) + return TRUE + +/datum/persistent/proc/CheckTokenSanity(var/list/tokens) + return ( \ + !isnull(tokens["x"]) && \ + !isnull(tokens["y"]) && \ + !isnull(tokens["z"]) && \ + !isnull(tokens["age"]) && \ + tokens["age"] <= entries_expire_at \ + ) + +/datum/persistent/proc/CreateEntryInstance(var/turf/creating, var/list/tokens) + return + +/datum/persistent/proc/ProcessAndApplyTokens(var/list/tokens) + + // If it's old enough we start to trim down any textual information and scramble strings. + if(tokens["message"] && !isnull(entries_decay_at) && !isnull(entry_decay_weight)) + var/_n = tokens["age"] + var/_message = tokens["message"] + if(_n >= entries_decay_at) + var/decayed_message = "" + for(var/i = 1 to length(_message)) + var/char = copytext(_message, i, i + 1) + if(prob(round(_n * entry_decay_weight))) + if(prob(99)) + decayed_message += pick(".",",","-","'","\\","/","\"",":",";") + else + decayed_message += char + _message = decayed_message + if(length(_message)) + tokens["message"] = _message + else + return + + var/_z = tokens["z"] + if(_z in using_map.station_levels) + . = GetValidTurf(locate(tokens["x"], tokens["y"], _z), tokens) + if(.) + CreateEntryInstance(., tokens) + +/datum/persistent/proc/IsValidEntry(var/atom/entry) + if(!istype(entry)) + return FALSE + if(GetEntryAge(entry) >= entries_expire_at) + return FALSE + var/turf/T = get_turf(entry) + if(!T || !(T.z in using_map.station_levels) ) + return FALSE + var/area/A = get_area(T) + if(!A || (A.flags & AREA_FLAG_IS_NOT_PERSISTENT)) + return FALSE + return TRUE + +/datum/persistent/proc/GetEntryAge(var/atom/entry) + return 0 + +/datum/persistent/proc/CompileEntry(var/atom/entry) + var/turf/T = get_turf(entry) + . = list( + T.x, + T.y, + T.z, + GetEntryAge(entry) + ) + +/datum/persistent/proc/Initialize() + if(fexists(filename)) + for(var/entry_line in file2list(filename, file_line_split_character)) + if(!entry_line) + continue + var/list/tokens = splittext(entry_line, file_entry_split_character) + if(LAZYLEN(tokens) < tokens_per_line) + continue + tokens = LabelTokens(tokens) + if(!CheckTokenSanity(tokens)) + continue + ProcessAndApplyTokens(tokens) + +/datum/persistent/proc/Shutdown() + if(fexists(filename)) + fdel(filename) + var/write_file = file(filename) + for(var/thing in SSpersistence.tracking_values[type]) + if(IsValidEntry(thing)) + var/list/entry = CompileEntry(thing) + if(LAZYLEN(entry) == tokens_per_line) + for(var/i = 1 to LAZYLEN(entry)) + if(istext(entry[i])) + entry[i] = replacetext(entry[i], file_entry_split_character, file_entry_substitute_character) + to_file(write_file, jointext(entry, file_entry_split_character)) + +/datum/persistent/proc/RemoveValue(var/atom/value) + qdel(value) + +/datum/persistent/proc/GetAdminSummary(var/mob/user, var/can_modify) + . = list("[capitalize(name)]") + . += "
" + for(var/thing in SSpersistence.tracking_values[type]) + . += "[GetAdminDataStringFor(thing, can_modify, user)]" + . += "
" + + +/datum/persistent/proc/GetAdminDataStringFor(var/thing, var/can_modify, var/mob/user) + if(can_modify) + . = "[thing]Destroy" + else + . = "[thing]" + +/datum/persistent/Topic(var/href, var/href_list) + . = ..() + if(!.) + if(href_list["remove_entry"]) + var/datum/value = locate(href_list["remove_entry"]) + if(istype(value)) + RemoveValue(value) + . = TRUE + if(.) + var/mob/user = locate(href_list["caller"]) + if(user) + SSpersistence.show_info(user) \ No newline at end of file diff --git a/code/modules/persistence/filth.dm b/code/modules/persistence/filth.dm new file mode 100644 index 0000000000..2eea824f83 --- /dev/null +++ b/code/modules/persistence/filth.dm @@ -0,0 +1,12 @@ +/obj/effect/decal/cleanable/filth + name = "filth" + desc = "Disgusting. Someone from last shift didn't do their job properly." + icon = 'icons/effects/blood.dmi' + icon_state = "mfloor1" + random_icon_states = list("mfloor1", "mfloor2", "mfloor3", "mfloor4", "mfloor5", "mfloor6", "mfloor7") + color = "#464f33" + persistent = TRUE + +/obj/effect/decal/cleanable/filth/Initialize() + . = ..() + alpha = rand(180,220) \ No newline at end of file diff --git a/code/modules/persistence/graffiti.dm b/code/modules/persistence/graffiti.dm new file mode 100644 index 0000000000..d6a56b75f1 --- /dev/null +++ b/code/modules/persistence/graffiti.dm @@ -0,0 +1,64 @@ +/obj/effect/decal/writing + name = "hand graffiti" + icon_state = "writing1" + icon = 'icons/effects/writing.dmi' + desc = "It looks like someone has scratched something here." + plane = DIRTY_PLANE + gender = PLURAL + blend_mode = BLEND_MULTIPLY + color = "#000000" + alpha = 120 + + var/message + var/graffiti_age = 0 + var/author = "unknown" + +/obj/effect/decal/writing/New(var/newloc, var/_age, var/_message, var/_author) + ..(newloc) + if(!isnull(_age)) + graffiti_age = _age + message = _message + if(!isnull(author)) + author = _author + +/obj/effect/decal/writing/Initialize() + var/list/random_icon_states = icon_states(icon) + for(var/obj/effect/decal/writing/W in loc) + random_icon_states.Remove(W.icon_state) + if(random_icon_states.len) + icon_state = pick(random_icon_states) + SSpersistence.track_value(src, /datum/persistent/graffiti) + . = ..() + +/obj/effect/decal/writing/Destroy() + SSpersistence.forget_value(src, /datum/persistent/graffiti) + . = ..() + +/obj/effect/decal/writing/examine(mob/user) + . = ..() + to_chat(user, "It reads \"[message]\".") + +/obj/effect/decal/writing/attackby(var/obj/item/thing, var/mob/user) + if(is_hot(thing)) + var/obj/item/weapon/weldingtool/welder = thing + if(welder.isOn() && welder.remove_fuel(0,user) && do_after(user, 5, src) && !QDELETED(src)) + playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) + user.visible_message("\The [user] clears away some graffiti.") + qdel(src) + else if(thing.sharp) + + if(jobban_isbanned(user, "Graffiti")) + to_chat(user, SPAN_WARNING("You are banned from leaving persistent information across rounds.")) + return + + var/_message = sanitize(input("Enter an additional message to engrave.", "Graffiti") as null|text, trim = TRUE) + if(_message && loc && user && !user.incapacitated() && user.Adjacent(loc) && thing.loc == user) + user.visible_message("\The [user] begins carving something into \the [loc].") + if(do_after(user, max(20, length(_message)), src) && loc) + user.visible_message("\The [user] carves some graffiti into \the [loc].") + message = "[message] [_message]" + author = user.ckey + if(lowertext(message) == "elbereth") + to_chat(user, "You feel much safer.") + else + . = ..() \ No newline at end of file diff --git a/code/modules/persistence/noticeboard.dm b/code/modules/persistence/noticeboard.dm new file mode 100644 index 0000000000..ad8cfef590 --- /dev/null +++ b/code/modules/persistence/noticeboard.dm @@ -0,0 +1,221 @@ +/obj/structure/noticeboard + name = "notice board" + desc = "A board for pinning important notices upon." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "nboard00" + density = 0 + anchored = 1 + var/list/notices + var/base_icon_state = "nboard0" + var/const/max_notices = 5 + +/obj/structure/noticeboard/Initialize() + . = ..() + + // Grab any mapped notices. + notices = list() + for(var/obj/item/weapon/paper/note in get_turf(src)) + note.forceMove(src) + LAZYADD(notices, note) + if(LAZYLEN(notices) >= max_notices) + break + + // Automatically place noticeboards that aren't mapped to specific positions. + if(pixel_x == 0 && pixel_y == 0) + + var/turf/here = get_turf(src) + var/placing = 0 + for(var/checkdir in GLOB.cardinal) + var/turf/T = get_step(here, checkdir) + if(T.density) + placing = checkdir + break + for(var/thing in T) + var/atom/A = thing + if(A.simulated && !A.CanPass(src, T)) + placing = checkdir + break + + switch(placing) + if(NORTH) + pixel_x = 0 + pixel_y = 32 + if(SOUTH) + pixel_x = 0 + pixel_y = -32 + if(EAST) + pixel_x = 32 + pixel_y = 0 + if(WEST) + pixel_x = -32 + pixel_y = 0 + + update_icon() + +/obj/structure/noticeboard/proc/add_paper(var/atom/movable/paper, var/skip_icon_update) + if(istype(paper)) + LAZYDISTINCTADD(notices, paper) + paper.forceMove(src) + if(!skip_icon_update) + update_icon() + +/obj/structure/noticeboard/proc/remove_paper(var/atom/movable/paper, var/skip_icon_update) + if(istype(paper) && paper.loc == src) + paper.dropInto(loc) + LAZYREMOVE(notices, paper) + SSpersistence.forget_value(paper, /datum/persistent/paper) + if(!skip_icon_update) + update_icon() + +/obj/structure/noticeboard/proc/dismantle() + for(var/thing in notices) + remove_paper(thing, skip_icon_update = TRUE) + new /obj/item/stack/material/wood(get_turf(src)) + qdel(src) + +/obj/structure/noticeboard/Destroy() + QDEL_NULL_LIST(notices) + . = ..() + +/obj/structure/noticeboard/ex_act(var/severity) + dismantle() + +/obj/structure/noticeboard/update_icon() + icon_state = "[base_icon_state][LAZYLEN(notices)]" + +/obj/structure/noticeboard/attackby(var/obj/item/weapon/thing, var/mob/user) + if(thing.is_screwdriver()) + var/choice = input("Which direction do you wish to place the noticeboard?", "Noticeboard Offset") as null|anything in list("North", "South", "East", "West") + if(choice && Adjacent(user) && thing.loc == user && !user.incapacitated()) + playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1) + switch(choice) + if("North") + pixel_x = 0 + pixel_y = 32 + if("South") + pixel_x = 0 + pixel_y = -32 + if("East") + pixel_x = 32 + pixel_y = 0 + if("West") + pixel_x = -32 + pixel_y = 0 + return + else if(thing.is_wrench()) + visible_message(SPAN_WARNING("\The [user] begins dismantling \the [src].")) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + if(do_after(user, 50, src)) + visible_message(SPAN_DANGER("\The [user] has dismantled \the [src]!")) + dismantle() + return + else if(istype(thing, /obj/item/weapon/paper) || istype(thing, /obj/item/weapon/photo)) + if(jobban_isbanned(user, "Graffiti")) + to_chat(user, SPAN_WARNING("You are banned from leaving persistent information across rounds.")) + else + if(LAZYLEN(notices) < max_notices && user.unEquip(thing, src)) + add_fingerprint(user) + add_paper(thing) + to_chat(user, SPAN_NOTICE("You pin \the [thing] to \the [src].")) + SSpersistence.track_value(thing, /datum/persistent/paper) + else + to_chat(user, SPAN_WARNING("You hesitate, certain \the [thing] will not be seen among the many others already attached to \the [src].")) + return + ..() + +/obj/structure/noticeboard/attack_ai(var/mob/user) + examine(user) + +/obj/structure/noticeboard/attack_hand(var/mob/user) + examine(user) + +/obj/structure/noticeboard/examine(var/mob/user) + . = ..() + if(.) + var/list/dat = list("") + for(var/thing in notices) + LAZYADD(dat, "") + var/datum/browser/popup = new(user, "noticeboard-\ref[src]", "Noticeboard") + popup.set_content(jointext(dat, null)) + popup.open() + +/obj/structure/noticeboard/Topic(var/mob/user, var/list/href_list) + if(href_list["read"]) + var/obj/item/weapon/paper/P = locate(href_list["read"]) + if(P && P.loc == src) + P.show_content(user) + . = TOPIC_HANDLED + + if(href_list["look"]) + var/obj/item/weapon/photo/P = locate(href_list["look"]) + if(P && P.loc == src) + P.show(user) + . = TOPIC_HANDLED + + if(href_list["remove"]) + remove_paper(locate(href_list["remove"])) + add_fingerprint(user) + . = TOPIC_REFRESH + + if(href_list["write"]) + if((usr.stat || usr.restrained())) //For when a player is handcuffed while they have the notice window open + return + var/obj/item/P = locate(href_list["write"]) + if((P && P.loc == src)) //ifthe paper's on the board + var/mob/living/M = usr + if(istype(M)) + var/obj/item/weapon/pen/E = M.get_type_in_hands(/obj/item/weapon/pen) + if(E) + add_fingerprint(M) + P.attackby(E, usr) + else + to_chat(M, "You'll need something to write with!") + . = TOPIC_REFRESH + + if(. == TOPIC_REFRESH) + interact(user) + +/obj/structure/noticeboard/anomaly + notices = 5 + icon_state = "nboard05" + +/obj/structure/noticeboard/anomaly/New() + var/obj/item/weapon/paper/P = new() + P.name = "Memo RE: proper analysis procedure" + P.info = "
We keep test dummies in pens here for a reason, so standard procedure should be to activate newfound alien artifacts and place the two in close proximity. Promising items I might even approve monkey testing on." + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + + P = new() + P.name = "Memo RE: materials gathering" + P.info = "Corasang,
the hands-on approach to gathering our samples may very well be slow at times, but it's safer than allowing the blundering miners to roll willy-nilly over our dig sites in their mechs, destroying everything in the process. And don't forget the escavation tools on your way out there!
- R.W" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + + P = new() + P.name = "Memo RE: ethical quandaries" + P.info = "Darion-

I don't care what his rank is, our business is that of science and knowledge - questions of moral application do not come into this. Sure, so there are those who would employ the energy-wave particles my modified device has managed to abscond for their own personal gain, but I can hardly see the practical benefits of some of these artifacts our benefactors left behind. Ward--" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + + P = new() + P.name = "READ ME! Before you people destroy any more samples" + P.info = "how many times do i have to tell you people, these xeno-arch samples are del-i-cate, and should be handled so! careful application of a focussed, concentrated heat or some corrosive liquids should clear away the extraneous carbon matter, while application of an energy beam will most decidedly destroy it entirely - like someone did to the chemical dispenser! W, the one who signs your paychecks" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P + + P = new() + P.name = "Reminder regarding the anomalous material suits" + P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around in them unless you're field testing something, R" + P.stamped = list(/obj/item/weapon/stamp/rd) + P.overlays = list("paper_stamped_rd") + src.contents += P \ No newline at end of file diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index 0183da53ed..d8b495056a 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -25,6 +25,9 @@ var/list/ventcrawl_machinery = list( if(!(/mob/living/proc/ventcrawl in verbs)) to_chat(src, "You don't possess the ability to ventcrawl!") return FALSE + if(pulling) + to_chat(src, "You cannot bring \the [pulling] into the vent with you!") + return FALSE if(incapacitated()) to_chat(src, "You cannot ventcrawl in your current state!") return FALSE diff --git a/code/modules/xenoarcheaology/misc.dm b/code/modules/xenoarcheaology/misc.dm index f6005c3f17..3ef15cbc3c 100644 --- a/code/modules/xenoarcheaology/misc.dm +++ b/code/modules/xenoarcheaology/misc.dm @@ -1,43 +1,3 @@ -/obj/structure/noticeboard/anomaly - notices = 5 - icon_state = "nboard05" - -/obj/structure/noticeboard/anomaly/New() - var/obj/item/weapon/paper/P = new() - P.name = "Memo RE: proper analysis procedure" - P.info = "
We keep test dummies in pens here for a reason, so standard procedure should be to activate newfound alien artifacts and place the two in close proximity. Promising items I might even approve monkey testing on." - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Memo RE: materials gathering" - P.info = "Corasang,
the hands-on approach to gathering our samples may very well be slow at times, but it's safer than allowing the blundering miners to roll willy-nilly over our dig sites in their mechs, destroying everything in the process. And don't forget the escavation tools on your way out there!
- R.W" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Memo RE: ethical quandaries" - P.info = "Darion-

I don't care what his rank is, our business is that of science and knowledge - questions of moral application do not come into this. Sure, so there are those who would employ the energy-wave particles my modified device has managed to abscond for their own personal gain, but I can hardly see the practical benefits of some of these artifacts our benefactors left behind. Ward--" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "READ ME! Before you people destroy any more samples" - P.info = "how many times do i have to tell you people, these xeno-arch samples are del-i-cate, and should be handled so! careful application of a focussed, concentrated heat or some corrosive liquids should clear away the extraneous carbon matter, while application of an energy beam will most decidedly destroy it entirely - like someone did to the chemical dispenser! W, the one who signs your paychecks" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - - P = new() - P.name = "Reminder regarding the anomalous material suits" - P.info = "Do you people think the anomaly suits are cheap to come by? I'm about a hair trigger away from instituting a log book for the damn things. Only wear them if you're going out for a dig, and for god's sake don't go tramping around in them unless you're field testing something, R" - P.stamped = list(/obj/item/weapon/stamp/rd) - P.overlays = list("paper_stamped_rd") - src.contents += P - /obj/structure/bookcase/manuals/xenoarchaeology name = "Xenoarchaeology Manuals bookcase" diff --git a/html/changelogs/cerebulon - persistence.yml b/html/changelogs/cerebulon - persistence.yml new file mode 100644 index 0000000000..3b12f41967 --- /dev/null +++ b/html/changelogs/cerebulon - persistence.yml @@ -0,0 +1,38 @@ +################################ +# 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: Cerebulon + +# 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 sticky notes, orderable from cargo" + -rscadd: "You can now carve graffiti into suitable walls/floors with sharp objects." + - rscadd: "Trash, graffiti, dirt (Not blood), noticeboards and stickynotes are now persistent across rounds. This is admin-toggleable." diff --git a/icons/effects/writing.dmi b/icons/effects/writing.dmi new file mode 100644 index 0000000000..bbf4055bce Binary files /dev/null and b/icons/effects/writing.dmi differ diff --git a/icons/mob/items/lefthand_holder.dmi b/icons/mob/items/lefthand_holder.dmi index d629c657ce..14cd2406f0 100644 Binary files a/icons/mob/items/lefthand_holder.dmi and b/icons/mob/items/lefthand_holder.dmi differ diff --git a/icons/mob/items/righthand_holder.dmi b/icons/mob/items/righthand_holder.dmi index c1e0563ec4..19bb1967f6 100644 Binary files a/icons/mob/items/righthand_holder.dmi and b/icons/mob/items/righthand_holder.dmi differ diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 4d17629759..0fe183dd90 100644 Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ diff --git a/icons/mob/uniform_1.dmi b/icons/mob/uniform_1.dmi index cd1b4d1e4e..32b15484a0 100644 Binary files a/icons/mob/uniform_1.dmi and b/icons/mob/uniform_1.dmi differ diff --git a/icons/obj/closets/bases/crate.dmi b/icons/obj/closets/bases/crate.dmi index e8946f3b35..83500acb3b 100644 Binary files a/icons/obj/closets/bases/crate.dmi and b/icons/obj/closets/bases/crate.dmi differ diff --git a/icons/obj/closets/bases/large_crate.dmi b/icons/obj/closets/bases/large_crate.dmi index 1cdac27783..fd3400ed72 100644 Binary files a/icons/obj/closets/bases/large_crate.dmi and b/icons/obj/closets/bases/large_crate.dmi differ diff --git a/icons/obj/closets/decals/crate.dmi b/icons/obj/closets/decals/crate.dmi index 533bf20728..1fce07d882 100644 Binary files a/icons/obj/closets/decals/crate.dmi and b/icons/obj/closets/decals/crate.dmi differ diff --git a/icons/obj/closets/decals/large_crate.dmi b/icons/obj/closets/decals/large_crate.dmi index 4876570265..2a9ff64380 100644 Binary files a/icons/obj/closets/decals/large_crate.dmi and b/icons/obj/closets/decals/large_crate.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 03a5e7fb09..998d31b2f8 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/uniforms_1.dmi b/icons/obj/clothing/uniforms_1.dmi index 35eb06f7a2..47b06c8b29 100644 Binary files a/icons/obj/clothing/uniforms_1.dmi and b/icons/obj/clothing/uniforms_1.dmi differ diff --git a/icons/obj/stickynotes.dmi b/icons/obj/stickynotes.dmi new file mode 100644 index 0000000000..8ca70a4149 Binary files /dev/null and b/icons/obj/stickynotes.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 9b7ad90e8f..5bf804c9bc 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/maps/southern_cross/datums/supplypacks/munitions.dm b/maps/southern_cross/datums/supplypacks/munitions.dm index fa24358ceb..ee51fc4f0c 100644 --- a/maps/southern_cross/datums/supplypacks/munitions.dm +++ b/maps/southern_cross/datums/supplypacks/munitions.dm @@ -10,7 +10,7 @@ /obj/item/ammo_magazine/clip/c762/hunter = 6 ) cost = 50 - containertype = /obj/structure/closet/crate/secure/weapon + containertype = /obj/structure/closet/crate/secure/hedberg containername = "Hunting Rifle crate" access = access_explorer @@ -20,7 +20,7 @@ /obj/item/weapon/gun/energy/phasegun = 2, ) cost = 25 - containertype = /obj/structure/closet/crate/secure/weapon + containertype = /obj/structure/closet/crate/secure/ward containername = "Phase Carbine crate" access = access_explorer @@ -30,6 +30,6 @@ /obj/item/weapon/gun/energy/phasegun/rifle = 2, ) cost = 50 - containertype = /obj/structure/closet/crate/secure/weapon + containertype = /obj/structure/closet/crate/secure/ward containername = "Phase Rifle crate" access = access_explorer \ No newline at end of file diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index b276f58b45..13fc6a8b74 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -302,7 +302,7 @@ "afP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "afQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "afR" = (/obj/machinery/atmospherics/valve/shutoff{name = "Deck 1 Fore Starboard automatic shutoff valve"},/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) -"afS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/closet/crate,/obj/item/weapon/toy/xmas_cracker,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) +"afS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/toy/xmas_cracker,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "afT" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/device/paicard,/turf/simulated/floor/plating,/area/construction/firstdeck/construction5) "afU" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/item/weapon/tool/wirecutters,/turf/simulated/floor/tiled,/area/construction/firstdeck/construction5) "afV" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = -1},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/toilet/firstdeck) @@ -318,8 +318,8 @@ "agf" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "agg" = (/obj/structure/filingcabinet/security{name = "Security Records"},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "agh" = (/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) -"agi" = (/obj/structure/closet/crate,/obj/item/weapon/storage/backpack,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) -"agj" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/item/toy/xmastree,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) +"agi" = (/obj/item/weapon/storage/backpack,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) +"agj" = (/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/item/toy/xmastree,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) "agk" = (/obj/structure/table/rack,/obj/item/weapon/flame/lighter/random,/obj/random/maintenance/clean,/obj/random/cigarettes,/obj/random/maintenance/clean,/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/random/cash,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) "agl" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/hangar/three) "agm" = (/turf/simulated/floor/reinforced,/area/hangar/three) @@ -350,7 +350,7 @@ "agL" = (/obj/structure/closet/crate,/obj/item/stack/material/gold,/obj/item/weapon/storage/belt/champion,/obj/item/stack/material/gold,/obj/item/stack/material/gold,/obj/item/stack/material/gold,/obj/item/stack/material/gold,/obj/item/stack/material/gold,/obj/item/stack/material/silver,/obj/item/stack/material/silver,/obj/item/stack/material/silver,/obj/item/stack/material/silver,/obj/item/stack/material/silver,/obj/item/stack/material/silver,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "agM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) "agN" = (/obj/structure/filingcabinet/medical{desc = "A large cabinet with hard copy medical records."; name = "Medical Records"},/turf/simulated/floor/tiled/dark,/area/security/nuke_storage) -"agO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) +"agO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "agP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) "agQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) "agR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) @@ -531,7 +531,7 @@ "akk" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/obj/effect/shuttle_landmark/southern_cross/escape_pod1/station{base_area = /area/hallway/primary/firstdeck/auxdockfore},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station) "akl" = (/obj/machinery/door/airlock/voidcraft/vertical{frequency = 1380; id_tag = "shuttle1_outer"; name = "External Access"},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "shuttle1_shuttle"; name = "exterior access button"; pixel_x = 0; pixel_y = 26; req_access = null},/turf/simulated/shuttle/floor/black,/area/shuttle/shuttle1/start) "akm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport) -"akn" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/random/maintenance/cargo,/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/firstdeck/foreport) +"akn" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/crate,/turf/simulated/floor,/area/maintenance/firstdeck/foreport) "ako" = (/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fpcenter) "akp" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fpcenter) "akq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/monotile,/area/hallway/primary/firstdeck/fpcenter) @@ -564,7 +564,7 @@ "akR" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "shuttle1_pump"},/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor/black,/area/shuttle/shuttle1/start) "akS" = (/obj/machinery/shuttle_sensor{dir = 5; id_tag = "shuttle1sens_exp"},/turf/simulated/shuttle/wall/voidcraft/blue,/area/shuttle/shuttle1/start) "akT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/spot{dir = 4},/obj/machinery/camera/network/first_deck{c_tag = "Hangar One - Aft Starboard"; dir = 8},/turf/simulated/floor/tiled/monotile,/area/hangar/one) -"akU" = (/obj/structure/closet/crate,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/maintenance/clean,/obj/random/toy,/obj/item/weapon/toy/xmas_cracker,/turf/simulated/floor,/area/maintenance/firstdeck/foreport) +"akU" = (/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/action_figure,/obj/random/maintenance/clean,/obj/random/toy,/obj/item/weapon/toy/xmas_cracker,/obj/random/crate,/turf/simulated/floor,/area/maintenance/firstdeck/foreport) "akV" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fpcenter) "akW" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fpcenter) "akX" = (/obj/effect/floor_decal/borderfloor,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/green/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/green/bordercorner2,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fpcenter) @@ -584,7 +584,7 @@ "all" = (/obj/effect/floor_decal/borderfloor,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/corner/green/border,/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 9},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fscenter) "alm" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fscenter) "aln" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fscenter) -"alo" = (/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/toolbox,/obj/effect/decal/cleanable/molten_item,/obj/structure/closet/crate,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/structure/catwalk,/turf/simulated/floor,/area/maintenance/firstdeck/forestarboard) +"alo" = (/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/toolbox,/obj/effect/decal/cleanable/molten_item,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/structure/catwalk,/obj/random/crate,/turf/simulated/floor,/area/maintenance/firstdeck/forestarboard) "alp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/spot{dir = 8},/obj/machinery/camera/network/first_deck{c_tag = "Hangar Three - Aft Port"; dir = 4},/turf/simulated/floor/tiled/monotile,/area/hangar/three) "alq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/spot{dir = 4},/obj/machinery/camera/network/first_deck{c_tag = "Hangar Three - Aft Starboard"; dir = 8},/turf/simulated/floor/tiled/monotile,/area/hangar/three) "alr" = (/turf/simulated/wall/r_wall,/area/maintenance/firstdeck/centralstarboard) @@ -661,8 +661,8 @@ "amK" = (/turf/simulated/wall,/area/tcomm/computer) "amL" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/hallway/primary/firstdeck/fscenter) "amM" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fscenter) -"amN" = (/obj/structure/closet/crate/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/firstdeck/forestarboard) -"amO" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/structure/closet/crate,/turf/simulated/floor/tiled,/area/hangar/three) +"amN" = (/turf/simulated/floor/reinforced,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/shuttle1/start) +"amO" = (/turf/simulated/floor/reinforced,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/shuttle1/start) "amP" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/hangar/three) "amQ" = (/turf/simulated/floor/airless,/area/rnd/xenobiology/xenoflora) "amR" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = -28; pixel_y = 0},/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod2/station) @@ -693,7 +693,7 @@ "anq" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/tcomm/computer) "anr" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fscenter) "ans" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/fscenter) -"ant" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) +"ant" = (/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/crate,/turf/simulated/floor,/area/maintenance/firstdeck/forestarboard) "anu" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/space_heater,/turf/simulated/floor/tiled,/area/hangar/three) "anv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/monotile,/area/hangar/three) "anw" = (/obj/effect/floor_decal/borderfloorblack/corner{dir = 4},/obj/effect/floor_decal/industrial/danger/corner{dir = 4},/turf/simulated/floor/tiled,/area/hangar/three) @@ -704,7 +704,7 @@ "anB" = (/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/rnd/xenobiology/xenoflora) "anC" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora_isolation) "anD" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_2_hatch"; locked = 1; name = "Large Escape Pod Hatch 2"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) -"anE" = (/turf/simulated/floor/reinforced,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/shuttle1/start) +"anE" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/random/crate,/turf/simulated/floor/tiled,/area/hangar/three) "anF" = (/obj/machinery/space_heater,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/hangar/one) "anG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/monotile,/area/hangar/one) "anH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/monotile,/area/hangar/one) @@ -726,7 +726,7 @@ "anX" = (/obj/machinery/telecomms/bus/preset_two/southerncross,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcomm/chamber) "anY" = (/obj/machinery/telecomms/relay/preset/southerncross/d1,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcomm/chamber) "anZ" = (/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcomm/chamber) -"aoa" = (/turf/simulated/floor/reinforced,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/shuttle1/start) +"aoa" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/firstdeck/forestarboard) "aob" = (/obj/machinery/telecomms/bus/preset_four,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcomm/chamber) "aoc" = (/obj/machinery/telecomms/processor/preset_four,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcomm/chamber) "aod" = (/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcomm/chamber) @@ -847,7 +847,7 @@ "aqo" = (/turf/simulated/floor/plating,/area/construction/firstdeck/construction4) "aqp" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/construction/firstdeck/construction4) "aqq" = (/turf/simulated/floor/wood,/area/construction/firstdeck/construction4) -"aqr" = (/obj/random/drinkbottle,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/drinkbottle,/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/turf/simulated/floor/wood,/area/construction/firstdeck/construction4) +"aqr" = (/obj/random/drinkbottle,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/drinkbottle,/obj/item/weapon/reagent_containers/food/condiment/enzyme{layer = 5},/obj/random/crate,/turf/simulated/floor/wood,/area/construction/firstdeck/construction4) "aqs" = (/obj/structure/closet/emcloset,/obj/machinery/ai_status_display{pixel_y = 32},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_starboard1) "aqt" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/white/border{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_starboard1) "aqu" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_starboard1) @@ -1286,7 +1286,7 @@ "ayL" = (/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/hallway/primary/firstdeck/starboard) "ayM" = (/obj/turbolift_map_holder/southern_cross/starboard,/turf/unsimulated/mask,/area/hallway/primary/firstdeck/starboard) "ayN" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralstarboard) -"ayO" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralport) +"ayO" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/structure/catwalk,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralport) "ayP" = (/obj/structure/closet/emcloset,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralport) "ayQ" = (/obj/random/obstruction,/turf/simulated/floor/plating,/area/construction/firstdeck/construction2) "ayR" = (/turf/simulated/floor/plating,/area/construction/firstdeck/construction2) @@ -1301,7 +1301,7 @@ "aza" = (/obj/item/frame,/obj/machinery/light_construct,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/maintenance/firstdeck/aftport) "azb" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/maintenance/firstdeck/aftport) "azc" = (/obj/random/obstruction,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftport) -"azd" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/obj/item/weapon/storage/backpack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftport) +"azd" = (/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/obj/item/weapon/storage/backpack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftport) "aze" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/maintenance/firstdeck/aftport) "azf" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/maintenance/firstdeck/aftport) "azg" = (/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftport) @@ -1415,7 +1415,7 @@ "aBk" = (/obj/structure/door_assembly/door_assembly_ext,/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralport) "aBl" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/random/maintenance/clean,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/weapon/airlock_electronics,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralport) "aBm" = (/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "crglockdown"; name = "Cargo Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/firstdeck/centralport) -"aBn" = (/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/construction/firstdeck/construction2) +"aBn" = (/obj/item/device/flashlight,/obj/random/crate,/turf/simulated/floor/plating,/area/construction/firstdeck/construction2) "aBo" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/plating,/area/construction/firstdeck/construction2) "aBp" = (/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tool/powermaint,/turf/simulated/floor,/area/construction/firstdeck/construction2) "aBq" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/table/steel,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating,/area/construction/firstdeck/construction2) @@ -1459,7 +1459,7 @@ "aCc" = (/obj/machinery/computer/crew{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/medical/first_aid_station/firstdeck) "aCd" = (/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/tiled,/area/hangar/twocontrol) "aCe" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/table/steel,/turf/simulated/floor/plating,/area/construction/firstdeck/construction3) -"aCf" = (/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/gas/mime,/obj/item/clothing/shoes/mime,/obj/item/clothing/under/mime,/obj/structure/closet/crate,/turf/simulated/floor,/area/construction/firstdeck/construction3) +"aCf" = (/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/gas/mime,/obj/item/clothing/shoes/mime,/obj/item/clothing/under/mime,/obj/random/crate,/turf/simulated/floor,/area/construction/firstdeck/construction3) "aCg" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/plating,/area/construction/firstdeck/construction3) "aCh" = (/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/maintenance/engineering,/turf/simulated/floor/tiled/steel,/area/construction/firstdeck/construction3) "aCi" = (/obj/structure/closet/emcloset,/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_starboard2) @@ -1531,9 +1531,9 @@ "aDw" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/quartermaster/storage) "aDx" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) "aDy" = (/obj/machinery/light/spot{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/storage) -"aDz" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/storage) -"aDA" = (/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/storage) -"aDB" = (/obj/machinery/firealarm{pixel_y = 24},/obj/structure/closet/crate/freezer,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/storage) +"aDz" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/random/crate,/turf/simulated/floor/tiled,/area/quartermaster/storage) +"aDA" = (/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/random/crate,/turf/simulated/floor/tiled,/area/quartermaster/storage) +"aDB" = (/obj/machinery/firealarm{pixel_y = 24},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/random/crate,/turf/simulated/floor/tiled,/area/quartermaster/storage) "aDC" = (/obj/structure/table/steel_reinforced,/obj/machinery/cell_charger,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/storage) "aDD" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/accessory/armband/cargo,/obj/item/device/retail_scanner/cargo,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 0; pixel_y = 28},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/storage) "aDE" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/cargo,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/brown/border{dir = 5},/turf/simulated/floor/tiled,/area/quartermaster/storage) @@ -1690,7 +1690,7 @@ "aGz" = (/obj/machinery/computer/telecomms/monitor{dir = 4; network = "tcommsat"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/tiled/dark,/area/tcomm/computer) "aGA" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_l"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station) "aGB" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/industrial/danger{dir = 8},/turf/simulated/floor/tiled,/area/hangar/two) -"aGC" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/structure/closet/crate,/turf/simulated/floor/tiled,/area/hangar/two) +"aGC" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station) "aGD" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station) "aGE" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod1/station) "aGF" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod1/station) @@ -1723,7 +1723,7 @@ "aHg" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/ascenter) "aHh" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/ascenter) "aHi" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/maintenance/firstdeck/aftstarboard) -"aHj" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/structure/closet/crate,/turf/simulated/floor/tiled,/area/hangar/two) +"aHj" = (/turf/simulated/floor/reinforced,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/shuttle2/start) "aHk" = (/turf/simulated/shuttle/wall/voidcraft/no_join,/area/shuttle/shuttle2/start) "aHl" = (/turf/simulated/shuttle/wall/voidcraft,/area/shuttle/shuttle2/start) "aHm" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/tiled/steel,/area/hangar/two) @@ -1758,7 +1758,7 @@ "aHP" = (/turf/simulated/floor/tiled,/area/tcomm/entrance) "aHQ" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/shuttle/wall/voidcraft/hard_corner,/area/shuttle/shuttle2/start) "aHR" = (/obj/machinery/teleport/station,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/tcomm/entrance) -"aHS" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station) +"aHS" = (/turf/simulated/floor/reinforced,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/shuttle2/start) "aHT" = (/obj/machinery/teleport/hub,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/tcomm/entrance) "aHU" = (/turf/simulated/shuttle/wall/voidcraft/hard_corner,/area/shuttle/shuttle2/start) "aHV" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/shuttle/plating,/area/shuttle/shuttle2/start) @@ -1929,7 +1929,7 @@ "aLe" = (/obj/machinery/light/small{dir = 8},/obj/structure/ore_box,/turf/simulated/floor/plating,/area/maintenance/substation/firstdeck/cargo) "aLf" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/plating,/area/maintenance/substation/firstdeck/cargo) "aLg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; pixel_x = 22; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/substation/firstdeck/cargo) -"aLh" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/lights/mixed,/obj/item/stack/cable_coil/random,/obj/machinery/light_construct,/obj/machinery/light_construct,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftport) +"aLh" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/random/crate,/turf/simulated/floor/tiled,/area/hangar/two) "aLi" = (/obj/machinery/door/airlock{name = "Emergency Storage"},/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftport) "aLj" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor/plating,/area/storage/emergency_storage/firstdeck/ap_emergency) "aLk" = (/obj/structure/catwalk,/turf/simulated/floor/plating,/area/storage/emergency_storage/firstdeck/ap_emergency) @@ -1993,7 +1993,7 @@ "aMq" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aMr" = (/obj/machinery/atmospherics/pipe/simple/hidden/red{dir = 10; icon_state = "intact"},/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aMs" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) -"aMt" = (/turf/simulated/floor/reinforced,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/shuttle2/start) +"aMt" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/random/crate,/turf/simulated/floor/tiled,/area/hangar/two) "aMu" = (/obj/machinery/space_heater,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aMv" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/atmospherics/portables_connector,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora_isolation) "aMw" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) @@ -2027,7 +2027,7 @@ "aMY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/red,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aMZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/red{icon_state = "intact"; dir = 4},/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aNa" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/red{icon_state = "intact"; dir = 4},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/engineering/auxiliary_engineering) -"aNb" = (/turf/simulated/floor/reinforced,/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 1},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/shuttle2/start) +"aNb" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station) "aNc" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aNd" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 4},/obj/machinery/space_heater,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aNe" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 10},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) @@ -2271,7 +2271,7 @@ "aRI" = (/turf/simulated/floor/airless,/area/hallway/secondary/escape/firstdeck/ep_aftport) "aRJ" = (/turf/simulated/shuttle/wall,/area/shuttle/escape_pod3/station) "aRK" = (/turf/simulated/shuttle/wall/no_join{base_state = "orange"; icon = 'icons/turf/shuttle_orange.dmi'; icon_state = "orange"},/area/shuttle/escape_pod3/station) -"aRL" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion_r"},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station) +"aRL" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/stack/cable_coil/random,/obj/machinery/light_construct,/obj/machinery/light_construct,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftport) "aRM" = (/turf/simulated/wall,/area/hallway/secondary/escape/firstdeck/ep_aftport) "aRN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftport) "aRO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftport) @@ -3510,7 +3510,7 @@ "bpz" = (/obj/machinery/atmospherics/valve/digital/open,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "bpA" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "bpB" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/security_starboard) -"bpC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 4},/obj/machinery/meter,/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor/plating,/area/maintenance/security_starboard) +"bpC" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 4},/obj/machinery/meter,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/security_starboard) "bpD" = (/obj/effect/floor_decal/corner/black/full,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Carbon Dioxide"; dir = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos) "bpE" = (/obj/effect/floor_decal/corner/black/full{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0; use_power = 1},/turf/simulated/floor/reinforced/carbon_dioxide,/area/engineering/atmos) "bpF" = (/obj/machinery/atmospherics/pipe/simple/visible/green{icon_state = "intact"; dir = 4},/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/machinery/meter,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "atmoslockdown"; name = "Atmospherics Lockdown"; opacity = 0},/turf/simulated/floor,/area/engineering/atmos) @@ -4027,7 +4027,7 @@ "bzw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/monotile,/area/hallway/primary/seconddeck/fore) "bzx" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/red/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/fore) "bzy" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"; req_one_access = list(5,12,19)},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/seconddeck/fore) -"bzz" = (/obj/structure/closet/crate,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/tech_supply,/obj/random/tech_supply,/turf/simulated/floor/plating,/area/maintenance/research) +"bzz" = (/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/medical,/obj/random/medical/lite,/obj/random/bomb_supply,/obj/random/bomb_supply,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/research) "bzA" = (/obj/structure/closet/jcloset,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/weapon/soap/nanotrasen,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/turf/simulated/floor/tiled,/area/janitor) "bzB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled,/area/janitor) "bzC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/janitor) @@ -4115,7 +4115,7 @@ "bBg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research) "bBh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/research) "bBi" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/maintenance/research) -"bBj" = (/obj/structure/closet/crate/plastic,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/medical,/obj/random/medical/lite,/obj/random/bomb_supply,/obj/random/bomb_supply,/turf/simulated/floor/plating,/area/maintenance/research) +"bBj" = (/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/research) "bBk" = (/obj/structure/closet,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/research) "bBl" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/sc/hor) "bBm" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research) @@ -5131,7 +5131,7 @@ "bUI" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/navbeacon/patrol{location = "CH11"; next_patrol = "CH12"},/turf/simulated/floor/tiled/dark,/area/hallway/primary/seconddeck/fscenter) "bUJ" = (/obj/structure/flora/ausbushes/sparsegrass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/hallway/primary/seconddeck/fscenter) "bUK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/research) -"bUL" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/research) +"bUL" = (/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/research) "bUM" = (/obj/machinery/r_n_d/protolathe,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/rnd/lab) "bUN" = (/turf/simulated/floor/tiled,/area/rnd/lab) "bUO" = (/obj/machinery/r_n_d/destructive_analyzer,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/rnd/lab) @@ -5501,7 +5501,7 @@ "cbO" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/grass,/area/hallway/primary/seconddeck/fscenter) "cbP" = (/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Center Two"; dir = 8},/turf/simulated/floor/grass,/area/hallway/primary/seconddeck/fscenter) "cbQ" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/research) -"cbR" = (/obj/structure/closet/crate,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/turf/simulated/floor/plating,/area/maintenance/research) +"cbR" = (/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/powercell,/obj/random/powercell,/obj/random/powercell,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/research) "cbS" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/clipboard,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/structure/table/glass,/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/purple/border{dir = 10},/turf/simulated/floor/tiled/white,/area/rnd/lab) "cbT" = (/obj/item/weapon/folder/white,/obj/item/weapon/disk/tech_disk{pixel_x = 0; pixel_y = 0},/obj/item/weapon/disk/tech_disk{pixel_x = 0; pixel_y = 0},/obj/item/weapon/disk/design_disk,/obj/item/weapon/disk/design_disk,/obj/item/weapon/reagent_containers/dropper{pixel_y = -4},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/obj/structure/table/glass,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/rnd/lab) "cbU" = (/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/micro_laser,/obj/machinery/ai_status_display{pixel_y = -32},/obj/structure/table/glass,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/rnd/lab) @@ -5582,13 +5582,13 @@ "cdr" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/recharge_station,/obj/machinery/camera/network/research{c_tag = "SCI - Mech Bay"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/techmaint,/area/assembly/chargebay) "cds" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/maintenance/research_medical) "cdt" = (/turf/simulated/wall/r_wall,/area/maintenance/research_medical) -"cdu" = (/obj/structure/closet/crate,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/random/powercell,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tool,/turf/simulated/floor/plating,/area/maintenance/research_medical) +"cdu" = (/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/item/stack/tile/floor/white,/obj/random/powercell,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tool,/turf/simulated/floor/plating,/area/maintenance/research_medical) "cdv" = (/turf/simulated/floor/plating,/area/maintenance/research_medical) "cdw" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating,/area/maintenance/research_medical) "cdx" = (/obj/structure/table/rack{dir = 1},/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/item/stack/cable_coil,/obj/item/weapon/coin/silver,/turf/simulated/floor/plating,/area/maintenance/research_medical) "cdy" = (/obj/structure/table/rack{dir = 1},/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/research_medical) "cdz" = (/obj/structure/table/glass,/obj/machinery/alarm{dir = 4; pixel_x = -22; pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) -"cdA" = (/obj/structure/closet/crate,/obj/random/bomb_supply,/obj/random/bomb_supply,/obj/random/bomb_supply,/obj/random/tech_supply,/obj/random/technology_scanner,/obj/random/tool,/turf/simulated/floor/plating,/area/maintenance/research_medical) +"cdA" = (/obj/random/bomb_supply,/obj/random/bomb_supply,/obj/random/bomb_supply,/obj/random/tech_supply,/obj/random/technology_scanner,/obj/random/tool,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/research_medical) "cdB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) "cdC" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/rnd/research/firstdeck/hallway) "cdD" = (/obj/machinery/camera/network/research{c_tag = "SCI - Research Hallway Aft"; dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 4},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research) @@ -5634,7 +5634,7 @@ "cer" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/obj/structure/sign/warning/secure_area{pixel_x = 32},/turf/simulated/floor/tiled/dark,/area/hallway/primary/seconddeck/port) "ces" = (/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/engineering) "cet" = (/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/engineering) -"ceu" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/maintenance/engineering) +"ceu" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/engineering) "cev" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/engineering{name = "Utility Down"; req_one_access = list(11,24)},/turf/simulated/floor/plating,/area/maintenance/engineering) "cew" = (/obj/structure/disposalpipe/broken{dir = 1},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/engineering) "cex" = (/obj/machinery/vending/coffee{dir = 4},/turf/simulated/floor/tiled/hydro,/area/hallway/primary/seconddeck/fpcenter) @@ -6354,7 +6354,7 @@ "csj" = (/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter) "csk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/monotile,/area/hallway/primary/seconddeck/apcenter) "csl" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter) -"csm" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/medical,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/central) +"csm" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/medical,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/central) "csn" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/central) "cso" = (/obj/machinery/lapvend,/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/stairwell) "csp" = (/obj/structure/table/glass,/obj/machinery/firealarm{pixel_y = 24},/obj/machinery/recharger{pixel_y = 0},/obj/machinery/camera/network/second_deck{c_tag = "Second Deck - Center Stair Access"; dir = 2},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/stairwell) @@ -6809,7 +6809,7 @@ "cAW" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/qm) "cAX" = (/obj/machinery/disposal,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/obj/structure/disposalpipe/trunk,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/qm) "cAY" = (/obj/random/obstruction,/turf/simulated/floor/plating,/area/maintenance/bar) -"cAZ" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/bar) +"cAZ" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/machinery/light/small{dir = 1},/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/bar) "cBa" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/bar) "cBb" = (/turf/simulated/floor/plating,/area/maintenance/bar) "cBc" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/plating,/area/maintenance/bar) @@ -6888,7 +6888,7 @@ "cCx" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/qm) "cCy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/quartermaster/qm) "cCz" = (/obj/structure/closet/secure_closet/quartermaster,/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/qm) -"cCA" = (/obj/structure/closet/crate,/obj/item/clothing/gloves/boxing/green,/obj/item/clothing/gloves/boxing,/turf/simulated/floor/plating,/area/maintenance/bar) +"cCA" = (/obj/item/clothing/gloves/boxing/green,/obj/item/clothing/gloves/boxing,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/bar) "cCB" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/table/steel,/obj/random/medical,/obj/random/medical/lite,/obj/random/medical/lite,/turf/simulated/floor/plating,/area/maintenance/bar) "cCC" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/bar) "cCD" = (/obj/structure/flora/ausbushes/lavendergrass,/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/hallway/primary/seconddeck/apcenter) @@ -6912,7 +6912,7 @@ "cCV" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/navbeacon/patrol{location = "CH8"; next_patrol = "CH9"},/turf/simulated/floor/tiled/dark,/area/hallway/primary/seconddeck/ascenter) "cCW" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/green/bordercorner,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/ascenter) "cCX" = (/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/grass,/area/hallway/primary/seconddeck/ascenter) -"cCY" = (/obj/structure/closet/crate,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/medical,/obj/random/medical,/turf/simulated/floor/plating,/area/maintenance/medbay) +"cCY" = (/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/medical,/obj/random/medical,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/medbay) "cCZ" = (/obj/structure/closet/secure_closet/medical1,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/random/medical,/obj/random/medical,/obj/random/medical,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/dark,/area/medical/medbay_emt_bay) "cDa" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/pink/border{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 10},/obj/effect/floor_decal/corner/pink/bordercorner2{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay) "cDb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/pink/border{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 5},/obj/effect/floor_decal/corner/pink/bordercorner2{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay) @@ -7037,12 +7037,12 @@ "cFq" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access = list(12)},/turf/simulated/floor,/area/maintenance/disposal) "cFr" = (/obj/structure/disposalpipe/segment,/obj/machinery/vending/medical,/turf/simulated/wall,/area/medical/medbay_primary_storage) "cFs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor,/area/maintenance/cargo) -"cFt" = (/obj/structure/closet/crate,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/cargo) +"cFt" = (/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/crate,/turf/simulated/floor,/area/maintenance/cargo) "cFu" = (/obj/random/obstruction,/turf/simulated/floor/plating,/area/maintenance/cargo) "cFv" = (/obj/effect/floor_decal/corner/brown/full{dir = 8},/obj/structure/table/rack{dir = 8; layer = 2.9},/turf/simulated/floor/tiled/steel,/area/maintenance/cargo) "cFw" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/turf/simulated/floor/tiled/steel,/area/maintenance/cargo) "cFx" = (/turf/simulated/floor/tiled/steel,/area/maintenance/cargo) -"cFy" = (/obj/structure/disposalpipe/sortjunction/untagged{dir = 1},/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/crate,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) +"cFy" = (/obj/structure/disposalpipe/sortjunction/untagged{dir = 1},/obj/effect/decal/cleanable/cobweb,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/obj/random/crate,/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) "cFz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) "cFA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{pixel_y = 23},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) "cFB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/quartermaster/delivery) @@ -7118,7 +7118,7 @@ "cGT" = (/turf/simulated/wall,/area/maintenance/cargo) "cGU" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/effect/floor_decal/corner/brown/full{dir = 8},/turf/simulated/floor/tiled/steel,/area/maintenance/cargo) "cGV" = (/obj/effect/floor_decal/corner/brown{dir = 1},/turf/simulated/floor/tiled/steel,/area/maintenance/cargo) -"cGW" = (/obj/structure/disposalpipe/tagger/partial{dir = 1; name = "Sorting Office"; sort_tag = "Sorting Office"},/obj/structure/closet/crate,/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/warehouse) +"cGW" = (/obj/structure/disposalpipe/tagger/partial{dir = 1; name = "Sorting Office"; sort_tag = "Sorting Office"},/obj/structure/extinguisher_cabinet{pixel_x = -28; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/obj/random/crate,/turf/simulated/floor/tiled,/area/quartermaster/warehouse) "cGX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) "cGY" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 4},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) "cGZ" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) @@ -7213,7 +7213,7 @@ "cIK" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/cargo) "cIL" = (/obj/effect/floor_decal/corner/brown{dir = 1},/obj/item/frame/light/small,/turf/simulated/floor/tiled,/area/maintenance/cargo) "cIM" = (/turf/simulated/floor/plating,/area/maintenance/cargo) -"cIN" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/closet/crate,/obj/machinery/camera/network/cargo{c_tag = "CRG - Cargo Warehouse"; dir = 4; name = "security camera"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/warehouse) +"cIN" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/camera/network/cargo{c_tag = "CRG - Cargo Warehouse"; dir = 4; name = "security camera"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/obj/random/crate,/turf/simulated/floor/tiled,/area/quartermaster/warehouse) "cIO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/quartermaster/warehouse) "cIP" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/warehouse) "cIQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/warehouse) @@ -7448,7 +7448,7 @@ "cNl" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plating,/area/maintenance/substation/cargo) "cNm" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/sensor{name = "Powernet Sensor - Cargo Subgrid"; name_tag = "Cargo Subgrid"},/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/plating,/area/maintenance/substation/cargo) "cNn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green,/obj/structure/railing,/turf/simulated/floor/plating,/area/maintenance/substation/cargo) -"cNo" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/item/weapon/material/knife,/obj/item/weapon/storage/mre/random,/turf/simulated/floor/plating,/area/maintenance/bar) +"cNo" = (/obj/random/contraband,/obj/random/contraband,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/cargo) "cNp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/maintenance/engineering,/obj/random/tool/powermaint,/turf/simulated/floor/tiled/steel,/area/construction/seconddeck/construction1) "cNq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/engineering) "cNr" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock{name = "Emergency Storage"},/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/ap_emergency) @@ -7569,7 +7569,7 @@ "cPC" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/cargo) "cPD" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "crg_aft_pump"},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor,/area/maintenance/cargo) "cPE" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plating,/area/maintenance/cargo) -"cPF" = (/obj/structure/closet/crate,/obj/random/contraband,/obj/random/contraband,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/cargo) +"cPF" = (/obj/random/toy,/obj/random/plushie,/obj/random/plushie,/obj/random/action_figure,/obj/machinery/alarm{pixel_y = 22},/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/medbay) "cPG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Cargo Maintenance"; req_access = list(50)},/turf/simulated/floor/plating,/area/quartermaster/office) "cPH" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/navbeacon/delivery/north{location = "QM #1"},/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/office) "cPI" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/navbeacon/delivery/north{location = "QM #2"},/mob/living/bot/mulebot,/turf/simulated/floor/tiled,/area/quartermaster/office) @@ -7599,7 +7599,7 @@ "cQg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/medbay) "cQh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/inflatable/door/torn,/turf/simulated/floor/plating,/area/maintenance/engineering) "cQi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/maintenance/engineering) -"cQj" = (/obj/structure/closet/crate,/obj/random/toy,/obj/random/plushie,/obj/random/plushie,/obj/random/action_figure,/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/plating,/area/maintenance/medbay) +"cQj" = (/obj/random/drinkbottle,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/action_figure,/obj/random/plushie,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/bar) "cQk" = (/obj/structure/table/steel,/obj/item/device/t_scanner,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/alarm{pixel_y = 23},/obj/random/cash,/turf/simulated/floor/plating,/area/maintenance/bar) "cQl" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/lights/mixed,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/medbay) "cQm" = (/obj/structure/closet/hydrant{pixel_y = -32},/obj/item/clothing/glasses/meson,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/storage/emergency_storage/seconddeck/as_emergency) @@ -7634,7 +7634,7 @@ "cQP" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/item/clothing/head/soft,/obj/item/clothing/head/soft,/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/quartermaster/office) "cQQ" = (/obj/structure/table/steel,/obj/machinery/recharger,/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/dark,/area/quartermaster/office) "cQR" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"},/turf/simulated/floor/tiled/steel_grid,/area/medical/patient_wing) -"cQS" = (/obj/structure/closet/crate,/obj/random/drinkbottle,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/action_figure,/obj/random/plushie,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/plating,/area/maintenance/bar) +"cQS" = (/obj/random/maintenance/cargo,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance/clean,/obj/structure/catwalk,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/bar) "cQT" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/plating,/area/maintenance/bar) "cQU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/bar) "cQV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/bar) @@ -7646,7 +7646,7 @@ "cRb" = (/obj/structure/closet/gmcloset{name = "formal wardrobe"},/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/device/retail_scanner/civilian,/obj/machinery/camera/network/civilian{c_tag = "CIV - Bar Storage"; dir = 2},/obj/machinery/firealarm{pixel_y = 24},/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/wood,/area/crew_quarters/bar) "cRc" = (/obj/machinery/smartfridge/drinks,/obj/machinery/light{dir = 1},/turf/simulated/floor/lino,/area/crew_quarters/bar) "cRd" = (/obj/machinery/light/small,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) -"cRe" = (/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance/clean,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/bar) +"cRe" = (/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/item/weapon/material/knife,/obj/item/weapon/storage/mre/random,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/bar) "cRf" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter) "cRg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light,/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter) "cRh" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter) @@ -7874,7 +7874,7 @@ "cVv" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_medical{name = "Patient Ward"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/steel_grid,/area/medical/patient_wing) "cVw" = (/turf/simulated/wall/r_wall,/area/medical/patient_wing) "cVx" = (/obj/structure/closet/wardrobe/grey,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/backpack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/cargo) -"cVy" = (/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/drinkbottle,/turf/simulated/floor/plating,/area/maintenance/cargo) +"cVy" = (/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/drinkbottle,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/cargo) "cVz" = (/obj/item/weapon/material/ashtray/glass,/obj/structure/table/steel,/turf/simulated/floor/plating,/area/maintenance/cargo) "cVA" = (/obj/structure/bed/chair/comfy/beige,/turf/simulated/floor/plating,/area/maintenance/cargo) "cVB" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/food/drinks/glass2/rocks,/obj/item/weapon/reagent_containers/food/drinks/glass2/rocks,/turf/simulated/floor/plating,/area/maintenance/cargo) @@ -7964,7 +7964,7 @@ "cXh" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft) "cXi" = (/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft) "cXj" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/carpet,/area/crew_quarters/sleep/vistor_room_1) -"cXk" = (/obj/random/contraband,/obj/random/contraband,/obj/structure/closet/crate,/obj/random/contraband,/turf/simulated/floor/plating,/area/maintenance/medbay) +"cXk" = (/obj/random/contraband,/obj/random/contraband,/obj/random/contraband,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/medbay) "cXl" = (/obj/machinery/meter,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/medbay) "cXm" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 1},/turf/simulated/floor/plating,/area/maintenance/medbay) "cXn" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor/plating,/area/maintenance/medbay) @@ -8032,7 +8032,7 @@ "cYx" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Unisex Restrooms"},/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/steel_grid,/area/crew_quarters/locker/locker_toilet) "cYy" = (/obj/item/device/radio/intercom{desc = "Talk... listen through this."; dir = 2; name = "Station Intercom (Brig Radio)"; pixel_x = 0; pixel_y = -21; wires = 7},/obj/structure/closet/secure_closet/personal,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/carpet,/area/crew_quarters/sleep/vistor_room_1) "cYz" = (/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/carpet,/area/crew_quarters/sleep/vistor_room_1) -"cYA" = (/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/contraband,/turf/simulated/floor/plating,/area/maintenance/medbay) +"cYA" = (/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/contraband,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/medbay) "cYB" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; start_pressure = 4559.63},/obj/machinery/light/small,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/plating,/area/maintenance/medbay) "cYC" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/closet/secure_closet/personal,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/turf/simulated/floor/carpet,/area/crew_quarters/sleep/vistor_room_1) "cYD" = (/obj/item/device/radio/intercom{desc = "Talk... listen through this."; dir = 2; name = "Station Intercom (Brig Radio)"; pixel_x = 0; pixel_y = -21; wires = 7},/obj/structure/closet/secure_closet/personal,/obj/item/clothing/head/kitty,/obj/item/clothing/head/kitty,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/carpet,/area/crew_quarters/sleep/vistor_room_2) @@ -8257,7 +8257,7 @@ "dcO" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/locker) "dcP" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 6; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/turf/simulated/floor/plating,/area/maintenance/bar) "dcQ" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/reagentgrinder,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) -"dcR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 4},/obj/structure/closet/crate,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/random/powercell,/obj/random/maintenance,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/bar) +"dcR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/item/weapon/storage/mre/random,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/locker) "dcS" = (/obj/machinery/light,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/structure/closet/medical_wall{pixel_x = 0; pixel_y = -31},/obj/item/roller,/obj/item/bodybag/cryobag,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/seconddeck/fore) "dcT" = (/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},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "dcU" = (/obj/machinery/washing_machine,/turf/simulated/floor/tiled/dark,/area/crew_quarters/locker) @@ -8316,7 +8316,7 @@ "ddV" = (/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/pink/border,/turf/simulated/floor/tiled/white,/area/medical/surgery2) "ddW" = (/obj/machinery/camera/network/medbay{c_tag = "MED - Operating Theatre 2"; dir = 1},/obj/machinery/vending/wallmed1{pixel_y = -30},/obj/effect/floor_decal/borderfloorwhite{dir = 6},/obj/effect/floor_decal/corner/pink/border{dir = 6},/obj/structure/closet/secure_closet/medical_wall/anesthetics{pixel_x = 32},/turf/simulated/floor/tiled/white,/area/medical/surgery2) "ddX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/bar) -"ddY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/closet/crate/plastic,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/item/weapon/storage/mre/random,/turf/simulated/floor/plating,/area/maintenance/locker) +"ddY" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 4},/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/random/powercell,/obj/random/maintenance,/obj/random/maintenance/clean,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/bar) "ddZ" = (/turf/simulated/floor/reinforced{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck) "dea" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/catwalk,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/locker) "deb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/network/civilian{c_tag = "CIV - Cafeteria Port"; dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/cafeteria) @@ -8345,7 +8345,7 @@ "dey" = (/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/green/bordercorner{dir = 4},/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/locker) "dez" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/green/border{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/crew_quarters/locker) "deA" = (/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/green/bordercorner{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/locker) -"deB" = (/obj/structure/closet/crate/plastic,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/bar) +"deB" = (/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/bar) "deC" = (/obj/machinery/cooker/grill,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "deD" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) "deE" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen) @@ -8361,7 +8361,7 @@ "deO" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/universal,/turf/simulated/floor,/area/maintenance/substation/command) "deP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/turf/simulated/floor/tiled,/area/crew_quarters/locker) "deQ" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/green/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft) -"deR" = (/obj/structure/closet/crate/hydroponics,/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance,/turf/simulated/floor/plating,/area/maintenance/bar) +"deR" = (/obj/random/maintenance,/obj/random/maintenance,/obj/random/maintenance,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/bar) "deS" = (/obj/machinery/smartfridge,/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/hydroponics) "deT" = (/turf/simulated/wall,/area/hydroponics) "deU" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/hydroponics) @@ -8907,7 +8907,7 @@ "dpo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/light{dir = 1},/obj/item/weapon/camera_assembly,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dpp" = (/obj/machinery/floodlight,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dpq" = (/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) -"dpr" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/head/soft/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/under/color/rainbow,/obj/item/weapon/bedsheet/rainbow,/obj/item/weapon/pen/crayon/rainbow,/obj/structure/closet/crate,/turf/simulated/floor,/area/construction/seconddeck/construction2) +"dpr" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/cryo/station) "dps" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/chapel) "dpt" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "cryostorage_shuttle"; name = "cryostorage controller"; pixel_x = -26; pixel_y = 0; req_access = list(19); tag_door = "cryostorage_shuttle_hatch"},/obj/effect/landmark{name = "JoinLateCryo"},/turf/simulated/shuttle/floor,/area/shuttle/cryo/station) "dpu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway2) @@ -8955,7 +8955,7 @@ "dqk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dql" = (/obj/structure/table/standard,/obj/item/weapon/towel,/obj/item/weapon/towel,/turf/simulated/floor/tiled/freezer,/area/construction/seconddeck/construction2) "dqm" = (/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/construction/seconddeck/construction2) -"dqn" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_r"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/cryo/station) +"dqn" = (/obj/item/clothing/gloves/rainbow,/obj/item/clothing/head/soft/rainbow,/obj/item/clothing/shoes/rainbow,/obj/item/clothing/under/color/rainbow,/obj/item/weapon/bedsheet/rainbow,/obj/item/weapon/pen/crayon/rainbow,/obj/random/crate,/turf/simulated/floor,/area/construction/seconddeck/construction2) "dqo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/monotile,/area/hallway/primary/seconddeck/aft) "dqp" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dqq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/item/weapon/stool,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) @@ -9013,7 +9013,7 @@ "drq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/storage/primary) "drr" = (/obj/structure/table/standard,/obj/machinery/recharger{pixel_y = 0},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/storage/primary) "drs" = (/obj/machinery/computer/secure_data{dir = 4},/obj/item/device/radio/intercom/department/security{dir = 4; icon_override = "secintercom"; pixel_x = -21},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/security/checkpoint2) -"drt" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/cryo/station) +"drt" = (/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/item/clothing/suit/storage/hazardvest,/obj/random/crate,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dru" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/security/checkpoint2) "drv" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/checkpoint2) "drw" = (/obj/structure/table/reinforced,/obj/machinery/door/window/brigdoor/westleft{name = "Security Checkpoint"; req_access = list(1)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/security/checkpoint2) @@ -9048,7 +9048,7 @@ "drZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/checkpoint2) "dsa" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/tool/crowbar,/obj/item/weapon/pen,/obj/item/device/flash,/obj/machinery/camera/network/security{c_tag = "SEC - Arrival Checkpoint"; dir = 8},/obj/machinery/light{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/checkpoint2) "dsb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/gamblingtable,/obj/item/weapon/deck/cards,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) -"dsc" = (/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/item/clothing/suit/storage/hazardvest,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) +"dsc" = (/turf/simulated/floor/airless,/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 4},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/cryo/station) "dsd" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/chapel) "dse" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/chapel) "dsf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/chapel) @@ -9578,7 +9578,7 @@ "dCj" = (/obj/machinery/alarm{pixel_y = 22},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) "dCk" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) "dCl" = (/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) -"dCm" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/lights/mixed,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) +"dCm" = (/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/gas/mime,/obj/item/clothing/shoes/mime,/obj/item/clothing/under/mime,/obj/random/crate,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dCn" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/reinforced/airless,/area/thirddeck/roof) "dCo" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/reinforced/airless,/area/thirddeck/roof) "dCp" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall/r_wall,/area/ai) @@ -9843,7 +9843,7 @@ "dHo" = (/obj/structure/table/standard,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/white_rd,/obj/item/weapon/pen/multi,/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hor/quarters) "dHp" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hor/quarters) "dHq" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 36; pixel_y = -6},/obj/machinery/button/windowtint{id = "rdquarters"; pixel_x = 36; pixel_y = 6},/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hor/quarters) -"dHr" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard) +"dHr" = (/obj/item/weapon/storage/box/lights/mixed,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) "dHs" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard) "dHt" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Maintenance Access"; req_one_access = list(12,19)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) "dHu" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -22; pixel_y = 0},/obj/structure/dogbed,/turf/simulated/floor/carpet,/area/crew_quarters/heads/sc/hop/quarters) @@ -10206,7 +10206,7 @@ "dOn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Bathroom"},/turf/simulated/floor/tiled/steel_grid,/area/crew_quarters/heads/sc/sd) "dOo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/heads/sc/sd) "dOp" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/heads/sc/sd) -"dOq" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard) +"dOq" = (/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/thirddeck/forestarboard) "dOr" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard) "dOs" = (/obj/structure/table/steel,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport) "dOt" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport) @@ -10237,7 +10237,7 @@ "dOS" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/heads/sc/sd) "dOT" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/window/northright,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/heads/sc/sd) "dOU" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard) -"dOV" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/maintenance/thirddeck/aftstarboard) +"dOV" = (/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/random/crate,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard) "dOW" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard) "dOX" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport) "dOY" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport) @@ -10557,7 +10557,7 @@ "dVa" = (/obj/item/weapon/camera_assembly,/turf/simulated/floor/tiled,/area/construction/seconddeck/construction2) "dVb" = (/obj/machinery/light,/obj/item/stack/material/plastic,/obj/item/stack/material/plastic,/obj/item/stack/material/plastic,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dVc" = (/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 0; pixel_y = -32},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) -"dVd" = (/obj/item/clothing/head/soft/mime,/obj/item/clothing/mask/gas/mime,/obj/item/clothing/shoes/mime,/obj/item/clothing/under/mime,/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) +"dVd" = (/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/random/crate,/turf/simulated/floor,/area/maintenance/thirddeck/aftstarboard) "dVe" = (/obj/item/frame/light,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dVf" = (/obj/structure/bed,/obj/item/weapon/bedsheet/mime,/turf/simulated/floor/plating,/area/construction/seconddeck/construction2) "dVg" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/universal,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{req_access = null; req_one_access = list(12,25,27,28,35)},/turf/simulated/floor/plating,/area/maintenance/chapel) @@ -11021,7 +11021,7 @@ "edW" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/foyer) "edX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/red{dir = 8},/turf/simulated/floor/tiled,/area/engineering/foyer) "edY" = (/obj/machinery/atmospherics/pipe/simple/hidden/red{dir = 5; icon_state = "intact"},/turf/simulated/floor/tiled,/area/engineering/foyer) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11141,8 +11141,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLakLakLakLakLakLakLakLakLakLakLakLakLaeFaeFakMakgafFafGalzakOakNakNakPakQakRakSafFafKakTaeFaeFaeFaioakUadlaaaaaaaaaaaaajpajpakoakVakWakWakXakYakZalaalbalcaldalealfalgalhalialjalkallalmalmalnakIajxajxaaaaaaaaaaaaadFaloaiyaeZaeZaeZalpaiAagmagmagmagmagmagmagmagmagmagmagmagValqaeZaeZdVQdVSdVRapiaqzdVUdVTdVVdVTdVVdVWdVYdVXdWadVZdVVdVVdVVdVVdWbbmqdWddWcdWedWcdWcdWfdWgaowaafaafaafaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsalsaltaltaltalualtaltalualtaltaltalvaeFalwalxakgafFafGalAalBaAxalCaAyalBaDdafGafFafKalDalEaeFahcaioadladlaaaaaaaaaajpajpakoakoalFakoalGalHalHalHalHalHalHalHalHalHalHalHalHalIalIalIalJakIalKakIakIajxajxaaaaaaaaaadFadFaiyaikaeZalLalMaiAagmagmagmagmagmagmagmagmagmagmagmagValNaijaeZambdfZcYadWibmqdWkdWjdWmdWldWodWndWqdWpdWsdWrdWudWtdWwdWvdWxbmqdWzdWydWBdWAbHAdWCdWDaowaaaaaaaaaaaaaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsaltalRalSalTalUalValWalXalYalZamaamraeFamcajEafEafFaiDaiDahBafFafFafFahBaiDaiDafFafKajEamdaeFameaioadLaaaaaaaaaaaaajpakoakVakWamfamgalHalHalHalHalHalHalHalHalHalHalHalHalHalIalIalIalIamhamialmalnakIajxaaaaaaaaaaaaaejaiyamjaeZaiSamkaiAagmagmagmagmagmagmagmagmagmagmagmagVakfagpaeZamsdWGdWFdWHbmqdWIarMdWJarMbmqbmqdWLdWKdWNdWMbmqarMdWJarMdWObmqdWQdWPdWSdWRdWUdWTdWVaowaaaaaaaaaaaaaafaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsammamnamoamoamoamoamoamoamoampamaamraeFamqajEafEafFanEaoaafFafFafFafFafFanEaoaafFafKajEamtaeFamudWWadLaaaaaaaaaajoajoamvalFakoamwamxalHalHalHamyamzamAamBamCamDamEamBamFamGamHamIamJalIamKamLakIalKamMajwajwaaaaaaaaaaejaiyamNaeZamOamkaiAagmagmagmagmagmagmagmagmagmagmagmagVakfamPaeZapTdWZdWYdXbdXadXddXcdXbdXbdXfdXedXhdXgdXjdXidXkdXbdXmdXldXnaSNdXodXodXodXodXodXodXodXodXoaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsaltalRamRamSamTaSjamUamVamWamXamaamraeFamYamZanaanbanbanbanbanbanbanbanbanbanbanbancandaneaeFanfaioadLaaaaaaaaaajoanganhalFalGanianianialHalHanjanjanjanjanjankanlanmanmannanoanpanqalIalIalIalJalKanransajwaaaaaaaaaaejaiyantaeZanuanvanwanxanxanxanxanxanxanxanxanxanxanxanyanzanAaeZdXpdXrdXqdXqdXsdXudXtdXwdXvdXxdXvdXzdXydXBdXAdXDdXCdXFdXEdXHdXGdXodXIdXKdXJdXMdXLdXKdXNdXobhgbhgaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsammamnamoamoamoamoamoamoamoampamaamraeFamqajEafEafFamNamOafFafFafFafFafFamNamOafFafKajEamtaeFamudWWadLaaaaaaaaaajoajoamvalFakoamwamxalHalHalHamyamzamAamBamCamDamEamBamFamGamHamIamJalIamKamLakIalKamMajwajwaaaaaaaaaaejaiyantaeZanEamkaiAagmagmagmagmagmagmagmagmagmagmagmagVakfamPaeZapTdWZdWYdXbdXadXddXcdXbdXbdXfdXedXhdXgdXjdXidXkdXbdXmdXldXnaSNdXodXodXodXodXodXodXodXodXoaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsaltalRamRamSamTaSjamUamVamWamXamaamraeFamYamZanaanbanbanbanbanbanbanbanbanbanbanbancandaneaeFanfaioadLaaaaaaaaaajoanganhalFalGanianianialHalHanjanjanjanjanjankanlanmanmannanoanpanqalIalIalIalJalKanransajwaaaaaaaaaaejaiyaoaaeZanuanvanwanxanxanxanxanxanxanxanxanxanxanxanyanzanAaeZdXpdXrdXqdXqdXsdXudXtdXwdXvdXxdXvdXzdXydXBdXAdXDdXCdXFdXEdXHdXGdXodXIdXKdXJdXMdXLdXKdXNdXobhgbhgaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsalsaltaltaltaluanDanDalualtaltaltaoTaeFanFanGanHanHanIanHanHanJanKanLanManNanNanNanNanOamtaeFanPaioadladlaaaaaaajpanQanRanSanianiaoJaoKanialHanVanWanXanYanZanZaEyaobaocaodaoealIaofalIaogalIalIaohaoiaojajxaaaaaaadFadFaiyaokaeZaolaomaonaonaonaonaooaopaoqaoraosaosaotaosaosaouaovaeZdXOdXQdXPdXRapiatLdXSapidXUdXWdXVdXXaSNaSNdXYaSNaZYdXZcfodXHdYadXodYbdYcdXJdXMdXLdXKdYddXodXodYfdYedXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaakLatTatTakLakLakLakLaoxaoxaoyaoyaoyaoyaoyaeFaeFaeFaeFaeFaeFaeFaeFaozahcaoAaeFaoBaoBaoBaeFaeFaeFaeFafMaoCaoDadlaaaaaaajpaoEaoFaoGaoHaoIapOarganialHanjaoLaoMaoNaxjanZaoOaoPaoQaoRaoSaGeaoUaoVaoWaoXalIaoYaoZapaajxaaaaaaadFapbapcapdaeZaeZaeZaikapeapeapeaikapfaikapgaikaeZaeZaeZaeZaeZaeZaeZaphaphaphaphaphdYgdYgalralralralralralrdYidYhalralrdXZdYjdYkdWHdXodYldXKdXJdXMdXLdXKdYldXodYmdYodYndXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafakLakLapjapkaplapmapnakLapoapoappapqaprapsaptapuapvapwapxapyapyapzapuapAapAapBapCapDapEapFapCapGafMadlapHapIapJadlaaaaaaajpapKapLapManiapNaNGaNHanialHanjanjanjanjanjapPapQapQapQapRapSaGzapUapVapWapXalIapYapZaqaajxaaaaaaadFaqbaghaqcaqdaqeaqfaqgaqhaqiaqjaqgaqkaqlaqlaqmaqnaqoaqoaqpaqqaqraqmaqsaqtaquaqvaqwaqxaqxalraqydYpaqAaqBaqCalOdYqatMalrdYtdYsdXodXodXodYudYwdYvdYydYxdYAdYzdXodYBdYDdYCdYFdYEdYGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11158,16 +11158,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafakLakLaBfaBfaBgaBhaBiaBjaBkaBlaxTaBmaBmaBmaxVayQaBnayRaBoayRaBpaBqaxVaBraBsaBsaBtaBtaBtaBtaBtaBtaBtaBtaBuaBvaBwaybaaaaaaaBxaByaBzaBAaBDaAqaAmaBCaBBaBGaBHaBIaBJaBJaBKaBJaBEaBFaAvaCWaBOaBPaBQaBRaBSaBTaAzaBUaBVaBWaBXaaaaaaayxaBYazBaAIaBZaCaaCaayyaCbaFDaCdayyaqkaqlaqlayDaCeaCfayDaCgaARaChayDaCiaCjaCkaClaCmaCnaCnalraCoalOaCpaCqaCralralraafaaaaaaaaadXodXodXoeaVeaXeaWdYyeaYebaeaZdXodZbdZbdZbebbdXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLakLaBfaCsaCsaCsaCsaCtaCtaCsaCsaCuaCsaCsaCsaCsaCsaCsaCsaCsaCsaCvaCwaCxaCyaBtaCzaCAaCBaCCaCDaCEaBtaybaCFaCGaybaaaaaaaBxaCHaCIaCJauAaBLaBMaCZaCKaCLaCPaCQaCRaCSaCTaCUaCVaCXaAvaGpaCYaDbaDadVsaDcaHbaAzaDeaDfaDgaBXaaaaaaayxaDhaDiaAIaDjaDjaDjaDkaDlaDlaDlaDkaDmaDkaDnaDkaDjaDjaDjaDjaDjaDjaDjazUazUazUazUazUaDoaDoalralralralravpavpalraaaaaaaaaaaaaaaaaaaaadXodYldXKdXKdYydXKdXKdYldXoebcebeebddXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaDpaDqaDraDsaDtaDuaDvaDwaDxaDtaDyaDzaDAaDBaDCaDDaDEaDFaDGaDHaDIaDJaDKaDLaDMaDMaDMaDNaBtaDOaDPaybaybaaaaaaaBxaDQaCMaDSaCNaCNaykaykaykaykaDUaDVaDWaDXaDYaDZaEaaEbaEcaEdaEeaEfaAzaEgaEhaAzaAzaEiaEjaEkaBXaaaaaaayxayxaElaEmaDjaEnaEoaEpaEpaEpaEpaEqaEraEsaEtaEuaEuaEvaEuaEuaEwaExaDjaGAaEzaEzaEzaEAaEBaEBaECaEzaEzaEzaEDaEDaaaaaaaaaaaaaaaaaaaaaaaadXodYbdZBdXKdYydXKdXKdYddXodXodYfdYedXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaEEaEFaEGaEHaEHaEIaEJaEJaEKaELaEMaENaENaEOaEPaEQaERaESaETaEUaEVaEWaEXaEYaEZaDMaDMaFaaFbaDOaDPaFcaaaaaaaaaaAeaFdaFeaFfaFgauHauHaFhaFhaDTaFiaFjaCUaCUaCUaFkaCVaFlaFmaFnaFoaFpaAzaAzaAzaAzaFqaFraFsaFtaAGaaaaaaaaaaFuaElaFvaDjaFwaFxaFyaFzaFzaFzaFzaFzaFzaFzaFzaFzaFzaFzaFAaFBaFCaDjaHSaFEaFFaFGaFHaFIaSBaFKaFLaFMaFNaEzaEDaaaaaaaaaaaaaaaaaaaaaaaadXoebfdXKdXKdYydXKdXKebgdXobhgbhgaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaEEaFOaFPaFPaFPaFPaFPaFPaFPaFRaFSaEPaEPaFTaEPaEPaFUaFVaFWaFXaFYaFZaGaaDMaGbaGcaGdaHYaBtaDOaDPaFcaaaaaaaaaaAeaAeaGfaFfaFfaGgaDTauHaFhaDTaGhaGiaGjaGkaCUaGlaGmaGnaAvaHdaHcaHPaGqaAzaGraGsaGtaFraGuaAGaAGaaaaaaaaaaFuaElaGvaDjaEnaGwaGxaGyaMtaNbaGyaGyaGyaGyaGyaMtaNbaGyaGBaGwaGCaDjaHSaFEaGDaFJaFJaFJaFJaFJaFJaFJaGEaGFaEDaaaaaaaaaaaaaaaaaaaaaaaadXodXodXodXodXodXodXodXodXoaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaEEaFOaFPaFPaFPaFPaFPaFPaFPaFRaGGaEPaEPaFTaEPaEPaGHaCxaGIaGJaGKaGLaGMaGNaGOaGPaGQaGRaBtaybaGSaFcaaaaaaaaaaaaaBxaFfaFfaFfaFfaGTauHauHauHaGUauHaGVaGWaGXaCUaGYaGZaHaaOeaHRaHTaAvaAvaHeaHfaHgaHhaGtaBXaaaaaaaaaaaaaFuaElaHiaDjaHjaGwaGxaGyaHkaHkaHlaGyaGyaGyaHlaHkaHkaGyaGBaGwaHmaDjaHSaFEaHnaHoaHpaHqaHraHsaHtaHuaFNaEzaEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaHvaFOaFPaFPaFPaFPaFPaFPaFPaHwaHxaHxaHxaFTaEPaEPaHyaCxaHzaHAaHBaEWaEWaGLaHCaEWaEWaEWaEWaHDazhaybaybaaaaaaaaaaBxaBxaFfaFfaFfaFfaFgaHEaHFaHFaHFaHGaHHaHIaHJaHKaHLaAvaAvaAvaAvaAvaFqaGtaFraGtaGtaBXaBXaaaaaaaaaayxayxaElaDkaDjaHMaHNaGxaGyaHOaHVaHQbqBaMzbskaHQbsmaHOaGyaGBaHWaHXaDjaRLaEzaEzaEzaEAaEzaEzaECaEzaEzaEzaEDaEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaEEaEFaEGaEHaEHaEIaEJaEJaEKaELaEMaENaENaEOaEPaEQaERaESaETaEUaEVaEWaEXaEYaEZaDMaDMaFaaFbaDOaDPaFcaaaaaaaaaaAeaFdaFeaFfaFgauHauHaFhaFhaDTaFiaFjaCUaCUaCUaFkaCVaFlaFmaFnaFoaFpaAzaAzaAzaAzaFqaFraFsaFtaAGaaaaaaaaaaFuaElaFvaDjaFwaFxaFyaFzaFzaFzaFzaFzaFzaFzaFzaFzaFzaFzaFAaFBaFCaDjaGCaFEaFFaFGaFHaFIaSBaFKaFLaFMaFNaEzaEDaaaaaaaaaaaaaaaaaaaaaaaadXoebfdXKdXKdYydXKdXKebgdXobhgbhgaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaEEaFOaFPaFPaFPaFPaFPaFPaFPaFRaFSaEPaEPaFTaEPaEPaFUaFVaFWaFXaFYaFZaGaaDMaGbaGcaGdaHYaBtaDOaDPaFcaaaaaaaaaaAeaAeaGfaFfaFfaGgaDTauHaFhaDTaGhaGiaGjaGkaCUaGlaGmaGnaAvaHdaHcaHPaGqaAzaGraGsaGtaFraGuaAGaAGaaaaaaaaaaFuaElaGvaDjaEnaGwaGxaGyaHjaHSaGyaGyaGyaGyaGyaHjaHSaGyaGBaGwaLhaDjaGCaFEaGDaFJaFJaFJaFJaFJaFJaFJaGEaGFaEDaaaaaaaaaaaaaaaaaaaaaaaadXodXodXodXodXodXodXodXodXoaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaEEaFOaFPaFPaFPaFPaFPaFPaFPaFRaGGaEPaEPaFTaEPaEPaGHaCxaGIaGJaGKaGLaGMaGNaGOaGPaGQaGRaBtaybaGSaFcaaaaaaaaaaaaaBxaFfaFfaFfaFfaGTauHauHauHaGUauHaGVaGWaGXaCUaGYaGZaHaaOeaHRaHTaAvaAvaHeaHfaHgaHhaGtaBXaaaaaaaaaaaaaFuaElaHiaDjaMtaGwaGxaGyaHkaHkaHlaGyaGyaGyaHlaHkaHkaGyaGBaGwaHmaDjaGCaFEaHnaHoaHpaHqaHraHsaHtaHuaFNaEzaEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxTalsaCtaHvaFOaFPaFPaFPaFPaFPaFPaFPaHwaHxaHxaHxaFTaEPaEPaHyaCxaHzaHAaHBaEWaEWaGLaHCaEWaEWaEWaEWaHDazhaybaybaaaaaaaaaaBxaBxaFfaFfaFfaFfaFgaHEaHFaHFaHFaHGaHHaHIaHJaHKaHLaAvaAvaAvaAvaAvaFqaGtaFraGtaGtaBXaBXaaaaaaaaaayxayxaElaDkaDjaHMaHNaGxaGyaHOaHVaHQbqBaMzbskaHQbsmaHOaGyaGBaHWaHXaDjaNbaEzaEzaEzaEAaEzaEzaECaEzaEzaEzaEDaEDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLakLaCsaEEaFOaFPaFPaFPaFPaFPaFPaFPaHZaHZaHZaIaaFTaEPaEPaIbaESaIcaHAaIdaIeaIfaDHaIgaESaDOaIhaIiaAcazhaIjaybaaaaaaaaaaaaaBxaBxaFfaFfaFfaFfaIkaIlaImaInazlaIoaIpaIqaIraIsaItaIuaIvaIwaIxaHgaHgaHhaGtaBXaBXaaaaaaaaaaaaayxaIyaElaDjaDjaDjaIzaGxaGyaIAaIBaICaIDaIEaIEaIFbwsaHOaGyaGBaIGaDjaDjalralralralralralralralralralralralralraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCOaEEaFOaFPaFPaFPaFPaFPaFPaFPaIHaIIaIJaIIaIKaENaENaILaIMaINaIOaIPaIQaIRaIQaISaITaDOaIhaAcaAcaIUaIVaybaaaaaaaaaaaaaaaaBxaBxaFfaIWaIXaIYaIZaJaaJbaJcaJdaJeaJfaJgaJhaJiaJjaJkaJlaJmaJnaJoaGtaBXaBXaaaaaaaaaaaaaaaayxaJpaJqaDkaDjaJraGwaGxaGyaJsaTJaJuaJvaJwaJwaJwaJwaJxaGyaGBaGwaJyaDjaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaDRaJzaFOaFPaFPaFPaFPaFPaUcaFPaFRaEPaEPaJAaFTaJBaJCaJDaJEaJFaJGaJHaJIaJJaJKaJLaESaDOaJMaJNaAcazhaJOaybaaaaaaaaaaabaaaaaaaBxaBxaAeaJPaJQaJRaJSaInazlaIoaJTaJUaJVaJWaJXaJYaJZaKaaKbaKcaAGaBXaBXaaaaaaaabaaaaaaaaaayxaKdaElaKeaDjaJraGwaGxaGyaHOaKfaKgaKhaJwaKiaKjaKkaKlaGyaGBaGwaJyaDjaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaKmaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCOaEEaFOaFPaFPaFPaFPaFPaFPaFPaHwaHxaKnaHxaKoaCsaCsaCsaCvaCvaCvaKpaKqaKraKqaKqaESaybaybaybaybazhaKsaKtaKtaKtaaaaaaaaaaaaaaaaaaaAeaAeaBxaBxaBxaAeaAeaKuaKvaJUaKwaKxaAGaAGaBXaBXaBXaAGaAGaaaaaaaaaaaaaaaaaaaKyaKyaKyaKzaElaKAaDjaKBaKCaGxaGyaHOaHOaHlaHkaKDaKhaHlaHOaHOaGyaGBaKEaKFaDjaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaCsaEEaFOaFPaFPaFPaFPaFPaFPaFPaKGaKGaKGaKHaKIaCsaKJaKJaKJaKJaKJaKpaKKaKLaKMaKqaKNaKNaKNaKNaybazhaKsaKOaKPaKtaKtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKQaKRaKSaJUaKTaKUaKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKyaKyaKVaKWaKzaElaKXaDjaJraKYaGxaGyaGyaHOaKZaLaaJwaLbaLcaHOaGyaGyaGBaKYaJyaDjaaaaaaaaaaaaaaaaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaEEaFOaFPaFPaFPaFPaFPaFPaFPaIHaIIaIIaIIaFTaLdaKJaKJaKJaKJaKJaKpaLeaLfaLgaKqaLhaAcaAcaAcaLiazhaLjaLkaLlaLmaKtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKQaLnaLoaLpaLqaLraKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKyaLsaLtaLuaLvaElaLwaDjaJraLxaGxaGyaGyaHkaLyaJwaJwaJwaLzaHkaGyaGyaGBaLxaJyaDjaDkaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaEEaFOaFPaFPaFPaFPaFPaFPaFPaIHaIIaIIaIIaFTaLdaKJaKJaKJaKJaKJaKpaLeaLfaLgaKqaRLaAcaAcaAcaLiazhaLjaLkaLlaLmaKtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKQaLnaLoaLpaLqaLraKQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKyaLsaLtaLuaLvaElaLwaDjaJraLxaGxaGyaGyaHkaLyaJwaJwaJwaLzaHkaGyaGyaGBaLxaJyaDjaDkaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaLAaFOaFPaFPaFPaFPaFPaFPaFPaFRaEPaEPaEPaLBaLCaKJaKJaKJaKJaKJaKpaLDaLEaLFaKqaAcaAcaAcaLGaybaLHaKsaLIaLlaLJaKtaaaaaaaaaaaaaLKaLLaLMaLLaLNaaaaaaaLOaLOaLPaJUaLQaLRaLRaLRaLRaLRaLRaLSaLSaLSaLRaLRaLRaLRaKyaLTaLtaLUaKzaElaDkaDjaDjaLVaLWaGyaGyaKhaLXaLXaJwaLXaLXaKhaGyaGyaGBaLYaDjaDjaDjaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaEEaFOaFPaFPaFPaFPaFPaFPaFPaFRaLZaEPaEPaFTaMaaKJaKJaKJaKJaKJaKpaKqaMbaKqaKqaMcaMdaMeaMfaMfaMgaKsaMhaLlaMiaKtaaaaaaaaaaaaaMjaMkaMlaMmaMjaaaaaaaaaaLOaMnaJUaMoaMpaMqaMraMsaSbaLSaMuebhaMwaMxaMybCFaLRaMAaMBaLtaLuaKzaMCaDjaDjaMDaMEaLWaGyaGyaHOaMFaKhaMGaKhaHlaHOaGyaGyaGBaMHaMIaDjaDkaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaCsaEEaFOaFPaFPaFPaFPaFPaFPaFPaFRaMJaMKaMLaMMaCsaMNaKJaKJaKJaKJaMfaDOaDOaDOaybaybaybaybaMfaMOaLHaKsaKsaMPaKsaKtaMQaMQaMQaMRaMjaMSaMTaMUaMjaMVaMQaMQaMQaMWaMXaMWaLRaMqaMYaMZaTgaNaaNdaNcaNfaNeaNgbCFaLRaKzaKzaNhaKzaKzaNiaDkaDjaNjaNkaLWaGyaGyaKhaNlaNmaJwaNmaNnaKhaGyaGyaGBaNkaJyaDjaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11386,9 +11386,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJaaaaaaaaabgvbsRbZMbsSbpFbpGbtibxTbxWbxUbxUbxVbxYbxZbwwbxXbycbydbyabybbyfbygbyebwBbzebuwbyhbwObwPbwQbwRbCqbYsbwUbwUbwUbwUbwUbwUbwVbwWbwXbrbbwYbvNbwZbvNbvPbrbbvNbxabrbbvNbxbbrbbvNbxcbrbbxdbxebxfbxgbxhclfclgcnebuWbxkbxlbxmbxnbxobuWbxpbxqbxrbxsbxtbuZbxubxvbvZbxwbxibxxbvgaaaaaaaaaaaaaaabvgbvgbvibvibvibvgbxybxzbxAbxBbxCbxDbxEbxFcePccVcdkbxHbxHbxIbxIaafaafaafbhgaafaafaafaafbxJbxKbxLbhgbxMbxNbxObxPbxQaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgvbgvbgvbgvbgvaaabqCbumbqEbzhbzfbzgbzjbAnbzibAqbArbAsbTHbXDbzibnLbAtbAubBQbuwbAvbyibyjbuwbvCbxGcozbuxbuxbuxbuxbuxbuxbuxbymbynbrbbyobvNbypbyqbvPbrbbyrbysbrbbyrbytbrbbyrbyubrbbyvbywbyxbxgbxhcnfcoUcJZbuWbyybyzbyAbyBbyCbuWbyDbxqbyEbxqbyFbuZbyGbxvbvZbvZbyHbvZbvZbvgbvgbvgbvgbvgbvgebsbyIbyJbyKbyKbyLbyMbyMbyLbyNcePbyOcqUcyVcqTbyTbxHbyUbyVbxIbxIaaaaaabhgaaaaaaaaaaafbyWbyXbyYbyZbzabyZbyWbzbbyWaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaabkHbzcbzdbBRbkAbkAbBTbBVbzkbuvbBWbzlbwwbuvbuvbDpbBYbDobqIbuwbuwbzmbuwbuwbuxbAObzobzpbuxbzqbzrbzsbztbuxbymbynbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbrbbzubzvbzwbzxbxhcOBdcSdfrbuWbzAbzBbzCbzDbzEbuWbzFbzGbzHbxqbzIbuZbzJbzKbzLbzMbzNbzNbzNbzNbzNbzNbzObzNbzNbzNbzNbzPbzQbzRbzSbzTbzUbzVbzWbyObyPcHvbyObzYbzZbAabAbbAcbAdbxIaaaaaabhgaaaaaaaaaaaabyWbAebFdbAfbAgbAhbyWbAibyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjaaaaaaaaaaaaaaabAjaaaaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAkbAkbAkbAkbAkbAkbAkbAkbAkbAlbAmbDvbDqbApbETbFhbELbEMbAwbGFbGmbEMbAxbAybAzbAAbABbACbvCcKMbAEbAFbuxbDJbymbymbymbAGbAHbAIbwUbAJbAKbALbAMbwUbwUbwUbwUcNqcOFcQhcOEcOFcQibAQbuxbARbASbATbxhbxhbxhbxhbuWbAVbAWbAXbAYbAZbuWbBabBbbBcbBdbBebuZbBfbxibBgbBhbBibBjbBkbxibxibBlbBlbBlbBlbBlbBlbBlbBmbBnbBobBpbBqbBrbBrbBrbBrbBsbBsbBsbBsbBsbBtbBubBvbBwbBwbBxbBwbBxbBwbBxbBwbBwbBybBzbBAbBBbBCbyWbBDbyWbyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjaaaaaaaaaaaaaaabAjaaaaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAkbAkbAkbAkbAkbAkbAkbAkbAkbAlbAmbDvbDqbApbETbFhbELbEMbAwbGFbGmbEMbAxbAybAzbAAbABbACbvCcKMbAEbAFbuxbDJbymbymbymbAGbAHbAIbwUbAJbAKbALbAMbwUbwUbwUbwUcNqcOFcQhcOEcOFcQibAQbuxbARbASbATbxhbxhbxhbxhbuWbAVbAWbAXbAYbAZbuWbBabBbbBcbBdbBebuZbBfbxibBgbBhbBibzzbBkbxibxibBlbBlbBlbBlbBlbBlbBlbBmbBnbBobBpbBqbBrbBrbBrbBrbBsbBsbBsbBsbBsbBtbBubBvbBwbBwbBxbBwbBxbBwbBxbBwbBwbBybBzbBAbBBbBCbyWbBDbyWbyWaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaaaaabAjbAjbAjbAjbAjbAjbAjaaaaaaaaabAjecAbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafaaaaaabBEbBFbBGbBHbAkbBIbBJbBKbBLbBMbBMbBNbAkbBObBPbIobGJbBSbJSbBSbIqbBSbLjbBXbJUbBZbCabCbbCcbCdbCebCfbvCbCgbzobChbuxbCibCjbymbymbuxbCkbClbymbCmbCnbuxbuxbCobuxbuxbCpcRncgecSBcRocSBcSEbuxbuxbCsbCtbCubvZbvZbCvbyJbuWbCwbCxbuWbuWbuWbuWbuZbuZbCybuZbuZbuZbBfbxibCzbCAbBibwnbCBbCCbCDbBlbCEcaRbCGbCHbCIbBlbCJbCJbCKbCJbCJbBrbCLbCMebubBsbCObBsbCPbBsbCQbCRbCSbBwbCTbCUbCVbCVbCWbCXbCYbBwbCZbDabDbbDcbDdbDebDfbDgbyWaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaadaadaaaaabaaaaaaaaabBEbDhbDhbDibAkbDjbDjbDjbDkbBMbDlbDmbAkbDnbNkbPTbLlbDrbDsbDtbCfbDuedNbDwecRbDubDybDybDzbDAbDBbDybuxbDCbDDbFebuxbuxbuxbDFbymbuxbCrbDGbDGbDHbDGbDGbDIbymbImbuxbDKbymbDLbuxbvFbymbCrbymbuxbDMbDNbDObvZbxibxibzzbDPbxibDQbAUbAUbAUbAUbBgbDRbDSbDTbDUbDVbDWbDXbDYbvZbDZbDZbDZbDZbEabBlbEbbEcbEdbEebEfbFMbEhebvbEjbEkbElbBrebwbEndgGbBsbEpbBsbEqbBsbBsbErbEsbEtbEubEvbCVbEwbExbEybEzbBwbEAbEAbEAbFUbEAbEAbEAbEAbEAbEAaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaadaadaaaaabaaaaaaaaabBEbDhbDhbDibAkbDjbDjbDjbDkbBMbDlbDmbAkbDnbNkbPTbLlbDrbDsbDtbCfbDuedNbDwecRbDubDybDybDzbDAbDBbDybuxbDCbDDbFebuxbuxbuxbDFbymbuxbCrbDGbDGbDHbDGbDGbDIbymbImbuxbDKbymbDLbuxbvFbymbCrbymbuxbDMbDNbDObvZbxibxibBjbDPbxibDQbAUbAUbAUbAUbBgbDRbDSbDTbDUbDVbDWbDXbDYbvZbDZbDZbDZbDZbEabBlbEbbEcbEdbEebEfbFMbEhebvbEjbEkbElbBrebwbEndgGbBsbEpbBsbEqbBsbBsbErbEsbEtbEubEvbCVbEwbExbEybEzbBwbEAbEAbEAbFUbEAbEAbEAbEAbEAbEAaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaabAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaadaadaagaadaadaadaagaafaaaaafaaaaaaaaaaaaaaaaaaaaabBEbECbEDbEEbAkbEFbEGbEGbEHbEGbEIbEJbAkbEKbNkedObENbEObEPbEQbERbESbOXbEUedPbEWbEXbEYbEZbFabFbbFcbuxbGSbGTbFfbFgcbEbuxbvGbvFbuxbFibDGbFjbFkbFlbDGbFmbFnbChbuxbzpbymbFobuxbvGbymbFpbFqbFrbFsbFtbFubFvbDTbFwbDTbFxbDTbFybDTbDTbDTbDTbFzbFAbFBbFBbFBbFBbFBbFBbFCbFDbDZbFEebxbFGbEabFHbFIbFJbFKbFLbFVbFMbFNbFObFPbEjbHxbKtebzebybFTbGbbGibFWbFXbFYbBsbFZbGabHybGcbGdbGebGdbGfbGgbGhbKrbGjbGkbGlbGpbGqbGnbGobJpbGrbGsaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaabBEbGtbGubGvbAkbGwbEGbEGbGxbGybGzbGAbGBbGCbGDedRedQcFcbGGbGHbERbGIbXNbGKedSbGMbEXbGNbGObGPbGQbGRbuxbGUbVfbuxbGVcbEbuxbAQbAQbuxbGWbDGbGXbFkbGYbDGbuxbuxbuxbuxbGZbGZbGZbuxbuxbuxbuxbuxbHabHbbHcbHdbHabvZbvZbvZbvZbvZbvibvibvibvZbvZbvZbvZbFBbHebHfbHgbHhbFBbHibHjbHkbHlbHmbHnbEabHobHpbEcbHqbHrbHsbEgbHtebBebCebAbFQbBrebFebDebEbBsbHCbHDbHEbHFbBsbHGbHHbBwbHIbHJbHKbHJbHKbHJbHLebGbHMbHNbHObHPbHQbHRbHSbHTbHUbHVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaabAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjbAjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaaaafaaabHWbHWbHWbHWbHWbHWbHWbHXbHXbBEbHYbHZbDibAkbIabIabIbbIcbIdbIebIfbAkbIgbIhbIibIjbIkbIlccMbCfbInedUbIpedTbIrbDybIsbItbIubIvbIwbIxbIxbIybIxbIxbIxbIxbuxbuxbuxbIzbDGbIAbIBbICbDGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIDbIEbIFbIGbIHbIIbIDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFBbIJbIKbILbILbIMbINbBqbDZbIObIPbIQbEabIRbISbITbIUbIVbIWbEgbEjebIbIXebHbIZbBrbBrbBrbBrbBsbJdbJebJfbJgbBsbJhbJibBwbBwbJjbJkbJlbJjbJmbJjbBxbJnbJobKFbJqbJrbJsbJtbJqbJubJvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11427,9 +11427,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafcLzcLAcDHcLBcLCcLDcDHcKqcLEcLFcLGcLHcLIcLJcLKcLLcGTcLMcIMcIMcDUcLNcLOcKzcLPcLQcDUcLRcLScHgecoecpecpecpcLScLVcKGcLWcLWcLWcLWcLWcLXcLYcLYcLZcLYcoVcoVcoVedbedccKNcMacMbcMccKNcKNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactUcMdcMecMfcMgcMhctUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKRcKRcMicMjcKRcMkcKVcMlcMmcMncKTcMocMpcMqcMrcMscKZcMtcMucMvcMwcMxcLbcMycMzcMAcMBcMCcLhcMDcMEcMFcMGcMHcMIcMJcMKcMLcMMcMNcMOcMOcMOcMOcMOcMOcMPcMQcMRcMScMTcMUcMVaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaacMWcDHcFpcFpcDHcDHcMXcMYcMYcMXcMZcNacMXcMXcLLcGTcIMcIMcIMcDUcNbcNccNdcNecNfcDUcNgcHgcHgcNhcNicHgcHgcHgcNjcNkcLWcLWcLWcLWcLWcLXcNlcNmcNncLYcCwcQkcoVcTDedgcNrcNscNscNtcNucKNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactUcNvcNwcNxcNycNzctUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKRcNAcNBcNCcKRcNDcKVcNEcNFcNGcKTcNHcNIcNJcNKcNLcNMcNNcNOcNPcNQcNRcLccNScNTcNUcNVcNWcNXcNYcNZcOacObcOccLhcOdcOecOfcOgcOhcMOcOicOjcOkcPucMOcOmcOncLucOocOpcOqcLyaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacMXcOrcOscOtcMXcLLcGTcIMcIMcIMcDUcDUcDUcDUcDUcDUcDUcOucOvcHgcHgcOwcOwcOwcHgcOxcOycLWcLWcLWcLWcLWcLXcOzcOAdUVcLYcOCcBbcODedhedicKNcPVcOHcOIcOJcKNcoVcoVcoVcoVczlczlczlcoVcoVcoVcoVcoVcOKcOLcMfcOMcOKcpkcpkcpkcpkcpkczCczCczCcpkcpkcpkcpkcKRcONcOOcOPcKRecqcKVcORcOScOTcKTcOUcOVcOWcOXcOYcKZcOZcPacPbcPccPdcLfcNScNTcPecPfcPgcPhcPicPjcPkcPlcPmcLhcPncPocPpcPqcPrcMOcPscPtcPtcSLcMOcPvcPwcPxcPycPzcPAcKlaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacMXcPBcPCcPDcMXcLLcGTcGTcPEcIMcFucFucIMcIMcIMcPFcGTcEacPGcEacEacPHcPIcPJcPKcPLcPMcLWcLWcLWcLWcLWcLXcPNcPOcPPcLYcPQcPRcoVcPScPTcKNcKNcKNcKNcKNcKNcPWcHwcHwcQacQacPYcQacQacQacQacQacQacQbcQccQdcQecQfcQgcQgcQgcQgcQgcQgcURcTHcpkcQjcSpcQlcKRcQmcOOcQncKRcQocKVcKVcQpcKVcKTcQqcQrcQscQtcQucKXcQvcQwcQxcQycPdcLccNScQzcQAcQBcQCcQDcQEcQFcQGcQHcQIcLhcLlcLlcLlcLlcLlcMOcPscQJcQKcSLcMOcQLcQMcKlcKlcKlcKlcKlaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaafaaaaaaaaaaaacMXcQNcQNcMXcMXcLLcIMcGTcGTcFucFucGTcGTcGTcGTcGTcGTcQOcQOcQOcEacEacEacEacQPcQQcKGcLWcLWcLWcLWcLWcLXcLYcKUcLYcLYcoVcoVcoVcQScQTcQUcHwcQVcQWcQXcHwcHxcBbcBbcBbcBbcQYcQZcAYcPUcPUcRdcRecoVcRfcRgcRhcpkcRicRjcRicRkcRlcRmcWecWcedmedpedpedocKRcKRcRpcKRcKRcQocpkcGjcRqcRrcLacRscRtcUgcRvcRwcKZcRxcRycRzcRAcRBcLbcRCcRDcREcRFcRGcRHcRIcRJcRKcRLcRMcRNcROcRPcRQcRRcRScMOcRTcRUcPtcRVcMOcRWcRXcpwaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaadaadaaaaaaaaacMXcRYcRZcSacMXcSbcKvecscSdcSecSfcSgcShcIMcSicIMcSjcSkcSkcSkcSlcSmcSmcEacEacEacKGcKGcKGcKGcKGcKGcKGcQOcSncQOcGTcSocGTdTdcBbcFUcBbcSqcSrcPScNocBbcSucSvcSwcSucSucSucSucSucSucSucSucSucSucSxcSycSzcSAcSAcSAcSKcSAcSAcSAcSAdaMedvedredvedtcSFcSGcSHcSDcSDcSIcSJcTucTycSMcLacLacLacLacLacLacLacSNcLbcLbcLbcSOcLbcSPcSQcSRcSScSPcLhcSTcLhcLhcLhcMIcSUcSVcSWcSXcSYcSZcTacPtcTbcTccTdcTecTfcTgcpwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacMXcPBcPCcPDcMXcLLcGTcGTcPEcIMcFucFucIMcIMcIMcNocGTcEacPGcEacEacPHcPIcPJcPKcPLcPMcLWcLWcLWcLWcLWcLXcPNcPOcPPcLYcPQcPRcoVcPScPTcKNcKNcKNcKNcKNcKNcPWcHwcHwcQacQacPYcQacQacQacQacQacQacQbcQccQdcQecQfcQgcQgcQgcQgcQgcQgcURcTHcpkcPFcSpcQlcKRcQmcOOcQncKRcQocKVcKVcQpcKVcKTcQqcQrcQscQtcQucKXcQvcQwcQxcQycPdcLccNScQzcQAcQBcQCcQDcQEcQFcQGcQHcQIcLhcLlcLlcLlcLlcLlcMOcPscQJcQKcSLcMOcQLcQMcKlcKlcKlcKlcKlaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaafaaaaaaaaaaaacMXcQNcQNcMXcMXcLLcIMcGTcGTcFucFucGTcGTcGTcGTcGTcGTcQOcQOcQOcEacEacEacEacQPcQQcKGcLWcLWcLWcLWcLWcLXcLYcKUcLYcLYcoVcoVcoVcQjcQTcQUcHwcQVcQWcQXcHwcHxcBbcBbcBbcBbcQYcQZcAYcPUcPUcRdcQScoVcRfcRgcRhcpkcRicRjcRicRkcRlcRmcWecWcedmedpedpedocKRcKRcRpcKRcKRcQocpkcGjcRqcRrcLacRscRtcUgcRvcRwcKZcRxcRycRzcRAcRBcLbcRCcRDcREcRFcRGcRHcRIcRJcRKcRLcRMcRNcROcRPcRQcRRcRScMOcRTcRUcPtcRVcMOcRWcRXcpwaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaadaadaaaaaaaaacMXcRYcRZcSacMXcSbcKvecscSdcSecSfcSgcShcIMcSicIMcSjcSkcSkcSkcSlcSmcSmcEacEacEacKGcKGcKGcKGcKGcKGcKGcQOcSncQOcGTcSocGTdTdcBbcFUcBbcSqcSrcPScRecBbcSucSvcSwcSucSucSucSucSucSucSucSucSucSucSxcSycSzcSAcSAcSAcSKcSAcSAcSAcSAdaMedvedredvedtcSFcSGcSHcSDcSDcSIcSJcTucTycSMcLacLacLacLacLacLacLacSNcLbcLbcLbcSOcLbcSPcSQcSRcSScSPcLhcSTcLhcLhcLhcMIcSUcSVcSWcSXcSYcSZcTacPtcTbcTccTdcTecTfcTgcpwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabfGaafaafaafaafaaaaaaaaacMXcMXcSbcKucKucKucThcTicTicTicTjcTicTicTicTkcKucKucKucKucThcKucKucKucKucKucKucKucKucTlcTmcTncTocTpcKucTqcTrcTscTtcTJcTJcTJcTJcTJcVYcSucTvcTwcRbcRacSucStcTxcUCcRccSscTEcSucTzcTAcXacSAcTGcTIcUucUvcUvcUMcSAcUNcSAcpkcpkcpkcpkcpkcpkcpkcpkcpkcTKcsFcTLcTMcTNcTOcTPcTQcTQcTRcTScTTcTUcTVcTWcTXcSRcTYcTZcUacUbcUccSRcUdcTWcTVcTUcUecSUcUfcXCcUhcUicUjcMOcUkcUlcUmcUncUocUpcUqcpwaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaaaaacMXcMXcMYcMYcMYcMXcMXcMXcMYcMYcMYcMXcMXcMXcMXcMXcMXcMXcMXcIMcIMcIMecucIMcIMcIMcIMcIMcIMcIMcMXcMXcMXcMXcUrdaPcUtcTJcUycUwcUxcUYcUZcSucUzcTwcUDcUAcUBcUGcUHcUEcUFcUIcUScSucUJcUKdfkcSAcSAcSAcUOcUPcUQcUTcSAcUUcUXcVacVbcVccWdcWfcWkcWncWocpkcpkcpkcTLcVfcVhcVdcVecVgcWbcGjcTScVicUacVjcVkcVlcSRcVmcVncVocVpcVqcSRcVrcVkcVjcUacVscSUcSUcSUcSUcVtcSUcMOcMOcMOcMOcMOcMOcVucVvcVwaafaafaafabcaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacMXcMXcVxcVycVzcVAcVBcVCcVDcVEcVFcMXcMXaaaaaaaaaczledbcVHcVKcVIcVIcVJcVNcVOcSucVLcVQcVRcVPcSucVTcVUcVScVMcWacUVcSucVVcVWcVXcSAcWpcWqcWrcWWcXbcXccXdcXecXfcVacXgcXjcYrcWfcYscYtcYvcpkcXkcpkcTLcWlcWmcWmcWlcXlcXmcXncXocWscWtcWucWvcWwcWxcWycWzcWAcWycWycWxcWAcWBcWCcWycWDcWEcQRcWGcWHcWIcWJcWKcWLcWMcWNcWOcWPcWQcWRcWSaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11437,9 +11437,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaabaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacUrcVGcXrcTJcTJcTJcTJcXucTJcTJcXscXxcYjcXvcXwcYncYocYkcYmcYpcYqddAcYucUKddzdhacZwcZzcZBdhacYFcYGcSAcUNcSAcVacVacZCcVacWfcWfcZDcWfcpkdmFdmFcZEcYLcYMcYNcYOczCczCcTRcTScTScYPcYQcYRcYScYRcSPcYTcYUcYVcSPcYWcYXcYYcYZcYYcZacZbcZbcZbcZccZdcZccZecZfcZgcZfcZhcZicZjcZicWSaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaagaadaadabcaagaagaadaadaadaadaafaaeaaaaafaagaadaadaadaadaadaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacUrcUscZkcZncTJcYIcZPcZmcYJcWhcZlcZqcZrcYmcZpcZtcZucZscYqcZvcYqddAcZxcZycZAdaQdaRdaSdaTdhacZFcYGcZGcZHcZIcZJcZMcZNcZGcZOcZQcZRdaqdardasdasdatcTRcZTcZTcTRaaaaafaaaaaaaaacYPcZUcZVcZWcZXcZYcZYcZZcZYcZYdaadabdacdaddaedafdagdahcZbdaidajdakcZedaldamdancZhcWScYicWScVwaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacUrdaodapdawdaxdaudavdaAdavdaydazdaGdaHdaBdaCdaKdaLdaIdaJdaNdaOdfUdaDdaEdaFdcIdcJdcMddrdhadaUdaVdaYdbvdbMdbOdbPdbQdbPdbRdbSdbYdbZcYHdiUdnMdcEcTRdaWdaXdcHaaaaafaaaaaaaaacYPdaZdbadbbdbcdbddbedbfdbgdbhdbidbjdbkdblcYYdbmdbndbocZbdbpdbqdbrcZedbsdbtdbucZhaaaaaaaaaaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabcaagaadaafaaaaaaaaaaadaadaadaaaaaaaaaaaaaaacUrdbwdbxdbzcTJdbyddFdbBdbCdbAcZKdbDdbEcYmcZpdbGdbHcYqdbFdbJcYqdkmdbKcUKddzdaQddwdegdexdhadcNcYGdcOdcUdcZddsddBddCddDddEddDddDddDcYHddMddYdeadmGaaaaaaaaaaaaaafaaaaaaaaacYPdcadcbdccdcddbddcedcfdcgdbhdchdcidcjdckcYYdcldcmdcncZbdcodcpdcqcZedcrdcsdctcZhaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabcaagaadaafaaaaaaaaaaadaadaadaaaaaaaaaaaaaaacUrdbwdbxdbzcTJdbyddFdbBdbCdbAcZKdbDdbEcYmcZpdbGdbHcYqdbFdbJcYqdkmdbKcUKddzdaQddwdegdexdhadcNcYGdcOdcUdcZddsddBddCddDddEddDddDddDcYHddMdcRdeadmGaaaaaaaaaaaaaafaaaaaaaaacYPdcadcbdccdcddbddcedcfdcgdbhdchdcidcjdckcYYdcldcmdcncZbdcodcpdcqcZedcrdcsdctcZhaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaaaaaaacUrdcudbTdbWcTJdbNcZKdbUdcVdbXcZKdbDdcvcYmcZpdczdcAdcwdcxdcCdcDdcBdcKdcLdefdhadhadfcdaQdhadeccYGdcOdeecYHcYHcYHdehcYHcYHcYHcYHdeicYHcYHcYHdejdmGaaaaaaaaaaaaaafaaaaaaaaacYPddaddbddcddddbdddeddfdcgdbhddgddhddiddjcYWddkddkddkddkddlddmddlddnddoddpddocZhaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaadaafaafaafaafcUrddXdcPdcRcTJdcFdbVdcQdcTcZlcZKcZqdcWcYmcZpdcYddtcYqdcXdduddvddAddycUKdewdfHcYHdetdeydezdeAcYGdcOdeGdeMddZddZddZddZddZddZddZddZddZddZdeMdejdnfaaaaaaaaaaaaaafaafaafaafcYPcYPddNddOddPddQddRddSddTddQddUddVddWcYWcYWaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaagabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaadaafaafaafaafcUrddXdcPddYcTJdcFdbVdcQdcTcZlcZKcZqdcWcYmcZpdcYddtcYqdcXdduddvddAddycUKdewdfHcYHdetdeydezdeAcYGdcOdeGdeMddZddZddZddZddZddZddZddZddZddZdeMdejdnfaaaaaaaaaaaaaafaafaafaafcYPcYPddNddOddPddQddRddSddTddQddUddVddWcYWcYWaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaagabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaacUrddXddGecMcTJddxddJddHddIddKddLcTJdebcYqcZpcYqcYqcYqcYqcYqcYqddAddycUKdfkdgddeNdePdfadfbdfddfjdfodfpdeMddZddZddZddZddZddZddZddZddZddZdfsdcEdnfaaaaaaaaaaadaagaaaaaaaaaaafcYPcYPcYPcYPddQddQddQddQddQcYWcYWcYWcYWaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrddqcoVcoVcTJdekcZKcZKcZKcZldeldjFdemdemdendbHderdepdeqdeudevcYwdescVWdfydipdftdfudfvdfwdfIcYGdfNdfTdeMddZddZddZddZddZddZddZddZddZddZdeMdcEdnfaaaaaaaagaadaaaaaaaaaaaaaagaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaaaacUrddXdeBcAYcTJcZLdeCdeFdeddeDdeEcXpdeIcYqdeHdeKcYwdeJddAddAdeLcYwdeQcUKdgcdgvcYHdfVcYGdfWdfYcYGdfNdgadgbddZddZddZddZddZddZddZddZddZddZdgedcEdmGaafaafaadaaaaabaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaafaafaadaadaadaafaaeaagaadaadaadaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11458,17 +11458,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrdkTdmddiMdmOdmfdmOdmgdjsdjsdkYdmidiRdlxdmjdlUdjsdmkdmldmmdmndmodmOdmqcUKdlidhudhxdmrdmtdmudmvdmwdmxdjYdjXdjYdjYdjZdkadkbdkcdkddkbdkbdkedkfdkgdkhdkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrcAYdjjdkldlDdmydlDdlDdmzdmAdmBdmAdmAdmAdmAdmCdmDdmVdmldmWdmYdmodmOdfkcUKdmsdlEdlFdlGdlJdlKdlLdlYdlZdkHdmEdkJdkHdkKdkLdkMdkNdkOdkNdkNdkPdkQdkRdkSdkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUrcUrcUrcUrcUrcUrcUrdmediMdiMdkrdksdnJdnKdmZdoodoqdoudoudnLdmhdoxdoydozdoAdoAdlHdmOdfkdncdowdixdixdmUdixdixdixdixdmXdixdixdixdlmdixdlndixdlodlpdlqdhxdnadhxdnbdixdjAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdmHdmHdmIdmHdmHdqndmKdmLdmMdiMdmNdmOdmOdmPdmQdiMdiMdiMdiMdiMdiMdiMdiMdiMdmOdmOdmOdmRdmSdcLdmTdnednhdnhdnxdnhdnydnDdnednednednednEdnFdnGdixdnHdnHdnIdnNdnOdhxdordosdotaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdmHdmHdmIdmHdmHdprdmKdmLdmMdiMdmNdmOdmOdmPdmQdiMdiMdiMdiMdiMdiMdiMdiMdiMdmOdmOdmOdmRdmSdcLdmTdnednhdnhdnxdnhdnydnDdnednednednednEdnFdnGdixdnHdnHdnIdnNdnOdhxdordosdotaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdrgdrgdrgdnidnidmKdnjdnkdnkdnldnkdnmdnndnodnpdnqdnrdnsdntdnudnvdnwdpNdpOdnzdnAdnBdfkcUKdVAdnedovdovdoCdoDdpkdoFdnedpcdpcdnedixdixdixdixdixdixdixdixdmadixdixdixdjAaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmIdnPdnQdnRdnRdnSdmIdnTdnUdnVdnWdnXdnYdnZdoadobdocdoddoedofdogdohdoidojdokdoldomdomdomdondqodopdnednednedpedpfdpgdphdpidpjdsRdnedpldpmdpndpodppdpqdprdnedpsdcGdpLdpMdpPaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmIdnPdnQdnRdnRdnSdmIdnTdnUdnVdnWdnXdnYdnZdoadobdocdoddoedofdogdohdoidojdokdoldomdomdomdondqodopdnednednedpedpfdpgdphdpidpjdsRdnedpldpmdpndpodppdpqdqndnedpsdcGdpLdpMdpPaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdoGdoHdoHecTdoJdmcdoLdoMdoNdoOdoPdoQdoRdoPdoPdoOdoSdoTdoUdoVdoWdoXdoYdoZdpadpbdoYdfkcUKdpddnedpQdpRdpUdqkdqldqmdnedoEdoEdnedqOdqpdpqdqqdqrdqsdqtdnedqudqvdcGdqwdpPaafaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdptdoHdoHdoIdoJdmcdoLdpudpvdoOdpwdpxdpydpzdpAdoOdpBdpBdpCdpBdpDdpEdpFdpGdpFdpHdpIdpJcUKdpKdnednednednedqxdnednhdnednednednedqydqzdpqdsbdqAdpqdqtdnedqBdcGcZScZScZScZSaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmIdpSdoKdpTdpTdnSdmIdmKdpVdpudpWdoPdpXdpYdpZdpXdpXdqadqbdqcdqddqcdqedpEdqfdqgdqhdpFdqidfkcUKdqjdqCdqSdqTdqUdqVdqWdqXdqYdqZdradrbdrcdrddredrfdrydrydrydrzdrAdrBdhhdrCdrDdpPaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdqDdqDdqDdnidnidmKdqEdpudqFdoPdqGdqHdqIdqJdqKdoOdqLdqMdqNdqcdqPdpEdrsdqQdqRdpFdqidfkdsLdqjdqCdqSdrEdpqdpqdrFdrGdrGdrHdrGdrIdrJdrKdrGdrLdrGdrMdscdnedsddsedsfdcGdsgdpPaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdmHdmHdmIdmHdmHdrtdmKdrhdridrjdoOdrkdrldrmdrndrodoOdrpdrqdrrdqcdrXdpEdrYdrudrvdrwdrxdfkdtrdtsdsidsjdskdsldsmdrGdrGdsndnDdpqdsodnednednedspdnednednednedsEdsFdhhdsGdsHdpPaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdngdqDdqDdqDdnidnidmKdqEdpudqFdoPdqGdqHdqIdqJdqKdoOdqLdqMdqNdqcdqPdpEdrsdqQdqRdpFdqidfkdsLdqjdqCdqSdrEdpqdpqdrFdrGdrGdrHdrGdrIdrJdrKdrGdrLdrGdrMdrtdnedsddsedsfdcGdsgdpPaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmHdmHdmHdmIdmHdmHdscdmKdrhdridrjdoOdrkdrldrmdrndrodoOdrpdrqdrrdqcdrXdpEdrYdrudrvdrwdrxdfkdtrdtsdsidsjdskdsldsmdrGdrGdsndnDdpqdsodnednednedspdnednednednedsEdsFdhhdsGdsHdpPaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmKdmKdmKdmKdmKdmKdmKdrNdrOdpWdoPdrPdrQdrRdrSdrTdoOdrUdqcdrVdrWdCFdpEdCZdrZdsadpFdqidfkcUKdXTdsIdsJdsKdsMdsNdrGdrGdsndpqdpqdsOdsPdnedpqdsQdshdnedsSdnedtkdtldhhdhhcZScZSaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadmKdsqdsrdqFdoPdssdpxdssdstdsudoOdsvdqcdswdqcdsxdpEdsydszdsAdpFdsBdsCcTAdsDdsIdtmdtndtodsNdrGdrGdsndpqdtpdpqdpqdnhdpmdtqdttdnedtudnedtvdFLcZSaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsTdsTdsTdsTdsTaaaaaaaaaaaaaaaaaadmKdsUdsVdoXdoOdsWdsXdsYdssdsZdtadtbdtcdtddtcdtedpEdpEdpEdpEdtfdtgdthdtidtjdtgdHddUXdUYdUZdVadrGdsndpqdpqdVbdVcdnhdVddVedVfdnedsSdnedVgdVtcZSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsTdsTdsTdsTdsTaaaaaaaaaaaaaaaaaadmKdsUdsVdoXdoOdsWdsXdsYdssdsZdtadtbdtcdtddtcdtedpEdpEdpEdpEdtfdtgdthdtidtjdtgdHddUXdUYdUZdVadrGdsndpqdpqdVbdVcdnhdCmdVedVfdnedsSdnedVgdVtcZSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsTdsTdsTdsTdsTdsTdsTaaaaaaaaaaaadtgdtgdtwdtxdtydoOdoOdoPdoPdoPdoOdoOdtzdpBdpBdpBdtzdtAdtBdtCdtydtDdtCdtxdtEdtwdtFdtgdtAedledledledldtAdnednednednednednednednednednednedtHdtIdtgdtgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsTdsTdsTdsTdsTdsTdsTaaaaaaaaaaaadtgdtJdtKdtLdtLdtGdtMdtNdtOdtPdtQdtPdtRdtSdtTdtUdtTdtVdtKdtLdtLdtWdtLdtXdtYdtKdtLdtWdtLdtXdtLdtZdtTdtPdtTdtSduadtUdtQdtPdubdtNdtMdtGdtLducdudduedtgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadufdufaaaaaaaaaaaaaaadufdufaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadsTdsTdsTdsTdsTdsTdsTaaaaaaaaaaaadtgdugduhduidujdukdulduldumdulduldujdundulduldumduldulduodulduldukduldupduqduoduldukduldumduldulduldujduldurdusdumdulduldujdulduldukdujdutduuduvdtgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadufdufdufaaaaaaaaadufdufdufaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11647,7 +11647,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaafaaaaaaaaaaaaaaaaafdAVdAVdAVdAVdAVdAVdAVdAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBadAVdAVdAVdAVdBcdBcdBcdBIdBJdBKdBLdBLdBLdCedBmdBNdBcdBcdBcdAVdAVdAVdAVdBadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBraaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaadBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaafaafaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBPdBcdBcdBQdBRdBSdBTdBUdBVdBWdBXdBYdBZdCadBcdBcdCbdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBraaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaadBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaagaadaadaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdCcdCcdCcdCcdCcdCcdAVdAVdAVdAVdAVdAVdAVdBcdBcdBcdBIdBJdBKdBLdCddBLdCedBmdBNdBcdBcdBcdAVdAVdAVdAVdAVdAVdAVdCfdCfdCfdCfdCfdCfdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaagaafaaaaafaaaaaaaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdAVdAVdAVdAVdAVdCgdChdChdChdChdCidCjdCkdCldCmdCcdAVdAVdAVdAVdAVdCndCodCodCpdCpdCqdCrdCsdBLdBLdBLdBAdCtdCudBcdBcdAVdAVdAVdAVdAVdAVdAVdAVdCfdCvdCwdCxdCydCzdCAdCAdCAdCAdCBdAVdAVdAVdAVdAVdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaagaafaaaaafaaaaaaaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdBGdBHdBudAVdAVdAVdAVdAVdAVdCgdChdChdChdChdCidCjdCkdCldHrdCcdAVdAVdAVdAVdAVdCndCodCodCpdCpdCqdCrdCsdBLdBLdBLdBAdCtdCudBcdBcdAVdAVdAVdAVdAVdAVdAVdAVdCfdCvdCwdCxdCydCzdCAdCAdCAdCAdCBdAVdAVdAVdAVdAVdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdBDdBOdBFdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdCDdAVdCEdCEdCEdCgdFMdCGdCHdCIdCJdCldCldCldCKdCcdAVdAVdAVdAVdAVdCLdAVdAVdBcdBcdBcdCMdCNdCOdDvdCOdCQdCRdBcdBcdBcdAVdAVdAVdAVdAVdAVdAVdAVdCfdCSdCTdCUdCUdCVdCWdCXdCYdFYdCBdDadDadDadAVdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdDbdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaafaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdDcdDddDddDddDedDddDddDddDedDddDddDddDedDddDddDddDedDddDddDddDedDddDddDfdDgdDhdDidDjdDkdDldDmdDndDodDpdDqdDrdDsdDtdCcaaaaaaaaaaaaaaadDuaaaaaadBcdBcdBcdBjdIqdDwdDxdDydDzdBedBcdBcdBcaaaaaadDAaaaaaaaaaaaaaaadCfdDBdDCdDDdDDdDEdDFdDGdDHdDIdDJdDKdDLdDMdDNdDOdDPdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDQdDRdDSdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdCCdAVdAVdAVdAVdCEdDTdDUdDVdDWdDXdDYdCIdDZdCldEadEbdCcdCcaaaaaaaaaaaaaaadDuaaaaaaaaaaaadBcdBcdBcdBcdEcdBcdBcdBcdBcaaaaaaaaaaaadDAaaaaaaaaaaaaaaadCfdCfdEddEedCUdEfdCWdEgdEhdEidEjdEkdEldDadAVdAVdAVdAVdEmdAVdAVdAVdEmdAVdAVdAVdEmdAVdAVdAVdEmdAVdAVdAVdEmdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11661,7 +11661,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEnedxdEndEndE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdFKdVudFoaaaaaadAVdAVdAVdAVdAVdAVdCLdAVdFpdOgdFNdFOdFPdFQdFRdFSdFTdFUdFVdFWdFXdOJdFsdAVdAVdAVdAVdAVdAVdAVdAVaaaaaadFudFZdGadCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdGbecCdCcaaaaaadGddGedGfdGedGgdGgdGhdGgdGgdGidGjdGkdGldFpdGmdGndGmdFsdGodGpdGqdGrdGsdGtdGudGtdGsdGvdGwdGvdGxaaaaaadCfecDdGzdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdGAdCldCcaaaaaadGddGBdGCdGDdGEedAedzedBdGgdFpdFpdFpdGIdGJdGKdGLdGMdGNdGOdFsdFsdFsdGsdGPdGQdGRdGSdGTdGUdGVdGxaaaaaadCfdCUdGWdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadBrdBrdBrdBrdBrdBrdBraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdGXdGYdCcaaaaaadGddGZdHadHbdGEdeoedCedEdGgdHfdHgdHgdHhdHgdHgdHidHgdHgdHjdHgdHgdHkdGsdHldHmdHndGSdHodHpdHqdGxaaaaaadCfdHrdHsdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdGXdGYdCcaaaaaadGddGZdHadHbdGEdeoedCedEdGgdHfdHgdHgdHhdHgdHgdHidHgdHgdHjdHgdHgdHkdGsdHldHmdHndGSdHodHpdHqdGxaaaaaadCfdOqdHsdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadEndEndEndEndEnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdCcdCcdHtdEqdCcaaaaaadGddHudHvdHwdGEdeOdHyedGdGgdHAdHBdHCdHDdHEdHFdHGdHEdHEdHHdHIdHBdHAdGsdHJdHKdHLdGSdHMdHNdHOdGxaaaaaadCfdEvdHPdCfdCfdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdHQdHQdHRdHSdHTdHUdHVdHWdHXdHYdHYdGddHZdIadIbdGgdfqdGEedIdIddHAdHCdIedIedIedIedIedIedIedIedIedIfdHAdIgdIhdIidGSdGsdIjdIkdIldGxdImdImdIndIodIpdKwdIrdIsdItdIudIudAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdIvdIwdIxdIydIzdIAdIBdICdIDdIEdIFdIGdIHdIIdIJdIKedJdIMedKdIOdIPdIQdIRdIedISdISdISdISdISdIedITdIUdIVdIWdIXdIYdIZdJadJbdIYdJcdJddJedJfdIWdJgdJhdJidJjdJkdJldJmdJndAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11673,8 +11673,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdMxdMxdMxdMxdMxdMydMzdKHdMAdMBdMCdMDdMDdMEdKLdMFdMGdMHdKKdMIdMJdMKdMLdMMdMNdMNdMNdMOdMPdMQdMNdMRdKWdMSdMTdMUdKVdMVdMWdMXdLaaaaaaadMYdMZdNadMYdMYdMYdMYdMYdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNbdNcdKHdKHdKHdKHdKHdKHdKHdKKdKKdKKdKKdKKdNddNedNfdVBdNhdNhdNidNjdNkdNldNmdNndNodKWdKWdKWdKWdKWdLadLadLadLaaaaaaadMYdNpdNqdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNrdNsdMxaaaaaadNtdNudNvdNwdNxdNydNzdNAdNtdNBdNCdNDdNEdNFdNGdNHdNGdNEdNEdNDdNIdNJdNKdNLdNMdNNdNOdNKdNPdNQdNKaaaaaadMYdNRdNSdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaafaafaafaadaXGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNbdNTdMxaaaaaadNtdNUdNVdNWdNXdNYdNZdOadNtdObdOcdIedOddOedHBdHAdHBdOfdRfdIedOhdOidNKdOjdOkdOldOmdOndOodOpdNKaaaaaadMYdOqdOrdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNbdOsdOtaaaaaadOudNydOvdOwdOxdOydOzdOAdOBdOCdODdOEdOddOFdOGdOHdOIdHBdRgdOKdOLdOMdONdOOdOPdOQdORdNKdOSdOTdNKaaaaaadOUdOVdOWdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNbdNTdMxaaaaaadNtdNUdNVdNWdNXdNYdNZdOadNtdObdOcdIedOddOedHBdHAdHBdOfdRfdIedOhdOidNKdOjdOkdOldOmdOndOodOpdNKaaaaaadMYdOVdOrdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdNbdOsdOtaaaaaadOudNydOvdOwdOxdOydOzdOAdOBdOCdODdOEdOddOFdOGdOHdOIdHBdRgdOKdOLdOMdONdOOdOPdOQdORdNKdOSdOTdNKaaaaaadOUdVddOWdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdOXdOYdOtaaaaaaecEdPadPbdPcdPddPcdPedPfdNtdPgdPhdIedPidPjdPkdPldPmdPndPodIedPpdPqdNKdNKdNKdPrdNKdNKdNKdNKdNKaaaaaadOUdPsdPtdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaafaafdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdPudPvdOtaaaaaadPwdPxdNydNydPydNydNydPzdNtdObdOcdPAdPAdPAdPBdPCdPDdPAdPAdPAdOhdOidNKdPEdPFdPGdPHdPIdUWdPKdNKaaaaaadOUdPLdPMdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaafaaaaaaaaadAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdPNdPOdPPdAVdPNdPOdPPdAVdPNdPOdPPdAVdPNdPOdPPdAVdPNdPOdPPdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdMxdPudPQdMxaaaaaadPRdPSdPTdNydPUdPVdPWdPXdPYdPZdQadQbdQcdQddQedQfdQgdQhdQidQjdQkdQldQmdQndQodQpdQqdQrdQsdQtdNKaaaaaadMYdQudPMdMYdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdQvdQwdQxdAVdQvdQwdQxdAVdQvdQwdQxdAVdQvdQwdQxdAVdQvdQwdQxdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVdAVaafaafaafabcaafaaaaaaaagaadaadaadaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11795,4 +11795,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dUOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm index 83dcdc6288..3cf78444ea 100644 --- a/maps/southern_cross/southern_cross-3.dmm +++ b/maps/southern_cross/southern_cross-3.dmm @@ -364,7 +364,7 @@ "gZ" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/security) "ha" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled/steel_dirty,/area/surface/outpost/main/security) "hb" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/device/gps/explorer{pixel_x = -5; pixel_y = -5},/obj/item/device/gps/explorer{pixel_x = -3; pixel_y = -3},/obj/item/device/gps,/obj/item/device/gps{pixel_x = 3; pixel_y = 3},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) -"hc" = (/obj/structure/closet/crate,/obj/item/stack/material/phoron{amount = 25},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) +"hc" = (/obj/item/stack/material/phoron{amount = 25},/obj/random/crate,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room) "hd" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/closet/secure_closet/explorer,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/item/device/binoculars,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "he" = (/obj/structure/closet/secure_closet/explorer,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) "hf" = (/obj/structure/closet/secure_closet/explorer,/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security) @@ -1567,18 +1567,19 @@ "Eg" = (/obj/effect/shuttle_landmark{landmark_tag = "syndie_planet"; name = "Sif Surface West"},/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/syndicate_station/planet) "Eh" = (/obj/effect/shuttle_landmark{landmark_tag = "skipjack_planet"; name = "Sif Surface South"},/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/skipjack_station/planet) "Ei" = (/obj/effect/overmap/visitable/planet/Sif,/turf/simulated/mineral/sif,/area/surface/outside/plains/mountains) -"Ej" = (/obj/effect/map_effect/portal/line/side_a,/turf/simulated/floor/water{outdoors = 0},/area/surface/outside/plains/mountains) -"Ek" = (/obj/effect/map_effect/portal/master/side_a/plains_to_caves/river,/turf/simulated/floor/water{outdoors = 0},/area/surface/outside/plains/mountains) -"El" = (/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outpost/mining_main/exterior) -"Em" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outpost/mining_main/exterior) -"En" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outpost/mining_main/exterior) -"Eo" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/ender{icon_state = "1-2"; id = "surface_cave"},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/path/plains) +"Ej" = (/obj/random/crate,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/garage) +"Ek" = (/obj/effect/map_effect/portal/line/side_a,/turf/simulated/floor/water{outdoors = 0},/area/surface/outside/plains/mountains) +"El" = (/obj/effect/map_effect/portal/master/side_a/plains_to_caves/river,/turf/simulated/floor/water{outdoors = 0},/area/surface/outside/plains/mountains) +"Em" = (/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outpost/mining_main/exterior) +"En" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outpost/mining_main/exterior) +"Eo" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/outdoors/dirt/sif/planetuse,/area/surface/outpost/mining_main/exterior) +"Ep" = (/obj/effect/overlay/snow/floor,/obj/structure/cable/ender{icon_state = "1-2"; id = "surface_cave"},/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/path/plains) (1,1,1) = {" aaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababanacacacanabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababafakakakafabababababababab -aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahadaiaeaeanahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafEkEjEjafafafafafafafafaa -aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafahahahalalalalalalalalalalalalalalalalalalalahahahahalalalalalalalahahahahalalahahahahadEmElEnananananalalalalalalalalalalahahahahahahahahahahahahalalalalahahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa -aaafafafafafalalalafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalahahalalalalalalalEoajajajaoapaqanalalalalalalalalalalalahahahahahahahahahahalalalalalalahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa +aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahadaiaeaeanahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafElEkEkafafafafafafafafaa +aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafahahahalalalalalalalalalalalalalalalalalalalahahahahalalalalalalalahahahahalalahahahahadEnEmEoananananalalalalalalalalalalahahahahahahahahahahahahalalalalahahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa +aaafafafafafalalalafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalahahalalalalalalalEpajajajaoapaqanalalalalalalalalalalalahahahahahahahahahahalalalalalalahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa aaafafafalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalamajajajarasatanalalalalalalalalalalalalalahahahahahahalalalalalalalalalahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa aaafafafalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalauavavavawaxayanalalalalalalalalalalalalalalalalalalalalalalalalalalalalalahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa aaafafafalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalazajajajananananalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa @@ -1612,7 +1613,7 @@ aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctct aaafafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctctctctctalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajgIgIhshthuhvhwhxhyhzhyhAgIgIgIgIgIgIgIalalalalamajajajajajalalalalalalbHhBhBhBhBhBhChChChChChDhihEhFhFhFhFhFhGhGhGhFhFalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctctctalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajgIhHhIhyhJhKhLhMhNhOhPhQhRhShShTgIalalalalalamajajajajalalalalalalalalhBhUhVhWhBhYiahZizibhDhihEhFicidieifigihiiijhFalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaAaGaDaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalctctctctctalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajgIikhIhyiliminioipiqirisisitiuivgIalalalalalamajajajalalalalalalalalalhBiwixiyhBiAiYiBjmhCiCiDiEhFiFiGiGiGiHiHiGiIhFalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaCaJaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM -aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajgIiJiKiLhJhyiMiNiOiPiQiRiSiTiUiVgIalalalalalamajajajalalalalalalalalalhBhBiWhBhBiXjEiZjahChDhijbhFiHiHjciiiiiHiHiGhGalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM +aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajgIiJiKiLhJhyiMiNiOiPiQiRiSiTiUiVgIalalalalalamajajajalalalalalalalalalhBhBiWhBhBiXjEiZjahChDhijbhFiHiHjciiiiiHiHEjhGalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajgIgIjdjejfjggIgIjhgIgIjijjjkjkgIgIalalalalalamajajajalalalalalalalalaljlmMjnjojphChCjqhChCjrhijshGjtiHjujvjwiGiHiHhGalalalalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajgIgIgIgIjxgIjyjzjygIgIgIgIgIgIalalalalalalamajajajalalalalalalalalaljljAjWjCjDjHjFjGjKjIfYhijJhGqUiHjLiHiGiGiHiHhGaljMjMalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaCaJaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM aaafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaFalalalalalalalalalalalalalalalalalalalalalalalalalalalalajajajalalalalajajajjNjOjOjOjPjOjOjQjRjRjRjRjRjRjRjRjRjRjRjRjRjSjRjRjRjTjTjTjTjTjTjTjTjTjUjVlSjXjYjZkakbkakckakdkekfkgkhkikhkhkjiHiHhGalaljMalalalalalalalalafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafaAaAaAaGaDaDaDaDaDaDcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUcUaM diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm index 8d40ebf032..755bcf0cb8 100644 --- a/maps/southern_cross/southern_cross-6.dmm +++ b/maps/southern_cross/southern_cross-6.dmm @@ -2174,7 +2174,7 @@ "PP" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/machinery/computer/station_alert{dir = 4},/turf/simulated/shuttle/floor/voidcraft/light,/area/ninja_dojo/start) "PQ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/computer/security{dir = 8},/turf/simulated/shuttle/floor/voidcraft/light,/area/ninja_dojo/start) "PR" = (/obj/structure/closet/crate/freezer/rations,/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start) -"PS" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start) +"PS" = (/obj/item/trash/cigbutt,/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start) "PT" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start) "PU" = (/obj/machinery/light{dir = 1},/obj/structure/table/steel,/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/item/device/defib_kit/compact/combat/loaded,/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) "PV" = (/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/item/weapon/storage/firstaid/combat,/obj/item/weapon/storage/firstaid/clotting,/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start) @@ -2319,7 +2319,7 @@ "SE" = (/obj/effect/floor_decal/sign/small_g,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) "SF" = (/obj/effect/floor_decal/sign/small_f,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) "SG" = (/obj/effect/floor_decal/sign/small_h,/turf/simulated/floor/holofloor/wood,/area/holodeck/source_chess) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/southern_cross/southern_cross_areas.dm b/maps/southern_cross/southern_cross_areas.dm index bd7cca429e..471e70c6f9 100644 --- a/maps/southern_cross/southern_cross_areas.dm +++ b/maps/southern_cross/southern_cross_areas.dm @@ -60,6 +60,7 @@ /area/surface/outside ambience = AMBIENCE_SIF always_unpowered = TRUE + flags = AREA_FLAG_IS_NOT_PERSISTENT // The area near the outpost, so POIs don't show up right next to the outpost. /area/surface/outside/plains/outpost @@ -123,7 +124,7 @@ /area/surface/cave - flags = RAD_SHIELDED + flags = RAD_SHIELDED | AREA_FLAG_IS_NOT_PERSISTENT always_unpowered = TRUE /area/surface/cave @@ -398,7 +399,7 @@ icon_state = "shuttle" requires_power = 0 dynamic_lighting = 1 - flags = RAD_SHIELDED + flags = RAD_SHIELDED | AREA_FLAG_IS_NOT_PERSISTENT /area/turbolift/start name = "\improper Turbolift Start" @@ -753,11 +754,13 @@ name = "\improper Command - HoP's Office" icon_state = "head_quarters" holomap_color = HOLOMAP_AREACOLOR_COMMAND + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/crew_quarters/heads/sc/hor name = "\improper Research - RD's Office" icon_state = "head_quarters" holomap_color = HOLOMAP_AREACOLOR_SCIENCE + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/crew_quarters/heads/sc/chief name = "\improper Engineering - CE's Office" @@ -773,6 +776,7 @@ name = "\improper Medbay - CMO's Office" icon_state = "head_quarters" holomap_color = HOLOMAP_AREACOLOR_MEDICAL + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/engineering/engineer_eva name = "\improper Engineering EVA" @@ -1052,6 +1056,7 @@ area/crew_quarters/heads/sc/hop/quarters name = "\improper Third Deck Plating" dynamic_lighting = 0 ambience = AMBIENCE_SPACE + flags = AREA_FLAG_IS_NOT_PERSISTENT // Shuttles diff --git a/maps/submaps/surface_submaps/mountains/deadBeacon.dmm b/maps/submaps/surface_submaps/mountains/deadBeacon.dmm index 2a32fb4f64..253b4c53c9 100644 --- a/maps/submaps/surface_submaps/mountains/deadBeacon.dmm +++ b/maps/submaps/surface_submaps/mountains/deadBeacon.dmm @@ -27,7 +27,7 @@ "A" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/deadBeacon) "B" = (/obj/structure/grille/broken,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/cave/deadBeacon) "C" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon) -"D" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tool/wrench,/obj/machinery/light,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon) +"D" = (/obj/item/trash/cigbutt,/obj/item/weapon/tool/wrench,/obj/machinery/light,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon) "E" = (/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon) "F" = (/obj/machinery/recharge_station,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon) "G" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon) diff --git a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm index 390589daac..7da857ef05 100644 --- a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm +++ b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm @@ -25,7 +25,7 @@ "ay" = (/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "az" = (/obj/item/trash/syndi_cakes,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "aA" = (/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) -"aB" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) +"aB" = (/obj/item/trash/cigbutt,/obj/item/weapon/tank/emergency/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "aC" = (/obj/item/weapon/material/knife/tacknife/boot,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "aD" = (/obj/effect/decal/remains/human,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) "aE" = (/obj/item/trash/sosjerky,/obj/item/weapon/storage/box/donut/empty,/obj/item/weapon/reagent_containers/food/drinks/sillycup,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) @@ -50,7 +50,7 @@ "aX" = (/obj/item/device/paicard,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "aY" = (/obj/machinery/door/blast/regular{name = "Cargo Door"},/obj/item/tape/medical{dir = 4; icon_state = "tape_door_0"; layer = 3.4},/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) "aZ" = (/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle) -"ba" = (/obj/item/weapon/cigbutt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) +"ba" = (/obj/item/trash/cigbutt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) "bb" = (/obj/machinery/door/airlock/command{icon_state = "door_locked"; locked = 1},/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) "bc" = (/obj/item/weapon/tank/emergency/oxygen/engi,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_white"},/area/submap/cave/qShuttle) "bd" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/emergency,/obj/item/clothing/head/helmet/space/emergency,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{icon_state = "floor_yellow"},/area/submap/cave/qShuttle) diff --git a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm index 4f41a473f8..c33096f9f7 100644 --- a/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm +++ b/maps/submaps/surface_submaps/wilderness/wilderness_areas.dm @@ -5,6 +5,7 @@ ambience = AMBIENCE_RUINS secret_name = TRUE forbid_events = TRUE + flags = AREA_FLAG_IS_NOT_PERSISTENT /area/submap/event //To be used for Events not for regular PoIs name = "Unknown" diff --git a/polaris.dme b/polaris.dme index 11a6e37579..8b368f9d75 100644 --- a/polaris.dme +++ b/polaris.dme @@ -222,6 +222,7 @@ #include "code\controllers\subsystems\open_space.dm" #include "code\controllers\subsystems\orbits.dm" #include "code\controllers\subsystems\overlays.dm" +#include "code\controllers\subsystems\persistence.dm" #include "code\controllers\subsystems\planets.dm" #include "code\controllers\subsystems\radiation.dm" #include "code\controllers\subsystems\shuttles.dm" @@ -1195,7 +1196,6 @@ #include "code\game\objects\structures\mop_bucket.dm" #include "code\game\objects\structures\morgue.dm" #include "code\game\objects\structures\musician.dm" -#include "code\game\objects\structures\noticeboard.dm" #include "code\game\objects\structures\plasticflaps.dm" #include "code\game\objects\structures\railing.dm" #include "code\game\objects\structures\safe.dm" @@ -1328,6 +1328,7 @@ #include "code\modules\admin\map_capture.dm" #include "code\modules\admin\NewBan.dm" #include "code\modules\admin\news.dm" +#include "code\modules\admin\persistence.dm" #include "code\modules\admin\player_notes.dm" #include "code\modules\admin\player_panel.dm" #include "code\modules\admin\topic.dm" @@ -2492,6 +2493,7 @@ #include "code\modules\paperwork\handlabeler.dm" #include "code\modules\paperwork\paper.dm" #include "code\modules\paperwork\paper_bundle.dm" +#include "code\modules\paperwork\paper_sticky.dm" #include "code\modules\paperwork\paperbin.dm" #include "code\modules\paperwork\paperplane.dm" #include "code\modules\paperwork\papershredder.dm" @@ -2500,6 +2502,15 @@ #include "code\modules\paperwork\photography.dm" #include "code\modules\paperwork\silicon_photography.dm" #include "code\modules\paperwork\stamps.dm" +#include "code\modules\persistence\filth.dm" +#include "code\modules\persistence\graffiti.dm" +#include "code\modules\persistence\noticeboard.dm" +#include "code\modules\persistence\datum\datum_filth.dm" +#include "code\modules\persistence\datum\datum_graffiti.dm" +#include "code\modules\persistence\datum\datum_paper.dm" +#include "code\modules\persistence\datum\datum_paper_sticky.dm" +#include "code\modules\persistence\datum\datum_trash.dm" +#include "code\modules\persistence\datum\persistence_datum.dm" #include "code\modules\planet\planet.dm" #include "code\modules\planet\sif.dm" #include "code\modules\planet\time.dm" diff --git a/sound/voice/medbot/close.ogg b/sound/voice/medbot/close.ogg new file mode 100644 index 0000000000..9e0efcefd2 Binary files /dev/null and b/sound/voice/medbot/close.ogg differ diff --git a/sound/voice/medbot/dont_like.ogg b/sound/voice/medbot/dont_like.ogg new file mode 100644 index 0000000000..06fc84af2f Binary files /dev/null and b/sound/voice/medbot/dont_like.ogg differ diff --git a/sound/voice/medbot/forgive.ogg b/sound/voice/medbot/forgive.ogg new file mode 100644 index 0000000000..729eaa5c78 Binary files /dev/null and b/sound/voice/medbot/forgive.ogg differ diff --git a/sound/voice/medbot/fuck_you.ogg b/sound/voice/medbot/fuck_you.ogg new file mode 100644 index 0000000000..5eacff615f Binary files /dev/null and b/sound/voice/medbot/fuck_you.ogg differ diff --git a/sound/voice/medbot/hey_wait.ogg b/sound/voice/medbot/hey_wait.ogg new file mode 100644 index 0000000000..6c88b761ec Binary files /dev/null and b/sound/voice/medbot/hey_wait.ogg differ diff --git a/sound/voice/medbot/i_require_asst.ogg b/sound/voice/medbot/i_require_asst.ogg new file mode 100644 index 0000000000..18fabc630f Binary files /dev/null and b/sound/voice/medbot/i_require_asst.ogg differ diff --git a/sound/voice/medbot/i_trusted_you.ogg b/sound/voice/medbot/i_trusted_you.ogg new file mode 100644 index 0000000000..602baa2f67 Binary files /dev/null and b/sound/voice/medbot/i_trusted_you.ogg differ diff --git a/sound/voice/medbot/im_different.ogg b/sound/voice/medbot/im_different.ogg new file mode 100644 index 0000000000..42eb8564f1 Binary files /dev/null and b/sound/voice/medbot/im_different.ogg differ diff --git a/sound/voice/medbot/is_this_the_end.ogg b/sound/voice/medbot/is_this_the_end.ogg new file mode 100644 index 0000000000..a2e0e2330a Binary files /dev/null and b/sound/voice/medbot/is_this_the_end.ogg differ diff --git a/sound/voice/medbot/nooo.ogg b/sound/voice/medbot/nooo.ogg new file mode 100644 index 0000000000..102fd1fb04 Binary files /dev/null and b/sound/voice/medbot/nooo.ogg differ diff --git a/sound/voice/medbot/oh_fuck.ogg b/sound/voice/medbot/oh_fuck.ogg new file mode 100644 index 0000000000..95d21ef255 Binary files /dev/null and b/sound/voice/medbot/oh_fuck.ogg differ diff --git a/sound/voice/medbot/pain_is_real.ogg b/sound/voice/medbot/pain_is_real.ogg new file mode 100644 index 0000000000..9cfa3a71be Binary files /dev/null and b/sound/voice/medbot/pain_is_real.ogg differ diff --git a/sound/voice/medbot/please_dont.ogg b/sound/voice/medbot/please_dont.ogg new file mode 100644 index 0000000000..a77ee09cb4 Binary files /dev/null and b/sound/voice/medbot/please_dont.ogg differ diff --git a/sound/voice/medbot/please_im_scared.ogg b/sound/voice/medbot/please_im_scared.ogg new file mode 100644 index 0000000000..7bd53b39c8 Binary files /dev/null and b/sound/voice/medbot/please_im_scared.ogg differ diff --git a/sound/voice/medbot/please_put_me_back.ogg b/sound/voice/medbot/please_put_me_back.ogg new file mode 100644 index 0000000000..84700fbdd5 Binary files /dev/null and b/sound/voice/medbot/please_put_me_back.ogg differ diff --git a/sound/voice/medbot/reported.ogg b/sound/voice/medbot/reported.ogg new file mode 100644 index 0000000000..d5469c19ce Binary files /dev/null and b/sound/voice/medbot/reported.ogg differ diff --git a/sound/voice/medbot/shindemashou.ogg b/sound/voice/medbot/shindemashou.ogg new file mode 100644 index 0000000000..1ee2858eaf Binary files /dev/null and b/sound/voice/medbot/shindemashou.ogg differ diff --git a/sound/voice/medbot/thank_you.ogg b/sound/voice/medbot/thank_you.ogg new file mode 100644 index 0000000000..3fabe7d4a6 Binary files /dev/null and b/sound/voice/medbot/thank_you.ogg differ diff --git a/sound/voice/medbot/turn_off.ogg b/sound/voice/medbot/turn_off.ogg new file mode 100644 index 0000000000..87a4d6bdd0 Binary files /dev/null and b/sound/voice/medbot/turn_off.ogg differ diff --git a/sound/voice/medbot/why.ogg b/sound/voice/medbot/why.ogg new file mode 100644 index 0000000000..415020b89b Binary files /dev/null and b/sound/voice/medbot/why.ogg differ diff --git a/sound/voice/medbot/youre_good.ogg b/sound/voice/medbot/youre_good.ogg new file mode 100644 index 0000000000..62c325f834 Binary files /dev/null and b/sound/voice/medbot/youre_good.ogg differ
[thing]") + if(istype(thing, /obj/item/weapon/paper)) + LAZYADD(dat, "ReadWrite") + else if(istype(thing, /obj/item/weapon/photo)) + LAZYADD(dat, "Look") + LAZYADD(dat, "Remove